I'm highly unlikely to do any further work on the projects listed on this page — but I'm leaving them up here in case they're of use to somebody. If you'd like to take one of these over, please let me know!
These projects are generally fairly stable.
- adfilter, a set of Apache rewrite rules to block banner adverts.
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.
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.
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.
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. (Development version available:
git clone http://offog.org/git/batvise.gitor Atom feed.)
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.
- gselt, a program that watches the X selection and displays a menu of things that can be done with the current selection.
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.
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.
A minimal replacement for syslogd and klogd that works with freedt.
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.
A MOSIX load monitor applet for the ROX panel.
- OAK and LOVE, two attempts at audio synthesis in occam. OAK is a library; LOVE is a graphical live-programming environment.
An SDL-based executive toy which simulates a group of balls tied together with bungee cords.
A tool for packing files to a set of CDs, either in order, or in a reasonably space-efficient way. (Development version available:
git clone http://offog.org/git/packcd.gitor Atom feed.)
- refried, a reasonably fancy graphical program
launcher for X; sort of a hybrid between dmenu and Quicksilver.
(Development version available:
git clone http://offog.org/git/refried.gitor Atom feed.)
- Tock, a nanopass compiler for message-passing programming languages.
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.
- GNU xhippo,
a GTK-based frontend for command-line audio players.
Potamus is xhippo's successor.
(Development version available:
git clone http://offog.org/git/xhippo.gitor Atom feed.)
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 popular
xaliastool. (Development version available:
git clone http://offog.org/git/yalias.gitor Atom feed.)
These projects will probably be difficult to compile and use, and they're unlikely to work very well.
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.
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!
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.
A FORTH-like programming language designed for small systems and compilable with a Small C compiler.
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.
A GTK program which displays a penguin logo and some basic information about your machine under Linux.
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.
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.
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.)
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.
A misnamed miniature IP stack that will speak SLIP and respond to ICMP ECHO REQUESTs. It doesn't yet do UDP or TCP.
An experiment in reading DVD subtitles through gocr. Doesn't currently detect subtitle lengths.
An experimental terminal emulator written using Python and curses. Ended up being too slow to be of any use.
A port of the Linux kernel console code to userspace. It needs some work on cursor handling and scrolling to be useful.
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.
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.
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.