aboutsummaryrefslogtreecommitdiff

Collection of software of varying ages I’ve written since the late 90s.

audiotron

Database creator for the Turtle Beach AudioTron.

As far as I’m aware, this device is still the best music player for digital media from network attached storage. Its support for streaming was never good (and isn’t up to modern standards), but all you needed was a NAS with a bunch of music, and to point the device to it, and you could play whatever you like on your stereo.

Since it has fairly old hardware and runs an ancient version of Windows CE, indexing large collections could take forever. audiotron here is a perl script that generates the database files quickly so you can skip that.

bombs

Bombs!

Missile Command -esque game. Written in perl and uses Tk. I wrote this during my first deployment to Afghanistan way back in 2002. Internet access was nil and all I had was a copy of ActiveState Perl to keep me entertained. This was the result.

cpphoto

Utility to rename and copy photos into a date-sorted hierarchy. I dump photos from my “camera” into an incoming directory and run this program against that, copying all the photos into a sorted-by-month-and-year directory tree.

CPUID

Incomplete and somewhat out of data micro-OS that boots and is supposed to display CPUID information. The part that isn’t complete is the CPUID-display part, though there’s a test program that works pretty well. The actual OS part seems to work just fine, making this of passing interest.

decomp

Decomp

Decompiler for x86 (32 bit only) I write around 2001 or so. Obviously won’t handle newer instructions (to include the 64 bit extensions).

defwrite

DEFWrite

Simple interface to generate differential equation files that can be plugged into Matlab’s solvers. I wrote this in the late 90s while taking a differential equations course and seeing the other students struggle with converting their equation into .m files that Matlab could use. Got me an internship at The MathWorks.

fileselect

File Selector

A Win32-only replacement for the standard Tk::FileSelect widget. UNC pathname navigation might need a little work. Currently implemented as a subroutine, but it would be a trivial exercise to convert it to a module.

fluxbox

Replacement for fluxbox-generate_menu.

gpx

Two utilities for wrangling GPX files.

gpxinfo.pl

Print basic stats about a GPX file, like distance traveled and elevation gain. Doesn’t really do much smoothing or anything, so if your accuracy wasn’t good while recording, then the output won’t be accurate either.

gpx2kml.pl

Generate a KML file from one or more GPX files. Makes it easy to view your tracks on Google Earth (that’s what I wrote it for).

gtviewer

GeoTIFF Viewer

Very basic GeoTIFF viewer. Loads one file at a time, converts coordinates and such.

Marmot

Experimental OS. Not complete, of course, but boots and runs just fine.

matfun

Library for the HP48 (both S and G) that implements vectorized matrix operations. I wrote this back in the late 90s when I couldn’t afford a computer to run Matlab, but had a calculator and wanted to do some Matlab-like operations on it.

matops

Domain-specific language that implements a vectorized mathematical language as a perl module. I wrote this when I need to crunch a bunch of numbers, but work wouldn’t spring for a copy of Matlab (seems like a bit of a theme). No optimization is done, so requires you to write your code to reduce redundant operations (i.e. compute things once and store into variables rather than relying on common-subexpression elimination).

mv

Memory viewer for the HP48.

plot

Plot

Signal plotter and analyzer for Windows. I wrote this during my first deployment to Afghanistan when I had a need to look at the spectra of some signals.

signature

Create a named pipe, ~/.signature that delivers the output of fortune. I wrote this in the late 90s when I still thought that (1) email signatures were OK, and (2) having a random one would be neat.

spacetweet

Program that runs on a raspberry pi, scrapes SpaceX tweets, and displays the most recent few as well as the guessed next launch on an attached Inky wHAT e-ink display. Helps me remain aware of when the next launch is going to be so I don’t miss it.

tap

TAP

Basic program for interacting with a serial port. Kinda like screen or minicom but less powerful. Written back in the 90s.

update

What do you do when you don’t have make or rsync, do have a C compiler, are stuck on Windows, and want to copy files from one place to another, but only when they’ve been updated? Well, write something like this, of course.

uu

UU and base64 encode/decode programs.

xalarm

XAlarm

My alarm clock for a few years. Launches a window with “snooze” and “off” buttons, and beeps annoyingly.

XCPU

Toy CPU emulator, used to investigate what an assembly language might be when limited to four bits for the opcode. Read instruction_set.txt to get an idea. I didn’t finish the disassembler program (though the disassembly routine works, it’s just not plugged int) or build the “standard library”, but you can write and run programs with this – it turns out that four bits for an opcode is possible, though makes for tedious to write assembly language programs. Things I’d do differently now: remove halt and nop instructions, replacing them with a reworked cpuop instruction. Add in exception/interrupt vectors. Don’t hardcode memory regions, but rather allow different regions to have different attributes.

xkill

Kinda like xkill, but for windows. Results can be hilarious the first few times.