Skip to content

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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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.

  8. 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.

  9. 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.

  10. 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.

  11. 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.