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.