No more rumors

The rumors are true. I have married Sabine.

It happened on Wednesday and it was a lovely day because it wasn’t too warm and small clouds where all over the sky which was perfect for taking some outdoor pictures after the ceremony. For lunch we went to a local restaurant. Our parents had organized a champagne reception and Sabines sisters an ice cream bomb as dessert.

In the evening Sabine and I went to a local cinema for viewing the new film about Harry Potter. All in all a very happy day.

On Saturday we will also have a churchly ceremony and a “small” (eve-of-)wedding party.


In software an action results in most cases in a reaction. You don’t get a reaction on silent failing, silent success or just not implemented stub functions. If you get an reaction often you could guess the kind action you submitted from the reaction. To be concrete – this should be the case for error messages – but it isn’t always. As you may guess the following error message has nothing to do with a buggy JavaScript function:

Error: uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMLocation.href]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: :: DeCryptMail :: line 37" data: no]

In fact it was the mail protocol handler application setting. The automatic detection (which is the default and it was my setting) found – as expected – the kmail program. I needed to manual set the path to “/usr/bin/kmail” to make everything work.

Many thanks to charms who had the same problem.

Eclipse DemoCamp Galileo Review

The DemoCamp which has been organized by b+m (my self) in cooperation with FOKUS (Tom Ritter) was a full success. We had seven talks – each about 20 minutes:

  1. Ralph Mueller gave us some infos about the Eclpse Foundation and the Eclipse eco system in Europe (PDF)
  2. Alex Koderman talked about the verinice project, an open source solution for Information Security Management (PDF)
  3. Tom Ritter spoke about Model Sharing in a Distributed Model-Driven Development (PDF)
  4. Martin Fl├╝gge showed us Dawn, a web-based collaborative extension for GMF editors (PDF)
  5. Eike Stepper gave us a talk about the Net4j signalling platform (PDF)
  6. My talk was about how to COPE with long term metamodel evolution (PDF) and
  7. Max Bureck spoke about a graphical QVT/R-Editor (PDF)

There was some kind of running gag due to the unawareness of the speakers to actually show a demo because of miscellaneous technical reasons.

In the beginning and during the breaks we had the opportunity to have nice chat and the advantage of a delicious buffet. Thanks to the sponsors.

After the camp some of us moved into a timeless restaurant for celebrating an Eclipse Stammtisch which was also very nice.

All together it was a long but very nice day.

Please note: There will be a second Eclipse Stammtisch on the 16th June where you will have the possibility to meet some members of the Eclipse Board of Directors. Please have a look at Eikes post announcing the Stammtisch. If you want to participate please enter your name into the Doodle poll.

The art of skew house building

It is quite impressive how people build houses in a big city in germany…

© by Google Maps

Eclipse DemoCamp Galileo

Like in the previos year I am one of the two organizers of the Eclipse DemoCamp Galileo 2009 in Berlin. It will take place on the 9th June here. I will give a talk about COPE and how to use it to evolute a meta model and migrate the corresponding instance models (as I have done it for GenGMF). If you don’t have the time to visit the Berlin DemoCamp you will get a second chance to hear my voice in Leipzig on the 23rd June. Sorry, I can’t be in Leipzig on this day because I will be in Kiel… But if you would like to chat with me and some members of the Eclipse Board of Directors at an Eclipse Stammtisch have a look at Eikes Post. See you there!

highly compressed irrelevance

A typical “tweet” is highly compressed irrelevance – 140 characters the world don’t need but served in real time.

(freely translated from German)
by Ulf J. Froitzheim in Technology Review, 3/2009, P. 86


After one and a half day of a training about “SQL Server Analysis Services” (SSAS) which should have lasted for three days we (a group of five attendees) pulled the ripcord. The trainer did not seem to have a glimpse of didactic at all. He did not seem to have a glimpse about the course subject either. This was not only my impression – it were all of us. After we had a small chat with the chief about our displeasure, he offered us to get the training with an other trainer 5 weeks later – for free. So we canceled our hotel and made the tour back. HE (the trainer) has wasted a lot of our time. Never ever again!

Update: The second trainer was classes better than the first one, but still left some room for improvement.

Copying EMF objects accross namespaces

I am currently preparing a new release for my GenGMF project. Because the new meta model contains important but incompatible changes I have migrated the GenGMF tooling to a new name space and created a migration script for converting the specific editor models. The new meta model is much smaller than the old one which results in smaller models — I’ve eliminated the need for the mapping elements in the templates. To make the migration as easy as possible I’ve created some helper functions to move corresponding attributes and references. Only the “real” changes in the meta model are migrated using a Xtend script.

To demonstrate the facilities of the CrossNamespaceCopier I’ve created a small meta model…

Demo meta model

As you see the Class2 from the “http://source.namespace” has been eliminated in the “http://target.namespace” and both attributes have been moved – attribute2 to Class1 and attribute3 to Class3. In order to migrate a model instance one has to call the CrossNamespaceCopier which copies the objects while migrating the name spaces according to rules previously set. OtherClass objects from the “http://other.namespace” will be copied as they are. All references and attributes which could not be automatically migrated need to copied in a small script manually.

extension CrossNamespaceCopier;

namespace::target::Class1 migrate(namespace::source::Class1 sc1)
:   let tc1 =
    // initialization for the copier, but the
    // let statement needs to be in the beginning
    (   crossNsInitStaticInstance()
    ->  crossNsSetupNamespaceMapping(
    // the content for the tc1 variable
    ->  (   (namespace::target::Class1)
    // skipping Class2 in source
:   tc1.setClass3Reference(
    // pull up attribute2
->  tc1.setAttribute2(
    // pull down attribute3
->  tc1.class3Reference.setAttribute3(
    // uninitializing
->  crossNsReleaseStaticInstance()
->  tc1

You will find the CrossNamespaceCopier as well as the demo files contained in a zip file.


Some days ago I went to my dentist for the regular check up. They wanted me to sign a form about the transferability of claims to the mediserv GmbH and about inquiries about my credit score to rating agents. I declined my signature and put the blank form on the counter commenting that I will sign it on demand. They looked at me like I am the only one who cares about the wording in a contract. Maybe John Doe will sign it but that’s not my name…


As of today I have finished my study of applied informatics at the FHTW Berlin (University of Applied Sciences). The last exam I had to pass was the oral presentation of my diploma thesis. After an hour with a high level of adrenalin I must say that the effort I have invested into the thesis and the presentation payed off. Thanks to all thesis readers and presentation listeners ho have not been named – I’ve got full marks for both.

During the last days I have prepared a paper about the thesis for the MDSE 2008 workshop in Berlin. After my two MetamodelDoc presentations this would be my third public talk but the first in English. I look forward to see you there.

Update: The thesis is now available for download in the Publications section.