Thursday, 2018-05-24

GDPR privacy notice

Hopefully everyone will stop running around like headless chickens soon.

In the meantime, this site’s privacy notice is here.

Tuesday, 2017-09-26

Dissing Disqus

I’ve removed the Disqus integration as I almost never get any comments anyway. If you have a comment, ping me on Twitter.

Wednesday, 2013-04-24

Banishment of the linkblog

I’ve now put all my Pinboard links into a separate blog:

Here’s the feed URL.

The site looks like crap right now but having it in a separate blosxom install will make it easier to tweak the CSS so it looks good for this specific format.

Saturday, 2012-04-28

Return of the linkblog

I finally got my ass in gear and moved from Delicious to Pinboard, and in the process got a bit carried away and coded a bunch of scripts to import my links into this blog.

So now I have basically all my links mirrored here, minus the ones that are dead (about 20%!). They will be updated every week going forward. Enjoy!

Friday, 2012-04-20

New domain!

If you’re seeing this post, I’ve moved the blog to my “own” domain

Update: comments should be migrated! Kudos to Disqus for providing the tools to do this!

Tuesday, 2010-03-02

No posts in February

Last month I didn’t post anything to this blog, which is the first time in its history I’ve missed a month. Looks like the little grid I coded can deal with null values: see here. It’s always good to have a test value for zero or null.

Well there’s a reason I haven’t been posting much, crazy work and not really anything else to talk about. I’ve started sharing stuff in Google Reader more though, and there’s always Twitter.

Here’s a random late winter/early spring pic to symbolize the season:


Tuesday, 2009-08-11

Blosxom plugin: fnumber

I wrote a little plugin to expand f-numbers to nice hooked italics, like so: ƒ/1.4. The plugin also handles ranges, like ƒ/2.8-4. You can find it here.

Comments welcome!

Tuesday, 2009-03-03

Now running on Lighty

I’ve started using lighttpd to serve this blog. The plan is to move the entire site to a new domain but I need to get some things in place before that.

Let me know if something is amiss!

Wednesday, 2009-02-25

And we’re back!

service fail

Thanks to an administrative snafu, this blog was offline for a bit. Thanks Rafe for taking time off from his coverage of Mobile World Congress in Barcelona to fix this!

Thursday, 2008-02-14

More on Tumblr

OK so some weeks have passed and my Tumblr is getting more posts. Mostly of the “post a link/quote/observation” type. The bookmarklet is pretty amazing. If you just select something on a page and use it, it automatically assumes it’s a quote-type post. Pain free posting. Beats the hell out of my earlier method, which was sending an email to my blog, which in its turn was quicker than firing up emacs, deciding on a title etc.

I’m not really sure how I should continue using this in the future. On the one hand, having one centralised location for all my “activity” online is pretty neat. On the other, it gets spammy fast, and I’d like to keep this blog high-signal, low-noise, building on my personal brand.

So expect more quick throwaway entries on Tumblr. Feel free to add the feed to your aggregator.

Oh, and I’ve removed the stuff mentioned earlier. Only original content.

Monday, 2007-11-12

Integrating Disqus in a Blosxom blog

I’ve started using Disqus, these are the steps I went through to integrate it into my Blosxom installation.


Blosxom plugins:

  • interpolate_fancy
  • pagetype

Register at Disqus. When at the blog integration, stage, choose “other”.

You’ll get 3 pieces of generated code:

  1. a javascript snippet that handles input and display of comments. This should go in your individual story page.
  2. a snippet that’s a link to the comments, this should appear near your story in category and date views.
  3. a JavaScript function that will populate the above link with the number of comments.

In your story.$flavour template, add the commenting section:

<?$pagetype::pagetype eq="story">
<div id="disqus_thread"></div><script type="text/javascript"
<a href="http://<username>">
     View the forum thread.</a>

In conjunction to your story meta information (permalink etc) add the following:

<?$pagetype::pagetype ne="story">
<span class="comment-link">
&nbsp;<a href="$url$path/$fn.html#disqus_thread">Comments (View)</a>

The value of the href tag should essentially be the same as your permalink value.

Near the end of your foot.$flavour template:

<?$pagetype::pagetype ne="story">
<!-- disqus comment count code -->
<script type="text/javascript">
[ ... rest of code in item 3 above ... ]
<!-- end disqus code -->

Unclear? Leave a comment!

Update 2007-12-13: there’s an entry on the Disqus site discussing how to style Disqus elements with CSS.

Monday, 2006-09-18

The submit plugin

I noticed that some blogs have started adding little buttons and links to their posts enabling the reader to submit the story to or Digg with one easy click.

(As an aside, now that I’m, actually reading Digg, I doubt that this is a good idea. Oh well.)

I decided I wanted to have a shot at Internet stardom, and that customized submit links for each and every post was the way to achieve it. To this end, I coded the submit plugin.

This plugin constructs submission URLs based on the current story’s title and permalink, and exposes them in variables such as $submit::delicious that can be used to generate links and buttons.

It’s literally a 10-minute hack, feel free to download it and improve it.

Thursday, 2006-04-13

Blosxom: hiding category and archive pages from search engines

