The hidden world principle: why great software reveals itself slowly

There’s a moment in The Legend of Zelda: The Wind Waker that fundamentally changes how you see the game world. You’ve spent dozens of hours sailing between islands, comfortable with the rhythm of ocean exploration. The world feels complete—a vast blue expanse dotted with discoveries. Then you dive beneath the waves for the first time and find Hyrule Castle, perfectly preserved in an air bubble at the bottom of the sea. Suddenly you realize you’ve been sailing over an entire civilization. The ocean wasn’t the world—it was just the surface. ...

January 27, 2025

Beware of turducken projects

I’ve been thinking about a particular flavor of technical disaster that keeps cropping up in software companies. I call them “turducken projects” - those unfortunate mashups where you try to maintain two different solutions to the same problem, usually for political rather than technical reasons. Like the absurd holiday dish they’re named after, these projects seem impressive at first glance. “We’ll support both approaches!” sounds inclusive and customer-friendly. In reality, you end up with something that makes everything involved worse. ...

December 27, 2024

The physics hidden in your codebase

Evolution has a weird obsession with crabs. At least five separate times, nature has taken some random crustacean and said “you know what would work better? A crab.” But it’s not just crabs - evolution keeps reinventing the same solutions everywhere. Trees evolved independently more than 40 times. Eyes appeared in dozens of unrelated lineages, with vastly different abilities. Flight emerged in insects, pterosaurs, birds, and bats, each indipendently. These aren’t coincidences. They’re proof that good design is inevitable. ...

December 27, 2024

When technology gets boring, innovation begins

I was debugging a power issue with my home automation setup last week when it hit me: I had no idea how many batteries were in my house. Not approximately. Not even close. Twenty years ago, I knew exactly where every battery lived—the TV remote, the kitchen clock, maybe a flashlight. Today? They’re everywhere and nowhere. In sensors, in remotes, in devices I’ve forgotten I own. They’ve crossed the threshold from technology to invisible infrastructure. ...

December 27, 2024

After the prompt: how AI disappears into everything

I’ve been thinking about the current AI moment, and I can’t shake the feeling that we’re about to hit a wall. Not a failure wall, more like the wall Web 1.0 hit right before everything changed. Remember when every startup was “webr.com” and the height of innovation was animated GIFs? We’re in the AI equivalent of that era right now. Just as Web 2.0 wasn’t really about AJAX or rounded corners, AI 2.0 won’t be about better chatbots. We’re about to witness a fundamental shift in how AI gets built, deployed, and integrated into our daily tools. And honestly? It can’t come soon enough. ...

December 24, 2024

Thinking in diagrams; a developers guide to learning to love drawing design

I find that software developers struggle to sketch diagrams of their software. They get lost in the specifics of diagraming techniques, in choosing from the many available tools, or in the futility of drawing diagrams at all. I understand their pain, as there are many standards for diagrams and many (often obtuse) tools for drawing with. It’s not very motivating to have a sea of choices, none of which looks particularly appealing. ...

April 14, 2015

The road to and from and (hopefully) back to simplicity

I wrote my first computer program when I was 8. It was a simple adventure game written in BASIC, a mess of GOTO and PRINT statements. I saved it to tape a few times, proud enough of my first creation that I didn’t want to lose it. And despite what I didn’t understand my mind exploded with ideas. I continued to write games and curios into my early teens. I wrote text adventures and arcade ripoffs. I hacked at biometric data collection using a busted set of paddles and mixed mode graphics. I designed and built a large (but clunky) side scrolling adventure game using only a set of customized fonts. I plagiarized code from magazines and hacked at my machine until the wee hours of the night. ...

May 2, 2014

Summer design fragments

I’ve been busy working on visual design bits for work projects this summer. My method is simple: Sketches and storyboards Static mockups (HTML/CSS, some Javascript) Live mockups (to test integration and interactions) Uncovering what a feature means is fundamental to the method. It exposes the nouns and verbs of the problem, and hints at the useful metaphors. The freeform nature of sketching and developing storyboards based on this language helps me focus on figuring out what the things mean, as well as finding their shape and rhythm. I end up working on several different approaches before it’s obvious which ones are workable for the client and product. ...

September 30, 2012

The facade of uptime

While writing a spec earlier today the last few years of progress in server land hit me: uptime is a facade. In the early days, server resources were expensive and scarce. Uptime was sacred. Long running hardware was celebrated, UNIX tools were born, beer was consumed. The problem of focusing on the hardware is that it detracts from the time you spend developing software. Remember those late nights configuring RAID setups? What about hunting down faster drives, or terminating SCSI cables? ...

February 10, 2012

On becoming a designer

I’ve become passionate about design. It’s a subtle craft that says something, things that can’t normally be said with words. It suggests things. It implores us to think in a particular way. It encourages us to go here or there. It is enough of a metaphor to be easily recognized, but not so much that it becomes tacky, unless of course tacky is the thing you need. Design is the artful side of craftsmanship, the soul of a thing. ...

June 6, 2011