25 November 2003


Final year project talks

Didn’t get a good nights sleep last night because of the boys, so ended up at the University of Canberra final year project presentations. The most interesting was the one which extended on the final year project I was involved in last year, but there was also some work on mobile phone transmission simulation, a playstation 2 game (using the amateur Linux developer’s kit), and a remote robot control system.


Thinking about the conference paper I have to give.

PDF conferences

Trying to decide if I should apply to present something at a local PDF conference next year.


The making of Twinkle Tux


This page documents how I built a penguin out of fairy lights…

Tux is the official mascot of the Linux operating system, to which I have made various contributions over the years. Tux was originally drawn by Larry Ewing, and looks something like:

The goal was to turn this into something which worked well with fairy lights poked through holes in a piece of MDF. I guess I was thinking of pointillism when I originally came up with the idea.

It seemed like a good idea, but the bit which worried me the most was to ensure that the image was clearly a penguin at the end of drilling several hundred holes in a big bit of dead tree. Being a software engineer, the obvious solution was to whip up something which could simulate Twinkle Tux.

Taking the image that I had in mind, I first needed to force it into the colors which were available to me from fairy lights (red, green, blue, and yellow in the set I wanted to use). I therefore wrote a program which generated a false color Tux, in my restricted palette. This is the code I came up with, if you care about such things. You should note that it’s a quick and dirty, not an example of good coding style.

My false color Tux looked like:

You can see that he’s clearly still a penguin. Next, this image is too big, so I used a command line tool called convert, from the ImageMagick suite, to shrink it. If you’re interested in ImageMagick, you should checkout my IBM DeveloperWorks article on the issue.

Here’s the tiny penguin I ended up with:

Now, this is not so clearly a penguin, so I used the GIMP to touch up the image. Here’s the small version, and a bigger one so you can see what I was doing…

You can see that this is where the border got added as well. Now, this doesn’t look all that impressive, but it looks better with fairy lights because they’re not square. The final coding step was to decide if this was going to be clearly a penguin when do with fairy lights. I therefore whipped up a fairy light simulator, complete with alpha blending. You can get the code here, with the same proviso as above, and noting that this code also needs my libmplot graphics library.

Here’s the simulation:

We should note that it’s mildly deceptive because it assumes that all colors of fairy lights are equally bright. This simulation also looks better if you step back from your monitor, which is a lot like standing at the far end of my driveway.

So, how many lights am I going to need? The simulation assures me:

Number of lights used: 707 (146 red, 178 green, 184 blue, 199 yellow)

That’s a lot of lights. 240 colored lights (60 of each color) costs $14.95 at Woolworths, but I need the right number of each color. In total, I need to buy 4 sets of colored outdoor fairy lights.

Finally, I needed a computer generated image to serve as the cutting pattern. A simple hack to the lights code gave me:

Now I could move onto the dead tree part of the process. To get the cutting pattern onto the wood, I used a mate’s video projector to project the picture above onto a big bit of paper taped to an old door in my garage.

I then laid this over a pre painted bit of MDF, and could start cutting. It became pretty clear that I needed to drill small pilot holes with the bit of paper — the larger holes destroyed the paper too quickly. After a couple of hours of drilling, and several worn out drill bits, I ended up with the finished wooden sheet.

You can see in the next pictures that I had some problems with the MDF flaking away on the back side of the wood. This caused some concern for a while, but it doesn’t seem to have been a major issue. Next time I wont use MDF.

Next I inserted the fairy lights, minus their globes. The lights are siliconed into place, which should hold them in nicely.

Next I inserted the globes, using the simulation above as a reference to what color to use where.

A last, I could actually see what the finished product would look like:

That picture was taken with Twinkle Tux on my workbench in the garage, with one of my sister in laws holding it up. Now to hang Twinkle Tux.

I ended up bolting Twinkle Tux to the front of the garage, which gives us the following pictures of it at it’s final resting place.


19 November 2003


stillhq.com down

My ISP, Goldweb has suffered some form of catastrophic failure, and is offline (they have been for nearly 24 hours at this point). I’ll wait to see what the damage is.

Update: they’re back, and they even managed to not lose any data. Well done guys. It turned out to be a disc failure.

Twinkle Tux

So, I’ve been playing with something I call twinkle tux. I don’t want to say any more just yet.


17 November 2003


Back at work

After my three weeks leave. Doh! To make it worse, the hard disc in my Toshiba blew up just before I left (it was an IBM disk, say no more), so now I need to spend most of today rebuilding my world.


14 November 2003


Cooking salmon

Last night I cooked with fresh salmon for the first time. I did it on the barbeque. The basic method was:

  • Preheat the barbie on low
  • Lightly butter the side of the salmon you’re going to cook first
  • Chuck the salmon steaks onto the grill part of the barbie
  • Wait three minutes
  • Rotate 90 degrees
  • Wait two minutes
  • Lightly butter the side that is facing you
  • Flip
  • Wait two minutes
  • Eat

Here’s a sample of how mine turned out:

Syncing FAT filesystems of MMC cards via USB

Why does it take so long? A 64 MB change took in the order of minutes to respond to a sync command.

Siemens SL42 MP3 playlist format

Creating the playlists for the inbuilt MP3 player for my Siemens SL42 is painful at best when you try to use the phone keypad. Basically, there’s no way to say “randomly play everything” unless you use a playlist, and to create a playlist with the phone you need to select each song individually. Anyways, so I mounted the MMC on my trusty laptop, and it turns out the playlist format is trivial. Here’s what I did:

mount /mnt/mmc
cd /mnt/mmc/mp3
rm aaa.mpl
for item in `ls *.mp3`
  echo $item >> aaa.mpl
unix2dos aaa.mpl

In other words, all you need is a DOS line ending file which lists the MP3 files to play.

AUUG National Committee meeting

In Sydney…