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 →

Tonight I saw Outlaw. It starts out showing how people feel let down and abandoned by the law and the fact it seems to treat criminals better than the victims. It’s a great idea, the topic is perfectly timed and it’s only spoiled by a shoddy execution (no pun intended). It soon turns in to a badly plotted gang film that is amazingly one sided - the outlaws are never really developed so their point is lost, it is full of cliches and pretty dull. Read on →

I’m not sure about the basic idea behind Twitter but after signing up, having a little look and noticing the Net::Twitter CPAN module I decided to implement a really bad idea… #!/usr/bin/perl -w use strict; use warnings; use Net::Twitter; my $bot = Net::Twitter->new( username => "username", password => "password" ); chomp(my $doing = <>); $doing =~ s/^\s+\d+\s+//; $bot->update($doing); To make it ‘useful’ you’ll need to run the following in your bash shell: PROMPT_COMMAND='history | tail -n 1 | /path/to/twitter_post.pl' and tada! Read on →

Ghost Rider took a lot longer to reach our screens than it should have, and considering the amount of re-work involved it isn’t that good. Very middle of the road (haha), only see it if you’re a comic book geek, bored or want another chance to see Nicolas Cage not have expressions. 4⁄10.

I was more than a little slack in my online activities in February. Between getting back from LCA and preparing for FOSDEM (tip: sleep a lot before you go) I also managed to have curry with both David Cantrells, see Luke Kanies present Puppet at GLLUG, attend a London PM Heretics, a Lonix and two other meetings that don’t have real names yet. And reach another birthday. I’m not going to UKUUG in Manchester (I need some time at home) but I’ve been prodded in to potentially organising another GLLUG evening and a London PM tech meet, Brummie.pm are willing to come down and speak so it’s a perfect time to put one together. Read on →

While digging in to some large log files recently I needed to work out which daemons were causing the most noise, so I wrote a little perl script called daemon_percentages.pl. It was short, ran quickly and did what I wanted. And then my lunch plans were cancelled due to rain. With nothing but boredom, a newly compiled version of ruby and the google homepage at my side I decided to write a version in ruby. Read on →

I originally wrote frdns to find and warn about inconsistencies in forward and reverse DNS records. At the time I was also using a tool called hawk to show both IPs that didn’t have a reverse record and reverse records that didn’t have a responding IP address associated with them (we had a lot of orphaned records). While hawk did the job it required a MySQL instance, a daemon process and an apache server to function - which was a PITA when it had to be moved to another server. Read on →

When you’re first introduced to an environment you’ll have the ever fun task of working out which machines should get the most time; and that order seldom matches which machines actually need the most attention. To help me prioritise I’ve worked out a simple importance rating system to show where I spend my time. Below is a simplified version. I use it to assign a single importance number to each machine, and then I allocate a certain amount of time each day to work on the issues, requests and improvements I’ve got in my todo list for that level. Read on →