My name is Justin, and I write free software (the libre kind). I generally stick to game development, but I’ll occasionally tinker with other free software projects. I also have an obsession with the anime/manga series, Hidamari Sketch.

If you want to get in touch with me, you can via the following links:


(To see a full list of things I’ve hacked on, check out my Github profile)


Clint Bellanger’s Flare is a fantastic free-software action RPG, similar to the Diablo series. I’ve been helping with development since March of 2012. Most of my programming time is now spent on Flare, be it small bugfixes or brand new features. It’s nice to be able to work on an ambitious project that still has a relatively simplistic codebase.


My January 2013 OneGameAMonth project. I had always wanted to make a puzzle game like Tetris Attack. I’m pleased with how this one turned out. It’s not as complete as Tetris Attack, but it’s still a lot of fun to play. I picked this back up in February 2015 after receiving patches for a GCW-Zero port. It has since gotten a new game mode and other improvements.

Noman’s Dungeon

This is a turn-based, rogue-like created for Ludum Dare #31. The goal is to travel to the last floor, retrieve the elusive trophy, and return to the surface. Some of my thoughts on the game and its development are in this blog post.


This is a really simple RSS reader made with GTK2 that sits in the system tray. Most of the RSS readers I used before were either bloated GUIs or CLI only. I wanted to make a lightweight GUI program to fit in between those two extremes. I don’t personally use this anymore, since I no longer subscribe to any RSS feeds. It’s still a neat little program and was my first experience developing something with GTK2.

Flare Tileset Definition Generator

A simple Python script that can take a Tiled *.tmx file and create a tileset definition file for Flare. In addition, it uses ImageMagick to combine all of the tileset images into a single image file. It might be a bit out of date, since Flare’s map format could have changed a bit since this was written.