After I graduate in June, I’m planning to attend grad school and i mean...hopefully lol I’m genuinely really excited about this, as it’s been a dream of mine for at least…the last twelve to fourteen months. Even at the start of my junior year of college, I had no idea what I wanted to do after graduation, but I wasn’t even really considering graduate school. However, in the last year, I discovered that satellites are extremely cool, aerospace research is fun and fulfilling, and my coding skills are actually really useful in fields other than software engineering. I still don’t exactly know where I’ll be in ten years, but I’ve finally decided who I want to be when I grow up and what kinds of problems I want to work on.
Recently, my PI asked me what I want to do after grad school. I was a bit taken aback, because “after grad school” feels very far away, considering that I haven’t even started grad school yet, but I surprised myself by knowing the answer. During grad school, I want to research satellite controls. After that, I want to work on satellite and spacecraft controls for NASA, and I’m especially interested in docking and landing spacecraft — landing rovers on other planets or moons, or helping a lander safely rendezvous with an orbiter after taking samples from a planet or asteroid. Right now, I feel good about this career path; control theory is a field I find interesting, docking and landing spacecraft are problems that I find tricky but fascinating, and space exploration is a mission that I believe is meaningful and useful to society.
I think I would be happy as a controls engineer for NASA. At the same time, my life ambitions have shifted dramatically over the last few years, which makes it hard to be certain about where I’ll be a few years from now. At this time a year ago, I thought I might want to go to grad school, but wasn’t sure, because I hadn’t yet had a meaningful experience with academic research. Two years ago, I had just decided to change majors to aerospace engineering, and still thought I was more interested in airplanes than spacecraft. Three years ago, I planned to graduate from MIT as quickly as possible with a computer science degree, and then work as a software engineer. Four years ago, I was a seventeen-year-old high school senior planning to graduate and major in computer science at the University of Washington, then become a software engineer.
So, why did I want to be a software engineer? Why didn’t I explore academic research sooner? Why do I love research so much, enough that I want to do it for the rest of my life? What hopes and lingering doubts do I have about a career in aerospace research? How did I figure it all out? These are the questions that this blog post attempts to answer, for mostly selfish reasons — I want to be able to answer these questions, mostly for myself, but also for others like me who have struggled with the same questions.
If you find yourself to be the same person at the end of college as you were at the beginning – the same beliefs, the same values, the same desires, the same goals for the same reasons – then you did it wrong. Go back and do it again.
— William Deresiewicz, Excellent Sheep: The Miseducation of the American Elite and the Way to a Meaningful Life
First, in order to understand my past as a proto-software engineer, I’ll start by exploring a common cultural narrative that mostly fits: that of the “excellent sheep,” a portrait of a high-achieving young person who is ambitious but adrift and blindly follows a well-trodden path into consulting, or banking, or software engineering. The book this archetype comes from, aptly titled Excellent Sheep, has been mentioned a lot on the blogs, and is clearly influential in shaping the thinking of bright young people who worry a lot about selling out and finding meaning in their lives.
I read Excellent Sheep in high school, and revisited it in college; parts of it ring true, but I have some issues with it. Most shallowly, it depicts a campus of stylish conformists, which isn’t true to my experience at a college where some people have cool and unusual hair-and-piercings combinations, and i'm continually amazed at how their feet aren't FREEZING in the winter Excellent Sheep also criticizes students who double major and pursue breadth over depth, but most of the people I know who double major do so for cool and interesting reasons, like wanting to research the physics of materials and doubling in courses 8 and 3, or wanting to become a filmmaker but enjoying the rigor of a physics degree and doubling in 21M and 8.
However, double majors aside, I definitely know some MIT students who, through no fault of their own, are archetypal excellent sheep; they are brilliant, well-trained arrows with potential to soar, but only when aimed and released by an external force, with no self-knowledge or desires of their own shaping the arc of their flight. I used to be one of them.
Back at the beginning of my junior year of college, I had no idea what I wanted to do with my life, but I had already completed three internships at a large software company near Seattle, which I’ll call Company X, and was on track to get a job there after graduation. I didn’t feel like I was capable of making career decisions of my own; instead, I just listened to my recruiters, and kept signing offers, and never asked myself if I found software engineering fulfilling or interesting or meaningful. Once I entered the Company X internship pipeline, it was easiest to obey the excellent shepherds and keep walking the well-defined and well-paid path to a software engineering job.
One key trait of excellent sheep is always preserving optionality, striving to be a beautiful, undifferentiated stem cell with the potential to switch from one prestigious job into one of many other different prestigious jobs afterward, leaving as many career paths as possible open but unexplored. As such, when I was a freshman, an upperclassman told me to major in computer science because it was in general, i don't think this is bad advice -- if all courses are equal to you, might as well be course 6 for the career safety. but it was definitely bad advice for me, personally
Ironically, I found the sheer number of possible career paths inviting but paralyzing. I wanted to preserve my options, and committing to one path necessitated pruning others, so I refused to specialize. I didn’t want to give up on any of my possible future selves, so I kept walking the generalist path towards a job in software engineering. Although I didn’t realize it, this was, of course, still a choice about the person I wanted to become, a choice that killed some possible futures and birthed others, a choice that limited me more than I knew.
In time, I started to feel alienated by the corporate atmosphere of Company X and the lack of meaning or larger purpose behind the software I was writing. I began to find the actual act of writing code to be increasingly tedious, although it was still sometimes enjoyable and satisfying. It’s possible I would have decided to be a software engineer if my internship projects fit neatly into a larger mission, or if the code I was writing was more intellectually interesting, or if I had interned somewhere with a different company culture.
But instead, I slowly became dissatisfied with the idea of working as a software engineer and longed to do something different. This led me to change my major to aerospace engineering at the end of my sophomore year, after two internships at Company X. Even then, I imagined completing an aerospace engineering degree and then still working for Company X after graduation, so I interned there for a third time the summer after sophomore year. Despite my many well-preserved career options, and my obvious, pressing desire to finally specialize, I still couldn’t envision a path for myself outside of software engineering.
Junior fall, I finally turned down an internship offer from Company X, but I didn’t know what I wanted to do instead. Luckily, that same semester, I took 16.07: Dynamics, where I learned about satellite dynamics and astrodynamics for the first time. I remember doing a 16.07 lab where we had to write MATLAB code to plot the trajectory of a spacecraft launching from Earth to orbit Mars, and i realize this still sounds like i was being shaped by an external force, but what i was really feeling was the force of my own desire, which i had been repressing/ignoring up to that point. finally letting myself feel it freed me to make different choices.
I went out to dinner with my girlfriend and while writing this, i asked her if she remembered this and she was like "yeah it was weird" that my life had been changed by one assignment, and that I wanted to do research on spacecraft, and that I was thinking about finding a UROP and maybe eventually applying to grad school. My aimlessness and uncertainty about the future started to melt away, which surprised me even at the time; I thought choosing a path towards a future career specialty would be a slow, arduous process of trial and error, and in some ways it was, but in other ways, it happened all at once in the 16.07 classroom.
We choose to go to the moon. We choose to go to the moon in this decade and do the other things, not because they are easy, but because they are hard, because that goal will serve to organize and measure the best of our energies and skills, because that challenge is one that we are willing to accept, one we are unwilling to postpone, and one which we intend to win, and the others, too.
— John F. Kennedy, Rice Stadium Moon Speech
Junior spring, interestingly, <a href="https://mitadmissions.org/blogs/entry/junior-spring/">by the time I wrote about my classes in February 2020</a>, I seemed pretty set on satellites, even though</span> <a href="https://mitadmissions.org/blogs/entry/new-decade-new-me/">one month earlier I claimed I was not sure what I wanted to do with my life</a> I took 16.831: Space Systems Engineering, a capstone class in my major, and was introduced to fun fact: I am in fact one of the many many authors on this paper. but there are so many authors that there are two Alex M. '21s a 1U = 10 cm^3 cube, so a 3U is 30 cm x 10 cm x 10 cm. People often say it's the size of a cereal box, which is not really true dimensionally, but the scale is about the same designed for climate science and ocean observation. BeaverCube’s main science goal is to help the New England fishing industry by measuring changes in ocean temperature and salinity in the northwest Atlantic Ocean, tracking the impacts of climate change and contributing to knowledge on changes in fish migration.
I was assigned to work with two other students on determining BeaverCube’s attitude means orientation for satellites, idk why or figuring out where its cameras were currently pointing, and controlling its orientation, or pointing its cameras towards Earth to take pictures of the ocean. This was an absolute dream — a well-timed gift of an opportunity to figure out if I really wanted to spend my life, or at least the next few years, researching satellite controls and dynamics.
Even better, my work in 16.831 felt meaningful, because it obviously fit into the bigger picture of BeaverCube’s overarching mission goals. To measure ocean color in order to estimate salinity and sea surface temperature, BeaverCube’s cameras need to point towards the ocean. To point its cameras at the ocean, BeaverCube first needs to know where its cameras are currently pointing.
So, in support of these goals, my group was supposed to start by figuring out how to turn measurements of the sun, local magnetic field, and angular velocity into knowledge of how the satellite was oriented. We didn’t entirely finish, partially due to COVID, but also just because BeaverCube, like a lot of other space missions, had enough technical and programmatic complications to delay our schedule even without an inconveniently-timed pandemic.
But anyway, we started work on modeling BeaverCube’s sensors: I wrote code to simulate reading angular velocity data from a gyroscope, sun angle data from solar panels, and magnetic field data from a magnetometer. Next, we modeled the magnetic field and sun vectors in an Earth-centered frame based on BeaverCube’s position in orbit. By sensing the sun and magnetic field in BeaverCube’s body coordinate frame, and comparing these vectors to their known values in an inertial Earth-centered frame, we could figure out how BeaverCube was rotated relative to the Earth. It’s hard to explain this without a picture, so here’s a rough drawing of how this works:
We had to account for sensor noise, and gyroscope bias, which drifts over time, so we used an Extended Kalman Filter (EKF), which basically checks noisy sensor data against its previous guess of BeaverCube’s orientation and angular velocity, and combines the two to find a better guess, converging over time. As I worked on the EKF and other code modeling BeaverCube’s physics, I was completely fascinated, never bored. At first, I thought it was strange how much I loved my work computationally modeling BeaverCube’s physics, when I had sometimes found writing code for Company X to be tedious.
Now, I think this makes sense; it reminds me of how I like blogging and writing nonfiction but don’t usually write poetry or fiction. In contrast, some of the other bloggers enjoy writing across genres and do it very well — I always look forward to reading their work. Similarly, some programmers probably enjoy writing code regardless of its applications, but I really prefer modeling and controlling physical systems to, say, and yet, i use drivers and data processing pipelines, and i read fiction and poetry sometimes, and i admire people who create all of these things so i can benefit from them
As the pandemic raged around me in the spring, I found it hard to focus, but I loved the work I was doing, and I decided to keep UROPing on BeaverCube during the summer. I spent most of the summer debugging the EKF, but quickly realized that there was another problem: even once BeaverCube knew where it was oriented, I still hadn’t figured out how to control its orientation! BeaverCube needs to be able to rotate itself in orbit, point its cameras at the Earth during the imaging phase, point its antenna at Earth to communicate with our ground station at MIT, and orient its propulsion system along the track of its orbit to thrust in the right direction.
BeaverCube’s only actuators will be magnetorquers, which can only torque perpendicular to Earth’s magnetic field at any given point in orbit. This makes BeaverCube hard to control, because it can only use two dimensions of torque at any given point, but the two dimensions change over time as BeaverCube orbits and the magnetic field shifts– again, this is hard to describe without a picture, so here’s a drawing:
I stayed with my UROP for the fall, and with lots and lots of help from my wonderful grad student mentor, I started working on controlling BeaverCube. Our approach involves running an optimization algorithm to find ways to maneuver despite the constraints on available torque, by taking advantage of the changing direction of the magnetic field. Theoretically, if BeaverCube torques in the right direction, at the right time, it should be able to stitch together a trajectory to point its cameras or antenna at Earth, or aim the propulsion system in the right direction for a thrusting maneuver.
Finding these trajectories continues to be a challenge, but my grad student has been doing a lot of the work there; my contribution has mainly been porting trajectory optimization code from MATLAB to C++ to run it on BeaverCube’s flight computer, and interfacing with the EKF and a Simulink testbed I made to model BeaverCube’s physics and the space environment.
I spent a lot of time over Independent Activities Period, aka January debugging trajectory optimization code and thinking about what I would do after BeaverCube is done. BeaverCube’s launch date has been repeatedly delayed because of COVID-related slowdowns with lab access and staffing shortages, but it’s currently scheduled to fly in August 2021, with a handover date for final testing in honestly i don't even know when the handover date is.... This timeline works nicely with the academic calendar. I’ll wrap up my work on BeaverCube around the time I graduate.
For now, I still have lots of exciting work to do on BeaverCube, finalizing the trajectory optimization code, moving the EKF and other attitude determination & controls software into C++, and working with other UROPs to develop the mission planning software that will tell BeaverCube when and where to communicate with the ground station, take pictures, and test its propulsion system. The next few months will be a whirlwind, in a good way, but eventually, all projects have to come to an end; I’ll start a new project over the summer and next fall, as I transition to grad school.
We stand on a great threshold in the human history of space exploration…If life is prevalent in our neighborhood of the galaxy, it is within our resources and technological reach to be the first generation in human history to finally cross this threshold, and to learn if there is life of any kind beyond Earth.
After BeaverCube, I’m not entirely sure what I’ll end up working on. There are specific projects and ideas I find interesting: using low-thrust propulsion to keep satellites in specific orbits as part of a larger weather-sensing constellation, which reminds me of how much I loved learning orbital dynamics in 16.07, and using on-orbit machine learning to identify which images of the ocean are cloud-free and thus useful to downlink, which would use some skills I picked up working for Company X. More broadly, I’ve really enjoyed learning more about controls and optimization while working on BeaverCube, and I’d be happy to do similar work for another spacecraft.
However, before I commit to working on a new spacecraft, I need to think critically about its mission goals and downstream impacts. There are a lot of reasons why a corporation or a government or a corporation subcontracted by a government might want to take satellite images of Earth. One reason is environmental science, as exemplified by BeaverCube; satellites are useful for researching phenomena like the rise of ocean temperatures and the loss of Arctic ice.
There are also archaeology missions that find traces of ancient civilizations in remote places, weather satellites that track hurricanes, and navigational satellites that support projects like Google Street View. Some satellites flip their cameras around and image space, supporting space exploration and astronomy. I like all of these applications. But in unfortunate contrast, many imaging satellites are spysats for corporate or military surveillance, and any well-intentioned research on other imaging applications can be reused on spysats.
I worry a lot about the ethics of building satellites, especially given the context of the American aerospace industry. In some ways, this is premature. I haven’t really built or published or discovered anything yet. But I plan to spend at least the next few years working on satellites, and I will be responsible for the impacts of that work.
So far, I feel good about BeaverCube; my work is interesting and fulfilling, and I believe that it serves humanity, with the benefit to climate science and New England fishermen outweighing the potential downstream harms. BeaverCube’s small size also helps prevent technology reuse on spysats, because it’s a 30 cm x 10 cm x 10 cm CubeSat, and most CubeSats are used for scientific research and outreach and are too small and cheap for high-resolution spy images.
I like CubeSats, and they keep me optimistic about the future of space and the potential for ethical satellite research. I’m also increasingly interested in planetary science and missions to visit other planets and moons in our solar system or observe faraway exoplanets that orbit other stars. This is partly due to my interest in climate science — space exploration and astronomy missions that help us understand the climate and geology of hot Earth analogs, and satellites like BeaverCube that track climate change on Earth both help scientists understand atmospheric dynamics and formation of planetary atmospheres. I think the intersection of space missions and climate science is really interesting and really good for society, and I want to explore it.
Currently, I am exploring this intersection by getting way into the first assignment for 16.83, which is to pitch a concept for a space mission. My concept is a combination orbiter-lander mission to Venus with two main goals. First, my mission would characterize the composition of the Venusian atmosphere, focusing on noble gases, to understand what Venus used to look like, and how its development differed from Earth’s. In addition to looking for noble gases, I want to confirm findings of phosphine, a meaning it is likely produced by microbial life in the atmosphere of Venus. Confirming the presence of phosphine on Venus is the next step in the search for life in our solar system.
Secondly, my mission would map the surface of Venus in detail, checking for signs of active volcanoes, and to analyze samples from Maat Mons, the highest volcano on Venus. This would help scientists understand the geophysics of Venus, and if active volcanism is found, it could provide a possible alternate explanation for atmospheric phosphine. Although phosphine is mainly known as a biosignature gas, volcanoes on planets with reducing atmospheres, like Venus, can sometimes produce phosphine.
This mission currently exists only in my brain, and although at press time, i can report that the five-minute pitch presentation has been completed and recorded it’s unlikely to actually happen. Still, this is exactly the kind of project I would like to work on — getting an orbiter to Venus is an interesting astrodynamics problem, and landing on Venus to take and analyze samples is a series of interesting problems in controls, autonomy, and instrumentation. Also, of course, this mission would support fascinating and topical research in planetary and atmospheric science, with the potential to help scientists deeply understand how Venus became so much hotter than Earth and further refine the search for phosphine and possible microbial life in the heavy, sulfuric Venusian clouds.
Developing this mission concept has felt like a gentler version of what I experienced in 16.07; rather than feeling struck by lightning, it feels as though a streetlight has come on, illuminating a previously-hidden road forward into my future. I still want to go to grad school and study spacecraft controls. I still want to work for NASA landing spacecraft on other planets and rendezvousing landers and orbiters. But now, I feel like my path has been refined further; I want to work on projects that fall into the intersection of climate science and space exploration, like BeaverCube, and like my proposed mission to understand the atmosphere and geology of Venus.
I think I know where I want to go, and who I want to be. I’m incredibly excited about grad school, and I’m so glad I chose this path even though it meant pruning others. I’m glad I said goodbye to the paths I didn’t walk, the possible future selves I never became, the salary at Company X that I turned down. It seems silly, but by letting go of my perfectly unexplored branches on the tree of life, I ended up becoming myself, and I like who I’ve become.
- i mean...hopefully lol back to text ↑
- i'm continually amazed at how their feet aren't FREEZING in the winter back to text ↑
- in general, i don't think this is bad advice -- if all courses are equal to you, might as well be course 6 for the career safety. but it was definitely bad advice for me, personally back to text ↑
- i realize this still sounds like i was being shaped by an external force, but what i was really feeling was the force of my own desire, which i had been repressing/ignoring up to that point. finally letting myself feel it freed me to make different choices. back to text ↑
- while writing this, i asked her if she remembered this and she was like "yeah it was weird back to text ↑
- interestingly, by the time I wrote about my classes in February 2020, I seemed pretty set on satellites, even though one month earlier I claimed I was not sure what I wanted to do with my life back to text ↑
- fun fact: I am in fact one of the many many authors on this paper. but there are so many authors that there are two Alex M. '21s back to text ↑
- 1U = 10 cm^3 cube, so a 3U is 30 cm x 10 cm x 10 cm. People often say it's the size of a cereal box, which is not really true dimensionally, but the scale is about the same back to text ↑
- attitude means orientation for satellites, idk why back to text ↑
- and yet, i use drivers and data processing pipelines, and i read fiction and poetry sometimes, and i admire people who create all of these things so i can benefit from them back to text ↑
- Independent Activities Period, aka January back to text ↑
- honestly i don't even know when the handover date is.... back to text ↑
- meaning it is likely produced by microbial life back to text ↑
- at press time, i can report that the five-minute pitch presentation has been completed and recorded back to text ↑