MoreRSS

site iconGeoffrey LittModify

Researcher explores malleable software and AI, with a PhD from MIT and work at Ink & Switch.
Please copy the RSS to your reader, or quickly subscribe to:

Inoreader Feedly Follow Feedbin Local Reader

Rss preview of Blog of Geoffrey Litt

Understanding is the new bottleneck

2026-07-02 18:00:00

July 2026

Understanding is the new bottleneck

This is a written version of a talk I gave at the AI Engineer conference in July 2026, also shared as a tweet thread.

Title slide: Understanding is the new bottleneck. Geoffrey Litt, Design Engineer at Notion.

Hot take: I think it's still important to understand the code that our agents write!

In this talk I'll explain why that's the case, and show some ideas for how to efficiently understand code. Alright, let's dive in.

Cartoon of a person surrounded by a growing pile of agent-written code.

Agents are writing more and more code for us, and we all know it's getting harder to keep up.

But the good news is: there are many ways to understand code! Reading diffs line by line is not the only way.

Slide listing techniques: code explainer docs, quizzes, micro-worlds.

Most of this talk will be about techniques I have found helpful to understand systems my agents are building:

  • Code explainer docs
  • Quizzes to check my understanding
  • Micro-worlds that I can play with to understand the system

But first we have to ask a more basic question…

Why understand?

Slide reading: Why understand?

Why? Why understand?

Aren't we supposed to be taking ourselves out of the loop now, and letting the agents loop themselves? As the agents get smarter, doesn't it become less important for us to be in the details?

I think many people — even those who are pro-understanding — have a slightly incorrect answer to this question!

Slide: understand to verify.

One possible answer: we understand to verify. We check the agent's work, we see if it's correct.

Correct can mean many things: does it match the spec, is it well architected… but it's fundamentally a thumbs-up / thumbs-down question.

Slide about agents getting better at verifying their own work.

Here's the thing: the agents are getting better and better at verifying their own work. And this is good! I like it when my agent doesn't make mistakes.

But hmm. Where does that leave us humans?

Slide: understand to participate.

That's where another answer comes in: we can understand to participate.

You can learn what the agent is doing to make sure you can be an active participant in the creative process. Here's why this matters…

Diagram of a project as many iterative loops with an agent.

It's never just one loop! A project is many, many loops with the agent.

And the understanding you have of the system is part of your ability to come up with the next idea to evolve it.

You need a rich set of concepts in your mind to think creatively and fluently about how to move something forward. If you're lacking that fluency, your ability to participate in the project is meaningfully limited.

Quote from Margaret Storey on cognitive debt: the humans involved may have simply lost the plot.

By the way, this relates closely to the idea of cognitive debt, popularized by Margaret Storey and Simon Willison.

It's like tech debt: you can get away with not understanding what's going on in the short term, but it'll bite you eventually.

Slide asking: how do we build understanding? Pointing to education for inspiration.

OK, so fine, understanding matters.

But this raises the next question: how? How do we build this human understanding when we're working with AI and moving fast?

Well, turns out this is not the first time anyone has ever thought about how to communicate understanding. I think we can look to education as an inspiration. Can we steal the best ideas ever invented for education and apply them to this problem?

Technique 1: Explanations

Slide listing three techniques, with 'explanations' highlighted.

Today I want to share three techniques that show how we can attempt this.

First: explanations. What makes a good explanation?

Slide showing a raw code diff.

Whenever an agent finishes some work, it's an opportunity for an explanation — an artifact.

Most naively, we can read a code diff: the raw material that changed.

Slide asking: what would the best explanation be?

But what if we ask:

What would the best explanation be? If you had a team — human or AI — that really sweat the details of explaining something well to you, how would that feel?

Screenshot of a code explainer doc produced by the /explain-diff skill.

Here's one answer. I made a skill called /explain-diff, which I use every day and many coworkers have found valuable.

