For the past 10 weeks, I’ve had the opportunity to work as a software engineering intern at NASA’s Jet Propulsion Laboratory (JPL) located in La Cañada Flintridge, CA through their Summer Internship Program (JPLSIP). It was an enjoyable learning experience, and I definitely got a better understanding of what software engineering entails as well as JPL as a company.
On my first day, I arrived at JPL at roughly 7:30 in the morning where I was welcomed by JPLSIP staff for orientation. I received my intern badge, my work laptop, a purple JPL cinch bag, and a map of JPL’s 177-acre campus. I got to meet my two mentors, one of whom heads the Data Services Group within the Planning and Execution Systems Section and the other of whom is an engineering applications software engineer within the section. I met a couple other software engineers in the section and made myself at home in the Bullpen, the huge cubicle I eventually shared with five other interns.
My task for the summer was to build a basic prototype of a modified version of SeqGen, a software tool for generating spacecraft sequences, that enables JavaScript-based command modeling. This involved embedding Google’s V8 JavaScript Engine into C++ (the language the software is written in) to allow JavaScript code execution in C++ and designing an API for creating command models in JavaScript. Before I indulged in writing any code, I spent the first few weeks meeting with other software engineers to understand how SeqGen works as well as familiarizing myself with all the technologies I needed – more specifically, C++, V8 JavaScript Engine, the Linux virtual machine, and command-line tools such as Vim and Grep. After drafting designs of a modified software architecture for SeqGen, I proceeded to build multiple prototypes starting from simple programs and moving towards modular programming. At the end of the ninth week, I had successfully embedded the V8 JavaScript Engine into the existing codebase of SeqGen and designed a simple API for printing, getting, and setting model attribute values. I then spent the last week getting my code immortalized in JPL’s GitHub and writing documentation for the API.
My summer was more than just coding, however. I attended Scrum stand-up team meetings, and as part of the JPLSIP program, I also wrote two progress reports and a final report and gave a final presentation about my work. And when you’re at such an innovative place of scientific research and interdisciplinary engineering, there’s always something exciting going on at some part of the lab. I got to attend fascinating talks about animatronics by a Disney Imagineer, design thinking by Alan Cooper, and robotic rapid prototyping by the leader of JPL’s Extreme Environment Robotics Group, to name a few. I got to learn about various software tools developers in different groups at JPL use at monthly Developer meetups. I went on sometimes impromptu tours of Team X, where mission concept designs are formulated, the Operations Lab, where JPL engineers are currently collaborating with Microsoft to incorporate the HoloLens into their work on Mars, and of course, the Space Flight Operations Facility, the control room for interplanetary and deep space exploration and home of the “Center of the Universe”.
One of the best perks of working at JPL is the 9/80 work schedule (80 hours of work in 9 days), which means we work nine-hour days Monday through Thursday, get every other Friday’s off, and on the Fridays we do work, we work eight hours. On a typical day of my internship, I’d arrive at JPL at 7:45am and spend the next 15 minutes reviewing my progress from the day before, taking note of my goals for the day, checking my JPL email, and setting my laptop up for the day’s work. I was generally most productive and focused in the morning, probably because I sometimes had meetings with other software engineers in the morning. At around noon, I’d grab lunch with some fellow interns and maybe listen in on a talk, then head back to the Bullpen to continue working. When I got drowsy in the afternoon, I would go outside for a short walk to get some fresh air. I tried to wrap up fifteen minutes before I left work to leave some time for jotting down the day’s progress and challenges as well as tasks for the next day.
Over the past 10 weeks of writing and debugging code, I realized that although I enjoy designing software and writing code for the most part, I want my code to have a more tangible impact, literally speaking. I want to write code for software that integrates with some sort of user interface and/or hardware product.. but that’s just a thought I have for the future. All in all, I am grateful to have spent this summer interning at JPL working alongside and learning from brilliant, inspiring people.
From the muse in me,
~ marG