Writing distributed applications is difficult: some nodes can fail while others are still processing and programmers frequently have to write their own consistency-management logic (for instance using locks to avoid read-write conflicts).
Waldo, addresses these challenges by allowing programmers to write transactional code on multiple nodes. I plan to write more about it. For now, here's a failed paper describing some of its features. Those that are interested, can check out Waldo's sister language, Ralph, which is still undergoing active development here.
I am working on the Sirikata virtual worlds project.
My research focuses on programming languages for novices to script objects in the virtual world.
I built a 12'x8' bird-watching observation deck 6' off the ground in a marsh for my Eagle Scout project at Clyde Shepherd Nature Preserve.
I built a simple tool to create and manage brackets online. It's still got some rough edges, but you can check out the prototype here.
I took an interactive graphics class at Stanford. For my final project, I built Taskwald, a multi-player browser-based game. I used Three.js for in-browser graphics, websockets to send messages to a central server, and go to actually write the logic for the central server. I'll write a little more about it in the future (what was difficult, what I would have done differently, etc.). For now, you can check out the video of the game below.
I ta-d Stanford's Intro to Computer Networking two years ago. To help with an in-class exercise, I built a simple tool to record and visualize Stanford's network. You can play with it here.
My Indian cousin was marrying a Pakistani boy in Bombay. For political reasons, this meant that half the wedding party couldn't really come. I built a simple photo-sharing service for the wedding so that people that couldn't make it could see what was happening.
The initial version of the site was written in php and users could download iOS and Android apps to post pictures and messages to the couple. Not that many people used it, but I learned a lot building it, and will post pictures soon.
I took machine learning this fall. For my final project, I worked with a team with two other friends to predict the runtime for x86 assembly programs. The full report is here, and it describes a lot of the techniques we attempted to use. The first paragraph sums up a lot of the motivation for a tool that can predict program runtimes:
Programs can be equivalent: given the same set of inputs, they always produce the same set of outputs. Superoptimizing compilers leverage this notion of equivalence, substituting one program (or section of program) with an equivalent program that runs faster. Recent work by Schkufza attempts to build a superoptimizing compiler that intelligently searches a program space composed of all equivalent sets of instructions. This work relies on being able to predict a program's runtime given its program text.