Open source projects
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:
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.