GTK+ website redesign finally finished!

I have blogged about this from the official GTK+ blog too, but I wanted to really say personally how happy I am that this is done now. Really great work from Devin Samarin especially with the gtk-doc integration which looks like an extension of the main website instead of a separately maintained project.

If anyone has any comments on how to improve the content, don’t hesitate to get in touch with me, Devin Samarin or Javier Jardón (who also has been helping out on the website side more recently).

Tracker Update

Roadmap to 0.7

While I was at the desktop summit, I decided to come up with a roadmap so we all had something to work to for the 0.7 unstable release which we are hoping to do soon. The roadmap is on here:

As you can see, it is progressing nicely.


The configuration system in Tracker has always consisted of one TrackerConfig inheriting from a GObject and used to load/save applying the GKeyFile API. The problem we found here, is that we really want configurations to be more fine grained to specific binaries. Some of the options (like log verbosity) would apply to ALL binaries that use the config otherwise. So now we have TrackerConfigFile as a base class with tracker-object-keyfile.[ch] to do some utility functions for us in libtracker-common and all binaries that want their own TrackerConfig with object properties now inheirt from TrackerConfigFile. This is quite nice because it reduces the code duplication we had and now we have a nice set of separate config files in $HOME/.config/tracker/.

With 0.6. we also had this concept of “modules” which would be for each type of data we wanted to track. We had “files”, “applications”, “email”, and some others… These modules also have a configuration pertaining to how to index their data. Things like globs for including and ignoring certain files. There are also options to make sure data isn’t indexed too regularly (which was needed for some content that was constantly updating). All of this is in the process of being revised and merged with the TrackerConfig machinery. This mostly applies to the “files” module though. The module config and module code (which was a complex GModule implementation) is all going to be simplified now that we have separate binaries for mining each data we are interested in.

Album Art

This was quite a mess before. We had code in different places for this. Over the past week or so I have cleaned this up too. Now we do all album art downloads and extraction from the tracker-extract binary (called from mp3 and gstreamer extractors when they see media with such content). Before we would request thumbnails for the new art in tracker-extract, but due to the unstable nature of tracker-extract (based on dynamically loading modules using 3rd party APIs we can’t guarantee the stability of) we were always at risk of failing to queue new thumbnail requests to the thumbnail daemon if we had a crash. We only send thumbnail requests AFTER all indexing has been completed, if we don’t do this, we suffer with severe performance problems. Now all thumbnail requests are done from one place, the tracker-miner-fs and the albumart functions are no longer spread across libtracker-common and tracker-extract. They are just in tracker-extract.

Volume Support

Over the past few days Carlos re-added volume support to Tracker so now using a simple query, you can find out if your data on that MMC you just inserted or removed is available.

So, to get a list of ALL data objects and their availability (which is true or false based on if the media is mounted or not) you can use:

$ tracker-sparql -q "SELECT ?do ?av WHERE {
                            ?do a nie:DataObject ;
                            tracker:available ?av }"

You can also get a list of all data objects which are NOT available. To make things faster, we have not included “available” for EVERY item, only where items are available. This makes updating the tables a lot faster. So when looking for files which are not mounted, the query becomes a bit more complex:

$ tracker-sparql -q "SELECT ?do WHERE {
                            ?do a nie:DataObject .
                     OPTIONAL {
                            ?do tracker:available ?av } .
                     FILTER (! BOUND(?av)) }"

Of course the most common use case is, tell me files which are available, which can be done with:

$ tracker-sparql -q "SELECT ?do WHERE {
                            ?do a nie:DataObject ;
                            tracker:available true }"

We are still fine tuning the volume work to be faster but things are coming along swimmingly!

GTK+ blog & site improvements

Recently I set up a new blog for GTK+ to document releases and for people to blog about cool new things in GTK+. So far, there is just Andreas and myself on the blog. So if anyone else wants to be added just let me know your blog email account and I will set it up. If you have been missing the GTK+ project news, don’t forget, it can be see at, it is not shown on the regular

Andreas has been doing a great job chasing up some final issues on, mainly with regards to the language bindings. Andreas has now removed all bindings that have no support for 2.6 and above and all bindings which are supported by GNOME are illustrated nicely too. So, if your language binding isn’t listed there and you know it is supported, please let us know on the gtk-devel list so we can rectify the pages!

Finally, gets face lift!

I started working on the new design for last April and tonight the new pages were uploaded and we now have a spiffing new look which I am really happy with.

I want to thank Andreas Nilsson for helping out with the design and Tim Janik for help with the final touches in getting the pages installed, not to mention everyone who commented. revamp

Browser Thumbnails, Site Change & Updated Gallery

Browser Thumbnails

Recently I decided to try IE7, since I was so pissed off with IE not supporting PNG transparency and the CSS problems compared to other browsers. The reason was to see if I should be bothered about making my home page fully compatible with IE7 or not.

In the process, I discovered that IE7’s beta 2 has support for thumbnailing pages you are currently visiting (which is pretty cool) and then I read an announcement regarding Opera’s latest and greatest supporting it too. After trying out IE’s new feature, I thought it was superb, until I found out about Reveal (a Firefox extension) which does exactly the same thing. The best thing about the Revel is that it is overlayed onto the current page you are on, instead of having to switch to another tab (as you would in IE). Plus it allows you to search all pages so you can quickly find the one you want to switch to! Well impressed!

Site Change

It is time to renew my site and I decided that the name was pretty crap, so came up with another one 🙂

Updated Gallery

Not a great deal of new stuff really, and mostly family related due to the high number of birthdays this time of year and of course we have just had Christmas, but there are some scenic shots:

I think Sue is getting tired of me taking pictures of her with the new camera though:

Updated Photo Gallery

Gallery Update – I updated my gallery to include images from recent trips to Bressingham Steam & Gardens and todays trip to Framlingham Castle. Considering the weather on the trip to Bressingham was a little dull, I am surprised the photos came out so well.

Google Maps API – I saw some of the potential of this with what Ross did here. I love it. Someone pointed out to me the other day that Multimap show the ordinance survey over the top of an aerial view when moving the mouse over an area. – That is quite impressive too.