The best argument against starting a blog in 2026 is that AI can generate a functionally infinite supply of competent posts about any topic you can name. This is exactly why I’m starting one. Competent text is now basically free, and free things are worth what you paid for them. What’s left is the writing that could only have come from one person — stuff they actually did, decisions they actually made, told with the kind of detail you can’t fake. That’s what this blog is.
Think about the content you’ve seen more of since AI took off — the listicles, the “five approaches to X” round-ups, the confidently opinionated pieces from someone who’s clearly never touched the thing they’re writing about. That’s what AI collapsed the value of: beige content. It was always filler, but now it’s free filler, and everyone can smell it. What a model can’t produce on its own is “I shipped this, it broke in a way I didn’t expect, and here’s the decision I reversed and why” — because it didn’t ship anything. It has no stake in the outcome, no scar tissue, no moment where the plan met reality and lost.
That scar tissue is the stuff actually worth reading — so here’s some of mine. I rocked up to a recent project planning to use Quickwit for its search — advice I’d been given that looked well considered at first glance, and on paper it would do the trick without a heap of dev effort. Then we started building and hit roadblock after roadblock after roadblock. We were running on Lambda, not persistent containers, and realistically Quickwit was never built for that — the “won’t take much effort” part fell apart on us completely. So I made the call to ditch it and build from the ground up on Tantivy, the engine at Quickwit’s core. And yes, I used a heap of AI to build the replacement faster — but by then I knew exactly what architecture it had to fit and how it had to perform, because we’d paid for that knowledge the hard way. Inside two weeks we had a version in prod that worked great. That’s the thing no amount of prompting fabricates: the plan that looked right on paper, the wall it hit, and knowing precisely why the next one worked. Stories like that are the reason this blog exists — they’re exactly the ones I want to dig into here.
And yes — AI helped write this post. Most of the words you’re reading were typed by a machine. That’s not a gotcha you’ve caught me in. It’s the point.
Here’s the actual division of labour. The ideas start with me, captured in Obsidian as they turn up, sitting in a list until one of them hits that “I could develop this right now” feeling. From there I shape an outline with Claude, going back and forth until it says what I actually think — not what’s plausible, what I think — and then we work it into a draft that I correct and steer the whole way through. This post is itself an example of the steering: the original idea was “write about how I built the site”. I pivoted it, because opening a blog with the tech instead of the reason for the blog was the wrong way around. Then I reworked the outline beat by beat until every point in it matched a view I genuinely hold, including everything you’re reading in this paragraph.
If you’ve done any serious AI-assisted coding, you already know this shape. The model writes the code — types it, wires it up, gets it building — but you drive: the opening prompt, the corrections, the “no, not like that”, the steering toward the thing you actually wanted. The ideas and the judgment stay human; the machine just gets you there faster. And the steering goes both ways. When I built the platform this blog runs on, I went in dead set on running CloudFront the traditional way — my distribution, my WAF, my rules, none of the new plan-based billing model. Claude Code put up a design that argued the opposite, I pushed back, and the argument won — because it dealt with my actual constraints instead of hand-waving past them. Other times I’ve thrown out an implementation mid-build with a flat “what the hell are you doing”. Both of those are me doing the engineering. The human in the loop is still the engineer, and here the human in the loop is still the author. I’ve just stopped doing the typing.
The test I hold myself to is simple: could this post exist without me? That’s not a claim that human writing is automatically better — plenty of it is rubbish, and plenty of generated text sounds perfectly plausible. The difference is that everything here traces back to decisions I made and things I shipped. You could sit down with me over a beer and ask about any of it, because it actually happened — there’s a person on the other end of every claim. If a post of mine ever fails that test, it’s slop, and I’d rather publish nothing than publish slop with my name on it.
The other reason to write is entirely selfish: writing forces thinking to completion. A half-formed opinion survives just fine in your head, and indefinitely in Slack. It does not survive twelve hundred words in public. I picked this habit up over my time at Amazon, where the writing culture is famously intense — and at times a total pain in the ass. Being told “go write a doc” when you just want to build shit drove me insane more than once. But the process worked (most of the time). Writing the doc usually forced the thinking to actually finish, methodically, in a way that talking about it rarely did. When I left, the urge to write my way through big decisions came with me, and I’ve usually been better for it.
One thing worth knowing if you take on writing content this way: the thinking moves. It used to happen while I typed — and for me, thinking and typing at the same time made both slower. That might just be my ADHD talking; holding a sentence together and testing the idea inside it at the same moment meant neither ever got my full attention. Now the thinking happens in review, reading a draft back and deciding whether an argument actually holds up or just sounds like it does. That’s not a downgrade, just a different place to do the work — but you do have to actually do it. The moment I start waving drafts through, the thinking benefit evaporates and I’m back to publishing beige content, the exact thing this post says is worthless.
So who am I writing for? Mostly people in, or heading toward, a technical leadership seat who still build — that’s the seat I know, because I made that move myself: engineer into leadership, without ever really putting the tools down. If you’re somewhere else entirely and something in here lands anyway, great — take it. Looking back at my own way in, I can’t point at the one post I wish someone had handed me, because it didn’t work that way for me. What I had was better: mentors with an uncanny knack for handing me the right thing at the right time — blog posts, books, everything in between. An enormous amount of things I’ve figured out and applied in my work traces back to content someone put in front of me at the exact moment I needed it. This blog is me paying into that pool. Not every post will land for every reader, and they’re not meant to. The goal is that there are gems in here that reach someone at their right time — whether they find them directly or someone who read them passes them on.
Which brings me to the question a blog with my name on the domain invites. “Personal branding” as a deliberate activity makes me want to roll my eyes so far back they don’t return. But we all leave a trail online whether we curate it or not, and I’d rather mine be made of things that are actually useful. The moment you write for the profile, you’re back to manufacturing beige content — and a machine does that cheaper than you. The work has to come first. If someone googling “who the fuck is this Brian Farnhill guy” finds something of substance along the way, that’s a bonus, not the mission.
Most “why I’m starting a blog” posts are a January gym membership — signed with total sincerity, dead by March. This one is checkable in two ways: whether the next posts actually show up, and whether the judgment in them could have come from a prompt. A year from now, the win looks like posts getting passed around, people pushing back on them, the occasional message from someone who took what worked and left the rest. And selfishly — a year spent finishing my own thinking, which has a decent track record of improving how I show up for the people around me. Judge it in six months — I know I will be.