I am a Ph.D. student at MIT advised by Armando Solar-Lezama. I received my bachelor's degree from Harvard in 2008.

I help programmers focus on the interesting functionality of programs. I do this by automating the tedious, error-prone aspects of programming. This involves designing more concise programming constructs and developing execution strategies that are both correct and efficient.

For my Ph.D. thesis I have created a programming language, Jeeves, for automatically enforcing privacy policies. Jeeves allows the programmer to separately implement information flow policies from other program functionality. In Jeeves, the programmer can rely on the runtime to produce results adhering to the policies. I have developed a formal semantics for Jeeves, proven guarantees about it, and implemented Jeeves as embeddings in Scala and Python. I am currently building a Jeeves web framework.

Earlier in my graduate career, I built the Verve operating system with Chris Hawblitzel. Verve is verified end-to-end for type safety and memory safety.

To see what my MIT colleagues are doing, you may be interested in the MIT programming languages page.

Peer-Reviewed Publications.

Talks.

In addition to conference and workshop talks, I have spoken about the Jeeves programming language at the following universities and companies: Harvard University (Dec. 2011), Northeastern University (Dec. 2011), New York University (April 2011), Google New York (July 2011), Facebook Menlo Park (March 2012), Google Mountain View (April 2012), UC Berkeley (April 2012), Boston University (April 2012), Brown University (June 2012), Tufts University (Colloquium, Dec. 2012), and Microsoft Research Cambridge (Oct. 2013).

Awards and Honors.

Selected Press.

Teaching.

I spend a fair bit of time thinking about how to help people understand how to use and evaluate their tools. In addition to serving as a Teaching Assistant for existing courses, I have designed the short courses Introduction to C Memory Management and C++ Object-Oriented Programming (IAP 2010) and So You've Always Wanted to Learn Haskell? (IAP 2010). You may see my CV for a complete listing of my teaching experience.

Profiles and Interviews.

Non-Academic Articles.

Other Relevant Activities and Links.

Activities.

In spring 2010, I started the annual MIT Programming Languages Offsite Meeting for exchanging ideas among MIT research groups in programming languages, software engineering, and human-computer interaction.

In fall 2009, I co-founded Graduate Women at MIT for the promoting the personal and professional development of graduate women. I also created the Positivity@MIT project for creating a more positive workplace environment.

As of fall 2013, I have been co-directing NeuWrite Boston, a collaborative working group for scientists and writers, with Amanda Gefter. Our goal is to improve and innovate the state of science communication.

Blogs.

I occasionally blog about academia, graduate school life, programming, culture, and other topics that interest me. I recently joined the CACM blogroll.

I also have a couple of satirical photo blogs. My brogramming project examines the "brogrammer" trope in tech culture and also society's image of the programmer. My Strong Reject meme satirizes the human aspects of the scientific reviewing process.

There is also Haskell Ryan Gosling, an exercise in discovering how much Haskell can be taught through Ryan Gosling.

Considering Graduate School?

I have compiled the following advice on applying for a Ph.D. in computer science:

  1. Deciding to Apply
  2. Standardized Tests
  3. Fellowships
  4. Applications
  5. School Visits
  6. Some notes on picking grad schools/advisors
  7. FAQ: Applying to Graduate School for Computer Science

You may also be interested in these blog posts I have written: