Posts categorized “Semantic Desktop”.

Akademy 2008

Yay for regular blogging – last post was four months ago and that was from matthias who guessed my password :) – now I've found that spending a week with motivated and enthusiastic KDE hackers does wonders for my own motivation, so here we go:

In the last week I attended Akademy, the annual KDE community event – including the KDE developers community conference, an embedded development day and several days of BOF sessions. I was of course there with my Nepomuk hat on – in fact, with it pulled as far over my head as impossible, trying hard to hide the fact that given the choice I program in python not C++ and I use Gnome not KDE.

The event took place in Mechelen, Belgium – or actually in Sint-Katelijne-Waver, a 3-minute train-ride from Mechelen. The organization was excellent, Wifi never went down as far as I know (take that ESWC). The first two days were the developer conference, i.e. your standard fair of parallel tracks of talks. Interesting was Frank Karlitschek's initial keynote about the KDE websites (he runs kde-looks, kde-files, kde-apps, etc.), he pointed out that one of the main strengths of KDE is the community and we should bring this from the websites to the desktop. He imagined starting with things like showing KDE users in your neighbourhood in a Plasma-applet as a start and moving up to more collaborative features, like writing on the same document, etc. I was going to bring up Nepomuk an ideal for providing data-representation for such a venture, but someone else in the audience beat me to it – instead I quizzed Frank on the use of open standards for this later. He knew OpenSocial, but was not impressed, and had already made his own REST-based API, but confessed that he should look more on DataPortability for representing data (FOAF FOAF FOAF :)



On Sunday Laura did an excellent job with the Nepomuk presentation (she sat up all night to finish it :) and we had several interesting questions afterwards – which we discussed further in the BoF session on Wednesday. The issues popping up were, in order:

  • Indexing Performance (i.e. why does nepomuk take 100% of my cpu forcing me to turn it off?) when indexing lots of files, Redland is horribly slow, it is slightly better with Sesame.
  • Packaging – depending on Java to get Sesame is problematic – but (some guy?) said it should be possible to use Sesame with OpenJDK and he even tried it during the BoF session and said it worked fine. That leaves just to political problem of putting Java in the core of KDE.
  • Merging data – given a PIMO person with corresponding crawled/akonadi'ed address-book entry, facebook profile, twitter profile, etc. How can we combine the different parts of that person into one consistent view? In Java-Nepomuk this is the area of the LocalDataAlignment component — where the mapping required is coded explicitly in Java. Solving this problem generally is very tricky — but half-decent application specific things can be done with SPARQL construct queries.

The rest of the week include the free gifts of N810s to all Nepomuk developers (and me :) – thanks Nokia! – chatting more with Akonadi people about identity on the desktop vs. the web, a trip to Brussels, a boat-trip and a lots of Belgian beer :)



On the boat-trip I also learned that the kdebindings project not only has python, ruby, C#, etc. bindings for nepomuk and soprano, but also that it includes code to map soprano to ActiveRDF! Time permitting I will shortly try to mirror this with a rdflib Graph interface implementation on top of Soprano.

All in all this was an excellent event and I would not hesitate to pay my own way next year should my employer be unwilling! My photos are of course on flickr or Techbase for a general set of links.

Koble!

At ESWC I was getting a bit frustrated, because I saw many cool new technologies, projects, people and things, but my Gnowsis was broken so I had nowhere to write it down. Really this should of course have been a job for Nepomuk, but the Nepomuk prototype is not yet at a stage where I feel comfortable trusting my data to it :)

