Wilfred
wilfredh.bsky.social
Wilfred
@wilfredh.bsky.social
Programming languages, human factors, and a healthy dose of Emacs.
Caddy is really growing on me. It's nice having a web proxy that includes letsencrypt functionality without any additional configuration.

I've tended to use nginx with a separate letsencrypt setup for projects before, and it's much more awkward.
December 17, 2025 at 12:30 AM
Co-Authored-By: An old Stack Overflow answer, blindly accepting the compiler's suggestions, and a linter.
December 14, 2025 at 9:46 PM
One subtle behaviour of Claude that wasn't obvious to me: whilst each conversation is transient, permissions persist across conversations.

So if you've given permission to run e.g. 'cargo test' or even 'cargo run', you need to be sure that all future invocations are safe too.
December 14, 2025 at 12:35 AM
I'm never sure how to convert words with hyphens into SCREAMING_SNAKE_CASE. For example, should built-in function be BUILT_IN_FUNCTION or BUILTIN_FUNCTION?
December 14, 2025 at 12:16 AM
I've added an eval button to the website of my programming language!

It's a been a lot of work to lock down appropriately. It still needs some UI polish but it's so nice to be able to try snippets immediately.

www.garden-lang.org
December 11, 2025 at 11:41 PM
I'm trying to decide what program I should show on the home page of my PL.

Hello World is too simple to show much syntax. Fibonacci is OK but the reader may not know what print(fib(10)) should show.

Maybe print(greet("World")) is better? It gives you a function definition at least.
December 7, 2025 at 4:01 PM
Claude asked me a question today: was I looking for an Emacs plugin (because I was talking about elisp) or a Rust program (because I have configured Rust preferences)?

I'm really impressed, it's rare to see LLMs ask follow-up questions.

(I wanted Emacs in this case.)
December 6, 2025 at 1:07 AM
Delighted to see that Typescript 7 is moving to conventional LSP for its IDE services!

devblogs.microsoft.com/typescript/p...
Progress on TypeScript 7 - December 2025 - TypeScript
Earlier this year, the TypeScript team announced that we’ve been porting the compiler and language service to native code to take advantage of better raw performance, memory usage, and parallelism. Th...
devblogs.microsoft.com
December 4, 2025 at 10:39 AM
I've been using "Expected Int, but got String" for my type error messages, but I've been wondering if I could do better.

"Expected Int here, but this value has type String" or "This expression requires Int, but the value is String".

Do you have a favourite?
December 3, 2025 at 11:42 PM
IPv6 adoption is approaching half!

www.google.com/intl/en/ipv6... shows 46% as of today.
IPv6 – Google
www.google.com
November 30, 2025 at 8:35 AM
Difftastic 0.67 is released!

* Added support for protobuf, improved bash and YAML.
* Updated 16 parsers to the latest upstream version (thanks Antonin Delpeuch!)
* A ton of display polish for word highlighting, alignment, and binary files.

github.com/Wilfred/diff...
November 16, 2025 at 5:04 PM
If you created a large, successful OSS project, would you want to be BDFL or move on after a period?

I see tradeoffs on both sides, although it's not a decision I've needed to make myself.
November 14, 2025 at 11:50 PM
A cute systemd feature to get the system clock roughly correct: if the system time is before the compilation time of the systemd binary, it moves the clock forward to that time!

lwn.net/Articles/714...
A rift in the NTP world [LWN.net]
lwn.net
November 14, 2025 at 10:32 PM
I've not seen this before: a captcha to distinguish adults from children! The in-app purchases were behind this screen.

The primary user is a 3 year old who can only count to 20 😊
November 8, 2025 at 11:29 AM
I've been learning some Common Lisp by writing some simple JSON munging programs. I'm sure it's not best practice — I should probably deserialise to CLOS automatically — but it's a nice way to get comfortable with the basics.

It feels weird deliberately ignoring helpers though.
November 7, 2025 at 12:31 PM
"After I linked difftastic, one of my friends immediately used difftastic to find a stealthy bug, five stars!"

www.scannedinavian.com/tools-built-...
Shae Erisson's blog - Tools built on tree-sitter's concrete syntax trees
www.scannedinavian.com
November 7, 2025 at 12:12 PM
Shower thought: using a tool like cargo-semver, could you build a package registry where the uploader never chooses the version number?

E.g. your last release was 5.2025-09-13 and you've just changed a type, so today's release is 6.2025-11-05.
November 5, 2025 at 7:51 PM
One advantage I've come to appreciate about Dash/Zeal docsets: it's really nice having focused search.

The text search is constrained to the languages I care about enough to download the docset, substantially increasing the relevance. In Google I'd need to specify the language.
October 30, 2025 at 10:01 PM
I'm playing with Zeal/Dash so I can view stdlib docs offline.

(I've been coding on public transport recently, without a reliable data connection.)

Anyone have tips for making the most of this setup? AFAICT docsets are basically HTML underneath.
October 27, 2025 at 12:00 AM
GIMP is huge tool that I certainly haven't mastered, but it's so useful to have around.

I used it this week to convert images from obscure formats to common ones. It's a great swiss army knife and runs everywhere.
October 26, 2025 at 8:40 AM
It is *really* hard to find a good screenshot for a CLI tool when users are on a mobile browser.

This is the best I've come up with so far. I'm showing the terminal GUI to show where you'd use the tool.

I'm also trying several standalone screenshots to make it more comprehensible.
October 21, 2025 at 9:24 AM
I've added syntax highlighting to the prompt of my programming language!

It's not strictly necessary, but it's nice to have. It caught a bug with lexing incomplete string literals too.
October 19, 2025 at 11:14 PM
One interesting aspect of collecting coins in a platformer like mario: it makes the level stateful.

You can see if you've been somewhere before based on whether there are coins present.
October 17, 2025 at 10:57 PM
Ooh, difftastic is now listed on the official git website! git-scm.com/tools/comman...
Git - Command Line Tools
git-scm.com
October 17, 2025 at 6:56 PM
It's so hard to talk about probabilities. Casual conversation often conflates 'the likelihood of an event happening' with 'how strongly I believe in my assessment'.

For example, I'm very confident (say 90%) that the coin in my pocket is 50% likely to land on heads.
October 12, 2025 at 10:36 PM