Travel from A to B

I’m going to pollute quite a bit of this planet since I will be traveling quite a lot next few months. The past few days I’ve been trying to book tickets and dealing with incompetent travel agencies and air lines. They really need to sort this booking tickets thing out.

The deal is perfectly simple: I’m in Helsinki and I want to go to St Quentin La Poterie, France (Le Gard district) to visit my parents in the south of France. The nearest airfields are Nimes, Marseille, Montpellier, Nice and Paris (more or less in that order; there are more airfields BTW and technically Barcelona is closer than Paris). I will have to rent a car regardless of where I fly. How hard can this be?

In short, there is no airline website capable of figuring this one out. I happen to know that my options are blue1, Finnair, SAS, KLM, and Air france. Blue1 and SAS are partners; so are KLM and Air France. Well that may be true on paper but their back end systems are not integrated, at all. Air France managed to provide me with the “best” offer, so I filled in my details (including credit card details) and then was redirected to a stupid pop up, in Finnish. WTF! So fuck you very much. No Air France this year for me. So I go to and they can offer me the same flight for 600 euro extra. WTF! No way. Fuck you very much as well! So I end up on good old, the overpriced but still cheaper variety of SAS with a direct flight from Helsinki to Nice. At 430 euro, this does not come cheaply but that is what you get for booking late in November. I spent about an hour figuring out what the alternatives were before finally selecting this one and I still have the feeling I’m being ripped off.

Originally I had planned to do something much more complicated. I asked the travel agency at work to book me a flight via France, San Francisco and Las Vegas spanning three weeks. The best proposal they could come up with was 4000+ euro. In my view this explains 100% why travel agencies are going out of business world wide. This is not what I wanted to hear. I ended up booking the flight to France myself and returning to Helsinki for a flight along this path Hki-Amsterdam-SF-Vegas-SF-Amsterdam-Hki combined with the hki-marseille-hki path that is quite a bit of flights that are somehow half the best the travel agency could offer me. Beats me. Arguably there’s some redundant air miles in this trip. Apparently it is impossible to make a sensible itinerary that has me travel to France before christmas, after christmas from there to San Francisco to Vegas and finally to Helsinki. I’m flexible on pretty much all the dates and I’m sure it can be done in less than 8 separate flights. My estimate is that I will be wasting enormous amounts of fuel on behalf of travel agency incompetence.

Anyway, enough bitching. I’m going to France, San Francisco, Las Vegas in the next few weeks. I’m very much looking forward to all of this! After that I’m also planning to go to Granada in late January for the Sensei project kick off.


Normally when I play with a new browser (like a few weeks ago when I tried out Flock 1.0) I usually post at least something. In the past week I played with no less than three new browsers.

I started out by installing opera mini 4.0 on my N95. Earlier versions of this program were already quite nice and I used it a lot on my E70 before I switched to the N95. This new version adds some impressive features again. Overall quite nice but I’ll probably use the S60 browser on my N95 most of the time regardless.

The second browser I played with was Apple’s Safari 3.0.4 beta. Unlike earlier betas, this one is actually quite usable and stable. I think the UI stinks and feels really awkward on windows but aside from that it is a fine browser. My main issue with it after a few hours of browsing was that I started missing my firefox extensions and some of its behavior. Additionally the fonts it uses are different from what I’m used to and I’m not sure I like the way it renders them. It uses its own antialiasing which gives a weird smudgy look to the fonts. But to be honest, I think I could get used to using Safari full time. A nice bonus feature is that it integrates Bonjour support. This is really useful because as you may have deduced from some recent publications on my publications site, I’m working with mdns based service discovery mechanisms at work. So I installed this at work and my aptly named foobar.local N800 portal website showed up in the windows Safari browser. Cool!

Speaking of Firefox, I just switched over to 3.0 Beta1 released last night. I’ve been using it all evening and it seems a quite nice upgrade. Most of the feature work is not that important to me but the performance work is really noticeable. I’ve caught myself several times already thinking “hey this used to be slow/laggy”. It’s mostly subtle differences of course and not having most of my extensions (due to lack of 3.0 port) is great for performance probably. But still, works great and seems really stable so far.

