I grew up in Haverford, Pennsylvania, and attended The Haverford School.   From 1990–94 I attended Harvard College, graduating with an AB in mathematics. From 1994–97 I attended Harvard Law School, graduating with a JD and practicing law for several years in Boston. From 2003–10 I worked towards my Ph.D. in computer science at the University of Illinois at Urbana-Champaign with Vikram Adve as my advisor.
Other Interests
Outside of computer science research, I enjoy many varied interests; here are some of my favorites.
Music. I play the Baroque violin, recorder, and harpsichord, sing, and compose music, especially in the Baroque style. Here is a link to a web site with my compositions. Some of them have recordings by me and my wife, Sonia Lee, who is a fantastic harpsichordist. Here is a short video of me playing the opening of my own Sonata in A Minor on the violin.
Role-Playing Games. I enjoy playing, running, and designing fantasy and science-fiction role-playing games. I have a particular interest in classic, out-of-print games including FASA’s Star Trek and Doctor Who; Gary Gygax’s AD&D and Lejendary Adventure; and Chaosium’s RuneQuest.  Here is a link to my FASA Star Trek web site.  I have also designed an original game called the Simple Generic Role-Playing System (SIMGENS) for playing in any desired genre or setting with a minimum of preparation or fussing with rules.
Literature and Philosophy. I like reading books of all kinds, but particularly literature and philosophy. My favorite authors include Joseph Conrad, J.R.R. Tolkien, Hermann Hesse, G.W.F. Hegel, Richard Rorty, Shakespeare, and the Dalai Lama. Also Douglas Adams.
Comics. I like comics of all kinds, but particularly the so-called Silver and Bronze Age comics. My favorite is Jack Kirby’s Fourth World.
UNIX Tools.  I’m a big fan of classic UNIX tools (vi, sed, AWK, troff, etc.). These days I do most document production in groff, and I use vim for all coding and document editing.  I enjoy writing various useful AWK scripts and groff macros and preprocessors.  I recently wrote a set of groff macros and a preprocessor for making PowerPoint-like slides, so now I can use groff to make nice-looking presentations.
I like newer variants on the UNIX paradigm as well.  I use the fish shell for day-to-day scripting tasks (it’s nicer than bash and ksh) and redo as my build system (it’s nicer than make).  If you aren’t familiar with these tools, and you like working on the UNIX command line, then I highly recommend checking them out.
Apple II Programming. Growing up I enjoyed programming the Apple II. More recently, I have designed and implemented a language and runtime environment, called AppleCore, for Apple II programming. See this GitHub repository for more details.