I sometimes joke that I don’t really write code anymore. I specify it.
The plate above is real. 1,467 commits, 2.29 million lines added, 71 repositories, four months in. By the cold logic of a GitHub year-in-review, I had a busy quarter.
I typed maybe a few hundred of those lines.
That’s the part the dashboard doesn’t tell you. Strip the vendored blobs from node-red-flows and WTDIB-v4 and the numbers slim down considerably. Across all buckets: 1,318 commits, +1.04M / -442K. The private bucket alone: 725 commits and net +432k. Strip the AI-generated scaffolding, the spec files, the regenerated TypeScript types, the migration boilerplate, and what’s left is the part where a human had to actually decide something.
That’s the only part that was ever the bottleneck.
The cycle that used to kill ideas
You know the one. I have a great idea, but I don’t know where I’d find the time to validate it. So the idea sits in a notes app for eighteen months, gets occasionally re-read, and either dies quietly or gets shipped, badly, late, by someone with less context but more time.
I lived inside that cycle for a decade. Most of the people I respect still do.
What changed for me wasn’t the ideas. The ideas were always there. What changed was that the cost of finding out whether an idea is any good dropped from “a month of evenings” to “a weekend.” And once that cost drops far enough, you stop rationing. You stop deciding which ideas to validate. You just validate them.
That’s the actual unlock. Not “AI writes code.” Not “ten times faster.” The boring, structural thing: the ratio between deciding and typing finally tipped in favor of deciding.
The ladder
The 71 repositories aren’t 71 products. They’re a ladder, and I climb it on purpose.
The bottom rung is for me. A handful of MCP servers that scratch my own itch, connecting Things, SiYuan, Lexware Office, Apple Notes to the same agent that’s reading my email. Nothing fancy. The point of the bottom rung isn’t the output. It’s that I get to feel the rhythm of spec → generate → verify → archive on something where the only person I can disappoint is myself. Most of these took a weekend. A few took an afternoon. None of them are precious.
That’s what makes them useful. I’m not learning to type faster. I’m learning to want more precisely. To notice when a spec is vague before I let a model run with it. To recognize when a feature I asked for is actually two features arguing with each other in a trenchcoat.
The middle rung is for people who’ll tell me when it breaks. Børk is a tiny app I built for our household. My wife saves recipes on Instagram, the way everyone does, and they vanish into the algorithm two scrolls later. Børk catches them: pulls the post, parses out the ingredients and the method, drops them into a quietly beautiful database we’ll still have when Instagram is a Wikipedia article. Forever recipes, ours, not rented from a feed.
Tiny. Domestic. Real users. Real stakes, in the small way that matters: if it breaks on a Thursday evening, dinner is the disagreement.
That feedback loop is the most valuable thing on the entire ladder. It’s where you find out whether the spec was actually right, or just internally consistent. A spec can be perfectly self-consistent and still describe a thing nobody wants. The only way to find out is to put it in the hands of someone who isn’t pretending to be polite.
The family rung also teaches you something the personal rung can’t: how to ship for another mind. My usability tolerance is enormous, because I know how the thing works. Emma’s isn’t. That gap is where the actual product lives.
The top rung is for clients. Multi-tenant platforms. Enrichment engines. Custom MCP infrastructure for businesses that have to keep running on Tuesday morning. Same loop, just with more rigor at every step. More verification. More thought before each spec. More thought in general.
What I noticed somewhere around February is that the quality of the work I do at the top rung is downstream of how much time I spent on the bottom two. Not because I was practicing the typing. I’m not the one typing. I was practicing the deciding.
The shift
When you stop writing the code, you have to be much, much clearer about what you actually want. Vagueness used to be tolerable because typing slowed you down enough to think. Now it isn’t. A bad spec gets implemented just as fast as a good one, which means the cost of not knowing what you want has skyrocketed.
This is the actual work now. Not typing. Deciding.
- Is this the right shape?
- Is this solving a problem I actually have, or one I imagined having?
- What does success look like, concretely, before I generate a single line?
- Who’s going to use this, and on what day, in what mood?
Those questions used to get answered implicitly, in the slow accretion of typing. The lines themselves were a kind of thinking. You’d write something, see it was wrong, rewrite it, and in that process the shape would emerge. Now the lines emerge in seconds. The shape has to be there first.
It’s harder than it sounds.
What this isn’t
This isn’t a productivity post. I’m not faster. I’m differently slow. The slow parts moved.
I spend more time staring at a blank document than I used to. More time writing out, in plain language, what a thing is supposed to do and why. More time arguing with myself about whether I actually need it. The 2.29 million lines aren’t evidence of a sped-up me. They’re evidence of a me who spent his time on the part that compounds.
It also isn’t a flex. The headline number is mostly inflation: vendored dependencies, generated types, scaffolding I wouldn’t read for fun. The few hundred lines I’m responsible for are the architecture decisions, the spec rewrites, the moments of “no, that’s not the shape.” Those are the only ones that ever determined whether any of this worked. The dashboard just makes the ratio visible.
The honest version of the headline
Two million lines, give or take. Mostly not by me.
The few hundred I’m responsible for are the ones that mattered. They always were. What’s different now is that the friction between deciding and shipping has gotten thin enough that I can afford to be wrong, in public, on a Saturday, and try again on Sunday.
So. What’s the idea you’ve been carrying for eighteen months? 🌈
This piece was written with AI assistance. The thinking is mine; the typing is shared.
MAKE YOUR CASE.