Friday, September 29, 2006

An insight into software development at Google

Here is a very long but well written post about agile development (notice the small 'a'). It's written by a developer at Google.

My development style has always been very pick-and-mix. i.e. When I see some other developer doing something that works I tend to try that at the next available time. While I keep meaning to read formal Agile development books the above suggests I shouldn't bother.

Tuesday, September 26, 2006

Linux networking is driving me insane

Can anyone tell me what is wrong with this:

# ip route add 192.168.7.7 via 10.1.1.1
RTNETLINK answers: Network is unreachable


I want to route packets to a specific address to a specific gateway. I don't care if either of these addresses are known. As long as they are valid addresses attempt this route.

Linux routing (at least using the ip command) seems to love to second guess what you want. If it thinks it knows better then it damn well tell me why it can't do this. "RTNETLINK answers: Network is unreachable" is not an acceptable error.

Sunday, September 24, 2006

Creating Passionate Users

If you're a software developer if you're not already reading it then read Creating Passionate Users. Hell, any productive industry will do.

I think I picked the link up of one of the frequent rants on Luis Villa's blog. The law industry is in for trouble with this guy ;)

More Tetravex tinkering

Now I have finished scratching my last itch with Gnome Tetravex. Look at the perdy colours!



Basically I combined the Resistor colour code and the Tango colour palette. I think the colours are a little garish (the numbers could be softer) but I'll leave that for the more artistically inclined.

Friday, September 22, 2006

Friday, September 15, 2006

Stuff to watch out for

Here are some projects that I must try/use/keep an eye on. I normally see things like this whizz past on Planet Gnome but forget to bookmark them.

  • Hula - Open source email/calendar WWW server. Looks like it could be as good as Gmail/Google Calendar. (Novell)

  • Dogtail - Automatation framework for GUI testing (RedHat).



Oh and if anyone wants to pay me to work on cool open-source projects like this send me a message!

glChess... Now in 2D!

If glChess goes into Gnome games then I think it needs a 2D mode for those without fast 3D hardware. So after some shameless code stealing from pychess here is the prototype:



You can play a game and all - I'm suprised how easy it was to add in. The hard work now is making the UI able to switch and the rendering code to be efficient.

Oh and I guess I need a new name now...

Wednesday, September 13, 2006

Debian and Python

I've just got glChess to work under Debian Unstable (Sid). Details on the homepage.

This is all thanks to a guy called Guy for reporting it didn't install. I ended up getting Debian running under VMware player and found the issues. They are:

  • Debian doesn't have the Python version in their library package names. So where in Ubuntu we have python2.4-gtk2 Debian now has only python-gtk2. And this package contains the gtk2 bindings for both python 2.3 and 2.4. This seems silly because I can't specify (easily) that I want Python 2.4 and what happens when Python 2.5, 2.6 ... are released? What if you want to save space (e.g. on an embedded system) and drop all support for 2.3?

  • And the madness continues. Instead of putting all the non-core libraries in /usr/lib/python2.4/site-packages they now go in /usr/lib/python-support/python-gtk2/python2.4/. So even though you have only one library address space they're split across directories. Why? It just seems to be overly complicated and an easy way to have address space collisions. I had to rebuild the GtkGLExt bindings but this turned out to be as easy as replacing dh_python with dh_pysupport (I love you debhelper!)



So the long and short of it is I need seperate packages for Debian and Ubuntu. The glChess package only has different dependencies but the GtkGLExt bindings need to be built differently. *sigh*

MIMEfield

I've been working on registering glChess as the PGN file mime-handler. I'd heard legends on how much of a mess the whole MIME thing was (and how it was getting better with freedesktop.org). Well there's certainly a lot of MIME stuff around.

Freedesktop.org has a spec on detection that seems quite good. Unfortunately registration for programs to execute this mime type is elsewhere and so are the icons for this type. Interestingly the mimetypes/ directory in the icon schemes doesn't just contain image files with the mime type name (correct me if I'm wrong!). So you have to register a mime type to an image name which seems redundant. Freedesktop.org also seems to be working on at least some of these issues.

I was just googling my references and I think I want to read this.

In the process I've found a bug in the freedesktop.org MIME database or Nautilus (or both) - PGN files don't get detected as application/x-chess-pgn so Nautilus wont suggest glChess to execute them. It took me a long time to realise update-mime does not update the database Nautilus uses (use update-mime-database /usr/share/mime).

Oh and if anyones noticed there's still a rogue import dbus in glChess 0.9.8. It wont cause any problems if you have the python dbus bindings but it's an unintended dependency that will not be in 0.9.9.

Tuesday, September 12, 2006

Whoops.

0.9.8. Had some DBUS/Avahi networking code enabled by accident in 0.9.7.

Sunday, September 10, 2006

glChess 0.9.7

New version!

This mostly came about when I actually decided to try playing a game. Turns out somewhere along the line I buggered up the logic with the AIs and they could no longer play as black. And this led onto some long-standing AI issues that had been bothering me...

1. The GUI now contains a dialog of AI communication - this should make debugging much easier.
2. When glChess quits it sends signal 9 to the AIs if they don't die in 500ms. This is a bit of an ugly hack (see cecp.py) but I can't find a logical system command to do this.
3. When glChess crashes it kills the AIs. This was a big problem as GNUchess goes off into la-la land and eats 100% CPU when its controller dies (you notice the battery dissapearing on a laptop!). I need to add a GUI dialog to show the stack trace now. After a crash the game is saved too which is good.

Oh, and this all got triggered by me adding support for the Phalanx chess engine. From small things...

Note to self: REFACTOR, REFACTOR, REFACTOR!