You're reading this because it is possible to transmit information around the world by making electricity move through melted sand in a particular way.
---
Paul Ford:
A computer is a clock with benefits. They all work the same, doing second-grade math, one step at a time: Tick, take a number and put it in box one. Tick, take another number, put it in box two. Tick, operate (an operation might be addition or subtraction) on those two numbers and put the resulting number in box one. Tick, check if the result is zero, and if it is, go to some other box and follow a new set of instructions.
The near-infinite possibilities of computing come down to little numbers in little boxes getting added to or subtracted from one another.
---
Because of this basic fact, at its heart, software is as rigidly and uncreatively literal as one of Archimedes' levers, pulleys, or wedges, but made out of electricity that moves in mysterious pulses through melted sand.
---
The near-infinite possibilities contained within a human being—let alone humanity itself—are manifestly not the product of little numbers in little boxes being manipulated by basic math.
---
There are two kinds of problems encountered with software. The first is that when software works, mighty labor is involved in making what is essentially a lever, pulley, or wedge communicate meaningfully with a human that skipped breakfast because he was making his infant daughter laugh at him. The second is that when software breaks, it's because at some point, a human skipped breakfast after getting his infant daughter to laugh at him, and then sat down and wrote some code.
---
When you buy software, you're really buying someone's promise that the code he wrote after skipping breakfast to make his infant daughter laugh one more time will reliably, predictably cause the result(s) you're after.
---
When software is broken, the problem is referred to as a bug. That's because a moth once got caught in an old tube-based computer and made the thing stop working.
---
An error message simply means that the command, "[IF A, B, or C happens, THEN produce ERROR message]" worked. That's because software is rigid, literal, and uncreative. When something's wrong, the software doesn't know that. It also doesn't know when anything is right, either. If the power's on, it just goes.
---
A moth's flight is erratic and unpredictable. Software bugs, while appearing to be random and disorderly, are actually predictable and repeatable if you know how to trigger them. They're usually as predictable and repeatable as the parts of the software that are working properly. A bug means that code was successfully executed; it's just that a human wrote code that did something unreliable, undesirable, or unpredictable.
---
We write code and fix bugs in Populi using software that itself has bugs and produces errors. We design Populi around bugs in web browsers, errors in programming languages, and the limitations presented by an extremely literal line of code that must meaningfully communicate with a human who is sleepy from too much breakfast and a night spent comforting an infant daughter with a cold.
---
It's frankly a miracle that anything works at all.