Wednesday, July 15, 2009

Eclipse Code Camp – Modeling


You are interested to learn about Eclipse Modeling? You would like to optimize your EMF usage or learn about amazing add-on technologies like CDO or EMF data binding?

Then come to Munich in October and have a thrilling time with Ed and me! We're looking forward to meet you at the

Wednesday, June 10, 2009

Meet the Eclipse Directors in Berlin

I was asked to arrange for a community "Stammtisch" while the Eclipse board of directors is meeting in Berlin next week. It is the first time that the Eclipse board has ever met outside of the USA.

Everybody is invited to join us:

Date: Tuesday, 2009-06-16
Time: 7:00 p.m.
Restaurant: Bavarium
Location: Europa Center, Berlin
Registration: Doodle poll

The Eclipse Foundation will pay for the drinks and the room has capacity for 50 persons. There are no technical sessions planned!

Thursday, June 4, 2009

When the Whole is Less than the Sum of its Parts

I did not know that this scenario is called Reductionism in ancient literature! I only stumbled on it now when I tried to track down why my daily backups started failing recently. Hold your breath:


The other week I installed a new anti virus tool because it better integrates with my software firewall and the rest of that security suite. In fact it found some new potential infections but I did not care too much because detection is heuristics-based. To be safe I kept all those files in the quarantine folder. I even activated the auto-quarantine feature. Anti virus now looked like a good part of my system.


Now my daily backups: For a long time they also were a good part of my system but since last week they did not complete successfully anymore. The same meaningless error message every time. Not cool!


I found out the reason (well, Google helped a lot): The backup by default copies all changed files to a temporary folder. Including my quarantine folder! The new anti virus tool eagerly detects a new infection and moves the file back to the normal qurantine folder, while the backup process is trying to work with it. Bang!

I saw this thing in the computer history museum in Palo Alto ;-)

Amazing how complex and interrelated the problems of modern computer systems can be. My mother used to be kind of a luddite but nowadays she claims to have fun with the computer and the net. I wonder how she would cope with such stuff?


All this reminds me to the recent discussions about technological complexity and simplicity of the real world:

How to explain EMF?

Why is RCP, EMF, p2, databinding... so hard to learn?

If Only it Were That Simple

Friday, May 29, 2009

Target Platform Provisioning

For CDO and Net4j we used to have a special Ant script that downloads a well-defined set of dependencies and installs them into a target platform that is contained by the metadata section of the wokspace. The same script also cares to setup a well-defined API baseline. While this was handy in the absence of other mechanisms it always suffered from some issues:

  • Maintenance burden to keep the versions up to date. Since the automated build is designed differently this was redundant and prone of errors.
  • 3rd party bundles were taken from SpringSource which is not a p2 repository. The SpringSource bundles make heavy use of the "uses" manifest header attribute, often resulting in broken configurations.
Some time after reading Chris's blog about the new target platform provisioning I started to play with it and it really was easy. I came up with a simple target definition for CDO:


Initially I started with a "Directory" provisioner for the SpringSource bundles but then I decided to create an own p2 repository at SourceForge.net: Net4j and CDO Plus Updates. This can now be used to provision your IDE as well as parts of the CDO target platform. Pressing "Set as Target Platform" did its job without problems: In the end all bundles compiled without errors.

So, in the future I'd really like to use this great mechanism for provisioning my target platform but unfortunately there's a show stopper: The target definition carries explicit versions for all the configured features and there's currently no way to update them automatically. I'd really wish it was as easy as my IDE updates are nowadays but it turns out that, once the repositories offer newer versions, not only these are not picked up but the target definition editor even refuses to list the old features. I had to start from scratch and this is certainly no better than what we had before.

There's a bugzilla to track the addition of an update button in the target provisioner. I guess that would finally give me what I need to make use of the whole new target platform provisioning. Anyway, this is great stuff and I appreciate very much all the effort that has been spent so far. Thank you guys!

Tuesday, April 28, 2009

New Project Artwork

Yesterday I sat down, installed InkScape and worked on the new project logos for CDO and Net4j. Darn it: designing software and designing logos are two different things! Personally I liked this one:



But all my friends complained: "Too childish!!!"
I sat down again and tried something more honest.
Here is the new CDO project logo:



And here is the new Net4j project logo:


Sunday, April 26, 2009

Modeling goes Enterprise

I just finished the second part of my article "Modeling goes Enterprise - About EMF and CDO". It will be published in the Eclipse Magazin next month. Thanks to Sebastian Meyen and Hartmut Schlosser I'm allowed to make the example application, discussed in the article, available in the Eclipse CVS!

The splash picture was taken in my kitchen

The example is a set of applications (IDE, headless, 3x RCP, Servlet) used to support the business of the electronic restaurant "eDine", where they have touch computers at all the tables and at the bar and in the kitchen. Special RCP applications operate on a distributed shared EMF model which is provided by a headless CDO repository server.

Running the Example


1) Install the example
2) Start the server process
  • Start the "GastroServer" launch config. It creates a Derby database at "/gastro".
  • Watch the console output.

3) Populate the repository
  • Start the "GastroTestClient1" launch config. It opens a runtime IDE with generic CDO support.
  • Open the "CDO Sessions" view.
  • Add a new session (green plus button). Enter "tcp://localhost" and "gastro".
  • Open a new transaction (right-click on the session).
  • Import the /org.gastro.testclient/inventory.xml resource into "/eDine/inventory".
  • Commit the transaction (right-click on the transaction or just save the editor).


4) Start the RCP application for table 1 (and optionally for table 2)
  • Start the "GastroTable1" launch config. It opens an RCP application.
  • Browse through the menu card and select some offerings here and there.


5) Start the RCP application for the bar
  • Start the "GastroDepartment1" launch config. It opens an RCP application for the barkeeper.
  • Watch orders coming in.
  • Eventually click on order details to mark them SERVED and watch the order disappearing when completed.

6) Start the RCP application for the kitchen
  • Start the "GastroDepartment2" launch config. It opens an RCP application for the cook.
  • Eventually click on order details to mark them SERVED and watch the order disappearing when completed.


7) Send an order (if the RCP applications are all started, see steps 4-6)
  • In the table application open the second shelf pane and send the order.
  • Watch how the relevant order details "arrive" in the bar and kitchen applications...


8) Browse the menu card via Web
  • Start a web browser and point it to "http://localhost:9090/gastro"

Enjoy your meal! ;-)

Thursday, April 16, 2009

Brandenburger Tor at JAX 2009

I'm just preparing the slides for my talk at the JAX 2009 conference next week in Mainz, Germany:

Scale, Share and Store your Models with CDO 2.0

Wednesday, Apr. 22th, 2009
08:45 - 09:45