Open Source Projects

This is a list of the open source projects that I wrote, co-wrote, or maintain. There are others that I didn't write myself but have contributed to.



Inform is a design system for interactive fiction based on natural language. It’s tightly integrated with its own GUI development environment. When it was first released, this GUI was only available for Windows and Mac. I built one for Linux, which was eventually adopted as the project’s official Linux GUI. (This was what got me interested in open source in the first place!)

Go to website View on GitHub



Co-designed with my friend and former neighbor Marijn van Vliet, this project is a GTK implementation of the Glk I/O standard for interactive fiction. We designed it with two purposes: powering the embedded viewer in Inform, and viewing interactive fiction on the iRex iLiad e-reader.

Go to website See the code

Jasmine GJS

Jasmine for the Gnome platform

Javascript GJS BDD Autotools

Jasmine is a behaviour-driven development framework for testing Javascript code. This is a port of Jasmine to the Gnome desktop’s GJS Javascript interpreter. It also integrates nicely with Autotools.

Read more View on GitHub


A laser beam profiler that also works on cheap webcams

Python NumPy SciPy Traits Chaco

Commercial laser beam profilers are expensive although they perform fairly simple calculations and often have horrible user interfaces. An open-source solution designed for inexpensive hardware benefits optics researchers, engineers, and hobbyists everywhere.

Read more View on GitHub


Control lab instruments in Python

Python NumPy VISA

REP makes it easy to interface your lab instruments with your data analysis and visualization tools — Python, of course! It’s a great alternative to LabVIEW if you’d rather script your experiments than fiddle with wires and blocks.

Read more View on GitHub


Write your papers collaboratively in Google Docs, then format them in LATEX


It’s the 21st century. LATEX may be the best possible typesetting system for scientific articles, but scientists don’t want to type markup by hand anymore. These days, we want tools that allow us to write easily and collaboratively. Articulate lets you write your articles in Google Docs, while still using LATEX’s excellent facilities for math formulas and sticking to the principle of WYSIWYM. Then, convert them to LATEX with only a few clicks, ready to typeset and submit to a journal!

View on GitHub

Advanced GTK Techniques

A tutorial that goes beyond the basics

C Mallard GTK Autotools

I wrote this tutorial for people who have passed the stage of learning how to build user interfaces with GTK, and want to know how to program more advanced, real-world applications.

Go to website View on GitHub


Import RTF and Plist


This library for interoperability between Mac OS X and GTK programs is a spinoff project from Inform. It reads RTF documents and XML Property Lists, two formats which are used in Mac OS X’s Cocoa API.

View on GitHub

Pythonic Meep

Python bindings for Meep that you can actually use

Python C++ NumPy

There are Python bindings for Meep, MIT’s finite-difference time domain electric field simulator, but in my opinion they don’t take enough advantage of what Python offers — they require (shudder) manual memory management! This is a proof of concept I wrote, to demonstrate that it really is possible to use Meep in a Pythonic way.

View on GitHub

CARS Wavelengths

Calculate the wavelengths in a coherent anti-Stokes Raman process


I wrote this tiny utility while I was working on my Masters’ thesis in order to aid myself in quickly calculating back and forth between wavelengths, frequencies, and wave numbers.

View on GitHub