I’m always working on something. Side projects are fun and my way to try out a lot of technologies. Lately I seem to be writing a lot of Python, Go and Javascript. My ~/dev folder has hundreds of children. Sometimes the work exists elsewhere, such as some small contribution to a project on Github that I’ll probably forget about. (And Github is surprisingly unhelpful at helping you track older contributions.) But I’d like to not forget about these endeavors, hence this page.

This site is of course a constant work-in-progress. It has evolved from a heavy Wordpress installation to a static site. Various blogging platforms, themes and hosting setups have been tried. Oh yeah, and there’s the writing… :)
Some years ago my wife wanted to learn Javascript and try building a reading log web application. She did it! It’s still up and getting used by over 1000 people. I’m just the server admin…

In Progress

A wrapper to simplify use of the excellent Bolt library.
Fast File Finder. For now this is just a Go CLI to do the most common things I do with find, but without all the flags and arguments. As ag is to grep, fff is to find.
A variant of “Guess My Word”.


A constant-time hashing algorithm in Go (and subsequently Python). This was surprisingly popular on Github.
MemoLock was a successful BlackBerry encryption App that I wrote and sold, and this was the companion website. I retired the app and site in 2011 after deciding that selling encryption and being involved with sensitive data was a poor choice for a part-time side business.
WordyLinks (retired)
Sort of a bookmarking site, this was my first non-trivial Go program. It ran for a couple of years with light usage (including by me at least once a week).
My version of a cheatsheets framework before I knew Dash existed. The idea was that people would contribute YAML-formatted documentation to a shared Github repo. Shut down when I found Dash did most of what I wanted and more.
Simple phonetics app for Android. Type a letter then see and hear (in mine or my wife’s voice!) the corresponding NATO phonetic.
Display your Criticker ratings histogramically. Also, a test project for Coffeescript and Google Charts.
PHP/MySQL/JS web app to run the company’s table tennis ladder. Responsive design and plenty of stats tracking included.
My submission to Scribd’s Fruitbot programming challenge, written in Javascript. I used Minimax with alpha-beta pruning like hundreds of others, but some “secret sauce” during move generation has kept me in the top 15.
Django/jQuery Mobile app to track feeding, diapers, etc. after our son Ben was born in 2011.
Repackaged TaskJuggler syntax highlighting for easier installation by Vundle and the like.
Android app for easily browsing Fossil documentation, back when I was evaluating that SCM tool.
Ancient history from deep in the archives! I wrote this in the early 90’s as a way to set a PC clock using a ham radio. It was my first program to enjoy wide use, courtesy of BBS’s. The 10k “.COM” file runs fine in DOSBox.


Add options to skip duplicates and allow incremental processing.
Allow numeric keys to be use with without().
Show vendor plugin help when no command is given.
Fixed issue where multiple builds occurred on OS X.
Added ability to redirect test output to a specified io.Writer.
Made help documentation UTF-8 compatible. This was pretty silly, actually. My original request was to just change “rĂ©gime” back to “regime” to make things work, but that was rejected…
Added functionality to exclude states/countries from this Ruby geography library.
Added repeatable, numbered board layouts to Scribd’s Fruitbot game development framework (Javascript).
Replaced the defunct Blekko API with DuckDuckGo.
Two Scoops of Django
Contributed to final review of the book.