Manuel Blum's Advice to a Beginning Grad Student
A beautiful reminder of the "Big Picture" of grad school.
Mor Harchol-Balter on Applying to CS PhD Programs
The best advice I have seen on the CS grad school application process.
Richard Hamming on "You and Your Research"
Every time I look back at this, I learn something new.


San Francisco Bay Web Cam
A 24/7 live view of the Bay Area from the Lawrence Hall of Science
"On the Complexity of Coding" by Gelfand, Dobrushin, and Pinsker
An obscure paper I found useful


Students sometimes ask me about the jobs and internships I had before coming to MIT. Here is a summary.
Summer 2015: Microsoft Research Redmond, Research intern
I worked with Stuart Schechter on the design and analysis of password-hashing algorithms. We discovered a practical attack on the Argon2 password-hashing function, which led to changes in the design of that hash function, and also to a new candidate password-hashing function.
Summer 2014: Microsoft Research India, Visiting PhD student
I visisted the Microsoft Research lab in Bangalore to work with Bill Thies and Ed Cutrell of the Technology for Emerging Markets research group. With them, I designed and evaluated a few new methods for deterring dishonest behavior (cheating, lying, etc.) in online contexts. We were particularly interested in discouraging students from cheating on online quizes and exams, but we looked at Mechanical Turk and other online settings as well. Our TOCHI paper has more details on the project.
Summer 2013: NYU in Ghana, Intern
In the summer before grad school, I worked with Jay Chen (of NYU Abu Dhabi) on new techniques for distributing software updates to computers with intermittent Internet connectivity, or with no Internet connectivity at all. As part of the research project, I traveled to a small town in Ghana to field test our idea in a region with relatively slow and unreliable Internet. I implemented our proposed update-distribution system and installed it on computers at Internet cafés, schools, and graphic design shops. For more details about the project, take a look at our DEV paper on the system.
2011-2013: Yale, Systems engineer
I was a systems engineer in Bryan Ford's Decentralized and Distributed Systems Group at Yale. Bryan was my research project advisor during my senior year of college, where we worked on a research paper about anonymous messaging. A year after college, I returned to Yale to be a staff member in Bryan's research group, working on privacy-related projects. In that capacity, I worked with post-docs, PhD students, and undergrads to identify good research problems, convert our proposed solutions into code, and to produce research papers about our results.
2010-2011: UNDP/Millennium Villages Project (Uganda), Fellow
After graduating from college, I spent a year in East Africa working with the now-defunct Millennium Villages Project, under the auspices of the UN Development Programme. Millennium Villages was an international non-governmental organization focused on achieving the Millennium Development Goals in a series of sites across sub-Saharan Africa. My goal was to help build and deploy an electronic patient-tracking system that the project's community health workers would use. I spent the majority of my time in the town of Mbarara, in southwestern Uganda, though I also visited project sites in Kenya, Rwanda, Ghana, Mali, and Ethiopia. The Millennium Villages Project deservedly generated an enormous amount of controversy. Here are a few articles that give a taste of the issues with the project design.
Summer 2009: Nepal Wireless Project, Tech volunteer
The Nepal Wireless Project provides low-cost Internet connectivity to a number of schools, health centers, and businesses in the Myagdi and Mustang districts of Nepal. I received grant funding to support a 10-week trip to Nepal to work with Mahabir Pun, the Project's founder, to upgrade the equipment along the length of the Project's network. With a group of staff and volunteers, we trekked from village to village, removing the old equipment and installing the new radios and antennas. By the end of the summer, we had replaced equipment at all of the major relay stations in the network and had brought several new elementary school computer labs online.
Summer 2008: New York Times, Interactive News Group, Intern
I worked with editors and reporters to design interactive mini-sites covering special news events. I contributed to the Times' online coverage of the 2008 Presidential Election and the 2008 Summer Olympics. There was not much precedent at the time for what news organizations should do with their websites so there was a lot of room for exploration and experimentation.
Summer 2007: GE Argentina, Logistics intern
In my first summer in college, I was an intern at General Electric's corporate offices in Buenos Aires, Argentina. My main project was to survey the import and export processes at each of the eight GE-owned businesses in the province of Buenos Aires. The goal was to ensure that every GE business was complying with GE's anti-corruption policies in their interactions with customs officials in Argentina. To my surprise, found the inner workings of import/export processes fascinating.