Entries Tagged 'Uncategorized' ↓

Foschart: a FOSDEM schedule app for the N900

Hello internet! I am at FOSDEM 2010 in Brussels. I tried the fosdem-maemo schedule application for my Nokia N900, and decided to write an alternative app which is easier to use with my fingers, and looks more like a Maemo application.

The result is foschart. It’s just something I knocked together in a few hours yesterday, but it’s pretty usable already. It supports showing talks grouped by track, by room, and just in chronological order, and a list of favourites. It’s all happily kinetic-scrollable, etc., and is very snappy once it’s started.

There’s no proper release or package yet; if you want to package it up properly, please do! But for now, apt-get install python-hildon, then copy foschart.py and schedule.xml to /opt/foschart, and foschart.desktop to /usr/share/applications/hildon. Then it should show up in your application list, and away you go. As ever, patches welcome. Enjoy!

Update:

The illustrious Jonny Lamb has made a package!

Clearing unwanted recent tags from the N900 photo viewer

The camera/photo viewer on the N900 has a pretty nice tag cloud widget, which lets you quickly label your photos before you upload them to Flickr. (The novelty hasn’t yet worn off!) But an autocompletion accident left me with a tag in the widget that I’d really prefer not to be there when I’m showing off my nice new phone to people.

I spent a happy¹ few hours trying to figure out where it gets the set of tags from. The viewer asks Tracker for the most commonly-used tags, but this tag wasn’t used on any of my photos, so wasn’t coming from there. In fact, it didn’t appear in any of Tracker’s database files! After a bit of investigation, I discovered that the photo viewer keeps its own independent set of recently-used tags, not in Tracker, but in GConf, at /apps/osso/image-viewer/recent_tags. Lest you should find yourself in my position, a quick

gconftool --set --type list --list-type=string
/apps/osso/image-viewer/recent_tags '[]'

will expunged your undesired utterances from the cloud. Bug report time. Next stop: finding a tool that lets the user remove typos from the autocompletion database …

1. Grr.

Telepathy BOF at the Boston Summit

Jason‘s hands were tired after typing two days of excellent notes on sessions at the Gnome Summit, so I took over writing up the Telepathy BOF (which was largely about Telepathy integration in Gnome Games).

Gnome Games’s tubes code is broken because of Empathy moving to Mission Control 5, which broke the contact chooser they were using (which used Mission Control 4). A Canonical person (your scribe did not catch who it was) has written a contact selector in C which just uses telepathy-glib, which Gnome Games will use and then start working again. This widget could form the basis of the long-anticipated telepathy-gtk.

Rob pointed out that it’s currently a bit of pain to request a channel for yourself: you can’t just call one D-Bus method and get a channel back, you also have to implement a Client.Handler object on which MC will call the HandleChannels() method. Sjoerd noted that Empathy has helper code for doing this in simple cases, which could be moved to tp-glib (it’s under the LGPL).

Jason wants a way to share high scores with your contacts. (Digression about a gnome-games high score server on gnome.org ensued, the notes of which your scribe lost in a kernel panic. One main point is that global high scores end up just featuring incredibly good scores and people setting their name to obscenities.) Jason wonders if g-g could publish your high scores to your contacts in the background?

  • Rob and Will suggested that in principle this could use PEP on XMPP, which allows you to publish a blob of information to your XMPP server and be notified when your contacts’ blobs change. (This is how Geolocation works in Empathy, for instance.) Unfortunately Google’s server doesn’t support PEP, so most people wouldn’t be able to use this; plus, it would need an extension in Gabble.
  • Another way to do it would be to initiate file transfers behind the scenes.
  • Rob suggested using tubes. Gnome Games would come with a tiny daemon that handles tubes for the “org.gnome.games.highscores” service, serving up your high scores to anyone who asks. Then, when you open a high scores table, it would use ContactCapabilities to discover which of your online contacts support that service, and then ask them for their latest high scores (with a cache and a rate limit, obviously). It could show a throbber while it’s doing this. Jason thinks this sounds like a good idea. Prerequisites: you need the latest MC and Gabble 0.9 in order for ContactCapabilities to work, but that’s it.

J5 wondered if any g-g people are documenting how they’re using tubes, because he was always confused by them, and he reckons this is a very important thing for app developers. Rob suggested pushing this into tp-book, and Sjoerd noted that Danielle has a helper which lets you say “give me a stream to this person” and get a GIOChannel back branch with methods to convert between telepathy address GValues and GSocketAddresses, which could conceivably be extended to set up a socket automatically. J5 thinks that if patterns for using tubes were really well documented, people would jump on the chance to use them.

