Archive for 2008


What do you do when you’ve got a large collection of chillies in the house? Well, if you’re us, you make harissa.


Doors Open

Yesterday was the 2008 Doors Open Day in Edinburgh: each year, for one day only, a variety of buildings open their doors to visitors, free of charge. A large number are places that you’d never normally get the chance to visit.


The runN program

Nearly a year ago, Mark Jason Dominus blogged about runN, a program he’d written. I’ve stol– uh, I mean, adapted his version for my own ends, with a couple of differences. This is a rationale for my changes.


Tries and Text::Match::FastAlternatives

I’ve just released version 1.00 of my Text::Match::FastAlternatives Perl module. Since I’m apparently declaring it stable, I thought it was worth writing up a description of what it does, and how it does it.

Suppose you have a large list of strings, and a set of keys, and you need to determine, for each of the strings, whether any of the keys occur in it. For example, the list of strings might be a list of user-agent headers sent to a web server, and the keys a set of strings that are good indicators of robots accessing your site; you want to calculate some server statistics, but disregard any robotic traffic.

How do you go about doing that?


Speeding up SSH logins

SSH is great; it’s highly secure, and actually easier to use than insecure alternatives like rsh or Telnet. In fact, it’s so easy to integrate SSH with everything else you do that it’s commonplace to rely on it for all sorts of things. But oddly, that very ubiquity tends to reveal an unexpected problem when you try to use SSH for, say, accessing a revision-control system: merely connecting to the remote end and performing the handshaking necessary to set up the encrypted channel takes an appreciable amount of time.

So herewith instructions on how to eliminate that overhead.



Today is the Jewish festival of Purim. One of the customs associated with Purim is the eating of hamentashen — triangular pastries with a sweet filling. (The word is probably Yiddish for “Haman’s pockets”, where Haman is the bad guy in the events commemorated by the festival; in Hebrew they’re called אוזני המן oznei haman, or “Haman’s ears”.)


How not to behave when you’re on the run

I’ve been watching some Prison Break lately. I don’t suppose I’m giving all that much away if I mention that season 2 follows the lives of some convicts after a, y’know, prison break.

One of the convicts in question is Our Hero, Michael Scofield, who we’re meant to believe is a genius. But I saw something the other day that gave me serious cause for concern on that issue.



Eric Sink has an interesting piece about MeWare, ThemWare, and UsWare. The basic idea is that one way of categorising software is by who uses it:

  • MeWare: only the developer
  • UsWare: the developer, among others
  • ThemWare: people other than the developer

I think most programmers can see what Eric’s getting at there. If you’ve ever worked on, say, a piece of software used exclusively by people in a different department of the company you work for, you know how hard it can be to ensure that the software actually meets those people’s needs.

However, I took issue with one particular thing Eric says.


Album art in Rhythmbox

I’ve been using Rhythmbox for a while now. (Well, I had a brief sojourn in the land of Amarok, but I now seem to have left it for good.) Rhythmbox is actually pretty good; better in some usability ways than iTunes, for example. But it’s far from perfect.


Unicode fun

The Unicode character U+029A ʚ is named LATIN SMALL LETTER CLOSED OPEN E.

Both CLOSED and OPEN? That’s a neat trick.


Freecycle and reputation

Freecycle is a pretty good idea. Lots of people have stuff they no longer need; lots of people need stuff they don’t currently have. If those people could get together in local geographical communities, so that the first group can give stuff away to the second group, then more stuff will get reused rather than being filed away in landfill for a few centuries.

But the implementation of Freecycle is, shall we say, somewhat suboptimal.


Software tools and cross products

A colleague approached me today regarding a unit test he was writing. He was constructing a series of test cases from a data structure; his code at the time used a multi-line string of which each line had several fields which together described a test to run.


This is not an RSS feed

Various things we do at work involve taking RSS feeds from elsewhere. Some incompetent people emit feeds that are broken in one way or another.