Frameworks and libraries are like layers,
and these layers accrete.
Every layer has a vector of intention,
pointing toward some idealized value to users,
determined by the author of the layer.
or the difference
between the vectors of intention of two adjacent layers,
always comes at a cost.
Opinion costs compound
and are, directly or indirectly,
shouldered by users.
If you want to do something terrible with technology, you can’t just roll it out on people with money and social capital. They’ll complain and your idea will tank. Successful shitty tech rollouts start with people you can abuse with impunity (prisoners, kids, migrants, etc) and then work their way up the privilege gradient. I call it the Shitty Technology Adoption Curve.
The point of the Shitty Technology Adoption Curve is to normalize technological oppression, one group at a time. 20 years ago, if you were eating your dinner under the unblinking eye of a video-camera, it was because you were in a supermax prison. Now, thanks to “luxury surveillance”, you can get the same experience in your middle-class home with your Google, Apple or Amazon "smart" camera. Those cameras climbed the curve, going from prisons to schools to workplaces to homes.
I believe it’s best explained by looking at the stakes attached to metrics, and more generally the culture around what these numbers represent.
When metrics are low stakes, when they stay inside the team, they are beneficial. They are instituted, monitored, and acted upon by the people that are subject to them. This is the Diagnostic or Improvement Paradigm.
On the other side, where stakes for the metrics are high, there is the Accountability Paradigm. Here, measures and metrics are not necessarily for improvement or finding issues, they are for making sure that people do what they are supposed to. The fundamental purpose of capturing the numbers is for accountability, and “transparency”.
I love typescript as an end-developer. I feel like it dramatically reduces the need to manually write automated tests. It cannot be overstated how much work is involved with writing and maintaining good automated tests so anything that can reduce its utility is a huge boon to productivity.
However, as a library developer, I hate typescript. There are a lot of reasons why typescript sucks for library developers, but at the end of the day it reduces developer productivity. In effect, we are shifting complexity from end-developers to library developers. This places a huge burden on us to be experts with how typescript works.
The deepest opacity of deep learning doesn’t lie in the billion parameters of the latest models but in the way it obfuscates the inseparability of the observer and the observed, and the fact that we all co-constitute each other in some important sense. The only coherent response to social crisis is, and always has been, mutual aid. If the toxic payload of unconstrained machine learning is the state of exception, its inversion is an apparatus that enacts solidarity.
This isn’t a simple choice but a path of struggle, especially as none of the liberal mechanisms of regulation and reform will support it. Nevertheless, our ambition must stretch beyond the timid idea of AI governance, which accepts a priori what we’re already being subjected to, and instead look to create a transformative technical practice that supports the common good.
We have our own histories to draw on, after all. While neural networks claim a generalizability across problem domains, we inherit a generalized refusal of domination across lines of class, race, and gender. The question is how to assemble this in relation to AI, how to self-constitute in workers’ councils and people’s assemblies in ways that interrupt the iteration of oppression with the recomposition of collective subjects. Our very survival depends on our ability to reconfigure tech as something that adapts to crisis by devolving power to those on the ground closest to the problem. We already have all the computing we need. What remains is how to transform it into a machinery of the commons.
The Fact Finding meeting is when an executive is trying to dig into something, usually a big opportunity or a big screw up, and they want to understand your perspective. There may be significant conflict with an organization. There may be a project that’s once again slipped by two months. There may be a recurring source of production incidents. Whatever it is, the executive has decided to get to the bottom of it.
In these meetings your most obvious goal is to answer the questions you get. You have two more subtle goals as well. First, you should try to fix their mental model if it’s leading them astray. For example, they might view a team you work with as underperforming, unaware that another team has consistently blocked their progress by changing the deliverable shortly before release.
Second, you should avoid unnecessarily inserting yourself into whatever problem they’re trying to debug. You may be asked to render judgment on peers, coworkers, a technology problem or whatever, and share your honest opinion, but don’t manufacture an opinion to share. Also try to be kind: my rule in this situations is to always assume what I say will be inadvertently shared with the person who it’s about.
The goose’s disobedience and disruption of production in the village takes on fresh meaning when we compare Untitled Goose Game to other cottagecore games that aim for a sense of nostalgia for simpler times. Animal Crossing and Stardew Valley soothe the player with their dreamy rural settings and the encouragement of mindful farming, earning, and levelling up. Animal Crossing: New Horizons in particular has been billed as therapeutic, and whilst its low-pressure agricultural tasks and gentle progression — earning bells, unlocking new crops and items — are no doubt a soothing fantasy to play out, I get more satisfaction from intercepting agricultural production in Untitled Goose Game, pinching the poor groundskeeper’s carrots and clumsily rolling his pumpkins down to the riverside for my “picnic”. Disrupting order can be just as delicious as maintaining it, especially when the order in question consists of repetition and aesthetic properness. It soon becomes clear in any iteration of the Animal Crossing games that the labour of the player directly benefits the business expansion of Tom Nook, a tanuki-inspired entrepreneur who, despite his painstaking politeness,is always slightly coercive with his tone and emotes, reminding you about rent, trying to sell you something new, or expressing disappointment that you haven’t engaged with a certain aspect of gameplay. Whatever fabulous opportunity Tom Nook offers the player, we never lose the sense that he will benefit more from it than they do, and the game creators acknowledge his capitalist motives to comedic effect — one image for the in-game purchase of leaf tickets in Animal Crossing: Pocket Camp depicts him luxuriating in a bathtub full of the currency. Nook is a fun character, but it has a slight numbing effect realising that every move you make in developing your island, farm, or home is ultimately never an expression of pure creative freedom — it is always inherently tied to the financial ascent of that smug tanuki. It’s frustrating knowing you are following his orders, all his prompts and prods to keep you on your toes. Untitled Goose Game is a welcome deviation when the leafy aesthetics and gentle soundtracks of such games usually cloak a more typical narrative of personal levelling-up. It’s similar to how we struggle to embrace real-world mindfulness concepts like wild swimming and forest bathing without turning them into sellable coffee-table books, curated experiences and sponsored content. Lewis Gordon examines this in a piece for The Nation: “In keeping with Animal Crossing’s founding principles, New Horizons is capable of quiet, welcomingly pointless moments — like when I left my avatar to sleep while rain gently tapped its window — but for the most part, it’s been subsumed within a modern mentality of optimisation”. The urge to tether even the experience of rural glow to optimisation plots new boundaries in our instincts, leaving us struggling to navigate a meadow without purpose: capturing or monetising the experience, or banking it as a mental health level-up. Our ability to roam free of guilt and open to wonder is restricted psychologically and emotionally as well as by land boundary. Untitled Goose Game meanwhile parodies the commodification of optimisation: the goose’s to-do list is written in delicate cursive and each time you complete a task — “Make the old man fall on his bum”, for instance — it is crossed off the list. Optimisation for the goose is not the perfect pruning of a tree, but destroying the power imbalance between itself and the higher-ups.
I don’t think it’s possible to be a master in something without being absolutely aware of its shortcomings. Every tool, process, anything has its flaws, something that makes it unsuitable for certain purposes. And not in a fixable way, like “oh it kinda sucks for this but we can make it work with a little practice”. I’m talking an existential unsuitability, the kind that cannot be fixed without fundamentally changing what you’re doing.
That’s what bothers me about so much agile advocacy. There doesn’t seem to be a sense of the cases where Agile practices get in the way, or where managers need more power, or anything. Sometimes you hear “safety-critical systems”, but that’s dodging the question: it’s not asking what fundamentally are the limitations of Agile, it’s just picking a domain that’s obviously pathological to everything and going “well if you’re DOING THAT…” Praising with faint damnation.
I’d trust Agile evangelists more if they had a clear sense of what the drawbacks were. I don’t know what they are, because I’m not an Agile expert, but they must exist, right? I went to an Agile talk where I asked “when does this break down”, and the presenter responded with “what, like people are having too much fun?” That’s an immediate red flag to me.
Whenever people points out a limitation in a specific type system, someone will inevitably shout “but this OTHER type system can do that!” They’re taking the union of all the best parts of all type systems and intersecting the worst parts of them all. In reality, you choose a language and you get it’s type system. OCaml having a module system doesn’t help me if I’m writing Haskell.
I think this is a lot of the draw of people working in non-static languages: they need to do several different things, each of which rules out a specific language.