Han pasado muchos días desde el último Brain Feeling sobre Genios. Hoy me gustaría presentaros a Margaret Hamilton; un genio de nuestros días a través de un artículo de Wired.
Su código llevó a los humanos a la luna e inventó el software en sí
Con esta carta de presentación ya debería ser suficiente, aún así esta es su historia.
No se suponía que Margaret Hamilton tuviese que hacer lo que hizo. Fue en 1960, una época que no destaca precisamente por promover el que las mujeres llevasen a cabo trabajos altamente tecnológicos. Una Hamilton de 24 años, con un graduado en matemáticas a medias, obtuvo un trabajo como programadora en el MIT, su plan es ayudar a su marido durante los 3 años de trabajo de éste en Harvard Law. Después de esto sería su turno, ella quería acabar el graduado en matemáticas.
Pero el programa espacial Apollo apareció. Y Hamilton estuvo en el laboratorio liderando una hazaña épica que ayudaría a cambiar el futuro de lo que era humana y digitalmnte posible.
Hamilton no era precisamente común como madre trabajadora en los 60. Pero como programadora de naves espaciales era positivamente radical. Se llevaba a su hija Lauren al laboratorio los fines de semana y las noches. Mientras una Lauren de 4 años dormía en el suelo de la oficina observando el Charles River, su madre se dedicaba a programar, a crear rutinas que al final serían añadidas al módulo del ordenador de comando del Apollo.

Recuerda Hamilton que la gente le preguntaba ¿cómo podía dejar a su hija? que ¿cómo podía hacer eso?. Pero a ella le encantaba la novedad arcana de su trabajo. Le gustaba la camaradería (las copas después del trabajo en el club del MIT, los chistes geeks que se contaban entre ellos) Los de fuera no lo entendían; pero en el laboratorio, dice «Era otro más de los chicos»
Entonces, como pasa también ahora, «los chicos» dominaban la tecnología y la ingeniería. Al igual que las programadoras femeninas de la actual industria tecnológica, Hamilton era una puntera. Sorprendería a los programadores de hoy en día saber que uno de los padres de su club fue en realidad una madre y adicionalmente reflexionar porque la desigualdad de género de la era Mad Men persiste aún hoy en día.
A medida que la carrera de Hamilton avanzaba, el mundo del software se encontraba en medio de un cambio gigante; gracias al programa Apollo lanzado por John F. Kennedy en 1961. En el laboratorio de instrumentación del MIT, donde Hamilton trabajaba, ella y sus colegas estaban inventando ideas esenciales en la programación de ordenadores; recordad que ellos escribieron el código para el primer ordenador portátil. Se convirtió en una experta programadora de sistemas ganando importantes discusiones técnicas. «Cuando empecé, nadie sabía qué era lo que estábamos haciendo. Era como el lejano oeste. No había formación. Nadie nos podía enseñar« Recuerda.
Esto fue una década antes de Microsoft y 50 años antes que Marc Andressen observara en un ensayo que el software, de hecho se «está comiendo el mundo» (PDF). El mundo no piensa demasiado en el software en los tempranos días del Apollo. De hecho, el documento original que resaltaba los requerimientos técnicos de la misión Apollo ni siquiera mencionaba la palabra software. Así lo menciona el Profesor de Aeronáutica del MIT, David Mindell en su libro Digital Apollo: «El software no estaba incluido en la planificación, y tampoco en el presupuesto«, no en primera instancia.
Pero a medida que el proyecto Apollo se desarrollaba, la centralidad del software en ayudar a cumplir la misión se hizo más clara. En 1965, Hamilton llegó a ser la responsable del software de abordo de los ordenadores del Apollo.

Fue una época excitante, y los Estados Unidos dependía del trabajo que ella estaba haciendo. Pero a menudo la presión la mantenía toda la noche en vela. Una vez, después de una fiesta, se fue corriendo al laboratorio para corregir un trozo de código del que súbitamente se dio cuenta que contenía defectos. Comenta Hamilton, «Siempre estaba imaginando titulares en los periódicos, que apuntarían a cómo pasó y que finalmente me apuntarían a mí«
Ya a mediados de 1968, más de 400 personas estaban trabajando en el software del Apollo, porque el software sería como los Estados Unidos ganarían la carrera a la Luna. Y cómo se demostró a posteriori, el software ayudaría al mundo a hacer mucho más. A medida que Hamilton y sus colegas programaban la nave Apollo, estaban también incubando lo que seria una industria de $400.000.000.000.
En ese entonces, para Hamilton, programar significaba hacer agujeros en montones de tarjetas perforadas que serían procesados durante la noche en procesos batch en un ordenador mainframe Honeywell que simulaba el trabajo del que tenía que aterrizar el Apollo. «Teníamos que simularlo todo antes de soltarlo«, recuerda Hamilton.

Una vez el código era sólido, se enviaba a unas instalaciones en Raytheon, donde un grupo de mujeres expertas, conocidas como «Las Pequeñas Mujeres Mayores», cableaban cables de cobre a través de anillos magnéticos (un cable que atravesaba un núcleo era un 1, un cable que iba alrededor de un núcleo era un 0). Olvidaros de la memoria RAM o las unidades de disco; en el Apolo la memoria estaba literalmente cableada y era literalmente indestructible.



