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!)
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.
Jasmine for the Gnome platform
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.
A laser beam profiler that also works on cheap webcams
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.
Control lab instruments in Python
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.
Articulate
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!
A tutorial that goes beyond the basics
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.
Osxcart
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.
Pythonic Meep
Python bindings for Meep that you can actually use
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.
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.