I've worked in automation for my entire career. If something was non-deterministic, it wasn't a good candidate for automation.
AI changed that. It adds the ability to add reasoning into an automated flow. Very powerful.
BUT, that doesn't mean you should just give the entire task to AI... that's expensive.
My best agentic workflows use deterministic means as much as possible and call in AI when necessary.
Here's my latest on Rules and Reasoning.
https://t.co/QxNhoXnjXA
1995: oh cool you can buy books online now
2026: the company that owns Whole Foods and Lord of the Rings is experiencing setbacks with its space program
Torpenhow Hill, England
When the Saxons arrived and asked the locals what that hill was called, the Welsh replied, “Pen,” which simply means hill in Welsh.
The Saxons, apparently not spotting they’d already been given the full answer, added their own word for hill: tor. So it became Torpen - literally Hill Hill.
A few centuries later, the Norse turned up and repeated the exercise, adding haugr, their word for hill. Now it was effectively Torpenhaugr - Hill Hill Hill.
Then the English arrived, looked at the whole thing, shrugged, and added “Hill” on the end for good measure.
Thus we ended up with Torpenhow Hill:
Hill Hill Hill Hill.
It’s comforting to know that for over a thousand years, successive generations have been independently deciding that the previous lot hadn’t made it quite clear enough that it was, in fact, a hill.
Language is magnificent.
Humans… less so.🤷🏻♂️🤣
John Allspaw, founder of @AdaptiveCLabs, at #NYTechWeek:
"Automation does this, humans do that" isn't a clean line. Work doesn't split that way, and that's where human expertise comes in. Even when it's hard to pin down. @allspaw
William Zinsser taught writing at Yale, then wrote the book that has fixed more bad writing than every English class combined.
Here are 10 cuts from "On Writing Well" that instantly make your writing twice as strong.
1) Delete every word doing no work
My heuristic is that any diff an agent generates over ~1500 lines is too big and is indicative that the problem needs to be decomposed. This is my general pattern now for feature work:
1. Try to implement the whole feature, loosely guided. I call this the "draw the owl" prompt in reference to the meme. Expect garbage, you're going to get garbage.
2. If the diff is less than 1500 lines, review it and iterate normally. If the diff is more than 1500 lines, prompt the agent to decompose the problem into atomic, incremental, reviewable tasks. Simultaneously, do this yourself.
3. Agents will very often make these tasks way too specific to the shape they solved. You need to massage it into the right general shape. Do that.
4. Kick off new agents to work on those incremental things (as parallelized as possible). Apply the same rules.
5. At a certain, point, repeat the "draw the owl" prompt. At some point, you will get beneath your review-ability threshold.
This has been producing consistently high quality, maintainable, reviewable chunks of code that have a good handoff to either merge as-is or human refinement.
And with the latest frontier models at xhigh thinking, these are all slow enough that you can usually have multiple going concurrently while you are actively reviewing others or working on your own tasks.
HITL (human-in-the-loop) agents are still super important, especially for feature work. Features touch the human boundary in terms of UI, API, etc. And net new stuff can introduce pathologies in the architecture that violate desired invariants (these should be represented in specs or tests but we aren't perfect!).
I know a lot of the leading edge agentic discourse is about "loops" and agents driving agents continuously. I do some of that (will report on that later). But, in terms of raw daily get-shit-done type of work, this is my most rewarding pattern at the moment.
I was told today by a 17-year-old that there was no way people were writing 10 page papers without Al.
Dude, I was writing 10 page papers without having read the book.
PICARD: Data, shields up
DATA: Brilliant! Shields can reduce damage we sustain. Not immunity. Not hubris. Just prudence. It's not precaution—it's strategy.
[camera shakes]
WORF: HULL BREACHES ON NINE DECKS
DATA: Here's what happened: you told me to raise shields, and I didn't
This is true! That's because these workflows are the absolute frontier edge. We need a bunch of us to explore, build what works for us, and then hang out and talk about it together. The patterns that work will emerge and stabilize. The gold rush makes it look like we should be rushing to build vertical products that solve all these problems - but that's a mistake. It's primitives and patterns time, not vertical streamline time.
Debussy: Music is the spaces between the notes
Miyazaki: A film of nonstop action—with no pauses to breathe—is just a commotion
Lao Tse: We shape clay into a pot, but it is the emptiness inside that is useful
Tiktok creators: Finally, we can remove all pauses from everything
📍 I made a new drawing about Context Windows. About “lost in the middle”, how RAG affects it, tokenizers and more.
Understanding context windows help you debug and leverage LLMs most effectively. You see why people like Boris from Claude refresh the entire window at times.