I’ve done a lot of CGI application programming. Over the years I’ve developed a CGI::Application base class that I derive my applications from. I’ve called my Perl module WormBytes::CGI::Application since it derives from CGI::Application. It brings in all the modules I normally use in my CGI programming. In addition to the required modules, I’ve extended the class to handle session management. There is also rudimentary support for user management in the base code.
Emacs is my editor of choice, and like most people who use Emacs I have customized it to suite my personal taste. I have included copies of my customizations so that others may build on what I’ve created, or simply have a more pleasant working environment. Lisp Source emacs.el This is my main .emacs file. It contains the bulk of the customizations, but it does include a few other features and functions that other people may find useful.
Introduction Matthias Wandel of Research in Motion (RIM) has a programming challenge posted on his website. The challenge is to write a program that generates all the possible combinations for an N button combination lock. The twist is the multi-button possibilities as well. Read on to see how I solved the problem. Updated on November 29, 2005: The version described below is the second published version of the code. The first program was 160 lines of code and involved a more complicated way of producing the combinations.
Delivery Scripts I’ve written a shell script that handles local delivery of email in a qmail environment. To use the script you would place it in your .qmail file similar to this: .qmail: |/usr/local/bin/spamassassin.sh Of course, use the correct path to the script on your system. I wrote this script (rather than using ifspamh) because I needed a way to delete high scoring messages that could be customized by the end user.
Plugins These plugins are used daily by the Flarenet ISP mail server, but I have not submitted them to the Qpsmtpd maintainers. As always, use these plugins at your own risk. They work for me, but as far as I know I'm the only one using them. check_badpatterns Use the existing badmailpatterns and badrcptpatterns control files from the SPAMCONTROL patch. check_domain_regexp Compares the reverse DNS (the host/domain name) against a collection of regular expressions.