Jason mentioned that people were discussing having a help option which jumps you to #gnome-games-$lang. J5 said that Ximian tried that, but found that people would just end up in empty chatrooms or paste goatse at each other. Integration with DevHelp would be nice to let people post examples etc.

J5 suggested that another good way to improve documentation is to make writing it a requirement for SoC. Rob noted that Telepathy hackers know that you need to use, eg., a Handler and a Tube, but it’s hard for people really immersed in the stack to remember which prerequisites people need to learn in order to understand that stuff. Sandy said they’d been discussing documenting requirements and standards for SoC students, and thinks it’s a great idea to ask students to blog stream-of-consciousness “this is what i did” updates. People have to make sure that they do this as they go along, because you forget the learning process after a few weeks.

Advantage of peer-to-peer high scores: you don’t get the problem of one incredibly good person dominating. suggested that you could make high scores decay over time, or once you reach a particular level, to address this problem.

Tetrinet is latency-sensitive: will that be a problem with Telepathy, particularly using MUC tubes? Rob said just try it and if it’s too slow it’ll get faster as the implementation of Tubes improves. Sjoerd noted that for tetrinet you probably want to just export the Tetrinet server over a multi-user stream tube, rather than using d-tubes.

Telepathy should use UPnP to make FT and tubes fast in more cases. This is on the TODO list.

Boston Gnome Summit and Maemo Summit

I’m just getting ready to fly away to Boston for the Gnome Summit. I’m looking forward to meeting people and seeing MIT, as well as getting the chance to spend more than a few hours in Boston (unlike every other time I’ve been there).

Inevitably, I haven’t been organised enough to propose a Telepathy- or Empathy-related session, but Rob McQueen, Sjoerd Simons, Andres Salomon, Dafydd Harries, Shaun McCance (when he’s not busy running a pair of interesting-sounding documentation sessions!) and myself will be around if people are interested; maybe something will coalesce. If window manager theming is more your kind of bag, Thomas Thurman‘s running a session on CSS in Metacity/Mutter. It’d be great to talk about integrating IM with the Gnome Shell; Moblin’s people panel and many parts of Maemo make interesting use of Telepathy, and it’d be nice to have something similar on the desktop.

Speaking of Maemo, going to Boston means I’m not at the Maemo Summit in Amsterdam, which is a real shame: I’d love to meet more of the Maemo community, hear what people have up their sleeves for the N900, and discuss how Telepathy could help. Happily, Marco Barisione‘s giving a talk about how Telepathy’s used on Maemo, and how you can use it too; relatedly, Travis Reitter and Mathias Hasselmann will speak about the address book, one of the heaviest users of Telepathy. Also, Marc Ordinas i Llopis is hosting a BoF on extending the (frankly stunning) Hildon desktop, and Ian Monroe is giving a talk with Sergiy Dubovik about preparing Qt4 applications for Fremantle and Harmattan. I hear Philippe Kalaf is also floating around somewhere. ☺

See you in (the wrong) Cambridge!

GCDS, D-Bus, Telepathy, and other items

Hello, internet! I’m at the Gran Canaria Desktop Summit. I’m a big fan of this “conference beside a beach” concept: interesting people, talks and projects, in the sun beside the Atlantic. There are a *lot* of Collabora people here; the head-count on the roof of the hotel last night exceeded 20, with still more people arriving today (and others stuck in Madrid). As ever, it’s good to catch up with colleagues and others!

Bringing GUADEC and aKademy together seems to have been a partial success. It’s interesting to learn about projects from the other side of the fence, and I’ve had some productive conversations about the state of using Telepathy in KDE. That said, it’s a bit sad that so much of the cross-desktop schedule seemed to be a talk about a GNOME implementation of a concept, followed by a KDE implementation of the same idea. Maybe putting the duplicated effort in people’s faces could help improve matters, but that seems unlikely.

Earlier today I gave a talk about profiling and optimizing D-Bus APIs (grab the slides!), including Bustle, a D-Bus visualization and profiling tool I’ve written to help visualize bus activity and find issues. I think it went quite well, and it lead to some interesting questions and discussions afterwards. In the talk, I mentioned a few examples of sub-ideal API design in other frameworks, but largely focused on the problems we’ve found in the Telepathy API, and how we’ve gone about fixing them. A couple of people mentioned that this might have reinforced the impression that Telepathy is really hard to use, which was not what I intended at all! On the contrary, the improvements I talked about have made Telepathy a lot more developer-friendly than it was when I first got involved: both the D-Bus API (if you ignore the deprecated bits) and the higher-level client-side convenience libraries (telepathy-glib and telepathy-qt4) have become significantly easier to use. It’s telling that a lot of the changes that have made developers’ lives easier have also made the D-Bus API more efficient, sane, and correct.

