Colophon

Present

This site was created using only free software: primarily GNU/Linux, GNU Emacs, Blosxom, and Markdown. It is hosted on gauss.xbeta.org, a virtual private server running Ubuntu Linux and Apache, hosted by A2 Hosting. The main site is generated by Blosxom, a lightweight yet extensible weblog system written in Perl. Entries are authored in Markdown using GNU Emacs and markdown-mode and stored in a categorical directory hierarchy. You can add .text to any entry page on this site to view the source (or main.text for index pages).

Blosxom

I’ve moved from a fully dynamic Blosxom installation to a hybrid approach to a fully static setup. Presently, I store all the relevant data and code for the site in Git repositories. Whenever I commit a change, the site is automatically regenerated by a script that runs when the post-update hook is called. For more details, see my blosxom.git repository.

Previously I ran Blosxom in fully dynamic mode with an experimental page caching plugin I wrote. I described this setup in detail in the post Blosxom: Less is More. Some of this is still relevant to my current setup.

I then moved to a hybrid setup where all files were served statically with two exceptions: search results, and image pages, and comment submissions were served by the Blosxom CGI script. Whenever a comment was submitted, the relevant pages were regenerated by a static_helper plugin I wrote. I posted a message to the blosxom-users group which describes in more detail how this worked.

Design

Simplicity is my top priority. I wanted the layout and color scheme to be clean, legible and compatible with as many browsers as possible, including console-mode browsers. I generally dislike fancy client-side scripts—all processing is done on the server. Standards compliance is also a high priority as I must adhere to strict XHTML 1.1 in order to support inline MathML and SVG.

Graphics

SVG graphics are either created by hand (i.e. in plain text) or first created in Inkscape and then simplified by removing unnecessary style information and rounding the coordinates. Raster graphics are processed using GIMP and ImageMagick. I use Agave to tinker with color schemes.

mod_rewrite

I think that good URIs should be short, informative, and extensionless whenever possible. This helps future-proof sites as the underlying representation of the content may eventually change. I use some semi-complex mod_rewrite rules to enforce these guidelines:

# Redirect foo/index.xhtml to foo/
RewriteCond %{REQUEST_URI} index\.xhtml$
RewriteRule ^(.*/?)index\.xhtml$ $1 [R=301,L]

# Redirect foo/bar.xhtml to foo/bar
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /[^.]+\.xhtml\ HTTP/
RewriteRule ^([^.]+)\.xhtml$ $1 [R=301,L]

# Rewrite extensionless requests to source file (if possible)
RewriteCond %{REQUEST_URI} !\.[a-z0-9]+$
RewriteCond %{REQUEST_FILENAME}.xhtml -f
RewriteRule ^(.*)$ $1.xhtml [L]

The SDF Years: 2004–2007

This site is the second major incarnation of my presence on the web, although many less organized ones came before. It was formerly located at http://jrblevin.freeshell.org/ where it was hosted on the Super Dimension Fortress, or SDF, a public access UNIX system where I am a MetaARPA member. SDF runs NetBSD and Apache.

During this time the site was partitioned into two parts. Static pages comprised the majority of the site and there was a dynamic weblog portion. The XHTML for the main site was generated by Genpage, a Perl script which builds webpages by applying layout templates to content files in order to create a website with a consistent style. The weblog portion of the site was generated dynamically by Blosxom. Weblog entries were written as XHTML fragments and templated in order to match the layout of the main site.

The templates, content files, and weblog entries were edited in GNU Emacs using html-helper-mode. Graphics processing was done using Gimp. I controlled the site generation and file transfer using GNU Make and I used rsync to mirror site. My site statistics were provided for free by StatCounter.

ChangeLog

Last modified: March 28, 2008 19:52 EDT.