To compensate for the loss of extensions I was able to enable the most essential ones using the nightly tester tools. This allows you to override the version check. Since in many cases, a version bumb was all that was needed, many extensions work fine. So far I have just enabled support. What would be really nice is a new version of that that integrates with the new places system in Firefox. Until that happens, I’m posting to using the old extension.

A bit of a disappointment is that none of the exciting stuff regarding ms cardspace, openid and microformats that was more or less promised a few months ago, has made it into this release. There’s no openid support, microformat features are not integrated and I have not found any UI for MS Cardspace either. It could be that this is due in later betas. There is probably still a few months until the final release.

Feature wise, most of the changes are minor tweaks and most of those were not in Alpa 7 that I tried when it was released in October?. The biggest change is the new places functionality which is nice except (as mentioned) that I use instead of bookmarks so this not something I will use a lot. The rest of the changes are quite nice but not that essential changes to stuff like the downloads windows, various settings screens and the url bar. For the rest it is good old Firefox, and what’s wrong with that? Next betas will introduce an updated theme. I was less than enthusiastic last time they changed it and still am rather indifferent to the 2.0 theme, so lets see what comes out.

Anyhow, unless something major crops up, I’m keeping this as my main browser.

Google Android

Update: a slightly updated version of this article has been published on the Javalobby weekly news letter and on the javalobby site itself after Matthew Schmidt invited me to do so.

Update 2: The serverside has linked here as well. Readers coming from there, the version on Javalobby linked above is the latest and also has some discussion attached.

About an hour ago, Google released some additional information on the SDK for Android, its new mobile platform. Since I work for Nokia (whom I of course not represent when writing things on my personal blog, usual disclaimers apply), I’m naturally interested in new software platforms for mobile phones. Additionally, since I’m a Java developer, I’m particularly interested in this one.

I spent the past half hour glancing through the API documentation, just to see what is there. This does not provide me with enough information for a really detailed review but it does allow me to extract some highlights that in my view will matter enormously for platform adoption:

  • The SDK is Java based. No surprise since they announced it but it is nice to see that this doesn’t mean they are doing J2ME but instead use Java as the core implementation platform for all applications on the platform.
  • The Linux kernel and native libraries are just there to run applications on top of Google’s custom JVM Dalvik which is optimized for running on embedded hardware.
  • There is no mention of any native applications or the ability to write and install native applications
  • Particularly, there’s no mention of a browser application. Given Googles involvement in Firefox and their recent announcement of a mobile Firefox, this is somewhat surprising. Browsers are increasingly important for high end phones. Without a good, modern browser, Android is doomed to competing with low end feature phones. Browser seems to be webkit, the same engine that powers the iphone browser and the S60 browser.
  • Google has chosen to not implement full Java or any of the ME variants. This in my view very bad and unnecessary.
  • Instead a small subset of the Java API is implemented. Probably the closest is the J2ME CDC profile (so why not go all the way and save us developers a few headaches)
  • Additionally Google has bundled a few external libraries (httpclient, junit and a few others). That’s nice since they are quite good libraries. I’m especially fond of httpclient, which I miss very much when doing J2ME CLDC development.
  • The bulk of the library concerns android.* packages that control everything from power management, SMS to user interface.
  • I did not spot any OSGi implementation in the package; Google seems to intent to reinvent components and package management. This is disappointing since it is very popular across the Java spectrum, including J2ME where it is already shipping in some products (e.g. Nokia E90).

In my opinion this is all a bit disappointing. Not aligning with an existing profile of Java is a design choice that is regrettable. It makes Android incompatible with everything else out there which is unnecessary in my view. Additionally, Android seems to duplicate a lot of existing functionality from full Java, J2ME and various open source projects. I’m sure that in each case there is some reason for it but the net result seems reinvention of a lot of wheels. Overall, I doubt that Android APIs are significantly faster, more flexible, usable, etc. than what is already out there.

On the other hand the platform seems to be open so not all is lost. This openness comes however with a few Strings attached. Basically, it relies on Java’s security system. You know, the same that is used by operators and phone vendors to completely lock down J2ME to restrict access to interesting features (e.g. making phone calls, installing applications). I’m not saying that Google will do this but they certainly enable operators and phone vendors to do this for them. This is not surprising since in the current market, operators insist on this, especially in the US. The likely result will be that Android application developers will have to deal with locked down phones just like J2ME developers have to deal with that today.

