Pixelation
2005

Pixelation is a pervasive camera-phone game that I created with David Jimison as part of the Mobile Technologies Group at Georgia Tech. Players send text messages from their phone to an agent, which then selects and messages a seed photo to them. The player must then take a new photo that is inspired by the seed, and message it back to the agent. The player can later browse through the tree of photos created by the game, and see how original meanings were distorted over time.

My primary role on this project was game design and development. I wrote the agent in Python using the email-to-MMS gateways provided by many mobile services. I also designed the agent's picture selection algorithm (which prioritizes frequent contributors and images that are deeper in the tree) and the game's underlying MySQL database.

UPnPeep
2005

UPnPeep is a Java-based Universal Plug-and-Play proxy for webcams. This allows anyone to create a cheap, network attached camera that speaks a standard protocol (UPnPeep conforms to the UPnP Forum's Digital Security Camera device profile). I wrote this as an exercise in learning UPnP, and it turned out to be a fun project. In my copious spare time, I'm trying to get it properly packaged and shared as an open-source project.
 

Amazon Gift Central
2005

Amazon Gift Central collects Amazon.com's many gifting features (such as wishlists, gift guides, and event notifications) into a single presence on the website. While interning with Amazon's gifting team as a user interface developer, I worked closely with a senior designer to develop iterative prototypes of Gift Central for user testing and demos to upper management.

The base prototype was simply hand-coded HTML and CSS. However, in order to provide maximum flexibility and reuse in the prototype, I used XML product lists and transformed them within the browser using XSL templates. This allowed us to quickly generate new scenarios and tasks, or to easily change design elements across all of the scenarios. This proved to be crucial, due to the rapidly evolving requirements and constraints placed on Gift Central. Gift Central was successfully debuted in the 2005 Holiday season.

Ubicomplexity: From Complex Systems to Ubiquitous Computing
2005

Complex adaptive systems theory (or CAS) is a loosely coupled body of related theories that describe characteristics of unpredictable systems. The patterns that emerge in these systems are a common theme in nature: from slime molds to crystals to the flight of birds, higher-order structures that emerge from local interactions between entities are an efficient -- and often beautiful -- means by which our world organizes itself.

CAS draws from several different disciplines, including mathematics, physics, economics, and organizational theory. Its major impact in computer science thus far has been in the realm of AI and agent systems. However, the advent of social tagging systems such as del.icio.us and Flickr has brought some of CAS's core principles into the world of online communities.

In the spring of 2005, Jason Alderman, Prof. Keith Edwards and I designed a special topics course that explored the possibilities of applying CAS theory to ubiquitous computing. Self-organizing networks of mobile devices, that can remember their configuration and suggest uses for new devices added to the network, proved to be an attractive potential application. While our prototype never came to fruition, we believe that our theoretical model of an "ubicomplex" system (detailed in our paper) to be an inspiring metaphor for the development of pervasive computing frameworks and applications.

Some other resources from the class: Our del.icio.us linkstream, Keith's ubicomp reading list

The Casablanca Digital Critical Edition
2004-2005

My first research assistantship at Georgia Tech was sponsored by The American Film Institute. Our project was to create a web application that streams film commentary and archival material from an AFI site, integrating it with local DVD content in the user's web browser. I was responsible for maintaining and improving the authoring environment for the application, as well as its underlying database.

MAYA Viz, Ltd.
1998 - 2004

After I finished my undergraduate degree, I was hired as the first employee of MAYA Viz, a software company started by two CMU researchers. Working at a successful startup is a fantastic, career-changing experience. As a programmer just out of school, it meant that I had responsibilities and opportunities that would never have been offered at most large companies. I also learned to appreciate amenities that many corporate developers take for granted (such as an intranet, a working build system, and a QA department).

In my six years there, I helped Viz grow from three guys in a corner to a mature and profitable company. These are some of the many projects on which I worked:

Joint Logistics was a series of projects that integrated many military "supply-chain" systems into a single common applet-based environment. I designed and built most of an information visualization SDK for other developers on the project. The SDK evolved into MAYA Viz's software platform, CoMotion, and I became the technical lead for our work on Joint Theater Logistics. Pictured here is the Force Browser, one of the first applications of the SDK.


I contributed extensively to CoMotion, MAYA Viz's main product. I created its initial information architecture, several of its visualization components, and a good chunk of its higher-level API. Over time, I concentrated on its mapping functionality. I also built several demos for our commercial clients, and traveled with our sales executives to charm the engineers in client meetings.


I made this demo for a sales visit. The client made software to analyze retail store supply-chains, and were interested in CoMotion as a front-end to their analysis engine. However, they wanted the solution to integrate nicely with their web portal. This applet was a proof-of-concept, to show what kinds of analysis might be possible with their data in a limited amount of space. The demos I did at MAYA Viz exposed me to a wide variety of technologies, from XML-RPC to Tomcat to the Semantic Web.


I worked extensively with interactive maps in CoMotion. I created a pluggable, service-based architecture patterned after the OpenGIS standard that allowed us to integrate any number of imagery or feature providers into a single map. I wrote some projection math services on my own, I created some custom imagery services using OpenMap, and I also integrated with 3rd-party providers such as ESRI's ArcWeb and Microsoft's MapPoint .NET web services.


I also did a few research projects. The "Boids n' Blobs" demo was a fun experiment in which I added terrain-following behavior to Craig Reynolds' boids model. The resulting "blob" would shift, stretch, and flow over a map to illustrate how a collection of infantry and vehicles would probably move. I could tweak it to simulate different compositions of vehicles and personnel, create formations, and give them orders that changed their behavior.


Command Post of the Future was the last project I worked on at MAYA Viz, although it had already been going for several years as a research project. CPoF is a military command-and-control system built on top of CoMotion. We had one year to improve its design and make it rock-solid for deployment to Iraq with the 1st Cavalry Division. Most of my work involved customizing the map for CPoF's demanding requirements. Just before leaving MAYA Viz, I volunteered to go with our project to Baghdad. It was grueling and challenging work, but by the end of it the Army was relying on CPoF as their primary planning, analysis, and decision tool in the Iraqi capital. I was awarded a general's coin and a combat patch for my efforts, but the greater honor was working with the Army command staff. They were the finest and most dedicated coworkers I've ever had.

IDEAmacs
2003

I'm a big fan of IntelliJ IDEA, a (not-free) Java IDE that is easier to use and has more refactoring support than Eclipse. I've also been a loyal user of the Emacs text editor since the early 90s. I missed quite a few features of Emacs in IDEA's code editor, so I hooked up with another programmer and we made an IDEA plugin. We added macros, a kill-ring, and some other usefule Emacs-isms.

altgothic.com
1999-2003

I've been active in an online community of goth music fans for several years. We have an annual convention that takes place each year in a North American city. People that want to host the convention form a committee and submit proposals; the proposals are then voted on by over a thousand prior attendees.

I had been running the vote by email since 1996, and things were getting out of hand. I designed and built a secure online voting system, and together with some friends we stood up altgothic.com. We continued to run the elections each year until 2004, when we handed the website over to other maintainers.

Boids
2000

I've been interested in complexity and emergent behavior since college. I wrote this applet [src] partly as an experiment in Java 1.1 performance, but also to toy around with an idea for a project at work.