David Coppit's Code Page

This page is a compendium of various bits of code that I've written and collected. Feel free to adapt/modify this code, as long as you leave original authorship credit to me. There is absolutely no guarantee that this code won't delete your mail file, reformat your hard drive, or cause your wife to leave you, but I've tried to code for all exceptional cases. ;)

The hope here is that this code will help others get jump started in their own development. If you happen to make useful modifications, don't keep them to yourself! Send them to me, and I'll incorporate them with proper credit.


A paper template (version 0.40) and supporting texmf files (version 0.20) for LaTeX, with nifty makefile. Supports IEEE conference, ACM conference, ACM transactions, Master's project, dissertation, and proposal styles. See the README and the wiki page for more information.

Perl Modules and Scripts

News Clipper Creates a custom web page from a template HTML file with special tags, replacing those tags with dynamic information acquired from the internet. (Formerly known as Daily Update.)

grepmail Searches a normal or gzip'ed mailbox for a given regular expression, and returns those emails that match it. Also supports searches constrained by date. Also check out Moritz Barsnick's grepm wrapper that sends the output of grepmail to mutt.

File::Cache A Perl module that provides file caching functionality. (I didn't write this, but have contributed significantly to its development.)

CGI::Cache A Perl module that caches CGI output for faster output on subsequent runs. (Maintained by me, and originally written by Broc Seib.)

Module::Install::CustomInstallationPathA Module::Install extension that allows the user to interactively specify custom installation directories.

Module::Install::GetProgramLocationsA Module::Install extension that allows the user to interactively specify the path to programs needed by the module.

Getargs::LongA Perl module that adds support for named subroutine arguments, and optional type checking.

makedependgcc Like makedepend, this script automatically determines dependencies for source files and adds them to your makefile. The big difference is that the implementation uses gcc/g++, which gives you C++ support. (makedepend apparently doesn't support C++.)

checkserver Checks that a remote server is up and that the MySQL daemon is running, and sends an email if there is a problem.

cpx Copies files and directories (recursively), preserving the permissions, last accessed time, and last modified time.

findwaste Computes the average age and the size of directories. This useful for finding good directories to archive.

formatit Formats ASCII text for the PalmPilot. Tries to make ASCII drawings look right under the Pilot's proportional font.

fixbb Repairs bounding boxes for postscript files. (Requires bbfig and txt2ascii.)

gf Does a grep on all files in all subdirectories.

mbx2mbox Converts older Outlook Express .mbx files into standard mail files that programs like Pine, Eudora, and Netscape can parse. Microsoft likes to make their own standards, don't they? I've only tested this script for the Windows version of Outlook Express. Please report any successes or failures on other platforms/versions. (The link above also has information about other techniques for porting MS email to RFC 822.)

print-lectures Shows how to automate Netscape in Unix to download and save a lot of web pages as postscript.

removedef Processes #ifdef and #ifndefs to show how C or C++ code would look after all the define flags have been applied.

mail_access A perl script that makes a lot of calls to Unix to extract a lot of web page statistics and email them to the user.

Also see MP3Cleanup and PlayRand below.

Windows Applications

The Synchronous Network Frameworkprovides an API and multi-threaded simulation for experimenting with synchronous algorithms. The framework closely follows the synchronous algorithm model described in Nancy A. Lynch's book _Distributed Algorithms_. The code is based on the Standard Template Library and the Visual C++ 6.0 development environment, but should be portable to other development environments. However, it is not portable across architectures because it is dependent on a library distributed only in binary form. (This code was written by myself and Matt Elder.)

Winbuf was written to ease the porting of console applications to Windows. It redefines cin and cout to interact via a GUI-based window. This code was written for MSVC++ 4.2, and may not be quite correct for the newest versions of the Microsoft compiler.

vi.bat A script I use in Windows to fire up gvim when in a dos shell, and vim when in straight dos.

RunQuiet Runs a given application quietly, which is useful for shell scripts which would normally show up on the task bar even when run minimized.

CloseIt Closes an arbitrary program based on its title.


NEW! makefile 0.24 An easy to use makefile for GNU make.

MP3Cleanup 0.2000 Cleans up filenames and ID3 tag information for mp3 files. Windows and Linux binaries included, as well as Perl source code.

PlayRand 0.1 Recursively looks for mp3 files, randomizes any it finds, and then sends the playlist to WinAmp. Perl source code included.

A Java-based Othello server and distributed computer player, Jothello. I wrote this with Sean McCulloch and David Engler. David Engler did the Java client and server work. Sean McCulloch ported the computer player code from LISP to C++, and I helped debug it and parallelize it on Legion.

Palm Documents

Here is an archive of a bunch of open documents I formatted for the Palm.

WordPress Plugins

Category Levels 0.3.2 Protects posts and categories according to individual user level. For WordPress versions prior to 2.0.

Category Access 0.8.2 Protects posts and categories according to individual user permissions.

Category Order 2.0.1 Allows the blog administrator to set an explicit ordering, spacing, and indentation of categories in the category list that appears in the sidebar. The administrator specifies the ordering in the new "Category Order" management page. There is also an option for placing the category post count inside the link.

Back Back to my homepage.