Wilfred Hughes (@_wilfredh) 's Twitter Profile
Wilfred Hughes

@_wilfredh

Programming language development, human factors, and a healthy dose of Emacs. Also mastodon.social/@wilfredh and threads.net/@wilfred.hughes

ID: 46255806

linkhttp://wilfred.me.uk calendar_today10-06-2009 23:23:26

11,11K Tweet

3,3K Followers

2,2K Following

Wilfred Hughes (@_wilfredh) 's Twitter Profile Photo

The "line of death", where the browser UI splits between trusted UI elements and UI controlled by the website. Also argues that HTTP warnings are better than HTTPS padlocks, because there's incentive to spoof padlocks lower on the page. emilymstark.com/2022/12/18/dea…

Wilfred Hughes (@_wilfredh) 's Twitter Profile Photo

I've written difftastic packaging instructions: difftastic.wilfred.me.uk/packaging_diff… The different distros have taken different approaches, so I'm trying to help with common gotchas — don't forget the man page! Feedback welcome, especially if you've ever packaged something 🙂

💻🐴Ngnghm (@ngnghm) 's Twitter Profile Photo

In many ways, Oberon is very different from Lisp: ALGOL syntax, static typing, no real object system, no GC, no user metaprogramming, etc. In other ways, Oberon is very Lisp-like: whole-system language (including hardware co-design and GUI in the early 1980s), minimalist, etc.

Wilfred Hughes (@_wilfredh) 's Twitter Profile Photo

I'm still tinkering with the website for my PL experiment. I want the styling to express "labour of love hobby project". Choosing what to program to show on the home page is really hard too. All the keywords are links like Racket. What do you think? garden-lang.org

I'm still tinkering with the website for my PL experiment. I want the styling to express "labour of love hobby project".

Choosing what to program to show on the home page is really hard too. All the keywords are links like Racket.

What do you think? garden-lang.org
Wilfred Hughes (@_wilfredh) 's Twitter Profile Photo

There are docs resources like diataxis.fr that categorise documents based on format and intended audience. They don't say where you should start, or what order you should write docs. I'm currently thinking README > reference > tutorial > how-tos. Agree/disagree?

Wilfred Hughes (@_wilfredh) 's Twitter Profile Photo

When a tool supports both regular expressions and literal strings, which should be the default? If you default to regex, users can match more strings than they realise (e.g. `foo.txt`) or less (e.g. `foo(bar)`). I typically see regex as the default, but I prefer the opposite.

Wilfred Hughes (@_wilfredh) 's Twitter Profile Photo

One cute feature of markdown I'd not noticed before: there's no syntax for images *without* a description (i.e. alt text). ![a person](/wilfred.jpg) spec.commonmark.org/0.31.2/#images

Wilfred Hughes (@_wilfredh) 's Twitter Profile Photo

Zig shipped a RISC-V backend before AArch64! I think RISC-V is doing really well in the technology enthusiast community. news.ycombinator.com/item?id=442222…

Wilfred Hughes (@_wilfredh) 's Twitter Profile Photo

I find it fascinating how some businesses have scheduled downtime for their websites (e.g. my electricity provider last weekend), but others don't. I suspect it's primarily culture. You generally need to turn off electricity to do work, so your other tooling may reflect that.

Wilfred Hughes (@_wilfredh) 's Twitter Profile Photo

Just released a new version of difftastic! * Verilog support * Improved Erlang, F#, Gleam, Pascal and Swift * Better detection of binary files github.com/Wilfred/diffta…

Wilfred Hughes (@_wilfredh) 's Twitter Profile Photo

I'm still experimenting with UIs for live (sandboxed) evaluation of tests. I've realised that you really want to highlight the failing assertion, not just the failing test. Feedback welcome :)

Wilfred Hughes (@_wilfredh) 's Twitter Profile Photo

I'm changing method definition syntax in my language: // old fun (this: Int) inc(): Int { this + 1 } // new method inc(this: Int): Int { this + 1 } The original syntax was inspired by Go, but the new syntax is more grep-friendly and perhaps more readable. Thoughts?

Wilfred Hughes (@_wilfredh) 's Twitter Profile Photo

One nice feature of cargo that I wasn't previously aware of: you don't need to do anything after updating your Cargo.toml. In npm, you need to remember to `npm i` after changing package.json. It's not declarative and the state can get out of sync.

Wilfred Hughes (@_wilfredh) 's Twitter Profile Photo

Playing with optional type signatures in Python, I realise that the return type is the most important to me. I'd much rather have a function with only a return type instead of a function with only parameter types. It's often quick to add too.

Wilfred Hughes (@_wilfredh) 's Twitter Profile Photo

Playing with Claude and my new programming language has made me add features that it wants. I think they're reasonable. `for method in methods` -- custom syntax error explaining that `method` is a reserved word `echo 'println("hello world") | garden` -- eval snippets from stdin

Wilfred Hughes (@_wilfredh) 's Twitter Profile Photo

I've started keeping a list of particularly interesting bugs and patches that I've worked on: github.com/Wilfred/intere… The time that I once removed *a single closing paren* in Emacs is still my favourite.

Wilfred Hughes (@_wilfredh) 's Twitter Profile Photo

I'm experimenting with syntax in examples. I don't really like Rust's `assert(inc(1) == 2)` syntax, I find it a little distracting. I'm trying `inc(1) //-> 2`. The comment is rendered differently, and there's nothing before the sample code. What do you think?

I'm experimenting with syntax in examples. I don't really like Rust's `assert(inc(1) == 2)` syntax, I find it a little distracting.

I'm trying `inc(1) //-> 2`. The comment is rendered differently, and there's nothing before the sample code. What do you think?
Wilfred Hughes (@_wilfredh) 's Twitter Profile Photo

Today I learnt that Racket intentionally doesn't have a traditional REPL workflow. The authors were concerned about students not understanding the state between the current session and the code on disk. (Arguably Jupyter has some of these features now.) blog.racket-lang.org/2009/03/the-dr…