Projects
From time to time, I work on a variety of different programming projects. Here's what's been keeping me busy, in order from newest to oldest:
Nimbus: Lisp gone rogue
Nimbus is a lisp dialect which I am currently developing. Nimbus takes existing lisp orthodoxy and throws it out, replacing it with new features like infix function invocation, tons of literal syntax, "everything is an object", and C-style static typing. My main motivation for writing Nimbus is that I want to create a great new programming language one day, and I don't expect to get it right on the first try. So I might as well get started now!
Juicy: The Joos Compiler
CS444 is one of the "Big Three" at Waterloo: the hardest programming courses you can take. We're building a compiler in python for a pretty substantial subset of Java, and we're learning a lot in the process about doing it right. To make things trickier, no tools like lex or yacc are allowed... it's all hand-rolled. Luckily, I have two of the best programmers I know helping me out, Garret and Nathan.
Ackbar: A stupidly simple blog engine
I wrote my own blog engine, and you're seeing the results right now. I wanted something that was very simple, and something that I could customize easily. I also wanted something that Google would pay the bills for, hence the choice of the JVM language Clojure so I could run it on Google AppEngine. Finally, I just wanted to learn lisp a little better. The result has been quite useful. You can see the code for yourself on github.
HaskellJavaParser: The one without a cool codename
I wanted to learn Haskell a bit better, and I wanted to flesh out my understanding of recursive-descent parsing. These two goals met in Haskell's excellent Parsec library, which gave me the best of both. This is a reasonably functional parser for Java 1.4, and you can see the code here.
Research Assistant-ing
I've spent a bit of time participating in CS research at Waterloo. The first time, I helped Professor Michael Terry out with his user interface research, producing new ideas and new designs for the user interface of the GIMP. The second time around, I worked with Professor Derek Rayside on his formal modeling work, helping to create models of the Java Collections Framework that could be used to automatically generate useful Java code and check correctness properties.
tourni.ca: Your tournament management destination
This is a project I'm currently involved in with a team of other students. It's a simple website based on the Ruby on Rails web framework designed to allow people to organize tournaments of various kinds. The flexibility that this goal required made me a lifetime devotee of the "NoSQL" movement, as we quickly realized that the rigid relational paradigm Rails required of us wasn't going to work.
ThreadBound: The reverse platformer
In the dim mists of the past, I worked on ThreadBound, an innovative iPhone platformer game where you move the platforms instead of the character. Surprisingly, I managed to do this without writing any Objective C, preferring instead to code in C++.
If you liked this, you should click here to subscribe for regular updates