Hi there - you've reached my piece of the internet. I'm a senior at Princeton University pursuing a Mechanical and Aerospace Engineering degree with certificates in Robotics and Intelligent Systems and Computer Science.
I'm an aspiring entrepreneur interested in designing and building robots, creating simulations, using learning algorithms, visualizing data, and playing with 3D graphics.
This site is currently under heavy development, so more content will be added as my schedule and motivation permit. I run it using apache, django, and git on my EC2 server.
In the meantime, check out some of my projects and feel free to contact me.
This page is an introduction to some of my favorite projects, past and ongoing. Feel free to reach out to me about anything here.

For my senior thesis at Princeton, I led a team of mechanical and electrical engineers to design, build, and analyze the first segmented robotic hexapod with a passively compliant spine. Here is the abstract:
Hexapedal running robots have been a central platform for research in biologically-inspired locomotion over the last decade. These machines aim to capture the remarkable levels of stability and energy efficiency achieved by natural hexapods like cockroaches, while maintaining simplicity through one degree-of-freedom per leg actuation and high-level open-loop trajectory generation. However, animals such as mammals and reptiles also heavily employ the flexibility of their bodies for locomotion, an effect not replicable with the rigid chassis of previous designs. In this paper we present preliminary experimental data from xJüs - the first segmented hexapod with an adjustable-stiffness passively compliant spine, designed to store body energy and reduce waste by minimizing conflicting internal forces. Results show a reduction in required motor torques when spinal compliance is introduced on flat terrains, as well as improved capability to overcome large obstacles. Discussed are our mechanical, electronic, and software design approaches in building a modular and low-cost machine, as well as experimental methods and initial findings.
Our final paper and poster discuss our prototype and experimental findings in detail. I developed a full 3D simulation of our design using Blender, Python, and the Bullet physics engine that allows us to explore the effect of our compliant joints and optimize design parameters. I also wrote the control algorithms and software used by the robot, and worked on the mechatronic design. We kept our code, wiki, and issue tracker on a private GitHub repository to stay organized. The video links below show the result of this seven month project:
I run this website as well as princetonmensclubsoccer.com on my server on Amazon's Elastic Cloud. The server runs with Ubuntu 12.04, Apache, and MySQL, and both websites are Django 1.4 applications. The frontends use Twitter Bootstrap, jQuery, and Django templates. Using git hooks, I develop locally and push changes to production with one command. Both websites are hosted under the same static IP, so I use an Apache Virtual Host configuration to manage them.
I worked with a team of five students to design and build a search and rescue robot for a class in mechanical design. It was a semester-long project, and the end goal was for our robot (named Farva) to autonomously navigate an obstacle course, which consisted of picking up a symbolic medkit, climbing over a 12" wall, navigating a narrow chute, and delivering the medkit into a basket. Our robot had two sets of wheels in tank drive, a separately actuated set of paddle arms that helped it climb, and a 3D-printed grabber arm to interact with the medkit.
From this project we learned about design, simulation, manufacturing, and project management. The class featured guest lectures about project management and safety, and became a featured article on the Princeton home page.
Check out a comparison of Farva breaching the wall in a 3D physical simulation I made in 3DS Max vs actual footage, as well as an early proof-of-concept of the paddle arms.
In my junior year, I designed and simulated an omnidirectional spherical robot driven by counter-rotating flywheels. More detail coming soon.
I worked in a team to design and simulate a single-incision multi-tool robotic arm for use in laparoscopic surgieries. To be updated soon, but take a look at these videos for now:

Also in the summer of 2011, Princeton professors Kevin Wayne and Robert Sedgewick expressed to me a major problem they were experiencing with their computer science courses. The problem was that during the initial weeks of class each semester, a huge rush of students needed help setting up the necessary programming environments, requiring massive troubleshooting efforts from the staff and many half-baked temporary fixes to get students going.
The issue was that a student who with zero programming experience needed to set up the several system dependent libraries and packages required for the course, but the instructions differ based on operating system, architecture, class, and other factors. I set out to write a set of one-click installers that would completely automate the complicated process and eliminate the need for troubleshooting.
The installers are now in use for the two central Princeton CS courses COS 126 and COS 226, and are linked from their home pages under "To get started". The installers (v3.0) are also being used for the free online class Algorithms, Part I on Coursera, which has around 85,000 students signed up and began August 2012. I am a staff member of this course.
The installers are open source and I host them at this GitHub Repository.

