Software For Download
I've worked on a large number of software projects; the ones listed here are all open source or free software.
Occasionally I get mails from folks who found one of them especially useful, and wish to give money in return. If you find yourself in this (quite unlikely) situation, you might like to sponsor an item on my Amazon wishlist -- it's much appreciated!
Perl Scripts And Modules
There's plenty of these -- I love perl.
Apache SpamAssassin is a rule-based content-scanning spam filter.
Uffizi is a web gallery generation script.
My CPAN by-authors folder may contain a few more goodies. More here.
IPC::DirQueue is a disk-based many-to-many task distribution queue. If you're dealing with massive, continuous volumes of data, this is a good approach to dealing with it sometimes. It's on CPAN.
Sitescooper automatically scoots off and downloads the contents of several of my favourite news sites (including Slashdot, NTKnow, Linux Weekly News, Wired News etc. etc., you get the picture). It now supports over 100 popular sites, including quite a few in languages I can't even read!
WebMake is a simple web site management system, allowing an entire site to be created from a single WebMake file, and an optional set of additional content files and data sources. It also includes HTML preprocessing and support for an easily-editable text format, Text::EtText.
EtText is that easily-editable text format which converts readily to (X)HTML; nowadays, most people would probably use the more recent, very similar, but more popular Markdown format instead.
spicylinks is an automated link-blog summarising feed aggregator. It reads other people's link-blogs, so you don't have to, and reports the stuff that prove popular in your personal collection of sources.
Smaller Scripts
cdhistory is web-browser style history for UNIX shells and the "cd" command.
find-hidden-word-text is an implementation of Method 2 from Simon Byers' paper, Scalable Exploitation of, and Responses to Information Leakage Through Hidden Data in Published Documents, at http://www.user-agent.org/word_docs.pdf -- in other words, a tool to reveal hidden text in MS Word documents.
mhthread will thread an MH folder.
mailtunnel is a tool to maintain cheapo, work-everywhere, low-maintainance SSH VPN tunnels.
moderate-list is a tool to auto-moderate mailing lists using SpamAssassin to filter spam.
new-referrer-rss will generate an RSS feed of new referrer URLs from access_log.
snbencode/snbdecode is a simple interchange format for cutting and pasting data.
mailman-archive-to-rss is a tool to generate RSS feeds from Mailman list archives.
MH-sync is a perl hack for reading MH mail on an offline machine.
Packf-unseen is another perl hack for converting MH mail into mbox format, keeping track of which messages have been seen (ie. converted) previously. Handy for reading MH mail on a Palm handheld or similar, without requiring that the tools in question support MH mail specifically.
deliciousnetwork2opml.cgi is a web-accessible CGI which scrapes a given del.icio.us 'network' page, and converts it into an OPML file containing links to the RSS feeds of all network members.
The C=64-izer: a really silly web hack (in PHP) which converts images into a rough approximation of what they'd look like on a 1980's-era Commodore 64 microcomputer.
Greasemonkey User Scripts
Greasemonkey is an amazing tool. As an inveterate hacker, I have a tendency to hack up quick scripts to automate common day-to-day tasks, and GM is a perfect extension of this concept into the web arena. Here's a few GM scripts I've written:
Urban Dead HUD is a user script, which adds several major new features to the Urban Dead user interface. See this blog posting for a good intro. (This hasn't been updated in a long time, though)
Bugzilla See Earlier Comments is a user script which improves the Bugzilla user interface. When viewing the 'Create a New Attachment' page, this will transclude the previous comments onto the bottom of that page, for reference while editing.
Stretch-to-fit Textareas is a Firefox extension which improves the usability of editable textareas; it causes them to "stretch" to fit their contents, as you type. This behaviour was inspired by that of textareas in FogBugz. Can be inhibited by turning off the small checkbox to the right of each textarea.
Patches
see SoftwarePatches
Hacks
RabinKarpAccel-0.01.tar.gz: a fast parallel string-matching Perl XS module, based on the Rabin-Karp algorithm. Unfortunately, while it's great for many parallel-match tasks, it's not so hot with SpamAssassin rules, which is what I wrote it for -- Quite undocumented, but might be useful as a curiosity to someone.
Prehistory
I put together the PLP printer-spooler software package, between versions 3.1.0 and 4.0.x -- I've given it up by this stage, though (as you can tell by the antique page), and it's now replaced by LPRng. Apparently there are still some PLP users out there, so it sounds like it still works! PLP/LPRng were included in several releases of SuSE and Red Hat Linux.
Back in the mid-'90s, I hacked a bit of Java. Apart from working on Iona's OrbixWeb (see the work page), there were two interesting applets.
First of all, here's TimeGraph, an award-winning (and pretty useful) applet for graphing network statistics, or any other statistics that vary over multiple static time intervals. It was featured on the Gamelan's Best Java CD-ROM.
Next, JFortune is a pure-java implementation of the old UNIX favourite, fortune(6), with some new features to make it more GUIfied and applet-friendly. It also runs as a proper application as well. More details here.
gif320, a GIF image viewer for VT320 terminals -- really! Download it in old-skool .tar.Z format; or check out a few pre-made screens suitable for 'cat'ing to the terminal in question. Note that this will only work with authentic VT320 terminals, not emulators (unless it's a very good emulator ;). More info on VT terminals can be found at vt100.net. They rocked. GIF320, however, may be hard to get working; I haven't touched it since about 1994.
Discussion
There's a small-scale mailing list at jmasonhacks-dev at googlegroups dot com, if you feel the need to keep track of new developments or discussion of these scripts. Some of the bigger projects, of course, have their own sites and lists, so check there first just in case.
There are also issue trackers and what-not over at the Google Code Hosting site.
Version Control
You can browse the SVN repositories this software lives in, via these URLs:
http://jmasonhacks.googlecode.com/svn/ (for most of the code)
http://svn.yerp.org:81/trunk/jmason.org_software/ (used for the leftover bits of really old stuff, and for code of uncertain licensing status)
An (extremely) unofficial SVN::Web view of the former can be seen here: hxxp://jc.ngo.org.uk:81/svnweb/jmasonhacks/ . Cut and paste that URL and fix the protocol string, if you want to see it; I don't want robots following that link. (thanks to Nik Clayton for SVN::Web, and this gateway!)