Since DOS 2.11 I’ve always been 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 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

I’ve used a lot of personal finance tools over the years and they’ve all helped and annoyed me. Clerk is my attempt to do better.
A Wiki. I’ve always liked wikis and their personal wikis are very helpful. But none of them are quite right, so I’m starting my own.
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.
(Planned) Chess opening trainer as an intro project to learn Elm and/or GopherJS. It will be transpilerific.


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.