I am a software engineer and technology enthusiast currently residing in Toronto, Canada.

curriculum vitae



A python library for loading, reloading, and managing static configuration, modeled after Java Apache Commons Configuration. Uses a functional programming style, and test driven development (TDD). github project


A tool to automatically run unit tests for the appropriate file when a file changes. Supports extension through python modules, and configuration files for each project. github project


Tron is a modern scheduling system that dependency management, and running jobs on remote machines. Also monitors services on remote machines. github project


Treeorg is an experiment in displaying and working with hierarchical data. It is still under development. It's built using coffeescript, backbone.js, web.py on Google app engine. See it at treeorgjs.appspot.com

Trac Advanced Search plugin

Trac Advanced Search is a plugin for the Trac wiki and issue tracking system. This plugin allows you to use a full-text search engine (such as solr) to search tickets and wiki documents. Full-Text search greatly improves your team's ability to find documentations or tickets. This projects includes configuration files and the component to use solr. See the github project.


Perzoot is a job posting aggregator and search engine. The project involved creating concurrent crawlers for scrapping job postings, detail parsers to extract contact from the postings, a web-backend build on Django, and an ajax heavy front-end that aims to be fast and easy to use. Perzoot is no longer active. I worked on this project with Ross Noble. See the artifact: perzoot.com.

Spite and Malice

Spite and Malice is a two person solitaire game. This version supports single player versus a computer, and two human players on the same machine. Support for a remote player via tcp/ip is planned. The computer should play a reasonably strong game. See the github project.

Media Mover

This tool is designed to simplify the task of synchronising music (or really any files) between linux machines. It uses ssh to get directory listings, and copy files back and forth. It stores machine name, port and username, for convenience. It expects media files to be stored in a standard format, with album numes (or season name) as the directory. It also scrubs the list of files on the local machine, and removes any directories (ie: albums) that you already have locally. This tool serves a very specific purpose, and generally isn't very useful. It does have a colored menu, is easy to use and services its specific purpose well. Written in Python, using paramiko for ssh, and jsonpickle to serialize the config file. See the github project.

Sudoku Solver

This Python module can solve even 'hard' sudoku problems almost instantly. It takes longer to input the board, than it does to solve the problem. It would probably benefit from either a problem generator, or a gui interface for input. Includes a couple sample boards. See the github project.


If you are interested in more of my work, I have many others in progress, and smaller projects not described here hosted on github.