InterviewUSENIX

 

a conversation with Russ Cox

russ Russ Cox has been a world-champion-level computer programmer for several years. He has attended several USA Computing Olympiad training camps and a world championship tournament in Holland. He also has been one of the luckiest secondary students in the world: his part-time job is at AT&T Bell Labs. This conversation between Russ and Rob Kolstad was held via email during September of 1997.



Rob You've been associated with USENIX for several years now via the USA Computing Olympiad (USACO). Have you spent lots of time on USACO? Have those experiences had any value?

Russ Yes to both questions. Over the past three years, I've spent five weeks at national or international programming contests as well as time grading lesser ones. I attended the USACO training camp and final round, held at the University of Wisconsin, Parkside, in 1995, 1996, and 1997. In 1995, I had the opportunity to represent the United States at the International Olympiad in Informatics (IOI), held in the Netherlands. Shortly after Thanksgiving, I will be travelling with the US team to South Africa for the 1997 IOI.

In addition to time spent at contests and preparing for them, I graded our two Internet contests this year as well as the USACO Competition Round. Grading is somewhat automated, but still requires 15 to 20 hours of human time for each contest. I hope to fully automate the process for the coming year.

These experiences have had tremendous value for me. I had a great time at the USACO training camps during the past three years. At both the USACO training camp and the IOI, I've had a chance to meet and get to know bright computer programmers from all over the United States and around the world.

At the same time, I've learned quite a bit about algorithms and programming style from the contests. All the formal instruction I've ever had about topics like algorithmic complexity or geometric algorithms has come from USACO's training camp. Furthermore, discussions from training camp, whether during a lecture or over lunch, have sparked self-study of myriad topics from hashing to finite state machines to machine instruction timings.

Finally, there was 1996. As I mentioned before, I made the IOI team in 1995. Thanks to a combination of other distractions and overconfidence, I didn't prepare myself enough for the 1996 final round and performed extremely poorly. As a result, I didn't make the IOI team that year. I worked hard in preparing for 1997's training camp and happily made the IOI team once again. The whole sequence was a great lesson in both humility and persistence.

Rob And now you're headed to college?

Russ Yes. I just graduated from high school last June, and am starting my first year at Harvard. I wanted a liberal arts school so that I'd have a wide range of nontechnical courses to choose from. If the technical sides are ever lacking, it's relatively painless to cross-register for classes at MIT.

Rob How will you choose a major?

Russ I'm not really sure how I'm going to choose a major. I'm leaning towards computer science right now­and math is definitely in the running­but anything is possible. No matter what the major, I plan to take all my electives outside it. Two years ago I was fully convinced that courses like History and English were just not for me and didn't pay much attention to them. Some great teachers during the last two school years turned me around completely, and I definitely expect to take a broad variety of courses.

Rob What do you anticipate will be the high points at Harvard? Low points?

Russ My high school courses were great, but often left me pursuing further exploration of the material on my own. The library was often useless; if I knew a teacher who might have information on the subject, that often helped. But usually I never found what I wanted to know. I'm looking forward to a much richer font of information at Harvard.

Furthermore, I'm excited about the chance to meet and interact with so many bright people from so many different places. USACO, IOI, high school, and my various summer jobs have shown me that I enjoy being around really smart people from all over. One of the highlights of the past school year was arriving at school an hour early each day and sitting around with a handful of friends having philosophical discussions about current events, ancient history, or even a random Simpsons episode that someone had brought in. When I visited Harvard, I got the impression that this was a very realistic expectation for the future as well.

At the same time, I'm hoping that the environment shift won't be too much of a shock. I haven't been thrown into a wholly new environment in six years, but rather have been task switching between four or five established ones. I'm leaving all of these behind to explore a new one. I don't expect it to be a large problem, but it's a skill I'll have to relearn. The same applies on a smaller scale to my computing environment, but again, I expect it to be more a chore than an insurmountable obstacle.

Rob Have you been able to apply any of your computer skills in school or in the workplace?

Russ Yes. I spent a good part of my senior year in high school setting up an Internet gateway and an email subsystem for the school and even got course credit for it. In addition, I've spent the last three summers working for Bell Labs and now AT&T Labs­Research.

Rob What did the Internet gateway for school entail? Did you learn much?

