I guess my next phone is not going to be a Nokia

I wrote a few times before about my experience with my Nokia E61 phone. WIth the iPhone 3G coming to Italy, and the E71 being announced, I started to think whether to change my phone, and which one to get.

The first issue would be, do I want to keep going with Nokia or not? Nokia is being felt as “great’ in the Free Software world, although there has been some trouble with Ari Jaaksi’s words lately but I’m very much disliking their policies related to phones.

The first problem is something I wrote before about, and it’s their SDK policies. Not only the S60v3 SDK is not usable under Linux, but also the most complete SDKs are just overpriced.

Yes, I know Apple’s SDK isn’t much better, but this is just one issue I have with Nokia.

The other big issue with Nokia is that even the most basic annoyances you might have with the phone’s software will never get fixed in your phone’s software release. For instance, E61 has a pretty useless home screen, it shows you the next appointments in the calendar and a single TODO item. With the huge screen real estate in the phone, it’s kinda pointless to have just these things in there.

The problem has being partly solved in the E61i version, which has the same exact screen size, but has a more interesting home screen, which includes the number of new unread email messages, and the presence of Wireless LAN connections. I don’t think that to implement the new home screen you need any new hardware the E61i has and the E61 doesn’t. But Nokia is not going to update the firmware of E61 with that, as it’s a service release of the OS.

The problem is that there are tons of little annoyances in Nokia’s Symbian, but to get those fixed your only choice is for you to buy a new phone. Which would be just a waste of money. They really should start updating the OS for old models too, not just for the last version they released of every model.

Now, as I was saying the other day talking with DanielW on the Amarok developers’ channel, unfortunately the most open platform currently in use and with a decent price tag is Windows Mobile. Actually, Windows Mobile phones do look nice, but I need to sync with OSX at the moment (Address Book beats Kontact a million times, for now, once KDE gets a decent address book application, then I’ll have KDE as main sync I suppose), and I heard so many bad things about Windows Mobile (and one I seen with my eyes, my brother-in-law was receiving a photo of my nephew with his Windows Mobile PDA via bluetooth, it ended up stuck, he tried shutting it off, it didn’t work, he removed the battery and put it back, and it reset itself entirely…).

Sadly, there isn’t so much choice here. I want a smartphone, as I grew used to have email support while I’m on the go, for job and other things; also, being able to browse some e-shops when I’m at an actual shop, to check for prices did save me quite a bit of money before. There are only three choices for smartphones out there: Symbian OS, Windows Mobile and iPhone. The first, as I said, is a huge pain in the ass as it is almost never updated; the second is just not something I’d be glad to be using, so at the moment my best choice is the third.

Now of course before I can actually get an iPhone there are a few things I need to clear. First TIM has to announce it. I’ll never become a Vodafone customer in my life, they are just thieves. And TIM has to announce a decent dataplan as I need it. As an alternative they can just not simlock it, I’ll be glad to pay for a decent voice plan to give my mother and keep the iPhone with my current carrier (H3G) which has a very nice dataplan.

But for sure, the only way for my next phone to be Nokia would be for me to work for Nokia and having the tools to actually update its firmware to fix the bloody annoyances it gives me, like not being able to search for contacts by nickname when looking up the destination of an SMS, or showing the birthdays in the calendar view (and the homescreen) for those contacts having one set.

Finding differences in XML files

As I wrote in a previous entry (XML misuses), my current job entails working with XML files. Badly designed XML files, but that’s not the main issue here, although it does make the task a bit more complex than it would be.

I have two XML files, both big around 1.5MiB; I have to find what differs between them, one is the original, the other is the one generated by the software I’m writing.

A simple diff run between the two can’t work for me because it shows a HUGE lot of information I don’t care about, as it tells me whenever a whole line differs, while I need to know which attributes in these very long lines change.

I though that it was quite a common task working with XML files actually, so after asking a bit around for suggestions, I just ran a search to find a software that would do what I need.

The first option was to use Microsoft’s XML Notepad (which I’m using already since I’m working under Windows and I didn’t want to look for KXML Editor for Windows), and its Compare option. Actually, that was in theory exactly what I needed. Unfortunately there is a bug, a huge one: whenever an attribute of a variable changes, instead of showing me the attribute name it outputs the element’s name. Quite a simple bug to fix if you had the sources around, but this is Microsoft.

