My Projects

This is a brief description of some of my projects with links to the source code where applicable.

Tagged Message Delivery Agent

Tagged Message Delivery Agent is an email filtering and spam-prevention system. I originally forked this project because it had been idle for a few years, I wasn't happy with its SSL/TLS support, and because it had some problems with newer versions of Python. After making several updates and releasing a few new versions, the original author made me an official maintainer for the project. The main code is repository is on SourceForge, but my Git repository can be found here. The work I've done on the project includes:

  • Updates for modern Python versions
  • Adding support for OpenSSL
  • Adding support for PAM authentication
  • Adding tests
  • Creating a new documentation generating tool
  • Adding UNIX man pages
  • Adding support for IPv6
  • Adding packaging for Debian/Ubuntu

Mork Converter

mork-converrter is an application I wrote to convert Mozilla Mork files to more useful formats. A handful of simple tools are available to convert certain types of Mork files, but this is the only application other than Mozilla that attempts to properly parse and process all Mork files, making it the only reliable way to extract data from these files. It uses an extensible architecture for providing output formats, with XML and CSV support currently available. It handles text data encoded in many different ways, producing UTF-8 output by default, though other encodings are available. It also interprets many of the fields found in Mork files to present things like dates and times, as well as many application-specific flags, in a readable format.

Rsync Backup

rsync-backup is a simple but powerful script for performing backups using rsync to do the heavy lifting. It creates backups that are simply a directory with subdirectories and files, mirroring the original source. Files can be restored by simply copying them, and earlier versions can be examined without any extra tools. Disk space is conserved by hard-linking files that have not been modified since the previous backup. Because it uses rsync, backups can be performed to a local disk or a remote location using rsync's highly-optimized data transfer algorithms. Also supports validating backups, extensive logging, flexible include/exclude patterns, and dry-run execution for testing.

Vim Plugins

I've written several small plugins for Vim, several of which are collected here. The README file describes each plugin, but briefly they include plugins to:

  • Detect the indentation scheme used in a file, and set options accordingly
  • Display side-by-side differences between the current file and an earlier revision in source control
  • Toggle between editing text and binary using a hex-editing mode
  • Securely edit files encrypted with GNU Privacy Guard
  • Highlight various forms of whitespace and indentation errors
  • Support additional keys and key combinations in some terminals

Finally, these two additional plugins are not found in the above collection:

  • CSExact uses terminal escape codes to modify the terminal's color palette in order to exactly mimic the colors used in the GUI version of Vim, when using a color scheme that supports the GUI.
  • vim-color-check checks for common errors in Vim color schemes.