The choice for the Apache 2.0 license is a very wise choice since it is a very liberal license that will make it easy for telecom companies to integrate it with their existing products. Provided that the Android APIs are reasonably well designed, it may be possible to port some or all of it to other platforms. The Apache license ensures that doing so minimizes risk for underlying proprietary platforms.

Additionally, the apache license also allows for some interesting other things to happen. For example, there’s the Apache Harmony project that is still working on a full implementation of Java. Reusing this work might of course also make much of android.* redundant. Additionally, there is a lot of interesting mobile Java code under eclipse’s EPL, which is similar to the Apache license. This includes eSWT, a mobile version of the eclipse user interface framework SWT. Eclipse also provides a popular OSGi implementation called equinox. Again, lack of OSGi is a missed opportunity and I don’t care what they put in its place.

Frankly, I don’t understand why Google intends to ignore the vast amount of existing implementation out there. It seems like a bad case of not invented here to me. Ultimately this will slow adoption. There’s already too many Java platforms for the mobile world and this is yet another one. The opportunity was to align with mainstream Java, as Sun is planning to do over the next few years. Instead Google has chosen to reinvent the wheel. We’ll just have to see how good a job they did. Luckily, the Apache license will allow people to rip this thing apart and do something more productive with it. OpenMoko + some apache licensed Java code might be nice. Also our Nokia Maemo platform can probably benefit from some components. Especially the lower level stuff they’ve done with the VM and kernel might be interesting.

Dutch beer

While doing my shopping today I encountered a whole pile of six packs of “Royal Dutch“. On closer inspection of this beer that I never heard of, I learned that it is actually brewed in license of Posthorn, a brewery based in my home town (if there is such a thing), of Breda. WTF! I have never heard of this brewery and I was born in the damn place. Googling for Posthorn, or post hoorn as it would no doubt be spelled in dutch I was not able to bring up much more than this. A pretty sad party center on the Haagweg. Note the rather generic, mirrored logo on the can here.

Knowing something of Breda beer history, this is probably what is left of the Oranjeboom beer that until a few years ago was brewed in Breda. Basically interbev liquidated (pun intended) the whole brand and closed down the brewery in Breda. I have no idea what the Royal qualification in Royal Dutch refers to. I don’t imagine our water managing crown prince Willem-Alexander of Orange (aka. prince beer) had anything to do with this.

Of course Post Horn duely added water to meet the Finnish super market beer upper limit for alcohol of 4.7%. I must say, it tastes better than the average finnish beer. Similar to Becks if I’d have to pick something similar. I’ve tried several different Finnish brands in the nearly two years I’ve spent here and basically have decided that any non Finnish beer is probably better than any Finnish beer. I’ve sampled some pretty obscure foreign brands, even from my own home country, and they all taste better than boring Olvi, Karhu, Lapin Kulta or Koff. Especially the supermarket varieties of those are filthy stuff.

This Royal Dutch, is the second brand of fictional dutch beers I’ve encountered in the supermarkets here. The other one is labeled “Amsterdam”, which is apparently not worthy of the Grolsch brand of the beer company that produces it. Grolsch actually is pretty nice and I’ve even encountered a Finnish 4.7% export version of it in some supermarkets. Complete with the obligatory “beugel” bottle. Amsterdam is a pale shadow of this and indeed not worthy of the brand.


I just installed Flock – The Social Web Browser. Right now I’m trying out the blog editor included with it to write this little review. To cut the review short, I’m planning uninstalling it after publishing this post.

Lets just start by saying that this feels like a nice bunch of concepts and potentially useful Firefox extensions but not as a drop in Firefox replacement. Besides, the default theme feels rather amateurish and I already miss my dozen Firefox extensions. And while I am pleased that it supports Facebook, I find the lack of support for much else a bit disappointing. For example, I’m also on Linked in; phib; claimid. I have several openid logins; I use several Google services, including reader, gmail and calendar. All of these are unsupported by the self proclaimed social web browser. Hell, it doesn’t even integrate webmail from e.g. google, yahoo or microsoft (I have accounts with all three). You can find an overview of social networking sites I use on my blog: Most of the stuff there is unsupported by Flock.

