3 days raising the level of abstraction

As already the last two years I had the chance to visit the Code Generation conference in Cambridge. The past years I had the chance to held a session, this time my proposals were not accepted, so I’m just attending here. The good thing is that I could just lay back and relax all these intersting sessions.This year about 110 experts came together, slightly more than last year. In the meanwhile I got in contact with many of those that come back every year and it is always nice to talk to them. But it is always the chance to get in contact with new persons, and I took the chance again.

Day 0

May flight was on Tuesday from Düsseldorf to Stansted in the afternoon, so I arrived in Cambridge in late afternoon local time. From the main station I took a taxi to Murray Edwards college. As it turned out the taxi driver was Kurdish and lived 13 years in Germany and is now for several years in Cambridge. Although he could speak german well we talked in english about Cambridge and the Football World Championship. Arrived at Murray Edwards I registered and went to my room.

At first I had no electricity in the room, but some employee from the College helped fast to solve the problem. For the evening I met with my colleagues Heiko Behrens and Moritz Eysholdt. We went to a pub near by and met J.P. Tolvanen and Risto Pohjonen from MetaCase, Brooke Hamilton from Microsoft and John Slaby from Raytheon there. A good meal, nice talk and some beer later we went back to the college, awaiting the conference beginning.

Day 1

Before going to breakfast at 8:00AM I registered for the conference. At this time it was not crowded, so I had the chance to exchange some words with Mark and Andy.

Back to breakfast already some attendees were there and it was time to give a warm welcome to all those that I knew already from past conferences.

After breakfast it was time to join the opening session. Mark opened the conference in his typical way with some British humour. In his slides he used some of the photos I took last year. This year I took also several photos, but last year I had better shots.
The first session I attended was “Migrating a large modelling environment from UML/XML to GMF/Xtext” by Moritz Eysholdt (itemis) and Johannes Rupprecht (VSA GmbH). The VSA has developed a large project for clearing of pharmacies, which started 2000. This was a large grown projects and they used MagicDraw for modelling to a high extend. They experienced severe performance problems modeling with MagicDraw, but they had also a really large scale model. To solve their modeling problems they decided to migrate to Xtext and GMF based model editors. The experience they have now is far better.

The next slot was already a decision point. I thought about joining the hands on session for MetaEdit+, but decided to listen to the case study “Effective use of Xtext in a Financial Organization” by Roberto Salama from Morgan Stanley. Roberto has developed a DSL using Xtext for their financial calculations, and from the DSL models he generates code for Q and evaluates that. At one point he stated that he tried using Xpand and found Xpand was not powerful enough to do a recursive tree traversal and flatten the result, and alternatively used Scala for that. I thought that he had a bad misunderstanding about the power of Xpand and actually what he tried to solve was actually a very trivial thing for Xpand. We introduced each other and teamed up the next day. I could show him that all the Scala code he did was actually a one-liner in Xpand/Xtend, and also the template that he did could be improved.

The other sessions I attended that day were “Designing DSLs – Quick and Dirty versus Quick and Clean” by Jos Warmer (Ordina), “Lessons learned in building a Model-Driven Software Factory” by Johan den Haan (Mendix) and “Eclipse e4: Eclipse is remodeling itsef” by Bernhard Merkle (Sick). All of them were interesting, but most informative to me was Bernhard’s talk. Also Bernhard’s presentation style was refreshing.
The conference continued with BoF sessions in the college bar, where I joined a discussion about the generation of documentation.

Right after all the sessions the conference day ended like last year with a punting boat tour. The weathcer was just perfect, so I suspect Mark to have bribed some weather god. The punting trip was a little bit shorter and less informative than last year, but anyway it was great. It’s just that I have attended it already last year and I found it slightly better.

We went from there to an Indian restaurant and took a meal. I took “Chicken Phall” which was rated “very, very hot”. I really like hot dishes, and for me it was just right. I had some nice talk with the attendees at my table.

The day ended in the “Castle Inn” pub. Inside it was very crowded, so we went outside in the beergarden. I had just short clothes on and freezed after a while, so I got in after a while, where I joined the attendees inside. At 23:30 I went back to the college with the guys from MetaCase.

Day 2

The second conference day started with the keynote “The Imaginary Sickness of the Middle-Class Gentleman” by Dave Thomas. It was a really well held presentation with some interesting metaphors. I could only always think “This guy is so very true”. Pitty for all who missed that.

