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.
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.
- 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:
For more of my work, check out my portfolio.