Here are a few projects I’m currently or was recently involved with:

Ubuntu Manual Project

Ubuntu Manual Project: The Ubuntu Manual Project aims to create a beginner’s guide for the Ubuntu operating system.


Tufte-LaTEX classes: LaTEX document classes in Tuftian style. I joined an open source project started by Bil Kleb and Bill Wood to create LaTEX document classes that were based on the design of Edward Tufte’s books and handouts.


Narcissus: An algorithm for robot self-detection. Jesse Lane and I developed an algorithm for robot self-detection for a developmental robotics course we were taking. We wrote a two-page student abstract that was accepted at the AAAI 2006 conference. Our classmates voted this as the top project in the course.

Project Icarus

Icarus: Flying in Virtual Reality. This was another class project—this time I worked with Jesse Lane and Ethan Slattery. The course was titled “Computational Perception”. We used infrared cameras to detect the movements of people and wrote a small virtual reality application that they could fly through by flapping their arms. Our classmates voted this as the top project in the course.


ISEK: A sociable robot. The Iowa State Engineering Kids is an outreach program in the engineering department at Iowa State University. Camille Schroeder commissioned the Iowa State Robotics Club to build a small robot that could serve as an ambassador at the FIRST Lego League competition in 2005.


LibraryThing to BibTEX: Generates a BibTEX file from the books in your LibraryThing collection.

Shiny Happy Users

Shiny Happy Users: A collection of usability essays. In 2007, I took a course from Derrick Parkhurst titled “Scientific Methods in Human Computer Interaction” in which each student had to present a short (5–10 minutes) presentation about that week’s topic. At the end of the course, we took our favorite presentations and blog entries and published them in a book: Shiny Happy Users. In addition to contributing a few essays, I designed the interior of the book.


TagNinja: Using collective (human) computing to disambiguate word senses. Jesse Lane and I collaborated on this project for a computational linguistics course. The project was an attempt to create a game that people would enjoy playing but that would also be contributing data to improve word-sense disambiguation algorithms. By choosing which definition best matches the highlighted word in the sentence, the players are teaching the computer how to better understand English.