LCA 2012 – registration opening soon, hopefully

Looking forward to getting myself sorted for Linux.Conf.Au 2012 this January in Ballarat, Victoria. A heap of mini confs have been added before hand – now comes the problem of choosing between them.  Registrations were slated to open early september – hopefully soon, as I want to confirm my ticket and accomodaiton before booking flights… and they get more expensive as time passes. So, I guess everyone is watching the LCA web site intently!

May have a few days in Melbourne afterwards with my Mrs and son… we’ll see. 😉

Skype Premium pricing – international rip off?

I’ve been looking at Skype Premium (for group video calling). I know there are other solutions around, but convenience is key. Here are here prices listed today on Skype’s site in US dollars, UK Pounds, and Australian Dollars for a 12 month subscription, with a 25% discount applied all up as the total shown, plus the rate that skype is claiming for now to Australian dollars, and the equivalent Australian price:

  • USD$80.88, 1 USD = 0.99 AUD = AUD$80.07
  • GBP£44.88, 1 GBP = 1.63 AUD = AUD$73.15
  • AUD$89.88

So If I purchase this in Australian dollars I am paying an extra $16.72 than if I buy in Sterling. Hey, USA, looks like you’re paying more as well – an extra $9.81 than the UK!

Now, USA, that may seem a bit wrong, but the rest of the world has had this for years. Australia’s been paying a surcharge on iTunes content for years; there’s been a hot trade in US iTunes Store gift cards to Australia to help avoid the Australian price.

MD5s

Using an MD5 Digest (or md5 sum) i a neat way of building a predictable key for data. Obviously there is the issue of MD5 collisions (there two completely different source data both produce the same MD5 Digets), but unless you’re building medical or safety equipment, for general text manipulation its pretty negligible.

However, MD5s can be represented in several ways. Lets discount the binary envoding of the 128-bits (16 bytes) of data as thats rather cumbersome, and if you’re storing this in a database such as MySQL, there isn’t a 16 bytes numeric data type; BIGINT is 8 bytes, so you’d have to use two BIGINTs and do lots of horible stuff.

That brings us to the base encodings. Base 16, or hexadecimal, would require us to use a text data type to store the results – as the base16 encoding will contains the numbers 0-9, and the letters A-F (or a-f – the case is irrelevent/insensative in base 16). It would be 32 “characters” long. We can stuff that in a column with no trouble (char(32)).

We can also use a Base 64  encoding, using upper and lower case letters and a few symbols as well as numerals 0-9. This comes to 22 characters (you’ll sometimes see == appended to a Base64 to make it 24 characters). Using 22 chars as a key instead of 32 is 31.25% less data. That makes your indexes that much more compact as well as the column data.

It may not be a perfect primary key, but its possibly reasaonable. But then comes the question of converting between Base16 and base 64. Here’s one way:

#!/usr/bin/perl
use strict;
use warnings;
use Digest::MD5;
use MIME::Base64;

my $data = "foobarbasbifffoobarbasbiff";
my $md5_base64 = Digest::MD5::md5_base64($data);
printf "%s in base64 as hex: %s\n", $md5_base64, unpack('H*', MIME::Base64::decode_base64($md5_base64));

Rusty is coming to Perth to talk!

If you’ve not seen any of the PLUG news, then you may not know that PLUG is organising for Rusty Russell to come to Perth for our October presentation. This is the first time that PLUG has flown a speaker in to Perth, and if successful, probably wont be the last time! The cost of doing this is being split amongst attendees by way of ticket sales at $20/member, $50/non-member (and PLUG membership is $20/full, $10/concession, so you can work out what’s cheaper!). In order to help us with out budget, door sale tickets on the night will be $50 for everyone, so please get your ticket now (details).

On top of this, free tickets are being given to UWA 3rd year Comp-Sci students… except… PLUG committee has just voted to extend this to all full time tertiary computer science students at any university. You still need to get a ticket – email tickets@plug.org.au to request one. This event will be on Tuesday October 11th, starting from 6:30pm (doors open 6:00pm).

For those unable to attend, PLUG will again be endevouring to live-video stream the session, and make the recording available afterwards.

Liboping install

I use Florian octo Forster’s fantastic parrallel ping library liboping, and over the last 9 months or so have contributed a few minor bug fixes (mostly build related stuff, so not exactly core to the library’s code). I use this for doing parallel pings of hosts and gathering stats, as part of a wider heuristic for site web speed. Of course not all hosts respond to ping, but thats fine; some do.

I went to build vresion 1.6.1, and found that it installed into /opt. This was from source as I was on a platform that is not Debian (otherwise I’d just use the package and be done with it). I found that by default, everything had been put into /opt. I prefer using /usr/local, so I built it with:

./configure --prefix=/usr/local && make && make install && make install-data

The reason for the last one is that I want the headers installed. I then want to make the Perl library; and for that I need the linker to be able to find the library. I found that I need a file in /etc/ld.so.conf.d/ that lists this location, so along came “echo /usr/local/lib > /etc/ld.so.conf.d/usrlocal.conf“, followed by a quick ldconfig run to update the paths. I could then cpan -i Net::Oping.

Why blog this? Because every few months I have to try and remember it. Now I just need to remember that I blogged it.

With thanks for Florian octo Forster for the library, of course.