Adventures in Numbers, Measurement, and Math

About the Site

Internet Explorer is a buggy browser; its support for widely recognized Internet standards is buggy at best, it fails to support many of the newer features that make web pages run faster and with less overhead (such as the border-radius CSS function, which enables rounded corners without the need to load images, and the HTML5 canvas feature which runs our TGM clock). Nearly all other browsers are preferable to it; all other major browsers, including Firefox, Chrome, Opera, and Safari, are certainly preferable. Of these, both Firefox and Chrome are free and open source software (FOSS); if you're running Internet Explorer, please download one of these and begin using it as soon as possible, and strike a blow for an open Internet.

Dozenalism as a site itself is run by blosxom, a remarkably simple blog program executed in an incredibly compact 444 lines of Perl. I've always been partial to Perl, due both to its TMTOWTDI approach to programming and to its admirable longevity in the Unix community. I've written one lengthy Perl program before, and so I felt comfortable with Perl's speed and power. blosxom was therefore an attractive option which I decided to explore. I've been hooked since.

blosxom supports a wide variety of plugins, which are almost criminally easy to write. Since the spread of such heavyweight options as Drupal, Wordpress, and the like (which not only require the comparatively inelegant PHP but also a complete relational database system), blosxom's development seems to have slowed considerably, and some of the plugins are getting harder to find. However, I was able to get all the ones I needed, and the ones I couldn't find were easy enough to write. (I'll explain what I had to home-roll and how I home-rolled them later.)

blosxom's primary virtues, for me, are two: 1.) it's a simple script that runs quickly; and 2.) it doesn't require a database system or data entry into irritating text boxes. I'm a vi man, have been for the whole decade-plus that I've used Unix-based systems, and I find text entry in other programs, particularly in textarea boxes with virtually no editing commands available, to be intolerably limiting. I've already got a favorite text editor; why should my content management system force me to use something else?

blosxom doesn't do that; it lets me edit my files in whatever editor I want. In fact, it doesn't get involved in my file editing at all; it just sits back and lets me write. When I'm done with a file, I give it a certain extension (blosxom lets me decide what extension to use, too) and put it in blosxom's path. There we go; blosxom then considers that file an "entry" (or a page, depending on whether you're using it as a blog or as a content management system or both) and runs with it.

In short, blosxom formats and organizes my content for the world and otherwise gets the heck out of my way. That's why I like it.

It's also customizable in the extreme; that's where all the plugins come in. I utilize a number of plugins, some of which are simple and some of which are complex. find by Fletcher Penney. This is a superb plugin, amazing in its simple elegance. It provides a full-featured search engine, with either simple (used on this site) or advanced forms. The search engine does simple "or" searches by default (that is, if you search for two terms, it finds all articles which contain either or both), but it's also capable of the full power of regular expressions. So, for example, if you want to find every article that mentions Isaac Pitman, simply search for "Pitman"; but if you want every article that mentions specifically "Sir I. Pitman", use regexps: "Sir\sI\.\sPitman". (These are Perl regular expressions; if you're not familiar with them, it's easy to learn; though if you don't need that kind of power in your searches, you needn't bother.) moreentries by Jason Clark. This plugin simply produces links at the bottom of an entry when there are more than one which match given criteria. I've limited its use to the results of the find plugin by changing it as such:

	if ($links !~ /find/) {
		$links = "";
This makes the plugin essentially do nothing except when the URL includes the word "find"; if it does include the word "find," then it produces links on the bottom on which the user can click to get to the next or the previous (if any) result of the search. (Note that this plugin can sometimes be hard to find, depending on whether the links to it are broken or not; if you can't find it, email me and I'll send you a copy.) blox, by Stu MacKenzie. This plugin automatically formats my ex-scripted LaTeX into readable HTML without me having to sub in a bunch of paragraph tags. It's got lots of other capabilities, but this is all I use it for, because it's all I need. LaTeX allows me to indicate paragraph by surrounding them with blank lines (that is, double-spacing in between them); blox lets me do the same for my stories. SmartyPants by John Gruber. This plugin does the deceptively difficult job of converting basic quotes into so-called "smart quotes." It also deals with em-dashes and en-dashes, though one has to fix it to do so correcting from a LaTeX point of view:
	my $smartypants_attr = "2";
LaTeX follows the old typewriter notation of using two hyphens for an en-dash and three for an em-dash; the above tells SmartyPants to follow that traditional notation. storytitle by Struan Donald. Not much to say about this one; it simply makes the story title available to be put in the browser's title bar, while by default it's not available. For anyone who might want to bookmark a given section, this will make it easier (possible) to tell what section has been bookmarked. A simple job, but very helpful to have readily available and installed just by dropping in the plugins directory. newbaseurl by Narayanan R. S. Internally useful; it gives an easier to deal with variable for making internal links within the format files. newrellink, based on the rellink plugin by Terrance Ezrol. Converts relative URLs to absolute, along with other fancy tricks. This makes it easier to use internal links in a variety of different ways. tgmstep. One of my own plugins. This just adds the links to the next and previous sections of the TGM Step by Step series. Hard-coded and unlikely to be much use to anyone in any other circumstance. tgmconv. Another one of my own plugins. This handles all the gruntwork for tgmconv online.