Showing posts from 2007

Hardware hacking

I recently rekindled an interest I have in fooling around with hardware. I bought myself a USB I/O device from Elexol, a local electronics supplier, and with a lot of junk from Dick Smith Electronics I've managed to control some LEDs from my Linux box - an awesome feat I'm sure you'll agree - all without doing any soldering. This makes my wife happy (did I mention I got married?), who is somewhat afraid the soldering iron will burn down the house one day. It also means I can pull apart old projects to make new ones without making a big mess or having to buy new components.

Went to Jaycar Electronics and bought a 10-pin connector and some ribbon cable. Here's a shot of my board looking a bit neater. While there I also bought some push button switches which I'm sure will come in handy.

At the Wirefly X-Prize Cup

As I happened to be in Orlando, Florida on my honeymoon, my lovely wife gave me permission to fly out to New Mexico attend the Wirefly X-Prize Cup. I arrived around 9am to discover that the first attempt by Armadillo Aerospace to win the Northrop Grumman Lunar Lander Challenge was scrubbed due to a clogged fuel igniter. The second attempt was after lunch and everything went great for the first leg of the flight. Refueling appeared to be going fine when the announcers reported that there appeared to be another clog in a fuel line. This was reported to have been cleared, and the flight appeared to go fine. Due to a requirement of the prize the vehicle has to hover over the landing pad until 90 seconds of flight time is complete. During the last 7 seconds of this hover the vehicle fell. When the dust cleared the module was lying on its side. is reporting that the dust may have been the problem. We won't know until Carmack makes a report.

Jason Silverman from Wired S…

FreeSynd version 0.2 released

The never ending effort to recreate a game from 1993 continues. There's now nine developers in the project and none of us do much. Every now and then I get bored and fix something.. go to check it in and discover that, shock, someone else has checked something in too! Then I have to update and resolve conflicts. Take the good with the bad I guess.

Anyway, in release 0.2 you will be happy to discover that we have done some work to get sound faithfully reproduced. For a while, we were focusing on music and trying to get the SDL midi synthesiser to play back this ancient XMIDI format. Believe it or not, this was actually acheived. Slight problem though, Syndicate used custom instruments. This was not uncommon at the time. The result was that the music just didn't sound good.. but it was good enough to ignore for a while.

Having declared that I wasn't going to touch sound.. I got bored one day and changed my mind. I told myself that I really ment I wasn't going to …

Boomerang 2

I was recently asked what I would do differently if I was writing a decompiler from scratch today. Having worked on decompilers for the past 9 years myself and worked with others who have worked on decompilers for longer still, I like to think we now know enough about it to recognise some of the mistakes we've made and identify some areas of improvement.

The primary difficulty of decompilation is that most analysis requires interprocedural information. Most everyone recognises this need early on so there's an assumption that you need to keep the intermediate representation for the entire program in memory at the same time. For many years we've had a hell of a lot of memory to play with (4 gig will be standard on desktop PCs next year) and with 64 bit architectures and virtual memory you can swap to disk for as much memory as you need. So it would appear that structuring a decompiler like a compiler, with intermediate disk formats for each compilation module is unnecessa…

Almost Have A Game Engine Here..

What's the most annoying thing about trying to write a game engine? Ohh, I'm spoiled for choice, ok, I think the most annoying thing is getting together some half decent looking art so you don't go insane testing your engine with stick figures. Well, I recently came up with an interesting solution.. why not use some existing art from one of your most favourite games?

You may note, I've done this before. This time, I picked a game that is a little more recent, but not too recent, GTA3. No, not Vice City, not San Andreas, but those two are the same engine, just updated some.

As I've mentioned before, I have a liking of the OGRE graphics engine. So the first order of business was to get the models out of GTA3 and into OGRE's mesh format. The format used by GTA3 is the Renderman DFF file format. The individual dff files are concatenated together in the models\gta3.img file, which is indexed by the models\gta3.dir file. There's plenty of tools around to ex…

It's better than a binary only driver..

Recently, Greg K.H. made an offer to write free linux kernel drivers to any company that will provide him with docs to their hardware. Some BSD folks had a problem with Greg making this offer to people who would only give up their docs if the developer signed an NDA. Theo de Raadt chimed in declaring that "it is a fucking farce", which is his usual way. As far as they are concerned, an open source driver without docs is not open at all. That may be so, but I still think having source code.. any source code.. which actually works, is better than having no docs or source code.

It would be nice if companies would hand over docs without an NDA.. that is certainly preferable for everyone.. but some of them just won't, and getting them to hand over docs under an NDA with the ok for someone to write a free driver (be it GPL or BSD licensed) - that's something and it shouldn't be ignored.

Now, if companies start doing this and drivers start showing up as GPL, but witho…

Distributed vs Centralized revision control

In the last few years we've seen the rise of the so called distributed revision control systems. These are, essentially, tool support for maintaining your own personal version of an open source project.

Let's take, as an example, the WINE project. They use Git, the same version control system as the Linux kernel. Suppose I have a favourite application that I would like to run using WINE. There might be some things that my app requires which WINE doesn't yet support. I don't mind implementing these things, but I really couldn't be bothered going through the hassle of satisfying every whim of the WINE developers (how they like their patches submitted, how they like their changelog written, etc).

What happens when WINE releases a new version which I want to upgrade to? Do I keep an entire source code tree around just to run my favorite app? What if I have more than one favorite app? Git lets me update my source code tree and merge any updates that conflict wit…

People that provide rpm files, but not tar.gz/tgz files, should be shot. Typically this isn't so much of a problem, as I can use alien on my debian based distro to convert an rpm into a deb, but I'm in the road right now and don't have access to a machine with that. So, after struggling to get the rpm utilities installed on a naked linux box, where I didn't have root, I've decided that enough is enough. I figure what I need is a web site where I can submit the rpm and it will create a tar.gz for me (ala And I figure that other people need this too. So I've sucked up the cost and done it. Here it is:

Of course, I've put a lot of Google ads on the site. Hopefully this will give me enough income after a year to cover the renewal of the registration and the hosting. Otherwise I might just let it lapse.