"Finding the occasional straw of truth awash in a great ocean of confusion and bamboozle requires vigilance, dedication, and courage. But if we don't practice these tough habits of thought, we cannot hope to solve the truly serious problems that face us—and we risk becoming a nation of suckers, a world of suckers, up for grabs by the next charlatan who saunters along.
An extraterrestrial being, newly arrived on Earth—scrutinizing what we mainly present to our children in television, radio, movies, newspapers, magazines, the comics, and many books—might easily conclude that we are intent on teaching them murder, rape, cruelty, superstition, credulity, and consumerism. We keep at it, and through constant repetition many of them finally get it. What kind of society could we create if, instead, we drummed into them science and a sense of hope?"
— Carl Sagan
when software had a soul
there was a moment around 2005 when using a Mac felt like touching something alive.
the dock bounced. the genie effect swooped. exposé scattered your windows like cards on a table. none of it was strictly necessary. all of it felt like someone cared – not about metrics, but about the feeling of using a machine.
software back then had texture. it had a philosophy. you could feel the person behind it. someone made a decision to make that icon beautiful, to animate that transition just so, to write that error message with a little warmth. apps had personalities. some were weird. some were over-designed in ways that would make a modern PM flinch. but they were alive.
the web was the same. personal sites were genuinely personal. blogs felt like letters. forums had regulars. you knew who made what. the internet had neighborhoods, and each one felt different.
nothing was optimized for scale. things were made by people who loved what they were making.
somewhere along the way, we traded all of that for growth.
A/B tests flattened the edges. design systems standardized the personality out. everything got faster, smoother, more consistent – and somehow less interesting. the quirks were removed because they didn't test well. the warmth got cut because it wasn't measurable. we optimized our way into a world of things that work perfectly and feel like nothing.
now every app looks the same. every interface follows the same patterns. every product speaks in the same calm, frictionless voice, siloed in their own little islands. the humanity got rounded off.
and then came AI agents. and the speed got inhuman.
now you can generate an entire product in an afternoon. ship a feature before lunch. spin up ten variations before anyone's had their coffee. the gap from idea to code is basically zero.
which sounds incredible. and it is. but there's a catch.
when making things are too easy, the slop comes for free too. mediocre things don't look obviously bad – they look fine. they work. they ship. they pass review. and now there are infinite of them. the internet is filling up with software that functions but means nothing. interfaces that are correct but feel dead. products made by agents, reviewed by no one, shipped into the void.
this is the thing that keeps me up at night. not that AI will replace people who care. but that it will drown them out.
here's what I still believe: the best things are made by people who couldn't help themselves. someone who lost sleep over an icon. who rewrote the same line of copy twelve times. who added an animation nobody asked for because it made the thing feel right. that obsession – that's not inefficiency. that's the whole point.
AI doesn't make that irrelevant. it actually makes it rarer and more valuable. taste is not a markdown skill. caring is not a parameter. the weird, specific, "soul" thing you put into something – that can't be programmed into existence.
the path forward isn't to make more slop faster. it's to finally give people with real vision the tools to make the thing they always imagined but couldn't build alone. the designer who had the idea but couldn't code. the kid who saw something nobody else saw. the person who cared too much about something most people wouldn't notice.
if we get this right, we don't get a faster factory. we get a renaissance. more strange, personal, opinionated software made by teams of people who care and mean it.
that's still possible. but only if the people who care get the space and tools to actually express themselves – and don't just hand the wheel to the agent and walk away.
My dear front-end developers (and anyone who’s interested in the future of interfaces):
I have crawled through depths of hell to bring you, for the foreseeable years, one of the more important foundational pieces of UI engineering (if not in implementation then certainly at least in concept):
Fast, accurate and comprehensive userland text measurement algorithm in pure TypeScript, usable for laying out entire web pages without CSS, bypassing DOM measurements and reflow
If you use GitHub (especially if you pay for it!!) consider doing this *immediately*
Settings -> Privacy -> Disallow GitHub to train their models on your code.
GitHub opted *everyone* into training. No matter if you pay for the service (like I do). WTH
https://t.co/vcSkhM5yLV
Google's new policy if you want to enable AI features:
"Please do not include sensitive, confidential, or personal information that can be used to identify you or others"
Pretty soon this will be stuffed into the T&Cs of many cloud-based apps, that you agree to implicitly.
One day when I was still very young, I asked my father about his parents. I knew my maternal grandparents intimately, but I wanted to know why I had never met his parents.
“Because they died,” he said wistfully.
“Will you ever see them again?” I asked.
He considered his answer carefully. Finally, he said that there was nothing he would like more in the world than to see his mother and father again, but that he had no reason — and no evidence — to support the idea of an afterlife, so he couldn’t give in to the temptation.
“Why?”
Then he told me, very tenderly, that it can be dangerous to believe things just because you want them to be true. You can get tricked if you don’t question yourself and others, especially people in a position of authority. He told me that anything that’s truly real can stand up to scrutiny.
– Sasha Sagan; Lessons of Immortality and Mortality From My Father Carl Sagan
Talking to your AI glasses is silly, so we built Reality Proxy, a direct manipulation interface that lets you instantly select real-world objects and share context with AI. A step toward JARVIS.
Vibe code is legacy code
@karpathy coined vibe coding as a kind of AI-assisted coding where you "forget that the code even exists"
We already have a phrase for code that nobody understands: legacy code
Legacy code is universally despised, and for good reason. But why? You have the code, right? Can't you figure it out from there?
Wrong. Code that nobody understands is tech debt. It takes a lot of time to understand code enough to debug it, let alone introduce new features without also introducing bugs
Programming is fundamentally theory building, not producing lines of code. This is why we make fun of business people who try to measure developer productivity in lines of code
When you vibe code, you are incurring tech debt as fast as the LLM can spit it out. Which is why vibe coding is perfect for prototypes and throwaway projects: It's only legacy code if you have to maintain it!
I vibe code happily all the time. Most often for small apps that I don't need to maintain. I'm a big fan, have at it!
Vibe coding is on a spectrum of how much you understand the code. The more you understand, the less you are vibing
Simply by being an engineer and asking for a web app with a persistent database, you are already vibing less than than a non-programmer who asks for an "app" without understanding the distinction between a web app and a native app, or how persistent data storage works
The worst possible situation is to have a non-programmer vibe code a large project that they intend to maintain. This would be the equivalent of giving a credit card to a child without first explaining the concept of debt
You'll end up spending a lot of money and getting a large, buggy, legacy code base. If you don't understand the code, your only recourse is to ask AI to fix it for you, which is like paying off credit card debt with another credit card
At Val Town, we built Townie, an AI assistant that agnatically reads & writes code, runs it, views the logs, and keeps iterating until it's done. It's is an awesome tool for vibe coding. I heartily recommend it to folks who understand these tradeoffs. I use it to vibe code sometimes. Other times I keep in on a tight leash as it makes surgical edits to a project I care about
If you know any non-programmers spending thousands of dollars vibe coding their billion dollar app idea today, warn them that vibe coding is not going to get them where they want to go. They're going to have to learn to use their human eyes to read the code 😱, and that sometimes it's easier to start over with building a well-written code base from scratch than to fix a legacy one that nobody understands
In 2017, I was working to change FB News Feed's recommender to use “thick models of value” (per the paper we just released). @finkd even promised he'd make Facebook “Time Well Spent”.
That effort was thwarted by the (1) market dynamics of the attention economy, (2) the US congress’ focus on Cambridge Analytica, and (3) @meta's corporate governance.
The problem was bigger than I'd thought: what we've now termed “full-stack alignment.”
Ever wanted to know how a screen works in excruciating detail? Well, you're in luck.
First chapter of Making Software goes out to the email list on Sunday.
New longform @inkandswitch essay! 📜
Malleable Software
by me, Josh Horowitz, @pvh and Todd Matthews.
https://t.co/3Xhk888Uuh
It's about why people need agency over their software tools, and how to make that happen.
Here's the quick tl;dr... 1/
@andy_matuschak@TheTedNelson@worrydream Should there be *only one* software combining the principles and capacities of Hypercard, Tiddlywiki, DEVONThink/VoodooPad/Evernote/KeepIt, Pocket/Instapaper, Pinboard, a spreadsheet, Smalltalk and Emacs ?
Could this software give satisfaction to the various users' need ?