Seth's Geeky Projects

Most of these are ancient hacks are no longer useful, if they ever were, but I want to do my part to clutter up the web.

heatmap.py
A geo-data visualization tool. Not the first of its kind, but non-proprietary and works reasonably well.
probability calculator
A simple conditional probability calculator. I needed to compute some things and I wanted to brush up on JavaScript. Also, the UI for similar calculators I found out there is terrible. The code is almost, but not quite, a general-purpose forward-chaining inference engine.
txt2html
txt2html helps you convert plain text documents to HTML. This was pretty useful in the early days.
libjpeg-pad
libjpeg (8d) with image padding capability added to jpegtran. For when you want your jpegs to be larger, but you don't want to add a decode/encode cycle and the artifacts that come with it. The padded area comes out as a nice solid color of your choice, as long as you choose medium grey.
xmatrix-dumper
A hacked version of xmatrix that outputs to files. I used this to make geeky start up sequences for my Android devices.
Henry Fingerprint Classifier
I wrote a Javascript implementation of the mostly obsolete Henry fingerprint classification system.
Stone Soup Scavenger Hunt
Like a normal scavenger hunt, but no one is in charge, and the value of an item depends on how many teams find it.
Wordsprout
A fun letter/word game some friends and I made up.
XMMS Waterfall spectrum analyzer
autojot
Indexes everything you see so you can find it again later.
PizzaZone
PizzaZone helps you decide what pizza to buy. Or at least it did, back when it worked. For years, I left the site up as a historical curiosity with the actual recommendation system is offline for boring technical reasons, but now even that doesn't work and I don't care enough to resurrect it. The web site itself was built around a finite state machine. (This was 1998, before web app frameworks.) The recommendation engine used genetic algorithms, and the objective function involved a simulation of people taking turns choosing slices until they were full, greedily trying to maximize their individual happiness according to heuristics that considered their preferences for specific toppings as well as a desire for variety.
untar[link to here]
I hate when I untar something and it spews files into my current directory. For a long time my solution was to be in an empty directory. Now I use my untar script. It peeks into the tarfile (even if it's compressed) and untars it into a subdirectory if it thinks it's not going to be well behaved.
dtmf-decode-single[link to here]
A small perl script that decodes a single DTMF tone. That is, you give it an audio recording of you pressing a button on your phone, and it tells you which button you pressed. It can't handle sequences though, only single tones. (For sequences, see dtmf-decode-continuous.) It uses sox to do the actual audio processing.
dtmf-decode-continuous[link to here]
A perl program similar to dtmf-decode-single, but attempts to decode a stream of tones, which is usually what you really want. The segmentation is a bit flaky, but if you're in a hurry and don't want to segment the input manually, this might work.
Discardia calculator
grepui
A GUI front-end to grep, intended for use on handheld systems.
bbdb
(and some other BBDB related utilities)
tkspools[link to here]
A Tcl/Tk mail notification gizmo that deals well with lots of spools files. Each spool is listed in a separate widget with a predictable name. That lets you use X resources to easily mess with a particular spool's appearance and bindings. In my own configuration, I bind the middle button to bring up the the right thing my mailer.
make-dict-index[link to here]
A Perl script that creates index files for dictionaries suitable for dictd.
Chrons
Chrons are metric time. I hate hours:minutes:seconds; I think that's as stupid as miles:yards:feet:inches. I was once decent at doing conversions to and from chrons, but that skill has since atrophied.