A pattern for treating unrelated types as if they shared a common interface, without making them inherit from anything. The same trick behind std::function, std::any, and a lot of modern C++ APIs.
Read →
Software Developer at Adobe building Photoshop. Writing about macOS tools, systems programming, and creative software.
A pattern for treating unrelated types as if they shared a common interface, without making them inherit from anything. The same trick behind std::function, std::any, and a lot of modern C++ APIs.
Read →A short look at why naive history implementations corrupt their own past, and how a 50-year-old trick fixes it without paying the cost of copying everything.
Read →Building software has become trivial. The moat has moved. Creative software companies that don't figure out where it went are going to find themselves outflanked by every enterprise that decides to just build their own.
Read →For decades, software was a refuge for people who'd rather talk to a computer than a person. AI just took that conversation away, asking us to find our voices in a room full of humans instead.
Read →The more powerful our tools become, the more they cost us in something we don't measure: the slow, frustrating, essential work of learning.
Read →I've been a Raycast loyalist for years. Then BetterTouchTool 6.493 shipped a full SwiftUI launcher, and in one weekend I rebuilt three plugins that outperformed what I had in Raycast.
Read →