Seth's Geeky Projects

Nothing is ever really finished, but some things are useful and stable enough to merit distribution, or at least not to embarrass me. Most of these are ancient hacks whose meager utility has long since decayed to zero.

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.
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.
torso[link to here]
This is a line filtering utility similar to head and tail, but it prints lines from the middle of input files. You give it a starting line and either and ending line or a total length. It can process multiple inputs, handling them individually or concatenating them.
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.
Gnocatan Graphics
I made new graphics for Gnocatan.