Neural Networks
I'm currently taking Andrew Ng's Machine Learning course on Coursera. When learning, I like to build things from scratch, so I implemented some feed forward neural networks based on the lecture notes. I've successfully trained networks on NAND, XOR, and some other basic binary tasks. I tried training a network to recognize handwritten numbers from this project, and got some pretty nice results. You can find my work and examples on Github. The numbers data set is included.
Nimble Radiotherapy
Treating cancer with radiation requires substantial planning, which involves doctors, technicians, and physicists. This planning workflow is currently supported by software that is slow, difficult to update, does not allow remote collaboration, and does not use historical data to help current patients. Nimble is a company I founded to build the first web-based treatment planning system that would address these workflow issues. The system uses node.js, backbone.js, paper.js, flot.js, and three.js. We have a demo of some Nimble features. Try it!
Brachytherapy Optimization
Brachytherapy is a way of treating cancer where radioactive sources are delivered directly to the tumor site. Treatment quality and the radiation dose to the tumor and surrounding tissue depends on the arrangement of the sources. My graduate work developed algorithms to maximize treatment effectiveness, minimize damage to surrounding tissue, and automate brachytherapy using robots. These algorithms relied heavily on linear and integer programming models.
Custom Brachytherapy & 3D Printing
When brachytherapy is used to treat cancer in the uterus, cervix, and vaginal canal, treatment is delivered using standard applicators that come in only a few fixed sizes and geometries. Often these applicators fit too loosely or tightly, which makes treatment uncertain and uncomfortable, and if there are no applicators that fit the patient, then brachytherapy is not a viable treatment option for them. As a post-doc at UCSF, I helped develop a method for creating custom applicators using 3D printing, which we used to treat several patients that could not have been treated otherwise.
Robot Tournament

While I was a graduate student, I was a TA for UC Berkeley's core engineering programming course. After several semesters, I felt the cirriculum lacked opportunities for students to write non-trivial and creative programs. To address this shortcoming, I created a semester project called the Robot Tournament, where students had to write an AI for a virtual game of tag-with-a-twist. I won several awards for this tournament, and it was featured in a Mathworks article. Videos: 2008 | 2009 | 2011

Computing whether or not a point lies inside a polygon can be accomplished by well-known algorithms. However, computing whether many points lie inside a polygon using the same algorithms will perform many redundant calculations when those points are arranged into a grid. I developed this Javascript library to efficiently compute the points in a grid that lie inside a given polygon by exploiting their grid structure. The GUI is implemented using paper.js.
It is often useful to map numerical values to a linear color scale (think greyscale for x-ray images). Matlab has several built-in color scales, or schemes, and JET is its default. I implemented Matlab's JET color scheme in 256 steps using Javascript.
This was a small project I used to get myself up to speed with D3, a data visualization library in Javacript. The project utilizes the aforementioned io-grid and jet-color libraries.
Very small afternoon project introducing myself to L-systems in preparations for a web application idea I had.