Technical details on this website

[R: this is for you. Thanks for you-know-what]

Update 06 Jul 2004: added "seemore" functionality into siki. Now it looks like a real blog ;-)

before blosxom...

In the beginning I had a home-grown program that did just one thing: change a plain text based notation into HTML, with certain rules. This, with a couple of shell scripts around them, "created" simple HTML. I'd written it a few years ago, and it has survived till now in my toolbox.

The problem with using this for a website was that it offered nothing in terms of adding and uploading content. Everything except the actual content-authoring was still manual! So, after the initial setup of the website in late Feb to early March, 2004, nothing changed till mid-June -- it was just too cumbersome.

Clearly, that's no use, even for a self-confessed "vanity" site that's not expected to be of any real use.

blogs compared

By chance, I came upon a comparision of various blogging software [URL lost -- looking...], and I quickly zeroed in on the only one that did not require a database or some other fancy pre-requisites, was written in perl (I may have to mangle it for my own use!), was free as in GPL or similar, and yet had a sufficient number of features.

Blosxom was the only choice!


The blosxom install page has 4 scenarios (blosxom on your ISP, or on your own Mac, Windows, Unix box). The one for the "ISP" and for "Unix" are the same. The basic pre-requisite is simply being able to run a perl/CGI program.

what to download

To start, we get blosxom.zip from http://www.blosxom.com/downloads/blosxom.zip . This is, as of today, a single, simple, Perl program of only 440 lines! The rest of the magic is via plugins and templates etc. (The templates are also small -- less than 200 lines -- but the plugins are almost 2000 lines!)

Simply unzip into your cgi-bin directory, edit the top few lines where some self-explanatory parameters (mostly paths). Just be sure that the $datadir is not under the web server's DOCUMENT_ROOT!

After this, download the Blosxom Flavour Sampler and install it in Blosxom's $datadir. A "flavour" in blosxom is what some programs call a "skin". Look and feel only. The sampler has 3, and the flavour registry has a lot more, with fancy colours and special effects. I neither have the time, nor the interest -- in fact, weird colours go against my philosophy of creating sites that are usable from even a text browser!

The default flavour is "html", so I changed the corresponding files to suit my taste. head.html had the most changes -- when you install yours, compare how the side bar looks on yours from mine and you will see. "View Source" if needed. Another small but important change is in foot.html; I don't like date-based "permalinks", so I changed them to hierarchy-based ones.

Finally, download a few plugins from the plugin registry. Plugins allow extra functionality. For example, somewhere in my head.html I have $categories::categories. This invokes the categories plugin, which shows the browsable list of categories you see below the "vanity disclaimer".

The plugins I use (with a one-line description of non-obvious changes I made, if any) are:

  • bookmarklet
  • breadcrumbs
  • categories (the DATAsection also changed quite a bit to get rid of the unordered list and make it a "2-space indented" list)
  • entries_index
  • find
  • timezone
  • wikieditish (the actual submit button invokes an HTTPS URL rather than an HTTP URL, since a password needs to be transmitted. What can I say -- I'm paranoid!)
Read more about these plugins on the plugin registry page.

Apart from these, my text to HTML program was converted into a blosxom plugin called "siki". [I haven't submitted it yet, but I intend to do this sooner or later]. Naturally, this took the longest time. You can always write plain HTML of course, but it sucks!

Total effort for the important bits was around 8-10 hours (done over a few evenings, about one hour each time). As is common, tweaking the system after it was working "OK" took about the same time. It's like the old joke: the first 90% of the work takes 90% of the time, the rest 10% takes another 90% of the time ;-)

No comments: