Tracker’s code style is to use tabs for indenting, and spaces for aligning. By default, Vim doesn’t handle that very well, and will use as many tabs as it can, before completing with spaces. I’ve been so far pretty lazy, but I’ve grown tired of manually indenting my function parameters. There is a script for that, and even a wiki page, but believe it or not, I never got the script to work. So guess what, I wrote my own :-) I hosted it here. The script has only one public function, SmartIndent, which is meant to be remapped to <CR> (return). I personally use it with that line in my vimrc:

inoremap <S-CR> <C-R>=SmartIndent()<CR>

The script is very basic and might have bugs, feel free to report them to me :-)

For some time now Tracker has got the ability to «writeback» changes, understand to replicate in the real metadata changes operated in Tracker’s store. For example, if I insert in the store “file X has title ‘foo'”, Tracker will try to write that information in the file’s metadata (ID3, OGG…).

So far, writeback has been more of a technological demo than a real feature, but I recently merged a taglib based writeback module which should make it more useful: that means Tracker can now writeback to almost all common audio formats out there.

Of course, if you want more writeback, you can always follow the guide, and write your own!

«Tanto tiempo», as they say in Chile (and probably in a lot of other Spanish-speaking countries)… My work on Tracker having been mostly “underground” (nothing released), I didn’t get to blog much. However, we’re beginning parts of my work merged, so that’s great news!

If you’ve not been living under a rock (or in a cave) for last few weeks, you might have heard that Tracker 0.8 was released. While the 0.7 releases had been usable for some time now, a stable release really marks a milestone. And guess what, it includes the TrackerMinerWeb class! For the user, that doesn’t mean anything. For the developer, it means writing miners using web services is a bit easier.

I’ve been toying with MeegoTouch (formerly called Dui) lastly, as you can see here. This short video shows a maemo interface commanding the Flickr miner, and associating it with the website. The Flickr miner itself is not merged yet, although I hope to merge it soon. Meanwhile, you can check the miner-web-review branch on tracker’s git repo. The documentation on how to manually associate the miner with Flickr is on Gnome Live. Hopefully we’ll see a Gnome interface soon, if you want to scratch that itch ping abustany on #tracker :-)

On another front, libtracker-client recently added the possibility to connect the writeback signal. That means it’s now much easier to write miners that not only mine (download) data, but that can also synchronize information the other way (from local to remote). And guess what? The Flickr miner does just that. When you tag a photo with Tracker, it’ll replicate the data on Flickr. It’s that simple.

And on another another front, my talk “Is your Gnome connected?” has been accepted for GUADEC! So if you want to learn more about a connected Tracker, you know where to go :-)

The imlib2 version shipped in Fedora 12 is the last released one, still it lacks a few fixes present in the latest SVN version. A particularly annoying one is the following: the shipped version will refuse to load an image if one of its dimensions is greater than 8192 pixels.

My photo gallery uses imlib2 to generate thumbnails, and it has panoramic photos wider than 8192 pixels. So far, it was failing when generating the thumbnails, imlib2 returning an “Unknown error” code.

It turns out that the SVN version of imlib2 has a more reasonnable limitation: it’ll refuse to load an image if its area is greater than 229 pixels.

You can grab the updated package here (my packages are not signed)

[Note: This is a “note to self” post, though it might help others]

To call base implementations in vala, use the “base” keyword (seems logical no ?)

class MySubclass {
    public MySubclass ()
    public override void frobnicate ()
        base.frobnicate ();
        do_other_things ();

I’m currently working on Tracker to enable connectivity with remote services like Flickr, Facebook, Twitter, etc. The aim of this work is to keep in Tracker all the metadata concerning your online data to allow presenting all your documents in a unified way, no matter where they’re stored. Actually, we can describe pretty much anything using RDF, so we can index photos, messages, documents, friendship connections, etc.

For those who don’t know how Tracker works (the others can safely skip this paragraph), we basically have a central RDF store (tracker-store) and a set of programs to import data into the store. These programs are called miners. Currently, Tracker ships with two miners, one for files and one for applications.

As part of this year’s GSOC, I introduced a new class of miners, the web miners. As you can guess, those miners connect to some popular social sites, to import data into Tracker. Most of the popular so called social websites provide an API which allows accessing their data in a pretty comprehensive way. However, not all share the same license terms when it comes to exploiting the information you get from them.

For the miners, Flickr, Twitter, and PicasaWeb are not problematic: we can download the information and keep it in the database. For Facebook however, it’s not so simple. Particularly, the section III 2. or their policy which states that “You must not give data you receive from us to any third party, including ad networks”. While it’s pretty clear that you don’t want your data sold to ad networks, I think this also prevents us from “redistributing” the data via Tracker to other software that would access the RDF database… And so makes the Facebook miner violate the terms of use.

Of course, I’m no legal expert and am maybe doing a bad interpretation of the Facebook policy, meanwhile we’ll disable the Facebook miner by default when it’ll be merged into Tracker master.

Well, now that I have a GNOME blog (woooo), I guess it’s time to start posting on it :-)

Because I guess a personal presentation won’t interest a great number of people, I’ll limit it to : “I’m a French student currently in Chile finishing his studies”. I might also add that apart from programming I’m also interested in cooking as other people do. I also take any occasion to go hiking in the mountains. OK, I said I’d keep it short, let’s cut here then.

Basically, I start this blog because my mom other people encouraged me to do so, and because hopefully some of the projects I work on are used by other people, and these other people might be interested in the evolution of these projects.

Currently, I’m working mainly on Tracker, adding support for web miners. Web miners are modules that connect to some popular web services like Twitter or Facebook and make your online data accessible in a standardized form by storing it in Tracker (to be exact, it only stores metadata, downloading everything would be painful and useless).

If you’ve never looked at Tracker 0.7, I encourage you to do so. It’s a really fine piece of software written by some bright minds (not sure yet if I include myself in this group :-p).

My work was started as a summer of code, and I am now in the process of integrating it into the master branch of Tracker, polishing APIs and user interfaces.

Since I’d like to keep this post short, let’s say I’ll post more information in the posts to come. Cheers to all the GNOME community, and thanks for giving me this blog :-)