I've been considering starting a blog for a while now, but building one takes some time. Of course it is possible just to edit static html pages, but if I had started that way, I probably wouldn't have put this one up ever. I knew quite well what I wanted but checking different possibilities is time-consuming.

I had been looking for wikis also and finally decided to use IkiWiki. It seemed simple, but provided most features I wanted, and was easily available as Debian package. IkiWiki also provided blog features out-of-the-box and that was enough to give it a try. I also like the idea of writing posts with an editor and then just dropping them to a directory to get them posted. IkiWiki sit on top of a version control system (which you can choose) and makes it also possible to add posts for example with a git push.

It took some time to get familiar with the structure of the wiki (and certainly I don't know it very well still). IkiWiki is a compiler that creates static html pages using directives which order what templates are used where and with what parameters. Many of the features are implemented as plugins that can be controlled with a setup file. When contents of the source change, the wiki is rebuilt and changed pages updated.

In the templates the content is handled using variables like <TMPL_VAR TITLE>. I had troubles knowing what variables are available in each context. For example I wanted to move the search form from main content to the sidebar, but just moving <TMPL_VAR SEARCHFORM> was not enough. I finally actually just included the contents of the variable to the sidebar. As far as I know there is no list of variables and contexts anywhere but in the templates (and code).

Another problematic case was having conditional content depending on active page (frontpage vs. other pages). I found a solution from Jason Blevins' plugin site (path plugin) which is not linked from the ikiwiki.info site for some reason. It adds some template variables which can be queried to check where in the blog the current page is.

Other modification that I did were throwing a lot of default content out, moving bits around, adding of course a lot of css, adding some <h#> tags for headers, changing calendar date presentations, and playing a lot with different plugins, Hopefully things more or less work now. Feel free to tell if not or if you would rather have something differently.