Apollo software engineer awarded Medal of Freedom
Posted November 23, 2016
A lot of familiar names were among the 21 awarded the Presidential Medal of Freedom by President Barack Obama on Tuesday, including musicians Bruce Springsteen and Diana Ross, actors Robert De Niro and Tom Hanks, and athletes Kareem Abdul-Jabbar and North Carolina’s own Michael Jordan.
Others you might not have been familiar with, like Margaret Hamilton, who received the honor for her contributions that led to Apollo 11's successful landing while establishing fundamentals in the field of computer science.
Not only was Hamilton a 24-year-old working mother working in a field completely dominated by men at the MIT Instrumentation Lab, she and her colleagues created core principals in software engineering that continue today.
They also created the first portable computer, the Apollo Guidance Computer (AGC), which would take astronauts from Earth orbit to the moon.
David Mindell, in his book "Digital Apollo," notes that Hamilton fought hard to include user checks despite NASA’s insistence this was unnecessary because these were highly trained astronauts who were expert in all the systems of the spacecraft carrying out well-tested processes.
“What if the astronaut, during mid-course, would select the pre-launch [program]? Never would happen they said,” recalled Hamilton.
This exact scenario occurred during Apollo 8. Apollo 11 was seconds away from abort when alarms 1201/1202 indicated a computer overload.
A wiring issue in the lunar module (those pesky humans again) streamed data into the computer prematurely, consuming over 80 percent of resources. These alarms informed the astronauts that the programming of Hamilton and her team was placing highest priority on data related to the landing and throwing away everything else.
All 65,636 lines of AGC source code for the Command Module (code named Comanche055). All 64,992 lines of Lunar Module code (LM) source code (code named Luminary099), all in assembly code were released in 2003 after painstaking entry from MIT supplied photographs of code listing.
It was made available on the more easily accessible on GitHub.com in 2014.
Assembly language has only the most basic low-level functions available to the programmer, making it difficult to read storage of values to a variety of memory locations, the most basic controls over program flow, and basic math like addition, subtraction, and multiplication and division. Yet Hamilton and team found flaws, primarily by following the logic.
Today, we simply download applications into our laptops or phones. But the AGC software had to be sewn into its core rope memory. Hamilton’s assembly code, along with other unchanging data such as star charts, were compiled 72 kilobytes of 1’s and 0’s.
This was then literally woven by a group of women known as the “little old ladies,” chosen for their dexterity, into a mesh of doughnut shaped magnets. Wires passing through each tiny ferrite doughnut represent a 1, outside represents a 0.
Today’s programmers rarely add any comments, instead letting their code speak for itself, often ineffectively. Hamilton and her team didn’t have this luxury. Assembly is inherently difficult to read, so each instruction includes a description of what it is doing, why, and how the rest of the program will be affected. This verbosity led to some interesting “easter eggs” entering the comments.
The master ignition routine is named “BURN_BABY_BURN,” code that interacted with keys, and display is titled “PINBALL_GAME_BUTTONS_AND_LIGHTS,” verifications of astronaut input is labeled “see if he’s lying” and a comment hoping that hack would be temporary remained in the final product and there are quotes from Shakespeare’s Henry V in code comments.
The pride these coders took in their work is evident in the old-French phrase “Honi soit qui mal y pense” found in the lunar lander code. It roughly translates to “May he be shamed who thinks badly of it."
Rear Admiral Grace Hopper was also awarded the Presidential Medal of Freedom posthumously this week.
Hopper worked on the earliest computers, creating the first working compiler. She is credited with coining the word “bug”, literally a moth that caused a malfunction in the Harvard University Mark II computer.
That moth, still taped to the log book entry, was displayed at the Naval Surface Warfare Center at Dahlgren, Virginia. I had the rare privilege of seeing the “bug” for myself while working there during summers during college. The logbook page and bug were added to the collection of the Smithsonian museum of American History in 1994.