Once more, with feeling – another season, another newsletter. Trying to get a conceptual hold on how to feel human in this continually liminal time in software and technology. Current hypothesis: maybe thinking slowly and holistically, whilst acting quickly, is worth exploring.
We continue to feel all sorts of ways about machines generating code, writing on the web, composing images, deciding things that humans used to decide. Robots continue to feel nothing. I bet you can see the problem here.
Within you are many wolves writing code
One wants to implement this feature to the best of your standards, regardless of the surrounding code. Another aims to fit in with the standards of the existing code, as it is. Still another hopes to write it so that it’s easy to delete and rewrite it again later when more is known about how it should actually work. Still another just wants to get it done.
They’re not wrong, but none of them are right.
There’s one mistake I see more often than anything else, and it’s absolutely deadly: ignoring the rest of the codebase and just implementing your feature in the most sensible way. In other words, limiting your touch points with the existing codebase in order to keep your nice clean code uncontaminated by legacy junk. For engineers that have mainly worked on small codebases, this is very hard to resist. But you must resist it! In fact, you must sink as deeply into the legacy codebase as possible, in order to maintain consistency.
– Sean Goedecke, Mistakes Engineers Make in Large Established Codebases
Notes from the agent coding (not quite) vanguard
Everything is weirder and more capable. Models are way better at many things, unattended coding in particular. But, to everyone’s dismay, that causes them to write in a tedious style of English.
There’s plenty of room for humanity in between the tokens.
1. Models & harnesses
Frontier lab models, despite their quirks, feel like they will graduate to boring technology soon. When the servers are healthy, you can rely on Anthropic and OpenAI’s models to get work done. Cursor’s in-house models (probably other labs too, I haven’t tried Kimi, GLM, etc.) are solid enough to pinch-hit for frontier models when the inference servers are buggy.
Harnesses, when they’re relatively bug-free, are basically just as reliable. You can use the frontier labs (I’m still on Claude Code, mostly) to get most sorts of stuff done. You could substitute Cursor, Pi, or most of the others to personal taste. And, personal taste is increasingly a thing across the harnesses. Claude Code is very much for the terminal people, Cursor is increasingly for the holistic product people, the others are for the customization enthusiasts.
Occasionally one model will make a noticeable leap over the others in capability, speed, or “workhorse-ness”. Occasionally, a model gains a unique capability that is a big advantage until it’s cloned into the others. I find those momentary blips don’t matter enough to switch between models and harnesses that often.
(Despite that, I’m a novelty junky and I still oscillate between Claude Code, Cursor, and a couple of other approaches more often than I would like to quantify.)
Optimistic prediction: there will be a lull in frontier model capability race in the next 6–12 months. It will either correspond with IPO quiet periods or increasingly bad optics about the development of increasingly autonomous models. I’m optimistic about this because I think we could also use a breather in this domain.
2. Skills & prompting
Models and agents are good enough, in the late summer of 2026, to focus on customizing and leveraging skills instead of the model of the month. Bonus, skills are portable across agents, and models, sort of.
For most folks, those living in the middle of the bell-curve (definitely not the Amp folks, who seem to exist in the future), I think this means the action is now about telling the agent what the task is and how to figure out if it’s done or did a good job. Prompting and verification.
I’ve had a lot of luck lately with simplifying my instructions and moving more of the details into (Markdown) documents. In general, a lot of what I had in my CLAUDE.md ten months ago feels like over-steering now.
That said, moving the quasi-deterministic “verbs” of your interactions with coding agents to skills still makes a lot of sense. In particular, to socialize usage patterns with teammates or codify how specific tools, e.g., Xcode or CSS, are used.
Optimistic prediction: most currently-popular skills will be trained into the models. Instead of /grill-me about the new login screen or /fix the bug where the button disappears evaporate into garden-variety English.
3. The human factor
A couple of weekends ago, I was tinkering with doing Claude code via iPad and remote control. But I remembered the smarter move is to avoid tokens on evenings, and probably weekends too.😇
Lately, I’m finding that the drive for software factories and sprawling specs feels too much like the boring kind of software development work. Nudging and steering an agent, asking questions and getting answers in the form of working code, that’s more fun. It’s not as surprising and energizing and sometimes-frustrating as human collaboration. But it doesn’t feel like doing rote homework problem sets, which must count for something!
Optimistic prediction: the models whose output is most concise and least cliché could prevail over more capable but inscrutable ones.
4. Even more predictions
In the coming months:
- More hobbyist/self-employed/solo developers will utilize >1 agent harness monthly subscription. For bouncing back and forth between whichever model is in the out-performing at the time. Or if one prefers “the vibe” of one model as a collaborative partner while using the other as a coding agent. Sometimes, to get extra token usage at $40/month instead of going all the way to $100/month. More reasons to carry subscriptions to two or more models will probably come along as use-cases evolve.
- As more developers carry access to more models, skills and workflows will gain traction that use models in an “adversarial” mode. That is, model A reviews model B’s plan, model B review model A’s code, etc. Or, model A/B/C all try to find bugs/security issues in existing code in a competition. I’m not sure how this will pan out, but I’ve heard of people having good luck with this currently.
- One of the frontier model labs could go public. We get a better idea about the economics of their operation, what token subsidies actually look like in numbers, the actual economics of training and releasing a new model, and what the labs think their long-term play is currently. (Pessimistic: their filings and road-show are just “come with me, it will be good, but we’re doing it my way” like Facebook, and we don’t learn anything.)
- That developer with Pi kitted out just like they like it is the new co-worker who insists on vim (not NeoVim) or emacs with their dot files just like they like it. Same as it ever was.
It feels boring to write about agent coding so often. I try to keep it spaced out, even if it’s with modest vacation photos and ramblings. But, so much is changing and often interesting that it feels like missing out on the moment to develop one’s thoughts, in writing and publicly.
So, I regret to inform you, the discourse on AI will continue until the situation becomes less dynamic, fascinating, and rewarding to develop what I think of it by writing publicly.
Interestingly
Three modalities of creativity I am keen to explore: dirt, screenshots, monk-like.
1. Dirt, metaphorically
Take something worthless (e.g., literal dirt, metaphorically non-working code), put great effort into it, get something nice in the end:
Sometimes things don’t go as planned and the product that comes out the other end is really not what I wanted or needed. At that point, the right thing to do is usually to start over from the original specs (and possibly the wrong code) and restart the spec and design process. Then implement again from scratch. There are absolutely projects that I’ve run through this process five or six times as I figured out what I actually wanted or the right way to explain what I was going for.
Dorodango is, essentially, the process of polishing a ball of dirt into a beautiful, high-gloss sphere. The result is genuinely amazing.
— Jesse Vincent, Dorodango
2. Screenshots
Knowledge workers are all taken with our text files, spreadsheets, or design files. We invent ideologies and workflows, have very specific opinions about how to do this thing, know all the keyboard shortcuts, organize them just so, or not at all!
And then, there are eccentrics who have these giant collections of screenshots, thousands of them. Of order screens and login flows and memorable conversations and receipts and profound quotes on the web and sports scores and seventeen iterations of one document/screen/logo.
During the opening of the conference, Omar honed in on the subversive nature of the screenshot. In popular computing, it circumvents the app siloes that define our contemporary digital ecosystems. A screenshot doesn’t need a log in, bypasses DRMs, and is interoperable between practically every single computational device. Even in the “high-culture” of computing, where text is dominant, screenshots prove subversive. The screenshot is unstructured information which must be parsed to offer the tidy data best suited to computer hacking. They are seen as verbose and unwieldly, despite universal adoption. The Tao of Unix is text files, not bitmaps.
— Cristóbal Sciutto Rodríguez
3. Monk-like devotion to the craft
Deep, monk-like devotion to the craft of software development and its output, the application. I love an in-depth, illustrated essay on decisions that go into a carefully considered application.
The initial vision for Paper was simple — build something that has the core tricks of iA Writer, but in a package that feels even more elegant and minimal
…Have people noticed the effort? Most — probably not… but some have.
I don’t have a big connection to make here! Deep attention to detail, knowing when to polish and when to start over, trying to make different media work – that’s it. Make interesting things, interestingly.
I’m on book six of Dune. But, I’m just now finding out the story runs eight books. (Have Frank/Brian Herbert not heard of trilogies?)
Finding focus when working with coding agents, flying too close to the multitasking sun. But, it turns out concise output and taking intentional time away from tokens is the key.
Driving more confident in autocross, trying to use the pedals, both brake and gas, more. But, I’m still slow.
It’s all dumb. But, we learn things.
Watched: Spider-Man: Brand New Day 🎥 Properly rated at ~71% positive. It’s a fun movie. Definitely better than the second Spider-Man, probably better than the third, not as good as the first. Only 2.5 hours, but it felt way longer. There’s a bunch of plot movement to get through.
Holland and Zendaya still have great chemistry. They pulled in a few minor characters from three of our favorite long-running dramas: Michael Mando from Better Call Saul, Liza Colón-Zayas from The Bear, Tramell Tillman from Severance. Jon Bernthal is surprisingly likable as The Punisher, which I don’t even know how to feel about.
Is Marvel back? Possibly! Spider-Man is definitely the best world they have going. But the supporting cast of shows and characters appearing in the upcoming films may make the post-Endgame dip feel mildly redeemed if they can land Doomsday. They’re pulling in the X-Men universe too, ever so gradually. But not blowing it — yet.
Patrick Dubroy, Fast is better than slow:
Think about it — if you’re fast, you get data more quickly. That helps you make better decisions, sooner. It also means you learn faster, and over longer periods it means you learn more. Being fast also means you can try out multiple approaches to a problem and pick the best one.
Fast is more learning is better execution.
Don’t worry about looking dumb. You probably already know that you should share your work early and often. But it’s uncomfortable, so it’s easy to put it off while telling yourself a story like “I have a high bar for quality.”
You’ll get results much faster if you learn to push through that discomfort.
If I’ve learned anything from working with coding agents on a team, it’s to worry less about that one code review where someone points out a howler of an issue with my code. Whether a coding agent generated that code or I typed it in by hand, acting on my teammate’s feedback is an opportunity to show that I care about quality, I listen, and I follow through.
That’s what (still) makes great coders. And, fast fingers.
Frozen 2 should be rated R (Interconnected):
Frozen 2 in which the entire city is almost destroyed by a tidal wave… It is SO LAZY.
While we’re piling on lazy writing here: LOST, and most American television, is particularly lazy about generating consequence and tension with lines spoken with characters holding guns at each other. Do we need the cheap escalation of a gun to know that the character really wants to coerce the other to action? To paraphrase Laurence Olivier, did the writers consider letting the actors act?
(Granted, firearms warp most parts of American culture, but this one is difficult to unsee once you recognize it.)
If the clankers have you down, I recommend: read your favorites, write like that, discover new favorites, write and edit like that, rinse and repeat. It would seem, at this moment, only a human can produce liveliness by chaining words into language and narrative.
Writing is how I build. That’s why I write.
Working with agents, summer of 2026: you have an always-on, amazingly deep collaborator. The coding ones can work themselves out of most problems, if you are willing to pay for the effort and thinking costs.
But, wow, you are absolutely right! They are boring as nails and write like an entrance exam question.
It is a real relief to spend a weekend, touching grass or concrete, away from the discourse around maximizing, minimizing, or wisely leveraging them.