Projects

Here is a somewhat detailed list of various projects I have worked on in my spare time. Most of these do not have good names because I was mostly building them to scratch a personal itch or was just experimenting.

Gifti.ca

The wishlist 2.0.  Another Ruby on Rails application, this one is considerably better with improved management of your friends, the ability for someone to set the thing up for their family and some light integration with Amazon’s product search.

Source Code Status: Actively developed. Currently living in a git repository and being edited with NetBeans.

w00tbug

As I worked at Troove, I realized that every company I had worked for was doing at least some manual quality assurance. This was good. What was annoying was that none of these companies really had any sort of system in place to keep track of tests, when someone had last run through that case and that sort of thing. I built w00tbug to scratch that particular itch.

Another Rails project, this was the first one that I used jQuery fairly heavily. I’m currently slowly cleaning it up with the intention of putting it up on github sometime in the next couple of months.

StopFinder

A while back it was announced that Translink would publish information on the bus schedule. I’ve always enjoyed doing things that involve parsing up huge chunks of data and dumping it into a database for interest’s sake. I’ve also always hated the Translink UI for finding out what time a bus would show up at the closest stop to me. Yes, this feature is currently fully implemented in Google Maps, but that’s hardly the point.

So I wrote some code to take the rather hefty csv files that Translink provided and dump them into a database. You can punch in a route number and see all the stops on that route. It’s pretty simple, but scratched an itch and let me write something using Google Maps. As usual, it’s a rails app.

BF Interpreter

This is my usual first project with a new language. Though depending on my laziness, I generally do not implement the ability to get text from the console. Well, not the first project. I generally write something that you input some text and the program outputs valid code that displays that text back. Once I am satisfied that I can generate somewhat sizable programs, I get to work on an actual interpreter.

So far, I have written interpreters in Java, PHP, Ruby and Javascript.

Source Code Status: I generally delete these once they are working find as they tend to be fairly small. I think my Ruby implementation was the smallest at about 50 lines including comments.

Wishlist

Another itch that needed scratching. Basically the idea was a place where a user could put up a wishlist online and friends and family of that user could see the list and check things off as they bought them. The idea was to slowly build the list over time and when Christmas or a birthday rolled aorund, the family would have some ideas and be able to co-ordinate. I had wanted to try out Ruby on Rails for some time and used that for this project. It worked, though not terribly pretty. This is where I learned that learning Ruby on Rails is very hard when you don’t know Ruby. Afterwards, I decided to learn Ruby by itself before attemping another Rails project.

Source Code Status: Deleted. It wasn’t overly large (Yay Rails!) and I knew that I was going to write one of these again in the future, so I didn’t really feel any need to keep it around.

Edit: Back in business. Gift list version two is now technically live @ http://gifti.ca.

Movie Thing

Also found on my personal site of yore, I had a movie thing. The main purpose for this was I would always have random thoughts, “Oh! I need to see this movie!”, then, when I actually decided to go and rent something, I could never remember that list. PHP was my web language of choice at the time, I wrote an application that would let you take add movies and assign a score of how badly you wanted to see it. That number slowly grew, so the longer a movie was in the system, eventually it would hit the top of your list. You just hit the “I want to see a comedy tonight” button and the top comedy in your personal queue would be shown to you and you head off to the store to rent it.

At some point, I decided to enhance the thing by loading the application with the IMDB’s database. At the time, they provided a way to download text files which were pretty much text dumps of their various tables. I wrote a Perl script to parse that up and dump it into the database. This gave me my first real experience with a fairly large database as the resulting application had several tables with a few hundred thousand rows and a few tables, mostly join tables in my naive 3rd normal form database, that had several million rows.

Source Code Status: As with the message board, I still have a copy of the code for this, but it would involve reading a bunch of fairly poor (Ah, hindsight!) code trying to figure out how to rebuild the database. I have tinkered with the idea of doing this again, but it’s more likely I’ll just build a Rails application that does the same thing.

Desktop Encryption

One of my courses included an assignment to implement the Data Encryption Standard (DES) algorithm. I did that in C++. As that wasn’t terribly useful for anything, I wrote a little Windows application that would allow you to cut and paste some text in, punch in a passphrase, encrypt it and output the base64 encoding of the data. As DES is symmetric, using the same passphrase with the encrypted text would decrypt it.

That was fun and all, but I was also learning design patterns at the time. I decided to use the Strategy pattern and allowed the user to use DES, triple DES (3DES) or Blowfish in various modes such as electronic code book (ECB) or cipher block chaining (CBC). I also wrote an RSA implementation for a public key approach. You would cut and paste in a friend’s public key, add it to the keychain and when you wanted to encrypt something for them, check the box beside the name and write the text. A base64 encoded text blob was generated which you could email or whatever. They cut and pasted the blob into their application, punched in the passphrase and done, decrypted.
It was kind of fun for a while. Not user friendly at all but my first project that I felt was somewhat well built.

Source Code Status: Lost in the Great Hard Drive Crash of 2004. RIP

Distributed Load Testing

I had a short unpaid internship with Espial for a few months. The general gist was that they wanted a distributed load testing application and I wanted to do an honours project. One of the developers there was sort of the key guy who I was to work with. Unfortunately he was fired the second day I was there.

Regardless, I soldiered on and built the largest project I had done to date. It was written in Java and allowed for two major things. Distribution of tests that extend the JUnit test case to clients from a central server and collection of the results of those tests back at the central server. The server application also had a simple user interface to display how many clients were connected, how many threads each was running, status and if results were back. Results were collected and some simple statistics were run on them.

It worked, it was big and I learned quite a bit from it. I would absolutely not build it the same way again.

Source Code Status: Hanging around in one of my backups, the sheer amount of time I spent on it made me rather careful about making sure it wouldn’t be lost. It’s been a long while since I’ve tried to compile it or run it though. I may attempt at some point just on principle, but it’s hardly good stuff.

Message Board

Written in PHP, this was my first largish project on my own. The feature set was fairly similar to early releases of phpBB, in that it had private messaging, avatars, signatures, access controls on forum categories. In addition, I had a simple markup language that would allow users to add links or image tags to the board without having to actually use raw HTML. Later I provided the ability for users to upload images and have links to these images generated automatically. It was pretty fast and backed by a MySQL database. It was only ever used on my personal site by a handful of family and friends, so it’s not like it was ever really stressed.

Source Code Status: Existing, but I did not keep the database schema anywhere, so actually getting it running again would mean reverse engineering the source to figure out how to recreate the database. That would be fun, and pretty useless given how good phpBB is these days.

One Comment

  1. Mom:

    am now more informed :)

    will happily wait for Gifti.ca to be up-dated.

Leave a comment