Hey folks, Andrew here. Gonna depart a bit from our usual site updates and do a longer form post. Hold onto your hats!
If you're a regular in the Handmade community, you might have noticed I've been a bit less active over the last few months. And if you follow me or abner on Twitter, you probably got a glimpse at what I was doing in that time. So I'll confirm right now, all the stories are true -- I was down in Florida, working at an internship for NASA.
Let me give you a little background on NASA's internship programs. There are One Stop Shopping Initiative (OSSI) opportunities, and there are Pathways opportunities. OSSI internships are what you might think of as a more typical internship, lasting for a semester or summer (or occasionally a whole year), where you work in one particular area of NASA for the duration and then you leave. Pathways internships are longer-term, putting you through several rotations (periods of one or more semesters where you leave off school-work to work full-time hours at NASA) during which you can and likely will move around between different parts of NASA, exercising different parts of your area of expertise (or in some cases acquiring new ones!). Pathways internships only end once you've graduated from your university with a degree, and usually result in an offer for full-time employment.
I applied for and was accepted to an OSSI internship this summer, and it was one of the best experiences of my life. It was also one of the more stressful and difficult things I've ever done.
For one, there's the sheer distance. Kennedy Space Center (KSC) is situated on the east coast of central Florida, right on a large wildlife preserve. It's about an hour's drive out from Orlando, which is a six-hour flight from my home city of Seattle. It's one of the longest trips you can make in the continental United States, and I had to figure out how to get everything I needed for 10 weeks there into a suitcase and a duffel bag.
For another, there's hurdles that must be leapt. It was one thing after another -- by the time I left for Florida, I'd already had to submit myself for a background check, have three teleconferences with the staff of the Education Office, complete an online cybersecurity training, and fill out a project plan detailing the work I would be doing over the summer with the aid of my mentor. Once there, I was subject to the long and bureaucratic process of getting the badge I was required to have in order to even enter KSC. Once I was finally on center, I had to sit through almost a full day of "orientation", i.e. speeches, admonishments about what not to do, forms to sign, letters to read... and that was the abridged version!
But all this was worth it, because once I had passed through these hoops, I was free to begin work at NASA.
There's a lot going on inside the American space agency. Many employees are hard at work figuring out the technical challenges of the Space Launch System (SLS) rocket -- the biggest ever launched -- and its Orion payload. Others are carefully planning the long and arduous road to Mars, and the difficult questions that must be answered before human beings can stand on its surface. Some are working on satellite systems and logistics, some on robot explorers and scientific systems, some on the software to interface with rockets on the launch pad. They process payloads destined for the International Space Station (ISS), they prepare probes for asteroid encounters, and create next-generation materials and tools to make all these things happen. And all this with one of the smallest budgets (less than one percent of US GDP) the agency has ever had.
Yet the tight financial constraints leave little room for experimentation and blue-sky research. I saw dozens of promising projects, amazing and groundbreaking seeds of technical brilliance, lying on laboratory counters and leaning on dusty cabinets because their funding had dried up.
Despite this, my mentor had managed to eke out enough money to pursue his own vision of the future of NASA operations. Nestled in a corner of the IT directorate, in a small branch for advanced computing concepts, he created the AVR lab: a small room filled with as many of the latest AR and VR gadgets and off-the-shelf mixed reality devices he could get his hands on with the trickle of funds coming in from internal kickstarts and one-off funding opportunities. And it was here, an old room in an old building with new devices and new ideas, that I spent my summer.
You might expect that an internship for an organization as large and bureaucratic as NASA would mostly involve desk work and pencil-pushing. Or, perhaps knowing less about US government organizations, that most of the work would be centered around launching rockets. Neither of these expectations quite matches the reality, though they are both true to certain extents. Yes, there are a lot of people whose jobs are more or less to move the forms and crunch the numbers to allow spaceflight to happen. And yes, especially at KSC, most of the work orbits around the launching of rockets and the development that will affect how they are launched in the future. And of course, by taking an internship at NASA, and at KSC especially, there's a good chance you would end up doing one or both of those things as part of your responsibilities.
But depending on your position and depending on your mentor, you might have a very different experience. Civil servants at KSC -- the mentors, supervisors, and coworkers that guide you -- understand the zeal of spaceflight. They know that you want to help make a difference, that you want to be a part of things. So there's no coffee-fetching and there's no busy-work. The focus of the internship is on helping materially advance some piece of the machinery around NASA's multifaceted mission, however small. And hopefully, your mentor can help you understand how your work advances that piece.
For me, that piece was my mentor's vision of what developments NASA could push forward in the area of human-computer interaction. Ideas about the ways augmented and virtual reality devices could change how ground operations work, how in-flight operations are conducted, how semiautonomous vehicles are controlled. My work was building some of the prototypes that would prove the physical potential of these ideas.
Because of the nature of the lab -- secluded, very small (occupied only by my mentor and myself, during the time I was there), under-the-radar, and experimental -- most of the typical constraints of software development work at NASA were invisible to me. My mentor gave me only a goal and the groundwork he'd been building up for a few years now, and I was free to build towards that goal within the resources I had available. There were some implicit constraints, to be sure: I was dealing with VR devices, so whatever I wrote had to be fast. It had to interface with the Unity game engine, which was running the virtual environment, so I'd have to have some C# scripts at least as a go-between. And I'd have to be able to pass it on to another programmer when my 10 weeks were up, so I would have to keep it simple and document it well.
By the end of the internship, I had written about 1000 lines of C++ code, 800 lines of C, and 500 lines of C# scripts for Unity. This volume, small though it may be by the standards of some, would shock programmers from other branches of NASA, who might struggle to get 3 lines of code pushed into the production branch in 10 weeks' time. Indeed, I'm certain that my code was not bug free, not optimal, and if its purpose had been to launch rockets, would most certainly launch investigations into NASA's quality assurance practices. But luckily, it was only the stomachs of the users of the VR system that were at stake, and to the extent I was able to test and bugfix it during my short time there, it worked. And I'm happy to say I was able to see its effects played out even before I left, as my mentor was able to give several demos of a fully coordinated and working system to potentially influential people.
From a purely pragmatic and self-interested perspective, my internship was an invaluable experience in a real-world programming environment. I had practical constraints, I had to document everything, and I had to keep it simple and make sure it worked. I learned a lot about VR technology, about working with existing systems, and about keeping careful notes. And on top of that, I got an amazing and thorough inside look at one of the foremost centers of NASA development effort.
But for the people working for one of the agencies central to extending humanity's reach beyond Earth, self-interest is rarely considered and pragmatism is only an implementation detail. I most enjoyed my internship because it felt like it really mattered -- yeah, I wasn't working directly on rocket systems or launch control; yeah, maybe in 10 years time my code will be sitting on a dusty hard drive in a forgotten filing cabinet somewhere; but I helped show people at NASA the potential capability of a new piece of technology, and that might have lasting effects. And that's what will stick with me.
If I so choose, I am likely to be able to secure a co-op position at KSC in the near future. Chances are I'll be able to go back and, perhaps in a slightly different role, continue pushing on my small piece of NASA's mission. I'm not sure yet if that's where I want to go, but I know that the opportunity is there and I'm keeping it very close to my considerations about my future. No matter where I end up, however, Handmade Network is going to continue being an important part of my off-work mission. NASA benefits from well-made software as much as anyone, especially in times like these where funding is low and they are forced to turn to off-the-shelf products for many of their needs.
So to all the programmers out there, keep coding amazingly. And to all the other students, think about where you can make a difference. If you're an American citizen, NASA might be the place for you.
Cheers, and happy coding,
Andrew