Of course, there’s still room for improvement. As I mentioned, contact lists are quite awkward to work with, which is a shame because most Telepathy UIs would like to use contact lists. :-) libempathy-gtk has a couple of contact list widgets you could reuse, some of which I’d like to see in a smaller, API-stable libtelepathy-gtk; I hear that there’s talk to extract the Python contact list widget that’s being written for GNOME Games to a library that other Pythonic Telepathy applications (such as pyhallebard for which I can’t find a website right now — thanks Anonymous!) could use.

In other news, Tracker 0.7 sounds (among other things) like a potential solution to the silly unfortunate situation where every music player uses its own library database, and thus your DAAP server either needs a separate database or to be built into your music player. Mojito looks pretty interesting; I’d love to see a UI for it on my desktop. It annoys me that I have to check so many disjoint sources at the moment. It might be nice if it could show me blog post titles from my LiveJournal or Facebook contacts; I suppose I should start hacking. :)

Empathy 2.27.0’s Private Mode

An oft-requested feature in Empathy and Telepathy is support for OTR (Off The Record) encryption of messages, interoperating with the OTR plugin for Pidgin and other popular IM clients. We’ve been resisting implementing it so far, mainly because we think there are better ways to do end-to-end encryption of messages and audio and video calls over XMPP, which we hope to implement in the not too distant future.

However, a nice aspect of OTR as compared to other encryption solutions is that it allows you to plausibly deny having taken part in a conversation. We believe this to be an example of a wider trend towards deniability on the internet, a position which is backed up by the growing popularity of Tor, and by several modern browsers allowing you to cover your browsing tracks out of the box.

As a result, we’ve been working hard to help secure your privacy while you’re using Empathy. We’ve had to do this quietly for various legal reasons, but we’re proud to announce Empathy’s new Private Mode. When enabled, your contact list will be anonymized, as will your entry on your contacts’. Thus, you can conduct conversations with anyone without fear of repercussions from their discovering your identity, or of anyone else knowing the conversation took place:

Private Mode contact list

It’s not obvious how to bring these privacy benefits to Jingle video calls. We came up with a technique we refer to as Kitten Secrecy (patents pending in all relevant countries), and managed to integrate it with Empathy with the help of our friends at Collabora Multimedia, who constructed a fantastic GStreamer element using only two leaky queues!

Private Mode call window

We think the results speak for themselves. The source is not quite ready for
release yet, but (lawyers permitting) we hope it’ll be public by the end of the
month. Hope you can wait until then!

the Telepathy and Empathy teams


If you’re about to leave an angry comment:

At the Boston Gnome summit, Robert McQueen, Sjoerd Simons and I sketched out a plan for the API for end-to-end encryption of communications (implemented using XTLS, OTR or anything else) and how we’d implement this API for OTR. Work’s just started on a challenge-response authentication API, which is a prerequisite. Stay tuned; or, jump onto the Telepathy list or #telepathy on Freenode if you’re interested in helping out!

It’s lunchtime at Collabora Towers!

Following the wild success of Telepathy, we’re proud to announce our new project:

burgers floating between two heads

Fridays at Collabora Towers

In what onlookers are already calling “potentially unwise”, our robot overlord ordered various toys from ThinkGeek.

Office toys

Today—being as it is Friday, always the most productive of all days—they arrived! Apparently appropriate tools to control the missile launchers are not yet packaged for Debian. :(

The near-impossibility of teaching programming to a subset of students

The camel has two humps[pdf] was an interesting read; a bit wooly, but believable. One of my favourite paragraphs, tangential to the paper’s findings, concerned IDEs:

Programmers, who on the whole like to point and click,
often expect that if you make programming point-and-click, then novices will find it easier. The
entire field can be summarised as saying “no, they don’t”.

With buddies like these, who needs segfaults?

or, How to disable Bug Buddy in recent Gnomes

Apparently Bug Buddy is now a Gtk module. This is great because now every Gtk program gets it for free, not just libgnome applications. But it turns out to be kind of annoying when you’re hunting a GHC bug using a test case that uses Gtk2Hs, and it keeps popping up in your face, crying that it doesn’t know how to report bugs in the test case.

Some rummaging revealed that it’s enabled by gnome-session setting GTK_MODULES=gnomebreakpad at login, so you can export GTK_MODULES= to shut it up.

Update: Sjoerd Simons pointed out that setting GNOME_DISABLE_CRASH_DIALOG=1 is probably what I actually mean. There might be other things in GTK_MODULES which you actually want, so blowing them away might be detrimental to your health.


(Brought to you by the why does Google not give me a useful answer to the search disable bug buddy? department.)