Update 2020-10-14: since it’s now 2020, Microsoft actually did release the sources! You can find XmlNotepad on GitHub and it seems to be actively maintained.

Then I was suggested to try another proprietary commercial tool called oxygen. The way it compares XML files have multiple algorithms, I tried first the “XML accurate” one as that seemed the most appropriate, I needed an accurate comparison indeed. It excepted out of memory, suggesting me to increase its limit. So I did, and still excepted, twice. The “fast” algorithm instead just gave me a line by line diff with XML syntax highlight. Pretty much useless. Luckily it was a demo.

Time to Google around, and I’ve found a few tools that seemed to be what I needed. Unfortunately I’ve found stuff that was written originally under GCC 2.95, then ported to GCC 3, and obviously fails with GCC 4, like XyDiff, which also had a pretty idiotic build system; I’ve found Java code written for Java 1.4 and not working on 1.6 (with no source available of course) – many thanks for the “Write once run everywhere” idea – and much more sophisticated stuff (like Nokia’s xmlpatch which is probably something I could use for other stuff, but not for this). The only option that seemed at least near what I needed was xmldiff, which is in portage already. Too bad the thing, left 20 minutes working on the two files, was still crunching numbers with 80% cpu, and not outputting a single line of difference.

Is it this difficult to find a tool doing what I need here? I suppose I could spend some time writing my own tool, either for just this particular case or generic, but I’m not really sure I want to start this yet. Especially since I wouldn’t have time to polish it and I’m tired of starting projects I never complete in a decent way.

And I’m not sure which language I should use either. I could use Ruby but I’m afraid of the memory usage. I’m not good enough with Java to use that. Standard C could be an option but would probably be a bit overcomplex. The probably “better” choice for this would be C# so that I could use it directly on the computer I’m generating the file on, but then I’d like something usable on Linux too, so I would probably be forced to look into Mono for that…

If somebody has a suggestion, it’d be very welcome.

Making everything a computer: an upgrade odyssey

We’re all used to software upgrades. Gentoo users has to update their tree daily and they’ll probably find something new, unless they are running a full stable system. Windows users have to upgrade their stuff regularly, too, and Mac users the same (almost, having all three operating systems in my office at the moment shows me that Windows update are the most painful, as they require a lot more restarts, and they appear gradually, like after I installed Nokia’s software, Windows Update decided to show me some more upgrades from 2006 and early 2007).

Nowadays a lot of “hardware” that we used to consider absolutely unconcerned with the idea of upgrades started to need those upgrades too, like they were jealous of computers and their operating systems that can upgrade. Or more likely because they started to move from being microcontrollers to full-fledged minicomputers.

So nowadays you update the firmware of your cellphones: Sunday I updated my brother-in-law’s Nokia E61i to the last version of the firmware, that solved a few problems it had. I had to update the firmware of my E61 last year, to fix a SIP connection problem, and to see if that helped my problem of self signed certificates (it didn’t). My VoIP phone also needed three upgrades since I bought it, the first right out of the box, and two later on. My router has had three upgrades (and its software still sucks, I keep it only because it has a nice hardware capable to connect me to the network with as much noise as I have here, which is something that I was unable to find from any other router).

Don’t even try to look at the MacBookPro! It required firmware upgrades to the machine itself, to the_keyboard_, the optical drive, and twice already to the battery! Still in Apple’s house, the Airport Express takes care of its upgrades on its own luckily, while the AppleTV would be quite easy to upgrade if only… let’s not get there now though, ok?

BIOS upgrades on workstation start to be quite common, especially to fix processors’ issues and to support new processors. And speaking of processors, microcode updates are also quite common nowadays, which is something nobody would have guessed when we were still stuck with 80486.

GPS navigation systems have obvious need to update their firmware and their maps but it starts to be ridiculous for me that I, although not owning any, have to keep three of them updated!

I was impressed by the way PSP updates its firmware by the way, just try to play a newer game and boom! it asks you to upgrade the firmware from the UMD itself. Nice way to force people not to limit themselves to older crackable firmwares, indeed.

And now this came to the area from which my considerations started to write this blog: the PlayStation 3 had a firmware upgrade today. A quite long one because I was messing with the network settings at the time and didn’t consider it would have restarted from the beginning to download the new firmware. The funny thing is that i bought it less than two weeks ago, and this is already the second firmware upgrade (the first was out of the box). Slick, uh?

