View on GitHub

Don Kirkby

Playful programming

You found my user page on GitHub. The interesting stuff is on the individual project pages, like Live Coding in Python. You can contact me @donkirkby, or use e-mail if you’re old school.

If you’d like to help end the AIDS epidemic, come work with me.

If you’re wondering whether I can write anything besides code, see my Stack Overflow profile:

profile for Don Kirkby at Stack Overflow, Q&A for professional and enthusiast programmers

Here’s a list of some projects I’ve worked on. Let me know if you find any of them useful or fun. If you’d like to collaborate with me in your spare time, talk to me about one of these, or check out some of my other ideas.

Live Coding in Python
Lets you play with Python code, and continuously runs the code while you edit it. You can use it to create interesting graphics, or see what's happening inside your code.
A collection of word games that might help you grab a few new words for your vocabulary. Still in early releases with only a few games: Ultraghost, Russian Dolls, and Bacronyms.
Testing Python
An essay on unit testing in Python, along with some sample code.
The Infinite Board Game
A book of games for the piecepack, including two I designed, one with Jay Cormier. The book comes with a piecepack (tiles, coins, pawns, and dice) and the rules for 50 games. You can order your own copy from the link above or from If you already have a piecepack, the rules for my games are on the piecepack wiki.
A domino puzzle I designed, inspired by Rush Hour and Mahjong matching puzzles.
Game and Puzzle Design Journal
I'm on the editorial panel for this academic journal with articles like an analysis of influence between countries in Risk or a description of the Japanese concept of poka-yoke for using design elements to embed the rules of a game in the game components. You can subscribe to two issues per year, or you can read a few free articles posted on the web site.
Tracks changes to data processing scripts and links each result back to the source data and script versions that produced it. This is one of the projects I get paid to work on at the BC Centre for Excellence in HIV/AIDS. We use it to track our bioinformatics pipelines that analyze genetic sequence data from HIV and Hepatitis C infections.
Maps hundreds of thousands of small genetic sequences to a set of reference sequences, then stitches them all together. Useful for finding out which drugs will be effective for a patient's HIV or Hepatitis C infection, as well as examining the virus's evolution in a patient or in a community. This is another of the projects I get paid to work on at the BC Centre for Excellence in HIV/AIDS.
Ticking Test
This library ports the MultithreadedTC library from Java to .NET. You can download the Ticking Test source code from the repository, and you will find an example multi-threaded class with some test cases.
The library lets you declare a method for each thread that you want to run, and then coordinate the timing of the thread execution with checkpoints called ticks.
Simple Chinese Writer
Helps you write Chinese text in your browser, using basic vocabulary. It highlights uncommon words that Chinese learners might not know, and also displays pinyin pronunciation with the characters. It's a Chinese version of XKCD's Simple Writer.
Chinese Vocabulary Flashcards
A fun project to generate several thousand flashcards for reviewing Chinese characters. I combined several sources of data on character frequency and definitions. The most interesting part was converting the data from a stroke order animation tool to static images. It makes the stroke orders easier to follow in the same way that static visualizations of sorting algorithms are easier to follow than animated sorting algorithms.
Chinese Reading Practice
After I'd learned enough characters, I wanted to practice reading, but it was frustrating to always have to look up unknown characters. I filtered through the Chinese sentences on to find sentences that only used the most common characters.
Blind Hex
I designed this board game to try and make simultaneous movement as elegant as possible. I also used it to test out my Live Coding in Python tool when I wrote the code to draw the game board.
Fortune Puzzles
Based on an idea from a book of party games, I used the sayings from the Unix fortune command to generate puzzles that you can solve as a group.
The Time Traveller's Tow Truck
A time-travelling trivia game that I designed as a way to let the players create their own historical trivia questions.
Birthday cakes for programmers
A birthday cake that I designed for a coworker. It's decorated with C code that prints the words to "Happy Birthday". Also includes a bunch of cakes by other people.

You can find descriptions of more projects at the blog.