Projects

Current

Semantic Version Control
Detecting a moved and modified block of JavaScript code. A proof-of-concept diff and merge algorithm that looks at the structure of code rather than just text. Currently it’s in a background research phase, trying to put the algorithm from the proof-of-concept on a sound footing and implement it efficiently.
Patricia Tries
A binary trie with a three-bit key. Figure from Okasaki’s paper. I’m implementing a couple of variants on Patricia tries to understand exactly how they work and how to optimize them. The end-goal is to efficiently implement a persistent adaptive radix tree.

Ludum Dare

I’ve helped design and implement a couple of games in Ludum Dare game jams which involve building a game with a small team in 72 hours to some random theme.

Shattered Worlds
Jumping over a bear in Shattered Worlds. A platformer where you can overlay a map from any level you’ve passed on top of the current level. The theme was “connected worlds” and Alex wrote a great postmortem from the project.
Asteroid Tycoon
A spaceship dropping off robots in Asteroid Tycoon A tunneling game where you buy robots to mine asteroids. The robots do their own path finding and mine until they explode and teleport your reward to the ship. The theme was “below the surface” and Alex wrote a postmortem for this one as well.

Haskell

Haskell is now easily my favorite language. Here are some projects I’ve written in Haskell. Also check out my blog which tends to focus on Haskell and functional programming.

TPL
The TPL Logo A simple but flexible dynamically typed scripting language—with some design issues. Designing a language is hard! This project changed how I think about programming language design and programming in general, which I wrote about on Quora.
modular-arithmetic
Modular arithmetic in action. A simple library on Hackage for creating integral types modulo some constant, like Integer `Mod` 10 or, with some Unicode and operator goodness, ℤ/10.
FRP
A simple GUI for the game of life. My final project for CS 263, a survey of functional reactive programming (FRP) and the rich theory behind it. Includes a game of life GUI in 40 lines of code. I keep on meaning to turn it into a tutorial…

JavaScript

A few projects in JavaScript dating back from freshman year in college.

Drawing
A sample drawing. A little toy for drawing pictures from mathematical functions—it can be a lot of fun! It applies a user-supplied JavaScript function to every pixel in a given area to produce neat designs.
Cards
Part of a Klondike game written with our library. A simple library for making card games in JavaScript, designed and implemented with a couple of other people during an 18-hour hackathon. We got second place!
Maze
Part of a generated maze. Exploring randomly generated mazes with JavaScript and canvas. (Also see my blog post about graphs and mazes in Haskell.)

High School

Here are a couple of projects I worked on back in high school. (The rest, unfortunately, are lost to time.) Old, but still neat!

Chess
Part of a chess game. A JavaScript chess game with an AI developed by Jessica Taylor, a friend. The AI only looks three moves ahead, but can still beat me :(.
Simulation
One view into the simulation. A 2D physics engine supporting polygons and circles, written with Jessica Taylor. Had a basic physics engine built upon Newton’s method (which we more or less rediscovered ourselves) and several tools for working with and viewing the simulation.