March 7, 2011

Did I do the right thing?

Filed under: collabora, facebook — alsuren @ 2:09 am

When I came across this pair of comments on LWN, the red mist washed over and I had to respond.

“Is there something preventing Apple from *also* supporting WebM? (This is a serious question about their contracts with MPEG LA.) Because if there isn’t, your point is invalid.”
“Apologies if the answer is in the article. I’ve been boycotting the WSJ for a couple of years now.”

Can someone check the resulting thread and tell me whether I did the right thing?

I think I am justified in being angry, but when I remembered “Do you realize that when you belittle people for asking “stupid” questions, you destroy their ability to keep asking questions?” I felt a bit guilty.

(Yes: I realise that posting in internet comments sections and reading reddid means that I’ve already lost.)

December 2, 2010


Filed under: collabora — alsuren @ 7:52 pm

I’ve been looking for a task-management app which could sync with my phone for *months* now without much luck. I tried making GTG sync with RememberTheMilk, and using nolazy for a while, but it was mostly just annoying and got in my way so I gave up.

I’d seen a lot of the guys in the office using Tomboy to organise their thoughts/todo lists, and being pretty effective at keeping on top of their lives, but I didn’t want to adopt a solution that would leave me helpless when I didn’t have my laptop with me. A great thing about Maemo is that there are a lot of ports/clones of desktop apps available, so I set about planning a few of my projects using Tomboy on the desktop and Conboy on my phone.

Then it came to the problem of syncing the two. Conboy suggests that it has the ability to sync notes with your desktop via Ubuntu One, but I decided against that solution. Also, I found out that Tomboy and Conboy use the same format for their notes, so you can sync the files without the help of either application.

The guide I found to sync the files uses a dedicated sync program called unison, which isn’t packaged for maemo, and sounds a bit dubious. Also, I use git to sync files between multiple computers *all the time* for my day-to-day job, so why can’t I just use that instead? It turns out that git *is* available for the n900 (yes: Maemo is awesome) but it is designed for more complicated workflows than “sync these files between here and here”, so I had to hack up a little script to make the job a bit easier.

At the moment it’s more “proof-of-concept” than anything production quality, so I don’t know if it will be useful to anyone who doesn’t already know how to use git, but the idea is there for people to try out and improve on as they see fit.

Current obvious limitations are:
* It just complains loudly and leaves you in the hands of git-rebase if there are any conflicts (should probably fire up mergetool in a temporary directory if I want to handle conflicts *properly*).
* You have to use git init . in both places to set up the git repositories before you try to sync (might add a –init option at some point, but haven’t done so yet).

April 13, 2010

Gateway to the West

Filed under: collabora — Tags: , , , , , , , , , , — alsuren @ 12:16 pm

It has occurred to me that I should probably write a blog about the project that I’ve been working on recently. We have named it Fargo. Its job is to act as a gateway between the XMPP and SIP networks. The aim is to let you make voice calls from your XMPP client to your SIP contacts without needing to run a SIP-capable client on your local machine. It also allows you to receive incoming calls from SIP contacts from your XMPP client.

The program runs as a standard gateway, so if Fargo were running on, then you would tell the details of your SIP account to Once registered, whenever you log into your XMPP account, the gateway will sign you into your SIP account so that you can send/receive calls. For example, if I were to call you, you would see an incoming call from, and it would behave exactly like a call from one of your XMPP contacts. If you wanted to call me then you would just add “” to your XMPP contacts, and then click the call button.

Now, if you wanted to make a one-off call to me, but you didn’t want to have to add me to to your contact list and then remove me again afterwards, Empathy/Gabble already lets you do this (thanks to an extension that we wrote). Just open up the “New Call” dialog, and type in

So what goes on behind the scenes? When you make a call, your XMPP client opens up a pair of ports in your router (most likely using STUN or UPnP). It then sends your public IP address and port numbers to along with a list of which codecs it supports (this is pretty much the same as what it would do if you were calling someone who is using Google’s official client, or the echo service). Fargo then reads this information and sends it over dbus to telepathy-sofiasip, which forwards it on to me via SIP. My SIP client then sends back some IP/port pairs, and a list of supported codecs (as if it were talking to an X-Lite user, or the echo service).

Once both sides are aware of each other’s addresses and codecs, they can start sending media directly to each other using theReal-time Transport Protocol. The gateway is only involved in setting up and tearing down the call, so I can keep you on the phone chatting about the meaning of life for an hour, and the gateway will only be woken up to say “bye” when one of us hangs up. This means that the cost of making an hour long call through the gateway is remarkably small.

