Software
GAE Scaffold


- Work Done: February 2011
- Released: February 18, 2011
You can download or view the source at the GAE Scaffold page on Github.
GAE Scaffold is ready-made skeleton code for creating Google App Engine applications from scratch quickly. In order to accomplish this, it ties in several other projects of mine, including GAE HTML and GAE Deploy. GAE Scaffold takes care of a lot of boilerplate code, meaning only a few small changes are needed before being able to push to production. It is feature rich, including support for and automatic use of sessions, minification, caching, testing, and human readable error messaging right out of the box.
GAE HTML


- Work Done: November 2010
- Released: November 11, 2010
You can download or view the source at the GAE HTML page on Github.
I was playing around with Google Page Speed and realized that I could save some bits by minifying HTML. Since I use Google App Engine for a lot of different sites, I thought it would be prudent to make a single project to do this once, and then simply import it everywhere I needed it.
GAE Deploy


- Work Done: November 2010
- Released: November 12, 2010
You can download or view the source at the GAE Deploy page on Github.
Google Page Speed reminded me that I should minify the JavaScript and CSS on my sites to reduce bandwidth. As I use Google App Engine for most of the sites I actively maintain, I created this one tool to handle minification for all of them. Since JavaScript and CSS are almost always static resources (unlike HTML) I knew that there was no need to spend processing cycles minifying them on the fly when requested by a user. It made much more sense to do them at deployment time, so I created this to do just that. As a deployment tool, it also handles cache-busting for these and other static resources like images.
GAE Blog


- Work Done: March 2010 - November 2010
- Released: March 18, 2010
You can download or view the source at the GAE Blog page on Github.
When I created the new version of my personal site, instead of relying on a pre-existing blogging engine, I wanted something that I could control, modify, and customize absolutely. I also wanted it to run on Google App Engine. I spent a long time developing this project, which includes support for running multiple blogs at once, having multiple authors per blog, comments with moderation, live image uploading, blocking spammers, and more. It will even use my GAE HTML project to minify HTML if it's available.
GAE Twitter


- Work Done: March 2010 - November 2010
- Released: April 05, 2010
You can download or view the source at the GAE Twitter page on Github.
I wanted a way to just pull the single most recent Tweet from my Twitter account into Google App Engine, so I created this project to do just that.
Tumblr Backup


- Work Done: December 2009 - May 2010
- Released: December 19, 2009
You can download or view the source at the Tumblr Backup page on Github.
I had my travel blog for my journey across Europe originally written on Tumblr. While great for my needs at the time, when I wanted to consolidate all my blogs into a single site, I needed a way to get the data out of Tumblr. They provide a nice API, but no automatic backup themselves. So, I created a simple tool that saves a local archive of your entire Tumblr blog.
Write Site


- Work Done: November 2006 - January 2007
- Released: January 15, 2007
You can download this software and an example of how to use it.
Write Site was developed as I was redoing the technical backend for my first portfolio site and simultaneously making several other websites for friends and family. I needed a quick way to generate static HTML, and I've always liked the organization of having different parts of a template in different files, so this program does just that: takes content from files and compiles it into a website made up of many different static pages. It also provides some convenience functions (like automatic naming of pages and generation of navigation links) and allows for conditional, repetitive content. It requires Python 2.4 or greater to run.
Stargate


- Work Done: March 2006 - May 2006
- Released: May 15, 2006
You can view this program or download the JavaScript.
I had researched ZUIs and I wanted to build my own while learning some more about JavaScript (in anticipation of doing a lot of it over the summer) and SVG, so I wrote this program. One of the things I decided early on is that I would not use a library to help me. Although it would take longer, I wanted to understand everything that was going on under the hood. Because of this, the code is terribly ineffecient, runs slowly, and I could probably reduce the file size by half if I were to do it again with a library.
The program will let you zoom in and out of the planets in our solar system, and potentially any other solar systems. This could be the beginning of a huge project that used all the data we have for the whole galaxy, but I got it to a state of completion I was happy with and left it at that. If anyone else is interested in this project, I'd be happy to start working on it again.
3D Graphics Engine GUI


- Work Done: July 2005 - October 2005
- Released: December 15, 2005
I realized that in order to further my goal of making a video game, I had to better understand 3D graphics and how they got from a data structure to the screen and back. To that end I wrote my own 3D modeling program in C++. I interfaced directly with OpenGL for the graphics and used FLTK for making the GUI. I implemented making the primitives of a rectangular prism, a sphere, and a pyramid. I then made it possible to color, translate, scale, and rotate those primitives. However, after coding in the ability to save and load files, I stopped development. I had achieved my goal and knew that proceeding further, into making my own fully-featured 3D modeler, would take years, and there were already alternatives out there that had been in development by larger teams (I did this by myself) for much longer (and over one semester). Building my own did make me more confident with other modelers and engines though, as I had a better grasp on the terminology and technical background.
Base Radix


- Work Done: January 2005 - May 2005
- Released: May 15, 2005
Base Radix was a group project that I did with 4 other friends at Olin. We made a sprite based game engine using Python and PyGame. We did some really neat things, including random map generation, photo rotoscoping (I was the actor we used), context-free grammar for NPC speech, and collision detection. I worked primarily on our doodad placement algorithm and NPC path finding. We never really got the game to a finished state, but I learned a lot about making 2D games and working on group software projects.
One of the friends I worked with also wrote about this project on his website. He was nice enough to host the code repository if you want to take a look at the source.
Ram Disk File Mover


- Work Done: July 2004 - March 2005
- Released: March 17, 2005
A friend of mine was crazy about SETI@home and getting high performance on it. He used a RAM disk to run SETI off of, but was tired of moving his files there and back from the hard drive every time the machine restarted. So, he asked me to write a program to do it.
Initially, I wrote the program in C++ and had it run as a Windows Service. This created two obvious problems though: it wasn't cross platform and the installation process was really hard for the end user, as I didn't have a program that would automatically wrap the program in an installer and didn't want to write it myself. In the end, about six months after that, I re-wrote the program using Python, and created a simpler (though still not great) install process.
Bar Man


- Work Done: May 2003 - June 2003
- Released: Never
Ever since I was young, I wanted to make video games. My friends and I determined that if we could get a guy walking around in a bar, that would be a sufficient beginning to do anything we wanted. On a whim, I bought one of those game programming starter kits and used a program called 3D Game Studio to create a bar where the player could move around.
It was fun and entertaining, as well as introducing me to 3D modeling, but having gone to a liberal arts high school, I knew nothing about programming - other than my web experience with JavaScript and ActionScript, which was not sufficient to carry over to C++. The project couldn't move forward because we were trapped by their engine. Nowadays, this engine is terribly outdated and not worth pursuing. As for making games in my spare time, in addition to knowing a lot more about programming now, including C++, I've moved on to using open source engines. Along with a small group of my friends, I'm perpetually working on something to this end.