Computers do amazing things these days. They help us figure out patterns of contagion, identifying places where people are getting sick. And they play key roles in space exploration. Software Architect Erik Antelman helps design and explore computer systems to make these things possible.
Erik Antelman has always been “more concerned with making things run fast than whether they could run at all.” Antelman is a software engineer, a person who works to make computer programs run quickly and efficiently.
His life as a programmer began in sixth grade, when he got access to a computer and learned to write some simple programs on it, including one that calculated the golden ratio for any number. For Erik, the coolest part of programming was the infrastructure that allowed him to use the computer at all: the commands that he used to talk with the computer and the operating system that allowed it to interpret the commands. How did the computer handle all of the tasks he could ask it to do? And how did it deal with multiple users at the same time?
Today, Antelman harnesses computers to perform large-scale tasks in elegant, efficient ways. One of his projects involves scanning huge numbers of posts from social media. Twitter alone sees hundreds of millions of new tweets every day. Real-life events, like a big playoff game or a tornado, cause trends on social media, and sometimes scanning the data for trends can be the best way to spot the real-life events. For instance, Antelman’s programs can look for Twitter posts that contain words related to symptoms of dangerous diseases. (Can you guess what some of those words might be?) If a bunch of these posts show up at the same time, Antelman can spot an outbreak even before local doctors become aware of it.
This task, Antelman says, is simpler than it might seem. And it involves math as well as computer programming. “Statistics is essentially counting.” “People believe that they can’t understand it because it’s complicated” but statistics really boils down to “counting things and categorizing” them.
Just as you might use a simple distance formula to find the distance between two points in three-dimensional (3-D) space, Antelman’s programs try to find the “distance” between Twitter posts. The programs look at the number of unique words as “dimensions,” just like the X, Y and Z axes in 3-D space make a 3-space vector. Counting words and comparing things like “distance” between these word vectors is not a terribly difficult thing for a computer to do, as long as the number of posts to deal with is relatively small. The hard part is getting the project to work on a real-life scale: hundreds of millions of posts at a time and tens of thousands of words. Antelman is especially interested in rising to this challenge.
If a computer is set to work on all the Twitter posts of even a single day, using simple algorithms one might use to compare a small set of posts, it won’t be able to finish in a reasonable amount of time. Finding the “distance” between posts of too many “dimensions” is just too computationally expensive. How can the search be made faster, more elegant, and more efficient? Antelman works on this problem, trying to improve both the algorithms that the computer uses and the infrastructure that it uses to run them, the operating system. This is the job of a software engineer. In this case, as in many others, making the computer run fast turns out to be just as important as making it run at all.
Antelman’s interest in computers originally led him to attend Hampshire College to study electronic music, but during college he became more and more interested in the work of a cognitive scientist studying human vision. He was fascinated by the computer systems that this professor and others were using in their research, and he decided to stop studying music and focus on computer systems instead.
Antelman later used his expertise with efficient computer systems with a contractor at the National Aeronautics and Space Administration (NASA). He worked to make computers that were going to be used in space more versatile, allowing a single computer to do jobs that were previously going to be performed by multiple computers. This is a big deal for a space mission because it takes a huge amount of fuel to lift mass out of Earth’s gravity. One computer instead of two means less mass to lift and less fuel needed.
He has also worked on operating system components for flight control computers, helping them run flight programs safely and reliably. The Orbital Sciences Cygnus rocket, which makes deliveries to the International Space Station, used Antelman’s operating system component, which means that his code has flown into space! Fortunately, software weighs nothing at all.
How can you prepare to be a software engineer? Learn how to do simple programming and then keep solving new problems. It takes many different skills to do what Antelman does. He himself, an established engineer, is still learning all the time.
One of his favorite things to do is to “find a way to have the job pay for learning something that I’m interested in.” He’s always taking on new, unfamiliar kinds of work, figuring out how to do it and ending up knowing more than he did before. This kind of learning works at any stage of experience. Programming computers to do new and unfamiliar tasks is a large part of the learning process of software engineers, both those with decades of experience and engineers just starting out.