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, check out my Stack Overflow profile:

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

I mostly use Stack Overflow to keep notes whenever I research a tricky programming problem, so it seems very odd to me that the site says those notes have helped several million strangers. Maybe you should try taking notes in a public place.

Projects

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.

Board Games and Puzzles

  • Donimoes - New games and puzzles I designed, along with games by other designers.
  • Vograbulary - 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.
  • 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. If you already have a piecepack, the rules for my games are on the piecepack wiki.
  • Abstract Games Magazine - I helped out with proofreading and game reviews back in the early 2000s, and I’m happy to announce that it has returned in 2019! You can now read all the articles on the web site, or buy a paper edition.
  • Game and Puzzle Design Journal - I was 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. The journal is now on hiatus, but you can still buy the old issues, or you can read a few free articles posted on the web site.
  • 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.
  • Six-Piece Burr Puzzles - I made a set of these for myself many years ago. I love them, because a set of 42 wooden pieces can be combined into over 200 sets of six pieces, each with a different solution. Each piece took me about an hour to make with hand tools, and I spread the project out over a year. My online avatar is a photo of a six-piece burr puzzle.
  • Akron - I love the board game Hex and other connection games, so I was excited when I learned about Akron. I used a computer-controlled milling machine to make myself a 9x9 board to stack marbles on.
  • Shibumi and Zero Play - After designing Akron, Cameron Browne came up with the idea of stacking marbles on a 4x4 grid to make a whole game system with many different kinds of games. The system is called Shibumi, and I’m writing a program to play several games in the collection. I’m also writing Zero Play as a general-purpose Python library that can learn to play any kind of board game.

Software

  • 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. Now includes a debugging tool: Space Tracer.
  • Testing Python - An essay on unit testing in Python, along with some sample code.
  • Kive - 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.
  • MiCall - 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 source code from the Ticking Test 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 tatoeba.org to find sentences that only used the most common characters.

Other Stuff

  • 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.
  • Top 40 Years Ago - Top 40 music history from 40 years ago in a twitter feed.

You can find descriptions of more projects at my blog.

What’s in the Picture?

Labeled Projects