I’ve been in bed for most of the last week and a half (apart from two very short staffed days in the office) with the cold / flu bug that seems to stalk through our office on permanent rotation. Apart from the general feeling ill and lots of sleeping I missed a GLLUG and the first London Puppet Muppets meeting. But I did decide to go to the 2007 Nordic Perl Workshop, an event I’ve managed to miss for the last three years. Read on →

I’ve never read the comic, I didn’t recognise any of the cast and quite enjoyed 300 as a not very challenging film. Lots of very cool fight scenes, an acceptable amount of plot and a great ‘arrows blotting out the sun’ scene. Oh, and a war rhino. What else is there to say? The fight scenes are bloody but not especially gory, the Spartans are portrayed with the right amount of bad-ass nature and it had a number of Sin Cityesque deformed villains in it. Read on →

Digg People: Please note that “Top $FOO of all time lists” should not be completely comprised of $FOO's from the last two years. You should also dock points for all uppercase words, txtsp3k, leet speak and every use of ‘AMAZING!!111’ and its ilk.

This came up in conversation with a developer at the Google OpenSource Jam so I thought I’d mention it while it is fresh in my mind (update: at which point I forgot to move it to the published directory. Doh). Breaking up config files isn’t done just to annoy people, it’s done to make automated and mass management easier. A solid practical example is the Debian Apache configs. Historically most distros (and too many current ones) used a single config file for Apache. Read on →

I recently went to the second Google London OpenSource Jam over at Belgrave House. I’ve been aware of some of the London Google evenings but I’ve never made the effort to go, how ever there were a couple of people I’ve not seen for ages on the attendee list for this one so I decided to sign up. I don’t know exactly what I was expecting but what I got was more than a little weird, part pre-2000 dotcom and part group hug; it wasn’t really my kind of event. Read on →

For reasons that are too dull to post about (yes, even on THIS blog!) I spent some time today looking at Log::Dispatch. Bob (the afore mentioned bigger boy) then made^Wsuggested I integrate it with the shining example of wasted time that is Twitter. So I (not very) proudly present: Log::Dispatch::Twitter! Now, where’s the build system source code…

All I wanted to do was stop the IPv6 kernel module from starting on boot. It shouldn’t be hard, it shouldn’t be difficult and despite the early hour of the day, it shouldn’t require me to google. But it seems that it does, as a start point the Planete Beranger Disable IPv6 post shows the many different ways to solve the problem. Unfortunately it seems that the Debian Etch install I’m testing on doesn’t like: Read on →

I’m on-call tonight so I invested some time in facter, “A cross-platform Ruby library for retrieving facts from operating systems.” While facter is an interesting command line program (its extension mechanism is quite nice) its main claim to fame is that it’s used by puppet (which I’m slowly evaluating as a CFEngine replacement) to determine facts about a machine. While the docs are a little light on the ground the tgz contains a couple of examples and after some playing around I think I’ve got a basic Linux Bonding fact ready. Read on →

Over at the top-like command for disk io thread on GLLUG Kostas Georgiou mentioned a Linux /proc file entry I’d never heard of before, and after some digging it looks like it could be useful when debugging certain IO problems. Assuming you have 2.6.6 or above - or a vendor patched kernel. When you activate the option with a echo 1 > /proc/sys/vm/block_dump as root (read the article and consider turning syslog off first) the kernel starts to log which processes are accessing which disk blocks and inodes. Read on →

Both Jim Weirich and Ben Summers were kind enough to email me about my Daemon Logging Percentages and Playing with Ruby Idioms post. They sent me an explanation on how to do the hash assignment in a way I find much nicer, so with no more delays I present - Option 4: tally = Hash.new(0) tally[daemon] += 1 It really is that simple - and I still missed it by a mile. Read on →