Bloody Oracle bollocks

I've just spent most of the morning helping our DBAs install the Oracle client software on a freshly installed Debian box. Why, oh why, do you need to run some dodgy Java GUI installer to install a fscking database client? Why can't they give, say, a statically compiled binary? A shell script? ANYTHING but this!

Doing the installer in Java just makes the dependencies that much greater. And the Java stuff seems to rely on quite old versions of everything, including C++ libraries and GCC. How dumb.

Sure, Oracle don't formally support Debian as a platform but even on their "supported" RedHat platform you have to jump through hoops to get the thing installed. Why?

Amazing chocolate cake

On the weekend I made this amazing chocolate cake from Nigella Lawson's site for Fiona's birthday. Fantastic cake, really rich and yummy. Went down well. I did the orange-flavoured option and it worked out brilliantly.

Now the other half is asking me to make her a cake for her birthday, because I missed it at the time being in Australia. Looking for good carrot cake recipes now.

Woken up with a Tory MP

Well, this morning I woke up with a Tory MP. It feels worse because I've actually met the smarmy bastid and voted Labour despite Bliar.

Worse still, Saddam-loving George "permatan" Galloway succeeded in his thinly veiled anti-semitic campaign in Bethnal Green. While I have no sympathy for pro-war Oona King, the alternative is worse even than the Tories.

Vote early, vote often

So it's the big day. I trundled down to the Indian Cultural Centre around the corner to do my civic duty this morning. Xed the appropriate (Melanie Smallman, Labour) box and headed out. Dead easy, can't imagine why 49% of the population can't be bothered.

On the way out, however, there were two guys sitting in the lobby with no identification asking for my polling card. On being challenged, they said it was to help with "party canvassing" and to ensure they didn't hassle me later in the day. WTF? Of course, I told them to get fucked. Dodgy.

Why does technical marketing have to be meaningless?

We're looking around for bug tracking software at my work, so this involves a lot of research into the available tools. It seems that the web sites of most software companies are written by and for people who are functionally illiterate.

Take this example. WTF is a "Web-architected, secure and highly configurable" <piece of software>? Come on guys, "architect" is not a verb. Nor is "leverage".

Do you think it's possible to write a straightforward description of what the software does without any buzzwords? I mean, this is a product clearly targetted at software people, and the bullshit bingo is just gonna piss people like us off.

By way of contrast, Joel's excellent site about his product, FogBugz, tells you exactly what it does in the first sentence: "FogBugz is a complete project management system for software teams." How refreshing.

Yay for Microsoft!

Say what you will about their (lousy) software, Microsoft make great hardware. On Wednesday my eight-year old Microsoft Natural Keyboard finally died, the Enter key stopped working. So I ordered another one.

These keyboards are fantastic because they've put useful ergonomic keyboards into the affordable price range. Previously you had to shell out serious bucks to get something that didn't destroy your wrists. With these puppies, you can get that for £12.

Free at last!

Finally I'm free of Network Solutions and their incompetence. Now registered until November 2010 at GoDaddy.

How long did something take in Perl?

Some things in Perl seem very obvious to the gurus but aren't terribly obvious to us mere mortals. I'm writing scripts for work to automagically publish our docs, so I'm trying to work out how long each document takes to publish.

This uses the Time::Duration module to convert the epoch seconds that Perl uses into something humans can read. It's adaptive to give something meaninful, so "66666666" returns "2 years and 42 days" while "666" returns "11 minutes and 6 seconds". If you want full precision, there is also the duration_exact function in that module.

use Time::Duration qw(duration);

# Record the start time, in epoch seconds
$starttime = time;

# Do stuff
...

# Record the end time, in epoch seconds
$endtime = time;

# Subtract the start time from the end time
$difference = $endtime - $starttime;

# Convert the seconds to something humans can read
$duration = duration($difference);

print "The process took: $duration\n";