Archive for the ‘Software’ Category

The virtual Apollo Guidance Computer

July 20, 2009

I remember on the trip home on Apollo 11 it suddenly struck me that that tiny pea, pretty and blue, was the Earth. I put up my thumb and shut one eye, and my thumb blotted out the planet Earth. I didn’t feel like a giant. I felt very, very small.

Neil Armstrong [1]

On this day 40 years ago, the Apollo 11′s Eagle lunar module landed on the Moon. As Neil Armstrong and Buzz Aldrin became the first humans to walk on the lunar surface, Michael Collins orbited the Moon inside the Columbia command module, experiencing “an aloneness unknown to man before”, as aviator Charles Lindbergh put it [2].

The Apollo 11 crew portrait. Left to right are Armstrong, Michael Collins, and Buzz Aldrin.

[ photo courtesy of NASA ]

The Apollo program was an enormous technical achievement. I shall forever be amazed at how the engineers who worked on this program managed to accomplish so much with the technology they had available at the time. The rocket engine was a relatively recent technology back then, the transistor had been invented in 1947, the integrated circuit had been invented in 1958, and the microprocessor had not even been invented yet. In particular, the Apollo Guidance Computer (AGC) was a wonderful work of ingenuity: it was the world’s first modern real-time embedded system, and it led to the development of fly-by-wire systems.

To commemorate the 40th anniversary of the Apollo 11 mission, the command module code (Comanche054) and the lunar module code (Luminary099) have been transcribed from scanned images by the Virtual AGC and AGS project! [3] The code can be found here.

For example, take a look at the following modules: ascent guidance, Kalman filter, master ignition routine. Yes, programming the AGC seems to have been a spartan endeavor! ;-) If you happen to dislike vintage assembly programming languages, take a look at the yaAGC code, which is written in C.

__________

References

[1] The Greening of the Astronauts, Time Magazine, December 11, 1972.

[2] Robin McKie, How Michael Collins became the forgotten astronaut of Apollo 11, The Observer, July 18, 2009.

[3] Nathaniel Manista, Apollo 11 mission’s 40th Anniversary: One large step for open source code…, The official Google Code blog, July 20, 2009.

How to organize scientific papers?

October 2, 2007

I have hundreds of scientific papers stored in my hard disk drive. I try to organize them by author, by field, or by research group. However, many scientific papers

  • have more than one author
  • are written by more than one research group
  • encompass more than one research field.

For example, let us imagine that I have this neat, fictional paper on quantum computing. What if I archive it by:

  • research group? Problem: the paper was written by two research groups: one at Stanford and another one at Caltech.
  • author? Problem: the paper is written by three “heavy-weight” researchers. Which one to choose?
  • research field? Problem: the paper is about quantum computing, which is a multi-disciplinary area. I could archive it in the Quantum Physics folder, or in the Computer Science folder. I could, of course, store it in the Quantum Computing folder, but that may be a bit too specific. What if I have a paper on quantum error-control that is closely related to this quantum computing paper? Shouldn’t these papers be archived in the same folder?

Many questions, few answers. How should I organize my papers so that I can find them in an efficient manner whenever I need them?

Some months ago, I came across an interesting discussion on Nuclear Phynance about this topic. Some people on NP were using iTunes to organize their papers (no kidding! check this out) or some general-purpose document management systems. Nevertheless, these applications were not specifically tailored to manage scientific papers. No general-purpose application can perform well under all possible scenarios. I thus would love to have an application specifically designed to manage scientific papers.

What features should that application have? Well, it should work a bit like iTunes: in an easy, intuitive and efficient manner. One could have all papers stored in one folder. Or, if you prefer, in several folders: a folder for all 2007 papers, another one for all 2006 papers and so on (for example). Then, that application should allow one to add papers to the library (just like what happens in iTunes). It should allow one to specify several different fields for each paper, such as:

  • type: is it a conference paper, a journal paper, a technical report?
  • event: if it is a conference paper, then one should be able to specify which conference was that.
  • title: this one is pretty self-explanatory.
  • authors: one should be able to input a list of all the authors.
  • keywords: instead of categorizing a given paper in a rigid manner, a fuzzy approach would be better. A given paper does not need to be a math paper or a physics paper, it can be both!
  • abstract: this could be a logical extension to the “keywords” field.
  • bibliography: this might seem irrelevant, but imagine that you could specify which other papers a given paper refers to! Even better: imagine that the application would immediately scan your library to try to find those papers mentioned in the bibliography!

The problem is: I have many hundreds (if not a few thousands) of papers. Specifying the aforementioned fields for each and every paper in my hard disk drive would be prohibitively time consuming. However, what if a new file format were created? That new format could encapsulate the file (in PDF or PS format, for instance) and all the metadata! To make things simple:

  1. the paper’s authors would input all the metadata at once, and then publish the files on their webpages.
  2. we would then simply download that file containing the paper plus all the metadata.
  3. we would allow the application to manage all the papers for us. That would be wonderful: the application would find the papers mentioned in the bibliography section, it would link to other papers from the same authors, etc.

Does anyone have any ideas on this? Does such an application already exist? The only application that seems to be similar to the one I idealized seems to be Papers (too bad it only runs on Mac OS).

Constructive comments are very much appreciated. Thanks in advance.


Follow

Get every new post delivered to your Inbox.

Join 84 other followers