Add to that the new router I’ve made a friend of mine buy today (his old router was a crappy 11b one, a very bad one in many aspects, and he wanted something nice and working): it needed a firmware upgrade right away or it was unable to forward ports through NAT. Ridiculous!

And in all this, I still haven’t been able to play with my DVD writer’s firmware .

I just wonder how much time I’ll have to spend upgrading and upgrading and upgrading.

USB chargers and solar backpacks

So today my Nokia E61 battery discharged (after a full charge last night) after a few hours of 3G UMTS connection through bluetooth. I think this means that battery itself is wearing out. I’m considering getting a new one, but an original one really costs too much at the moment (€48!), I’m looking around to see if I can find alternative versions.

Also, I’m thinking to get an USB charger for the E61, possibly a cradle charger. USB would mean I don’t have to hook up a 220->12V converter, which would waste energy unless I unplug it every time; the 220V conversion is already taken care of by Enterprise’s PSU. The reason why I’d like a USB cradle charger is that it’s nicer to have on the desk.

I’m also pondering about replacing the wireless mouse. The one I have now isn’t entirely bad, it’s the one in the LX700 Cordless Desktop by Logitech, but it’s ruining itself, and it’s carged through a 220V converter rather than via USB, I have no clue on why that was designed this way. If anybody can suggest me a Logitech wireless optical mouse with a USB charger cradle, I’ll be considering it seriously.

On a different level, I wonder if anybody reading my blog ever bought a solar backpack like the ones from Voltaic Systems. I’m tempted by this one before summer. I’ll have to see if they support the MacBook Pro charger, but if they do, well, maybe I can use it to power my laptop in the garden, so that I can stay for as long as I want outside rather than inside.

And yes, I do feel green today.

Looking for a Python coder with a Nokia phone

This is a request for all my readers, especially those who might want to start on Free Software development but they can’t find something to cut their teeth with.

As you might or might not know, I’m an half-happy user of a Nokia E61 phone (for the americans, it’s the original full version of the E62). It’s a Series 60v3 phone, running Symbian OS. Finding opensource software for it is kinda difficult, but not impossible. Writing good apps from Linux is near to impossible though, because the SDK is only available for Windows.

Now, I’ve seen the other day about PyS60, a Python interpreter for S60. It’s interesting as it seems to provide access to all the important informations, allowing to write software for S60 without the hassle of needing a full Windows system.

Even more interesting is that there is a python implementation of Jabber protocol. I was unable to find a decent S60 native Jabber client, the Java ones I found are obnoxious, and don’t even connect to GTalk here. Otherwise the other option is to use a 3rd party service to “bridge” the connection.

I currently have MSN support through the official Windows Live client, but I’m more interested in having Jabber/GTalk support on the phone, as I do use it for more professional reasons.

I don’t have time, not at the moment, to write one client myself, especially since doing that would be taking up time which I’d rather spend on stuff that matters to more people, like the ruby-elf work.

So, if there are any python coders with enough free time on their hands, and a Nokia phone for the obvious testing, I’d be quite glad to be a betatester for a PyS60 free software jabber client :)

Argh! My E61!

So, I’ve been using my E61 quite a lot lately, because of the temperature here, I’m using it to read mail, chat and IM from my room, without having to have PCs on, as they make the room even more hot than it is by itself.

Unfortunately, I’ve also started experiencing connection problems with wifi in my room, probably due to the increase in client I have connected (two laptops, an Airport Express with the printer, the OpenWRT router that connects my main network segment – where the workstations are – to the Internet gateway, the E61 and the Nintendo DS). The bad thing is that lately it also started rebooting itself when the wifi connection was lost.

This wouldn’t be that bad, annoying yes, but not bad, I would just have to restart the applications and connect them back, and then it should be okay.. too bad that tonight things got worse: after the reboot, almost every application couldn’t start from the SD card anymore..

And it’s not even the first time this happens, it’s probably the third or fourth, and starts to get annoying. I bought a 1GB mini-SD card for that phone so to avoid using the internal memory, but if I have to re-install everything every other day, I start to wonder if I wasted my money on that phone.

It’s a nice device, and I got clients for IRC, MSN, ICQ (thanks Caster!), I just miss a jabber client, but the reboots and the memory corruption is not something I want to deal with.

I suppose tomorrow I’ll have to call Nokia support and ask them what the heck is going on with my phone.

