New papers

I’ve been writing a few papers over the past few months. Two of them are now on my publications site:

Both papers are about service oriented architectures. The first one tries to bridge my earlier work on variability to the domain of web services and service grids. I see the latter as the emerging defacto integration technology. This facts makes it a likely candidate for becoming the backbone of many software product families and populations. Barring real time constraints, web service technology is really well suited for integrating large sets of independently developed subsystems and components. The second paper presents our views on mobile architectures and how to integrate services on the mobile client.
You may have noticed a few SOAP related blog posts here over the past few months. I’ve been learning a lot both about the technical and architectural aspects of web service technology over the past few months. As you may have noticed in these previous posts, I have some mixed feelings about the current standards and especially their implementations. On one hand they solve real problems; on the other hand the level of complexity for the simple use cases is unacceptable.
From the architectural point of view I’m much more enthousiastic. I see the current level of technology as promising but riddled with child deceases (and acceptable for many use cases despite that). I’m confident that upcoming third and fourth generations of both web service concepts and technology will be much better. Both industry and technology vendor seem to get a better grip on the concepts, something that was definately lacking in the first generation web service technology.

There are two more upcoming papers that, if accepted, I will be able to put online towards the end of July.

ubuntu breezy to dapper upgrade

I still have my old pc sitting next to my new pc. A few months back I installed ubuntu on it. Since then it has just sat there doing nothing. Occasionally I boot it into windows to retrieve some file I forgot to migrate. These occasions are getting very rare now. Soon it will be time to dispose of the box.

Anyway, I’ve been reading that ubuntu breezy is soooo 2005 and that ubuntu dapper is all hot and new. So I’ve attempted an upgraded. Forget about user friendly-ness. The procedure for this requires command line usage. But I’ve handled Debian before so that does not scare me. It’s not like the ubuntu installation is important to me anyway (and yes, I managed to mangle quite a few Debian installs attempting stuff like this. In my experience apt-get dist-upgrade is dangerous stuff).

For the record, it’s a vanilla ubuntu install with the kubuntu package installed and the kdm login manager installed. It should work just fine. Other than that, I did nothing to it other than trying to get it to work properly (which I eventually managed to do as reported earlier) and install Java and eclipse.

Here’s the proper procedure: use ctrl+alt+function keys to find a non graphical console. The update procedure will include all your X, Gnome and KDE stuff. Replacing it while it is running is not a good idea IMHO (it might actually work but I didn’t care to find out the hard way this time).
OK, now login. Fix /etc/apt/sources.list by replacing all occurances of ‘breezy’ with ‘dapper’. Type sudo apt-get update. This updates your package database with the dapper packages. Now (fingers crossed) type sudo apt-get dist-upgrade. Apt-get now asks you if you are sure that you want to download 750MB (in my case) and really want to install or upgrade 1000+ packages. I said yes, you should say no unless you are sure you want this. Since then it has been downloading and installing stuff by itself. Cryptic messages about packages installing and configuring themselves fly by way to fast to read. Clearly, stuff is happening!

Now, I’m writing this while it is happening. Since that takes quite some time, let me elaborate on my expectations. As said earlier. I’ve dist-upgraded debian installs before. Usually to testing and I even got to unstable once (bad idea, it really was unstable). Usually it works fine, provided both the starting source and target of the procedure are stable (Debian testing by definition is not so your mileage will vary). Worst case for me was ending up with a situation where nothing worked anymore. Best case, it just worked. Ubuntu claims to be enterprise ready. If it fails here it is not.

OK, it finnished. The whole process took about an hour (excluding download). I did a sudo reboot (I’m a windows user).

Problem #1: ubuntu boots nicely to the text console. Solution: it’s not a bug but a feature, ubuntu remembered that I was on a text console when I rebooted. Good thinking?!

