Era 00 · 1801 → 1970s
Before computers,
there were looms.
🧵 Origin Story — This did not start with computers
In 1801, a French weaver named Joseph-Marie Jacquard
wanted to automate his loom — a machine that weaved complex silk patterns.
Hand-weaving a pattern required a master craftsman to manually raise and lower
hundreds of individual threads in exactly the right sequence. One mistake meant a ruined pattern.
Jacquard's solution was revolutionary: he punched holes in stiff cardboard cards.
Each hole told the loom: "raise this thread." No hole meant: "keep it down."
Sound familiar? Hole = 1. No hole = 0.
The loom read the cards automatically, weaving the same perfect pattern every time, with no human error.
Jacquard Loom · 1801 · Hole = thread UP (1), No hole = thread DOWN (0)
Fifty years later, mathematician Charles Babbage saw Jacquard's cards and
had a vision: what if you could use the same idea to control a calculating machine?
His collaborator Ada Lovelace — widely considered the
world's first programmer — wrote the first algorithm designed to be
processed by a machine, describing it in notes longer than the original paper she was translating.
"The Analytical Engine weaves algebraic patterns just as the Jacquard-loom weaves flowers and leaves."
— Ada Lovelace, 1843
To program a computer,
you punched holes in cards.
By the 1940s and 1950s, every major computer used punch cards as its primary
input method. A programmer would sit at a keypunch machine —
essentially a typewriter that punched holes instead of printing ink — and prepare a
deck of cards, one card per line of code.
Each card held 80 columns, each column representing one character.
The position and pattern of holes in that column encoded the character as binary.
A program of 500 lines was a physical stack of 500 cards,
held together with a rubber band, carried carefully to the computer operator,
and fed into a card reader one by one.
Example punch card · "HELLO" encoded as binary holes
↑ Each column = 1 character. Dark holes = 1 (punched through). Light = 0 (solid card).
Drop the deck? Game over. The cards would scatter across the floor —
500 cards with no page numbers, no way to tell which came first.
Programmers quickly learned to draw a diagonal line across the top edge of their sorted deck
so they could re-sort it instantly if it was ever dropped.
Debugging was physical. Programming was manual labor.
The programmer's nightmare — a dropped deck
▌
▌
▌
▌
▌
✖ 437: PRINT RESULT
✖ 003: ADD A, B
✖ 500: LOAD A, 0
✖ 002: ??? ████
Punch cards remained the dominant form of programming input well into the 1970s.
They were only gradually replaced by terminals — screens with keyboards
where you could type and see your code, edit a single character without
re-punching an entire card, and run it instantly.
For programmers of that era, the terminal felt like a miracle.