First off, if you have a good 3G data plan with unlimited everything, or don’t care about paying your precious €€€s to mobile service providers, you can skip this article altogether :)


The last few weeks I’ve been traveling quite a lot, and didn’t always have Open WiFi near me. So I needed to use overpriced 3G connections by Proximus.

Before you tell me, why don’t you have a Data Plan, let me tell you that they are only valid for Belgium itself, and not foreign networks. Why should I need a Data Plan when I am at home? So much about that.

Using 3G a lot in foreign countries, I asked my provider what the actual costs would be. They told me, using Pay&Go Cards you are paying 1,50€ / 100KB. I thought, hey, sounds fair. I mean, the only thing I want to do is check my Jabber Offline Messages and E-mail from time to time.

Let me tell you one thing in the beginning: Do NOT check E-mail with such a rate plan. I downloaded the headers of my E-mail once, and it cost me 400KB! That were just the headers. So forget that directly.


So I used Jabber. My setup was Talkonaut 3.0 with compression enabled. Do not try to use Jabber without compression. Ask your Server Administrator if the server supports compression, and make sure your client supports it. Using compression I had about 10x less data transferred. If you think about the overpriced traffic, it’s worth enabling it.

I have to say, compared to MSN, yes, I have that installed too, Jabber consumes a lot less. So use Jabber transports instead of native clients.

But what can be improved?

First of all, typing notifications. They consume bandwidth for nothing. And when being mobile, do you really care about someone typing? You don’t. This should be filtered on the server and not sent to the mobile device.

Then you have status changes. About 50% of all my traffic were status changes of people on my roster. Ok, I have a big roster (around 400 persons), but again, I don’t care about people coming online or offline, when I am chatting with someone. I don’t see the roster, and I don’t want to. As proposed at the XMPP DevCon, these statuses should be queued on the server, and just the last status should be kept, until my client requests them, i.e. I check my Contact List, or hit a refresh button.

On third place, I have my contact list. Every time I log in, the contact list is downloaded. This consumes with compression enabled about 30KB on my account. That’s just a waste of bandwidth. My contact list doesn’t change that often, why can’t the client cache it? Then you need to get the status of every contact. My guess is, that you get them one by one. I.e. contact 1 is online, contact 2 is online, contact 3 is offline … etc. You could do: contact, 1,2 are online, contact 3 is offline. This would compress better and you would save bandwidth. Again, this should be prepared on the server.

I remember that a big part of the discussion for mobility was about power consumption. I have been using 3G quite a lot and WiFi, whenever I found one, and I have to say I don’t see any problem with the consumption. But if anyone has seen the battery of an E61 by Nokia, you know why. It’s huge! I think it’s more important to get clients that consume less bandwidth, as that is something that you really have to pay for. You can recharge your mobile phone nearly anywhere.

Well, that’s it for today. Feel free to comment with your ideas and experiences with your mobile and 3G roaming.