Percy doing her no-paws Kilroy impression

Here is my PGP public key.

Here's a list of the non-technial books I've read since 1990.

Here is the obligatory picture of myself (and a variation on that theme). Feel free to poke around my photo archive, or Maryanne's photo archive.

Nowadays my primary hobby is playing board and similar games (after RSI forced me to give up computer and video games for the most part). I attend a weekly game night at the University of Virginia (all are welcome, write me if you want details) and I host occasional game days at home.

I keep track of the games I've played and my game collection at Here are some games I've played recently:

Nethack is my favorite computer game. I've been playing versions of it off and on since 1985. Hearse is a protocol which allows Nethack users to exchanges bones files with each other. I've written a Unix Hearse client, and a number of Nethack patches.

I spent a good number of years playing Quake, running some Quake servers, and working on a Quake mod called Artifact-RJS. I don't do that any more, but both the servers and the mod are alive and well, now called Rune Quake.

A number of the scripts below use my RS::Handy module (modified 2011-05-10, installation instructions). This module provides useful but not otherwise classified functions I use in my Perl programs (see the RS::Handy documentation). I should really have more discipline about categorizing all these things and creating separate modules for them so that they can be uploaded to CPAN. That's a lot of work, though, and if I forced myself to do that I'd likely end up re-writing these when I needed them, and that'd be worse than having this grab-bag module. What I like to do is to split useful components out of RS::Handy into modules which can be uploaded to CPAN. So far it has yielded Proc::SyncExec, IPC::Signal, Proc::WaitStat, String::ShellQuote, and some which made it into the core. If you find any of these compellingly useful let me know so I can prioritize splitting them out, too.


photos (modified 2010-12-14)
This is my ~/ file (used by sirc, a Perl IRC client).
String-ShellQuote-1.04.tar.gz (modified 2010-06-11, sig)
This Perl module provides functions for quoting strings for safe passage through shells.
URI-Find-0.16.tar.gz (modified 2005-07-22, sig)
This module helps pick URLs out of text strings. It was written by Michael Schwern, but I'm currently maintaining it.
Proc-SyncExec-1.01.tar.gz (modified 2005-02-05, sig)
This Perl module contains functions for spawning processes with proper exec() failure error reporting. It also has a fork_retry() function. It lacks tests, examples and a synopsis but it is otherwise complete.
learn-ip-address (modified 2001-12-04)
The Perl FAQ contains a method for finding out your machine's IP address which works by first determining its hostname and then doing a gethostbyname() on that. Here's an alternative I suggested which doesn't rely on hostname lookups, but has the disadvantage of giving you only one address when run on a multi-homed host.
libsirc-0.12.tar.gz (modified 2001-07-27, sig)
This is collection of modules for sirc, a Perl IRC client. It provides lots of programming conveniences, plus auto-opping, kicks with temporary bans, and the like. It notably contains Sirc::URL, which might be the most day-to-day useful thing I've ever written. It marks up the output on IRC to allow you to load URLs without cutting and pasting them. To use it you'll also need URI::Find 0.11 or higher.
Proc-SafePipe-0.01.tar.gz (modified 2000-09-23, sig)
These Perl functions provide a simple way to read from or write to commands which are run without being interpreted by the shell. This module provides both popen() and backtick equivalents.
Proc-WaitStat-1.00.tar.gz (modified 1999-10-21, sig)
This Perl module contains functions for interpreting and acting on wait() status values. This module requires IPC::Signal, so get that one, too.
IPC-Signal-1.00.tar.gz (modified 1998-10-27, sig)
This Perl module provides functions for translating signal names to numbers and vice versa. This version works with 5.005 (and earlier). Older versions didn't work with 5.005 because the format of $Config{sig_num} changed.
User-utent-0.02.tar.gz (modified 1998-05-14, sig)
This is a version of my utmp/wtmp module which does not work. I'm releasing it as part of my guilt alleviation campaign. I'd done a lot of work on the module last summer, but I could never get around to finishing it.

I'm bundling up what I've got so far and looking for somebody who'd like to take it over. The module uses autoconf with quite a bit of local m4 code to do configuration. I've looked the code over (for the first time in 4 months) and the foundation is solid, particularly aclocal.m4/ and the gen-code script. I'd estimate that the module is about two thirds done. I hope somebody can give it the time it needs, I think this module could really shine.

User-utent-0.01.tar.gz (modified 1997-05-01, sig)
This is a Perl interface to the utmp, wtmp, utmpx and wtmpx databases and functions. It is definitely not ready for prime time. Most of the XS functions have been written, but neither the automatic utmp/utmpx Perl glue nor the documentation has. This version should be at least a little useful, 0.02 does not work but I'm releasing it anyway because I'm looking for somebody to take it over.

Roderick Schertler <>