Essays
What broke, when, and what it cost.
Dated writing about building agent systems. Not a highlight reel. These are the specific things I got wrong and what changed afterwards, which is the part that is usually missing from anything written about AI tooling.
If you want the structured version, the guides are maintained and updated when the thinking changes. Older non-technical writing is in the journal.
13 essays · 68 min · RSS
2026
- 26/07/20264 min
The file that exists only for machines, that no machine could read
A file whose entire purpose is being parsed by language models, formatted so that a compliant parser found zero links in it. Every real win that day came from measuring something I had assumed was fine.
- 25/07/20265 min
Seven review rounds on a payments path, and not one broken feature
Every finding was code being wrong about the world rather than wrong about itself. A three-seat purchase issuing one ticket is not a bug a test suite has any way to notice, because the code does exactly what it says.
- 24/07/20264 min
The migration ran against the wrong database and reported failure
Two observations that could not both be true: the migration failed on null values, and the backfill for those nulls found none. They reconcile the moment you notice they were talking to different databases.
- 17/07/20264 min
A 403 from an API is not necessarily from the API
Alert emails stopped arriving. The API returned 403, so I spent the first stretch checking the key and the domain. The ban was from the bot protection in front of the API, and the trigger was the default user agent on the standard library HTTP client.
- 17/07/20268 min
Building an MCP Server People Actually Use
Most MCP servers are just an API with a new hat, and nobody's AI can actually drive them. A good one is different. It is a small set of tools shaped for how a language model thinks, with names it understands, errors it can recover from, and a hard line where money and humans meet. Here is the shape of an MCP server people actually use.
- 17/07/20266 min
The Filesystem Is My Database
The AI operator that runs my business has no database. It has a folder of markdown files. Memory is plain text, links are double brackets, and there is no app server and no build step in the loop. Here is why the boring answer beats the clever one, and how three tiers of markdown became the whole storage layer.
- 17/07/20267 min
How My Company Runs From My Phone on Claude Code
There is no laptop in this story. The business runs on a box in a data centre, driven by an AI operator on Claude Code, and my whole job is a morning brief and a few approvals from my phone. Here is the daily shape of it - the lanes, the overnight cycle, and what I actually do all day.
- 17/07/20265 min
I Built an AI Operator That Runs a Company End to End
I built an AI operator that runs a company end to end. Not a chatbot - a system with routing, roles, skills and memory that does the recurring work while a human approves what ships. Here is how it works, and why I built it this way.
- 06/07/20265 min
The migration shipped green with every redirect broken
Seventy-four 301s, written correctly, deployed successfully, returning 404. The host ignored the file. Nothing in the build had any way to know, because a redirect that does not exist is indistinguishable from a page that does not exist.
- 23/06/20265 min
The CI bill was not a capacity problem
Sixteen pull requests turned the pipeline red. The annotation said spending limit, so the obvious read was that we needed more minutes. We were running the same heavy suite twice on every push.
- 18/05/20264 min
I cut my agent's context by 42%, then made it worse
The first change removed 15,000 tokens from every session. The second one looked identical in shape, added 1,323 tokens, and got reverted the same day. The difference was that I measured the second one.
2025
- 13/11/20257 min
AI didn't democratise product. It drowned it.
AI tools promised faster product development. Instead, they created a flood of broken, insecure apps. Here's why speed without expertise is destroying dreams
- 16/07/20254 min
Why I Replaced ChatGPT with Claude to Build a Smarter Stack
Discover why I ditched ChatGPT, built my entire startup stack around Claude, and saved 15+ hours a week by making AI infrastructure actually work