On not becoming a cyborg

I was a voracious reader as a kid, and I noticed a funny phenomenon: whatever writer I had most recently read, my next paper for English class would sound like them. If I read a bunch of Stephen King, I’d sound like Stephen King. If I read the Narnia series, I’d sound like C.S. Lewis (complete with British spellings and antiquated turns of phrase). I know I’ve carried this tic into adulthood. As much as I’ve tried to find my own consistent voice in my blog writing, I know that whatever author I last read is sitting there in the back of my head, weighing in on my word choices and sentence rhythm. So imagine my alarm when, in my last blog post, the word “load-bearing” popped into my head. I used scare quotes and even called it out as a “Claude-ism,” but I couldn’t fight the feeling that it was le mot juste. I couldn’t find another phrase that felt more appropriate. And as Stephen King said, if you have to hunt for a word in the thesaurus, it’s the wrong word, so I went with it. The most recent book I’ve been reading is Anna Karenina, and it would be much more flattering to my ego if Tolstoy’s short, punchy phrases (at least in the translation I’m reading) made their way into my writing. And maybe they did. But then there’s the obvious Claude loanword in the middle of it, sticking out like an blemish. More and more I’ve found my brain alighting on these phrases: “load-bearing,” “belt-and-suspenders,” “earns its keep.” As much as I try to bat them away, they keep coming back. It shouldn’t be surprising: my job these days is effectively to shepherd agents, skimming their meandering robo-prose and trying to steer them towards better code. But I can’t help but be disturbed at how much they’re rubbing off on me. Immersion I have a degree in linguistics, so I understand the…

Using AI to write better code more slowly

A lot of people seem convinced that the point of AI coding is to write low-quality code as fast as possible. Spew out barely-passable slop, open massive PRs, and merge them unvetted. Ship it! But the thing is, LLMs are very flexible. And you can use them just as effectively to write high-quality code more slowly. This statement seems completely obvious to me at this point, and I almost didn’t want to write this post for that reason. But there seem to be enough people convinced that LLMs are only good as slop cannons that it’s worth making the opposite case. If Mythos taught us anything, it’s that LLM agents are really good at finding bugs. Throw them at a codebase enough times, and they will find so many bugs that you’ll barely know what to do with them. Like many others, I’ve also found this is true of non-Mythos models – some may be better than others at finding subtle bugs or avoiding false positives, but the fact is that the latest public models from Anthropic and OpenAI are good enough to find plenty of bugs in an unscrutinized codebase. The problem is not so much finding the bugs, but instead prioritizing and validating them. For this reason I have a Claude skill I adapted from this article‘s core insight, which is that the more, different models you throw at a PR review, the less likely you are to get hallucinations or bogus bugs. The skill says (paraphrasing): Run a Claude sub-agent, Codex, and Cursor Bugbot to find bugs in this PR ranked by critical/high/medium/low. Once they’re all done, review their findings, do your own research to rule out false positives, and write a final report. That’s basically it. You can add your own definition of “bug” if you want – mine has stipulations about the KISS and DRY principles, writing accessible HTML/JSX, using proper…