Whoo, new kubuntu login screen. No more nasty shades of shitty brown. Oh wait this is just the default KDE look (nice). Log out, login into gnome. Looks like shitty brown is back on the menu :-(.

In short, the upgrade seems to have worked just fine. The little preferences I had seem to have migrated. Including my x settings; my manual install of java and eclipse; and a terminal icon I dragged to the desktop.

Other than this. My main points in my previous review still stand. Despite some slight improvements, menu layout is a mess; the theme looks shitty and the commandline is still required for non trivial stuff like performing an upgrade or configuring X properly (though admittedly I did not try the new installer; merely assuming it doesn’t do a better job than the previous version).

Some afterthought. I installed koffice. The icons only show up in the menu when I use KDE. I guess this unified menu shit is only skin deep.


I just tried out yamipod. I managed to make it crash in less than 20 seconds (launch it, click help menu, crash!). This is the second time I tried it out and the second time it crashes on me before I even get around to doing anything with it. I won’t try it a third time.
In short, poorly written app: don’t put any valuable data under its control, including music.

jedit plugin manager

I tried to install some plugins in jEdit, my favourite programming editor (for things other than Java, for that I use eclipse of course). I got some IO errors trying to install some plugins in the plugin manager. Since this has happened before, I looked into it and found a solution to the problem:

  • go to Utilities->Global options
  • Select plugin manager
  • click ‘update mirror list’
  • select one of the alternatives

Apparently the problem is that the default repository url in jEdit is no longer ok. Changing it to another one fixes that problem. Since the whole point of jEdit is using the many plugins that are available this is a pretty critical thing to fix.

Anyway, I’m glad to see that development for jEdit seems to be picking up again. I noticed that the 4.3pre4 release is fairly recent. Also the sourceforge page shows that there is a healthy activity on the core jEdit source code. I’m glad because it started to feel like this project was more or less dead. Jedit is pretty unique, all the other editors have (much) less features.

Nice Photo of Helsinki

I did not take it myself but it gives a good overview of where I live (click for fullsize photo):

Helsinki seen from above

As you can see, I live quite close to where I work. It’s about a 15 minute walk. The historical center with the south and north harbor is a little further (top right).

New photos

I’ve been taking photos with my new Canon S80. However, editing (correcting color balance and curves mainly) all that is quite a bit of work. I finally found some time this morning and three new directories have been added to
Check here for some April pictures of Helsinki. Here for a few family snaps from my Eastern holiday and here for my visit to Talling late April. Notice that in the same month we went from frozen harbor to enjoyable spring weather in Tallinn. Basically, spring lasts about two weeks here.

Paticularly the Tallinn photos are very nice. The weather was a bit grey at first but turned quite nice at the end of the afternoon.

market square

Impressive IT project

The, one of the sites I regularly visit for Java related news today posted a link to this case study.

The case study describes an EJB based software system that runs the health care system in Brasil. When I say “runs the health care system”, I mean that for example in Sao Paulo, a city with 20 million inhabitants, all health centers are based on and interoperate with this system. That is a seriously impressive achievement.

Healthcare software is notorious for so-called island automation meaning that basically the IT infrastructure of health care organizations consist of many incompatible islands of software system that simply refuse to work together in a meaningful way. Brasil fixed that. Both from a technical point of view and a organizational point of view that is a very impressive achievement.

I was in  Dutch hospital three years ago. They gave me a plastic card with holes in it, aka. a punchcard. My health record actually lives in a software system that uses punchcards! I find that a disturbing thought. In most civilized countries, the IT infrastructure in the health sector is comparatively fragmented or worse. E.g. the US health system is notorious for being one of the most expensive (per capita) on this planet and also for having a comparatively low quality of service. Also a significant part of the population is uninsured.

Dutch politics

Today, I’m making a rare exception and will post a little opinion piece on politics. Basically, something outrageous is happening currently in my home country, the Netherlands.

The last time when my home country made the international headlines, as it is no doubt about to do again now, was in 2004 when Theo van Gogh, a movie director and columnist, was murdered by a muslim extremist. Pinned to his body with a knife was a letter threatening Ayaan Hirsi Ali, an outspoken member of parliament. The brutal murder and political aftermath became world news with headlines on CNN, articles in leading news papers etc. In the aftermath of that murder and amidst significant unrest in muslim and right wing extremist communities, the Somali born politician Ayaan Hirsi Ali received serious dead threats and has since been living a not very enviable life of continuous police protection, frequently moving, etc. Her life of the past three years is not unlike that of Salman Rushdy. Nevertheless she continued to be outspoken and did not bow to the terrorist threats. For that she has been recognized last year as one of Time’s 100 most influential people. Basically, she’s a highly respected politician and intellectual (nationally and internationally). Though I don’t agree with everything she says I have a lot of respect for what she says, her rights to express her views and how she makes use of those rights.
Now something is happening that is outrageous. Essentially, it boils down to that her Dutch nationality (she’s a member of parliament!) is being revoked by a minister from her own party.

Eh, let me explain that again: Ayaan Hirsi Ali immigrated in the early nineties and managed to get a residence permit and later the Dutch nationality based on the fact that she was a political refugee. To provide some historical context, this was around the time things got really ugly for the US peace keepers in her home country. As she later admitted, she did lie about a number of facts (including her name) during that legal process. This was well known when she made her switch from the left wing PVDA party to the conservative VVD party and apparently communicated explicitly to VVD seniors during that transition. Subsequently, she became a member of parliament for that party (and got a lot of people to vote specifically for her). Ambitious, outspoken and sometimes controversial is a good characterization of her career since.

Fast forward three years. A tv documentary again highlights the fact that Ali has lied during the immigration procedure. She’s never denied that and has in fact been very candid about it in interviews over the years. In other words nothing new was presented. I suspect that the intention of the makers of the program was to merely highlight the harshness of recent immigration politics by contrasting it with the background in this respect of a popular and respected politician.
Enter Rita Verdonk, a former immigration service civil servant and now the first minister of immigration, ever. Arguably, this is a very controversial job and personality. She is very outspoken on immigration issues, generally favoring the hard line (I’m phrasing it politely). Interestingly, like Ali, she has a left wing history (communist symphaties in her youth). However she now is a member of the conservative right wing VVD (also Ali’s party) and competing for leadership of that party in the upcoming election (next year, or maybe a bit earlier now). She decided over the course of 24 hours first that she sees no reason to act on the documentary, then an investigation was launched anyway, and now Ayaan Hirsi Ali’s is being denied her Dutch citizenship (by Verdonk, with approval from prime minister Balkende) and will be forced to give up her seat in parliament and has a mere 6 weeks to fight this in court. I related news, she is being forced out of her house because neighbours complained about the devaluation of their property due to the continuous police protection.
WTF! This redefines the notion of backstabbing.

Anyway things are happening fast now. Apparently Ali has already decided to emigrate to the US where she will work for a conservative think tank in Washington. This latest incident is merely causing her to speed up her plans. Essentially she’s giving the finger to the people currently stabbing knives in her back. I can’t blame her but regret that this is even possible in my home country. This is the ultimate failure of this government to provide adequate protection to her.
I would not be surprised if this is going to be the final excuse needed to pull the plug on this impopular cabinet. I don’t see how decent politicians can continue to involve themselves with Verdonk. But then she managed to survive earlier incidents involving e.g. the expellation of a kosovo girl (17) who speaks fluent dutch and was about to enter her highschool exams; the expellation of gay/christian refugees from Iran (with the explicit message that they should cover up their views to protect themselves back in Iran); and the expellation of people to such stable democracies as Sierra Leone. These incidents and many others have made her popular with anti immigration right wing people and extremely impopular with other people (including me).
It’s just one of the reasons I don’t mind living in Finland right now. Finland is nice country with stable & boring politics. My home country can learn a lot from this sparsely populated country.

Axis2 – 1.0 First impressions

I’ve had some opportunity to play around with the newly released Axis2, apaches web service framework and container. Essentially this is a complete rewrite of Axis 1.x which is why it is called Axis2 – 1.0.

This brings me to the first point of criticism: This is needlessly confusing. It is really a completely separate product and the two products sharing, for example, a mailinglist makes no sense at all (just annoys users of either browsing through the messages). It should have a different name and its own mailinglist.
Then the 1.0 status. Traditionally 1.0 is associated with a certain level of quality and feature completeness. With axis2 – 1.0 this is undeniably not a 1.0 by any standards. A few points of criticism:

  • It contains obvious flaws. For example, generated client stubs throw Exception instances rather than something a bit more specific. In my book that is a bug, not a feature. Lots of things can go wrong in a SOAP clientstub, I require more detailed feedback.
  • Documentation is plentyful but inacurate; incomplete and downright misleading and does not address the obvious use cases. For example, using anything else but RPC style SOAP requires you to provide manually written WSDL. The provided non RPC examples work but the server is unable to generate WSDL for them. This makes them rather useless. Second of all, it is not actually documented how to do an RPC style SOAP service.
  • Error feedback is non existent. For example, a classnotfoundexception I know occured because my buildfile was not including something never made it to the tomcat console. This means that deep down in the axis code this exception occured, was caught and not logged or rethrown. If I sound annoyed, the reason is that I just spend a frustrating couple of hours getting a simple web service to work. Sure I made mistakes and in none of the cases I managed to get meaningful exceptions or log feedback. I must have triggered a few dozen common failure points and axis was just sitting there pretending everything was alright while it definately was not.
  • The default dependency on log4j messes up my usual logging configuration (and might actually be the cause for the previous). I am of the opinion that log4j is a legacy component that should never be depended on directly.
  • The aar concept is poorly thought out and poorly documented (none of the documentation explains that contained jar files have to be in a lib directory, failure to put them there will result in unlogged classnotfound exceptions). Any non trivial service will have library dependencies and will require external configuration. For example, I use hibernate which requires me to modify the service container and break encapsulation to add a jndi ref to the database. How many meaningful services without at least a database connection are likely to be created? The point is that aar’s do not encapsulate the web service and its dependencies fully. On top of that hot deployment is broken in tomcat (release notes say this). A cold start sometimes runs into trouble with apparently cached stuff left in various directories (this might be a tomcat problem). Solution: remove work directory and subdirectory of conf.
  • The generated client stub code is crap. For a start, it doesn’t seem to respect code conventions; contains newlines in weird places and seems to be a container for several nested clasess. On top of that error handling is poorly implemented: this generated code will cause its users lots of misery. And then as mentioned above, there is actually this fragment “throws Exception” in several methods. Inexcusable.
  • The client stub when used complains about log4j not being configured. That is correct, I never use it and have no desire to use it. As stated above, the dependency on log4j is a bug and not a feature. Apache commons.logging, which is used in many other apache projects is included as well and fully prevents the need for log4j. Removal of the log4j jar file actually breaks axis currently!

Does this mean it is a bad product? Yes and no. If you regard this as a middleware component to be integrated by e.g. geronimo, it’s current state is probably acceptable since the integrator can fix things; provide documentation and provide proper tooling. If on the other hand you expect the thousands of axis 1.x users to migrate to axis 2 at this point then no way. I’m sure things will get better from here on but there is a lot of work to do before I would recommend anyone to migrate. Production usage of axis2 at this point will be causing a lot of people a lot of headaches at this point.
At this point I am willing to deal with the issues above and will continue using it (mainly because I’m interested in using some of its features). However, this is in my book an alpha release, not even a beta. I’m used to more quality from apache and am honestly wondering what the hell happened there.