


Open source software I've written and contributed to. Unless otherwise noted, everything is GPLed. Also see other lists.
Projects 
backup_google.sh is a shell script that backs up data from Google Contacts, Calendar, Reader, and Tasks.
google_talk_sms.pl, a Pidgin plugin that enables Google Talk's SMS text messaging feature.
shell, openid-provider, and openid-consumer, three Google App Engine sample apps. See my announcement for details.
openid-test is an interoperability test suite for OpenID.
download_picasa_album.sh downloads entire Picasa Web photo albums.
PyBlosxom is a lightweight weblog platform, based on Blosxom and written in Python.
simonitor screen scrapes simon.com to fetch the available balance on one or more Simon gift cards.
index is a PyBlosxom plugin that displays an alphabetical index of all entries.
snipsnap2svn is an XSLT script that converts SnipSnap XML database exports into Subversion dumpfiles.
history is a PyBlosxom plugin that displays change history for entries.
photogallery is a PyBlosxom plugin that displays photo galleries.
hardcodedates is a PyBlosxom plugin that stores mtimes in a file.
An RDF flavour for Pyblosxom.
Filekicker is a PyBlosxom plugin that serves static files.
Fillcode is an Emacs minor mode that fills, or wraps, some parts of source code.
Ditrit is a programmable application launcher that tries to "do the right thing" for any input it's given.
BigBrother generates statistics and graphs from your away message history. See my personal example.
P4 is a compact, lightweight overlay network library, similar to Gnutella and Chord.
libmsntp is a compact, portable SNTP library. It provides both client and server functionality.
Snipsnap macros is a collection of macros for SnipSnap, the web server that runs this site.
Tictactoe is an OpenGL engine that provides realistic procedural modelling and rendering of water.
Voxel is a high-resolution voxel terrain rendering engine.
Palo Alto Library is a Greasemonkey script that shows whether a book on Amazon is available in any of the Palo Alto Libraries.
MAlbum is a quick and easy graphical interface for creating a web album. (Maulik has a sample album.)
snipscrape transforms SnipSnap-generated HTML into XML that can be imported back into SnipSnap.
cdname.py names MP3 files according to CDDB/freedb INF files.
Nullprpl is a mock protocol plugin that lets you use Pidgin without connecting to a server. (Added to Pidgin on 5/30/2007.)
Remote is a client for httpQ, a network server plugin for Winamp.
Scavenger extracts RFC2822 email addresses from text and binary files.
Folderstat retrieves the size of the folders in an IMAP email account.
Patches 
Two minor patches (one, two) to paste.webob that fix character set handling bugs. (Both applied on 2/17/2008).
A patch for opml2markdown.xslt that adds links to each item's web site and feed.
A patch that updates the PyBlosxom OpenID comments plugin to work with versions 1.x of the Python OpenID libraries. (Applied on 9/6/2007.)
A minor bugfix for cryptutil.py in the Python OpenID libraries. The patch is against version 2.0.0-rc3b.
A tkdiff patch that quotes filenames (tracker) for files in Subversion repositories.
AJAX commenting in Pyblosxom. (Applied on 1/24/2007.)
A tcsh highlighting patch that highlights the match during incremental search, and in emacs mode, the region between the mark and cursor. (Applied on 8/23/2006.)
A patch to remove tcsh globbing in history search. (Applied on 8/23/2006.)
A fix for a tcsh bug that moves the mark after deletions. (Applied on 8/23/2006.)
A fix for an Emacs bug in minibuffer code, specifically in minibuffer-complete-and-exit. (Fixed in Emacs 22.)
port_pine_patch is a shell script that automates porting Pine patches between versions.
Pine reply-all patch adds a reply-all command to the Pine email client.
Pine flowed-text patch adds an option to Pine to turn off displaying flowed text.
Pine remove trailing quote patch adds an option to automatically remove trailing quotes from outgoing emails.
Pine delete attachments on save patch adds an option to delete attachments from messages when you save them.
Gaim chat_invite patch fixes a parameter ordering bug in Gaim 2.x's GaimPluginProtocolInfo::chat_invite callback member. (Applied on 11/15/2006.)
Gaim accelerators in away menus patch (tracker) fixes Gaim 1.x's GTK menu code to allow accelerators in dynamically created menus, such as away message menus.
Similarly, Gaim accelerators in accounts submenus patch fixes Gaim 2.x's GTK menu code to allow accelerators in the dynamically created submenus of the Accounts menu. (Applied on 11/19/2006.)
SnipSnap comment without login patch allows visitors to post comments without logging in.
SnipSnap recent-changes snip name patch fixes a bug in SnipSnap that causes recent-changes to show blog posts incorrectly.
SnipSnap 1.0b1 virtual hostname patch fixes a bug in SnipSnap that prevents virtual host redirection.
Autocutsel clipboard and primary patch extends autocutsel to synchronize both the clipboard and the primary selection in X Windows.
Libwebserver shutdown patch (tracker) adds a call to libwebserver to stop a running server and close its socket(s).
Webalizer nofollow patch adds nofollow support to the popular web server log analyzer Webalizer.