Mullet
A job runner that plans a coding job, runs it unattended in a sandboxed clone, and marks each step done only when its own checks pass.
More on: Mullet (all writing about it)
Apps, libraries and tools I’ve built.
A job runner that plans a coding job, runs it unattended in a sandboxed clone, and marks each step done only when its own checks pass.
More on: Mullet (all writing about it)
A calendar of 13 identical 28-day months, with each year starting on the first Monday on or after the spring equinox.
Rank cities around the world by what you’d keep after tax, what a month costs, which visas you can get and how each place fits the way you live.
A PHP client for publishing articles to Apple News, with a document builder for the whole Apple News Format.
A command-line tool for looking after a lot of GitHub repositories at once, with reports on their health, on who has access and on what each developer did.
Notes on how I build things.
Mullet 2.5.0 is out. What I plan next: a guard that checks a step fits a model’s window, a price ceiling instead of a free switch, more settings and fewer defaults, and a separate machine for models. Plans, not features.
More on: Mullet (all writing about it)
On 1 November I read the agent prompts of VibeGame, a framework that builds 2D web games, and kept the eight techniques that carry over to web and print design work with AI agents.
More on: Mullet (all writing about it)
Three local-model options I stopped using, with what each cost and the verdict: a 25 GB model that timed out in a job, a Blackwell-only fork ruled out from its source before a 65 GiB download, and the local rung’s first night, which passed none of 11.
More on: Mullet (all writing about it)
The projects I have worked on most recently, from their code on GitHub.
Twenty years on the web, the last eleven at Bright Sites, which makes publishing software.
Senior Development Consultant
Senior Developer
Web Developer
Lead Developer
For work, a question about one of the projects, or anything else, send me a message and I will reply by email.