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

Production Rust

Here are some larger, recent projects that see heavy prodction use.

  • dbcrossbar (Rust). Move large, tabular data between databases. Supports PostgreSQL, BigQuery, CSV files, S3/GCP buckets, RedShift, etc.
  • geocode-csv (Rust). High-throughput, production geocoding client. Includes Smarty support, address normalization, and extensive OpenTelemetry monitoring.

Older 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.

  • substudy (Rust). Coverts video files and bilingual subtitles into multimedia flash cards. Surprisingly useful for listening comprehension.
  • 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.