Russ I started with a stock Linux system. Initially, I worked quite a bit on replacing some of the more complex Linux daemons with simple, more secure, home-grown ones. The whole login process was shell scripts augmented by a couple five-line C programs, complete with md5sum-based challenge/response authentication.

I also hacked up 70% of a sendmail replacement inspired by Dave Presotto's Upas mailer, but ultimately concluded it was too big a job. I had everything done save walking the outgoing mail queues (we were still passing outgoing mail to BSD sendmail), but found that good error recovery was increasingly a problem. If I had been there for another year, I would probably have stuck it out with my mailer and login programs, but I decided the system had a much better chance of surviving without me if it was running daemons that were at least well understood. Unfortunately, I didn't really have enough time to produce a robust system. Now the only extensive shell scripts that remain in use are the ones that perform local delivery to Novell Netware.

I learned an incredible amount about TCP/IP, mail routing, and shell scripts, as well as way too much about the Windows 95 TCP/IP stack. I still get a phone call once in a while when things break and the student who took over for me isn't available.

Rob And at work? You mentioned AT&T Research and Bell Labs.

Russ For the last year or so, I've worked with cable modem trials for AT&T Labs­Research. We telecommute using cable RF downstream and 28.8kbps POTS modems back upstream. The speed is really nice. If you play with the TCP window sizes, you can get a full two megabits per second datastream into a PC. The result is incredibly nice Web/Ftp access­you begin to notice sites that are "only" connected to the net via ISDN or a T1. You get hit whenever you want to upload something, but it's easy enough to avoid.

Besides the cable modem work, I do a lot of system administrivia. In addition, I've been involved with maintenance of the servers that handle challenge/response authentication for our Internet firewall. There are also lots of small "one afternoon" projects: augmenting Research UNIX's lp to be able to send jobs to BSD lpr hosts, writing a quick and dirty SNMP client to maintain modem racks remotely, things like that.

Finally, I multitasked work for AT&T this summer against playing with Brazil, Bell Labs's internal successor to Plan 9. I have it running on a laptop and recently have been playing with DHCP and other issues related to portable computing. Mostly, it's involved hacking at the IP stack and other network-related programs; it's a lot of fun.

Rob How have these experiences been of value to you?

Russ First of all, I've learned incredibly much about dealing with users. At school, I supported the entire faculty and student body, and at AT&T I've been involved with technical support for others involved in the cable modem trials. The skills you learn in user support­clearly defining the problem, unambiguous communication, asking effective questions, patience­are also helpful people skills for life in general.

The second benefit has been to my programming. Since I first installed the public release of Plan 9 in April of last year, I've read quite a bit of the kernel and other sources. Reading quality code has improved my programming skills amazingly. There is just no comparison between programs I wrote two or three years ago and the programs I've written recently. Furthermore, thanks to both reading code and, more importantly, interacting with so many people from the pre-split Bell Labs computer science center, I've internalized the UNIX "do one thing well" philosophy to a much greater extent than I had three years ago. This has made my programs ultimately simpler, more concise, and yet much more useful.

Rob Do you participate in any activities outside the computer world?

Russ Yes. I'm currently an assistant scoutmaster with the Boy Scout troop in town. As a scout in that troop, I earned the Eagle Scout rank and spent my last five years in various leadership positions. In high school, I was the editor of the school newspaper and managed the baseball team. I also sang in the school choir. For the last five years, I've worked for some fraction of each summer as a lifeguard at a Boy Scout camp in upstate New York. I put in a full season this year­five weeks­ as a good way to end my time there, at least for now.

Rob Would you like to share any dreams you have with our readers?

Russ Ultimately, I don't know what I want to do when I get out of school. It might be research or teaching or something entirely different. I just don't know. There are some persistent dreams, however:

  • A year or so ago, I had this one moment of great clarity where I was convinced that P == NP, but I don't remember the reasoning behind it.
  • A friend and I have been tossing around the idea of writing a book about the kind of programming issues that are involved in programming contests and that genre of problems in general.
  • Someday, I'm going to bowl a 300. A bunch of high school friends and I went bowling semiregularly over the summer, and I bowled a 180 my last time out.
  • Somewhere in the future, I'd like to grab a couple friends and hike the entire Appalachian Trail. It runs from Maine to Georgia, and people doing the entire thing usually take several months.

 

?Need help? Use our Contacts page.
First posted: 3rd December 1997 efc
Last changed: 3rd December 1997 efc
Issue index
;login: index
USENIX home