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.

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.

Recent Programming Projects

Projects that are either new, or I am continuing to work on.

Timelog
The latest incarnation of the timelog command line tool for tracking time.
QuikDecision
The latest incarnation of the quick decision program that started as an exercise on the PalmOS (see below). This one is a website built in Rust. I still need to put the code for this on-line.
GuideLines
One of my wife's hobbies is calligraphy. I created this little tool to generate guidelines for different calligraphy hands.

Older Programming Projects

Projects that I worked on and released in the past, but haven't touched in a while.

ThinAir
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.
HTTPtest
This is an automatic regression test system designed for use in testing any system that uses the HTTP request/response protocol.
httpGrab
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
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.

Printables Designs
Most of my designs have been moved to Printables.com.
Thingiverse Designs (deprecated)
When I first started printing, Thingiverse was the go-to spot for designs. Since most of my designs have been copied to Printables, I'm no longer depending on Thingiverse.
Designs on github
In some cases, I have released the repositories for some of my designs on GitHub.

Specific Designs of Interest

Some of my designs are a bit more interesting (in my opinion) than others. These are direct pointers to some that I'm particularly proud of (for one reason or another).

T-Slot HexNut Holder
My first functional design from 2011. Hold M3 nuts in place while building a Thing-O-Matic. That printer was built in plywood and used these hex nuts and screws in a kind of t-shaped or cross-shaped hole. I had a lot of problems with the nuts falling out as I tried to assemble and disassemble the kit. This was my solution.
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.
Starfury Model
My first complicated model (from 2011) was an attempt at designing an Aurora-class Star Fury from Babylon 5. This design is pretty crude and not how I would design it if I ever tried again. But, it was a complicated, multi-part model designed in OpenSCAD.
Flowers in OpenSCAD
In 2014, I had been working in OpenSCAD for a few years and decided to try to design a more organic shape using the tool. I knew that the tool was not a good fit for organic shapes like flowers, but I decided to try anyway. My first attempt was a pretty simple tulip design. The rose was somewhat more ambitious.