Fargo has been extensively tested with telepathy-gabble, both on the n900 and under Empathy. There are some corner cases which don’t always work as well as they could (eg NAT boxes which don’t support hairpin routing, which only work if the SIP server provides a media relay) because many SIP implementations (including telepathy-sofiasip) don’t support ICE candidate negotiation. Also, if there are no compatible codecs between the XMPP client and the SIP client then the call will fail. All other cases which we tested seem to work fine though.

In addition, have some test scripts which demonstrate a Fargo + ejabberd combination comfortably sustaining a rate of two new logins and two new calls per second on a single-core VM. Calls were limited to 10 seconds each in our tests, but since Fargo is only involved in setup and teardown, the length of calls shouldn’t be very important anyway. Fargo also plays nicely with ejabberd’s “bare_source” load balancing method, so if your gateway becomes too popular, you can just add a few servers and cluster.

Currently, Fargo doesn’t relay IMs, and only supports negotiating raw-udp transports, so it’s probably best used in conjunction with a SIP server that includes a media relay. It also relies on your XMPP server to store your roster rather than trying to store one itself. The program is written in Python (using twisted) and utilises telepathy-sofiasip for the SIP side of things (this could in theory be replaced with another connection manager to handle other protocols). Don’t hesitate to get in touch if you want to know more, or get involved.

March 17, 2010

Blues Extravaganza Moments

Filed under: collabora, facebook — Tags: , , , , , , , — alsuren @ 5:59 pm

Went dancing (blues) over the weekend. I don’t want to end up duplicating Holly’s post so if you actually want to know what I was doing on the weekend, read that. I’m just going to talk about key moments that stuck in my memory (in roughly chronological order):

  • Friday night’s Wall of Blues, and associated turf war with the local drunkards.
  • Peppering of glass in the bottom of my dance shoes.
  • Being told repeatedly to relax by a drunk person who cornered me for a dance.
  • Ignoring her because she was drunk.
  • Being told repeatedly to relax by Damon and Bryn.
  • Hanging my head in shame.
  • Solo blues facing off against Christopher Allen.
  • Dinner in Brazilian place in the market.
  • Dancing in close-closed with someone who’s the right height and connecting well (feels pretty awesome).
  • Being taught a few embraces which improve the connection in closed.
  • Recognising some of them from the previous evening.
  • Closed embrace with Damon and a “Freakishly tall guy”.
  • The picture, care of Christopher Allen.
  • The prank, care of Asif.
  • £5 communal nachos which were better and more filling than £9 burger
  • First dance with Brin (baptism of fire for the evening).
  • Still having my jumper on (baptism of sweat for the evening).

February 11, 2010


Filed under: collabora, facebook — Tags: , , , , , , — alsuren @ 10:03 pm

I went to FOSDEM over the weekend in Brussels. My mum texted me when I arrived, with a thinly veiled request for me to bring back some Belgian Chocolates. Annoyingly, my touristing extended only as far as an hour wandering down to the Palace of Justice and back, and the only chocolate shops I passed seemed to be geared up for Valentine’s Day so I gave them a miss.

Getting back in touch with what’s going on in KDE-land was good, and finally pushed me to switch back from GNOME to KDE. I’m currently still running gnome-panel because I use a gnome-panel applet for reporting how many hours I’ve been working on different things.

I wrote down my conclusions from the conference for other people from Collabora to read, but I thought I might as well share them here too:

  • KMail in KDE 4.5 is finally going to be worth using, but that’s 6 months away.
  • RDF/SPARQL is actually kinda nice, but writing raw queries without any tools is a trap.
    • The KDE guys haven’t really been talking to the Tracker guys, so while their frameworks are theoretically compatible (using the same schemas) they haven’t made very much effort to share things like their databases or tools for writing metadata back to MP3/image tags (a feature which KDE currently lacks).
  • CouchDB is secretly mostly hype and while it’s possible to use from any language without any tools, it’s got too many sharp edges to be very useful when you start trying to use it for non-trivial applications (a bit like dbus-python in that sense?).
  • SIP-Communicator is actually kinda kickass. We really need to improve our SIP stack.
  • I hear Daniel Stone’s talk was really good but it was full by the time I got there. He says that it was recorded, and that he would post to Planet Collabora when they put it online.
  • I’m not going to go into too much detail about XMPP (A few of the other guys on Planet Collabora went to the associated XMPP summit, so I’ll leave it to them to post details about that.). One thing that is worth commenting on is that there is actually surprisingly little impedance mismatch between XMPP and many web2/AJAX technologies. Watch this space for a complete JavaScript port of Prosody and a massive flood of JavaScript-based server components.

January 13, 2010

Internet Banking and Trust

Filed under: collabora, facebook — alsuren @ 5:08 pm

or “What Went Wrong”

