Although most of the programming work I've done is owned by the companies I've worked for. There are some personal projects that I've released.

Programming Projects

I am a firm believer in Larry Wall's three programming virtues:

  • Impatience
  • Laziness
  • Hubris

In the interest of laziness, I spend a lot of time writing little tools to make my life easier. Here's a list of the various software projects that I've written and placed on the web. Hopefully some of them will solve a problem you have or help on one of your projects.

The ThinAir pseudo-random number generator class library is a large collection of PRNGs coded as classes with a common interface. This code does not use all of the state-of-the-art C++ features. Mostly because no compiler I had supported those features at the time the code was written.
Web Site Description Library
The Web Site Description Language (WSDL) was the subject of my master's thesis in computer science. Unfortunately, about the time I submitted my thesis to be published, a group of companies released a new standard. The Web Services Description Language (WSDL) serves a completely different purpose and has nothing to do with this code.
This is an automatic regression test system designed for use in testing any system that uses the HTTP request/response protocol.
This script helps automate signing up for work positions for events hosted by voluteer organizations.
This Perl script started as a simple exercise to learn the LWP module. It has grown into a relatively powerful tool for testing and interacting with web servers.
The Win32 Synchronization Classes
This is a set of C++ classes I wrote to wrap the Win32 synchronization primitives. The code includes both thin wrappers and higher level tools built using the primitives.
PilotFORTH Code
This is a large collection of random library code I wrote for the PilotFORTH development system.
QuickDecision is a small PalmOS application that uses the built in pseudo-random number generator to help you make decisions. The program was built partly as a joke and partly as an excuse to learn to program for the PalmOS.

SVG Projects

Scalable Vector Graphics (SVG) is an XML-based vector image format. It has been incorporated into HTML 5, and is supported by all modern browsers.

3D Printing Designs

In 2011, I got my first 3D printer. Although I spent quite a bit of time printing other people's designs, I soon began making my own. My tool of choice has been OpenSCAD.

  • Thingiverse Designs
  • Designs on github
  • Calligraphy Ink Stirrer My wife is a calligrapher among her many skills. For some of her commissions, she mixes her own ink. She had been stirring the ink in small containers with a toothpick. We talked about a design with little wings that would do a better job. This was the result.