So, with plenty of hacking time on the train and while listening to talk at ESWC I started hacking something to keep track of my world. A few things were clear about my new hackish solution:

  • It would be written in Python :)
  • It would be a web-app, for two reasons:
    • I never liked having Gnowsis being only local, I change computers often and want to take the data with me.
    • Developing with HTML/CSS/JavaScript is so much easier than any GUI toolkit.
  • Web-app meant I could forget a few things:
    • No Aperture (local file integration) :(
    • No application plugins :(
  • BUT I also gained:
    • No cross-platform trouble
    • I could use Linux Commandline tools, like pdftotext or imagemagick
  • I would concentrate on a few features and do them quickly and then leave it alone forever.

When I got home I had some basic functionality ready, and I tried hard to put the thing away to concentrate on my PhD, but it kept coming back. Now, a month and a bit later it's at a stage where I can show it to the world. So! I give you:

Since pictures speak louder than words here are a couple of screenshots (click for larger view):

The Koble welcome screen:

A Thing page:

Adding a relation:

Placing Things on the map:

Even louder than pictures speaks action though, and
Koble is open and you can try it today! Registration requires at least an OpenID account, but preferably a FOAF account linking to your OpenID. Read a bit more about Koble here, or about the FOAF+OpenID accounts.
It is still a bit buggy, and probably always will be. As a guide I have been using it for the past week, and I do trust my data to it :)

PS: Oh, and I just realised it's not quite clear, the URL is http://koble.net :)

PSS: It's of course open-source, you can look at the mess that is the source-code here: http://koble.opendfki.de/ and look at some tickets for some planned features here: http://koble.opendfki.de/report/9

Semantic Desktop Invaders

Last week was the Semantic Desktop hands-on workshop in Berlin, and Leo's video really says almost everything. I found the format of the workshop (morning talks, afternoon free time) really nice, as I can't really pay attention for a whole day.

On the train to Berlin I had lots of laptop battery and I tried to brain-storm something quick and dirty I could hack up using machine-learning, I wasn't very successful.
HOWEVER, I remembered an interesting idea by (I think) DJ McCloskey at the IBM language-ware labs: The email radar! Imagine the motion detector from Aliens, but showing the unread/unprocessed emails in your inbox. More important emails/tasks appear as bigger dots, this would give you instant overview of your day and how stressed you should be. Or alternatively, when you should just give in and lie down to die. Then the idea spirals out of control a bit and you can imagine "ENEMY DESTROYED!" sound effects and explosions when you mark something as done or file away the email.

From this the idea of Semantic Space Invaders! was born:

Fly backwards in time and destroy your flickr-photos!

My original idea was that this could combine your various RSS feeds to let you destroy your activities over the last few weeks, however, technical difficulties meant that only flickr was supported (parsed really badly so it might break). Also, it's harder to come up with nice icons for other RSS feeds, although I was briefly thinking about finding a service for creating web-thumbnails.
Another nice feature that I would implement if I had infinite time is to auto-compress the timeline in periods where there is no activity.

Like last years rdfroom this is written in python using pygame.

download here

(Oh and btw, yes, this IS completely pointless, but it only took me a 2-3 hours :)

None of us are as stupid as all of us

Joel writes

…the only thing harder than trying to design software is trying to design software as a team … What kills me is the teams who get into the bad habit of holding meetings every time they need to figure out how something is going to work. Did you ever try to write poetry in a committee meeting? It’s like a bunch of fat construction guys trying to write an opera while sitting on the couch watching Baywatch. The more fat construction guys you add to the couch, the less likely you are to get opera out of it.

Maybe this is what happens in Nepomuk? Maybe this explains why the RDFApi taskforce spent 9 months coming up with a list of methods that feels like any of us could have scribbled them down in an afternoon (And tf-rdfapi even missed out a few). Similarily, we spent all last week finding core functionalities of Nepomuk, which boiled down to a list of extremely general and obvious things like "search", which again, we could have written down over lunch. (or maybe Tuot was right, maybe it only seems that way because I've been breathing the semantic desktop for a year)

Related is perhaps the color of the bikeshed.

sanity not included in bundle

Finally, after several weeks of staring in despair at the Nepomuk OSGI middleware/backbone thingy implementation and intensely hating OSGI, maven, SOAP, and all java programmers in general I have finally got some stuff working! It's now all committed and I've made it work on my laptop as well, just to prove it wasn't a glitch.

Here is a screenshot of everything checked out:



This OSGI thing is completely ridicolous… and this is with no real functionality, I dread what it will look like when it actually does something.

… dreaming of a world where I can spend time coding functionality, not being tortured in framework hell…

(This reminds me one of my studens, he was staring at endless jboss exceptions scrolling by, and I walked up and asked how he was doing, and he said "i dont even see jboss any more, all I see is blonde, brunette … )

More Gnowsis Web2.0 Goodness

To make Gnowsis more sexy and fun (isn't that all we want?) for ISWC, I added a quick hack that lets you geo-tag cities in your PIMO using the services from http://www.geonames.org/ (I also used the RDF representation of ISO3166 from downlode.org):



The tagged cities (or any concept really) is then shown on the PIMO Map:



Additionally, we recently added code that keeps track of creation data for concepts, making it possible to display them on Simile Timeline. This still requires a lot of work, it should really create hot-zone bands for busy periods, and maybe make it possible to show the whole thing with a year/month/week granularity (although, this should really be in the simile code, zooming in and out like google-maps! With smooth animation and swoosh sound effects! and cleaning your teeth…):



PIMO Icons

Another good way to waste time – this week I learned how to use Inkscape, and made a SVG icons for all of the PIMO classes. I found that it's pretty damn hard to think of a good graphic representation of "process concept' :)

Inkscape really is a joy to use – although the gradient editor could be better. The colours were all taken from a scheme from ColorBrewer.

Three of a Perfect Pair

The last few days has brought three new Gnowsis features. It's getting really fun working on the thing now, most of the basic functionality I want is there, and now I really get inspired to fix small, but annoying bugs that have been there for long, as well as making cool new features.
So without further ado, and in reverse order of amount of time it took to hack (click for real images):

The essential Web2.0 feature… THE TAGCLOUD!



This pretty much speaks for itself, the most used concepts in your PIMO, weighted by the number of occurrences (essentially tags).

The Tagging bookmarklet



Instead of spending alot of time fighting with mozilla and zul, we hacked this on up. It works in all browsers, and I still had time left to make the textfield autocomplete on PimoConcepts and get beaten by Leo in Starcraft in the evening.

Synchronization



This is one I been missing for months. Essentially it lets you upload your PIMO to some machine where you have shell access, then other Gnowsis installations you might have can download that PIMO. Later both Gnowsis installations can sync with the one central PIMO, making it easy to keep multiple Gnowsis (Gnowsii?) up to date! The task of doing RDF Diffs was made much easier thanks to
Reto Bachmann-Gmür, and also by the fact that we have no blank nodes in the PIMO. In fact, it was almost trivial. Using SCP from Java was also easy, thanks to JCraft.

Gnowsis is getting so good these days, soon I might have to recommend it to my friends! http://

Gnowsis knows what YOU are thinking…

This is kinda lame since every sensible web-application has this feature, but I just finished coding javascript autocompletion for my rewrite of the gnowsis GUI as a glorious python web.py HTML hack (which I will releasse and blog shortly, when it's slightly nicer). Lovely screenshot here:

Most of this was stolen from gadgetopia, but I adapted it to keep track or URIs as well as labels.

Mork

Plan for Today: write an Aperture datasource for the thunderbird addressbook, this to pass time before lunch while I didn't have my mac, and should be quick and easy.

Fast forward till lunchtime, where I've found that Thunderbird uses the MORK format for it's addressbook. Mork is a "barely machine readable", "stupidest file format I've ever seen", "look-ma-I-wrote-a-DB" excuse for a DB format.

It was designed by some netscape engineer in the 90s who then disappeared and now no-one knows how it works. It looks a bit like this:

<(91=2)(81=Test)(82=Bob)(83=)(84=Test Bob)(87=bobnickname)(85
=bob@tester.com)(88=bobby@serial.co.uk)(80=0)(89=workphone)(8A
=homephone)(8B=faxphone)(8C=papegerphone)(8D=mobphone)(8E
=bobscreenname)(8F=441048b8)(86=1)(90=bill)>
{1:^80 {(k^BF:c)(s=9)}
[1:^82(^BE=2)]
[1(^83^81)(^84^82)(^85=)(^86=)(^87^84)(^88^87)(^89^85)(^8A^85)(^8B^88)
(^8C=)(^8D=)(^8E=0)(^8F=0)(^90^89)(^91^8A)(^92^8B)(^93^8C)(^94^8D)
(^95=)(^96=)(^97=)(^98=)(^99=)(^9A=)(^9B=)(^9C=)(^9D=)(^9E=)(^9F=)…

Luckily someone else has sort of reverse-engineered it, and there exist partial perl parser and one python version.
I've now added to the madness by converting the python one to Java. It sucked and took all day. (And someone pointed out I could have done it with jython, oh well). To make up for it I'm going to share it with the world.

Here download a jar with src/binaries and some examples:

UPDATED! The old version did not handle encoding of non-ascii characters too well – like everything else in mork this was pretty badly done, but now it's working.

http://www.dfki.uni-kl.de/~grimnes/2006 … st-0.2.jar