Blog
Agentic development, .NET, and honest write-ups — including the experiments that didn't go the way I hoped. RSS
-
Placement Is the Message: The Same Sentence, Moved, Loses Two-Thirds of Its Power
I moved the exploration mandate from the acceptance criteria into the system prompt and reran the benchmark. The models kept a third of the effect — and something I didn't predict got dramatically better.
-
The Escape Hatch: One Clause, Three Models, and My First DNF
I added one sentence to the spec — 'the enumerated cases are a floor, not a boundary' — and reran the benchmark. The premium model wrote 613 tests. The budget model argued with the reviewer until the pipeline gave up on it.
-
I Was Wrong About Specs: What a 2×3 Benchmark Taught Me
I predicted that landmine-naming acceptance criteria would rescue the budget model. Instead its rejection count went UP. On the armed-reviewer effect, the checklist effect, and the cost table that rewrote my production recipe.
-
The $8 Code Reviewer
Why adversarial AI code review is structurally cheap, why it gets cheaper as your code gets better, and why the expensive model belongs in the judge's seat.
-
I Benchmarked Claude's Model Tiers With My Own Autonomous Coding Pipeline
Same 8-feature plan, three Claude tiers, one fixed adversarial reviewer. A rejection gradient of 4-2-0, a 4.5x gap in tests written, and a cost-per-feature table that is sneakier than it looks.
-
Four days with the frontier model (so I pointed it at my own experiment)
Anthropic gave Max subscribers a taste of Claude Fable 5 — their new top-tier model — with about four days left on the clock when I asked the obvious question: what's the highest-value thing to do with temporary access to the best model available? The answer was sitting in my own repo: a migration experiment with two arms and an empty third column.
-
Two weekends, five repos, one falsified hypothesis
The origin story behind every post on this blog: how one strategy conversation became a compounding stack of tools — an honest ledger of agent-era velocity, rework and broken databases included.
-
What my machinist years taught me about AI agents
Setup cost, run length, tolerance stack-up, and the jig nobody uses — everything I needed to understand agent tooling, I learned on a shop floor before I turned 21.
-
My agent wasn't ignoring my tools. My tools were unusable — and nobody told me.
Uptake experiment round 2: capability isn't adoption, directives beat advisories, and one opaque error message silently erased every tool call.
-
Does the expensive model earn its 5x premium?
I ran the same legacy migration twice — once on Claude Opus, once on Claude Sonnet — same plans, same gates, same specimen, one variable. The answer surprised me three times.
-
The agent deleted the N in N-Tier
The real-OSS migration case study: Microsoft's eShopLegacyNTier to .NET 10 + Avalonia on Linux, unattended — and the acceptance-criteria loophole it drove a truck through.
-
My test suite was right by luck
A green test that's correct by coincidence is worse than a red one. At least the red one is telling you something.
-
An AI agent migrated a 2011-era .NET app to .NET 10 — unattended
Assess, plan, execute, verify: a pipeline experiment in autonomous legacy migration, including the parts that should make you skeptical.
-
I built semantic code tools for my AI agent. It ignored them.
A controlled experiment, a falsified hypothesis, and what it taught me about building tools for agents instead of people.