This blog broke three times before you could read it

The page you are reading right now is the crime scene. Bear that in mind as we go.

The plan was almost offensively simple. I wanted a blog — this blog — as flat files in an object storage bucket. No server to patch, no database to corrupt, no WordPress to wake up worrying about. Markdown goes in one end, HTML comes out the other, a CDN puts it near your eyeballs, and the whole arrangement costs about as much per month as a single packet of crisps.

And because this is the year it is, I didn’t build it alone. I described what I wanted to an AI assistant in my terminal — Claude Code, since we’re being honest on this blog — and it did the typing while I made decisions and tea, in roughly that order of importance. Static site generator, templates, the paywall machinery, deployment scripts: drafted, tested, and run in front of me at a speed I can only describe as mildly insulting. Twenty years of clicking through settings screens and it turns out the future is watching someone else’s cursor.

An hour in, we were ready for the first deployment. Site built. Bucket created. Sync command armed. I felt the particular warmth of a man whose plan is working.

The deployment failed. Not partially — comprehensively. Every single file: 403 AccessDenied.

Here’s the good bit. Nobody had attacked us. Nothing was down. The AI and I had, between us, written one small, perfectly sensible-looking JSON document — and in doing so revoked my right to write to my own bucket, on my own account, that I had created ninety seconds earlier.

The rest of this article is for subscribers.

Subscriptions are launching soon