I develop quite a lot, this growing list is an attempt to contain a sampling of the things I've written. They range from small scripts in various programming languages to Widgets and programs. The dates reflect when the item was last updated. For older projects, the date may be when it was first publically posted. Click the icon images to see a larger preview of the project. Some projects may not have larger previews.

In addition to the following personal projects I also contribute to other open source projects on GitHub and Gitorious. Many of my personal projects are hosted on Bitbucket.

Life in a Canvas

Life in a Canvas icon

A naive implementation of Conway's Game of Life using JavaScript and Canvas. This was later turned into a Widget by Hunter Ryba. It could definitely use some optimization for determining which squares to iterate over. This implementation also wraps the board, which seems to be more "life-like" than considering anything outside the board to be "dead."

Canvas Table

Canvas Table icon

A script for displaying a table-like grid in Canvas. It provides abilities (via renderer functions) to control how it looks and display of text data. Text rendering wasn't included in the base table code due to Y!WE's non-implementation of a way to easily draw text to a Canvas object. It was written to be similar in design to Java's JTable.

The table itself is split up into 3 parts, the column header area, the row header area and the cells so the table can easily be put into various frames to allow scrolling of tables which are too wide or too long.

This script was originally written to help out a Konfabulator forum poster looking for a table widget. In the end, I was too slow get back (despite writing it in less than 24 hours) and the poster was linked to a different solution that he was able to work with instead.

JSDoc Documentation

Color Chooser


Someone showed me an online color picker one day (from somewhere that they copied and ran on their own server). My first question was "Is it Canvas?" and after investigation "No." which prompted a "Could you even create one in Canvas?" So, you probably know at this point what I spent my time trying to do ...

The result works in the browser, and I even ported it to a Yahoo! Widget as Palette.

With some help from the Konfabulator Forums, I was able to dramatically speed up the drawing of the gradients used and thus make it more usable.