I’ve probably wasted at least 3 hours of my life on this (and at least a man-hour of HSBC time) so I might as well try to work out what went wrong, and what can be done in future to avoid such problems. Skip to the end if you like.

I made a deposit payment to my landlord on the 7th of this month using internet banking from my laptop. On the 8th, I got a phone call from HSBC telling me that they needed to confirm a transaction. This is commendable, up to the point where they said “before I continue, I will need your date of birth and post code to authenticate you.”

Take it from my point of view: Someone has just phoned me up out of the blue and asked me to give out my personal details. That’s not going to happen. I asked them if there was any way that he could authenticate himself. He said No (clearly this is impossible without arranging some secret in advance) but he could give me their fraud number and I could call them back with a reference number to confirm the transaction. So close, but not quite the right answer. Someone ringing me up and telling me a number to ring doesn’t help me trust him. He then pointed out that there was a number on the back of my card that I could ring and he could put a note on my records to get them to put me through to fraud. Bingo! “Okay, wait a minute for me to put the note on your file. Okay, bye.”

I was slightly sceptical at this point already, since he’s suggested 2 insecure methods of getting my details from me and it’s only the 3rd is one which is guaranteed not to be a con. I rang up HSBC and got a pretty prompt response once I’d gone through the usual automated menus. Kudos HSBC: you seem to know how to run a call centre. I told the woman what had happened and said my reference number. She couldn’t find anything on my file about any communication. How odd. She didn’t seem as worried by this as me. She said that someone asking for my birthday and postcode was completely normal (Sure, there are easier ways for a fraudster to find out such information, but I still think that a policy of not giving away any information to people you don’t trust is probably a sound one). I got her to write a note in my file to say what had happened, and that I hadn’t given out any details so my account was safe.

Convinced that I had just been the target of a phishing attack, I rang up 1000 and asked them if they could tell me the phone number before last that I was connected to. Turns out they don’t keep that kind of information.

This morning, I got a letter from HSBC telling me to ring up their fraud number. Again, this was someone contacting me out of the blue and asking me to ring a number, but I put on my “don’t give out any personal details” hat on and called them up. This took a little longer to get through, but there was no automated system beforehand, so it’s not too bad. The guy I talked to was very understanding and said that if I had any doubts, I shouldn’t give out any personal details. He said to try ringing up the phone banking or go into the branch, but the likelihood was that I’d need to go into my branch with photographic ID and get them to sort it all out. Sure enough, when I tried internet banking, it gave me an error code which translated to “go into your bank and get your account reset”

When I went into the bank it was lunchtime, but I got seen straight away (more points to HSBC for this). The Lady in the bank was helpful, but there was a note on my file saying that she should phone up a number, and they put her on hold for ages. Apparently this happens a lot at lunchtime. They get all of that sorted out, and I mention that I really need to get this paid by Sunday when I move in. Because it can take a few hours to reset internet banking, she put me onto the woman in the fraud centre to approve the transaction and helped me to set up a standing order for the rent.

I asked the woman in the fraud centre to take a look at the notes on my file, and work out what had happened. Apparently it was recorded that they couldn’t get through to me to confirm the transaction. I explained that I had been given a reference number and told to call a number I didn’t trust, so arranged to call the number on the back of my card instead. She said something like “Yeah, a lot of customers don’t like to ring up the fraud number because it’s an 0845 number and they don’t trust it.” I asked why I was supposed to trust a number that I was given out of the blue, and she said “Tell you what: I’ll give you the number now, and if it comes up again you can trust it.” Turns out it was the same number that was in the letter, but there doesn’t seem to be any reference to it on the HSBC website, and nothing comes up if you type it into the search. For reference, number is 08456 100 194, but don’t take my word for it, because I might be trying to trick you into giving out your bank details.

So what could have been done better?

If someone rings me up again, I will keep them on the phone until they’re certain they have written the appropriate note on my file. This avoids the race between them writing on my file and me calling up the other number.

Before I call any other number, I will make sure I know the number that called me, so I can report them to the fraud people if it turns out to be someone suspect.

If someone calls up trying to confirm a transaction, I have 24 hours from the time I tried to make the transaction to get back to them. Otherwise I’m going to get locked out of my account again. If they don’t have a clue what I’m talking about, I should make sure that I have talked personally to someone on the fraud team before I give up.

I now know that 08456 100 194 is a trusted number, but there’s no way to write it on my card, so it’s going to get forgotten.

They have a feedback section on their site. I’ve written something in there, and if they get back to me, I’ll be sure to post it in the comments here.

October 16, 2009

Mind Control

Filed under: collabora, facebook — Tags: , , , , , , , , — alsuren @ 5:35 pm

My echo bot has received a bit of attention since my last post.

