First rule of karma: You don't talk about karma

OK, so I made it to LCA08 in Melbourne, eventually.

However, I managed to have the following happen on the way:

  • Got the time of my flight to Melbourne wrong, arrived at 5:30pm for a flight that left at 5pm.
  • Caught the wrong tram from Melbourne CBD to uni accomodation, had to walk from Royal Melbourne Hospital back to the university. This was precipitated by me misreading the tram t
    imetable thingy.
  • Failed to wave at a traim outside the uni, meaning it sailed right on past me.
  • Locked myself out of my room, the third time I left it. (They’ve got those dumb swipe-card locks which are always locked except when you’ve just swiped from the outside, but are open from the inside.)
  • Asked on #linux.conf.au about the URL for Planet LCA 2008 while it was in the topic. (Unlike on #debian, not only was I not mocked for this, no one noticed before I did, a while later)

On the other hand, I caught up with Brad, Evelyn, Bek, Jason, Phil, Naoko, Geoff and Ange, all in the one day. That was fun, we had dinner, I stuck my sore feet in the ocean and felt better, and I manged to catch the right trams from the university _to_ the city. Well, lunch with Naoko, the rest with the others. (Actually, that’s in reverse chronological order)

The actual conference first day was interesting. I was at the Debian Mini-conf all day, seeing a neat thing about using git for managing packges sensibly, which is something I was trying to figure out when I was packaging Second Life last year, as well as some cool stuff coming into Debian over the next year or so.

After the Debian Mini-conf all went over to the keysigning (I didn’t go again this year, I wasn’t organised in time) I went to see a presentation about Ingex which is something the BBC have developed to try and take Digital Betamax out of the video production process (since Digital Betamax only works in real-time, as I understand it) with some success so far, and it’s pretty interesting.

Speaking of not being organised in time, I only thought today to look at the Tutorials, and both Wednesday’s tutorial about hooking up hardware to Second Life and Thursday’s tutorial about hacking on lguest require preperation. I was able to grab Jon Oxer at the Debian Mini-conf and get my name put on the one remaining spare development kit, and so now I’m down in the Junior Common Room of Trinity College (no wireless in the rooms yet) updating my blog instead of trying to get lguest running under qemu. I’ll have to go dig up Rusty’s and Robert Love’s instructions from LCA05 preparing for their kernel hacking tutorial that year. Wow. Archiving the old LCA websites kicks ass!

Edit: I actually was dumb on #linux.conf.au, not #debian. As an aside, I managed to lock myself out of my room again later that week.

It takes surprisingly little bad karma to get a good karma payout

Good news! Having worked for most of the traditional Christmas break, I’m now going to to linux.conf.au 08 in Melbourne next week, and Game Developers Conference 2008 in San Francisco in late February.

CAPSLOCK CANNOT EXPRESS MY GIRLY DELIGHT

For those of you who don’t already realise, my dream job since age six was to be a video games programmer. Having now achieved that, you’d figure I was now in for karmic mortgage payments for a while. And sure enough, having an umbilical hernia become quite painful on Friday night, 28th of December (I was working that day) would certainly seem to be within reach. I’d actually had the hernia for a couple of months, I reckon, but hadn’t known what it was or what to do with it. (I thought I was just getting fatter. -_-) Anyway, a mix of mentos, Coca-cola, lifting a heavy TV that week and who knows what else ended up with me spending the night in hospital on morphine. (Well, I dunno if I was on morphine all night. They gave me some) Thankfully, the surgeon registrar was able to push the bits of bowels sticking out back in (before the morphine. -_-) without problem, and no problems appeared overnight, so I’m now waiting for the letter to let me join the waiting list for surgery, and occasionally stopping to push bits of my bowel back through my belly-button.

This means I’m no longer a hospital virgin (not that I really was. I went to hospital when I was three years old or so, to get my forehead stitched up after falling off the wall above our driveway in Oyster Bay, Sydney) but it was a scare that I wouldn’t be able to go to LCA this year, having already booked and paid for it, and LCA being my main actual holiday each year.

Also, it was lucky my sister was in town, since when I told her where and how it hurt, her mind went straight to hernia, so she and my mother came over to check me out and took me to hospital, hours earlier than I would have gone myself.

Anyway, early last week I saw the surgeon consultant, and he said I’d be fine to travel, since the surgery was fairly far off in the future anyway (“several months” I believe) and as long as I don’t put sustained lateral strain on my abdomen, I’ll be fine.

He also said to lose weight, of course.

So yeah, I reckon that the hernia prolly balances out LCA, GDC, my job, and maybe even my paying off of the ATO this year. I hope the universe agrees, ’cause if I’m still in the red for those good things, I’ll have to be sure to backup my new laptop before I travel.

Things that happen when my brain gets full

I recently was linked to CCG Workshop which is a site where you can play collectable card games (CCGs) online. It’s interesting because they have this gatlingEngine software, which apparently runs the game for you using a set of rules in a gatlingML file.

I thought this would be a wonderful chance to document the rules for the Love Hina CCG, which I never finished translating as you can see, but the gatlingDevKit and all the developer documentation requires that you sign an NDA and suchlike.

Discussions on the forum (the developers talk openly on the public forum, so I have an idea what’s not under NDA ^_^) indicated the gatlingML files were XML, but when I got one while trying to play a game, it was quite clearly binary.

The first four bytes are !HZL which I thought looked really familiar, but it took a fair while before I clicked that that was “LZH!” backwards, LZH being the compression algorithm used in the LHA family of archivers. Of course, research indicated that none of the LHA family of archivers actually wrote a file with !HZL at the front.

Poking about some more, I noticed that the gatlingEngine is written in Delphi (and is legacy code anyway) and went looking for Delphi compression libraries. Thankfully, the vast majority do PKZIP-compatible compression, and the first one I tried that supported LZH compression was Tlzrw1. (Apologies for the quality of the link, the 1998 link in the read file is dead, and the Wayback machine record for it indicates that the author’s page didn’t mention the library anyway) So I note that the library in question attributes its LZH code to LZHUF.C which Google duly turns up for me. I change the code a bit to stop assuming a 16-bit word, handle the header at the front, and suddenly I have a utility which can encode and decode files compressed with the LZH mode of Tlzrw1. (Which has been ported to C# and Delphi.NET, Google tells me.)

Now of course someone needs the interest, gumption and skills needed to produce an open-source program that can process gatlingML files and run games from them. ^_^

Oh, and a cool thing: progress bar for cp, courtesy of Chris Lamb via Planet Debian.

Edit: Missing quote put a whole whack of text inside an <a>-tag.