During the break after I took the chance to team up with Roberto Salama as stated before, which helped him open his eyes for using Xpand. He just loved it.
In the next two slots I decided to join the hands on session “Language Extension with MPS” by Markus Völter (itemis) and Konstantin Solomatov (JetBrains). MPS is one of those things I knew I definitely have to learn more about and this was a good chance. Unfortunately I had severe problems getting MPS running on my Mac. The tool hang often or was just slow. I reconfigured the VM to not use 64 bits, which made it slightly better. I hope this can be improved. Anyway, MPS is really cool and the session confirmed that I have to really use this.

Lunch was this day a BBQ and this was really nice. The weather again was perfect, so we could just sit on the ground.

After lunch the MPS session continued, but Markus and Konstantin had to switch from hands-on to demo-mode, since it was not possible to keep all the attendees in sync. There were about 25 persons in the room and this is definitely too much too handle for such a complex topic, although Bernhard Merkle helped them supporting the attendees.
The next slot was again a decision point. There were just two tracks instead of three as usual, but both of them not really a must-see on first sight. I decided to go for “Code generation and domain-specific modeling for user interfaces of embedded devices” by Sándor Dolgos and István Ráth. The embedded devices they generate the UI for are dialysis machines. I hoped that I never become a customer of them. The talk itself was interesting to some degree though. The alternative, seeing Visual Studio 2010 UML / DSL tooling, would have been worse I guess. Microsoft is just too late. UML is often dump and the wrong choice, and when UML is the right choice for modeling no tool can compete really with MagicDraw.
The last slot was again a decision point, but this time again I wished I could have joined two. I decided for “Why MDA Fails: Analysis of an Unsuccessful Project” from Darius Silingas (No Magic). He analyzed a project he consulted on. They had such a huge UML model and abused UML in several ways. This experience I can share with them. Many people just think they understand UML and that it is a silver bullet, and after years they realize that their models grew to a scale that it is not managable anymore and cannot be effetcively refactored. This is where users like the VSA decide that they migrate to specialized DSL modeling using Xtext or GMF or whatever. The contact to Darius is one of the most valuable ones from this years conference. I’m sure that we stay in contact and come across each other in the future. One intersting information he gave is that MagicDraw is currently migrating to EMF, which allows direct integration with Xtext. This is the way to go. Roughly in one year they will release a MagicDraw version based on EMF.
Next was a series of lighning talks about several topics held by Markus Völter, Darius Silingas, Bernhard Merkle and Christian Ries. The following BoF sesssion were again in the bar and I joined Peter Bell, Jos Warmer et al. until the conference dinner started.

This year they had a nice idea: After the start they announced that every table had a number and at each table the people should count and assign a number from 1 – 10. Then all people with 1 went to table 1 and so on. This was the chance to get in contact with some persons that one might not have talked before.

I sat next to Peter Keller and we had some valuable discussions about Xpand. Peter is actually using it, so it was good for him to talk to a committer about some advanced topics.
The day ended in the college bar. We took the remaining wine bottles from the dinner and emptied them in the bar. Some very intersting discussions came up and the wine caused that we raised our level of abstraction 😉 With Walter and Moritz I was the last leaving at 00:30. Earlier than last year, but better for our health and constitution for the last conference day.

Day 3

The last day just started. What a pity, I enjoy the conference like every year. I wrote this article during the keynote “Building Domain-Specific Languages with the Spoofax Language Workbench” by Eelco Visser. I have to admit I missed most of it, but the program is so full packed that there is no right time to write these lines down.

At noon I’m really thinking about skipping one session to see the german WC match against Serbia. I’m really excited about it, this will be a hard task for the germans.
My flight goes back at 19:50. Enough time to end the conference without any stress. Right after the conference my 3 weeks vacation begins, and I’m happy to see my daugther back. During the conference she managed the first time to turn around, and it will be fun to watch her evolving the next three weeks and take long walks at home.

Advertisements

4 thoughts on “3 days raising the level of abstraction

  1. Hi Karsten,

    thanks for the great report and the nice pictures. You deserved the CG award, +1. Hope to see you soon again…

  2. Karsten:
    Fantastic blog! Congratulations on the award. Many thanks for paring up later, getting some good mileage out of that. I’m now able to traverse the hierarchy much more efficiently and find myself nesting collection operators in much the same way as one would in scala:

    this.lh.elements.collect(d|createTransfer(this.rh.flow, d)).sortBy(e|e.date).info()

    Transfer createTransfer(FlowRule f, Element e) :
    JAVA helper.Commands.createTransfer(com.ms.flowDsl.FlowRule, com.ms.flowDsl.Element);

    Collect is especially powerful in conjunction with Extensions. In this case createTransfer() clones a Transfer and sets the date from Element. This is essentially the same as map() in scala.

    I should be generating the code from Xtext soon (just haven’t had any time since I’ve been back.)

    Enjoy your 3 week vacation!

    Thanks! and best regards,

    Roberto

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s