Add to your jabber/gtalk friends, and you can see what I mean.

Note that it currently doesn’t automatically restart itself when it goes down. This is so that I can try to debug crashes rather than leaving them unnoticed. If seems unresponsive, try for now, and send me an email. I will try to add a watchdog bot soon, so that we can have a more reliable service, but I’m dancing all this weekend.

October 9, 2009

Telepathic Reverberations

Filed under: collabora, facebook — Tags: , , , , , , , , , , , , — alsuren @ 4:05 pm

If you have ever had a call with someone where something wasn’t working, and you’ve wondered whether it was your computer or your contact’s that was broken, I have the answer for you. It takes the form of a user that you can add to your contact list, and call to test your setup. If your contact does the same, then it should be very simple to narrow down where the problem lies.

If you are using XMPP (or Google Talk or Jabber if you hate acronyms), then is the user you want. You can add it to your contact list and it will add you back. You can send it a message and it will send it back to you. If you call it, it will send your audio/video straight back to you. It might be a good idea to put headphones in before you do this though, to avoid feedback loops.

The bot is written in Python, and source can be found at It uses telepathy-gabble to connect to the server and Farsight for the streaming. This means that it has all of the same capabilities and limitations as Empathy on Linux. This makes it good for testing interoperability. If you try it out and have problems, feel free to leave a comment here, or join us in #telepathy on freenode and I (alsuren) will be happy to help you out.

A few things to note if you are having problems:

Users of the Google Mail interface are currently limited to audio only, because Google only uses the h.264 video codec, which cannot legally be distributed with Empathy. If enough people report this problem to them, then maybe they will include Theora as a fallback. There are ways that I could work around this problem for the echo service, but then it wouldn’t be a very good tool for testing whether you’re capable of calling Empathy users ;-).

If you are using Ubuntu Jaunty and pulseaudio, you may notice high CPU usage and a really long lag in your audio. This is a known issue and is fixed in the pulseaudio that ships with Karmic.

Watch this space for an MSN echo service (since telepathy-butterfly now supports voice/video for MSN). Also, if you are interested in writing multi-protocol chat bots, I’m planning to re-factor the code and distribute it as part of telepathy-python. If you want a say in the new API, speak now.

September 11, 2009

Telepathic Ramblings

Filed under: collabora — Tags: , , , , , , — alsuren @ 11:09 am

Okay, so I should probably inform people of what I’ve been working on recently.

A few of you might remember my cupsandstring Telepathy (IM) client from a few years back. Well I’ve recently revisited that, because someone was asking on IRC, so if you want to read the source, it won’t make you want to puke quite so much these days.

I made a skeleton Skype connection manager way back when too. (Don’t get excited: it’s based on the public Skype API provided by their UI, and only connects to your currently configured account). It never really got off the ground though. A few weeks back (go check the bzr log if you care) I picked it up again. I got it to the point where I could use it for text chat, and have been using it to replace the ugly bits of the Skype UI. It’s currently made of gaff and verbose, and has to be run in a konsole because I make it drop into a debugger whenever anything unexpected happens. This will continue to be the case until I have a decent testing framework for it.

Guess what my next project is: A testing framework! The spec has been discussed on the Telepathy mailing list. I’m trying to make it as generic as possible, so that I can try it on a well-tested connection manager (gabble) and then move on to butterfly, and then spyke when I’m feeling brave. Since I don’t want it to depend on the protocol too much, I’ve designed it around the idea of an echo bot (which can run remotely or locally) and a set of test scripts, which mostly just poke the echo service (like Skype’s echo123), and expect a sane reply. The bonus of this is that you can test interoperability between haze and gabble/butterfly/idle (and Kopete’s protocol code if it ever becomes telepathic) for free.

Due to all of my noise in Telepathy-related communication channels, daf suggested that I apply for a job at Collabora. I did so, and officially started on Wed. That was a fun day. I arrived in the office, and daf and wjt greet me with “Hey. We’ve thought what we want you to work on first: an echo service”. To which, I could only respond “What? Like this one?”, flashing my eee at them. Turns out their priority is something that works with gabble, and handles media streams (initially just using gstreamer’s audiotestsrc but eventually actually echoing stuff, and then doing things like disabling codecs). Hopefully I will get something workable by the time daf moves to America, but I would like to write a few automated tests for the text functionality before I start adding lots of crazy features.

Also, I’ve had to re-wrap most of the functionality from python’s telepathy.client library, because it contains too much magic, and is impossible to inherit from. I’ve tried to do it in a way that could feasibly be auto-generated from the spec, so that’s a project for when I’m done with my echo service. Maybe I’ll even push it into telepathy.client. It’s great to be working on Open Source software again. 🙂

Create a free website or blog at