Actively Developed

I work on this software on a fairly regular basis.

Pintos: instructional operating system

Pintos is an instructional operating system for operating system classes. It is inspired by the Nachos operating system that originated at UC Berkeley, but the code is almost entirely from scratch. It is written in C and boots on a normal 80x86 computer, although it is designed to run inside a simulator such as Bochs.

GNU PSPP: statistical analysis software

PSPP aims to be a compatible replacement for SPSS statistical analysis software. So far, it's incomplete, but it's a very good clone in the places where it's finished.

Version 0.3.0 has been released. It is available for download from

The most current version of PSPP is in CVS on The version in CVS is significantly more advanced than any released version, so I recommend that you make the effort to try it out if you're interested in PSPP. It should be fairly stable, so please report any bugs that you find.

GNU libavl: Balanced binary tree manipulation library

Balanced binary trees provide guaranteed O(lg n) performance for list insertion, deletion, and search operations. libavl is the most complete free balanced binary tree library on the net today, supporting AVL and red-black trees as well as unbalanced binary trees, all in their usual forms plus threaded and right-threaded versions and versions with parent pointers too.

See the libavl webpage for more details and useful links to further information on AVL and red-black trees.


I maintain this software as a courtesy to its users. I will accept and act on bug reports. Feature requests will also be accepted, but I am more likely to act on them if they include a patch.


fmtools is a pair of simple command-line utilities for “video4linux” radio tuner cards under Linux. It includes fm for power control, tuning, and volume and fmscan for scanning for stations. Visit the fmtools page for more information.

All Done!

These projects are as done as software ever really gets. They're all in “maintenance mode,” meaning that bugs, if reported, will get fixed, but it's unlikely that new features will be added anytime soon.

Uniformity testing library

This is a library for comparing the distribution of a set of points in arbitrary dimensional space against a uniform distribution. It is based on the algorithm given in Smith and Jain, “Testing for Uniformity in Multidimensional Data,” IEEE Trans. on Pattern Analysis and Machine Intelligence 6 (1984), pp. 73–81.

The library is written as a literate program. Much of its source code, written in ANSI/ISO C89, is generated from `.w' files that contain both source code and documentation.

Grab the source distribution or PDF or plain text versions of the manual/project report.

AIMSlab RadioTrack II Linux driver

This is a kernel driver for radio tuner card named above, obtained by observing the operation of the Windows driver under a CPU emulator.

This driver was incorporated into Linus's kernel 2.1.116, but please use at least 2.1.118 since that version fixes a few small bugs. The patch against kernel 2.1.111 is no longer available.

Card programming notes are still available.

vga16fb: a Linux kernel driver for 16-color EGA/VGA graphics modes

All i386 machines made since 1990 or so support EGA/VGA 16-color graphics modes, such as 640x350x16, 640x480x16, and even 800x600x16 modes. These modes are a royal pain to program, so no one had written a framebuffer driver for them. I took the time to do it, and this was the result.

vga16fb is integrated into all later 2.2.x and 2.3.x kernels, and all newer ones too of course. I haven't taken the lead in maintaining it, but I'm happy to read bug reports and help as much as I can.

BOGL: Ben's Own Graphics Library

BOGL is a tiny graphics library for Linux kernel 2.2.x framebuffers. It's intended for use in projects that need to take up minimal space, such as rescue floppies and GUIs for PDAs.

BOGL was originally intended exclusively for Debian GNU/Linux graphical boot disks. It was also used by the NanoGUI project for a while. Currently it is in use by Debian boot disks, but not for its original purpose. I'm not the current maintainer.

PPP Net Connector: masquerading dialup server

This is a modified version of Debian GNU/Linux 2.1 (`slink') designed specifically to allow machines on a small LANs to connect to the Internet through a dialup PPP connection with a single modem. Through the magic of Linux's IP masquerading, all machines on the LAN can use the connection at once. An HTML-based simplified setup procedure means that even users with little or no technical knowledge of UNIX can successfully set up and maintain a server.

This worked just great on the systems that I installed it on. I haven't had any need for such a thing in recent years, though, and the company that was paying me to develop this software backed out, so I never updated it to newer Linux versions. I don't know of any remaining online copies of this product.

TeamSCOPE: Team Software for Collaborative Project Environments

TeamSCOPE is a collaboration tool for distributed teams. It aims to make team members aware of what their teammates are working on and provides a unified web-based interface to file management, scheduling, and numerous other things we haven't quite figured out yet.

I was paid to develop TeamSCOPE by INTEnD (International Networked Teams for ENgineering Design) from its inception until September 2001.

TeamSCOPE source and Debian binaries were once available from under the GNU General Public License, but that site appears to be down permanently now. Source is still available in my local mirror.

Last updated 28 Feb 2021 15:21. Copyright © 2021 Ben Pfaff.
May be freely redistributed, but copyright notice must be retained.