Some of the programming I've done

Most (if not all) of these should not be treated as "black boxes". Read them, learn from them, customize them, improve them. Unless otherwise noted, you may freely use, modify, and redistribute the scripts hosted here as long as all authorship comments are retained. (The stuff hosted elsewhere has other licenses.)

Real Live Projects:

For retrieving mail from a POP or IMAP server, and (preferably) forwarding it to an SMTP server. I help take over maintainership in 2004, I've been involved since the days when it was called "popclient", and there's a paragraph (about restoring non-SMTP functionality that ESR had removed) in the now-famous treatise The Cathedral And The Bazaar that is directly due to my arguments. (Though he didn't see the broader arguments I was making.)
OMTA [formerly known as OfflineMailer, but that was too long]
A simple SMTP client and server for people who don't need a full-fledged (and complex) server like sendmail, postfix, qmail, or exim. It is primarily targeted toward people with part-time network connections, but is good for anyone who only wants to send outgoing mail to a single relaying machine. It can send to a mail relay, queue for later relaying, or transfer to a local delivery agent (such as procmail). It can also relay mail from standard input or from SMTP, and special attention has been given to making this secure and configurable. Its command-line syntax is mostly compatible with sendmail. I was the second contributor after the original author.
OK, actually this is pretty much a dead project. I use Postfix or Exim these days.

Tcl/Tk-based utilities:

[tkremote window]
For accessing remote systems using telnet, rlogin, or ssh. This was inspired by CDE's "remote xterm" pop-up; it allows bringing up a terminal window to another machine using an existing local terminal window.
Now allows both ssh1 and ssh2, detects ssh programs rather than a .ssh directory, and uses the canonical name of the target host. However, it now requires the TclX extension (look for wishx on your machine). I still have the old version that doesn't require TclX.
[tktips window]
Basically a graphical interface to the fortune program, primarily intended for viewing Linux tips at login time.

Perl programs/scripts/routines:

Convert a mailbox from maildir format to Unix mbox format.
Find out the playtime of an mp3, a number of mp3s, a directory of mp3s, or the mp3s listed in a given file. Requires the mp3info program.
Extracts information from the Debian dpkg database.
Make the legend come true -- get a sound each time a remote computer responds to a ping.
So many mailing lists these days are visible online in HTML, but sometimes it's more convenient to have them in the traditional Unix mailbox format. This does that conversion for messages that were HTML-ized by MHonArc. It shouldn't be hard to make it work for Hypermail output to, and I'll probably do so at some point.
A Perl script I used to use to do backups to my ftape-driven tape drive. For a more rigorous backup system, I recommend Amanda.
OK, not only is this not Linux-specific, it's pretty Sun-specific. It gives information about a Sun patch (from the README inside) or a list of them.
Another Sun-specific one. Feed it Sun's Unbundled Patch list and a string to look for in a section heading, and it lists the patches for the matching section of the list.
A Perl script for forwarding news posts (or mail messages) to somebody, with an introductory comment. (Originally written by Bob DeBula, with my modifications added. No commercial redistribution.)
gethostbyaddr and gethostbyname
Handy Perl scripts that use the system host lookup functions to convert between a machine's name and its IP address. This does not directly use DNS or NIS or /etc/hosts, but those will be consulted by the system if it is configured to. Very handy for diagnosing name service problems. whereami is a related script that tells your current IP address and canonical hostname in /etc/hosts format.
A tiny Perl script to display the entire password entry for a user, using the system routine so that it doesn't matter what name service you use.
A Perl script that makes a plain text file into an HTML file, including turning URLs and other detectable references into hotlinks.
A Perl script that filters out the headers and signature from a mail or news message.
A Perl script for showing mail and news messages with only the basic headers. It pages its output if it isn't piping to another program.
A Perl script for turning vcard attachments into something that makes sense to a person. (Originally written by David Pearson, with my modifications added. The GPL applies to this one.)
A Perl script for grepping through a file of mail messages and displaying information about the message where the expression was found. Now includes more options for what to look for and what to print, but it isn't well documented.
A Perl program that attempts to verify an email address. Its major flaws include the fact that it doesn't look at MX records, so you need to figure that out yourself. Also, it uses the SMTP VRFY command, which is often disabled these days (especially without the HELO handshaking, which this also lacks). But hey, it's a start.
graphpaper and logpaper
Perl scripts for printing square and logarithmic graph paper on a PostScript printer.
A Perl routine for determining the home directory of any user. Useful when the shell "~username" shortcut is not available (i.e. you're writing in Perl or Bourne shell).
A Perl script to count the number of sentences in a file. (Really just semi-intelligently counts periods.)
A Perl script that spits out as many random characters as you tell it to. Great for testing programs for good sanity checking of inputs.
A Perl routine that prints the textual date associated with a specified Unix time_t number.
A Perl script that actually isn't very useful (particularly for the purpose for which it was written, mentioned in the comments). It is primarily interesting as a direct Perl translation of rules.

Shell scripts:

Reboot the machine with the given boot-time command line, as would be given at the lilo boot: prompt. Works with lilo only.
The poor man's dual-head setup. The idea here is that when I use my laptop at my desk next to my desktop machine, I want to use the desktop machine's real keyboard and mouse rather than the laptop's space-saving versions. I also want to keep things fairly secure, so I want to use ssh tunneling rather than straight X protocol. So on the laptop I run this program with the name of my desktop machine (along with any other options to pass to ssh), and (as long as I have x2x installed on the desktop machine) I can then move the mouse pointer to the laptop screen and type there with the desktop keyboard.
Debian has a base package called ifupdown, which contains the ifup and ifdown commands for setting up and taking down a network interface, but this script is a missing piece -- it toggles the state of the interface rather than simply setting it up or taking it down. I connect it to a button for (de)activating an interface so that I don't need two such buttons.
These scripts obtain the appropriate list of mirror sites (for Debian, Perl, and Red Hat, respectively), then use the netselect command to determine which of those sites are currently best to use (closest and most responsive). Since netselect deals with IP addresses rather than URLs, it takes some manual effort to determine the actual mirror URL that matches the resultant host.
Bring up a given Debian bug or the list of Debian bugs for a given package. Currently uses w3m as the browser, but that can be changed easily.
mplayer is the most versatile media player out there for Linux, but using it can get a bit complicated. This script simplifies things a bit -- it works under X11 or the Linux framebuffer, tries to use the full screen (a fun trick in the framebuffer), allows specifying the aspect ratio, and defaults to playing the first title of a DVD or VCD with English audio, but will play any file specified.

OK, maybe that description still sounds too complex. How about examples?
fsplay Play the VCD or DVD in the drive, full-screen
fsplay -aspect 16:9 Play the VCD or DVD with a 16:9 (widescreen TV) aspect ratio
fsplay movie.mpg Play movie.mpg full-screen
fsplay -aspect 1.33 -dvd 2 Play the second title on the DVD, with a 1.33:1 aspect ratio
fsplay -chapter 5 Play the DVD beginning with chapter 5

Basically, anything after the aspect ratio, if any, is passed directly to mplayer.

I have a scanner and a printer, so why not make a copier out of them? This shell script uses scanimage (from the SANE project) to scan a page and immediately print it out.
A shell script that uses formail (from procmail) to re-send the individual messages from a Unix mailbox file to any address.
A shell script that uses fdisk and mkdosfs to (re)format a Zip disk in PC format. Useful when the Mac-formatted disks are cheaper than the PC-formatted disks.
A shell routine for running a command on a specific host, using ssh if it's remote and just running it if it's local. Written as a routine for use in an xinitrc file, but can be used on its own.
A version of the classic which command written in Bourne shell. This version ignores aliases, returns a useful exit code, and can easily be included as a function in a larger shell script (which is what it was written for).
A shell script to open a specified URL in a browser: lynx if there's no X display, a new window of an existing netscape if theres a netscape running, or a new netscape otherwise.
A shell script for changing messages that are all HTML into plain text messages.
A simple shell script wrapper around the write program, making it easy to send quick one-liners to another user's terminal.
A tiny shell (and awk) script that chops lines of a file to fit the screen.
Actually an awk script, it breaks long lines of a file into multiple lines.
A simple shell script (using sed) that lets you easily print out a specific line number from a file.
A shell script wrapper around xlock to prevent xlock from wasting network bandwidth by running remotely.
An old shell script for printing directly to the printer attached to your terminal. Support for this in terminal emulation programs varies greatly. (Original written by Mark Fullmer, but I've modified it beyond recognition. No commercial redistribution.)

C routines and proglets:

My C implementation of Perl's split function, except that it only handles constant strings as delimiters, not regular expressions.
A C program that reads a Berkeley DB database file (.db) and reports the data associated with the requested key. It automatically detects which database type (btree, hash, recno) the file uses. Particularly useful when working with sendmail.
A little C program that tells you the textual error message associated with a system error number.

Emacs-Lisp routines:

An elisp library to add run-perl, perl-command, and perl-command-on-region functions. Mostly based on the equivalent shell-related functions.
A couple elisp routines for quoting (with ">" or another specified character) and unquoting regions of text in mail and news messages.
An elisp routine I use to easily switch from my default "personal" message signature to one of two "work" message signatures.

Configuration files:

My quick vi config file that lets me reformat paragraphs with ESC-q, just like in Emacs.
Configuration file for fetchmail

Rob Funk