Can somebody tell me why can’t I buy devices that “Just Work™” out of the box? Not stuff I have to fiddle with? Being obscure configuration, firmware flashing (the OpenWRT router I’m using is because the only device able to understand that the WAN is reached through WLAN that costs less than €300 that I could find was a Linksys with a flashed firmware) or worse, I can’t seem to find a device that “just work”.

Even the software of my LCD TV turned me off when I found that the picture slideshow is NOT able to cope with images that have a size proportion different from 16:9, as they are always stretched and you can’t get it to fill the screen with black bars (I would have liked to read downloaded comics on it, but as it is it’s not feasible).

The only thing that was truly working out of the box after configuring two parameters was the Airport Express, so as much as you people hate Apple, I have to say that they are at least able to provide devices that do work out of the box.

Now of course I could also see the positive side, as devices never work fine out of the box, technicians will always be needed, and I’m a technician most of the time, still, I’d gladly find a different job road if devices started working fine. Who did think that the situations in Star Trek where engineers always had to deal with broken transporters or messed up holodecks were too far fetched?

Self-signed certificates on the E61: failed.

I’m not sure if you remember, but last Christmas I blogged about my need to find a way to allow my smartphone (a Nokia E61) to automatically accept the certificate file for my IMAP server, to avoid having to accept it every time when I want to check my mails.

Well, I originally thought it was just a problem of format, as a lot of places on the net talked about the need to convert the PEM certificate to a DER certificate, and then download it with the internal browser from a properly-configured webserver (properly meaning the certificate is served with the mime-type application/x-509-ca-cert), but then it wasn’t enough, I thought it was a problem of size of the certificate (over 1024 bits it doesn’t seem to be supported) but it wasn’t the case either, and the last idea I had was that the problem was with the firmware version.

Unfortunately last month when I asked a friend of mine to help me updating the firmware on the phone, the download process on his laptop (with Windows XP) took more than three hours, then we shut everything down, as it was coming late, and the download wasn’t complete yet. I tried upgrading through a (demo) version of Parallels Desktop for Mac OS X, but it didn’t help either, today I tried on vmware-server, and there it worked fine, without the problems with disconnection and reconnection of the USB device that Parallels suffered from (probably while the device was being reconfigured to provide a different interface to check the phone model, serial and firmware). The firmware upgrade process went fine and easy, in about thirty minutes just like Nokia wrote on the site, I’m not sure what was wrong with my friend’s laptop, nor I care much at this point, if I have to be blunt.

But, not even the firmware update helped me.. so I decided to investigate further: the posts on the web about the configuring the E61 (or the USA-marketed E62, which should just be a crippled version of mine) mixes information about the addition of extra Certificate Authority certificates with requests for help with self-signed certificate. As soon as I considered this, light shed into my mind and I found the problem: the Nokia E61 does not support self-signed certificates; this is an absolute, and there doesn’t seem to be a way to get around this. What you can do instead is create your own Certificate Authority, load that certificate on the smartphone, and then use it to generate your own SSL certificate; this solved the problem for me entirely.

If you need an easy way to build a certificate authority certificate, and to create a new certificate signed with that, you might want to look in the openvpn’s sources’ tarball, that contains an easy-rsa directory with a series of scripts that really helps on that matter.

By the way, the reason why I updated firmware was also to enable the VoIP features, so that I can have a landline-like number routed on my phone while I’m at home (or anywhere where a WLAN can be found) allowing me to receive calls directly without passing through my family’s number.

Ranting about Nokia’s development kits

I bought my E61 smartphone last December, because my other UMTS phone broke and I didn’t have time to return it to the customer care to be repaired or replaced (by the way, I just gave it to a friend of mine yesterday, and he’ll get it to the customer care next week, just to say how much time I had since them to actually get my stuff repaired). I quite enjoy it, because it’s a nice piece of hardware, WiFi support allows me to use it at home without having to use UMTS (which, even if my carrier is quite honest with its price, is still far from cheap), and in case I don’t have my usual ADSL available, it’s still useful to check my mail (like today during the blackout, I was able to answer my work’s mails through GMail’s nice J2ME software, and the UMTS connection).

One thing I failed to find, though, is an application to write to my blog. Typo’s web interface is not going to work on that phone, because the browser does not allow me to scroll down to see the bottom part of the textbox I’m writing into, so I end up writing blindfolded, quite a bad thing to do with a thumb keyboard: while certainly nicer than the awful T9 typing method – I like Motorola’s implementation better – it’s still difficult not to make any mistake.

