Patrick's Projects

As we enjoy great advantages from the inventions of others, we should be glad of an opportunity to serve others by any invention of ours; and this we should do freely and generously.

--Benjamin Franklin, in his autobiography (1791)

Linux

letters - show and say letters as they are typed
cqcam - frame-grabber for the Color Quickcam
midi - a simple MIDI file library and software synthesizer
PacketKit - a sniffer and packet generator for Linux
scratchpad - a clipboard-based prototype of the Scratchpad concept for Netscape
Yahtzee - terminal version of the dice game
syntax - syntax-highlighting engine for C/C++/Java
PPM tools - PPM library and tools to scale, fade, and crop PPM images
malloc-debugger - heap-tracking library
conslock - lock a console
Pong - ping an entire class-C subnet
Dimera - a command-line driver for Dimera 3500 digital cameras

Pilot

pgpf-tools - Linux conversion tools for the PictureGear Pocket format

Firefox

Coralize - Plug-in to simplify creating Coralized URLs.
Email Extractor - Plug-in to de-obfuscate spam-protected email addresses. Highlight the address and right-click.

GTK+/GNOME

Metacity Command Key Editor - add, change, or remove command hotkeys in Metacity
Gat - The GNOME Task Scheduler

Scripts

yum-search - Very fast tools for searching the local yum cache
essid-pick - Pick a wireless network automatically at boot time
pjl-duplex - Ask a printer to print a Postscript file duplex (two-sided).
barstack - Create Postscript bar graphs
dpkg-rebuild - Debian 'status' file recovery tool.
psappend - concatenate Postscript files
bbfix - fix the bounding box on an EPS file
Shirt - an obfuscated Perl t-shirt generator

Trivialities

alignment/sizes - Find out a platform's endianness, alignment rules, and type sizes.
self-printing program - programs that print themselves
PERL Mandelbrots - two moderately obfuscated Mandelbrot generators
mgp.vim - MagicPoint syntax highlighting for Vim

letters - show and say letters as they are typed
A game to help little kids learn their letters and numbers. It shows letters and numbers full-screen and says them aloud (in a retro, Speak 'n' Spell voice) as the child types them.
Download it.

cqcam - frame-grabber for the Color Quickcam
Nice GTK interface, lots of image enhancement, and new live-webcam support. This is an ongoing project. The current version works nicely. Here is the
official distribution page; here are some screenshots.

Metacity Command Key Editor - add, change, or remove command hotkeys in Metacity
Metacity lets you map keys to run shell commands, but it doesn't actually expose this functionality in the Preferences panel. Here is a widget to let you edit those keys without the pain of using gconf-editor. I have keys mapped to xterm, mozilla, xscreensaver, and mixer volume up/down. screenshot or download.

Gat - The GNOME Task Scheduler
Schedule and manage one-time and recurring tasks using a simple GNOME interface. Gat is a front-end to cron and at but should simplify things enough that users won't need any prior knowledge of cron or at to use it. Here is
the official distribution page.

barstack - Create Postscript bar graphs
Create Postscript bar graphs from relatively simple input files, including text export from a database or spreadsheet. The resulting files work as figures in LaTeX documents. Get an
example graph or barstack-1.2.tar.gz.

dpkg-rebuild - Debian 'status' file recovery tool.
Rebuild your Debian dpkg/apt 'status' file if it got corrupted by a system crash.
Here it is.

psappend - concatenate Postscript files
Combine several EPS or Postscript files into a single Postscript file. Good for turning several figures into a single document, which can in turn be run through mpage or psnup.
Here it is.

bbfix - fix the bounding box on an EPS file
Gnuplot frequently produces lousy bounding boxes for its output, especially when the set size ratio command is used. Use
this script to find the exact bounding box for any EPS file.

Shirt - an obfuscated Perl t-shirt generator
Generates ASCII art based on obfuscated Perl code and B/W input image, worthy of inclusion on t-shirts or perhaps other media. If you generate t-shirts with this code and sell them for a profit, please donate at least $1 US per shirt to the
Free Software Foundation or the Electronic Frontier Foundation. See sample images or the code itself.

Midi - a simple library for reading MIDI files and a software synthesizer for playing them. Here it is.

PacketKit - a sniffer and packet generator for Linux. Includes a GTK GUI for generating IP/TCP/UDP/ICMP packets. Here it is.

scratchpad - a clipboard-based prototype of the Scratchpad concept for Netscape
An prototype implementation of the
Scratchpad Project. My implementation uses the X selection mechanism (the clipboard) to implement the scratchpad for Netscape without modifying the Netscape/Mozilla source. Get it here or see a screenshot.

Yahtzee - terminal version of the dice game
Quick, simple, and addictive.
Get it or look at a screenshot.

syntax - syntax-highlighting engine for C/C++/Java
A cute toy, it would actually be pretty useful in some sort of IDE ... not that I use or write such things. Get it
here. Here is a screenshot. Here is a web page generated using it.

PPM tools - PPM library and tools to scale, fade, and crop PPM images
The library provides functions to read, scale, crop, dither, and write "raw bits" PPM images. Adding filters is relatively simple. Command-line tools for scaling, fading, diffing, and demuxing are provided. I use these tools with cqcam.
Get them here.

malloc-debugger - heap-tracking library
Minimalist library for detecting two classes of memory allocation errors: leaks and calls to free for unallocated memory. This code is glibc-specific. Tools are included to analyze/summarize memory allocation traces looking for errors and displaying the call stack for each errant call.
Get it here.

conslock - lock a console
Locks a console until the user enters his password.
Get it.

Pong - ping an entire class-C subnet
No, not the video game. Ping a class-C subnet in parallel without using a broadcast address. Useful for seeing which IPs are in use.
Get it.

pgpf-tools - Conversion tools for the PictureGear Pocket format
Tools to convert from PPM to PictureGear Pocket format and back. Support is included for reading and writing 8-bit and 16-bit images, including thumbnails. If you want to convert to/from JPEGs, use cjpeg and djpeg to create PPMs first. Get
pgpf-tools 0.9.3.

alignment/sizes
Find out a platform's endianness, alignment rules, and type sizes. Moderately useful for porting stuff.
Get it.

self-printing program - a program that prints itself. Now that's original. It's here in case you haven't seen it before.
selfprint.c (76 bytes)
selfprint.pl (55 bytes)
selfprint.java (256 bytes)

PERL Mandelbrots - two moderately obfuscated Mandelbrot generators, in PERL.
Get it.

mgp.vim - MagicPoint syntax highlighting for Vim - here

Dimera - a command-line driver for Dimera 3500 digital cameras
Download thumbnails and full-sized images from any Dimera 3500 digital camera with a serial connection. This software is still experimental -- it works, but it's neither documented nor user-friendly. Here is
version 0.1.