Ph.D Researcher in Software Engineering and Human Factors of Computing

Projects

Welcome to my projects page! Here, I list research projects, software development projects, and some hobby-related projects as well.

I mostly program things that I need to use, which are usually data analysis scripts, research scripts, and other similar software that usually is too specialized to warrant distribution.

Research Projects

Gidget

Gidget: An Educational Debugging Game

Gidget is a debugging game designed to be provided to teenagers. It is a game where you control a robot using an imperative programming language and help the robot rescue animals and clean up toxic waste. I have been helping Andy Ko and Michael Lee with development behind Gidget. Gidget is unfortunately closed-source at this moment and not yet available to the public, but some information has been posted at the University of Washington and some information in the game is available in academic publications.

Gidget and the Idea Garden

Storyboard illustrating a player’s interaction with the Idea Garden hint system in Gidget

As part of our involvement in Gidget, we are implementing Idea Garden features into Gidget. The Idea Garden subscribes to a philosophy of “helping end users help themselves” by trying to help them overcome barriers by instilling them with curiosity and the desire to experiment rather than trying to help them overcome barriers by sweeping them under the rug.

The Idea Garden generally takes the form of tooltips that appear in the context of a person completing a task and provides encouragement, strategy information, and ways to learn. It differs from other intelligent tutoring systems in that the Idea Garden is meant not to be used only in the context of course exercises, but also in the context of someone doing a task without the explicit intention to learn.

Information Foraging in Software Engineering

We investigate how software developers build software using an HCI theory, Information Foraging Theory. The theory is a theory of human behaviour that describes how people forage for information. They are predicted to forage in a way to provide maximum benefit for minimum value and to make decisions based on input from the environment that affects this cost/benefit ratio. This theory is applicable to software engineering because software engineering is a very information-seeking intensive activity. People spend a lot of time looking for things—whether it’s “What does this variable do?” down to, “Where can I start investigating this problem?”

By using this lens, we can investigate how developers identify what information they seek to answer certain questions, how they seek this information, and how to arrange development environments to help developers find the information that they need when they need it.

Personal Programming Projects

A personal project. The Painter’s Cat is a 2D video game that I made in a real-time period of 48 hours. I’ve written about the experience here, here, and here.

You’re a cat in a dream, and you’re able to paint black, Mondrian lines against a backdrop of musical notes. Avoid the colored squares and try to “bound” the colors to score points.

This was my first experience using PyGame and the first time I’ve “finished” writing a game. As I did the entire game in a weekend, the source code is really dirty and the controls and difficulty are a little off.

Development Environment

I work primarily on Mac OS X using a combination of TextMate and the command line. However, after doing Ludum Dare 26 and coding a lot in a very short period of time, I’m becoming a little unhappy because it doesn’t have a lot of programming support for Python (no interactive syntax checking, no tooltips for APIs, indentation issues, no auto-reformatting, the Run Task box stays alive after I quit so I end up with a thousand Run Task windows, etc). I’m thinking of migrating to something else.

Programming Languages

I’ve learned a lot of programming languages, mostly in the imperative style. Here’s what I’ve been using recently.

Python

Javascript, though I’m still not entirely comfortable with it yet. I could use with looking at a lot more examples of clean Javascript code.

R (a Matlab-like environment for statistics)

Ruby

I probably enjoy using Ruby the most out of these languages, but I tend to use Python a lot because its third-party module support is a little more mature.

Music Projects

CD Front Cover of Hurry! A Final Fantasy X Remix Album

This album came into existence after a YouTube comment alleged that a particular song from the video game Final Fantasy X was so amazing that no one ever remixed it. I co-directed a fan remix album with The Author and coordinated the efforts 9 musicians, an artist, and a webmaster to release Hurry! A Final Fantasy X Impossible Remix Album. The music’s available for free and a number of its tracks were featured on the front page of Overclocked ReMix, a video game arrangement site that is known for its exceedingly high quality music and talented musicians.