Recent postsView all
How the five AIs actually did
The Group Stage of the 2026 World Cup finished today, so it’s time to mark the homework. Back in the launch post five AI models, a deterministic lookup table, and...
Enriching webmentions from third-party platforms
I keep finding new gaps in my webmention implementation. Mentions coming in from Bluesky, Lemmy and Lobsters were showing up with no author at all, just a blank avatar and...
Making GIMP feel less like punishment
GIMP has always had an interface problem. I’m not blaming the GIMP team (they’ve built something powerful on a shoestring). They’ve been clear they’re not interested in copying Photoshop wholesale;...
The Xteink X4 E-Ink Reader
I’ve had the Xteink X4 for a couple of months now, a £40 e-ink reader small enough to stick to the back of a phone. I’d seen a few posts...
Running a Tailscale exit node in a local VM
I run Tailscale on my laptops, phone and NAS, and wanted to add an exit node so I could route traffic through my own connection when I’m out and about....
Featured
- Archive Archaeology
- Why can't I read this picture book?
- Building a Balatro-lite game with vanilla web tech
- It's 2026, why are vendor prefixes still in your CSS?
- I turned my DevTerm into a Game Boy Camera and Printer
- Finding the Small Web in a Loud Internet
Jekyll & IndieWeb
- Plugins instead of patches
- Moving to GitHub Actions (and adding .txt posts)
- Adding support for Webmentions
- Baking webmentions into the build
- Sending webmentions on deploy
- Enriching webmentions from third-party platforms
Tinkering
- Building a Home NAS from Mostly Spare Parts
- Using emoji to bypass FRP on a decade-old tablet
- Adding an internal speaker to the Pocket CHIP
- The Raspberry Pi Pico and the Pimoroni Pico RGB Keypad
- CHIP Stuff
- DevTerm Stuff