I've been writing software for quite a while now, starting with programmable graphing calculators, then later moving onto "real" computers. Here is a selection of software I have written over the years. Some is complete. Some is only mostly complete. Some may catch your computer on fire and corrupt your precious bodily fluids. You've been warned.


This is source and a schematic for a simple thermometer. Since we live in Alaska now, I had found myself frequently wondering during the winter just how cold it was outside. The old analog thermometer on the porch seems always to be five or more degrees off, and looking at it required walking downstairs (way too much work). This device is intended to mount on the wall of my office with the probe outside such that I can view the outside temperature first thing in the morning.

The circuit is based around the TMP36 temperature probe and an Atmel ATtiny44 microcontroller. The tarball contains the source code, schematic, and bill of materials.

View photo of finished board, 227kB

Download thermometer: gzipped source tarball, 988kB


audiotron is a Perl script that generates TOC files for the Turtle Beach Audiotron. If you own one of these, then this script may well interest you as TOC files greatly speed up startup time. There are other scripts out there, but, to my knowledge, this one generates the "best" output by making sure all ID3 fields have the correct format and also by guessing the ID3 info if there is no tag.

Download audiotron: gzipped Perl file, 4kB

GeoTIFF Viewer

I've noticed that there really aren't any programs for Linux that just view maps. There are several GIS packages, but if all you want to do is look, they're overkill. I wrote GeoTIFF Viewer to be a simple viewer of digital raster graphics. It uses libtiff and libgeotiff for the heavy lifting of reading the TIFF and associated GeoTIFF tags, and GTK+, GDK, and GLib for the widgets and graphical utilities. As such, it should run on any platform that these do, which is to say, most modern operating systems. Digital raster graphics for California can be freely obtained at The California Spatial Information Library. The USGS and the Tennessee Valley Authority have data for the rest of the country.

View screenshot, 122kB

Download GeoTIFF Viewer: gzipped source tarball, 202kiB


Your tax dollars hard at work here. I wrote this during my second deployment to Afghanistan. It's a Missile Commander style game, entirely written in Perl/Tk. Whoda thunk?

View screenshot, 7kB

Download Bombs!: gzipped perl file, 4 kB


This is a sorta complete decompiler. It supports (more or less) ELF32, ELF64, PE, NE, MZ, and COM executables on the IA-32 architecture (x86). It'll tell you it also supports the Alpha, but don't believe it. The generated code can't be recompiled so it isn't terribly useful, but it's a great toy to play with and it does decompile things just fine.

View screenshot, 30kB

Download decomp: gzipped source tarball, 80kB

UU Encoder/Decoder

For some reason a while ago, I was unable to find a program that could uudecode an archive. Since I didn't have a heck of a lot to do at the time, I wrote both an encoder and a decoder, complying to the Open Group specification (uuencode, uudecode).

Downlad UU: gzipped source tarball, 12kB


Before I owned a computer, I programmed extensively on my HP48. During my second year in college, I learned Matlab, and realizing the my calculator couldn't do many of the things with matrices that Matlab can, I decided to program my own. This is what I wrote: Matrix Functions, or Matfun.

Matfun itself has a large number of useful functions, from IARR, which emulate Matlab's : operator, to MTXELM, which applies a secondary (an HP48 function) to each element of an array, to MPLOT which will plot arrays in much the same way that Matlab does.

Download Matfun: zipped source code and binaries, 24kB


In order to use the differential equation solvers in Matlab, you need to write a differential equation file which describes the differential equation you want solved. Realizing that many who want a solution don't necessarily want to program, I wrote DEFWrite (Differential Equation File Writer). It's simply a graphical interface where you enter your equation and parameters and then click a button to generate the file.

As a note, I wrote this back in '98. The code is not at all up to my modern standards. If I were to rewrite it now, this would be all kinds of slick (trust me) with bells and whistles galore, but nothing to distract from the purpose of the application.

View screenshot, 25kB

Download DEFWrite: zipped m file and images, 17kB


FileSelect is a Perl subroutine that replaces the normal file chooser widget supplied with Perl/Tk. This is a Windows specific widget, though I'm sure it would be possible to port it. While deployed to Afghanistan, I wrote a number of Perl applications and was frustrated by the default file chooser's poor handling of UNC pathnames (and other irritating foibles). So, with those irritations in mind, I wrote this, much to the hurrahs of the folks who were using my other software.

View screenshot, 11kB

Download FileSelect: zipped Perl file, 3kB


Tap was my first large C application. It is a program which talks to a serial line. There may be a better application for the job (Kermit comes to mind), but this is lightweight and simple to use, so may be just the thing at times.

View screenshot, 16kB

Download Tap: gzipped source tarball, 82kB


This should probably have been called WKill. It's a fun and simple Windows application created in the spirit of the real XKill. Start (my) XKill and the cursor changes into a death cursor. Then select the window to kill. Unless it's particularly tenacious, the window will disappear and the selected application will close. XKill will keep running until the mouse is right clicked. Fun for the whole family!

Download XKill: tarred and gzipped source and executable, 31kB


Plot is a Windows application which loads waveform data and displays it. This data can be Fourier transformed to view the frequency domain. Aside from normal waveform data, sound files (.wav) can be loaded and viewed.

View screenshot, 10kB

Download Plot: tarred and gzipped source and executable, 65kB

Valid XHTML 1.0! Valid CSS!