It outputs thoughtfully structured code explainers as HTML, markdown, or Notion docs. Notion is a good place for collaborating on and discussing these explainers as a team. (Disclaimer: I work at Notion so I'm biased.)

Let's see what's in one of these explainers, using an example of editing the perspective of a video game.

Explainer section teaching background info about the game engine.

First principle: teach me background info!

Before we even get to what changed, help me understand what was already there. In this case, teach me about the game engine.

Explainer section stating the goal of the change and explaining isometric projection.

Second principle: intuition before details.

Before any code, it states the goal — “make the garden feel three-dimensional with 2D drawing tricks” — and explains related concepts, like what isometric projection is.

All of this builds my intuition for the essence of the change. It's catching me up as the human so I can be an equal participant in understanding.

You can also build intuition with interactive figures.

Here I'm understanding the isometric perspective by dragging rocks around the garden and watching their coordinates move.

(This is using a new feature Notion just shipped: you can now embed interactive HTML inside pages.)

Slide contrasting a raw diff with a literate diff structured as prose.

We finally get to the code. But a typical diff is a pile of files edited in alphabetical order with no explanation.

A “literate diff” as I call it is structured as prose — walking through the changes in a sensible order, with surrounding explanation and embedded code snippets. Faster to review than a raw diff.

Photo of a printed code explainer packet at a café.

The end result of all of this is a nice explainer packet. I still read the code diff but I always read this first.

Sometimes I'll print these out and take them to the café — less distracting.

It's beautifully ironic: AI turns an interactive activity into a static paper report I can focus on deeply :)

Slide quoting Andy Matuschak: books don't work. Screenshot of Quantum Country.

There's only one problem: reading is hard work 😅

As Andy Matuschak says: “books don't work”! It's too easy to fool yourself into thinking you did the reading when you really didn't retain or understand.

How do we fix this? I took inspiration from Andy and Michael Nielsen's work on embedding spaced repetition quizzes in essays.

I do something similar with my code explainers now. At the bottom of an explainer there's an interactive quiz — five questions about the change — and I try to answer them.

My rule: I won't send code to others until I can pass the quiz, and I do the same when reviewing others' code.

Slide describing the quiz as a speed regulator on the AI loop.

A quiz is a speed regulator. Working with AI, it's easy for the loop to run faster than the speed of human understanding.

The quiz is a counterbalancing force: I mechanically ask “do I actually understand?” so that I can remain a full creative participant.

QR code linking to the /explain-diff skill.

OK, so that's explain-diff. Here's the skill if you want it: two variants that output either HTML or a Notion page.

Technique 2: Micro-worlds

Slide introducing micro-worlds, with a photo of Seymour Papert.

Next idea: micro-worlds. This one's inspired by the visionary educator Seymour Papert.

Slide about Papert's idea of living in Mathland.

Papert had this beautiful idea he called living in Mathland: if you want to learn math, live in Mathland — just like if you want to learn French, you go live in France. Could we build an environment where children learn math naturally, as a consequence of their curiosity?

So how do we apply that to code? Can we make worlds you inhabit and naturally intuit how the system works and how it's changing?

Last year I was coding a Prolog interpreter and struggling to intuit what was happening inside.

I worked with an agent to build this debugger, which let me step through the execution of my logic language — scrub through time, see what's on the stack and which rules are evaluated at each step. I could even leave comments for myself (“nice, we correctly applied that rule”).

There's a big difference between making a tool for me to debug and letting the agent debug — doing it myself is how I develop understanding along the way.

Another example. I was migrating my personal website from one framework to another, and Claude wrote a script that did it. But it was very hard to review: I wasn't familiar with the new framework, and all I could say was “I guess that looks about right.”

So I asked Claude to make me a video game — a command center where I do the port myself, step by step, watching the visible effects and the file tree evolve. It produced a UI where I click buttons to run the port step by step, with my old site and new site running side by side.

In this command center I watched the new site come to life incrementally. That left me with a similar understanding to doing it by hand — but much faster, because the whole experience was laid out for me.

Slide reading: agents can write code to help us understand code!

The point here is that agents can write bits of code that help us humans understand other code.

This is a big deal!

Technique 3: Shared spaces

Slide introducing shared spaces: understanding together as a team.

Alright, last technique: shared spaces. So far this has all been about understanding solo… but when you're working on a team, you need to understand together.

Slide about shared mental models enabling efficient communication.

When you and someone else hold the same mental model, you can communicate efficiently. You have a shared vocabulary that evokes the same images, so you can jam and riff and have creative conversations. Without those shared structures, those conversations are much harder.

I'm really excited about creating shared environments where teams build that understanding together. It's kinda what Notion is all about too.

Screenshot of Claude and Cursor agents running inside Notion.

Recently in Notion we've been shipping tons of new features for humans and agents to work together, so your whole team develops a shared understanding instead of each working in a silo.

One tiny example: you can now run Claude and Cursor agents in Notion. I do a lot of my coding that way now.

And when those agents make a technical plan in Notion, it's in a collaborative page by default, so I can comment on it with my team and discuss immediately. Thinking together, not alone!

The point was always to augment

Slide: it's still important for humans to understand how things work.

Alright, let's wrap up. Today we've covered some techniques that were about understanding code… but actually I think this is a much bigger issue.

It's still important for humans to understand how things work in general! Not just to verify, but to participate.

And surprise surprise, this is not a new idea. It harkens back to the very origins of our field of computing…

Alan Kay's vision: kids learning physics by playing and editing an interactive simulation.

50 years ago Alan Kay envisioned that computers could be a new medium, better than the book, for teaching people — especially kids — how to think about the world.

In this picture, it might look like these kids are watching YouTube on an iPad, but they're not. They're playing an interactive game and editing the code as they play it to get a better understanding of physics. This was 50 years ago!!

Astronaut meme: wait, the point of computers is to create new dynamic simulations to help people understand complex concepts? Always has been.

And now hopefully you understand this meme.

The point was always to augment, not just automate.

It's beautiful that AI now makes creating simulations so accessible… Having AI teach us is one of the greatest possibilities computing has ever opened up.

Closing slide: we can get deeper in the loop. It's up to us.

This makes me very optimistic about the future!

If we build the right tools, we can now understand the world better than we ever could before. We don't have to merely take ourselves out of the loop, we can get deeper in the loop too. It's up to us.

FIN

Related reads

If you enjoyed this talk, you might like these other posts I've written about human-AI collaboration:

Code like a surgeon

2025-10-24 22:59:00

A lot of people say AI will make us all “managers” or “editors”…but I think this is a dangerously incomplete view!

Personally, I’m trying to code like a surgeon.

A surgeon isn’t a manager, they do the actual work! But their skills and time are highly leveraged with a support team that handles prep, secondary tasks, admin. The surgeon focuses on the important stuff they are uniquely good at.

My current goal with AI coding tools is to spend 100% of my time doing stuff that matters. (As a UI prototyper, that mostly means tinkering with design concepts.)

It turns out there are a LOT of secondary tasks which AI agents are now good enough to help out with. Some things I’m finding useful to hand off these days:

  • Before attempting a big task, write a guide to relevant areas of the codebase
  • Spike out an attempt at a big change. Often I won’t use the result but I’ll review it as a sketch of where to go
  • Fix typescript errors or bugs which have a clear specification
  • Write documentation about what I’m building

I often find it useful to run these secondary tasks async in the background – while I’m eating lunch, or even literally overnight!

When I sit down for a work session, I want to feel like a surgeon walking into a prepped operating room. Everything is ready for me to do what I’m good at.

Mind the autonomy slider

Notably, there is a huge difference between how I use AI for primary vs secondary tasks.

For the core design prototyping work, I still do a lot of coding by hand, and when I do use AI, I’m more careful and in the details. I need fast feedback loops and good visibility. (eg, I like Cursor tab-complete here)

Whereas for secondary tasks, I’m much much looser with it, happy to let an agent churn for hours in the background. The ability to get the job done eventually is the most important thing; speed and visibility matter less. Claude Code has been my go-to for long unsupervised sessions but Codex CLI is becoming a strong contender there too, possibly my new favorite.

These are very different work patterns! Reminds me of Andrej Karpathy’s “autonomy slider” concept. It’s dangerous to conflate different parts of the autonomy spectrum – the tools and mindset that are needed vary quite a lot.

Your agent doesn’t need a career trajectory

The “software surgeon” concept is a very old idea – Fred Brooks attributes it to Harlan Mills in his 1975 classic “The Mythical Man-Month”. He talks about a “chief programmer” who is supported by various staff including a “copilot” and various administrators. Of course, at the time, the idea was to have humans be in these support roles.

OK, so there is a super obvious angle here, that “AI has now made this approach economically viable where it wasn’t before”, yes yes… but I am also noticing a more subtle thing at play, something to do with status hierarchies.

A lot of the “secondary” tasks are “grunt work”, not the most intellectually fulfilling or creative part of the work. I have a strong preference for teams where everyone shares the grunt work; I hate the idea of giving all the grunt work to some lower-status members of the team. Yes, junior members will often have more grunt work, but they should also be given many interesting tasks to help them grow.

With AI this concern completely disappears! Now I can happily delegate pure grunt work. And the 24/7 availability is a big deal. I would never call a human intern at 11pm and tell them to have a research report on some code ready by 7am… but here I am, commanding my agent to do just that!

Notion is for surgeons?

Finally I’ll mention a couple thoughts on how this approach to work intersects with my employer, Notion.

First, as an employee, I find it incredibly valuable right now to work at a place that is bullish on AI coding tools. Having support for heavy use of AI coding tools, and a codebase that’s well setup for it, is enabling serious productivity gains for me – especially as a newcomer to a big codebase.

Secondly, as a product – in a sense I would say we are trying to bring this way of working to a broader group of knowledge workers beyond programmers. When I think about how that will play out, I like the mental model of enabling everyone to “work like a surgeon”.

The goal isn’t to delegate your core work, it’s to identify and delegate the secondary grunt work tasks, so you can focus on the main thing that matters.


Related reads

If you liked this perspective, you might enjoy reading these other posts I’ve written about the nature of human-AI collaboration:

AI as teleportation

2025-09-11 03:40:00

Here’s a thought experiment for pondering the effects AI might have on society: What if we invented teleportation?

A bit odd, I know, but bear with me…


The year is 2035. The Auto Go Instant (AGI) teleporter has been invented. You can now go anywhere… instantly!

At first the tech is expensive and unreliable. Critics laugh. “Hah, look at these stupid billionaires who can’t spend a minute of their time moving around like the rest of us. And 5% of the time they end up in the wrong place, LOL”

But soon things get cheaper and better. The tech hits mass market.

There are huge benefits. Global commerce is supercharged. Instead of commuting, people can spend more time with family and friends. Pollution is way down. The AGI company runs a sweet commercial of people teleporting to see their parents one last time before they die.

At the same time, some weird things start happening.

The landscape starts reconfiguring around the new reality. Families move to remote cabins, just seconds away from urban amenities. The summit of Mt. Everest becomes crowded with influencers. (It turns out that if you stay just a few seconds, you can take a quick selfie without needing an oxygen mask!)

Physical health takes a hit for many people. It’s harder to justify walking or biking when you could just be there now.

In-between moments disappear. One moment you’re at work, the next you’re at your dinner table at home. No more time to reset or prepare for a new context.

But the biggest change is the loss of serendipity. When you teleport, you decide in advance where you’re headed. You never run into an old friend on the street, or stop at a farmstand by the side of the road, or see a store you might want to stop into someday.

To modern teenagers, the idea of wandering out without an exact destination in mind becomes unthinkable. You start with the GPS coordinates, and then you just… go.

Advocates of the new way point out that there’s nothing stopping anyone from choosing traditional methods for fun. And indeed, the cross-country road trip does see a mild resurgence as a hipster thing.

But when push comes to shove, most people struggle to make the time for wandering—our schedules are now arranged around an assumption of instant transport.

This isn’t exactly to say that the old way was better. Most people can agree that teleportation a net win. Yet for those who remember, there’s a vague unease, a sense that something important was lost in the world….


In his book Technology and the Character of Everyday Life, the philosopher Albert Borgmann talks about wooden stoves in houses.

What is a stove? Yes, it warms the house… but it’s also so much more than that. You gotta cut the wood, you gotta start the fire in the morning…

“A stove used to furnish more than mere warmth. It was a focus, a hearth, a place that gathered the work and leisure of a family and gave the house of a center.”

When you switch to a modern central heating system, you cut out all these inconveniences. Fantastic!

Oh, and by the way, your family social life is totally different….. wait what?? Yes, the inconveniences were inconvenient. But they were also holding up something in your life and culture, and now they’re suddenly gone.

I think of this as kind of a Chesteron’s fence on hard mode. Yes, the stove was put there for warmth, that was the main goal. But you should also think hard about its secondary effects before replacing it.


OK so… how does this apply to AI?

I’m personally excited about AI and think it can improve our lives in a lot of ways. But at the same time I’m trying to be mindful of secondary effects and unintended consequences.

Here’s one example. If your mental model of reading is “transmit facts into my head”, then reading an AI summary of something might seem like a more efficient way to get that task done.

But if your mental model of reading is “spend time marinating in a world of ideas”, then reducing the time spent reading doesn’t help you much.

The point was the journey you underwent while reading, and you replaced it with teleportation.

Another example. One of the great joys of my life is having nerdy friends explain things to me. Now I can get explanations from AI with less friction, anytime, anywhere, with endless follow-up.

Even if the AI explanations are “better”, there’s a social cost. I can try to mindfully nudge myself to still ask people questions, but now it requires more effort.

Final example: I’m trying to be mindful of the effects of vibe coding when designing software interfaces. On the one hand, it can really speed up my iteration loop and help me explore more ideas.

But at the same time, part of my design process is sitting with the details of the thing and uncovering it as I go—more a muscle memory process than a conscious plan. Messing with this process can change the results in ways that are hard to predict!

I guess the throughline for all of these examples is: sometimes the friction and inconvenience is where the good stuff happens. Gotta be very careful removing it.


The takeaway here isn’t that “AI is bad”. I’ll just say that I’m personally trying to be mindful about keeping good friction around.

During COVID, we kinda got teleportation via Zoom for a while. I decided to “virtual commute” every day, walking around the block to get some fresh air and a reset before/after work. This wasn’t a big deal but I found it really helpful.

As AI makes a lot of things easier, it’ll be interesting to ponder what kinds of new frictions we’ll want to intentionally add to our lives. Teleportation isn’t always the best answer…

Enough AI copilots! We need AI HUDs

2025-07-28 04:50:00

In my opinion, one of the best critiques of modern AI design comes from a 1992 talk by the researcher Mark Weiser where he ranted against “copilot” as a metaphor for AI.

This was 33 years ago, but it’s still incredibly relevant for anyone designing with AI.

Weiser’s rant

Weiser was speaking at an MIT Media Lab event on “interface agents”. They were grappling with many of the same issues we’re discussing in 2025: how to make a personal assistant that automates tasks for you and knows your full context. They even had a human “butler” on stage representing an AI agent.

Everyone was super excited about this… except Weiser. He was opposed to the whole idea of agents! He gave this example: how should a computer help you fly a plane and avoid collisions?

The agentic option is a “copilot” — a virtual human who you talk with to get help flying the plane. If you’re about to run into another plane it might yell at you “collision, go right and down!”

Weiser offered a different option: design the cockpit so that the human pilot is naturally aware of their surroundings. In his words: “You’ll no more run into another airplane than you would try to walk through a wall.”

Weiser’s goal was an “invisible computer"—not an assistant that grabs your attention, but a computer that fades into the background and becomes "an extension of [your] body”.

Weiser’s 1992 slide on airplane interfaces

HUDs

There’s a tool in modern planes that I think nicely illustrates Weiser’s philosophy: the Head-Up Display (HUD), which overlays flight info like the horizon and altitude on a transparent display directly in the pilot’s field of view.

A HUD feels completely different from a copilot! You don’t talk to it. It’s literally part invisible—you just become naturally aware of more things, as if you had magic eyes.

Designing HUDs

OK enough analogies. What might a HUD feel like in modern software design?

One familiar example is spellcheck. Think about it: spellcheck isn’t designed as a “virtual collaborator” talking to you about your spelling. It just instantly adds red squigglies when you misspell something! You now have a new sense you didn’t have before. It’s a HUD.

(This example comes from Jeffrey Heer’s excellent Agency plus Automation paper. We may not consider spellcheck an AI feature today, but it’s still a fuzzy algorithm under the hood.)

Spellcheck makes you aware of misspelled words without an “assistant” interface.

Here’s another personal example from AI coding. Let’s say you want to fix a bug. The obvious “copilot” way is to open an agent chat and ask it to do the fix.

But there’s another approach I’ve found more powerful at times: use AI to build a custom debugger UI which visualizes the behavior of my program! In one example, I built a hacker-themed debug view of a Prolog interpreter.

With the debugger, I have a HUD! I have new senses, I can see how my program runs. The HUD extends beyond the narrow task of fixing the bug. I can ambiently build up my own understanding, spotting new problems and opportunities.

Both the spellchecker and custom debuggers show that automation / “virtual assistant” isn’t the only possible UI. We can instead use tech to build better HUDs that enhance our human senses.

Tradeoffs

I don’t believe HUDs are universally better than copilots! But I do believe anyone serious about designing for AI should consider non-copilot form factors that more directly extend the human mind.

So when should we use one or the other? I think it’s quite tricky to answer that, but we can try to use the airplane analogy for some intuition:

When pilots just want the plane to fly straight and level, they fully delegate that task to an autopilot, which is close to a “virtual copilot”. But if the plane just hit a flock of birds and needs to land in the Hudson, the pilot is going to take manual control, and we better hope they have great instruments that help them understand the situation.

In other words: routine predictable work might make sense to delegate to a virtual copilot / assistant. But when you’re shooting for extraordinary outcomes, perhaps the best bet is to equip human experts with new superpowers.


Further reading

Is chat a good UI for AI? A Socratic dialogue

2025-06-29 22:17:00

The pupil was confused. Some people on Design Twitter said that chat isn’t a good UI for AI… but then chat seemed to be winning in many products? He climbed Mount GPT to consult a wizard…

🐣: please wizard tell me once and for all. is chat a good UI for AI?

🧙: well, aren’t we chatting now?

🐣: …?

🧙: should this conversation be a traditional GUI?

🐣: no, it could never be!

🧙: why not?

🐣: uh… you can’t click buttons and drag sliders to ask open-ended questions like this?

🧙: precisely! chat is marvelous, done.

🐣: dude seriously? i came all the way here for that?

🧙: yep. i’ll tell you the best route down the mountain. straight 1000 ft, left 50 degrees, straight 2 miles—

🐣: hold on hold on. do you have a map handy?

🧙: aha! here’s a map i had in my pocket. is this a GUI?

🐣: well, this map is just a piece of paper, so no?

🧙: ok, what is a paper map?

🐣: uh… a better way to see the world?

🧙: indeed! for certain things, a map is the way to see. for other things, a diagram, a chart, a table. this is the first precept:

Text is not the universal information visualization.

🐣: ok fine. but info viz can fit into a chat can’t it? like, if i ask Siri or ChatGPT for the weather, they’ll show me a little weather card…but it’s still basically chat

🧙: where do you live on this map?

🐣: right th–

🧙: hands in your pockets!

🐣: ?

🧙: no pointing. tell me where you live

🐣: ….well, see how there’s a little lake up by the top left? no not that lake… a bit to the right.. no no next one over–

🧙: hahaha

🐣: … ok fine i get your point! this sucks.

🧙: indeed! pointing is great. for referring to things, for precisely cropping an image in the right spot…

🐣: ok fine. but if we talk while you show me the map and i point at it, that still feels like a chat? we’re layering on information visualization and precision input, but natural language is still doing the heavy lifting?

🧙: (points at a rock, then at the ground) put that there.

🐣: huh?

🧙: put that there!

🐣: (moves the rock) ok, what was that about?

🧙: As you say, we needed our fingers and our voices both. This leads to a second precept:

Natural language and precision inputs are complementary.

btw want a compass?

🐣: yeah that’ll actually be helpful on the way down.

🧙: cool, i can give you a regular compass, or Mr. Magnetic, a magical fairy who can tell you which way you’re pointed.

🐣: i’ll take the regular compass? I did Boy Scouts so I know how to read it, it just becomes part of me in a sense. i definitely don’t need to have a whole damn conversation every time.

🧙: ah yes, you see it. the compass pairs information visualization and precision inputs with a low-latency feedback loop, becoming an extension of your mind. this is one of our great powers as humans—to shoot an arrow or swing a club.

🐣: ok that’s cool. but dude i’ve been here a while and i feel like we haven’t even really talked about GUIs!

🧙: you’re right, time for dinner. let’s order a pizza

🐣: …

🧙: can you order one?

🐣: fine. I’ll see if UberEats delivers up here.

🧙: why not call the restaurant?

🐣: are you kidding me? i’m not a boomer.

🧙: is UberEats a GUI?

🐣: yes?

🧙: does it work well?

🐣: yeah it’s fine! gets the job done.

🧙: why not chat over the phone instead?

🐣: well, ordering food is the same thing every time! even when you talk to the person you’re both just following a script, really. the app just makes it faster to follow that script.

🧙: indeed! this is our third precept:

Graphical interfaces can make repeated workflows nicer.

🐣: ok i get it. but idk man, i feel like this is all kinda obvious and we haven’t hit the heart of the matter? yes chat is better for open-ended workflows, and GUIs can be better when the task is repeated. but how do they relate?

🧙: hey i host seminars up here every week and it’s kinda tedious. could you show me the button in UberEats where I can enter the estimated attendance and then it orders the right number of pizzas?

🐣: umm that’s not a thing?

🧙: why not? i want it.

🐣: uhh, this is UberEats, not a seminar organizer app?

🧙: oh right good point! in that case let’s add a button on the calendar invite i can press which will order the pizzas.

🐣: dude what do you mean? the calendar app is just a calendar app, not a seminar organizer. you can’t just change your software like this.

🧙: hm, what are my options then?

🐣: ooh i have an idea! have you heard of MCP? if we just install the right servers then you can program a seminar planner agent in Claude to do this every week for you.

🧙: sounds fine for the first few times while i’m figuring it out. but–is planning a seminar not a repeated workflow?

🐣: … yes, i think it is?

🧙: did we not say that GUIs can speed up repeated workflows? why do i need to stay in chat for this? also btw, i want my assistant to help out with this, and an app would help them know what to do.

🐣: i mean, i’m not sure there’s a good app for seminar planning that does what you want. lemme search on the app st–

🧙: wait! a GUI that someone else made will not fit my seminar planning needs. i need my own preferred workflow to be the one that is encoded in the tool.

🐣: ohh i see! this actually might not be that much work, have you heard of vibe coding? i’ll open up Claude Artifacts and get cookin.

🧙: thanks, lemme know when you’ve added the seminar pizza feature to UberEats!

🐣: oh well, I was thinking it’s not gonna be added to uber eats exactly – i’m gonna make a new web app that does all this.

🧙: why? UberEats already has great UI for the checkout flow, I just need one little feature added.

🐣: i mean i see your point, but you can’t really add your own features to UberEats? you don’t control it.

🧙: haven’t they heard of vibe coding over there?

🐣: dude that’s not how software works. sure everyone can code now but that doesn’t mean you can just edit any app.

🧙: why not?

🐣: er… it sounds kinda messy? and i guess all of this app stuff was invented before AI came along anyway?

🧙: when you paint a wall do you need to ask permission of the company that made the wall?

🐣: … hm. when you put it that way… i see what you’re getting at. if all the GUIs you already use could be edited, then you wouldn’t need to resort to chat as much to fill in the seams. instead you could just change the GUIs to do what you want!

🧙: aha! yes, now you see. if the UI is fixed, then it cannot respond to my needs. but if it is malleable, then I can evolve it over time. This is the fourth and final precept for today:

A malleable UI pairs the ergonomics of GUIs with the open-ended flexibility of chat.

🐣: neat. this seems hard though, wouldn’t we need to rethink how the App Store works?

🧙: indeed. and that is a longer conversation for another time.


Note from the editor: to keep exploring, read this.

Malleable software: Restoring user agency in a world of locked-down apps

2025-06-15 20:00:00

Redirecting…

This essay lives at Ink & Switch.