Idiomdrottning’s homepage

Composition Considered Harmful

Since Alan Perlis pointed it out, y’all know by now how Lisp programmers know the value of everything and the cost of nothing. Same goes in society. When things get neatly packaged up behind a comfy interface, a neat case and a button to push, it’s hard to remain aware of the rusty gears and Rube Goldberg yak-shaving mousetraps that happen behind the scenes.

Like, a chicken lays two eggs every three days approximately, so if you eat two eggs per day, that’s three entire chickens that are being kept somewhere just for your sake.

And modern abstraction have become recursive; each of the gears in the machine are in turn pushing more buttons for you, which in turns start their own sets of gears, and one machine suddenly turns into five which turns into twenty which turns into a hundred.

Logistics, resellers, turnkey solutions and suddenly crabs that are caught on one continent get tinned on another and labeled on a third.

Or TV dinners with potatoes from one place fried in oil from another place with peas from a third place and jam from fourth and sauce with ingredients from places five through twelve.

Programmers, you know what I mean here. Abstraction layers on top of other abstraction layers on top of other abstraction layers. A framework to deal with the library to handle the API to handle the service to handle the model to handle the code to handle the OS to handle the machine. And it’s a virtual machine so it in turn needs an OS handled by code handled by a model handled by a service handled by an API handled by a library handled by this nifty framework that finally solves everything for you until it’s grown too complex and we need a build tool, a bundler, a packager, a configuration manager, reproducible docked YAML, and uh, wouldn’t you know it, that’s also pretty tricky so let’s build a new abstraction on top of that. Our tools are so awesome but, uh, we need to make more tools to handle our own tools.

Stephenson didn’t go far enough when he reframed Wells’ “Morlocks & Eloi” analogy to the command line because the Eloi found wrenches and built stuff and a new class of Eloi built more stuff on top of that until you’re in New New New New New York standing on the ruins of Old New New New New York and it’s layers all the way down.

If externalities were accounted for, this would be awesome, like a macro system that actually expands to tight and clean code, but they aren’t. The kind of deliberate composition of abstracted interfaces we’re talking about here is a relatively new idea. Yeah, yeah, Bach and Faust, but that’s still holocene. It’d be such a wonderful tool that can help us think beyond thinking and act beyond acting. It’s only thanks to composition that we can make a program or a device or a system or a code of law or an organization that’s beyond what one person can keep in her head. But the way it’s applied in society leaks resources and wastes pollution because market capitalism is so lossy.

And we’re still beholden to the 40 hour workweek, or at least the working class is. Tech gives us better tools, stronger arms, levers to push other levers to push other levers until we’re like Goethe’s Faust building a highway overnight, but we’ve still got to clock in every day.

So it’s the worst of both worlds. Not only are the levers wrecking the neighborhood and the entire world with every pull, they’re thrust into the same bleeding palms and onto the same broken backs that tilled the Earth at dawn and will harvest helium in space at dusk. When the people are being beaten by a stick, they’re not much happier if it’s called the iStick 12+ SE.

And I know, I know, I know. “It’s fine for you, miss Anti-Life, miss Luddite, miss Butlerian Jihad, miss dumbphone hipster, miss spend a decade on a cushion then hop on IRC thinking you know everything, but the rest of us want to build the world up, not tear it down”. I get it. I know it doesn’t sound like it, but I do. But I just wanna do it right.

I do care about future generations, I just want us to actually get there before it’s all ash and regret.