An exception seems However, the extension functionality I get in Firefox is much better than the bundled support in Flock which is rather useless. Similarly, the blog editor is nice but nothing I can’t get using several Firefox extensions. I suppose the facebook sidebar is nice, but again there is also a firefox extension for that.

A rather novel feature seems to be the media bar. However, in its current incarnation it is limited to harvesting media from just a handful of popular sites like facebook (again), youtube and flickr. That’s nice but not all that useful to me.

So overall I have a bit mixed feelings. On one hand, this feels like a polished product, on the other hand there’s not much that I can’t get installing a few Firefox extensions. With Firefox 3 around the corner, I’m not planning to use Flock 1.0 based on the old Firefox without most of the extensions I can’t do without. Nevertheless, there’s some good ideas that I would like to see adopted in the form of Firefox extensions.

Tags: , , ,

And another Stockholm photo

Other side of the bridge

When shooting the panorama in the previous post, I actually shot 7 images doing about a 270 degree circle, handheld. Of course I realized that the fence and hugely distorted angle would make most of the shots unusable. So I just stitched the first three and got the nice panorama posted earlier.

Then, just for the hell, I tried if I could stitch the other side. The fence would be a huge issue due to parallax error that basically no software can fix. It’s basically a worst case scenario since in each of the three shots the perspective is very different due to the close proximity to the fence. Or so I thought. I loaded the three shots up in hugin and let it do its magic of finding matching points and then doing some severe transforming on the images to make them line up. The end result is near perfect except for 8 spots where the cables don’t quite line up. I fixed those by pasting over a slightly transformed bit of nearby cable. It bends a bit in a odd way when watched at 300% magnification but it doesn’t seem to distract. Overall the end result is near perfect.

Photos Stockholm and Seurasaari

I’ve uploaded two batches of photos to my photo site: from a recent trip to Stockholm and some photos I took from Seurasaari just behind my house.

Here’s a few samples:

My neighbourhood seen from Seurasaari.

This beautiful picture was taken in August when me and my friend Mark who was over for a weekend visited the open air museum on Seurasari which is behind my house on a island connected to the mainland by a bridge. To get to where I took this photo is a very nice 5 KM walk along the coast. In the distance you can see Hietaniemie beach and a few rows of buildings. One of the rooftops behind the electricity pole on the right is where I live.

View of stockholm

The panorama photo above was taken from the Katarinahissen on the photo below during a visit to Stockholm where I spent a weekend with my father. The Katarinahissen connects lower Södermalm to the bit of the city situated on top of the 20 meter hill. Sadly the elevator was out of order so we took the stairs. My father and I have been on several trips in the past few years. We went to Berlin and London in 2005.


Web application scalability

It seems infoq picked up some stuff from a comment I left on the serverside about one of my pet topics (Server side Java).

The infoq article also mentions that I work at Nokia. I indeed work for Nokia Research Center and it’s a great place to work. Only they do require me to point out that when making such comments I’m not actually representing them.

The discussion is pretty interesting and I’ve recently also ventured into using other things than Java (mainly python lately with the Django framework). So far I dearly miss development tooling which ranges from non existent to immature crap for most languages that are not Java. Invariably the best IDEs for these languages are actually built in Java. For example, I’m using the eclipse pydev extension for python development. It’s better than nothing but it still sucks compared to how I develop Java in the same IDE. Specifically: no quickfixes; only a handful of refactorings, no inline documentation, barely working autocompletion, etc make life hell. I forgot what it is like to actually have to type whole lines of code.

I understand the development situation is hardly better for other scripting languages. There’s some progress on the ruby front since Sun started pushing things on that side but none of this stuff is actually production quality. Basically the state of the art in programming environments is currently focussed primarily on statically compiled OO languages like Java or C#. Using something else can be attractive from for example language feature point of view but the price you pay is crappy tooling.

Python as a language is quite OK although it is a bit out of date with things like non utf-8 strings and a few other things that my fellow country man Guido van Rossum is planning to fix in python 3000. Not having explicit typing takes some getting used to and also means my workload is higher because I constantly have to use Google to look up stuff that eclipse would just tell me (e.g. what methods and properties can I use on this HttpResp object I’m getting from Django; what’s the name of the exception I’m supposed to be catching here, etc). In my view that’s not progress and leads to sloppy coding practices where people don’t bother dealing with fault situations unless they have to (which long term in a large scale server environment is pretty much always).