“A nearly impenetrable thicket of geekitude…”


In his novel A Deepness in the Sky, author Vernor Vinge (whose background as a computer scientist means that he often hits the nail on the head in these matters) introduces the idea of a mature programming environment in the following way:

There were programs here that had been written five thousand years ago, before Humankind ever left Earth. The wonder of it — the horror of it, Sura said — was that unlike the wrecks of Canberra’s past, these programs still worked! And via a million million circuituous threads of inheritance, many of the oldest programs still ran in the bowels of the Qeng Ho system.

In that vein, this is a mature web site.

The Beyond

(Also known as The New Hotness).

This site is one of the places where I try out new things, which means it undergoes a more or less continuous process of renewal. Shiny new things are layered on top, older layers are gradually pressed into shale below.

The current New Hotness is an attempt to rebuild the site using the Nanoc static site generator. This is a bit of a return to an earlier pattern, as a very early version of the site was statically generated using Movable Type. In that case, Movable Type itself ran on the site and the static generation of the pages for display was an optimisation, similar to having a page cache in something like Drupal. In the modern pattern, the static site generator runs as far away from the web site as possible, and only exports the static assets to the web server facing the evil Internet. As well as the speed advantages of static content, this removes the need to update the site management software every time a security issue is found. This seems to me to be a very big advantage in the current environment: at the time of writing, the version of Drupal I am using has had more than fifty minor releases, not counting a similar number of releases to several of the important modules used here.

One of the nice things about Drupal is that through code in the root .htaccess file, it arranges to handle only URLs for which static content does not exist. The Nanoc parts of the site can therefore be generated independently and layered on top of the Drupal site without having to import the Nanoc content into Drupal. I run Nanoc on my home systems and use rsync to push the overlay to my public web server.

At the time of writing, the following parts of the site are generated by Nanoc:

  • The There Wiki, a now historical technical resource documenting the There virtual world. The wiki was previously maintained using an instance of the UseModWiki wiki software, which given its age made it a priority for replacement.

  • All of the “static” pages on the site, such as this page. The trickiest part of that conversion was to simulate the exact look-and-feel of the Drupal site, from the general appearance to the menu and breadcrumbs systems. The general appearance issue was solved by using the Drupal CSS code and then slavishly copying Drupal’s complex <div> hierarchy in the Nanoc layouts. Getting the navigation blocks right required building an emulation of parts of them in Ruby.

The following parts remain to be converted:

My plan is to move onto my old iay@there blog about There next: it’s currently in Drupal (having been migrated long ago from Movable Type) but it’s almost entirely separated from the rest of the site, so shouldn’t be too entangled with it. Apart from the content conversion, the main challenges there look like being indexing items for things like category pages, and generating snippets when an item is embedded in a multi-item page.

In terms of content, most of the images on the site are my own work. Selected pictograms (e.g., Warning triangle) from Daniel Bruce’s Entypo+ collection are used under a Creative Commons Attribution-Sharealike 4.0 International (CC BY-SA 4.0) license.

The Slow Zone

(Also known as The Old and Busted (same video)).

Most of the site is currently built using Drupal, an open source CMS (content management system). I’m using Drupal 7, and the theme is the default one, Bartik.

I’ve never been a particularly experienced Drupal user, so it’s a pretty simple setup using one of the standard themes and with only a very few of the many thousands of available extension modules installed. The most important modules in the current setup are described below:

  • The Comment module is enabled for the site, mainly to support comments migrated from older blogging software. These days, turning on comments seems to be an open invitation to comment spammers, so I only do it selectively.
  • The Markdown filter module allows me to write new content using the Markdown syntax. I’ve been using this in other environments to give me a really good compromise between expressiveness and simplicity for note-taking and simple document creation. There are lots of “simplified” editors for both desktop and mobile systems that do a good job of Markdown composition and preview.
  • I have added an unsharp mask filter to all of the image content types using the Filters Image Effect module. Without this, I found that image previews and thumbnails generated by Drupal were unacceptably blurry.
  • Little CSS tweaks, in most cases needed to handle imported content, are handled by the CSS Injector module. In the long term, this will be replaced by either custom theming work or by rewriting the offending content; for now, CSS Injector is much simpler.
  • Menu Breadcrumb generates the breadcrumb bar across the top of each page’s content.
  • OpenID URL allows me to use iay.org.uk as an OpenID.
  • I make heavy use of Pathauto and Redirect to hook everything together, and to allow the URL layout of imported older content to be initially reproduced and later modernised without links to the site breaking.
  • I don’t know what I’d do without the Views module, particularly in the more “blog-like” parts of the site. The learning curve on this one is pretty steep, but it is well worth mastering if you want to have any kind of aggregated content.

One of the nice things about the way Drupal operates is that it handles everything except those parts of the site which already exist as files. This arrangement came in very handy while importing the main content into Drupal, as I could import each page in turn as a Drupal “Basic page” with a path exactly matching the original content, then bring that page into service by deleting the old file. Now that all of that content has been converted, I can use the redirect module to move the content around without breaking bookmarks.

The Unthinking Depths

The very oldest parts of the site were originally written either directly in HTML or using some kind of web authoring tool: I’ve used Microsoft FrontPage, Abobe GoLive and most recently Adobe Dreamweaver. Most of this — and particularly the parts that were originally exported to HTML from Microsoft Word and then post-processed using Perl — have been replaced by Drupal-maintained pages now, or been moved to other domains where they won’t offend me quite so much.

There’s a lot of odd stuff left down there, though…


This web site has been kicking around for quite a while, in one form or another. None of the oldest versions, which were built using the HTML output from Microsoft Word, have survived. I think that we can all agree that this is probably all to the good.

The earliest version I can locate on the Wayback Machine is its incarnation as rats.demon.co.uk in late 1996. That appears to have been a mix of hand-coded HTML and sections built using Microsoft FrontPage.

Prior to migrating most of the site to Drupal in 2011–2012, I used a number of other less general content management systems. In particular, the two blogs (the original Technology Stir Fry blog and the now-frozen iay@there) used to be maintained using Movable Type.

The There Wiki was originally managed using an instance of the UseModWiki wiki software. It was active from March 2004 to July 2007 and was eventually converted to Markdown and the Nanoc static site generator in November 2017.

The Name

I have used the name “Technology Stir Fry” for my blog since its inception back in 2003. I started using it as the title of the site as a whole when I converted the site to Drupal in late 2011, when I finally decided that calling the site iay.org.uk was a little tautological.

The site slogan “A nearly impenetrable thicket of geekitude…” was a good friend’s reaction to her first visit to my blog. Instead of taking offence, I decided to take ownership of the phrase instead.