Zygo Blaxell's Projects

Here are some open-source projects I have been, am, or will be working on.

If you have comments--good, bad, or ugly--or if you want to help, comment, criticize, or complain, my email address is zblaxell@furryterror.org.

Not all of the projects have links because I haven't written web pages for them. The ones that are more or less defunct probably won't ever get web pages. Poor, orphaned projects... :-(

Current Projects

send-irc
A pair of simple Tcl scripts that send stdin to an IRC channel.
XChat Festival Plugin
A project that desparately needs a better name. The XChat Festival Plugin (XCFP) is a Tcl script that can be loaded into an XChat IRC client to read out incoming IRC messages as speech. It is designed to replace the "beep" sound, and provide much more useful audible notifications. More details on the Wiki page.
Dupemerge
A script which locates identical copies of files on a POSIX filesystem and replaces them with hardlinks to the same file. There have been several implementations over the years.
Hermit Crab Debian GNU/Linux
Scripts to build a bootable Linux CD-ROM. Similar to Knoppix, but without all the annoying automation. Unfortunately license restrictions prevent me from distributing the ISO images I use, so this project page covers only the scripts that generate them.
Fake-FS
FakeFS is a highly space-efficient filesystem emulator. It is designed for use as part of a site-wide backup system, but can also be used for FTP site mirrors and other highly redundant collections of files.
SoftWiki
If you know what a Wiki is, SoftWiki is a Wiki that allows you to edit significant parts of its own implementation code. If you don't know what a Wiki is, try the site that put a new word into the jargon file at WikiWikiWeb. [Note: Since the above text was written, there has been something called Wikipedia which has brought the Wiki concept fairly directly into people's living rooms.]

The Drunkard
This is an experiment in daily building and testing of Wine. It ... uhhh ... makes a lot of Wine ... and ... uhhh ... tests it. Daily. Quit that snickering!

This project no longer resides here, but lives on (maybe) at:

deb http://gluck.debian.org/~andreas/debian wine main
deb-src http://gluck.debian.org/~andreas/debian wine main
RandStream
Want to erase a hard disk fast? Want to confuse your enemies at the same time? Try RandStream, a low-quality high-speed random number generator designed for clobbering inconvenient data.

Lazy readers can stop reading at this point. There's nothing more to see on this page.


Past Projects

I'm still in the process of organizing the software into something presentable. I'd also like to dig out some of the versions that have actually been released, not the singed remains on my desktop machine at home that have survived a fire, the resulting collapse of my source code control infrastructure, three job changes, three complete computer systems upgrades, a software-induced disk crash, and a bunch of random bug fixes and performance or compatibility hacks. I have the released versions on DDS-2 tapes but I no longer have access to a DDS-2 or better tape drive, which makes retrieval problematic. A lot of them are scattered on FTP sites and mailing list archives, so they're out there if you want to do a little digging.

filereaper
A Perl 5 script with platform-specific Linux and Solaris code that does real-time, secure, on-demand deletion of temporary files. You used to be able to get this on CPAN, but apparently not any more...

nuzer
A Perl 5 script which downloads binary newsgroups from an NNTP server and decodes them.

cddamp3 (for want of a better name)
A Tcl and C++ program that reads audio from CD-DA discs (that's the kind you get in a music store with prerecorded music on them). Although there are dozens of programs like this out there, this program does two things that other such programs don't.

Actually cddamp3's two unique features are its data reassembly algorithm (which is actually broken in the worst case, but has a very effective, if expensive, typical case) and the ability to distribute audio to codecs running on several machines in parallel, without having to store more than a few megabytes of raw audio during the encoding process.

If you have an MMC-capable CD-ROM drive that "Does restart non-streamed digital audio reads accurately", then the first feature is meaningless. If you have a modern CPU then you can probably encode audio in most formats on a single machine much faster than you can play it, and certainly faster than you can encode audio after transporting it in raw form over a network. Most people have disk drives that are sufficiently large to accomodate a "few" hundred megabytes of raw audio data during the encoding process. Machines that can hold an entire CD in RAM are common now.

mj
A C++ program that uses 'l3enc' and 'splay' (two excellent utilities that have since disappeared into obscurity) to implement a random play list of audio files (mj stands for "MP3 Jockey"). There are dozens of programs like this out there too, and of course mj has a couple of features of its own. mj was later reimplemented in pure Tcl, as an experiment in distributed process control.

digitz, sch, and other OS-9 utilities
Written for the Tandy Color Computer 3 in Motorola 6809 assembler, this is the kind of code I was writing in high school (1987-1992, if you must know). Oh well, at least I lost some of that arrogant attitude in my documentation over the years. And I learned how to spell words propelry. :-)

Although my CoCo 3 is long lost in the closet (actually I don't remember which closet that is), some of the hacks I wrote for it still remain. In fact, I still have its hard drive in a big box along with a whole lot of old disks and weird format tapes that I also can't read. If you have one of my old CoCo programs such as sch or gifstar, please email me a copy!

Vaporware Projects

Warning: all of these projects are officially vaporware.

Server That Faxes A Lot (stfaxalot)
An integrated package of Samba, Netatalk, ImageMagick, mgetty+sendfax, GhostScript, Apache, Red Hat Linux, and some Perl code to make a web-based fax server for a small office or department.
Aztech Radio Card Driver
I bought one of these back in May 1997 (I think), played with it for a week, then put it on the shelf for a while (I didn't have a slot free in my machine for it). I used DOSEMU, the DOS emulator for Linux, to monitor the protocol used by the DOS radio card driver program. By the time I got around to finishing the driver and trying to figure out where to publish it, I discovered that there was an Aztech radio card driver in Linux kernel 2.1 written by three Vermont State College students.

C Multi-Threaded Real-Time Faster filereaper (cmtrtffr)
Let's face it. filereaper could be faster. A lot faster, a lot less memory-intensive, a lot less system-call-intensive, and a lot less prone to weird bugs in both Perl and the OS it runs on, if it was written as a multi-threaded C program instead of a Perl script.

The reason why it's in the vaporware section is that I've been planning to write this for [$CURRENT_YEAR - 1995] solid years now. The current filereaper works (well, most of the time, anyway) and I'm not subject to thousands of complaints about its current performance all day (and before you ask, yes, people did complain about its predecessor gfreaper).

Filesystem Compression for Linux (or Unix)
Somebody else is doing this: the e2compr project. The other people are doing it with kernel patches in the e2fs filesystem directly, while I was doing it within a user-mode NFS server. It might be cool to revisit this as an LD_PRELOAD hack...or with FUSE.