I've been writing software since the days when memory was measured in kilobytes and distribution meant floppy disks or BBS's. I started professionally in games and have spent the decades since working in graphics, simulation, geospatial systems, networking, tools, and the infrastructure underneath them.
Along the way, I've never quite lost the habit of building the thing I wish already existed.
Most of what you'll find here is C++ or C#: applications, development tools, reusable libraries, experiments, and a few projects that grew considerably beyond their original intentions.
I like software that is understandable, efficient, and does what it says on the tin... small abstractions, few dependencies, and predictable behavior. Tools that help you actually get something done.
I guess I just enjoy making useful things.
To wit...
A native C++ game, graphics, and simulation engine.
Long-running and large in scope, Celerity encompasses everything from rendering, audio, and scripting to physics, terrain, input, and tools - literally everything you need to build a game. The goal is always the same: to make difficult things easier.
A review and reporting tool that captures not just what you found, but the context needed to find it again.
Whether you're testing the software or testing data with the software, Wabbus captures screenshots, video, voice transcription, and structured reports while application-aware plugins can preserve and restore the state surrounding an issue, helping another person return to exactly what you were looking at.
A lightweight, visual and scriptable packaging and installer system for Windows.
Create simple installers interactively, or use JavaScript to customize the complete installation lifecycle while producing compact, self-contained packages.
A flexible C++ property system for making application data inspectable, editable, and serializable.
Typed properties, references, metadata and flags provide a common vocabulary for exposing and manipulating application data without coupling it to a particular consumer.
Lightweight, channel-based messaging for native C++ applications, from local processes to distributed devices.
A deliberately compact messaging abstraction for connecting applications without bringing an entire messaging infrastructure along for the ride.
An optical theremin controlled with a Leap Motion sensor.
...because apparently I needed one!
There's plenty more in the repositories below. Some of it is useful, some experimental, and some exists simply because I wanted to know whether I could make it work.
That's how the useful things tend to start.


