There's a problem in the world which I struggle to capture in words. Whenever I try, it's usually summarised as "the usual communist critique of capitalism". I think it's a different problem.
The problem? Computational Tyranny.
It's a mix of bureaucratic hell, responsibility laundering, over optimisation causing havoc due to Goodheart's law, a computational load we place on people just to navigate the world.
It's "the computer says no" problem, it's the rent fixing via a coordinated algorithmic process rises, it's enshittification of software products.
It's the increased complexity of everyday life, which is asymmetric: disability benefits law can be arbitrarily complicated: government will automate it and largely won't care.
People needing disability benefits? They need to understand the complications. They'll be stuck in corner cases which are mishandled by the software but the complexity will be overwhelming - they won't be able to advocate for themselves.
It's also how adversary using internet feels. Each search result tries to take advantage of me. I'm a relatively young technical person and at times I almost got scammed.
How can rest of the society cope?
And the responsibility laundering. Nobody's responsible for it. It's the incentives, it's "I don't make the calls", it's "if I don't do it, somebody else will".
It's the over optimisation shifting the value from economic transactions from mostly going to consumers to mostly going to corporations. In large part it's due to computational and informational asymmetry.
Computational Tyranny.
It's the best I came up with to describe the phenomenon. I hope once we can name it, we can take the first step in defeating it.
@threadreaderapp unroll
• • •
Missing some Tweet in this thread? You can try to
force a refresh
Ok, you’re all ready. I’m going to teach you the secret staff++ software dev technique for improving your skills and advancing your career.
You need to contemplate the abstract-concrete duality daily (sorry non-dualists)
Let’s learn how:
Any software artefact spans the vast chasm between The Concrete (what is machine actually doing?) and The Abstract (what concept is the code expressing?)
It is both at the same time and these are inseparable. You need to be able to hold both in your head at the same time.
Exercise 1: take any problem (e.g. writing https proxy) and visualise what The Machine has to do to solve the problem.
Not *the code* which will solve the problem. There’s no code. Only bits, high and low voltages, clocks, DRAM cells.
I'm getting increasingly convinced that 95.4% of all software engineering problems are because 1) latency is highs and 2) people code like latency is low.
Let me get through a couple of examples:
Let's start with CPU: the RAM to CPU latency is actually pretty high!
"Pretty high" means roughly that the cost of most memory accesses are dominated by the latency of getting the initial block of bytes, not by the throughput.
Getting a single pointer from memory takes ~14ns of pure DRAM to CPU latency.
Getting 64 pointers from memory takes 14ns for latency and , I'm going to wait ~14ns to get the first word, then transfer rest at 64GB/s -> 8ns extra.