Hacker News new | past | comments | ask | show | jobs | submit login

What a truly inspiring human being. I can only dream of aspiring to her levels of contribution.

Check out some of the Apollo 11 code for the Lunar Module's (LM) Apollo Guidance Computer (AGC). It's just awesome browsing through it, reading the comments, and thinking about the zeitgeist of being on a team that was working on something of that world-altering magnitude.

Code Library:

https://code.google.com/p/virtualagc/source/browse/trunk/Lum...

KALMAN_FILTER.agc

https://code.google.com/p/virtualagc/source/browse/trunk/Lum...

LAMBERT_AIMPOINT_GUIDANCE.agc

https://code.google.com/p/virtualagc/source/browse/trunk/Lum...

LANDING_ANALOG_DISPLAYS.agc

https://code.google.com/p/virtualagc/source/browse/trunk/Lum...

LUNAR_AND_SOLAR_EPHEMERIDES_SUBROUTINES.agc

https://code.google.com/p/virtualagc/source/browse/trunk/Lum...

LUNAR_LANDING_GUIDANCE_EQUATIONS.agc

https://code.google.com/p/virtualagc/source/browse/trunk/Lum...

- - -

Incredible quote:

"There was no second chance. We all knew that. We took our work very seriously, but we were young, many of us in our 20s. Coming up with new ideas was an adventure. Dedication and commitment were a given. Mutual respect was across the board. Because software was a mystery, a black box, upper management gave us total freedom and trust. We had to find a way and we did. Looking back, we were the luckiest people in the world; there was no choice but to be pioneers; no time to be beginners." - Margaret Hamilton

- - -

Edit: OK, this is interesting. Note the filename. The filename and comments suggest that it was for driving keyboard and information display...

PINBALL_GAME_BUTTONS_AND_LIGHTS.agc

https://code.google.com/p/virtualagc/source/browse/trunk/Lum...




A few of the code modules that mention Hamilton:

Artemis072/ASSEMBLY_AND_OPERATION_INFORMATION.agc

https://code.google.com/p/virtualagc/source/browse/trunk/Art...

Artemis072/SERVICER207.agc

https://code.google.com/p/virtualagc/source/browse/trunk/Art...

Comanche055/CONTRACT_AND_APPROVALS.agc

https://code.google.com/p/virtualagc/source/browse/trunk/Com...

---

An overview of the code:

http://www.ibiblio.org/apollo/Colossus.html


I'm having a hard time believing that's a working kalman filter implementation in assembly in 70 odd lines!


Check this out... here are the two source code pages (digitized from original printouts) for the Kalman filter, dated July 14, 1969!

KALMAN FILTER USER'S PAGE NO. 1

http://www.ibiblio.org/apollo/ScansForConversion/Luminary099...

KALMAN FILTER USER'S PAGE NO. 2

http://www.ibiblio.org/apollo/ScansForConversion/Luminary099...


According to wikipedia "The onboard guidance software used a Kalman filter to merge new data with past position measurements to produce an optimal position estimate for the spacecraft." https://en.wikipedia.org/wiki/Apollo_PGNCS

In turn the main source of navigation information came from mission control using least squares. A source on that would be nice too!


A lot of people will find it hard believing how smaller code can be in assembly than in our supposedly higher level languages, e.g, look at this example of quicksort, http://en.wikibooks.org/wiki/Algorithm_Implementation/Sortin... go down to the C example below and note that it's longer.


after having worked on a kalman implementation in processing, I had the same gut reaction.


The scalar case is not so bad; typically the filter is taught using the vector-input/vector-state case, which is more complex.

I can't make heads or tails of the assembler listing either. The specific thing I would look for in the assembler code is the division operation which is required to find the Kalman gain. I don't see it.

But, the anecdote about the Kalman filters use in this setting is well-known. (E.g., search for "Apollo" in http://ieeecss.org/CSM/library/2010/june10/11-HistoricalPers...)

The amazing thing from my point of view is not the implementation. It is rather that the theory, which was quite novel at the time, was only understood and published in 1960/61. To have it used in a flight system, and indeed a manned flight system, only 8 years later is really incredible.


indeed, its the kind of thing where you hope to see such epic code comments like this:

// and the following section is where we attempt to land on the Moon




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: