Sunday, October 22, 2006

Serious Ubuntu bug finally fixed

I updated my system today and this bug has finally been fixed. This bug has been around for approximately 6 months and even though the cause was identified (in the way translation files were being generated) early it took a ridiculous amount of time to be fixed.

I really wonder why a bug of this severity (caused dd (at least) to segmentation fault) in a distribution marked as Long Term Support that was repeatedly reported from many users was not put to a higher priority. I hope there is a central bug triaging group in Ubuntu that lists and works to diagnose and fix the top 10 bugs.

Thursday, October 19, 2006

glChess 0.9.12

Made a new release because some users were hitting an exception when stock icons couldn't be found. If the icons aren't there now I just don't display them. Bonus new features: new/updated translations and support for UCI chess engines.

Managed software

I had always considered that Linux distributions were disadvantaged compared the commercial OSs because of the software installation procedures. Use case: a user finds some application on a web page they want to try. When the try to install they have to worry about multiple distributions, multiple versions, root access required... My first impression is bye-bye user.

BUT

I've been cleaning spyware off a number of peoples PCs recently and have come to realise that for low-tech users this is in fact a big advantage. By being able to pick software from a distribution provided list these users cannot install malicious software. Talking with a middle-aged couple showed there were key applications they wanted (e.g. Google Earth) and they installed other things (some of which were spyware) but wouldn't have been upset if they couldn't. They were used to Windows running slowly (due to the spyware) which meant they were used to a poorly performing computer. I expect this sort of user makes up a large population and would have a positive experience using Linux.

HOWEVER

The current distributions only provide a subset of available software. To provide access to the long tail of available software a user-rating/validating system is required. Idea: When a user downloads a file from the Internet the file is checked against a distribution provided list (using URI or hash etc). If the file is not on a white-list they get the option to install anyway and inform the distribution that they have installed. In this way the distribution knows what is being installed allowing a) files to be blacklisted and affected users to be informed and b) the distribution to know which packages they should include in the distribution repository. This of course has some privacy issues but most users can trust their distribution and always include an opt-out option.

Note there is a packaging format called Zero Install that if adopted would make installing simple.

Wednesday, October 11, 2006

GPL Battle Chess

Another fullscreen GPL chess client. Looks like this one is aiming for animation (i.e. Battle Chess). Compiles and runs well on my system.

Friday, October 06, 2006

glChess status

So I have gone through two glChess releases since the last release. 0.9.10 fixes a bug where upgrading users would hit a configuration exception. 0.9.11 is basically a big pile of polish. I've made 3D and Python imaging support optional which should make the user experience a lot better (at least it should half work on difficult systems). Lots of UI, theme and GUI integration changes too.

Oh and glChess has been accepted for inclusion in Gnome Games! I guess I really am fulfilling my goals from my first post. Yay!

Google Code Search

All ye bow down to our Google overloards... For from the mighty palace of computation comes Codesearch

Tuesday, October 03, 2006

Dreamchess

Dreamchess - another GPL 3D chess engine. As with most 3D clients I have seen it appears to be targeted at full screen users.

Monday, October 02, 2006

New glChess name

For 1.0 I think glChess should have a new name... It has been suggested to use a generic chess name like "Checkmate". The problem with this is generally these names have already been used. I think it's important for a project to have a name that stands out and it doesn't have to relate to the project (see Mesa).

So I was thinking perhaps "Looking-glass Chess". For those familiar with Lewis Carroll will get the reference. It feels a little bit of a mouthful, what do others think?

From a user-perspective this would only be in the about dialog and on the webpage. All menu references and window titles would just be "Chess" as Gnome started doing from 2.?. The binary has a character inversion from glchess to lgchess.

glChess 0.9.9 (2D support)

Here is what the new release looks like:



You can switch between 2D and 3D using the menu. Unfortunately the app still depends on OpenGL but in the next release it will disable the 3D option if OpenGL isn't present. These optional dependencies are going to create a testing issue - the plan is once 1.0 is present only make 1.0.x releases after a lot of testing using VMware player. More frequent but less tested releases will be released using 1.1.x.

This release also fixes a number of regression bugs. I have removed another accidental DBUS dependency and fixed the broken game saving. There are a number of changes to help in reporting bugs - the text output contains more useful information. The autosave feature should also work after exceptions are encountered.

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!