Los vuelos Apollo llevaban dos máquinas prácticamente idénticas: una usada en el módulo lunar (el Eagle que aterrizó en la Luna) y otra para el módulo de comando que llevaba a los astronautas desde y hasta la Tierra. Esos ordenadores de casi 140 Kilos eran ordenadores portátiles como ningún otro. Eran de los primeros que llevaban circuitos integrados más que transistores. Como cuenta Mindell en la historia, fue el primer sistema de navegación, diseñado para ser operado por humanos pero con una opción de autopiloto. Un precursor de los actuales pilotos automáticos de los aviones.
El sistema almacenaba más de 12000 «palabras» (en términos informáticos) en su memoria permanente (las cuerdas de cobre cableadas por las trabajadoras de Raytheon) y tenía capacidad de 1024 palabras en su memoria temporal (lo que ahora sería la RAM). Según Don Eyles, contribuidor al código del módulo lunar: «fue la primera vez que un ordenador se colocaba en una nave espacial y se le daba tanta importancia en la misión […] demostramos que eso se podía hacer. Lo hicimos en lo que hoy en día sería una cantidad de memoría casi ínfima y una velocidad de procesado muy lenta» Sin ello, Neil Armstrong no hubiese llegado a la Luna. Y sin el software escrito por Hamilton, Eyles y el equipo de ingenieros del MIT este ordenador hubiese sido un fracaso.

Esto quedó demostrado el 20 de Julio de 1969, minutos antes que el Apollo 11 alunizara en el Mar de la Tranquilidad. Debido a lo que Don Eyles denomina un «error de documentación» el ordenador del Apollo empezó a lanzar mensajes preocupantes en esta fase crítica de la misión.

Pero aquí es donde las discusiones técnicas ganadas por Hamilton y otros salvaron el día. Los mensajes de error se estaban lanzando porque el ordenador estaba sobrecargado con una serie de cálculos innecesarios cuando, de hecho, lo que debería estar haciendo era alunizar el módulo.

De vuelta en Houston, los ingenieros conocieron que debido a la capacidad única de procesamiento asíncrono del Apollo el ordenador se debería haber centrado en alunizar el módulo Eagle en el Mar de la Tranquilidad; pero cuando el ordenador se dio cuenta que no disponía de suficiente memoria para hacer todas las funciones que debía estar haciendo usó su sistema de detección de errores y se centró en el trabajo de más alta prioridad, afirma Hamilton.


‘Esto no debería pasar nunca’
Un día, Lauren estaba jugando con el simulador de módulo de comando del MIT, concretamente con la unidad pantalla-teclado, apodada DSKY (dis.key). En eso que apareció un mensaje de error. Lauren había roto el simulador lanzando de algún modo un programa llamado P01 mientras el simulador estaba en pleno vuelo. No había ninguna razón por la que un astronauta hubiese hecho lo mismo, pero Hamilton quiso añadir código para prevenir ese error. Pero esa idea fue rehusada por la NASA. Hamilton recuerda que «nos habían dicho muchas veces que los astronautas no cometían errores […] que habían sido entrenados para ser perfectos» Con lo que Hamilton, lo que hizo frente a esta negativa fue crear una nota en el programa; un comentario en la documentación disponible para los ingenieros de la NASA y los astronautas que rezaba «No seleccionar el P01 en vuelo»
Hamilton quería añadir algunas rutinas de chequeo de errores al sistema Apollo para prevenir este tipo de errores que podían destrozar el sistema. Pero esto pareció excesivo a sus superiores. Recuerda Hamilton que «Todo el mundo decía, ‘Esto nunca debería pasar’«
Pero pasó. Alrededor de las Navidades de 1968, el astronauta Jim Lovell sin darse cuenta seleccionó el P01 durante el vuelo del Apollo 8. Hamilton se hallaba en el segundo piso de la sala de conferencias, cuando la llamada llegó a Houston. La activación del programa P01 había borrado todos los datos de navegación que Lovell había estado recopilando. Eso era un problema. Sin esos datos, el ordenador del Apollo no sería capaz de saber cómo llevar a los astronautas de vuelta a casa.

Hamilton y los codificadores del MIT tenían que encontrar el modo de arreglarlo y tenía que ser perfecto. Después de 9 horas de revisarlo todo, tenían un plan. Houston enviaría nuevos datos de navegación. Todo iría bien. Gracias a Hamilton y a su hija Lauren los astronautas del Apollo llegarían a casa.
También gracias a Hamilton y al trabajo que lideró, tenemos una noción de qué es lo que la humanidad podría ser y es. La Ingeniería del Software, un concepto en que Hamilton fue la Pionera, ha encontrado su camino desde el alunizaje hasta casi prácticamente cada esfuerzo humano.
En los 70, Hamilton salió de la NASA y del programa Apollo. Fundó múltiples compañías de software. Hoy en día su empresa, Hamilton Technologies, se encuentra unos cuantos bloques más allá del MIT, donde su carrera empezó; un centro donde la revolución del código aún mira a las estrellas.
Buen Domingo!! 🙂
Artículo Original: «Her Code Got Humans on the Moon—And Invented Software Itself» en Wired.com