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 book of domino games and puzzles or my Stack Overflow profile:
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.
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 - A book of new games and puzzles I designed, along with some by other designers.
- Four-Letter Blocks - A new type of puzzle I designed that’s a mix of crossword puzzles and jigsaw puzzles.
- Chess Kit - Lighthearted new games I designed for your chess set. Might be a book some day.
- 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.
- 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. I’m also adding web tutorials that use the live coding features but run all the Python in your browser - no setup needed!
- SaVaGe Turtle - Take those fun turtle graphics that you built with Live Coding in Python, and convert them to SVG files. Use reportlab to include them in PDFs.
- 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.
My 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 Mastodon feed.
You can find descriptions of more projects at my blog.
Other People’s Stuff
If you enjoy puzzles as much as I do, here are some that I’ve really enjoyed over the years:
- Bart Bonte blogs a steady stream of browser and mobile puzzle games with some real treasures in there. Highly recommended! Start with each year’s best of the year post.
- 0hn0 is a simple logic puzzle a bit like a sudoku. The design is so clean and enjoyable that I play it every morning over breakfast.
- Another of my daily treats is Connections on the New York Times Games page.
- Connections replaced Wordle in my daily routine. Wordle was such a hit that most puzzle enthusiasts know it, but it spawned many imitators. My favourites are Quordle and Pimantle.
- Chessformer is a platformer that combines chess moves and gravity to make really clever puzzles.
- Cyadonia started out as an Amiga puzzle game in 1991 where you move in four directions, interacting with many different objects in each room, unable to stop until you hit something. It has evolved through many platforms over the years collecting more and more levels along the way, and it is now extremely polished and huge. I’ve only completed a small fraction of it.
- Boxing up Bamboo has a nice combination of simple components with complex interactions. It takes a while to figure out what’s happening, and I really like that it fits several interesting puzzles into a single screen.
- Strange Keyworld is a platformer where the control keys you press not only move you, but are objects in the world.