There was a problem on Apollo 11. Three minutes before the lunar lander reached the Moon's surface the Apollo Guidance Computer and the system's flight software were overloaded and weren't able to complete all their designated tasks. The landing system was taking up 90% of the computer's resources, while the radar system was occupying another 13%. It was only a matter of time before something had to give. This was at a crucial stage of the mission and any errors in navigation could be catastrophic.
|Margaret Hamilton stands alongside the source code for the Apollo Guidance Computer. (Image source: Draper Laboratory; restored by Adam Cuerden. [Public domain])|
Fortunately, the system had been configured to recognize that this was happening and it was able to warn the astronauts of the impending errors.
Had it not been for the efforts of, Margaret Hamilton, a single engineer on the Apollo 11 team, the Moon landing might not have happened.
If you've heard of Margaret Hamilton its likely through the famous 1969 image of her standing next to printouts of the Apollo Guidance Computer's source code. At the time Hamilton was director of Apollo Flight Computer Programming at MIT's Draper Laboratory, where she headed up the team that developed the on-board flight software for the Apollo space program.
And while it's easy to grasp the importance of Hamilton's role today – her work was being done at a time when software engineering itself was not a well-known or understood field. In fact the term software engineering hadn't even been coined yet – Hamilton is the one most often credited with creating it.
In a 2008, article written for the IEEE Computer Society, Hamilton described the Apollo program as an ideal place to discover and innovate a new discipline of engineering. “There was no school to attend or field to learn what today is known as 'software engineering' or 'systems engineering.' When there were no answers to be found, at times we just had to make it up, and we had to design things to work the first time,” Hamilton wrote. “ Many on the team were fearless 20-something-year-olds, and dedication and commitment were a given, but there was no time to be a beginner.” She goes on to describe the environment at the Apollo program as one in which she and her team were given total trust by upper management because software development was such a mysterious process to them. "Mutual respect was across the board. We were the luckiest people in the world. There was no choice but to be pioneers,” Hamilton said.
The Opportunity of a Lifetime
Margaret Hamilton was born Margaret Heafield on August 17, 1936 in Paoli, Indiana. She studied mathematics at the University of Michigan in the 1950s and later earned a BA in mathematics with a minor in philosophy from Earlham College in 1958. After graduation she married her first husband, James Cox Hamilton, and taught high school mathematics and French to support them while he finished his undergraduate work at Harvard University. James would go on to become a lawyer.
In 1959 Hamilton started her career in software development at MIT's meteorology department, where she developed weather prediction software. While colleges abound with computer science and software engineering programs today, at the time no such programs existed and most programmers, like Hamilton, learned hands-on and sometimes on the fly.
“If the computer hadn't recognized this problem and taken recovery action, I doubt if Apollo 11 would have been the successful moon landing it was."
From there she moved on to MIT's Lincoln Laboratory, where she wrote software for the Semi-Automatic Ground Environment (SAGE) project, a system that aggregated data from a wide area of radar sites and used it to create a single, unified image of a given airspace.
In 1963, Hamilton was making plans to attend Brandeis University in Waltham, Massachusetts to do graduate studies in abstract math when she heard about the opportunity of a lifetime. MIT had received a contract from NASA to develop software for sending men to the moon and was looking for individuals to work on the project.
Her previous experience made her a prime candidate for the Apollo program. During her time with the program Hamilton and her team developed software for the command module and lunar lander, including the error detection and recovery software that would save the mission only minutes from the historical Moon landing.
In a 1971 letter published in Datamation magazine, Hamilton recounted how the software developed by her team worked:
“The computer (or rather the software in it) was smart enough to recognize that it was being asked to perform more tasks than it should be performing. It then sent out an alarm, which meant to the astronaut, 'I'm overloaded with more tasks than I should be doing at this time and I'm going to keep only the more important tasks'; i.e., the ones needed for landing …,” Hamilton wrote. “...The software's action, in this case, was to eliminate lower priority tasks and re-establish the more important ones ... If the computer hadn't recognized this problem and taken recovery action, I doubt if Apollo 11 would have been the successful moon landing it was.”
The work of Hamilton and her team would come into play again later on the Apollo 12 mission when, just before liftoff, the spacecraft was struck by lightning, not once, but twice! Each strike caused a power failure that could have aborted the mission had the system software not been able to recover in time for liftoff.
Towards a Universal Systems Language
Hamilton would go on to work on the remainder of the Apollo program and her software would also be included in the Skylab space station. Even today the software design methods pioneered by herself and the rest of the Apollo team have become foundational techniques in modern software engineering.
“Software during the early days of this project was treated like a stepchild and not taken as seriously as other engineering disciplines....it was regarded as an art and as magic, not a science."
Hamilton herself still remains active in the engineering community, both through speaking engagements and through her continued work. In 1986, she founded her own company Hamilton Technologies, to promote Universal Systems Language (USL), a programming language of her own creation. Rather than being an object-oriented or model-driven language, USL is designed in terms of systems-driven models and “system-oriented objects.” The idea is to give engineers a system-focused approach to creating software as an alternative to a software-centric approach. Hamilton believes USL can altogether eliminate the majority of system errors.
|In 2016 Margaret Hamilton was awarded the Presidential Medal of Freedom for her work on the Apollo program. (Image source: Official White House Photo by Lawrence Jackson)|
In her 2008 article for the IEEE Computer Society, Hamilton acknowledged that the work behind USL stemmed directly from lessons learned in her days with the Apollo program:
“USL had as its origin our study of Apollo flight software development,” she wrote. “Our primary questions were, 'What could we do better for future systems?' and 'What should we keep doing because we are doing it right?' … What would later become foundations for USL enabled the Apollo team to create the software for the trip to the Moon. Because system engineers threw requirements over the wall to software developers, engineers, and developers necessarily became interchangeable, as did their life-cycle phases—suggesting that a system is a system, whether in the form of higher-level algorithms, software that implements the algorithms, or systems that execute them. From this perspective, system design issues became one and the same as software, reinforced by the fact that entire missions were tested by software simulations integrating hardware, software, the universe, and humanware (for example, astronauts).”
Today, software engineering is looked upon with the same revelry as any other engineering discipline. But had it not been for the efforts of a single programmer neither the Apollo landing nor the field of software engineering itself may have ever come to fruition.
“Software during the early days of this project was treated like a stepchild and not taken as seriously as other engineering disciplines, such as hardware engineering; and it was regarded as an art and as magic, not a science,” Hamilton said in a 2014 interview with with the Spanish newspaper El Pais. “I had always believed that both art and science were involved in its creation...Knowing this, I fought to bring the software legitimacy so that it (and those building it) would be given its due respect and thus I began to use the term 'software engineering' to distinguish it from hardware and other kinds of engineering; yet, treat each type of engineering as part of the overall systems engineering process.
“When I first started using this phrase, it was considered to be quite amusing. It was an ongoing joke for a long time. They liked to kid me about my radical ideas. Software eventually and necessarily gained the same respect as any other discipline.”
Chris Wiltz is a Senior Editor at Design News covering emerging technologies including AI, VR/AR, blockchain, and robotics.
This summer (August 27-29), Drive World Conference & Expo launches in Silicon Valley with North America's largest embedded systems event, Embedded Systems Conference (ESC). The inaugural three-day showcase brings together the brightest minds across the automotive electronics and embedded systems industries who are looking to shape the technology of tomorrow.