// ARS TECHNICA — SPAZIO & SCIENZA
R.I.P. Margaret Hamilton, whose code saved the Apollo 11 Moon landing
Hamilton also coined the term “software engineering” and founded two successful software companies.
Margaret Hamilton, who coined the term “software engineering” and led the development of on-board flight software for NASA’s Apollo program in the 1960s, died last week at the age of 90. A recipient of the Presidential Medal of Freedom in 2016, Hamilton was also immortalized as a LEGO minifig the following year—part of the “Women of NASA” set that also included astronauts Mae Jemison and Sally Ride.
“To say Margaret Hamilton was a pioneer—to say she was ahead of her time—would be a dramatic understatement. She was a software engineer at a time when that field was in its infancy, and she not only developed advanced code herself but also led a team in using that nascent technology to develop one of the most complex systems humanity had ever achieved,” said Olivier de Weck, interim head of the MIT Department of Aeronautics and Astronautics. “The Apollo program still stands as one of our greatest testaments to the power of collaboration, ingenuity, and engineering, and Hamilton was a fundamental contributor to that program’s success.”
Born in 1936 in Paoli, Indiana, Hamilton graduated from Earlham College in 1958 with a degree in mathematics and a minor in philosophy—the latter a nod to her father (a poet) and grandfather (a headmaster). She married her first husband, James Cox Hamilton, that same year. The plan was for her to work until he finished his law degree, after which he would support her through graduate school to earn a PhD in mathematics.
She ended up working for Edward Lorenz, the MIT mathematician who set out to construct a mathematical model of the weather using a set of differential equations representing changes in temperature, pressure, wind velocity, and the like. You’ve probably heard the famous story of how Lorenz kept a continuous simulation running on his LGP-30 computer, and of that fateful 1961 day when he realized that even small differences in starting values could lead to very different outcomes—a sensitivity to initial conditions that is a hallmark of chaos theory, along with strange attractors. You might not have known that it was Hamilton who was responsible for programming the LGP-30.
Computers were still a novelty at the time, and neither Lorenz nor Hamilton had any programming knowledge; they taught themselves. Per a 2019 Quanta article, Lorenz was amused by her unusual methods: for instance, she once bypassed the “clunky debugging process” by rolling out the paper tape down the hallway and editing the binary code by hand with a pencil. “I’d poke holes for ones, and I’d cover up with Scotch tape the others,” she recalled. Hamilton moved to another project in 1961, but not before training her replacement: a recent math graduate from Mount Holyoke named Ellen Fetter. Lorenz acknowledged the contributions of both women in his papers.
In 1961 Hamilton moved to the SAGE project at MIT, writing software for a prototype XD-1 computer to aid the US Air Force in searching for possible enemy aircraft. Her first challenge: deciphering a program nobody had managed to get to work, perhaps because the author’s notes were written in Latin and Greek. Hamilton succeeded, noting with amusement that the program even printed out its answers in Greek and Latin. It was during this period that she became interested in the issue of software reliability.
By 1965, Hamilton was all set to go to graduate school as planned when her husband spotted a newspaper ad saying that MIT’s Instrumentation Lab needed people to develop onboard guidance computer software for NASA’s Apollo program. She was the first programmer hired, and the first woman, working on six lunar landing missions from 1969 to 1972. At the time, binary code was stored using copper wires wound around cores. A “1” was a wire passing through a core, and a “0” was a wire bypassing the core. New England textile workers were hired to weave them together into long