I found some J2ME-based applications that were supposed to actually work, but one didn’t even install, one seems to provide the date for XML-RPC postings in a format Typo can’t understand, and another has the blog servers hardcoded to blogspot and another service, thus useless.

Add to this that the original sound recorder only records 1-minute notes, and that the only application I found to make a good recorder out of the phone is a $20 proprietary application that writes in AMR or WAV formats only, and you can see why I was interested in at least try to get to work on some application myself (I was hoping to be able to use Speex for a voice recording application, that would be more practical to me than AMR).

Anyway, I looked up some links, and I found an interesting Xcode plugin to develop for Symbian with Apple’s IDE. Unfortunately, S60v3 SDK is not supported, and that is what my phone runs.

So I looked up some instruction to develop under Linux, and I found a page about that too, unfortunately, it always needs Wine installed and set up to be used. Sigh.

The Nokia’s proper way would be to use Carbide.C++, an IDE available also in a free as in soda “Express” version (hopefully enough for what I need), that is based on Eclipse. Good then, it’s Java, should work just as fine… if this was a perfect world of course. Beside the installer being an InstallShield application, there are a lot of extra plugins for Eclipse that probably are the Nokia’s SDK by themselves, and all of them are Windows native DLL Java extensions.. JNI .

And this is not yet over: even wanting to run Carbide.C++ on Wine, to use it you need to install ActivePerl, that in turn requires Windows Scripting Host even to just run the install! And of course, to download WSH you need to pass the Windows Genuine Advantage check, which means I’m back to square one.

Now, Nokia seems to like talking about opensource and also seems quite involved with the Maemo platform that you see blogged about almost weekly by people at Planet Gnome and sometimes Planet FreeDesktop, but they do nothing to allow people working on Linux to develop for their platform, which is, in my opinion, kinda stupid.

We have a lot of good developers using exclusively, or at least mainly, Linux or *BSD. I’m not asking Nokia to opensource all their tools, as I can understand some of them are probably covered by code they didn’t write themselves, but at least they could write it in Java entirely, giving a chance to people using other operating systems to use them.

Now my only choice to write the apps is to use J2ME, that while free, I don’t really see proper to write an on-the-fly encoder.

Nokia: I’m not really that satisfied with your SDK policy, not at all.

Runabout and Intrepid

I’m telling the tale of two new boxes in my network, that are being tested and used all day long.

Intrepid is, as you might have already read, my new MacBook Pro Core2Duo, on which today I started to install Gentoo Linux (AMD64 of course). Unfortunately, well, I got into a little problem when I started installing, because I partitioned using fdisk after running BootCamp, so then GPT and MBR were out of sync, and both OSX and rEFIt weren’t sure of what was going on. I then decided to copy all the content of the installed root and then restarted from scratch.

As I wanted to have a swap partition (just to be safe, or if I ever decide to use software suspend), I then decided to first create the Windows partition with BootCamp, and then fiddle with the partitions directly on the GPT. Thanks to Daniel Ostrow, I then used the same method used on IA64 (GNU parted), and the result is, well, that the partitioning worked! YAI! :)

One problem I have now is that rEFIt shows as bootable also the swap partition, but that can be worked around somehow, I hope (actually I’m just trying to see if by using parted to set the boot flag off on sda3 and then on on sda4 it would help.. no…).

Runabout instead is a new name, a new box… if you can call that a box, it’s a Nokia E61 smartphone, that I bought to get back my 3 number while I’m without the V1075… afterward, it will become my work phone. It was suggested to me by a friend of mine, Andrea, who has similar tastes to mine (although I don’t usually like Nokia as much as he do); I decided to spend money and buy this on his suggestion, as I also got the first payment for my current job, which allowed me to spend a bit more money than usual for once.

Although I was skeptic at the start, after playing with the E61 for a while, especially with the WLAN settings, the email setup, the Web browsing, I had to agree with my friend, it is an interesting device. I also found a PuTTY port that will allow me to connect via SSH to my boxes directly from the cellphone (that’s the final tool for a geek system administrator!), and an IRC client, both Free Software, which is pretty good.

The hostname (Runabout) I reserved some time ago for whenever I had a PDA, and seems the time came, finally :)