Skip to main content

Posts

Featured

Grocery stores are great abstractions

The purpose of a programming abstraction is to hide complexity. Modules and libraries abstract away complex code; coding languages abstract away complex assembly; assembly abstracts away complex binary operations; binary operations abstract away complex transistor chemistry. A person working at any given layer is, ideally, spared the cognitive load of understanding the complexity of the layers beneath. The quality of an abstraction is measured by how effectively it hides its internal complexity behind a clean interface. Whenever I'm designing software, my aspiration is to abstract as effectively as a grocery store does. To purchase a carrot at a grocery store, you walk in, grab a carrot from the bin, pay at the register, and walk out. You don't need to think about the top-lifting harvester that pulled that carrot from the ground. You don't need to think about the factory that produced that harvester or the mines that supplied its metal. You don't need to think about the...

Latest Posts

AI agents: the most expensive way to check the weather

I yelled at Claude until it built a Unity game

Keep 'em (not) separated: detecting discontinuities in grid graphs

Balancing games while staying (somewhat) sane

Pathfinding to a moving target in evolving terrain