JPL Ground Data System
LaunchedJava telemetry processing for NASA's Jet Propulsion Laboratory — part of the ground data system that flew with the Curiosity Mars rover.
Software Engineer at NASA's Jet Propulsion Laboratory in Pasadena, on the Ground Data System — the software on the Earth end of a spacecraft mission, which takes the telemetry a spacecraft sends home and turns it into something the people running the mission can act on.
My team was building the GDS for the Curiosity Mars rover.
Getting there mattered to me more than I usually admit. Two of us out of my graduating class landed positions at JPL, and I had come from Cal State Northridge against a field of new graduates from Caltech, MIT, UCLA, Berkeley and Stanford. It was the kind of job that settles the question of whether you belong in the profession.
The system
The GDS was a set of software components interfaced over JMS, which gave the mission a telemetry processing pipeline that could be reconfigured rather than rewritten as needs changed. I worked within the team adding features and fixing bugs across it.
My own contributions were three:
- The SWT front end for the telemetry testing monitor — the desktop interface used to watch the pipeline behave while it was being exercised.
- A Jython-based test automation toolkit for automated testing of the GDS. Scripting the tests in Jython meant test authors could work against the Java system without writing Java, which mattered because the people who best understood what correct telemetry behavior looked like were not always the people most fluent in the implementation language.
- An AJAX data accountability web application, giving a dynamic view into the telemetry accountability database. Accountability, in this context, is the question of whether every packet the spacecraft sent actually arrived — a question with real operational consequences, and one that had been easier to ask of a database than to see.
That last piece was novel enough at the time that I was asked to give a "Learning Curve" presentation at JPL on using AJAX to build cross-platform dynamic user interfaces inside the browser. In 2007 that was still an argument that had to be made.
I built a demo application for that talk — a single-page app over server-side Java and JSON-RPC, which is what "AJAX" meant before the acronym stopped being useful.
Leaving
I resigned in October 2007, about seven months in, without much of a clue what was next.
The work was challenging and genuinely fulfilling and my future as an engineer was as secure as it was ever going to be. What I could not get past was a growing sense that I was meant to give a larger portion of my life to serving God, and that this job — its hours, its intensity, its gravity — was in the way. My colleagues thought I was crazy. Some days I agreed with them.
I started a consultancy to buy back the flexibility, and within a few weeks was asked to spend the following summer leading a programme in Israel and India. That turned into nine years in ministry.
What I took from it was a sense of proportion. Telemetry from another planet arrives on a schedule set by orbital mechanics. There is no retry, and the interface you build is how someone finds out whether it all got here.