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
March 28, 2008: I’m now running Blosxom in static mode. The source code is now all online. I’ve also moved to a VPS system.
January 22, 2008: Added a link to a new post detailing my Blosxom setup.
January 12, 2008: I recently moved and redesigned the entire site. I have thus summarized the old version of this document and updated it with details regarding the current implementation.