Software I've Written

All this software is available ungher the GNU Public License. It's free, and you get exactly what you pay for. I'd appreciate an e-mail if you try this software. Please let me know if you have suggestions or modifications.

Climbing.gf
The database definition for a grok database to record rock climbs.
climb-convert
A shell script to convert climbing ratings from one scale to another. Can be used on it's own or within the grok climbing database.
browser-remote
A perl script to open a URL in a new window or tab of the current browser, or to launch a new browser if one isn't running. This wrapper hides the differences in command line switches required to open windows (or tabs) between FireFox, Opera, and Mozilla.
tailc
A "checkpointing" version of tail, loosely inspired by old versions of swatch. This perl script will show the additions to a file, after the point that it displayed previously. It uses the file size, inode number, and ctime to determine if the file has changed. This is ideal for periodic processing of large log files (ie., checking additions to /var/log/messages every hour, rather than continiously).
checkpass
A perl script, based loosely on code in the second edition of Programming Perl from O'Reilly, to check for well-chosen passwords.
Note! The original perl script as published by O'Reilly had a flaw that would corrupt Solaris /etc/shadow files.
pagepeeper
A perl script to notify the user if particular web pages have changed.
rcsedit
A script to ease the process of maintaining files under RCS control.
replcomps
An mh components file to work with the replwrap script.
replwrap
A shell script wrapper for the mh (or nmh) "repl" command to allow replies to be automatically customized based on the recipient's address.
find_hidden_loadable_modules
A shell script to detect the presence of hidden kernel modules under Solaris. There's no reason for them to exist, unless a rootkit has been installed...
check4stream
A perl script to check whether a streaming server is broadcasting or not. [an error occurred while processing this directive]