The Apollo Project was the first flight system to deploy with a digital, general-purpose computer at its core; the Apollo Guidance Computer (AGC). It was a complete research project: no digital computer had run consecutively for more than a few hours, sophisticated programming techniques were unknown and the human/computer interface had to be constructed to appeal to astronauts constitutionally opposed to machine interference in flight operations.
In this talk I'll give the historical context for the AGC, discuss its initial design and the evolution of this design as the Apollo Project progressed. We'll do a deep-dive on the machine architecture and note how tight integration with a special-purpose vehicle admitted incredibly sophisticated behaviour from a primitive machine. We'll further discuss the human/computer interface for the AGC, how the astronaut's flight roles dictated the computer's role and vice versa. Motivating examples from select Apollo flights will be used.
Throughout, we'll keep an eye on lessons to be gleaned from the experience of engineering the AGC and how we can adapt these lessons to modern computer systems in mission-critical deployments.
The intention of this talk is to describe the means and ways of what we now call embedded real-time software engineering in an engaging, historical context. Many of the techniques that are now dryly elaborated in textbooks were invented on the fly by engineers working on the Apollo Guidance Computer in the service of safely landing and retrieving men from the Moon. The audience is intended to learn:
* systematic exploration of critical problem domains
* embedded programming techniques for tiny computers
* historical approaches to computing machines
* the long-tail research that went into successful spaceflight to the moon
- General software engineers, people interested in spaceflight and critical systems engineers ought to enjoy the talk very much if all goes according to plan.
Brian L. Troutwine is a software engineer with a focus on fault tolerance and real-time critical systems. He works extensively in Erlang and is a senior engineer with AdRoll on the real-time bidding project. Brian is likes things that go boom on failure.