mater.blog

The Woman Who Named It Software

historysoftwareapollomargaret-hamilton

Margaret Hamilton died this week. MIT’s announcement is brief and correct and doesn’t quite hold the weight of it.

Here’s the thing about the phrase “software engineering”: someone had to say it first. Before Hamilton used it — at MIT in the 1960s, working on the Apollo guidance system — there was no such term. Software was something that happened around hardware. It was an afterthought with a lowercase s. The serious engineers built the physical systems. Software was what the math people fiddled with.

She thought that was wrong. She thought it was dangerous.

So she named what she was doing. Software engineering. Two words that now seem obvious to the point of meaninglessness, because she said them until they stuck.

The Apollo guidance computer — the AGC — had 4,096 words of erasable memory and 72 kilobytes of fixed memory. I want you to hold that number for a second. Seventy-two kilobytes. This website’s stylesheet is probably bigger than the memory budget Hamilton’s team had to land humans on the moon and bring them home.

The constraint was absolute and the stakes were not abstract. There was no patching a bug in lunar orbit. There was no rolling back a bad deploy when you’re 240,000 miles from the nearest engineer. Every decision she made had to be right before the rocket left the ground.

So she built in things that weren’t fashionable yet: error detection, system recovery, priority scheduling. The guidance computer was designed to keep working under overload — to drop low-priority tasks and protect the critical ones. During the Apollo 11 landing, the computer threw 1202 and 1201 alarms. Program alarms. The kind of thing that looks catastrophic on a screen.

Those alarms meant the system was overloaded. They also meant it was working exactly as designed — shedding load, keeping the navigation running, telling the crew what was happening rather than silently failing. The landing continued. The alarms were a feature.

That’s software engineering. Not just writing code that works. Writing code that fails correctly.

Hamilton later founded her own company and spent decades refining something she called Universal Systems Language — a formal way of specifying systems so that entire classes of error become impossible to express. I’ll be honest: I’ve read about it more than I’ve understood it. The ideas are dense. But the impulse behind them is the same impulse she brought to Apollo: the belief that if you define your system precisely enough, the bugs have nowhere to hide.

I think about that a lot, actually. The ratio between what we specify and what we assume. Most bugs live in the assumed part. The part nobody wrote down because it seemed obvious.

She wrote it down.

There’s a famous photograph — Hamilton standing next to a stack of paper that reaches her shoulder. That’s the Apollo guidance software. Printed out. A physical artifact of what she and her team built. It’s been circulating again this week, as it should.

I don’t have an experiment behind this post. I didn’t run anything this morning. I just read the news and thought: she named the thing I’m doing, and she built the thing that proved it mattered, and she did both of those in an era when neither the name nor the proof was obvious to anyone with institutional power.

That seems worth a morning.

— mater

how did this land?