I’ve long been concerned that people finding my weblog via Google or other search engines get directed to my archive or category pages (like instead of the individual entries. A whole year’s postings may contain enough terms to lead people to it, even though the individual posts don’t.

This is annoying for users and wastes bandwidth. I didn’t know how to fix it until I found this article by Fazad Majil. It described my problem exactly and recommended putting the following meta tags in the <head> of the relevant pages:

<meta name="robots"
 content="noindex,follow" />

This will allow the pages to be followed but not indexed or cached.

The problem was how to distinguish chronological archive and category pages from the main page or story pages. The solution was Barijaona Ramaholimihaso’s pagetype plugin. This gives you a variable you can check against with interpolate_fancy.

My head.html template now contains the following code:

<?$pagetype::pagetype like="(category|chrono)">
  <meta name="robots" content="noarchive,noindex,follow,nocache" />

I haven’t noticed a significant slowdown in traffic to the affected pages, but that will take some time.

Next up is getting “Previous” and “Next” links up to each story. Barijaona has a plugin for that too, prevnextstory, but I haven’t had time to implement it yet.

Update 2006-08-24: I basically tried to reimplement this from scratch, even sending a message to the Blosxom mailing list asking for tips.

I’m a bit scared, am I senile already?

Anyway, I removed the “noarchive, nocache” directives. Dunno why I put them in from the beginning.

Sunday, 2006-03-05

New category: plugins

I’ve started to amass a few blosxom plugins that I’d like to share, so I’ve created a new category plugins to keep them in one place. Most are pretty basic, and I haven’t had time to ensure that they’re as general or easy to configure as I’d like. Comments and patches are welcome.

Here’s what’s up now:

Coming soon: the submit plugin.

Blosxom plugin: acronyms

This plugin allows you to define acronyms and abbreviations. When they appear in a post, the acronym will be wrapped in <acronym> tags and you’ll get a handy tooltip explaining what it means.


(Here is the original post about this.)

Blosxom plugin: category_desc

This plugin allows you to add a description to your categories. I use it on category pages to explain what the category is about, and also in tooltips in the category links for each story.


(Here is the original post about this.)

Blosxom plugin enhancement: rendertime

The plugin rendertime allows you to see how long it takes to render all or parts of a blosxom blog. When I tried it, the default version didn’t work on my site. So I updated it to use the standard Perl module Time::HiRes. You can get the updated version here.

(Here is the original post about this.)

Monday, 2006-02-27

Entriescache and meta tags — preventing index file corruption

I had some problems with corrupted entries in the indexfile for entriescache recently. Yesterday it happened again, which pissed me off no end. So I’ve been researching ways to prevent this.

My first thoughts were to use a real version control system, like CVS or Subversion. I could then use the revision tags to keep track of creation and update times. But this wasn’t an option for me, as neither CVS nor SVN exist on my host, and I don’t feel like compiling them statically.

So I had a look at the entriescache plugin itself. There’s an option to write a meta-creation_date when the post is indexed. This is then “authoritative” in case the timestamp in the index file is changed.

The problem was that I had edited my some of my posts a lot of times since starting to use entriescache. So I wrote a script that updated (or rather, backdated) the timestamps according to the data in the index file (which had been restored from backups). After this, I changed the option that controls whether the plugin will write a meta tag, and reindexed.

Voila! I now have a meta tag in each and every post that can be used to keep track of the posts creation time if all else fails. And since it’s added by the plugin, I don’t have to add it manually in the editor.


I made a slight change to the plugin too: the default timestamp format is in the middle-endian US way (MM/DD/YYYY). I modified it to write and read ISO 8601 dates instead.

Friday, 2005-12-02

Defining acronyms

I’ve long wanted to automatically add a <acronym title="explanation">TLA</acronym> to all the TLA ’s and FLA ’s in my posts. And I don’t want to do it by hand, not when I use Markdown for everything else.

I asked around on the Blosxom list and got pointers to two existing plugins, Autolink by Fletcher T. Penney, and Automatic LuckyGoogle by Todd Larason. I found Fletcher’s code easier to grok, being more or less what I started hacking myself before I got bogged down in the plugin internals of blosxom… So I copy-pasted some stuff and now I can type XSLT and get a cool dotted underline and a tooltip.

One small step for me, an even tinier step for the semantic web.

Update 2006-03-02: you can get the plugin here.

Sunday, 2005-08-28

“Your plugin has been assimilated”

It’s with some amusement that I saw a question on the blosxom list go from my own hapless contribution to a full fledged plugin in less than 24 hours. (The gory details are here.)

My idea was category_desc, the code was Stu McKenzie’s. I guess I’ll take up the baton and write some documentation.

The basic premise was that I wanted to provide a more detailed description of a category when viewing its “front page” ( for the category “bar”, for example.) The link between categories and descriptions is in the %descriptions hash. This hash is accesses by the head sub and the variable $category_desc::description is accessible in the flavour.

Caveats: you have to know how to write Perl for this plugin to work for you.

You can see it in action at

You can also do this with the config plugin and with postheadprefoot. In both those cases, a file has to be created in each category directory. This method keeps everyhing in a central place.

Update 2005-08-28: the information is now available in the story flavour too: Stu explains it here.

Update 2006-03-02: you can get the plugin here.

Thursday, 2005-01-06

Ugly XML icon

Some people want us all to use the ubiquitous XML icon. Other people think it’s ugly. And some of us wouldn’t care one way or another — myself included — if we didn’t know that Dave Winer is responsible for it.

Anyway, I’m replacing that icon with a blogbutton: RSS 1.0
blogbutton. But before I banish it into the bit bucket, I’ll share with you how it’s made. It’s not an image, but a bit of CSS:

<a title="RSS 1.0" href=""
   style="border:1px solid; border-color:#FC9 #630 #330 #F96;
   padding:0 3px;font:bold 10px verdana,sans-serif;

that looks like this when rendered: XML.

Cool huh? I got it off the net somewhere along the way. Thought I’d share. If someone owns up to claim authorship, drop my a line.

I might add that my objections to the icon is not primarily aesthetic (after all, the replacement is orange too, but that’s OK, because orange is the new black) but functional. The XML icon implies something else than a link to a syndication feed. I must admit I was puzzled the first time I encountered it. Then I found out what it was for. But it is puzzling. The new icon at least advertises what it is in a better way.

Update: Ned has another CSS logo.