Hmrrr
February 7th, 2010In line with what I usually do at conferences, I lost my glasses at the GNOME Beer event this year. If somebody found it, and maybe even has it, please let me know. It’s kinda hard to see presentations without it.
In line with what I usually do at conferences, I lost my glasses at the GNOME Beer event this year. If somebody found it, and maybe even has it, please let me know. It’s kinda hard to see presentations without it.
This is to let Rob Taylor and David Schlesinger know that they better start organizing S.M.A.S.H.E.D.
Not all discussions are easy. If discussions were to be easy, the bar wouldn’t be high enough for your bullshit filter to be effective here.
During dark hours of discussions the nineties syndrome of wanting immediate results plays its role among spectators: It’s not a popular job to be a dissident. It’s not popular to be critical about a (the leader of a) popular idea. This is illustrated by the intellectually absurd criticisms David Schlesinger receives.
Yet is the critic who monitors the organs of a society key to that organ either producing for its stakeholders, or failing and dragging the entire society it serves down with it.
In Western Europe we traded Kings and Popes for a government that is held accountable by an opposition. Many countries and cultures adopted this system of governance. That’s because it undeniably works. If you have a better system in mind, that can be put to the test, please come forward.
It is good that the GNOME foundation board has decided to increase the amount of surveys. But I have one request which I didn’t succeed in raising before the end of last year:
Although I accept the decisive role a group of leadership has to take, I want foundation board members and employees to be held accountable for the decisions they make. Especially the ones where they go against the results of such a survey.
But this is not up to me.
*edit* They are showing an old episode of Married with Children on TV, I’ll be back in half an hour!
This is the kind of stuff that needs a forward on the planets:
From: Roberto -MadBob- Guido
This is just an update about tracker-miner-rss effort, already mentioned in this list some time ago.
Website, SVN, Last release (0.3)
Since 0.2 we (Michele and me) have just dropped dependency from rss-glib due some limitation found, and created our own Glib-oriented feeds handling library, libgrss, starting from the code of Liferea and adding nice stuffs such as a PubSub subscriber implementation. At the moment it is shipped with tracker-miner-rss itself, in the future may be splitted so to easy usage by other developers.
Next will come integration with libchamplain to describe geographic points found in geo-rss enabled feeds, integration with libedataserver to better handle “person” rappresentation (suggestions for a better PIM-like shared library with useful objects?), and perhaps a first full-featured feed reader using Tracker as backend.
Enjoy :-)
Roberto is doing a demo on FSter at FOSDEM during our presentation. My role in the presentation will be light this year. I decided to give most of the talk away to Rob Taylor and Roberto. I will probably demo Debarshi Ray’s Solang and if time permits his work on the Nautilus integration. Regretfully Debarshi can’t come and so he asked me to do the demo.
Thank you for trying to forbid the burka. I hope my country will also forbid it. We need to protect (but not overprotect) the women of Muslim cultures, cultures who are massively migrating to Western Europe at this moment, against the oppressive anti-woman and religious nature of the burka.
I don’t believe, at all, that the burka is an expression of free speech. I believe it’s an instrument to oppress woman, and that this is its only purpose. There is no place for that in Western European culture. None. And we must be assertive about it.
I’d also like to ask Muslim countries to stay out of the debate: we decide about Western European values, you don’t. Equality between men and woman is a Western European value. If you don’t like that, sorry, it’s not negotiable.
For the last few weeks has Debarshi Ray contributed to Tracker’s Nautilus plugin and worked on Solang, a photo manager that will start using Tracker’s SPARQL capability to get a language to query for metadata about the photos and the photos themselves.
Debarshi explains it all very well himself on his own blog.
We’ll probably do a lightening demo during our Tracker presentation at FOSDEM about how Solang did this integration. We’re also planning to demo the code of a few other applications that are working on integrating with Tracker’s store.
Somebody should port Solang to the next version of Maemo!
Two posts ago I wrote that something like The Real news is quite unique in the U.S.’s completely broken media.
Today I found an interesting double interview on AlJazeeraEnglish by Riz Khan titled Has the mainstream media in the US replaced serious coverage with “junk news” and tabloidism?
Brzezinski
In the third segment of The Real News‘ interview with Dr. Brzezinski, Paul Jay asks him about Israel’s threat to bomb Iranian Nuclear facilities and the American strategy towards Iran.
Brzezinski talks about how this might force the U.S. out of the region in the short term, how it would affect the price of oil, how the U.S. would be militarily involved and how the U.S. would be alone in this. And what the fundamental consequences for Israel would be.
You can find all three parts of the interview and their transcripts here:
Politics, skimming facebook
It’s Sunday so I skim Facebook a bit. I came across Lefty’s link to a 100 quotes every geek should know blog. Artwork like humor often represents a philosophy. I think this first quote on that blog is a very good meme, also for foundation boards:
Strange women lying in ponds distributing swords is no basis for a system of government. Supreme executive power derives from a mandate from the masses, not from some farcical aquatic ceremony.
— Dennis the Peasant, Monty Python and the Holy Grail
I’ve been watching The Real News for some time now. It claims to be “the real news” but the reality is that it’s fairly left-wing pro-unions most of the times. Most of their documentaries and interviews are very interesting, though. Nor do they make it difficult to filter out their own bias. It’s quite unique in the U.S.’s completely broken media to have something like The Real News.
This week they are interviewing Brzezinski. People who know Brzezinski, know that that’s a huge interview for them. Watch part one of the interview. Knowing The Real News, part two will probably be released in a week.
Hello Astronomers
it is Solstice.
(this from Wiki)
Of the many ways in which solstice can be defined, one of the most common (and perhaps most easily understood) is by the astronomical phenomenon for which it is named, which is readily observable by anyone on Earth: a “sun-standing.” This modern scientific word descends from a Latin scientific word in use in the late Roman republic of the 1st century BC: solstitium. Pliny uses it a number of times in his Natural History with the same meaning that it has today. It contains two Latin-language segments, sol, “sun”, and -stitium, “stoppage.”[2] The Romans used “standing” to refer to a component of the relative velocity of the Sun as it is observed in the sky. Relative velocity is the motion of an object from the point of view of an observer in a frame of reference. From a fixed position on the ground, the sun appears to orbit around the Earth.[3]
To an observer in inertial space, the Earth is seen to rotate about an axis and revolve around the Sun in an elliptical path with the Sun at one focus. The Earth’s axis is tilted with respect to the plane of the Earth’s orbit and this axis maintains a position that changes little with respect to the background of stars. An observer on Earth therefore sees a solar path that is the result of both rotation and revolution.
The component of the Sun’s motion seen by an earthbound observer caused by the revolution of the tilted axis, which, keeping the same angle in space, is oriented toward or away from the Sun, is an observed diurnal increment (and lateral offset) of the elevation of the Sun at noon for approximately six months and observed daily decrement for the remaining six months. At maximum or minimum elevation the relative motion at 90° to the horizon stops and changes direction by 180°. The maximum is the summer solstice and the minimum is the winter solstice. The path of the Sun, or ecliptic, sweeps north and south between the northern and southern hemispheres. The days are longer around the summer solstice and shorter around the winter solstice. When the Sun’s path crosses the equator, the days and nights are of equal length; this is known as an equinox. There are two solstices and two equinoxes.[4]
We used to observe and celebrate this event widely, the Romans moved the birth of Christ to Solstice to usurp it .
Now people celebrate fiction instead of fact ..unless your an Astronomer that is.
Praise the Laws and Happy Solstice.
ps. I think Solstice was yesterday, but oh well..
The discussion with Richard Stallman ended with requested silence.
I’d like to ask people to use the following meme for future such discussions:
La pensée ne doit jamais se soumettre, ni à un dogme, ni à un parti, ni à une passion, ni à un intérêt, ni à une idée préconçue, ni à quoi que ce soit, si ce n’est aux faits eux-mêmes, parce que, pour elle, se soumettre, ce serait cesser d’être.
– Henri Poincaré, University of Brussels (1909-11-19)
As for the conclusions. I believe this survey result and this analysis are conclusive.
I would like to dedicate this moment to this version of Metallica’s Nothing Else Matters.
Jono, our Metal fan, probably agrees with me that even the toughest person in the world of Metal can be brought to his knees, crying.
It’s a moment of reconciliation. What is it that we want?
I think more than ever, we do understand each other.
I don’t know.
This style of subqueries will also work (you can do this one without a subquery too, but it’s just an example of course):
SELECT ?name COUNT(?msg)
WHERE {
?from a nco:Contact ;
nco:hasEmailAddress ?name . {
SELECT ?from
WHERE {
?msg a nmo:Email ;
nmo:from ?from .
}
}
} GROUP BY ?from
The same query in QtTracker will look like this (I have not tested this, let me know if it’s wrong Iridian):
#include <QObject>
#include <QtTracker/Tracker>
#include <QtTracker/ontologies/nco.h>
#include <QtTracker/ontologies/nmo.h>
void someFunction () {
RDFSelect outer;
RDFVariable from;
RDFVariable name = outer.newColumn<nco::Contact>("name");
from.isOfType<nco::Contact>();
from.property<nco::hasEmailAddress>(name);
RDFSelect inner = outer.subQuery();
RDFVariable in_from = inner.newColumn("from");
RDFVariable msg;
msg.property<nmo::from>(in_from);
msg.isOfType<nmo::Email>();
outer.addCountColumn("total messages", msg);
outer.groupBy(from);
LiveNodes from_and_count = ::tracker()->modelQuery(outer);
}
What you find in this branch already supports it. You can find early support for subqueries in QtTracker in this branch.
To quickly put some stuff about Emails into your RDF store, read this page (copypaste the turtle examples in a file and use the tracker-import tool). You can also enable our Evolution Tracker plugin, of course.
ps. Yes, somebody should while building a GLib/GObject based client library for Tracker copy ideas from QtTracker.
Coming to you in a few days is what Jürg has been working on for last week.
Yeah, you guess it right by looking at the query below: subqueries!
This example shows you the amount of E-mails each contact has ever sent to you:
SELECT ?address
(SELECT COUNT(?msg) AS ?msgcnt WHERE { ?msg nmo:from ?from })
WHERE {
?from a nco:Contact ;
nco:hasEmailAddress ?address .
}
The usual warnings apply here: I’m way early with this announcement. It’s somewhat implemented but insanely experimental. The SPARQL spec has something for this in a draft wiki page. Due to lack of error reporting and detection it’s easy to make stuff crash or to get it to generate wrong native SQL queries.
But then again, you guys are developers. You like that!
Why are we doing this? Ah, some team at an undisclosed company was worried about performance and D-Bus overhead: They had to do a lot of small queries after doing a parent query. You know, a bunch of aggregate functions for counts, showing the last message of somebody, stuff like that.
I should probably not mention this feature yet. It’s too experimental. But so exciting!
Anyway, here’s the messy branch and here’s the reviewed stuff for bringing this feature into master.
ps. I wish I could show you guys the query that we support for that team. It’s awesome. I’ll ask around.
We all woke up with a broken debian testing this morning.
You fix it by removing /boot from the Grub entries. You type ‘e’ and then you go to the vmlinuz line, and you remove “/boot” from that line.
Thanks Debian guys! Remember that normal people would have reformatted their computer and called debian “junk”. You’re even making the software developers nervous. We install debian testing because we don’t like Ubuntu’s broken upgrades. You don’t have to copy this.
Cheers.
ps. I of course understand that testing != stable. But still, Grub? That’s a drastic way to make your point about Debian testing being unstable :-)
Edit: Apparently I was on unstable for the system where this failed. That might explain it.
Whoohoo!
We just committed the support for write back in master.
What is it?
Tracker has a limited capability to write metadata back into the data resource. In case of a file that means writing it back into the file. For example writing some of the metadata the user sets using a SPARQL Update back into an MP3 file as ID3 tags.
Which ones do we support already?
Right now the write back capability is under development and only supports a bunch of fields for a few XMP formats (JPEG, PNG and TIFF) and the Title of MP3 files. In near future we will start supporting increasingly more fields.
Documentation?
For people who want to write support for their properties and file formats, read the documentation.
Party like it’s 2009!
Looks like I found myself a book that I need to read someday:
But it could be that we, who are earth-bound creatures and have begun to act as though we were dwellers of the universe, will forever be unable to understand, that is, to think and speak about the things which nevertheless we are able to do. In this case, it would be as though our brain, which constitutes the physical, material condition of our thoughts, were unable to follow what we do, so that from now on we would indeed need artificial machines to do our thinking and speaking.
– Hannah Arendt, The human condition (prologue)
At GCDS Jamie told us that he wants to make a plugin for tracker-store that writes all the triplets to a CouchDB instance.
Letting a CouchDB be a sort of offline backup isn’t very interesting. You want triples to go into the CouchDB at the moment of guaranteed storage: at commit time.
For the purpose of developing this we provide the following internal API.
typedef void (*TrackerStatementCallback) (const gchar *graph,
const gchar *subject,
const gchar *predicate,
const gchar *object,
GPtrArray *rdf_types,
gpointer user_data);
typedef void (*TrackerCommitCallback) (gpointer user_data);
tracker_data_add_insert_statement_callback (TrackerStatementCallback callback,
gpointer user_data);
tracker_data_add_delete_statement_callback (TrackerStatementCallback callback,
gpointer user_data);
tracker_data_add_commit_statement_callback (TrackerCommitCallback callback,
gpointer user_data);
You’ll need to make a plugin for tracker-store and make the hook at the initialization of your plugin.
Current behaviour is when graph is NULL, it means that the default graph is being used. If it’s not NULL, it means that you probably don’t want the data in CouchDB: it’s data that’s coming from a miner. You probably only want to store data that is coming from the user. His applications won’t use FROM and INTO for their SPARQL Update queries, meaning that graph is NULL.
Very important is that your callback handler works with bottom halves: put your expensive task on a queue and handle the queued item somewhere else. You can for example use a GThreadPool or a GQueue plus a g_idle_add_full with G_PRIORITY_LOW callback picking items one by one on the mainloop. You should never have a TrackerStatementCallback or a TrackerCommitCallback that blocks. Not even a tiny tiny bit of blocking: it’ll bring everything in tracker-store on its knees. It’s why we aren’t giving you a public plugin API with a way to install your own plugins outside of the Tracker project.
By the way: we want to see code instead of talk before we further optimize things for this purpose.
While you guys are all wondering who he is, we in Belgium are wondering who’s going to replace Herman Van Rompuy as our prime minister.
He’s the only prime minister who managed to give Belgium non-chaotic federal politics, for a few months.
I fear that Belgium will now plunge into a new political crisis. Not because the former prime-minister, Yves Leterme, is a bad one, but because the Walloons simply don’t want him. We know they’ll do everything in their power to discredit Yves. Especially their media will. Le Soir already publicly said that they’ll “veto” Yves Leterme as prime minister. As if a newspaper elects ministers. Arrogance.
If the price for delivering the first president of Europe is that we must pay with a new political crisis, I guess that we are so used to politic crisis that it’s okay. We’ll survive. You guys can have him.
He’s quite intelligent. He’s not a media guy. We don’t know more about him ourselves. Use wikipedia.
The real bad thing about Herman is that in the past he let religion influence his politics. He was for example against abortion laws. And he is against Turkey joining the union because of religious differences.
However. For the people from the United Kingdom: fuck your conservative tabloid magazines. To the idiot editors of those tabloids: discrediting Van Rompuy was easy, still you guys screwed up with retarded articles about Belgium.
ps. I don’t care that you don’t want politics on planet.gnome. It pulls from my blog, so ask the administrators of planet.gnome to pick the right categories. I say this because I know that people will otherwise comment about it. I want them to know that I don’t care.
Today, I feel like exposing you to some bleeding edge development going on as we speak at the Tracker team. I know you’re scared of that and that’s precisely why I want to expose you! Hah.
We are prototyping writeback support for Tracker.
With writeback we mean writing metadata that the user passes to us via SPARQL UPDATE into the file that he’s describing.
This means that it must be about a thing that is stored, that it must update a property that we want to writeback and it means that we need to support the format.
OK, that’s three requirements before we write anything back. Let’s explain how this stuff works in the prototype!
In our prototype you mark properties that are eligible for being written into the files using tracker:writeback.
It goes like this:
nie:title a rdf:Property ; rdfs:label "Title" ; rdfs:comment "The title of the document" ; rdfs:subPropertyOf dc:title ; nrl:maxCardinality 1 ; rdfs:domain nie:InformationElement ; rdfs:range xsd:string ; tracker:fulltextIndexed true ; tracker:weight 10 ; tracker:writeback true .
Next you need a writeback module for tracker-writeback. We implemented a prototype one that can only write the title of MP3 files. It uses ID3lib’s C API.
When the user is describing a file, the resource must have nie:isStoredAs. The property being changed ’s tracker:writeback must be true. We want the value of the property too. That’s simple in SPARQL, right? Sure it is!
SELECT ?url ?predicate ?object {
<$subject> ?predicate ?object ;
nie:isStoredAs ?url .
?predicate tracker:writeback true
}
You’ll find this query in the code, go look!
Now it’s simple: using ID3lib we map Nepomuk to ID3 and write it.
No don’t be afraid, we’re not going to writeback metadata that we found ourselves. We’ll only writeback data that the user provided in the form of a SPARQL Update on the default graph. No panic. Besides, using tracker-writeback is going to be completely optional (just don’t run it).
This is a prototype, I repeat, this is a prototype. No expectations yet please. Just feel exposed to scary stuff, get overly excited and then join us by contributing. It’s all public what we’re doing in the branch ‘writeback’.
ps. Whether this will be Maemo’s future metadata-write stuff? Hmm, I don’t know. Do you know? ;-)