You can find lots of my code on my personal GitHub account and some more on my company's GitHub account. But if you don't want to spend your time digging around, here are a few projects of particular interest.

Code samples

Here are a few small, real-world projects to give you an idea of what my code looks like:

  • rdf-agraph (Ruby). A library for interfacing with Franz's AllegroGraph graph database. (source code)
  • process-pst (C++, Linux). This tool was part of a much larger cloud-based document imaging system that I built. It unpacks Microsoft Exchange files into RFC 822 emails with metadata in EDRM format using Microsoft's PSTSDK library.

Language learning tools

In my spare time, I amuse myself by studying French and Middle Egyptian. Here are a few useful tools, most of which are still in beta.

  • SRS Collector (Ruby, Rails, JavaScript, Ember.js). Read webpages and ebooks in a foreign language, and record puzzling sentences using either a Chrome extension or the highlight function of your ereader. Then, using the web UI, add definitions and images for unknown words, and export to Anki using an Anki add-on. (source code)
  • ibus-ancient. An IBus input method for brave Linux users which supports typing Egyptian hieroglyphs.
  • hierogloss (Ruby). Enhanced Markdown with support for interlinear glosses and Egyptian hieroglyphs.

Halyard 2D/3D multimedia engine

The earliest ancestor of Halyard dates back to at least 1989, when it was used to build educational multimedia applications for Win16. I took over as lead programmer in 2002, and I gradually started refactoring it and replacing modules. Later, I was joined by several contributors including Brian Campbell, who helped thrash out low-level design issues and who also worked on the core.

The final version of Halyard has a lot of cool features:

  • Scheme-based scripting, using Racket and a Ruby-like metaobject model.
  • A complete IDE, featuring syntax highlighting, cross-referencing, code completion, tooltips and a code browser.
  • 2D graphics based on Cairo and FreeType.
  • 3D graphics based on Quake II. The initial integration between wxWidgets and Quake II was performed by the amazing Vadim Zeitlin.
  • A Quake-based 3D gamma radiation simulator used for teaching about shielding and the inverse square law.

Unfortunately, we only have one, low-framerate video available online at the moment. The actual 3D engine runs at about 60 frames per second.

Here are a few screenshots:

Halyard Quake II integration Halyard editor

You can find the source code on GitHub, but I recommend contacting me if you want to try to get it running.

For more of my work, check out my portfolio.