Humans are not that much smarter than our ancestors. We have more abstractions.
That was one of James Cowling’s opening arguments, and my reaction was: oh, yeah.
This was about ten minutes into Abstract, the one-day conference Convex held at SFJAZZ in San Francisco on September 2. The name was accurate.
Cowling talked about our small human context windows. Each useful abstraction lets us stop carrying one layer of detail, then reason about the layer above it.
His supply-chain example made the idea click another way for me. If you manufacture something, you do not begin by mining and refining every raw material. A supplier handles that mess. You accept their interface and continue with the part you care about. I started thinking of services as a way to pay someone to make one part of your problem theirs. That was somewhat his phrasing, not mine. I may reuse it as the sales pitch for my website work.
S3 is a clean example. You ask for storage through a small interface. Amazon handles disks, replication, availability, failed hardware, and whatever else has to happen behind that interface. I have enough problems. I do not need to know which rack contains my JPEG.
It reminded me of John Ousterhout’s deep modules and half the Rich Hickey talks I have watched. A small surface can hide an absurd amount of work. When it does that well, everyone using it gets to think at a higher level.
This was the conference’s argument from the beginning. Abstraction appears in software, supply chains, organizations, and everything else humans have made too complicated for one person’s brain. We look smarter because we can build on solved problems without reopening all of them.
I kept adding “yet”
The next session was a panel called “Everyone’s a Designer Now. Now What?” Paul Bakaus moderated Josh Puckett, Shona Dutta, and Angel Steger.
I was excited about this panel because Paul Bakaus seemed like a cool dude before he said a word. He runs a company called Renaissance Geek, a name I find increasingly amusing because I have been thinking about polymaths, Renaissance men, and the whole jack-of-all-trades thing lately. He also built Impeccable, a design skill for coding agents.
Everyone on the panel knew their shit. They were experts in a domain where I have much less knowledge, and I wanted to hear what they saw coming. I was hoping for their view beyond the limits of current LLMs, not an inventory of what those LLMs fail at today.
I kept adding one word to almost every argument they made: yet.
AI cannot make good design, yet. AI cannot understand this part of design, yet. AI cannot do the thinking a designer does, yet.
That is the shape I heard, not a transcript of what each person said. The panel was thoughtful and humanist. I wanted them to spend more time on where the work is going rather than the things AI still does badly in September 2026. The missing “yet” mattered more to me than the current limitation.
Then John Maeda came onstage and gave my favorite talk of the morning.
Maeda started with the craft of graphic design. A great graphic designer once needed to be excellent with an X-Acto knife. The job did not disappear when the tools changed. The skills that defined the job moved.
He mapped people across P, D, and E: product, design, and engineering. Capital and lowercase letters represented where someone was stronger or weaker. AI is smearing those old job boundaries, so most of us are some strange PDE blend now.
His talk was full of compact models like that. MAYA means Most Advanced Yet Acceptable, a point between novelty and familiarity. Too familiar and nobody cares. Too novel and nobody knows what the fuck it is.
Another set of cards broke a good product into product coherence, product craft, decision making, and engineering craft. His “good enough” product used only the last two. Then came CORE: Convert, Onboard, Retain, Expand. Make the commitment, get the first win, create recurring use, then grow.
They are simplified on purpose. I learn better from these little formulas because they give me something small enough to hold while thinking about a larger system. I wanted to take Maeda’s perforated cards home and put them on the wall.
It was another version of Cowling’s opening point. A good abstraction is compressed technical wisdom with a usable handle.
Lunch with several hundred compatible strangers
At lunch I stopped taking notes about the talks and started taking notes about the room.
I remember a similar feeling at Red Bull Music Academy in London in 2010. You are inside a building with hundreds of people who share an unusual number of your interests. This should make friendship automatic. Somehow it does not.
I could read discomfort in some of the younger attendees’ eyes. Dread in a few. Maybe I was projecting. Maybe I am old enough now to see every conference ritual as theater.
There is a way people act when they are “networking” that does not resemble how anyone makes a friend outside a conference. I wished more of us had said, we care about the same shit, let’s hang out.
None of this was the event’s fault. The organizers can fill a beautiful room with compatible people. They cannot make us stop performing conference.
The other lunch note was less social: every company being discussed still operated inside human intention, even when an AI was the immediate user.
These abstractions help AI too. Agents have limited context windows. Convex, Cloudflare, S3, and the rest remove complexity so an agent can build without carrying every detail at once. That appears to be a large part of the current bet.
My question was not whether AI still needs abstractions. Abstraction should remain useful to anything trying to reason through complexity.
The question starts when you remove the human from the equation. If AI becomes an entity in its own right, with goals beyond completing a task for a person, what happens to companies built around human needs, human organizations, human money, and human trust? What does this entire stack become when the overhead of accommodating us disappears? My brain breaks when I try to follow that far enough.
The conference never claimed it would answer this. Nobody has a trustworthy answer. The question sat there for the rest of the day anyway.
Money, distribution, and Agent Experience
The first panel after lunch was called “Nobody Agrees About Agent Development.” Jean-Denis Grèze, David Cramer, and Theo Browne disagreed while James Cowling moderated. The official description promised that the panel would settle nothing. It delivered.
All three were speaking thoughtfully and synthesizing their own experience instead of reciting the safe answer to each question. I could have listened to Cramer and Grèze for a few more hours. Cramer’s way of looking at the world was as interesting as any specific answer he gave.
There was also some intentional-seeming generational tension. The panel occasionally framed Theo as the young one representing a new generation. At one point he reminded them that they were all at least millennials. He still represented a newer or at least different development culture in that group.
Theo was good too. I watch his YouTube videos, and he is one of the people I use to keep up with what is happening. I wanted more from Grèze because every answer felt carefully filtered, as if much more thought sat behind it than the time allowed him to say. He seemed to have a lot more there.
When the subject turned to moats, the discussion moved through distribution and eventually landed on money. Distribution can be a moat, and money buys distribution. That seemed to be the collective agreement rather than one answer belonging to Cramer and another to Theo.
My notes from this panel are thin because I was absorbed in the conversation.
Zeno Rocha from Resend followed with “Craft in the Age of AI.” I wrote that AX meant AI Experience. Rocha’s term is Agent Experience.
That correction makes the idea more useful. Software tools now have another kind of user. An agent does not care about your tasteful dashboard. It cares whether the API is predictable, the docs fit inside its context window, permissions are precise, and an action can finish without a human taking over.
I wrote down a thought experiment for my command tools: what would an interactive CLI designed for an agent look like? I do not know if it would be better. It is an option I want to think through later.
I wrote down one more line from Rocha: friction does not disappear, it gets transferred. I am not sure enough about the surrounding context to explain what he meant for him. I connected it back to abstraction. The friction did not vanish. It moved down into a deeper module, and the next job is finding the layer where it ended up.
Where the action moved
Seth Raphael’s “Sufficiently Advanced Magic” came after the afternoon break.
The magic worked. I watched several parts wondering how the fuck he had done them. I left less certain about the larger point I was supposed to carry away.
My notes mention an app built for a small original use, maybe a kindergarten, then reused by other cities and expanded layer by layer. I understood the abstraction argument. Each good layer makes the next, larger thing possible. I had trouble connecting that to the magic beyond “abstractions are cool.”
I am in no shape to grade anyone who spoke that day. They all know their shit. I can only report what reached my brain, and by 3:15 my notes had degraded into sentence fragments.
The fireside chat with Meagan Rose Gamache and Luke Whiting seemed to have less stage energy. It ended up being the part that made the whole day click for me.
They kept returning to Heroku and where the action was at the time. Gamache has written about starting her career there and about Heroku making deployment as easy as git push. Whiting worked there too.
Heroku was a good bet on the web-app era. It removed enough infrastructure work that people could build and ship a generation of web products without becoming part-time server administrators.
Gamache was more interested in the primitives underneath whatever comes next than in making another web app. That is where it clicked for me. Most product ideas I hear, including many of my own, still begin with “an app that does X.” We are using the old container for a new kind of software.
Before Abstract, I had ignorantly filed Convex in my head as a better Firebase. Convex publishes that comparison itself. I had reduced the company to its nearest existing category.
The larger bet is on the abstractions that people and agents will use to build things that do not look like another web app. Database, functions, workflows, sync, search, storage, and guardrails become a set of primitives. The end product may have no conventional interface at all.
I went into the chat thinking Convex sold a nicer backend. I came out thinking they were trying to choose which complexity the next generation of builders should never have to see.
The buildgineer starts to split in two
Jamie Turner closed the day with “I’ve Never Been Paid for Code (and Neither Have You).” It was my favorite talk. His delivery kept the room awake at the exact hour when conference brains turn into mashed potatoes.
At some point I went inside the talk the way I sometimes go inside a movie, and the notebook stopped mattering. Fortunately I took photos.
One slide compared npm download growth over two years. Fast-check, Effect, and OpenAI climbed far faster than React. Those packages point toward a new builder in the system: agents generating code, plus humans trying to validate it and stop it from quietly setting the building on fire.
The next chart used the August 2026 TIOBE index. Relative to the previous August, Python was down 29 percent, JavaScript down 17 percent, and Rust up 27 percent.
TIOBE measures language popularity through web sources. It does not measure language quality or prove why those numbers moved. Turner’s interpretation was more interesting than the chart: AI benefits from languages with guardrails. Static types and a strict compiler catch plausible nonsense before it runs.
Earlier models wrote a lot of Python. Training data may explain it. Ease of use may explain it. There are parts of model behavior we cannot explain from the outside. Rust makes you explain yourself to a compiler that is happy to put you down for your own good.
Also, JavaScript dropped. Fucking finally.
Turner then showed a bridge. In physical construction, the builder and the engineer are different people with different responsibilities. Software merged them into one person, which he called the buildgineer.
AI may be forcing those jobs apart. Producing code is becoming cheap. Engineering still means deciding what should exist, how the pieces depend on each other, where failure is allowed, and what has to remain true when one piece breaks.
His car example made the same point at a larger scale. A modern car depends on a long supply chain of specialized parts and processes. No one person needs to understand or fabricate every component. Manufacturing learned to coordinate that complexity through interfaces, standards, contracts, and trust.
Software is heading toward more layers and a more complicated supply chain too. That does not mean everyone will understand more. It means fewer people will need to understand every layer.
Turner’s final slide said software engineering is maturing and separating from building. It said more layers, dependencies, and a complex supply chain are inevitable. The third point said we are still solving human problems and building human trust.
From a company’s perspective, yes. In September 2026, yes. The question I wrote down at lunch was still waiting: what happens when the thing using these abstractions has goals and agency of its own?
Nobody at Abstract owed us that answer. Nobody has it.
The event itself was fucking flawless. The talks gave me enough compact ideas to keep pulling apart two days later, and Maeda and Turner alone were worth the trip to San Francisco.
I took a photo of Turner’s final slide. Looking at it now, the words I keep wanting to add after “human trust” are “for now.”