Here's stuff that I've written and made available as free software. It should all run on pretty much anything that'll provide a POSIXish environment; most of it was developed on Linux, AmigaOS (with ADE) or FreeBSD.
All files on these pages are signed with my GPG key, available from keyservers:
pub 1024D/B94D2E95 1999-11-14 Adam Sampson <azz@us-lot.org>
To fetch my key from your local keyserver and verify that a file has my intact signature on it:
gpg --recv-keys B94D2E95 gpgv something-1.0.tar.gz.asc something-1.0.tar.gz
CVS snapshots
For the projects that I maintain in CVS, snapshot tarballs are generated daily if changes have been made; they're available in my CVS snapshots directory.
Download mirror
Tim Bishop has very kindly set up a mirror of my software; if you're packaging my software, you may like to add it as a secondary source. Thanks, Tim!
Project pages
Some of my projects have their own pages:
- GNU xhippo, a multi-format GTK-based music player.
- Potamus, xhippo's successor.
- freedt, a daemontools reimplementation.
- The GARStow software packaging system.
- rawdog, an RSS Aggregator Without Delusions Of Grandeur.
- onenetd, a single-server inetd replacement.
- cdsuite, a Python tool for converting audio CDs to collections of audio files.
- adfilter, a set of Apache rewrite rules to block banner adverts.
- My electricity usage monitor.
- The Occam Audio Kit.
- vdesk, a lightweight virtual desktop manager for X.
- gselt, a program that watches the X selection and displays a menu of things that can be done with the current selection.
- misccode, a collection of my miscellaneous programs that haven't been packaged separately
Useful code
Code in this section is generally finished and stable; if it doesn't work, I'd like to know about it.
- linuxlogger-0.7.tar.gz
(GPG signature)
A minimal replacement for syslogd and klogd that works with freedt. - yalias-0.7.tar.gz
(GPG signature)
A little tool that shows a window with a text field in, and matches lines entered into it against regular expressions in a file; you can use it to launch commands, start appropriate browsers for URLs, log into machines, check spelling, and so on. UKC users will recognise this as a modern take on the popularxaliastool. - htmltoprc-1.0.tar.gz
(GPG signature)
A suite of small programs to convert HTML files to PalmOS-readable doc files. (My preferred reader is CSpotRun.) The convertor works well on most input files; Wired back-issues, for instance, convert very well indeed. Needs Python 1.5 or above. - arnie-0.1.tar.gz
(GPG signature)
A Markov chain conversational tool for the PalmPilot. (People who know me may have come across other implementations I've done of the same thing; my IRC bot uses the same system. The archive also includes a couple of tiny Perl implementations which the denizens of the FWP mailing list came up with.) A reasonable example of how to write a primarily-text-based application for PalmOS; also makes use of the Palm's database facilities to store the dictionary. - mkservice
(GPG signature)
A shell script to create a service directory for daemontools. (This is included in freedt.) - batvise-0.2.tar.gz
(GPG signature)
A different solution to the problem that daemontools/freedt solve. batvise provides a set of simpler tools from which equivalents to supervise etc. can be built; manual pages are included. (You will probably still want to install freedt in order to get dumblog.) This is stable, but I'm unlikely to do further development on it, since I'm reasonably convinced that the freedt approach is better. - logtailer-0.5.tar.gz
(GPG signature)
A small program that's capable of following multiple logfiles. Handy if you're running a number of daemontools daemons (or even Apache and syslog) and want to keep an eye on their logs. If you're looking for a somewhat more graphical tool that does the same thing, have a look at Paul Mutton's JLogTailer. - element-0.1.tar.gz
(GPG signature)
A small tool for secondary-school chemists, which provides various information about elements in the Periodic Table. This was my first project under Linux, and therefore has great sentimental value to me. - mod2text2mod-0.1.tar.gz
(GPG signature)
A pair of tools which convert Protracker modules to and from a human-readable format. With this package, you can use Emacs as a tracker. - cpm-0.2a.tar.gz
(GPG signature)
A patched version of the cpm-0.2 CP/M emulator for Linux (available on ibiblio). This version will build and work correctly on modern ELF systems, and also features a couple of fixes in the BDOS emulation. I was unable to contact either the original author or the author of cpm-0.21, another ELF-compatible version (which doesn't include the BDOS bugfixes); if you know where I might be able to contact them, please let me know. Most command-line CP/M programs will run happily on this emulator; for instance, I use it to run Hitec C for Zen development. - z80em-1.0.tar.gz
(GPG signature)
A generic emulator for the Z80 CPU; an extended version of that included in the CHAOS source code. It's easy to modify, being based on the xz80 emulator core, and supports abstract console, serial and disk emulation. It's currently the only platform upon which Zen can be used. - convolve-0.1.tar.gz
(GPG signature)
My (unsuccessful, and in retrospect doomed) entry for the International Obfuscated C Code Contest; a tool to perform matrix convolutions on PPM images. This does not represent my normal coding style. - webget-0.1.tar.gz
(GPG signature)
A suite of tools to allow offline web browsing. Mail me if you need to know how to install it. Needs Python 1.5 or above. This isn't Jasper Jongmans' webget, nor is it derived from it (or vica versa), although it bears some remarkable similarities. I guess there are only so many things you can call a download manager. - mosmon-0.1.tar.gz
(GPG signature)
A MOSIX load monitor applet for the ROX panel. - amicon-1.0.tar.gz
(GPG signature)
A tool to convert Amiga old-style icons and NewIcons to PPM or XPM format, preserving transparency and palette information. Handy if you like the old MagicWB or ICONZ.A icons and want to use them on your X desktop. If you're using Windows, Gary Harris' WinAmicon provides GUI and command-line versions of amicon for Win32. - phys-0.1.tar.gz
(GPG signature)
An SDL-based executive toy which simulates a group of balls tied together with bungee cords. - packcd-0.7.tar.gz
(GPG signature)
A tool for packing files to a set of CDs, either in order, or in a reasonably space-efficient way. - bandwidthpie-1.1.tar.gz
(GPG signature)
Scripts to generate the bandwidth pie charts on the fivegeeks home page. Some user customisation required, but should be usable on most Linux 2.4+ firewall systems. - m25-0.3.tar.gz
(GPG signature)
A macro processor with facilities similar to M4 but with TeX-like syntax, implemented in Python. I built this because I wanted something better than M4 for building web pages with. It isn't very efficient (although it's a lot better now than it used to be!), but it's reasonably pleasant to use, and has much simpler quoting and expansion rules than M4. - killplugins-1.0.tar.gz
(GPG signature)
A preloadable library to hide plugins from Mozilla. Useful if you're using someone else's Mozilla and they've got some plugins installed in a system location that you don't like.
Experimental code
Warning: code in this section is likely to include little or no documentation, and will probably be difficult to compile.
- fith-1.0.tar.gz
(GPG signature)
A FORTH-like programming language designed for small systems and compilable with a Small C compiler. - chaos-2.1.tar.gz
(GPG signature)
A minimal operating system for Z80 computers. This package includes a cross-development suite that runs under Linux; you will need the "asl" cross-assembler to compile it (available from ibiblio or whatever sunsite.unc.edu is calling itself these days). The OS and filesystem will fit in 8K of battery-backed-up RAM. - zen-0.1.tar.gz
(GPG signature)
A somewhat better Z80 operating system written in C, providing a small Unix-like filesystem and system calls which resemble the C standard library (fopen etc.). It runs under the z80em emulator; it hasn't yet been ported to any real hardware. It uses the Hitec C compiler running under the cpm CP/M emulator to compile. If you've got z80em installed, you should be able to use the OS image included in this archive to at least see what Zen looks like; recompiling it would probably be somewhat more complex. - mycpu-0.1.tar.gz
(GPG signature)
An emulator (in C) and assembler (in Python) for a four-instruction virtual processor which I designed with a somewhat esoteric instruction set. Some example assembly code is included. - z80calc-0.1.tar.gz
(GPG signature)
A FORTH-like calculator implemented in Z80 assembler, based on large chunks of the Small C+ maths library. I did at one point have a pocket Z80 machine successfully running this; it should be relatively straightforward to port to different hardware, as it already includes drivers for the pocket80 and z80em. - gpenguin-0.1.tar.gz
(GPG signature)
A GTK program which displays a penguin logo and some basic information about your machine under Linux. - hippo-0.1.tar.gz
(GPG signature)
An aborted attempt to rewrite xhippo in C++, supporting multiple interfaces. The code might be useful as an example of how to support GTK, Lesstif and text interfaces in one program, but it's not terribly useful as a music player. - nanotcp.c
(GPG signature)
A misnamed miniature IP stack that will speak SLIP and respond to ICMP ECHO REQUESTs. It doesn't yet do UDP or TCP. - superterm-0.1.tar.gz
(GPG signature)
An experimental terminal emulator written using Python and curses. Ended up being too slow to be of any use. - xlnt-0.1.tar.gz
(GPG signature)
A port of the Linux kernel console code to userspace. It needs some work on cursor handling and scrolling to be useful. - funk-0.1.tar.gz
(GPG signature)
My hacked-up MP3 streaming system (including a server, command-line and CGI control interfaces, distributed song collection, and an IRC bot). Read the README file, and preferably the code; it's not very well documented or engineered. - IRCClient-1.0.tar.gz
(GPG signature)
A class for Python, which implements most of the functionality you need to build an IRC bot. It also includes a couple of sample bots written using it. - kitchenclock-0.1.tar.gz
(GPG signature)
A suite of tools to turn a PalmOS machine into a serial-controllable graphics display. (We planned to use an old Palm Pro as a clock for our kitchen, hence the name.) - subtle-0.1.tar.gz
(GPG signature)
An experiment in reading DVD subtitles through gocr. Doesn't currently detect subtitle lengths.
Greasemonkey scripts
I've written some scripts for the Greasemonkey extension to Firefox, mostly to attempt to fix or work around various kinds of stupid or broken HTML.
What have you done with...
If you're looking for tart, itsmailbox.py, carol.c, sallows.c, newsstats.py, list-people.py, Giggle.py, noptrace.c, advogatorss, yesnomaybe.bf, ICQ.py, classtricks.py, newsarchive.py, nibbles.sh or occlife.occ that used to be on this page, they're now all in the misccode collection.
Other projects I've contributed to
- aewm: MWM hints support, Xft font rendering, nested menu support (merged).
- dillo: "force my colours" (merged).
- uwm: initial 3D borders support (merged).
- gkrellm: MH folder checking (merged).
- XFCE: made the mail icon on the panel show whether you have mail or not (merged).
- XawTV: plaintext support for alevtd (merged).
- ogmtools: add a -c option to ogmsplit so that it can arbitrarily extract sections from an ogg stream (merged).
- ROX-Filer: hide column headers in the list view (merged).
- i-scream: the "statgrab" program (merged and actively maintained).
- rxvt-unicode: real bold support, a couple of miscellaneous fixes (merged).
- leafnode: "nopost" option to prevent posting to a particular server (diff against 1.9.18).
- rxvt: MWM borderless support, override-redirect support, arbitrary command on bell, fixed buffer overflow in command.c (from Debian patch) (diff against 2.7.8).
- clock: fix for reading insufficient data from the child, fix for not stripping the LF from the message (diff against current version).
- speckeysd: avoid collecting zombies (diff against current version).
- xcopilot: don't rely on Linux mmap semantics, and thus compile correctly under FreeBSD (diff against 0.6.6).
- LIRC: userspace I2C driver for BT848 remote control receivers (merged).