In the summer of 2011, my job was to create material for computer science courses at Princeton. Given free reign to choose a project, I proposed to design a platform for the easy creation of three-dimensional models, simulations, and games for students.
The result is a Java library called Standard Draw 3D, and my goal for it is to be the most readable and concise language for creating and teaching 3D graphics. Rather than having to deal with scene graphs, meshes, and node transformations, students can draw in 3D using simple lines of understandable code. Here is an example program:
public class Hello3D {
public static void main(String[] args) {
// set the scale of the drawing window
StdDraw3D.setScale(-1,1);
// draw a sphere of radius 1 centered at (0,0,0)
StdDraw3D.sphere(0, 0, 0, 1);
// render to the drawing window
StdDraw3D.finished();
}
}
I created a basic tutorial that introduces StdDraw3D to novice programmers, using only static methods to create interactive animations. Beyond that, StdDraw3D is fully object-oriented and supports kinematic chaining, camera animation, lighting, and many advanced features.
The StdDraw3D Reference fully documents the project and my sample programs demonstrate many of its features. It is now included in the Princeton standard libraries used by many courses at Princeton and elsewhere.
To be updated soon.
For my sophomore year independent work project, I worked in a team to research the pipe flow of a magnetic fluid. Here is a short description:
Pipe flow of ferrofluid under changing magnetoviscosity
Ferrofluid is a mixture of magnetic nanoparticles and kerosene. Under a magnetic field, the particles will rotate and align, changing the properties of the fluid as a whole. Pipe flow is an important problem in the transportation of fluids. In this investigation, we tested the effect of a magnetic field on ferrofluid flowing through a long, narrow pipe. More specifically, we used volumetric flow rate measurements to calculate the viscosity of ferrofluid in laminar pipe flow. We proved that under an alternating magnetic field the viscosity of ferrofluid will decrease, thus allowing it to flow more efficiently.
If you're interested, read our final paper.
As a fun side project, we hooked up a large solenoid to the song Turbulence by Lil Jon and watched our ferrofluid dance along with it. See it in this video, at least until our resistors start smoking uncontrollably.
Freshman year I took a class in computer music, in which we programmed in a Princeton-made audio language called ChucK and took part in PLOrk, the Princeton Laptop Orchestra. As my midterm project, I created a musical instrument out of a tethered video game controller.
The contraption, which I dub "The Snake", consists of two tethers coming out of a base unit on the ground, one tether in each hand. By measuring the angle of the tethers and the extension length, it calculates the 3D position of each hand. The instrument is played like a cello and sounds like a cello: the left hand's position designates a string and a pitch, while the right hand moved like a bow produces a cello sound.
My partner Flannery Cunningham was a music major who composed a song for us to play - I played the melody, and she played a DDR pad programmed to play piano chords. We were featured in an article in the Daily Princetonian, which includes a video demonstration.
Over the last three years, I've been working on and off on designing my own hardware for the device, and applying it for broader uses. I believe that a single tether device makes a great replacement for a computer mouse for gaming and 3D content creation purposes, and I have successfully written software to use it as a mouse. Last year, I took part in a hardware/software hackathon in which I created my own Snake prototype out of 3D printed plastic, a torsion spring, and an Arduino board. I hope to one day miniaturize the device and market it.
To be updated soon.
Please reach out to discuss current or future projects, job opportunities, or anything else! I'm currently pursuing post-graduate opportunities for work in the design of both hardware and software systems, especially involving mechatronics and robotics. I am also hoping to attend graduate school to pursue further education and research.
2134 Frist Center