<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-19398645</id><updated>2012-01-10T13:52:31.016+01:00</updated><category term='eclipse'/><category term='OSLO'/><category term='dsls'/><category term='openarchitectureware'/><category term='mdsd'/><title type='text'>voelterblog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default?start-index=101&amp;max-results=100'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>327</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-19398645.post-3854732847233428845</id><published>2012-01-08T11:40:00.002+01:00</published><updated>2012-01-08T11:44:19.907+01:00</updated><title type='text'>Keynoting Code Generation 2012</title><content type='html'>I have just been invited to keynote at the &lt;a href="http://www.codegeneration.net/cg2012/index.php"&gt;Code Generation 2012&lt;/a&gt; conference in late March in Cambridge (the other keynoter is &lt;a href="http://www.janbosch.com/Jan_Bosch/Jan_Bosch.html"&gt;Jan Bosch&lt;/a&gt;). I will talk about the DSL Design stuff that I have been working on (with Eelco) for the upcoming DSL book. Looking forward to this very much :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-3854732847233428845?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.codegeneration.net/cg2012/index.php' title='Keynoting Code Generation 2012'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/3854732847233428845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=3854732847233428845' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/3854732847233428845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/3854732847233428845'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2012/01/keynoting-code-generation-2012.html' title='Keynoting Code Generation 2012'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-5896602014494276450</id><published>2011-12-12T09:31:00.002+01:00</published><updated>2011-12-12T09:35:08.387+01:00</updated><title type='text'>mbeddr C: Early Access Preview of Extensible C Published</title><content type='html'>Over the weekend we have &lt;a href="http://mbeddr.com"&gt;published&lt;/a&gt; the first early access preview version of the mbeddr C extensible C language based on MPS. We've been developing this system as part of the LWES research project (itemis, fortiss, Sick and Lear are the project partners). The download comes with sources, a user guide and a tutorial on how to extend C in mbeddr.&lt;br /&gt;&lt;br /&gt;The goal of LWES/mbeddr is to provide a more productive and better integrated way for developing embedded software by using domain-specific extensions to C. &lt;br /&gt;&lt;br /&gt;Take a look -- it's cool stuff :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-5896602014494276450?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://mbeddr.com' title='mbeddr C: Early Access Preview of Extensible C Published'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/5896602014494276450/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=5896602014494276450' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/5896602014494276450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/5896602014494276450'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2011/12/mbeddr-c-early-access-preview-of.html' title='mbeddr C: Early Access Preview of Extensible C Published'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-5423243384157283066</id><published>2011-12-01T09:11:00.001+01:00</published><updated>2011-12-01T09:13:34.679+01:00</updated><title type='text'>Scala, EJB and real language engineering</title><content type='html'>&lt;br /&gt;Recently there is this battle around Scala going on: sceptical opinions are raised by some people claiming Scala is too complex, hard to learn, tools being suboptimal and generally, not delivering on the advertised productivity improvements. The discussions got started by &lt;a href="http://blog.joda.org/2011/11/scala-feels-like-ejb-2-and-other.html"&gt;this article&lt;/a&gt; and continues with &lt;a href="http://blog.joda.org/2011/11/real-life-scala-feedback-from-yammer.html"&gt;this one&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Now, I am not the person to judge this stuff. I do think Java needs improvement, I like many of Scala's ideas, but I do realize it is a powerful, complex language.&lt;br /&gt;&lt;br /&gt;Scala people typically say that there are two distinct roles of Scala users: library authors and library users. And only the library authors need to deal with Scala's advanced and complex type system (which is the source of many of the reported complexity problems). Critics say that the complexity "shines through" even to library users.&lt;br /&gt;&lt;br /&gt;I have been working a lot on language design and implementation, in the context of DSLs. More recently, with the &lt;a href="http://mbeddr.com/"&gt;mbeddr.com&lt;/a&gt; project, I have dealt a lot with C and extensions to it. We're doing this based on the MPS language workbench. Using a language workbench really distinguishes between language designer/implementor and language user. Instead of implementing interesting new features via meta programming, flexible syntax and type system magic, one can simply implement language extensions, using real language engineering techniques. And the user really doesn't see any of this: the extension feels absolutely like a real language extension.&lt;br /&gt;&lt;br /&gt;While I realize that there are issues with this approach as well (actually, there's only one issue: you have to use MPS to write code) I think the approach is much much better in general. Let's face it: many of the things done in Scala libraries are, from a user's perspective, language extensions. But in Scala, the IDE doesn't know about them, and some of the implementation complexity does shine through. I think that, if we do language extension, we should do it with the right tools.&lt;br /&gt;&lt;br /&gt;PS: There isn't just MPS. You can do many of these things with SDF/Spoofax or Rascal as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-5423243384157283066?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/5423243384157283066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=5423243384157283066' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/5423243384157283066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/5423243384157283066'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2011/12/recently-there-is-this-battle-around.html' title='Scala, EJB and real language engineering'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-431456926229428030</id><published>2011-11-02T08:40:00.002+01:00</published><updated>2011-11-02T08:50:46.662+01:00</updated><title type='text'>Xtext 2.1 and JVM Languages</title><content type='html'>Earlier this year, Xtext 2.0 was released. It brought the new Xtend language for transformation and code generation (and to some extent, a replacement for Java). It also included Xbase, an expression language which you could include into your own DSLs by inheriting from Xbase. At the time, I had two complaints about Xbase and the way you would use it. First, Xbase is highly integrated with the JVM. If you wanted to write a DSL that targetted for example C,  the provided infrastructure around Xbase wasn't of much help. The other complaint I had was that the integration of Xbase with your own DSL was quite a lot of work to pull off. You had to write all kinds of artifacts to get it done. It was a lot of low-level work.&lt;br /&gt;&lt;br /&gt;With Xtext 2.1 things have changed and really become interesting! My first complaint is still true: Xbase is still very much tied to the JVM, so if you wanted to build a DSL that had nothing to do with the JVM, you'd probably be better off building your own grammar and using the Xtext typesystem framework to define typing rules. However, building your own JVM-based language has become impressively simple: you define a grammar (which embeds Xbase in places, e.g. for expressions or operation implementations. The second artifact you build is a little model transformation that maps your new concepts to JVM concepts. This is conceptually similar to generating Java code. However, you don't generate text, but you instantiate JVM objects (classes, methods, fields, etc.). From this mapping information, Xtext then derives everything necessary to derive a generator! This is really pretty neat! The JVM mapping can be expressed very concisely using the new builder-style support in Xtend. Also note that for implementation code (Xbase stuff) there is of course already a generator to Java as part of Xbase, so you don't have to deal with this aspect at all.&lt;br /&gt;&lt;br /&gt;So, if we just accept that Xtext and Xbase is mainly targetted to JVM-based languages, then the new Xtext 2.1 stuff is really a big step forward and pretty impressive!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-431456926229428030?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.eclipse.org/Xtext/' title='Xtext 2.1 and JVM Languages'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/431456926229428030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=431456926229428030' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/431456926229428030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/431456926229428030'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2011/11/xtext-21-and-jvm-languages.html' title='Xtext 2.1 and JVM Languages'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-1301773974727648023</id><published>2011-10-31T21:33:00.001+01:00</published><updated>2011-10-31T21:35:45.739+01:00</updated><title type='text'>Yet another MPS demo screencast</title><content type='html'>Vaclav and I have recorded another screencast on Java language extension with MPS. This time we discuss a &lt;a href="http://tv.jetbrains.net/videocontent/language-extensions-creating-tabular-expressions-2"&gt;decision table expression&lt;/a&gt;. This is a particularly interesting example since it nicely demonstrates the advantages of projectional editing: an actual 2-dimensional table is embedded in the C program. The translation is also not trivial, so understanding that is interesting too. Have fun watching it :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-1301773974727648023?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://tv.jetbrains.net/videocontent/language-extensions-creating-tabular-expressions-2' title='Yet another MPS demo screencast'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/1301773974727648023/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=1301773974727648023' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/1301773974727648023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/1301773974727648023'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2011/10/yet-another-mps-demo-screencast.html' title='Yet another MPS demo screencast'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-6971742993199667024</id><published>2011-10-26T16:40:00.003+02:00</published><updated>2011-10-26T16:42:08.313+02:00</updated><title type='text'>New MPS Screencast: Extending Base Language</title><content type='html'>The JetBrains guys have just started a documentation initiative for MPS (I am helping them a bit with this). The first result is a &lt;a href="http://tv.jetbrains.net/videocontent/language-extensions-creating-a-new-statement"&gt;Screencast on Extending Java with a new Statement&lt;/a&gt;. Vaclav Pech and I explain how this works. Stay tuned for more (and increasingly sophisticated) examples.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-6971742993199667024?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://tv.jetbrains.net/videocontent/language-extensions-creating-a-new-statement' title='New MPS Screencast: Extending Base Language'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/6971742993199667024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=6971742993199667024' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/6971742993199667024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/6971742993199667024'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2011/10/new-mps-screencast-extending-base.html' title='New MPS Screencast: Extending Base Language'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-3014303703965041398</id><published>2011-10-05T20:04:00.002+02:00</published><updated>2011-10-05T20:23:24.949+02:00</updated><title type='text'>New Gliding Videos</title><content type='html'>I just uploaded a bunch of new (raw, uncut, long) flying videos. The first one (&lt;a href="http://www.youtube.com/watch?v=q4CbEfET_h8"&gt;Part 1&lt;/a&gt;, &lt;a href="http://www.youtube.com/watch?v=FDeELu03seA"&gt;Part 2&lt;/a&gt;) is a ca. 1 hour autumn flight with the ASH 26E, filmed from the wing. The second one is a spectacular sunrise flight with the ASK 21 (&lt;a href="http://www.youtube.com/watch?v=SeUGfzCGr78"&gt;Part 1&lt;/a&gt;, &lt;a href="http://www.youtube.com/watch?v=Qs8S_Df-TYI"&gt;Part 2&lt;/a&gt;) filmed from the side of the vertical tail. This one is really nice :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-3014303703965041398?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/3014303703965041398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=3014303703965041398' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/3014303703965041398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/3014303703965041398'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2011/10/new-gliding-videos.html' title='New Gliding Videos'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-7057544801173305232</id><published>2011-07-29T08:20:00.003+02:00</published><updated>2011-07-29T08:32:56.973+02:00</updated><title type='text'>Meine nicht-so-guten Erfahrungen mit FitnessFirst in Cannstatt</title><content type='html'>Ich habe beschlossen, dass ich ein bischen was für meinen älter werdenden Körper tun muss. Daher habe ich mich mal ein bischen mit dem Thema Fitness-Studios auseinandergesetzt. Aufgrund der geographisch günstigen Lage hatte ich mich für FitnessFirst in Cannstatt entschieden. Die Geräte sind so wie ich das einschätzen kann gut, die Einweisung/Trainingsplan machte auch einen guten Eindruck, aber:&lt;br /&gt;&lt;br /&gt;Ich wollte eigentlich einen Vertrag von einem Freund übernehmen (günstigere Bedingungen). Der hatte sich da erkundigt, und es hätte gehen müssen. Als wir dann zusammen dort waren war das alles nicht mehr möglich.&lt;br /&gt;&lt;br /&gt;Ich habe mit entschieden dann trotzdem zu unterschreiben. Als es dann konkret wurde ist dem Typ eingefallen, dass sich die Preise wohl "kürzlich" erhöht hätten. Er zeigte mir irgendeine neue Preisliste mit höheren Preisen. Es ließ sich leider nicht rausbekommen, ab wann die gelten sollte ("jetzt ist es halt so"). Ich musste also mehr zahlen als mir vorher (schriftlich!) angeboten wurde.&lt;br /&gt;&lt;br /&gt;Dann ging es um den Checkup und die Trainingsplanerstellung. Lange Rede, kurzer Sinn: Zwei Minuten nach(!) dem geplanten Termin für das Checkup ruft der Trainer beim Studio an und sagt er könne nicht kommen, er hätte eine Panne. Wer's glaubt! Selbst wenn er eine Panne gehabt hätte, fällt einem das nicht zwei Minuten NACH dem geplanten Termin ein. Als ich den Mensch dann am nächsten Tag bei der Trainingsplanerstellung darauf angesprochen habe, hat er sich nicht mal entschuldigt.&lt;br /&gt;&lt;br /&gt;Und heute morgen? Da wollte ich um kurz vor acht da hin zum trainieren (ja, ich bin grade richtig motiviert :-)). Angeblich machen die um sieben auf. Um 10 vor acht war keiner da. Umsonst hingefahren, und 1,80 EUR Parkgebühr verschwendet.&lt;br /&gt;&lt;br /&gt;Unter normalen Umständen (also wenn es eine geografisch passende Alternative gäbe) würde ich mir das nicht bieten lassen. Mit dieser Art von "Unverbindlichkeit" kann ich nicht umgehen. Dieser Blog-Eintrag geht auch an die Geschäftsleitung. Mal sehen, was passiert.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-7057544801173305232?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/7057544801173305232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=7057544801173305232' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/7057544801173305232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/7057544801173305232'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2011/07/meine-nicht-so-guten-erfahrungen-mit.html' title='Meine nicht-so-guten Erfahrungen mit FitnessFirst in Cannstatt'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-5029649429199864965</id><published>2011-07-24T19:28:00.004+02:00</published><updated>2011-07-24T19:31:49.535+02:00</updated><title type='text'>Talk about the MPS and Embedded Systems in Stuttgart on Sept. 20</title><content type='html'>On Sept. 20 there will be a chance to learn about MPS, Language Workbenches and the &lt;a href="http://mbeddr.com"&gt;LWES Project&lt;/a&gt;. I will give a talk at 18:30 at STEP near the university. Find details in &lt;a href="http://www.voelter.de/temp/Vortrag_Eingebettete_Systeme.pdf"&gt;this PDF&lt;/a&gt;. It would be cool if a couple of you guys would show up :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-5029649429199864965?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.voelter.de/temp/Vortrag_Eingebettete_Systeme.pdf' title='Talk about the MPS and Embedded Systems in Stuttgart on Sept. 20'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/5029649429199864965/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=5029649429199864965' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/5029649429199864965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/5029649429199864965'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2011/07/talk-about-mps-and-embedded-systems-in.html' title='Talk about the MPS and Embedded Systems in Stuttgart on Sept. 20'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-1432431274407115376</id><published>2011-07-24T17:16:00.002+02:00</published><updated>2011-07-24T17:20:20.351+02:00</updated><title type='text'>Working with MPS and Git</title><content type='html'>Here is a little demo of how to work with MPS and Git. Many people fear that integration of MPS into standard version control systems is a problem. This video is intended to convince you otherwise:&lt;br /&gt;&lt;br /&gt;&lt;iframe width="425" height="349" src="http://www.youtube.com/embed/gc9oCAnUx7I" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-1432431274407115376?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/1432431274407115376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=1432431274407115376' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/1432431274407115376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/1432431274407115376'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2011/07/working-with-mps-and-git.html' title='Working with MPS and Git'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/gc9oCAnUx7I/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-3983141333890354626</id><published>2011-07-13T09:32:00.001+02:00</published><updated>2011-07-13T09:33:48.420+02:00</updated><title type='text'>MPS Screencasts: Language Modualrization and Composition</title><content type='html'>Last week, I should have been at &lt;a href="http://gttse.wikidot.com/"&gt;GTTSE 2011&lt;/a&gt;. I was invited to give a short tutorial there on &lt;i&gt;Language and IDE modularization and composition with MPS&lt;/i&gt;. However, because of my inflamed, swollen and hurting right foot I wasn't able to travel there. I proposed to present my tutorial remotely via Webex. Thankfully the the organizers agreed to try it, and a number of folks even sat in the room to watch "a remote guy". Thanks to all of you!&lt;br /&gt;&lt;br /&gt;The good thing is that as a plan B I had recorded the tutorial ahead of time as screencasts, so you can now watch them even if you haven't been at GTTSE. So here are a eight videos, 90 minutes in total, about the cool things you can do with MPS:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=lNMRMZk8KBE"&gt;Part 1&lt;/a&gt;: MPS Intro (14:18)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=ObWBUvHHNNg"&gt;Part 2&lt;/a&gt;: The Entities Language (14:05)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=Y_KvApgKZZQ"&gt;Part 3&lt;/a&gt;: Language Combination with the UI Language (14:51)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=0vELEMU_Efc"&gt;Part 4&lt;/a&gt;: Language Extension with Expression Blocks (13:14)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=2_6DzD73qDs"&gt;Part 5&lt;/a&gt;: Language Reuse (Separate Code) with the Persistence Languages (7:44)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4vUkbzRHF2Q"&gt;Part 6&lt;/a&gt;: Language Reuse (Mixed Code) with the RBAC Languages (07:57)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=Z23-Vpy6RFY"&gt;Part 7&lt;/a&gt;: Language Embedding with the UI Validations/Expression Languages (12:55)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=HbnttNqXpdM"&gt;Part 8&lt;/a&gt;: Bonus: MPS Annotations (6:24)&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-3983141333890354626?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/3983141333890354626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=3983141333890354626' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/3983141333890354626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/3983141333890354626'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2011/07/mps-screencasts-language-modualrization.html' title='MPS Screencasts: Language Modualrization and Composition'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-6504641407258839160</id><published>2011-07-05T09:15:00.002+02:00</published><updated>2011-07-05T09:17:55.842+02:00</updated><title type='text'>1st Workshop on Game Development and MDSD</title><content type='html'>If you are a game developer you may want to consider submitting to the &lt;a href="http://gd-mdsd.blogspot.com/"&gt;1st Workshop on Game Development and MDSD&lt;/a&gt;. It is held as part of the &lt;a href="http://icec2011.org/"&gt;International Conference on Entertainment Computing&lt;/a&gt;. So if you want to have some fun while coding .... it's also in Vancouver, which I guess is an additional argument for submission and attendance :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-6504641407258839160?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://gd-mdsd.blogspot.com/' title='1st Workshop on Game Development and MDSD'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/6504641407258839160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=6504641407258839160' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/6504641407258839160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/6504641407258839160'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2011/07/1st-workshop-on-game-development-and.html' title='1st Workshop on Game Development and MDSD'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-5443776157719344271</id><published>2011-06-19T16:24:00.002+02:00</published><updated>2011-06-19T16:27:04.454+02:00</updated><title type='text'>SEACON 2011</title><content type='html'>Für spätentschlossene: am 27/28 Juni ist wieder die SEACON in Hamburg, und ich habe mir sagen lassen, es sind noch ein paar Plätze frei! Inbesondere Michael Stal's &lt;a href="http://www.sigs-datacom.de/seacon2011/konferenz/uebersicht-architekturtag.html"&gt;Architekturtag&lt;/a&gt; sieht spannend aus!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-5443776157719344271?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.sigs-datacom.de/index.php?id=seacon2011' title='SEACON 2011'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/5443776157719344271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=5443776157719344271' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/5443776157719344271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/5443776157719344271'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2011/06/seacon-2011.html' title='SEACON 2011'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-8174039204895767275</id><published>2011-05-28T12:34:00.002+02:00</published><updated>2011-05-28T12:38:42.495+02:00</updated><title type='text'>Language Workbench Competition 2011 Workshop</title><content type='html'>At &lt;a href="http://www.codegeneration.net/cg2011/index.php"&gt;Code Generation 2011&lt;/a&gt; we had the first of (hopefully a series of) workshops for comparing language workbench tools as part of the &lt;a href="http://www.languageworkbenches.net"&gt;Language Workbench Competition&lt;/a&gt;. The workshop was a lot of fun and very educational. If you want a summary, take a look at &lt;a href="http://www.theenterprisearchitect.eu/archive/2011/05/26/language-workbench-competition-2011"&gt;Johan den Haan's summary&lt;/a&gt;, or at the very intensive &lt;a href="http://twitter.com/#!/search/%23lwc11"&gt;Twitter Live Coverage&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Hopefully to be repeated! Best workshop in a long time!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-8174039204895767275?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.languageworkbenches.net/workshop.html' title='Language Workbench Competition 2011 Workshop'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/8174039204895767275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=8174039204895767275' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/8174039204895767275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/8174039204895767275'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2011/05/language-workbench-competition-2011.html' title='Language Workbench Competition 2011 Workshop'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-2492787378818386918</id><published>2011-05-26T14:23:00.002+02:00</published><updated>2011-05-26T14:33:39.600+02:00</updated><title type='text'>MPS 2.0 Milestone 5 is out</title><content type='html'>MPS 2.0 M5 is out, the &lt;a href="http://confluence.jetbrains.com/display/MPS/What%27s+new+in+MPS+2.0+M5"&gt;New and Noteworthy&lt;/a&gt; is available. The highlight certainly is the debugger support for debugging MPS with MPS. This obviously helps you track down problems in your language. M5 also comes with a type system tracer that helps you better understand the unification that's used to calculate types. &lt;br /&gt;&lt;br /&gt;One more Milestone, and the final release should be out end of June or beginning of July. Great stuff :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-2492787378818386918?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://confluence.jetbrains.com/display/MPS/What%27s+new+in+MPS+2.0+M5' title='MPS 2.0 Milestone 5 is out'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/2492787378818386918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=2492787378818386918' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/2492787378818386918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/2492787378818386918'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2011/05/mps-20-milestone-5-is-out.html' title='MPS 2.0 Milestone 5 is out'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-4807076267490059550</id><published>2011-05-18T19:51:00.003+02:00</published><updated>2011-05-18T19:53:53.693+02:00</updated><title type='text'>Video: 500 km mit dem Segelflieger um Nurnberg</title><content type='html'>Ich habe mir ja kürzlich eine &lt;a href="http://driftinnovation.com/hd170-action-camera/"&gt;HD 170&lt;/a&gt; gegönnt, um ein paar Flug-Videos zu machen. Auf &lt;a href="http://voelter.de/flying/videos.html"&gt;dieser Seite&lt;/a&gt; habe ich die (Youtube) Videos verlinkt. Am spannendsten ist sicher der (25-teilige) Flug um Nürnberg. Da habe ich so ein bischen erzaehlt wie so ein Überlandflug funtktioniert. Viel Spaß beim ankucken :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-4807076267490059550?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://voelter.de/flying/videos.html' title='Video: 500 km mit dem Segelflieger um Nurnberg'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/4807076267490059550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=4807076267490059550' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/4807076267490059550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/4807076267490059550'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2011/05/video-500-km-mit-dem-segelflieger-um.html' title='Video: 500 km mit dem Segelflieger um Nurnberg'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-3723271796637604679</id><published>2011-05-16T21:39:00.003+02:00</published><updated>2011-05-16T21:44:34.167+02:00</updated><title type='text'>Xtext Typesystem Framework 2.0</title><content type='html'>I have just released a beta version of the &lt;a href="http://code.google.com/a/eclipselabs.org/p/xtext-typesystem/downloads/list"&gt;Xtext Typesystem Framework&lt;/a&gt;, version 2.0. It is compatible with version 2.0 of &lt;a href="http://www.eclipse.org/Xtext/"&gt;Xtext&lt;/a&gt;. I am thankful to &lt;a href="http://twitter.com/#!/ademelt"&gt;Achim Demelt&lt;/a&gt; who did the port to Xtext 2.0. What I did in the meantime was adding a textual DSL to specify the typing rules:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-nXLDyRq72sE/TdF-SpOYFRI/AAAAAAAAA2s/7Hq0lag5gdU/s1600/Bildschirmfoto%2B2011-05-16%2Bum%2B21.42.19.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 285px;" src="http://2.bp.blogspot.com/-nXLDyRq72sE/TdF-SpOYFRI/AAAAAAAAA2s/7Hq0lag5gdU/s400/Bildschirmfoto%2B2011-05-16%2Bum%2B21.42.19.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5607401869821875474" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The DSL provides a more concise syntax, as well as static error checking for a bunch of typical errors. Get it :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-3723271796637604679?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://code.google.com/a/eclipselabs.org/p/xtext-typesystem/downloads/list' title='Xtext Typesystem Framework 2.0'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/3723271796637604679/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=3723271796637604679' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/3723271796637604679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/3723271796637604679'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2011/05/xtext-typesystem-framework-20.html' title='Xtext Typesystem Framework 2.0'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-nXLDyRq72sE/TdF-SpOYFRI/AAAAAAAAA2s/7Hq0lag5gdU/s72-c/Bildschirmfoto%2B2011-05-16%2Bum%2B21.42.19.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-8164731458537047033</id><published>2011-04-18T09:30:00.003+02:00</published><updated>2011-04-18T09:33:34.015+02:00</updated><title type='text'>What will be coming in Xtext/Xpand/Xtend in June</title><content type='html'>If you are interested in MDD and DSLs on the Eclipse platform, you have of course heard about the upcoming release of Xtext and the accompanying tools. If not, let me give you my view on what will come, and summarize the two most important points. At the core of the new stuff is XBase, an expression language. It can be reused is DSLs, and it is part of Xtend2.&lt;br /&gt;&lt;br /&gt;Xtend2 is basically a re-implementation of the old (i.e. current :-)) Xpand and Xtend. It can be used for model-to-model transformation as well as for code generation. A cleaned-up version of Xpand's template syntax is embedded in special Xtend strings. Xtend itself is a "streamlined Java" with higher-order functions, type inference and closures. A really big benefit of Xtend2 compared to the current stuff is that the tooling is implemented with Xtext, and hence is much better quality than the current one. This will be a significant step forward for generator and transformation developers.&lt;br /&gt;&lt;br /&gt;XBase is part of Xtend, but it can also be embedded in DSLs. Strictly speaking, you don't *embed* Xbase, rather you make your own grammar inherit from Xbase, so you can reuse the expressions from Xbase in your own DSL. Since basically every (more interesting) DSL has expressions, this simplifies life quite a bit. Xbase is tightly integrated with the JVM and its type system -- it is not yet completely clear to me what this will mean for DSLs whose expressions are not related to JVM types. We'll see.&lt;br /&gt;&lt;br /&gt;In addition to these two major steps forward, there are of course any number of bug fixes and improvements. Some small, some a bit bigger, but they are incremental evolutions of what has been possible with the existing Xtext. The improvements&lt;br /&gt;regarding performance and memory consumption are quite significant. &lt;br /&gt;&lt;br /&gt;Obviously, I haven't done a lot of real work with this stuff so far, so I am not able to talk from actual experience. But what I have seen so far looks really good and makes me look forward to working with the new release.&lt;br /&gt;&lt;br /&gt;Xtext with Xtend, and of course, also MPS with BaseLanguage, clearly shows that language workenches are mature: you can absolutely implement "real" programming languages. These technologies have a great future ahead :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-8164731458537047033?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/8164731458537047033/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=8164731458537047033' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/8164731458537047033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/8164731458537047033'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2011/04/what-will-be-coming-in-xtextxpandxtend.html' title='What will be coming in Xtext/Xpand/Xtend in June'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-9173215585649082525</id><published>2011-03-27T12:51:00.003+02:00</published><updated>2011-03-28T19:29:29.771+02:00</updated><title type='text'>MD*/DSL Best Practices - 2011 Update</title><content type='html'>In 2008, I wrote a paper covering best practices for model-driven development and DSLs. They cover language design, generation, transformation and interpretation, as well as a couple of best practices regarding organizational issues. &lt;br /&gt;&lt;br /&gt;I have now revisited them and update the paper based on my experience over the last two or three years. That experience was influenced by more sophisticated DSLs, and my using MPS - which changes quite a couple of things in the MD* space.&lt;br /&gt;&lt;br /&gt;The update uses color to highlight the changes. &lt;a href="http://voelter.de/data/pub/DSLBestPractices-2011Update.pdf"&gt;Read it here.&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you want to comment/discuss/disagree, then I guess the right place is &lt;a href="http://www.infoq.com/news/2011/03/mdd-dsl-best-practices"&gt;here, a summary posting about my article at InfoQ&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-9173215585649082525?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://voelter.de/data/pub/DSLBestPractices-2011Update.pdf' title='MD*/DSL Best Practices - 2011 Update'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/9173215585649082525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=9173215585649082525' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/9173215585649082525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/9173215585649082525'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2011/03/mddsl-best-practices-2011-update.html' title='MD*/DSL Best Practices - 2011 Update'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-8267876849471763616</id><published>2011-03-16T09:17:00.003+01:00</published><updated>2011-03-16T09:20:44.369+01:00</updated><title type='text'>Xtext Interpreter Framework</title><content type='html'>I have just published the Xtext interpreter framework. It can be found in the same GoogleCode repository as the &lt;a href="http://code.google.com/a/eclipselabs.org/p/xtext-typesystem/ "&gt;Xtext Typesystem Framework&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;The framework generates helper classes for interpreters and provides utilities for handling environments as well as logging (including a nice log view for "debugging"). &lt;a href="http://xtext-typesystem.eclipselabs.org.codespot.com/files/XtextInterpreter-1.0.pdf"&gt;Documentation is available&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-8267876849471763616?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://code.google.com/a/eclipselabs.org/p/xtext-typesystem/downloads/listI' title='Xtext Interpreter Framework'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/8267876849471763616/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=8267876849471763616' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/8267876849471763616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/8267876849471763616'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2011/03/xtext-interpreter-framework.html' title='Xtext Interpreter Framework'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-3876427070458129706</id><published>2011-01-31T09:48:00.001+01:00</published><updated>2011-01-31T09:50:22.620+01:00</updated><title type='text'>MPS export to Eclipse EMF</title><content type='html'>Over the last couple of days I have created an EMF export facility for MPS. You can export ecore files from language definitions, as well as XMI files from the instance models.&lt;br /&gt;&lt;br /&gt;The export is integrated into the MPS generator facilities. Here is how you use it:&lt;br /&gt;&lt;br /&gt;To export an ecore meta model, take any concept declaration in your language of choice and add an ecore export specification annotation (there is an intention for that). In this annotation, you have to specify the name of the to-be-created EPackage, the nsURI as well as the (absolute) path to where the file should be stored. The file's name will correspond to the name of the EPackage. Once you (re-)generate your language, the ecore file will automatically be written as well.&lt;br /&gt;&lt;br /&gt;To export an XMI file, select any root element you want to export into an XMI file (currently it's one XMI file per root node). Once again, you create an annotation via an intention. Note that you can only annotate root nodes whose concept has an ecore export specification. In the annotation, you specify path and name, and when you generate the model, the XMI file is written as well.&lt;br /&gt;&lt;br /&gt;Notice how nicely one can use the EMF export facility with any language (incl the meta language used for language definition) because of the annotation facility.&lt;br /&gt;&lt;br /&gt;Note that the export currently doesn't yet support enumerations (I will work on that...).&lt;br /&gt;&lt;br /&gt;You can find the code at &lt;a href="https://github.com/markusvoelter/MPSEMFIntegration"&gt;https://github.com/markusvoelter/MPSEMFIntegration&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-3876427070458129706?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='https://github.com/markusvoelter/MPSEMFIntegration' title='MPS export to Eclipse EMF'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/3876427070458129706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=3876427070458129706' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/3876427070458129706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/3876427070458129706'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2011/01/mps-export-to-eclipse-emf.html' title='MPS export to Eclipse EMF'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-534174175763012704</id><published>2011-01-23T16:24:00.003+01:00</published><updated>2011-01-23T16:26:28.228+01:00</updated><title type='text'>Tutorial and Download for MEL/C MPS project</title><content type='html'>The source code for C-based &lt;a href="http://mbeddr.com"&gt;Modular Embedded Language&lt;/a&gt; is now available as a download (as opposed to checking it out from SVN). There is also a new Hello World tutorial that shows you how to write your own litte C/state machine/tasks program in MEL. &lt;a href="http://code.google.com/p/mpscmindstorms/downloads/list"&gt;Get it here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-534174175763012704?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://code.google.com/p/mpscmindstorms/downloads/list' title='Tutorial and Download for MEL/C MPS project'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/534174175763012704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=534174175763012704' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/534174175763012704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/534174175763012704'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2011/01/tutorial-and-download-for-melc-mps.html' title='Tutorial and Download for MEL/C MPS project'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-2156851407937602402</id><published>2011-01-15T10:19:00.002+01:00</published><updated>2011-01-15T10:22:34.823+01:00</updated><title type='text'>SPLC Industry Track CFP</title><content type='html'>In August of 2011 the &lt;a href="http://splc2011.net"&gt;Software Product Lines Conference 2011&lt;/a&gt; will take place in Munich. SPLC has traditionally been a relatively academic conference; this year, however, they are working to get industry much more involved: here is the &lt;a href="http://www.splc2011.net/downloads/cfpaper.pdf"&gt;Call for Papers&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Let me cite the industry chair Christa Schwanninger: &lt;i&gt;we encourage you to submit industry papers to SPLC. If you are a PLE evangelist or consultant for other companies or within your company, helping your clients to write a joint publication could be a good way to motivate them. The revealed experience would help industry to improve the overall state of the knowledge and experience.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Nothing more to add. Please consider submitting something!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-2156851407937602402?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/2156851407937602402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=2156851407937602402' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/2156851407937602402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/2156851407937602402'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2011/01/splc-industry-track-cfp.html' title='SPLC Industry Track CFP'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-1259873714391546287</id><published>2011-01-09T15:06:00.002+01:00</published><updated>2011-01-09T15:11:05.397+01:00</updated><title type='text'>New Book Project</title><content type='html'>Eelco Visser and I have decided to write a book - we'll track the progress at &lt;a href="http://dsl-engineering.org/"&gt;dsl-engineering.org&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;The book will cover two main aspects: software engineering with DSLs as well as engineering DSLs, i.e., we talk about how DSLs can be used in software engineering and how to engineer good DSLs. The book will assume modern DSL engineering tools (language workbenches). It will not be a tutorial for any specific tool, but of course we will provide examples and some level of detail for the tools you expect from us (SDF/Spoofax, Xtext, MPS, and to a lesser degree, some others). &lt;br /&gt;&lt;br /&gt;Although we have just started the book project, we have already written the &lt;a href="http://dsl-engineering.org/wiki/bookintro"&gt;Introduction&lt;/a&gt; as if the book was already finished to give you an impression what we are planning to do. We have not yet decided how open the writing process will be, but of course there will be some degree of openness and community integration. So please check back with this website if you want to stay informed and possibly get involved.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-1259873714391546287?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://dsl-engineering.org/' title='New Book Project'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/1259873714391546287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=1259873714391546287' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/1259873714391546287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/1259873714391546287'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2011/01/new-book-project.html' title='New Book Project'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-8956253286480804313</id><published>2011-01-05T12:03:00.005+01:00</published><updated>2011-01-05T12:17:07.663+01:00</updated><title type='text'>Table support in MPS 2.0 coming along nicely</title><content type='html'>MPS 2.0 will feature direct support for tables in editors. I am currently playing around with the code in the MASTER branch in the public git, and I have created a simple example for tables: decision table support for Java. &lt;br /&gt;&lt;br /&gt;Here is an example model:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_p2bt7R1kJpo/TSRRIMMJ-6I/AAAAAAAAAwI/gc_DDsoipcE/s1600/dectab.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 228px;" src="http://4.bp.blogspot.com/_p2bt7R1kJpo/TSRRIMMJ-6I/AAAAAAAAAwI/gc_DDsoipcE/s400/dectab.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5558657041235049378" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can now comfortably insert new rows or columns, delete them, and enter expressions. The way you implement it in the editor definition is by subclassing a TableModel class, just as you know it from Swing. A couple of table model base classes exist for the various kinds of tables and matrixes you might want. In the case of this example, I map the table cells onto a linear structure, as defined in the following code (ExprHolders simply wrap/hold an arbitrary expression):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_p2bt7R1kJpo/TSRSGilFEWI/AAAAAAAAAwQ/7SueCq20MpA/s1600/dectabconcept.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 329px;" src="http://2.bp.blogspot.com/_p2bt7R1kJpo/TSRSGilFEWI/AAAAAAAAAwQ/7SueCq20MpA/s400/dectabconcept.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5558658112397054306" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Finally, for generation, I first map it to a new generic switch expression I have added to Java - the intermediate model looks as follows:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_p2bt7R1kJpo/TSRSWSexT3I/AAAAAAAAAwY/miGuqBKlzjc/s1600/dectab2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 386px; height: 400px;" src="http://1.bp.blogspot.com/_p2bt7R1kJpo/TSRSWSexT3I/AAAAAAAAAwY/miGuqBKlzjc/s400/dectab2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5558658382953533298" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In the last step, this is then mapped to a bunch of if statements.... &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Of course there are still a couple of quirks (it's an arbitrary pull from the repository, not a release!), but table support is coming along nicely.&lt;br /&gt;&lt;br /&gt;Also the new build/make system for languages is nice. It now figures out automatically which parts of languages have to be regenerated, reducing average generation times quite a bit.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-8956253286480804313?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/8956253286480804313/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=8956253286480804313' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/8956253286480804313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/8956253286480804313'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2011/01/table-support-in-mps-20-coming-along.html' title='Table support in MPS 2.0 coming along nicely'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_p2bt7R1kJpo/TSRRIMMJ-6I/AAAAAAAAAwI/gc_DDsoipcE/s72-c/dectab.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-7183930279534870114</id><published>2010-12-10T18:33:00.004+01:00</published><updated>2010-12-13T13:16:59.008+01:00</updated><title type='text'>Interested in an MPS Training?</title><content type='html'>We are plannung to run an MPS training at itemis in Zurich in mid-January. We still have a couple of seats available. If you want to participate, please contact me. I am sure we can agree on a pricing model that is interesting :-)&lt;br /&gt;&lt;br /&gt;The training will be Jan 18/19/20, and will cost 600 EUR (a bargain!).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-7183930279534870114?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/7183930279534870114/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=7183930279534870114' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/7183930279534870114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/7183930279534870114'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2010/12/interested-in-mps-training.html' title='Interested in an MPS Training?'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-5042753976374422466</id><published>2010-11-21T19:43:00.001+01:00</published><updated>2010-11-21T19:44:44.361+01:00</updated><title type='text'>RISE 2010 Summer School</title><content type='html'>As I write this, I am ready to drive to the airport in Salvador de Bahia, Brasil, to return home from the &lt;a href="http://riss2010.rise.com.br/"&gt;RiSE 2010&lt;/a&gt; summer school. This was a really cool event. As you can see from the &lt;a href="http://riselabs.dcc.ufba.br/eventos/riss2010/index.php?option=com_content&amp;view=article&amp;id=3&amp;Itemid=3"&gt;program&lt;/a&gt;, I was surrounded by a couple of really interesting people: Krzyzstof Czarnecki, Don Batory and Ira Baxter. All of them have worked for a long time in product lines, DSLs and program transformation. I don't know how much the participants learned from me, but I learnt *a lot* from the other speakers. It is a lot of fun to interact with these folks - too bad, that the opportunities to do this are so rare :-(&lt;br /&gt;&lt;br /&gt;So, thanks Eduardo for organizing this and for inviting me, and thanks to Krzyzstof, Don and Ira for a really nice time and many great discussions - and a lot of inspiration for future work :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-5042753976374422466?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://riss2010.rise.com.br/' title='RISE 2010 Summer School'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/5042753976374422466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=5042753976374422466' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/5042753976374422466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/5042753976374422466'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2010/11/rise-2010-summer-school.html' title='RISE 2010 Summer School'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-8153989880668741786</id><published>2010-11-02T19:58:00.002+01:00</published><updated>2010-11-02T20:04:59.913+01:00</updated><title type='text'>This Developer's Life (Podcast)</title><content type='html'>Many of you podcast listeners might have heard about &lt;a href="http://www.thisamericanlife.org/"&gt;This American Life&lt;/a&gt;. It is a very well produced podcast by NPR where each episode covers a specific topic with several mostly true stories, interspersed with music. Many people consider it one of the best radio shows/podcasts ever, and it has won several awares.&lt;br /&gt;&lt;br /&gt;Now there is something similar for software developers: &lt;a href="http://thisdeveloperslife.com/"&gt;This Developer's Life&lt;/a&gt;. Same style, same production value, but with stories about software development.&lt;br /&gt;&lt;br /&gt;Different than all other software podcasts, but nonetheless (or maybe because of that) very much worth listening to.&lt;br /&gt;&lt;br /&gt;And hats off to Rob Conery and Scott Hanselman for producing this. Being a podcaster myself, I know how much work goes into producing something like this! I hope they have the time and energy to keep it going :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-8153989880668741786?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://thisdeveloperslife.com/' title='This Developer&apos;s Life (Podcast)'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/8153989880668741786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=8153989880668741786' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/8153989880668741786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/8153989880668741786'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2010/11/this-developers-life-podcast.html' title='This Developer&apos;s Life (Podcast)'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-4125504843144777402</id><published>2010-10-22T03:54:00.002+02:00</published><updated>2010-10-22T04:05:12.952+02:00</updated><title type='text'>A thought on (Scientific) Conferences</title><content type='html'>Over the last couple of weeks I have been visiting a couple of conferences: MODELS, SLE, GPCE and OOPSLA (now: SPLASH). Particularly with OOPSLA, I noticed it was only a shadow of its former self: way fewer people, reduced programme, non-convincing location. Why is that? Clearly, it is all a consequence of the attendee numbers dropping. So why don't people go to OOPSLA anymore?&lt;br /&gt;&lt;br /&gt;There are of course many reasons, and I am not the one to analyse all of this completely. For one, there is simply more competition: the Agile folks, who have been at OOPSLA before, now have their own conference. Conferences like JAOO - although different in style - pull many of the industry attendees away. &lt;br /&gt;&lt;br /&gt;However, there is also another problem I'd like to call "conference fragmentation". People don't go to these "big software conferences" anymore, they go to more specialized ones. Let me give you a small overview of the major conferences in the modeling space: MODELS, GPCE, SLE, ICMT, ECMFA, Code Generation, ... and more. The problem here is this: each of these conferences has their own time and location, requiring travel. Because there are more and more conferences, you see fewer and fewer interesting people at each of them. All in all, it makes conferences much less attractive!&lt;br /&gt;&lt;br /&gt;There may be reasons why more conferences are better (possibly, I don't know). But can we please colocate them? Can't we have a European Modeling thing go on in the spring (with 3 conferences colocated) and maybe another one in the US in fall? This would make organization simpler, would allow participants to network better, make everything cheaper (economies of scale) and, best of all, require less (annoying) travel.&lt;br /&gt;&lt;br /&gt;Don't know if anyone of the decision makers is reading this, but if so, please give it a thought.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-4125504843144777402?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/4125504843144777402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=4125504843144777402' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/4125504843144777402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/4125504843144777402'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2010/10/thought-on-scientific-conferences.html' title='A thought on (Scientific) Conferences'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-2917170145906705887</id><published>2010-10-06T22:12:00.001+02:00</published><updated>2010-10-06T22:14:35.828+02:00</updated><title type='text'>MPS 2.0 M1</title><content type='html'>The folks at JetBrains have just released Milestone 1 of MPS 2.0. It's probably not a good idea to switch to it immediately, but you should at least take a look at &lt;a href="http://confluence.jetbrains.net/display/MPS/What's+new+in+MPS+2.0+M1"&gt;What's New&lt;/a&gt; in it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-2917170145906705887?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://confluence.jetbrains.net/display/MPS/What&apos;s+new+in+MPS+2.0+M1' title='MPS 2.0 M1'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/2917170145906705887/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=2917170145906705887' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/2917170145906705887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/2917170145906705887'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2010/10/mps-20-m1.html' title='MPS 2.0 M1'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-4199429342434983466</id><published>2010-10-03T17:56:00.002+02:00</published><updated>2010-10-03T17:58:15.630+02:00</updated><title type='text'>Xtext Typesystem Framework - 1.3</title><content type='html'>I've just released the 1.3 version of the Xtext &lt;a href="http://bit.ly/c3EPgo"&gt;typesystem framework&lt;/a&gt;. It contains a couple of fixes, but most importantly. it supports type coercion. I have also updated the docs, they now include an example of how to use the typesystem in scopes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-4199429342434983466?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://bit.ly/c3EPgo' title='Xtext Typesystem Framework - 1.3'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/4199429342434983466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=4199429342434983466' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/4199429342434983466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/4199429342434983466'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2010/10/xtext-typesystem-framework-13.html' title='Xtext Typesystem Framework - 1.3'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-1013329910272878141</id><published>2010-09-06T09:04:00.005+02:00</published><updated>2010-09-06T09:20:00.535+02:00</updated><title type='text'>A story about working with MPS</title><content type='html'>I am currently working on a DSL for scientific calculations (integrated with Java) in MPS. As part of this DSL I need an expression interpreter. For various reasons, I cannot add the typical &lt;i&gt;evaluate&lt;/i&gt; methods to the expression classes themselves, so I have to write a separate interpreter. &lt;br /&gt;&lt;br /&gt;Basically what I need to do is this: depending on the concrete expression, I need to recusively call the evaluate function, doing something (e.g. multiply or divide or add) with the result. Here is an example of the typical code you would write in Java:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_p2bt7R1kJpo/TIST1RaI2yI/AAAAAAAAAq8/4CNDbLw1c3M/s1600/originalCode.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 312px;" src="http://4.bp.blogspot.com/_p2bt7R1kJpo/TIST1RaI2yI/AAAAAAAAAq8/4CNDbLw1c3M/s400/originalCode.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5513694387223714594" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now, this code is rather ugly because it has all these if-then-else statements (Java cannot do a switch/case with an instanceof) and also all this casting stuff going on. However, since I am working with MPS I am not forced to stick with existing Java. So I have spent an hour or so to enable a nicer notation:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_p2bt7R1kJpo/TISUuD755BI/AAAAAAAAArE/V3THxs0LLKU/s1600/dispatchCode.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 130px;" src="http://4.bp.blogspot.com/_p2bt7R1kJpo/TISUuD755BI/AAAAAAAAArE/V3THxs0LLKU/s400/dispatchCode.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5513695362859787282" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As you can see, I have created a new dispatch expression that basically enumerates the different cases and the result of the method. The $ sign refers to the already downcasted expression over which we dispatch, so no manual cast is necessary.&lt;br /&gt;&lt;br /&gt;This new notation is obviously much more concise, and also much more readable. The fact that the arrows are aligned also helps.&lt;br /&gt;&lt;br /&gt;It really is nice if you can enhance the programming language yo work with on the fly :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-1013329910272878141?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/1013329910272878141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=1013329910272878141' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/1013329910272878141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/1013329910272878141'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2010/09/story-about-working-with-mps.html' title='A story about working with MPS'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_p2bt7R1kJpo/TIST1RaI2yI/AAAAAAAAAq8/4CNDbLw1c3M/s72-c/originalCode.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-4070658626146053046</id><published>2010-08-24T17:34:00.001+02:00</published><updated>2010-08-24T17:35:50.351+02:00</updated><title type='text'>Xtext Typesystem Framework</title><content type='html'>Starting with version 1.0, it has become absolutely feasible to build complex languages of Xtext. One aspect of a complex language is usually support for expressions. Expressions require recursive grammar definitions, for which assignment actions in Xtext provide reasonable support. &lt;br /&gt;&lt;br /&gt;However, once you have expressions, it typically also need a type system. While it can be argued that type system checks are nothing more than constraints, building a reasonable type system is a lot of work that can use additional support over plain constraint checks. &lt;br /&gt;&lt;br /&gt;The code in this Google Code project provides this kind of support. Read the documentation on the &lt;a href="http://code.google.com/a/eclipselabs.org/p/xtext-typesystem/downloads/list"&gt;download page&lt;/a&gt; to learn more.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-4070658626146053046?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://code.google.com/a/eclipselabs.org/p/xtext-typesystem/' title='Xtext Typesystem Framework'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/4070658626146053046/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=4070658626146053046' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/4070658626146053046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/4070658626146053046'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2010/08/xtext-typesystem-framework.html' title='Xtext Typesystem Framework'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-1935892662073941897</id><published>2010-08-17T15:59:00.002+02:00</published><updated>2010-08-17T16:03:00.643+02:00</updated><title type='text'>MPS 1.5 available</title><content type='html'>JetBrains have just released the 1.5 version of MPS. It comes with a bunch of new features, among them a debugger, improved version control integration, some generator language features, some ew editor features and &lt;a href="http://www.jetbrains.com/mps/whatsnew"&gt;much more&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;If you want to play with it, you get get it &lt;a href="http://www.jetbrains.com/mps/download/"&gt;from here&lt;/a&gt;. JetBrains have also &lt;a href="http://blogs.jetbrains.com/mps/2010/08/mps-source-code-repository-is-publicly-available-now/"&gt;made the source repository available&lt;/a&gt;, so you can keep track as the system evolves.&lt;br /&gt;&lt;br /&gt;Check it out!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-1935892662073941897?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blogs.jetbrains.com/mps/2010/08/mps-15-is-ready-for-downloads/' title='MPS 1.5 available'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/1935892662073941897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=1935892662073941897' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/1935892662073941897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/1935892662073941897'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2010/08/mps-15-available.html' title='MPS 1.5 available'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-8510125267920613662</id><published>2010-08-04T19:17:00.002+02:00</published><updated>2010-08-04T19:19:30.654+02:00</updated><title type='text'>Erstes Deutschsprachiges MPS Training</title><content type='html'>Zusammen mit Software und Support haben wir ein &lt;a href="http://entwickler-akademie.de/codecamps/mps"&gt;zweitägiges Hands-On Seminar zu MPS&lt;/a&gt; organisiert. Je nach Zahl der Teilnehmer werden wir bis zu drei Trainer sein, sodass wir jedem Teilnehmer sinnvoll helfen können. &lt;br /&gt;&lt;br /&gt;Der Preis für das ganze ist recht vernünftig.... wer kommt??&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-8510125267920613662?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://entwickler-akademie.de/codecamps/mps' title='Erstes Deutschsprachiges MPS Training'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/8510125267920613662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=8510125267920613662' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/8510125267920613662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/8510125267920613662'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2010/08/erstes-deutschsprachiges-mps-training.html' title='Erstes Deutschsprachiges MPS Training'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-3508927685157334915</id><published>2010-07-28T16:57:00.002+02:00</published><updated>2010-07-28T16:59:20.431+02:00</updated><title type='text'>New MPS Tutorial available</title><content type='html'>A new, very detailed &lt;a href="http://code.google.com/p/mps-lwc11/wiki/GettingStarted"&gt;MPS Tutorial&lt;/a&gt; is available. It is based on the MPS entry for the &lt;a href="http://www.languageworkbenches.net/"&gt;Language Workbenches Competition 2011&lt;/a&gt; and explain some basic, but also some non-trivial aspects of MPS.&lt;br /&gt;&lt;br /&gt;Give it a try, and let me know what we can improve. We're going to evolve it over time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-3508927685157334915?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://code.google.com/p/mps-lwc11/wiki/GettingStarted' title='New MPS Tutorial available'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/3508927685157334915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=3508927685157334915' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/3508927685157334915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/3508927685157334915'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2010/07/new-mps-tutorial-available.html' title='New MPS Tutorial available'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-5640597992519566355</id><published>2010-07-25T11:27:00.003+02:00</published><updated>2010-07-25T14:00:25.286+02:00</updated><title type='text'>Language Workbench Competition 2011</title><content type='html'>Over the past few years, and actually the past year, a lot of new initiatives have surfaced in the area of creating so called language workbenches - aiming at facilitating the definition and use of DSLs and code generation.&lt;br /&gt;&lt;br /&gt;We believe each of these has its own strengths and weaknesses, and none is 'the best' for every purpose. Still, a lot of people keep asking for the best workbench. Based on that, we have started a Language Workbench Competition, in which we will be able to compare the strengths and weaknesses of these workbenches based on solutions for a predefined set of cases.&lt;br /&gt;&lt;br /&gt;If you want to participate (implement the case) or just understand how the different workbenches work, &lt;a href="http://www.languageworkbenches.net/"&gt;take a look at the site&lt;/a&gt;. Currently, of course, there are no submissions yet.&lt;br /&gt;&lt;br /&gt;The idea for LWC11 originates from a group of people who met in the preparations for, and during CodeGeneration 2010: Markus Völter, Eelco Visser, Steven Kelly, Angelo Hulshout, Jos Warmer, Pedro J. Molina, Bernhard Merkle and Karsten Thoms.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-5640597992519566355?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.languageworkbenches.net/' title='Language Workbench Competition 2011'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/5640597992519566355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=5640597992519566355' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/5640597992519566355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/5640597992519566355'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2010/07/language-workbench-competition-2011.html' title='Language Workbench Competition 2011'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-7342013497248133901</id><published>2010-06-11T16:25:00.002+02:00</published><updated>2010-06-11T16:29:45.065+02:00</updated><title type='text'>mbeddr.com</title><content type='html'>I have created a new website that covers the MPS/C/Mindstorms stuff I am working on with Bernhard Merkle (and hopefully a larger group of people soon): &lt;a href="http://mbeddr.com"&gt;mbeddr.com&lt;/a&gt;. Among other things it contains a couple of new videos about the C implementation in MPS: &lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=Q-wybqjHOcE"&gt;Project Overview&lt;/a&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=H3UMKp99p3w"&gt;Extending C, Part 1&lt;/a&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=lgAw52xK14U"&gt;Extending C, Part 2&lt;/a&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-7342013497248133901?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://mbeddr.com' title='mbeddr.com'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/7342013497248133901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=7342013497248133901' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/7342013497248133901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/7342013497248133901'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2010/06/mbeddrcom.html' title='mbeddr.com'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-3018247844378222835</id><published>2010-06-10T12:04:00.002+02:00</published><updated>2010-06-10T12:06:33.326+02:00</updated><title type='text'>Xtext Helios Screencast</title><content type='html'>In case you haven't seen it so yet: the Xtext team recently did a &lt;a href="http://live.eclipse.org/node/886"&gt;screencast&lt;/a&gt; on the Helios Xtext. At about 35 minutes into the video, the new features in Helios are explained. These are most impressive. Congratulations to the team!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-3018247844378222835?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://live.eclipse.org/node/886' title='Xtext Helios Screencast'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/3018247844378222835/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=3018247844378222835' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/3018247844378222835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/3018247844378222835'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2010/06/xtext-helios-screencast.html' title='Xtext Helios Screencast'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-9059283231996496932</id><published>2010-06-05T08:34:00.001+02:00</published><updated>2010-06-05T08:35:33.530+02:00</updated><title type='text'>Papyrus team integrates Xtext</title><content type='html'>Adding to my &lt;a href="http://voelterblog.blogspot.com/2010/06/notational-flexibility-making-progress.html"&gt;recent blog post&lt;/a&gt; about notational flexibility on Eclipse: the Papyrus team has integrated Xtext with Papyrus. &lt;a href="http://5ise.quanxinquanyi.de/2010/06/04/xtext-and-papyrus-uml/"&gt;Andreas Graf has blogged about it, incl. a video&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-9059283231996496932?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://5ise.quanxinquanyi.de/2010/06/04/xtext-and-papyrus-uml/' title='Papyrus team integrates Xtext'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/9059283231996496932/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=9059283231996496932' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/9059283231996496932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/9059283231996496932'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2010/06/papyrus-team-integrates-xtext.html' title='Papyrus team integrates Xtext'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-8987566540784307967</id><published>2010-06-03T10:42:00.002+02:00</published><updated>2010-06-06T19:17:04.485+02:00</updated><title type='text'>Notational Flexibility - making progress</title><content type='html'>In &lt;a href="http://voelterblog.blogspot.com/2010/05/mpsclego-news.html"&gt;a recent blog post&lt;/a&gt; I talked about how MPS can render the same model in different ways, in the same editor. The examples was a statemachine rendered as text and a table. Over in the Eclipse Modeling world, progress is being made in a similar way. Here are some examples.&lt;br /&gt;&lt;br /&gt;Jan Koehnlein has worked on, &lt;a href="http://koehnlein.blogspot.com/2009/06 /synchronized-editors-with-tmfxtext-and.html"&gt;and blogged about&lt;/a&gt; editing the same model with a graphical and a textual editor at the same time. Essentially this means that the GMF editor uses Xtext for serializing the model to a file. The typical usage is this: A meta model contains high level structures as well as fine grained details. As you define the GMF editor, you only create editor concepts for the coarse grained stuff. In the Xtext editor, you create a grammar for everything. What this means is this: you can for example edit a model completely textually. You can then open it in the graphical editor, which of course only shows (and lets you edit) the coarse grained elements. However, as you save the model back, the fine grained stuff you had added in the textual editor before is still there - it has been loaded by EMF, *not* modified by the graphical editor, and serialized back. So you can use this setup to "fill in the finer points" into a graphical model - making sure the graphical model is not polluted by all the details.&lt;br /&gt;&lt;br /&gt;Nirmal Sasidharan showed me two other interesting things yesterday. One was a demo actually created by Jan where an Xtext editor is embedded into a GMF editor. Imagine you have a UML modeler and you want to edit the (say) set of attributes. You an click on the attribute compartment, and an in-place Xtext editor opens to let you edit the "textual content of a box". Very very nice.&lt;br /&gt;&lt;br /&gt;The final thing Nirmal showed me is something he created recently, where he embedded an Xtext editor into an Eclipse Forms application. Imagine a forms-based business app, which some embedded DSL snippets. Very nice!&lt;br /&gt;&lt;br /&gt;Notational flexibility, with appropriate tool support, is important. This is what the users of DSLs see and interact with. If you want to  make domain experts use DSLs, you have to use *their* syntax. &lt;br /&gt;&lt;br /&gt;Glad we're making progress!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-8987566540784307967?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/8987566540784307967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=8987566540784307967' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/8987566540784307967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/8987566540784307967'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2010/06/notational-flexibility-making-progress.html' title='Notational Flexibility - making progress'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-3307951514265239966</id><published>2010-05-14T17:57:00.003+02:00</published><updated>2010-05-14T17:58:38.594+02:00</updated><title type='text'>MPS/C/Lego Video</title><content type='html'>Just to let you know: I have recently updated the MPS/C/Lego &lt;a href="http://code.google.com/p/mpscmindstorms/"&gt;project home page&lt;/a&gt; with a short &lt;a href="http://www.youtube.com/watch?v=Q-wybqjHOcE"&gt;demo video&lt;/a&gt;. If you want to watch it be sure to set it to HD mode so you can read the code...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-3307951514265239966?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://code.google.com/p/mpscmindstorms/' title='MPS/C/Lego Video'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/3307951514265239966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=3307951514265239966' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/3307951514265239966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/3307951514265239966'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2010/05/mpsclego-video.html' title='MPS/C/Lego Video'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-8024250238715644630</id><published>2010-05-07T08:30:00.002+02:00</published><updated>2010-05-07T08:39:47.594+02:00</updated><title type='text'>MPS/C/Lego News</title><content type='html'>Wow, long time no posts :-)  This week at JAX I had a chance to do some MPS hacking together with Konstantin from JetBrains. We played around a bit with the upcoming version of MPS. He showed me the debugger and other cool things. For example, they have extended BaseLanguage/Java with Closures, native syntax for the Builder pattern (for assembling hierarchical data structures). They've also recently added 1:n:n:n... expressions (aStatemachine.states.transitins.event) and they have implemented extensions methods (a way to add additional members to existing classes) Very impressive :-)&lt;br /&gt;&lt;br /&gt;We used some of this to build a table notation for the state machines. The text and table notation can be switched at will while editing. Very nice :-)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_p2bt7R1kJpo/S-O1nr-LN1I/AAAAAAAAAXY/0Wa4NFHIvgQ/s1600/mpstable.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 271px;" src="http://3.bp.blogspot.com/_p2bt7R1kJpo/S-O1nr-LN1I/AAAAAAAAAXY/0Wa4NFHIvgQ/s400/mpstable.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5468414065980946258" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-8024250238715644630?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/8024250238715644630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=8024250238715644630' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/8024250238715644630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/8024250238715644630'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2010/05/mpsclego-news.html' title='MPS/C/Lego News'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_p2bt7R1kJpo/S-O1nr-LN1I/AAAAAAAAAXY/0Wa4NFHIvgQ/s72-c/mpstable.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-2902153871190572162</id><published>2010-04-07T20:45:00.002+02:00</published><updated>2010-04-07T20:48:19.653+02:00</updated><title type='text'>Software Experts Summit in Munich</title><content type='html'>On June 9 there will be a &lt;a href"http://www.software-experts-summit.de/index.php"&gt;nice little 1 day conference&lt;/a&gt; on software engineering in Munich. The speakers are all part of the IEEE Software industry advisory board. Since the board meeting will take place the two days before in Munich, the chair of the board, Frances Paulisch, has taken the chance to do a littel conference "on the side". &lt;br /&gt;&lt;br /&gt;The conference, although branded "SIEMENS", is accessible to non-SIEMENS folks. So if you're interested, take a look at the &lt;a href="http://www.software-experts-summit.de/agenda.php"&gt;agenda&lt;/a&gt;, it does look interesting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-2902153871190572162?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.software-experts-summit.de/index.php' title='Software Experts Summit in Munich'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/2902153871190572162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=2902153871190572162' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/2902153871190572162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/2902153871190572162'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2010/04/software-experts-summit-in-munich.html' title='Software Experts Summit in Munich'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-343202936685555371</id><published>2010-02-14T13:42:00.002+01:00</published><updated>2010-02-14T13:51:08.200+01:00</updated><title type='text'>Dringende Buchempfehlung: Gunter Dueck's "Aufbrechen"</title><content type='html'>Ich bin ja nicht unbedingt ein Fan der früheren Dueck-Bücher. Ich finde sie teils etwas zu philosophisch und langatmig. Aber das neue, &lt;a href="http://www.amazon.de/AUFBRECHEN-Warum-Exzellenzgesellschaft-werden-müssen/dp/3821865148"&gt;"Aufbrehen - Warum wir eine Exzellenzgesellschaft werden müssen"&lt;/a&gt; ist absolute Pflichlektüre für jeden der Deutsch versteht. &lt;br /&gt;&lt;br /&gt;Dueck beschreibt wie sich die klassische Dienstleistungsgesellschaft aufgrund zunehmender Automatisierung dem Ende nähert. Der einzige Weg für ein Land (und die darin lebenden Menschen) relevant zu bleiben ist Exzellenz: also richtig gut sein bei dem was man tut. Mit anderen Worten: wir sollten dringend in Bildung und zukunfsfähige Infrastrukturen investieren. Ich will aber gar nicht mehr erzaehlen. Für jeden der sich schon mal die Frage gestellt hat wie das mit diesem Land eigentlich so weiter gehen soll, ist das Buch dringend lesenswert.&lt;br /&gt;&lt;br /&gt;Übrigens hat Dueck auf der &lt;a href="http://oopconference.com"&gt;OOP 2010&lt;/a&gt; über dieses Thema geredet und ich habe ihn im Vorlauf im Rahmen des OOP Podcasts dazu &lt;a href="http://www.sigs.de//kongresse/oop_2010/oop2010-episode4-gunterDueck.mp3"&gt;interviewt&lt;/a&gt;. Nach dem Interview war mir klar, dass ich das Buch lesen werden müsste. Vielleicht geht's Euch beim Hören des Interviews ja auch so :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-343202936685555371?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.amazon.de/AUFBRECHEN-Warum-Exzellenzgesellschaft-werden-müssen/dp/3821865148' title='Dringende Buchempfehlung: Gunter Dueck&apos;s &quot;Aufbrechen&quot;'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/343202936685555371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=343202936685555371' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/343202936685555371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/343202936685555371'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2010/02/dringende-buchempfehlung-gunter-duecks.html' title='Dringende Buchempfehlung: Gunter Dueck&apos;s &quot;Aufbrechen&quot;'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-8280953167209442365</id><published>2010-02-09T08:54:00.004+01:00</published><updated>2010-02-09T15:25:47.477+01:00</updated><title type='text'>MPS/C/Lego Showcase at Embedded World 2010!</title><content type='html'>I am glad to report that I will have the chance to show the MPS/C/Lego showcase at this year's &lt;a href="http://www.embedded-world.de/de/default.ashx"&gt;Embedded World&lt;/a&gt; conference. &lt;a href="http://itemis.com"&gt;itemis&lt;/a&gt; have a booth there, and I will be at the booth Wednesday and Thursday to help communicate itemis' story about model-driven development, DSLs and embedded systems - including Eclipse Modeling and Xtext, Yakindu and also the MPS/C/Lego showcase.&lt;br /&gt;&lt;br /&gt;So if you're at Embedded World, be sure to drop by :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-8280953167209442365?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.embedded-world.de/de/default.ashx' title='MPS/C/Lego Showcase at Embedded World 2010!'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/8280953167209442365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=8280953167209442365' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/8280953167209442365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/8280953167209442365'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2010/02/mpsclego-showcase-at-embedded-world.html' title='MPS/C/Lego Showcase at Embedded World 2010!'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-8597663837273918961</id><published>2010-02-08T21:11:00.003+01:00</published><updated>2010-02-08T21:14:54.809+01:00</updated><title type='text'>There's nothing more motivating than cool technology, Part 2</title><content type='html'>Of course I had to show the MPS/C/Mindstorms thing to my girlfriend. She works with embedded software for BOSCH. So in some very real sense, she would be a user of what we are building here. Together we built a simple "dancing robot" example. With a statemachine and a task. She said she really liked what she saw! Very encouraging! (Typically she is rather sceptical about the "magic" stuff I work on) We added some product line variability to create two versions of the "dance". Just a matter of minutes.&lt;br /&gt;&lt;br /&gt;The cool thing was: except for a little bug in the statemachine generator, the new program (built with my own language) worked out of the box!! &lt;br /&gt;&lt;br /&gt;This stuff is really A LOT of fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-8597663837273918961?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/8597663837273918961/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=8597663837273918961' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/8597663837273918961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/8597663837273918961'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2010/02/theres-nothing-more-motivating-than_08.html' title='There&apos;s nothing more motivating than cool technology, Part 2'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-8401678108817040437</id><published>2010-02-08T17:27:00.001+01:00</published><updated>2010-02-08T17:28:45.379+01:00</updated><title type='text'>There's nothing more motivating than cool technology!</title><content type='html'>I spent the last couple of days and the weekend working on the Lego Mindstorms MPS showcase together with Bernhard Merkle. I extended my C implementation on MPS with state machines, tasks, bit patterns and other neat stuff useful for embedded programming and the Lego Mindstorms showcase.&lt;br /&gt;&lt;br /&gt;It's hard to overstate how much fun it was! It is literally a matter of hours to extend a programming language (C) with new, domain-specific concepts that integrate completely into the programming experience - including the IDE and the type system. &lt;br /&gt;&lt;br /&gt;MPS is really an unbelievably powerful tool, and it is surprisingly mature. Very little "strange behaviour". The only thing missing for a complete experience is an extendible debugger - and that will come with the next release (1.2).&lt;br /&gt;&lt;br /&gt;There's only one problem: Using MPS effectively requires quite a bit of learning. The learning curve is significant. It's hard for most people to cough up the time and effort to work through the learning curve - I could not have done it without the wonderful support from Jetbrains' Konstantin Solomatov. The only thing I can say is: it's really worth it. It's a perfect environment for language development and integration, and clearly plays in the same league as Xtext and Intentional's Domain Workbench, with each of the tools having their own strong  points and weaknesses.&lt;br /&gt;&lt;br /&gt;Go, take a couple of weeks, and dig into it! It's really cool!&lt;br /&gt;&lt;br /&gt;PS: I will blog about hte actual showcase later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-8401678108817040437?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/8401678108817040437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=8401678108817040437' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/8401678108817040437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/8401678108817040437'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2010/02/theres-nothing-more-motivating-than.html' title='There&apos;s nothing more motivating than cool technology!'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-644038746650191014</id><published>2010-02-05T16:56:00.003+01:00</published><updated>2010-02-05T17:05:13.839+01:00</updated><title type='text'>Helios Xtext coming along nicely</title><content type='html'>If you're an &lt;a href="http://xtext.org"&gt;Xtext&lt;/a&gt; user you should take a look at the &lt;a href="http://www.eclipse.org/Xtext/documentation/0_8_0/new_and_noteworthy.php"&gt;New and Noteworthy for Helios M5&lt;/a&gt;. The &lt;a href="http://itemis.com"&gt;itemis&lt;/a&gt; team in Kiel is making good progress and the feature set for Helios is shaping up nicely.&lt;br /&gt;&lt;br /&gt;I guess there's no point in repeating what the &lt;a href="http://www.eclipse.org/Xtext/documentation/0_8_0/new_and_noteworthy.php"&gt;New and Noteworthy&lt;/a&gt; says, but I want to point out one feature specifically: the Builder infrastructure results in a "global model space". In other words you don't have to explicitly import resources (files) to be able to refernece an element. You can do it like Java and work with logical namespaces or packages or something. In the M5 release the guys added a feature which makes this facility perfect: Ctrl-Shift-Z opens a dialog where you can enter a the name of a model element and you can directly jump to that element. This completes the "Java IDE feeling" for your own DSLs. Very nice :-)&lt;br /&gt;&lt;br /&gt;If you want to try it out get the &lt;a href="http://xtext.itemis.de/xtext/language=de/23940/downloads"&gt;M5 distro&lt;/a&gt;. It contains a bunch of examples that showcase the new features.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-644038746650191014?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.eclipse.org/Xtext/documentation/0_8_0/new_and_noteworthy.php' title='Helios Xtext coming along nicely'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/644038746650191014/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=644038746650191014' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/644038746650191014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/644038746650191014'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2010/02/helios-xtext-coming-along-nicely.html' title='Helios Xtext coming along nicely'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-2495247223727461815</id><published>2010-02-05T15:37:00.003+01:00</published><updated>2010-02-05T15:48:35.968+01:00</updated><title type='text'>DSL Best Practices Video</title><content type='html'>The folks from the &lt;a href="http://jax.de/"&gt;JAX conference&lt;/a&gt; have published the video of one of my talks at last year's JAX: &lt;a href="http://it-republik.de/jaxenter/news/JAX-TV-DSL-Best-Practices-053744.html"&gt;DSL/MDSD Best Practices&lt;/a&gt;. It's german and I have a cold, but I guess it's still worth watching if you're into these topics.&lt;br /&gt;&lt;br /&gt;(you can also read most of what I said in English &lt;a href="http://www.jot.fm/issues/issue_2009_09/column6/index.html"&gt;in this article&lt;/a&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-2495247223727461815?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://it-republik.de/jaxenter/news/JAX-TV-DSL-Best-Practices-053744.html' title='DSL Best Practices Video'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/2495247223727461815/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=2495247223727461815' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/2495247223727461815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/2495247223727461815'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2010/02/dsl-best-practices-video.html' title='DSL Best Practices Video'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-869112834270455998</id><published>2010-01-24T14:20:00.002+01:00</published><updated>2010-01-24T14:23:23.025+01:00</updated><title type='text'>New Product Lines Book</title><content type='html'>A new book on software product lines has been published. It is called &lt;a href="http://www.amazon.de/gp/product/1420068415"&gt;Applied Software Product Line Engineering &lt;/a&gt;, edited by Kyo C. Kang,  Vijayan Sugumaran, and Sooyong Park and contains contributions (papers) by various authors. Among them are &lt;a href="http://www.sea.uni-linz.ac.at/index.php?title=Dipl._Ing._%28FH%29_Dr._Iris_Groher"&gt;Iris Groher&lt;/a&gt; and myself.&lt;br /&gt;&lt;br /&gt;So if you're interested in PLE stuff, you might want to consider this book!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-869112834270455998?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.amazon.de/gp/product/1420068415' title='New Product Lines Book'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/869112834270455998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=869112834270455998' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/869112834270455998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/869112834270455998'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2010/01/new-product-lines-book.html' title='New Product Lines Book'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-1232546627772084145</id><published>2009-12-30T12:58:00.002+01:00</published><updated>2009-12-30T13:03:44.276+01:00</updated><title type='text'>DSL Unconference - Einladung</title><content type='html'>Am 18./19. Februar findet in einem schönen Hotel in der Mitte Deutschlands (Details folgen :-)) eine zweitätige kleine Unconference (Open Space) rund um DSLs statt. Die Idee ist: miteinander reden, philosophieren, diskutieren, demonstrieren, coden, voneinander lernen - rund um DSLs, intern und extern. Also Dinge wie: Scala, Groovy, Ruby, Eclipse, MPS, Parser, etc.&lt;br /&gt;&lt;br /&gt;Das ganze ist keine Schulung, jeder Teilnehmer muss etwas beitragen! Wir versuchen die Kosten so niedrig wie möglich zu halten, aber Seminargebühr und Hotel werden wohl trotzdem so zwischen 200 und 250 EUR werden, denke ich. &lt;br /&gt;&lt;br /&gt;Ich organisiere das ganze zusammen mit Stefan Tilkov. Wer Lust hat, mitzumachen, &lt;a href="mailto:voelter@acm.org"&gt;melde sich bitte ASAP bei mir&lt;/a&gt;. Dabei bitte angeben, was ihr vorstellen/diskutieren wollt.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-1232546627772084145?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/1232546627772084145/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=1232546627772084145' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/1232546627772084145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/1232546627772084145'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/12/dsl-unconference-einladung.html' title='DSL Unconference - Einladung'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-2625426191246189970</id><published>2009-12-03T19:46:00.002+01:00</published><updated>2009-12-03T19:49:20.681+01:00</updated><title type='text'>Java Language Days auf der JAX</title><content type='html'>At next year's JAX conference there will be a two-day special track on new and interesting languages on the JVM (see &lt;a href="http://it-republik.de/konferenzen/jax2010/specialdays"&gt;here&lt;/a&gt;). The days are organized by Dierk König and myself. We still have free slots, as well as a budget to invite people. So please &lt;a href="mailto:voelter@acm.org"&gt;let me know&lt;/a&gt; who you want to hear speak at this event.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-2625426191246189970?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://it-republik.de/konferenzen/jax2010/specialdays' title='Java Language Days auf der JAX'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/2625426191246189970/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=2625426191246189970' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/2625426191246189970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/2625426191246189970'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/12/java-language-days-auf-der-jax.html' title='Java Language Days auf der JAX'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-7453037137357915128</id><published>2009-12-01T18:48:00.003+01:00</published><updated>2009-12-02T09:11:38.617+01:00</updated><title type='text'>Software Engineering Method and Theory</title><content type='html'>&lt;a href="http://www.semat.org"&gt;SEMAT&lt;/a&gt; is an initiative that wants to&lt;br /&gt;&lt;br /&gt;&lt;i&gt;support a process to refound software engineering  based on a solid theory and best practices.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;This certainly sounds interesting. If they can keep it relevant for practitioners, this is certainly interesting to follow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-7453037137357915128?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://semat.org' title='Software Engineering Method and Theory'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/7453037137357915128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=7453037137357915128' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/7453037137357915128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/7453037137357915128'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/12/software-engineering-method-and-theory.html' title='Software Engineering Method and Theory'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-5386765978453036554</id><published>2009-12-01T18:40:00.003+01:00</published><updated>2009-12-01T18:42:56.335+01:00</updated><title type='text'>SEACON 2010 - Call for Speakers</title><content type='html'>The 2010 edition of the &lt;a href="http://www.sigs-datacom.de/konferenzen/seacon.html"&gt;SEACON&lt;/a&gt; is in the process of being prepared (I am on the PC, this is why I blog about it :-)). The conference, taking place on June 28 and 29 in Hamburg, focusses on Interaction Design, Communication, Domain-Oriented Software Development and Test Automation. So, I encourage you to &lt;a href="http://www2.sigs-datacom.de/html/kongresse/seacon_2009/index.htm"&gt;take a look at the CfP and submit something&lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-5386765978453036554?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www2.sigs-datacom.de/html/kongresse/seacon_2009/index.htm' title='SEACON 2010 - Call for Speakers'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/5386765978453036554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=5386765978453036554' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/5386765978453036554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/5386765978453036554'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/12/seacon-2010-call-for-speakers.html' title='SEACON 2010 - Call for Speakers'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-3296795933842517247</id><published>2009-11-29T13:02:00.002+01:00</published><updated>2009-11-29T13:14:09.751+01:00</updated><title type='text'>PLE Track at OOP 2010</title><content type='html'>At this year's OOP conference there will be a two day track on product line engineering, organized by Christa Schwanninger of SIEMENS. The two days are packad with a number of really interesting and relevant talks, going beyond only the technical aspects (such as variant management). So if you're interested in PLE, take a look at &lt;a href="http://www.sigs-datacom.de/konferenz/konferenzprogramm/ansicht-nach-tracks/ple.html"&gt;the talks&lt;/a&gt; and consider joining :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-3296795933842517247?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.sigs-datacom.de/konferenz/konferenzprogramm/ansicht-nach-tracks/ple.html' title='PLE Track at OOP 2010'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/3296795933842517247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=3296795933842517247' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/3296795933842517247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/3296795933842517247'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/11/ple-track-at-oop-2010.html' title='PLE Track at OOP 2010'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-558968026527107536</id><published>2009-11-26T21:58:00.001+01:00</published><updated>2009-11-26T21:59:42.211+01:00</updated><title type='text'>The Role of Domain Experts in *designing* DSLs</title><content type='html'>One of the advantages of using DSLs is - so people say - that the communication between domain experts and software developers is improved. However, a good "business" DSL is one where the business or domain folks can do the coding themselves and then they run the generator to build the executable software. Where in this picture is the communication between the domain expert and the developer that the DSL should improve? In an ideal scenario, business people, after creating the models, press a button. No need to communicate to a developer.&lt;br /&gt;&lt;br /&gt;However, there's of course another take at this problem: before domain users can use the DSL to write down their domain specific programs or models, the DSL needs to be created! This DSL creation, and the development of the generators, etc. is of course something a developer does! So the communication between domain experts and developers happens during language creation and evolution!&lt;br /&gt;&lt;br /&gt;So, where does this leave us? We need to improve the domain expert/developer collaboration during DSL creation! How can DSL tools help with that? After all, they are designed for developers, right? Are we back to the same old "domain experts write it down in Word, throw it over the fence, and then the devs build the DSL"-kind of scenario? Something that DSLs aim at avoiding in the first place?&lt;br /&gt;&lt;br /&gt;Here are some ideas and examples of how domain experts can play a role in language development.&lt;br /&gt;&lt;br /&gt;When building a DSL with Xtext, language definition is so quick and straight forward that the domain expert can provide input, the developer builds the grammar, and then the domain expert can use the resulting language/editor to try out whether the language can represent his ideas. Because Xtext is so lightweight, such a round-trip can happen in a couple of minutes. Consequently, it is absolutely feasible to put a domain expert and a developer in front of a machine to develop a language together. There's no real need to write a "language specification".&lt;br /&gt;&lt;br /&gt;Intentional has emphasized this idea for a while now. They encourage language developers to start new domains/languages by first just writing down domain concepts (essentially, words at this time) and their relationships. At this point, without defining sophisticated custom projections, models can be edited using a default projection. After an hour or two of pair-language-development the dev can spend the rest of the day alone implementing the fancy custom projections. But at least a first rough cut at defining models based on the new language is available immediately.&lt;br /&gt;&lt;br /&gt;With MetaEdit+, the graphical shapes representing the concepts in a diagram can be defined with a nice graphical editor. Again, this shape definition is something that can involve domain experts. &lt;br /&gt;&lt;br /&gt;So what do we take from this? Quick turn-around during DSL development is essential to be able to include the domain expert in this crucial phase. When selecting a DSL tool, you should take into account this concern - it hasn't been discussed much AFAIK, and most DSL tools don't make this a priority. Maybe this should change.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-558968026527107536?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/558968026527107536/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=558968026527107536' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/558968026527107536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/558968026527107536'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/11/role-of-domain-experts-in-designing.html' title='The Role of Domain Experts in *designing* DSLs'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-3388714545288670344</id><published>2009-11-26T08:13:00.002+01:00</published><updated>2009-11-26T08:26:54.127+01:00</updated><title type='text'>Learn about DSLs and Schwäbisch at the same time: MID Insight 09 Keynote</title><content type='html'>Two weeks ago I gave a keynote at the &lt;a href="http://www.mid.de/Insight-2009.628.0.html?&amp;L=0"&gt;MID Insight 09&lt;/a&gt; conference. I talked about "Programming and Modeling - Two worlds?" The folks at MID filmed the keynote and I uploaded it to vimeo. So &lt;a href="http://vimeo.com/7823075"&gt;here is the video&lt;/a&gt; and &lt;a href="http://www.voelter.de/data/presentations/ProgrammingToModeling-MID.pdf"&gt;the slides are here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;By the way: While the slides are in English, the talk and the video are in German (Schwäbisch).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-3388714545288670344?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://vimeo.com/7823075' title='Learn about DSLs and Schwäbisch at the same time: MID Insight 09 Keynote'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/3388714545288670344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=3388714545288670344' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/3388714545288670344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/3388714545288670344'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/11/learn-about-dsls-and-schwabisch-at-same.html' title='Learn about DSLs and Schwäbisch at the same time: MID Insight 09 Keynote'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-1093925195243428237</id><published>2009-11-25T17:51:00.002+01:00</published><updated>2009-11-25T17:53:55.964+01:00</updated><title type='text'>Tutorial @ SE 2010: Software Engineering mit Domänenspezifischen Sprachen und Language Workbenches</title><content type='html'>I was just notified that my (and Peter Friese's) tutorial for &lt;a href="http://www.se2010.upb.de"&gt;SE 2010&lt;/a&gt; has been accepted: Software Engineering with DSLs and Language Workbenches. This is a German conference and a German tutorial, so here's the German abstract:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Als Softwareentwickler sind wir daran gewöhnt, uns mithilfe existierender Programmiersprachen auszudrücken, also die Fachlichkeit des zu erstellenden Systems mittels objektorientierter, funktionaler, oder andere Ausdrucksmittel der Implementierungssprache zu beschreiben. In den letzten Jahren haben sich allerdings Werkzeuge entwickelt, mit denen es möglich ist, eigene Sprachen zu bauen beziehungsweise existierende Sprachen zu erweitern. In diesem Tutorium gehen wir darauf ein, wie sich Softwareentwicklung ändert wenn man die Möglichkeit hat die Sprache an die Domäne anzupassen, und nicht gezwungen ist, sich im Rahmen existierender Programmiersprache zu bewegen. Im ersten Teil des Tutoriums erläutern wir Grundlagen zu domänenspezifischen Sprachen und Spracherweiterungen und erläutere einige wichtige Anwendungsfälle für diese Technologien. Im zweiten Teil werden wir zwei Werkzeuge zeigen mit denen Sprachbau mit vertretbarem Aufwand möglich ist (Eclipse Xtext, JetBrains MPS). Der zweite Teil besteht zum Großteil aus praktischen Übungen.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;By the way: it does not overlap with the &lt;a href="http://www.se2010.upb.de/workshops.html#PIK2010"&gt;PIK 2010&lt;/a&gt; workshop, so you can actually come and join us for both :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-1093925195243428237?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.se2010.upb.de/tutorien.html#SEmDSuLW' title='Tutorial @ SE 2010: Software Engineering mit Domänenspezifischen Sprachen und Language Workbenches'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/1093925195243428237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=1093925195243428237' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/1093925195243428237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/1093925195243428237'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/11/tutorial-se-2010-software-engineering.html' title='Tutorial @ SE 2010: Software Engineering mit Domänenspezifischen Sprachen und Language Workbenches'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-7441762785876764764</id><published>2009-11-21T09:24:00.002+01:00</published><updated>2009-11-21T09:33:14.679+01:00</updated><title type='text'>Thoughts on Migrating Model-Driven Solutions between Tools</title><content type='html'>This week I was at a customer who started MDD a couple of years ago. They started with oAW 3.x and at some point migrated to oAW 4.x, using the Classic mode. This means that the meta model was implemented as Java classes. Because the decided to generate from UML, the meta classes were subclasses of the UML 1.x meta model implemented in Java that shipped with oAW classic. &lt;br /&gt;&lt;br /&gt;The model defines the core data structures of a large scientific instrument, and it serve as a data exchange layer between systems implemented in several programming languages. Consequently, they have code generators for seven different target languages, i.e. they have put quite a bit of effort into the generators. The meta model structure is reasonably simple, but the behaviour, or derived attributes if you will, implemented in Java is quite non trivial. &lt;br /&gt;&lt;br /&gt;Now they decided to migrate to the most current oAW, i.e. using EMF for the meta model and models, and Xtend for the derived behaviour. Consequently, all the meta classes implemented as subclasses of UML 1.x classes don't work anymore. Generally, the behaviour implemented in Java is obsolete and cannot be directly reused. A manual migration of the behaviour from Java to Xtend (or to whatever other platform) is required. This is a lot of work - almost prohibitive!&lt;br /&gt;&lt;br /&gt;So what can we do to avoid situations like these?&lt;br /&gt;&lt;br /&gt;There is no simple solution. Dependencies on tools, no matter which kinds of tools, are always a problem. If you wanted to migrate your system from one database/middleware/UI framework to another, this is also a lot of work. What can we do specifically in MDD tools to tackel this problem? I think there are a couple of things that are a good starting point:&lt;br /&gt;&lt;br /&gt;Instead of writing the code generators directly against the UML meta model, you should introduce an intermediate domain specific layer. Code generators are written against this domain specific meta model, and a model-to-model transformation transforms the profiled UML model to the domain specific meta model. This has  several benefits: generators become simpler because the are written against a simpler meta model. Simpler generators are easier to migrate. The complexity of handling UML (they used a couple of non-trivial conventions) is encapsulated in the one M2M transformation instead of being repeated into seven code generators. Also, a migration from UML 1 to 2 (or to a real DSL, throwing away UML) would be simpler, because the differences would all be handled in one single place. No change to the code generstors required.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As a second point, you should use declarative approaches wherever possible. Things like validations, scopes, type systems etc. should not be implemented in "procedural" code. Turing complete, procedural code is hard to "understand" with a tool (other than a compiler) and hence is complex to transform into another representation when you want to migrate the code. The more declarative, restricted and structured such descriptions are, the easier it is to work with them. This is of course the whole point about models in the first place! So maybe I should say it differntly: make sure that as many aspects of meta models, validations, scopes, generators and transformations are themselves described as a model! In oAW 3.x/Classic this is clearly not the case - it is  the case to a larger degree (not enough!) with more current versions of Eclipse Modeling and oAW.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Finally, assuming you use models for all these things, make sure it is models based on the same tools/formalisms as your application models. This makes them "just another model" which you can (relatively) easily process in a migration with the tools you are working with anyway. In tools like MPS and Intentional, all aspects of DSLs are defined with models expressed in other MPS/Intentional DSLs. It is turtles all the way down :-)&lt;br /&gt;  &lt;br /&gt;So what do I take away from this: First, migrations are always hard, also in case of MDD tools. They are especially hard if the effort is put into the generators (for multiple platforms) and not so much into the models (note that we actually added an intermediate domain-specific meta model now; introducing this is just two or three days of work). The second takeaway is that we need to enhance tools such as Xtext&lt;br /&gt;(or EMF in general) to describe more aspects of DSLs as models. Validations, scopes and type systems, as well as model navigation and queries ("give me all types of all public attributes of all classes in this file") are important candidates. There will of course always remain some aspects that need to be described with turing-complete implementation code. But by keeping this to a minimum, the tool lock-in and migration effort is minimized.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-7441762785876764764?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/7441762785876764764/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=7441762785876764764' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/7441762785876764764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/7441762785876764764'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/11/thoughts-on-migrating-model-driven.html' title='Thoughts on Migrating Model-Driven Solutions between Tools'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-5739159197700074234</id><published>2009-11-18T22:31:00.001+01:00</published><updated>2009-11-18T22:32:45.496+01:00</updated><title type='text'>Eclipse Demo Camp Stuttgart Location Change</title><content type='html'>If you are planning to join, please take a look &lt;a href="http://bit.ly/LYOkn"&gt;at this page&lt;/a&gt; to see the new updated location at the airport.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-5739159197700074234?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://bit.ly/LYOkn' title='Eclipse Demo Camp Stuttgart Location Change'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/5739159197700074234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=5739159197700074234' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/5739159197700074234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/5739159197700074234'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/11/eclipse-demo-camp-stuttgart-location.html' title='Eclipse Demo Camp Stuttgart Location Change'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-2106178491558169880</id><published>2009-11-16T07:47:00.001+01:00</published><updated>2009-11-16T07:48:45.517+01:00</updated><title type='text'>Oslo becomes SQL Server Modeling - my 2 cents</title><content type='html'>Here are my two cents why I am disappointed by Microsoft's decision to change Oslo to SQL Server Modeling. In &lt;a href="http://www.eweek.com/c/a/Application-Development/Microsoft-Defends-Oslo-Move-to-SQL-Server-203987/?kc=rss&amp;utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+RSS%2Feweekdeveloper+%28eWEEK+Developer%29&amp;utm_content=Google+Reader"&gt;this eWeek article&lt;/a&gt; Doug Purdy is being quoted as follows: &lt;br /&gt;&lt;br /&gt;&lt;i&gt;"The great irony to all these (negativ, ed.) comments is that all we did was change the name from 'Oslo' to ... SQL Server Modeling and now we get the #fail tag. If we had called it Windows Modeling or .NET Modeling would it have been #success?" &lt;/i&gt;&lt;br /&gt;&lt;br /&gt;When I saw Oslo and M, I was always disturbed by the focus on SQL Server integration. I always wondered, why, during talks and demos, the SQL Server aspect was emphasized. Sure, a scalable repository is good and useful. But I always considered it only &lt;i&gt;one&lt;/i&gt; option of storing models, basically a "persistence backend" of the nice and cool DSL facilities. I hoped MS would keep the DSL infrastructure indepedent of SQL Server. &lt;br /&gt;&lt;br /&gt;This most recent move changes the picture. Now Oslo is basically an API for SQL Server. SQL Server is not merely one of many persistence backends but rather the reason why M &amp; Co exist. And consequently, future decisions in M &amp; Co will be driven by the data community and not by the needs of the DSL community. &lt;br /&gt;&lt;br /&gt;So yes, I am somewhat disappointed. Oslo will probably still be a cool and useful tool for data modeling and programming on the SQL server. But it has lost its appeal to me as a general purpuse DSL tooling (at least until I get convinced otherwise :-))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-2106178491558169880?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/2106178491558169880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=2106178491558169880' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/2106178491558169880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/2106178491558169880'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/11/oslo-becomes-sql-server-modeling-my-2.html' title='Oslo becomes SQL Server Modeling - my 2 cents'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-7006470722921521587</id><published>2009-11-14T15:43:00.002+01:00</published><updated>2009-11-14T15:46:31.555+01:00</updated><title type='text'>PIK 2010: Produktlinien im Kontext</title><content type='html'>Here some information about an interesting workshop at the &lt;a href="http://www.se2010.upb.de/"&gt;SE 2010&lt;/a&gt; conference in Paderborn. &lt;br /&gt;&lt;br /&gt;&lt;i&gt;Produktlinien sind heute in vielen Bereichen der Software-Industrie vertreten, von Embedded Systems bis zu betrieblichen Informationssystemen. Sie ermöglichen höhere Produktivität, steigern die Qualität und verbessern die strategischen Positionen der Unternehmen. Zugleich sind Produktlinien noch eine relativ junge Technologie, die für viele Unternehmen noch bedeutende Herausforderungen und Risiken birgt.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Der Workshop PIK 2010 beleuchtet aktuelle Erfahrungen mit Software-Produktlinien und fördert den Dialog zwischen Praxis und anwendungsorientierter Forschung. Im Mittelpunkt steht das Wechselspiel zwischen technischen Fragestellungen und den geschäftlichen, organisatorischen und Prozessaspekten. Daneben werden auch neue technologische Entwicklungen vorgestellt und diskutiert.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;If you consider joining, please read the &lt;a href="http://2010.pik-konf.de/cfp.html"&gt;Call for Papers&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-7006470722921521587?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://2010.pik-konf.de/' title='PIK 2010: Produktlinien im Kontext'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/7006470722921521587/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=7006470722921521587' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/7006470722921521587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/7006470722921521587'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/11/pik-2010-produktlinien-im-kontext.html' title='PIK 2010: Produktlinien im Kontext'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-1112418496001928687</id><published>2009-11-11T14:37:00.002+01:00</published><updated>2009-11-11T14:41:24.731+01:00</updated><title type='text'>Eclipse Modeling: Models Getting Bigger</title><content type='html'>If you take a look at the more recent activities at Eclipse Modeling you can clearly see a focus on scalability, teamwork, and big or many models.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wiki.eclipse.org/CDO"&gt;CDO&lt;/a&gt;, the database-based persistence and collaboration layer for EMF models has been extremely popular at this year's Eclipse Summit. I heard about several projects that consider using CDO as the backend for an enterprise wide modeling infrastructure.&lt;br /&gt;&lt;br /&gt;What's currently is still missing in EMF (and to some extent also in CDO) is a flexible and scalable query facility. A query language is needed and EMF resources need to provide an API against which queries can be executed. The &lt;a href="http://www.eclipsecon.org/summiteurope2009/sessions?id=1009"&gt;model query project&lt;/a&gt;, spearheaded by SAP, aims at providing this.&lt;br /&gt;&lt;br /&gt;In the file/text based environment scalability is also an issue. Modern IDE is, for example, build an index of symbols and the resources in which they're defined to support efficient linking and lookup. The &lt;a href="http://wiki.eclipse.org/EmfIndex"&gt;EMF index project&lt;/a&gt;, led by the itemis folks in Kiel provides this capability specifically for use by Xtext.&lt;br /&gt;&lt;br /&gt;Finally, the &lt;a href="http://www.artop.org/"&gt;ARTOP project&lt;/a&gt; has created a number of facilities to work with EMF/XMI models that are several hundred megabytes in size (the tools are not publicly available right now).&lt;br /&gt;&lt;br /&gt;All of these projects and developments are a clear signal that Eclipse modeling is picking up momentum in "real" environments. It is a good sign if a technology leaves behind the "it works" phase and addresses "how to use it large scale".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-1112418496001928687?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/1112418496001928687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=1112418496001928687' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/1112418496001928687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/1112418496001928687'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/11/eclipse-modeling-models-getting-bigger.html' title='Eclipse Modeling: Models Getting Bigger'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-8320967167238717371</id><published>2009-11-07T19:49:00.002+01:00</published><updated>2009-11-07T19:54:22.521+01:00</updated><title type='text'>Programming, Modeling, DSLs and Language Workbenches</title><content type='html'>More and more I am getting to the point where I think that there should be no difference between modeling and programing. What we really want is to program ... at different levels of abstaction ... from different viewpoints ... all viewpoints integrated ... … with different degrees of domain-specificity ... with suitable notations ... with suitable level of expressiveness ... and always precise and tool processable. &lt;br /&gt;&lt;br /&gt;I am talking about this idea quite a bit. Some slides towards this point are at &lt;a href="http://www.slideshare.net/schogglad/from-programming-to-modeling-and-back-again"&gt;slideshare&lt;/a&gt; and &lt;a href="http://www.voelter.de/data/presentations/ProgrammingToModeling-JUGs.pdf"&gt;as PDFs on my website&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;I will blog about some of the thoughts from these slides in the next couple of weeks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-8320967167238717371?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/8320967167238717371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=8320967167238717371' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/8320967167238717371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/8320967167238717371'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/11/programming-modeling-dsls-and-language.html' title='Programming, Modeling, DSLs and Language Workbenches'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-5375262146431390108</id><published>2009-10-23T19:08:00.003+02:00</published><updated>2009-10-24T08:06:51.376+02:00</updated><title type='text'>William Cook on Industry and Academia</title><content type='html'>You should really read &lt;a href="http://wcook.blogspot.com/2009/10/ecoop-2009-banquet-speech.html"&gt;William Cook's ECOOP 2009 Banquet Speech&lt;/a&gt; on Industry and Academia. Very good! Here's an excerpt:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;The way I see it is that industry generally has more problems than they do solutions, but academia often has more solutions than problems. As an academic, I think everyone here will realize the value of a good problem. So if nothing else, we should revise the technology transfer story to include flows in both directions. Industry could transfer problems to academia, and academia could provide solutions to industry. I want to emphasize that both these flows are of high value.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Exactly how I see it, too!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-5375262146431390108?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://wcook.blogspot.com/2009/10/ecoop-2009-banquet-speech.html' title='William Cook on Industry and Academia'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/5375262146431390108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=5375262146431390108' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/5375262146431390108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/5375262146431390108'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/10/william-cook-on-industry-and-academia.html' title='William Cook on Industry and Academia'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-5496487025794107382</id><published>2009-10-23T09:58:00.003+02:00</published><updated>2009-10-23T10:21:28.261+02:00</updated><title type='text'>A few thoughts on code generation with MPS</title><content type='html'>Here is a typical scenario that I use when working with classical external DSLs: I describe certain structures in the model. From the model I generate all kinds of code, infrastructure, glue code, and also an API (e.g. superclasses) against which I then implement the manually-written business logic. &lt;br /&gt;&lt;br /&gt;Here is an important thing: if I want to enforce certain constraints, for example visiblities or dependencies, then it is not enough to enforce these constraints on model level. I must make sure, through generation of suitable code structures, that in the manually written parts I cannot violate these constraints. For example, I need to prevent the creation of depenencies that have been prevented on DSL level. Consequently, I have to put a lot of thought into the structure of the generated code and sometimes I need to use "tricks" to enforce these constraints on code level. Or I need to use static analysis tools.&lt;br /&gt;&lt;br /&gt;Contrast this with the approach in MPS: here you code *everything* in the model, because you can use Java (or other languages we're working on) directly on the model level. You don't implement code against some kind of generated API. So you can enforce the constraints mentioned above only in the model! The generated code is really not important here (sure, it should be readable and debuggable, but it's not something against you program). This simplifies the design of the generated code, and hence the code generator, quite a bit.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-5496487025794107382?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/5496487025794107382/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=5496487025794107382' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/5496487025794107382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/5496487025794107382'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/10/few-thoughts-on-code-generation-with.html' title='A few thoughts on code generation with MPS'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-3728488066435288558</id><published>2009-10-22T21:52:00.002+02:00</published><updated>2009-10-22T21:58:14.024+02:00</updated><title type='text'>Training on DSLs, Product Lines and Language Workbenches</title><content type='html'>On February 3 and 4 2010 I will run a &lt;a href="http://www.sioux.nl/index.php?option=com_content&amp;task=view&amp;id=249&amp;Itemid=245"&gt;course on Domain Specific Languages (for Product Lines)&lt;/a&gt; at &lt;a href="http://www.sioux.nl"&gt;Sioux Embedded Systems&lt;/a&gt; in Eindhoven, The Netherlands. In addition to concepts, I will cover &lt;a href="http://eclipse.org/Xtext"&gt;Xtext&lt;/a&gt; as well as &lt;a href="http://jetbrains.com/mps"&gt;MPS&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;I invite you to join, even if you already know one of the tools - maybe especially if you already one of the tools, so you can learn another approach. This will certainly deepen your understanding about DSL and the technologies used to implement them. &lt;br /&gt;&lt;br /&gt;If we get a nice group, this could be a very interesting, productive and fun training.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-3728488066435288558?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.sioux.nl/index.php?option=com_content&amp;task=view&amp;id=249&amp;Itemid=245' title='Training on DSLs, Product Lines and Language Workbenches'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/3728488066435288558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=3728488066435288558' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/3728488066435288558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/3728488066435288558'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/10/training-on-dsls-product-lines-and.html' title='Training on DSLs, Product Lines and Language Workbenches'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-1971061425744874272</id><published>2009-10-22T08:07:00.002+02:00</published><updated>2009-10-22T08:11:41.856+02:00</updated><title type='text'>Practical Product Lines 2009</title><content type='html'>I just returned from the &lt;a href="http://www.practicalproductlines.org/ppl2009/"&gt;PPL 2009&lt;/a&gt; conference in Amsterdam. Although small, the conference was very good: nice program, competent participants, nice venue, good food. I will definitely go back next year. It is also better value for money than SPLC if you're interested mainly in practical aspects of PLE. &lt;br /&gt;&lt;br /&gt;To get an impression of what the conference was like, take a look at the &lt;a href="http://twitter.com/#search?q=%23ppl2009"&gt;Twitter #ppl2009 stream&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-1971061425744874272?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.practicalproductlines.org/ppl2009/' title='Practical Product Lines 2009'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/1971061425744874272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=1971061425744874272' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/1971061425744874272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/1971061425744874272'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/10/practical-product-lines-2009.html' title='Practical Product Lines 2009'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-7784123494380058821</id><published>2009-10-18T12:39:00.002+02:00</published><updated>2009-10-18T12:46:16.792+02:00</updated><title type='text'>Slides uploaded to slideshare.net</title><content type='html'>I have just uploaded &lt;a href="http://www.slideshare.net/schogglad/presentations"&gt;a couple of my currently relevant presentations&lt;/a&gt; to &lt;a href="http://slideshare.net"&gt;http://slideshare.net&lt;/a&gt;. All of them had been online at &lt;a href="http://www.voelter.de/conferences/index.html"&gt;my website&lt;/a&gt;, too, but I decided I wanted to participate in the slideshare community.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-7784123494380058821?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.slideshare.net/schogglad/presentations' title='Slides uploaded to slideshare.net'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/7784123494380058821/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=7784123494380058821' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/7784123494380058821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/7784123494380058821'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/10/slides-uploaded-to-slidesharenet.html' title='Slides uploaded to slideshare.net'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-5314383029296219318</id><published>2009-10-11T18:17:00.002+02:00</published><updated>2009-10-11T18:20:17.120+02:00</updated><title type='text'>Type Systems for Xtext DSLs</title><content type='html'>I recently implemented a type system for an &lt;a href="http://eclipse.org/xtext"&gt;Xtext&lt;/a&gt; DSL. I wanted to give you a couple of pointers of how to do it, if you have to.&lt;br /&gt;&lt;br /&gt;What is a type system? A type system is essentially a set of sophisticated constraints. I.e. it is a way of determining whether a model is correct beyond its structure. We all know type systems from programming languages. If you try to add an int and a String, you'll get a type error. &lt;br /&gt;&lt;br /&gt;So, in principle, you could simply implement a type system as a set of Check constraints. This is true, but for non trivial type systems and languages, this can grow complex. A more principled approach is recommended, and it consists of three ingredients.&lt;br /&gt;&lt;br /&gt;The type meta model: the structure of types and their relationship often warrants its own meta model. For example, an array type isn't trivial: It has to express that it is an Array, it has to contain the size, and it has to point to the type of the elements in the array. The array type itself is structured. Hence, it is a good idea to create a meta model, or language, to capture the types. In the context of Xtext, you can either do this as a separate EMF meta model that you reference from the Xtext DSL, or you simply add additional rules to the language that represent the types once they are transformed to Ecore. Make sure that the grammar structure does not allow you to actually "write down" the types in models - you want to work with them behind the scenes.&lt;br /&gt;&lt;br /&gt;So how do you associate the type of an element with the element itself? A good way is simply to create a bunch of Xtend functions. I usually call it typeof(...) and define it polymorphically for all the language elements for which I want to have a type. These functions typically do one of two things: for atomic elements (e.g. an integer literal or an array declaration) the typeof(...) extension simply returns the type object, i.e. instances of the type meta model (or language) defined above. For non-atomic elements (let's say, a comparison operation that compares the result of a constant and a plus expression) the typeof function contains a type derivation rule. For example, for a plus expression, it returns the type of one of the operands (the types of the two operands have to be the same, see below). For a comparison&lt;br /&gt;operation, it simply returns boolean. &lt;br /&gt;&lt;br /&gt;Finally, once you have these two ingredients in place, you can now implement the actual type constraints. For example, it a type constraint might say that for a plus expression, the typeof(...) the left operand and the typeof(...) the right operand need to be the same. Note that by calling the typeof(...) function for both operands, the resulting type is calculated correctly even if the two operands are, for example, multiplication operations themselves. &lt;br /&gt;&lt;br /&gt;One last comment: usually, types don't have to be the same for a constraint to be correct, but they have to be "compatible", whereas compatible is defined specficially for each type. To incorporate this problem, simply create an isCompatible(t1, t2) Xtend function, which you polymorphically override for all relevant type combinations.&lt;br /&gt;&lt;br /&gt;That's it! Using this approach gives you a scalable, and maintainable type system implementation.&lt;br /&gt;&lt;br /&gt;PS: &lt;a href="http://jetbrains.com/mps"&gt;MPS&lt;/a&gt; uses the same approach. It even comes with a separate DSL for defining type systems, including a set of operators for type inference and type compatibility. Very nice!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-5314383029296219318?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/5314383029296219318/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=5314383029296219318' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/5314383029296219318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/5314383029296219318'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/10/type-systems-for-xtext-dsls.html' title='Type Systems for Xtext DSLs'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-4373138219462529620</id><published>2009-09-28T10:05:00.002+02:00</published><updated>2009-09-28T11:00:45.406+02:00</updated><title type='text'>MPS Workshop at itemis</title><content type='html'>Last week, we had a workshop about &lt;a href="http://jetbrains.com/mps"&gt;JetBrains MPS&lt;/a&gt; at &lt;a href="http://itemis.com"&gt;itemis&lt;/a&gt; in Pforzheim. &lt;a href="http://solomatov.wordpress.com/"&gt;Konstantin Solomatov&lt;/a&gt;, MPS' lead developer, was kind enough to spend a whole week with the team in Pforzheim to teach us MPS to a level of detail where I feel comfortable to start using the tool in real projects (thank you very much, Konstantin!).&lt;br /&gt;&lt;br /&gt;We have built a couple of example languages, all of them extensions of Java. Remember that one of the benefits of MPS is the ability to extend existing languages, in particular, the version of Java (called BaseLanguage) they ship with MPS: we have extended Java classes with state machines, we've added pre- and postconditions to Java interfaces, we implemented a new type to represent money and we've built a way to express product line variability for arbitrary languages.&lt;br /&gt;&lt;br /&gt;Once we got used to some of the particularities of MPS, working with the tool was actually very productive and comfortable. In the time we had, we got further along than I had expected. JetBrains have done a really good job with making the projecting editor "feel" as much as text as possible. Within a week or two, you can easily get used to working with this approach.&lt;br /&gt;&lt;br /&gt;Because MPS is a projectional editor, you can be extremely flexible regarding modularization and combination of languages. The four example languages we have built can be combined arbitrarily in a single program. Of course the drawback is, that programs are not stored as plain text, but rather as an abstract representation (XML). This means, that you can edit MPS programs only with MPS. However, the projectional approach does give you a significant amount of additional flexibility over storing the concrete syntax. In other words: there are many environments where storing the textual syntax is preferable, in which case tools like &lt;a href="http://eclipse.org/xtext"&gt;Xtext&lt;/a&gt; are the better choice. But there are also a number of scenarios where you don't care as much about how programs are stored, and you want to exploit the benefits regarding flexibility that projectional editors deliver. In those scenarios MPS is a very interesting candidate and certainly worth considering (remember, that it is also open source).&lt;br /&gt;&lt;br /&gt;In the next weeks, I will continue my evaluation of the &lt;a href="http://intentsoft.com"&gt;Intentional Domain Workbench&lt;/a&gt; to complete my picture about the three most interesting DSL tools out there: &lt;a href="http://eclipse.org/xtext"&gt;Eclipse Xtext&lt;/a&gt;, &lt;a href="http://jetbrains.com/mps"&gt;JetBrains MPS&lt;/a&gt; and the &lt;a href="http://intentsoft.com"&gt;Intentional Domain Workbench&lt;/a&gt;. These tools are different enough to warrant familiarity with each of them. They all have a particular sweet spot regarding where and how they should be used.&lt;br /&gt;&lt;br /&gt;Stay Tuned!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-4373138219462529620?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/4373138219462529620/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=4373138219462529620' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/4373138219462529620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/4373138219462529620'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/09/mps-workshop-at-itemis.html' title='MPS Workshop at itemis'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-6226375835742964750</id><published>2009-09-28T09:58:00.003+02:00</published><updated>2009-09-28T10:01:35.414+02:00</updated><title type='text'>The future of openArchitectureWare</title><content type='html'>Over the last couple of months, many people have asked me about the status of openArchitectureWare. &lt;a href="http://voelterblog.blogspot.com/2009/06/eclipse-galileo-and-oaw.html"&gt;I have blogged about this before&lt;/a&gt;. Here is some update. &lt;a href="http://heikobehrens.net"&gt;Heiko&lt;/a&gt; and &lt;a href="http://www.peterfriese.de/"&gt;Peter&lt;/a&gt; have created a succinct summary at &lt;a href="http://openarchitectureware.org/"&gt;openarchitectureware.org&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-6226375835742964750?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://openarchitectureware.org/' title='The future of openArchitectureWare'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/6226375835742964750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=6226375835742964750' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/6226375835742964750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/6226375835742964750'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/09/future-of-openarchitectureware.html' title='The future of openArchitectureWare'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-8215910185601674926</id><published>2009-09-27T18:31:00.002+02:00</published><updated>2009-09-27T18:33:30.199+02:00</updated><title type='text'>Profiler for XPand and Xtend</title><content type='html'>&lt;a href="http://www.heikobehrens.net"&gt;Heiko Behrens&lt;/a&gt; &lt;a href="http://www.heikobehrens.net/2009/09/25/profiler-for-xpandxtendcheck/"&gt;has blogged about the Xpand/Xtend Profiler&lt;/a&gt; that will be part of the next 0.8 M2 release. Using the profiler, you can substantially improve the performance of Xpand-based code generation and/or Xtend based model transformations. If you have issues with oAW performance, take a look!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-8215910185601674926?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.heikobehrens.net/2009/09/25/profiler-for-xpandxtendcheck/' title='Profiler for XPand and Xtend'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/8215910185601674926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=8215910185601674926' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/8215910185601674926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/8215910185601674926'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/09/profiler-for-xpand-and-xtend.html' title='Profiler for XPand and Xtend'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-2580432274296338012</id><published>2009-09-17T21:47:00.001+02:00</published><updated>2009-09-17T21:49:38.274+02:00</updated><title type='text'>Website down</title><content type='html'>It seems my website &lt;a href="http://www.voelter.de"&gt;http://www.voelter.de&lt;/a&gt; is currently down. My provider says they're working on it... they said this 5 hours ago. Let's see if it's up again by tomorrow morning.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-2580432274296338012?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/2580432274296338012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=2580432274296338012' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/2580432274296338012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/2580432274296338012'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/09/website-down.html' title='Website down'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-1343535389434798335</id><published>2009-09-09T16:16:00.002+02:00</published><updated>2009-09-09T16:30:44.304+02:00</updated><title type='text'>Using Scala for Xtext scope definitions</title><content type='html'>Over the last couple of days I have experimented with using &lt;a href="http://scala-lang.org"&gt;Scala&lt;/a&gt; for a &lt;a href="http://www.eclipse.org/Xtext"&gt;XText&lt;/a&gt; &lt;a href="http://www.eclipse.org/Xtext/documentation/0_7_2/xtext.html#scoping"&gt;scope&lt;/a&gt; definitions. In my opinion, the current API for defining reference scopes in Xtext has two problems: first, because it is based on naming conventions, there is no compiler error if you change the name of the referencing feature; your scope definition simply isn't invoked anymore. The second problem is that Java is not necessarily the ideal language to write more or less complex model navigation and query code. &lt;br /&gt;&lt;br /&gt;My Scala implementation addresses both of these problems. Scala, through its functional programming flavor, is much better suited for model navigation and query. Also, I've decided to generate a base class with empty scope definition methods and you provide the customized implementation in a subclass. Since Scala requires the use of the &lt;i&gt;override&lt;/i&gt; modifier if you want to override a method in a subclass, you get a compiler error if you change the name of the referencing feature (and hence, the name of the generated method in the base class).&lt;br /&gt;&lt;br /&gt;In the rest of this post I explain how I built this, and also discuss my experiences, and whether I recommend using this approach or not.&lt;br /&gt;&lt;br /&gt;The first you have to do is to install the &lt;a href="http://www.scala-lang.org/node/94"&gt;Scala IDE for Eclipse&lt;/a&gt;. Then you have to Scala-enable your language project, since you want to put scala code into it. I have &lt;a href="http://lampsvn.epfl.ch/trac/scala/wiki/EclipsePluginsWithScala"&gt;described here&lt;/a&gt; how you do this.&lt;br /&gt;&lt;br /&gt;Then you need to make sure that the base class with the generated scope methods is generated as part of the language generation process. To do this, I have written a plug-in that contains an additional &lt;a href="http://www.eclipse.org/Xtext/documentation/0_7_2/xtext.html#generator"&gt;Xtext generator fragment&lt;/a&gt; that generates this code. Generator fragments are plug-ins into the Xtext generator. You get the language grammar as an EMF model, and then you can generate whatever you want from it.&lt;br /&gt;&lt;br /&gt;Based on this infrastructure, you can then implement your own scope in Scala.&lt;br /&gt;&lt;br /&gt;Should you use this approach? In principle, yes. Scala really is much nicer than Java, particularly for the task at hand. And the fact that you get compiler errors if you rename properties is really useful.&lt;br /&gt;&lt;br /&gt;However, in practice there are two problems that really make me recommend do &lt;i&gt;not use this approach at this time&lt;/i&gt;: the first one is that the EMF data structures don't play well with Scala's collection API. You have to write a lot of conversion functions. While this is in principle possible (and actually, quite nice to do due to Scala's &lt;a href="http://daily-scala.blogspot.com/2009/08/implicit-methods.html"&gt;implicit methods&lt;/a&gt;) you do pay a performance penalty. However, I think this issue can be solved.&lt;br /&gt;&lt;br /&gt;The second problem is the Scala IDE for Eclipse. At least in this scenario, where you mix Java and Scala code, and where you use it for plug-in development, the IDE really is not good enough. For example, code completion doesn't work (at least on my machine), you have to do a full rebuild constantly to make sure changes in the Scala code make it to the class files, a compiler error in the Scala file "destroys" the classpath, preventing Xtext from generating the language, there is no "organize imports" for Scala, etc. etc.&lt;br /&gt;&lt;br /&gt;Now, my goal here is not at all to bash the Scala IDE. I got good support from &lt;a href="http://www.chuusai.com/"&gt;Miles Sabin&lt;/a&gt; who is the main person behind it. He said that by the end of the year the Scala IDE should be roughly comparable to the Java IDE in Eclipse (and he's looking for help in reaching this goal!). So I guess, I will check back later, when the 2.8 release of the IDE is available. I really think, once the Scala tooling in Eclipse has matured, using Scala for scopes is a good idea.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-1343535389434798335?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/1343535389434798335/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=1343535389434798335' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/1343535389434798335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/1343535389434798335'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/09/using-scala-for-xtext-scope-definitions.html' title='Using Scala for Xtext scope definitions'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-4204109192864539588</id><published>2009-09-06T19:55:00.002+02:00</published><updated>2009-09-06T19:58:14.553+02:00</updated><title type='text'>MDE Diploma in Nantes</title><content type='html'>The folks at Nantes (Ecole de Mines and INRIA) have started something interesting: an MDE Diploma. They describe it as &lt;br /&gt;&lt;br /&gt;&lt;i&gt;The MDE International post-graduate specialization Diploma in Model Driven Engineering (MDE) for Software Management is offered by Ecole des Mines de Nantes. Its objective is to train engineers to manage complex projects in various IT fields with the latest cutting-edge modeling technologies. &lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Sounds good! So if you're interested in enhancing your academic education, and want to do it in the context of model-driven stuff, you should &lt;a href="http://www.emn.fr/x-info/atlanmod/index.php/The_MDE_Diploma"&gt;take a look!&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-4204109192864539588?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.emn.fr/x-info/atlanmod/index.php/The_MDE_Diploma' title='MDE Diploma in Nantes'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/4204109192864539588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=4204109192864539588' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/4204109192864539588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/4204109192864539588'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/09/mde-diploma-in-nantes.html' title='MDE Diploma in Nantes'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-8673149331572136328</id><published>2009-08-27T17:36:00.001+02:00</published><updated>2009-08-27T17:37:34.605+02:00</updated><title type='text'>Xtext Helios Roadmap</title><content type='html'>... on &lt;a href="http://blog.efftinge.de/2009/08/xtext-road-to-helios.html"&gt;Sven's Blog&lt;/a&gt;. Let him know if you have comments, suggestions or input!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-8673149331572136328?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.efftinge.de/2009/08/xtext-road-to-helios.html' title='Xtext Helios Roadmap'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/8673149331572136328/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=8673149331572136328' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/8673149331572136328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/8673149331572136328'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/08/xtext-helios-roadmap.html' title='Xtext Helios Roadmap'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-5441613039882103843</id><published>2009-08-24T13:32:00.003+02:00</published><updated>2009-08-24T13:39:31.544+02:00</updated><title type='text'>Java programmers: you must read these two books</title><content type='html'>Recently, there has been a lot of hype around the idea of using different languages for programming the JVM. Many languages are available, as you probably know. However, I think two of these languages are specifically worth taking a look at because they approach the problem quite differently. These languages are &lt;a href="http://scala-lang.org"&gt;Scala&lt;/a&gt; and &lt;a href="http://clojure.org/"&gt;Clojure&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So, what &lt;i&gt;is&lt;/i&gt; the problem? The problem is, in my opinion, that the Java language (not the JVM) has stagnated. When Java was created, one of the primary goals was a significant simplification compared to C++. And I would argue, that this goal was reached. Java has deserved it's success. However, the landscape has changed over the last couple of years and Java did not evolve. Example areas include concurrency, functional programming, metaprogramming (internal) DSLs and type systems. As a consequence, alternatives languages flourished.&lt;br /&gt;&lt;br /&gt;It is interesting to see how Clojure and Scala address this challenge very (although not completely) differently. I'd say the only thing they have in common is their emphasis on functional programming.&lt;br /&gt;&lt;br /&gt;So let us look at some of the differences:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Typing:&lt;/b&gt; Scala is strongly typed, even more strongly than Java, but it comes with a sophisticated type inferencer to make sure the type system does not get in your way. Clojure on the other hand uses dynamic typing (duck typing, specifically), like so many of the "newer" languages. Consequently, Scala has a very sophisticated compiler, whereas Clojure emphasizes much more the runtime system.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Concurrency:&lt;/b&gt; Scala uses the &lt;a href="http://en.wikipedia.org/wiki/Actor_model"&gt;actor model&lt;/a&gt;. Actors are lightweight threads that communicate by message passing. Clojure mainly relies on immutable data structures and pure functions, but it also comes with a software transactional memory facility for managing shared state without requiring developers to manually manage locks.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Syntax:&lt;/b&gt; Scala's syntax is in the tradition of Java. Although it reduces noise significantly (thanks to type inference and many other useful conventions) it is still driven by keywords and different special symbols. Clojure on the other hand, in the tradition of Lisp, basically treats everything as a list. I have not yet made up my mind as to which syntactic style I prefer. My stomach tells me I prefer Scala style. However, I do recognize that the simplicity orthogonality of Lisp like syntax provides for some very powerful facilities (macros)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Extensibility and Metaprogramming:&lt;/b&gt; Both languages emphasize extensibility in the sense that you should be able to use libraries to provide powerful functionality, which ideally looks like as if it would be built into the language. As usual in Lisps, closure provides a macro system that supports the definition of almost arbitrary special forms (as long as they still look like a list, syntactically - that's the catch, of course). In Scala, by being able to avoid the dot operator, parentheses and semicolons and through clever use of functions, you can achieve some of the same goals (there is also a compiler plug-in framework).&lt;br /&gt;&lt;br /&gt;So, why am I talking about this, and why thus the title of this post talk about books?&lt;br /&gt;&lt;br /&gt;I would suggest that every self-respecting Java programmer has to inform themselves about these two languages. Even if you will never use them, you should take a look to understand how the same problem can be solved in different ways, and how languages on the JVM can evolve (both provide extremely good interoperability with Java the language, by the way). It's a matter of looking beyond your own nose.&lt;br /&gt;&lt;br /&gt;To do so, I suggest you read the following two books. Both are reasonably short, very well written, and emphasize the important issues:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/Programming-Scala-Multi-Core-Complexity-Programmers/dp/193435631X/"&gt;Programming Scala by Venkat Subramaniam&lt;/a&gt; and &lt;a href="http://www.amazon.com/Programming-Clojure-Pragmatic-Programmers-Halloway/dp/1934356336"&gt;Programming Clojure by Stuart Halloway&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-5441613039882103843?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/5441613039882103843/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=5441613039882103843' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/5441613039882103843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/5441613039882103843'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/08/java-programmers-you-must-read-these.html' title='Java programmers: you must read these two books'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-8158525251316825597</id><published>2009-08-18T12:20:00.002+02:00</published><updated>2009-08-18T12:23:57.874+02:00</updated><title type='text'>News about OSLO</title><content type='html'>Some &lt;a href="http://www.douglaspurdy.com/2009/08/17/on-oslo/"&gt;news about OSLO&lt;/a&gt;. I am not sure I like the merging of the Data Programmability team and the "Oslo" team ("Quadrant", Repository, "M"). I was always confused by some of the talks I heard where the SQL-ishness of everything was put into the foreground.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-8158525251316825597?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.douglaspurdy.com/2009/08/17/on-oslo/' title='News about OSLO'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/8158525251316825597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=8158525251316825597' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/8158525251316825597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/8158525251316825597'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/08/news-about-oslo.html' title='News about OSLO'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-3757590755183869689</id><published>2009-08-13T21:17:00.002+02:00</published><updated>2009-08-13T21:27:59.675+02:00</updated><title type='text'>Hardware for Podcast Editing</title><content type='html'>As you may know, I do quite a lot of audio editing these days for the various podcasts I am involved in. The time I spend editing the audio is worth optimizing....&lt;br /&gt;&lt;br /&gt;So I was looking into buying affordable external controllers (aka control surfaces) for Adobe Audition. There are two ways how Audition can be controlled from an external device: the MIDI interface as well as "something that simulates a keyboard".&lt;br /&gt;&lt;br /&gt;I have been looking into the following devices: &lt;a href="http://www.frontierdesign.com/Products/TranzPort/"&gt;Frontier Design Tranzport&lt;/a&gt;, the &lt;a href="http://www.numark.com/totalcontrol"&gt;Numark Total Control&lt;/a&gt;, the &lt;a href="http://www.thomann.de/de/miditech_mtbcommand_black.htm"&gt;Miditech MTB Command&lt;/a&gt; as well as the &lt;a href="http://www.thomann.de/de/contour_av_solutions_shuttlepro_hardwarecontroller.htm"&gt;Contour Shuttle Pro V2&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;The first three are MIDI devices and cost ca. 200 EUR. The last one is a "keyboard simulator" and costs EUR 99. I decided to try the cheapest one. &lt;br /&gt;&lt;br /&gt;It arrived today. It has 13 buttons and two wheels, I use one for transport and one for zooming. I've assigned the most commonly used editing operations to the 13 buttons. &lt;br /&gt;&lt;br /&gt;After editing a bit today I have to say it works really well! I now use the mouse with the right hand and the Shuttle with the left hand, hardly touching the keyboard. The editing experience is a quite a bit more efficient, and much more pleasant. &lt;br /&gt;&lt;br /&gt;It's a little bit like &lt;a href="http://en.wikipedia.org/wiki/HOTAS"&gt;HOTAS&lt;/a&gt; from military aviation: it takes a little bit of time to learn to "play it", but once you have practice, you're much faster and you can operate the device blindly.&lt;br /&gt;&lt;br /&gt;Recommended.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-3757590755183869689?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.thomann.de/de/contour_av_solutions_shuttlepro_hardwarecontroller.htm' title='Hardware for Podcast Editing'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/3757590755183869689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=3757590755183869689' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/3757590755183869689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/3757590755183869689'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/08/hardware-for-podcast-editing.html' title='Hardware for Podcast Editing'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-1575236407833802327</id><published>2009-08-13T11:24:00.007+02:00</published><updated>2009-08-13T20:05:52.914+02:00</updated><title type='text'>DSL Variant Management for TMF Xtext Released</title><content type='html'>Over the last couple of weeks Andreas Rytina and I have been working on porting the DSL Variant Management Tools to Eclipse 3.5 and TMF Xtext. We have finally finished these efforts and the plug-ins are &lt;a href="http://code.google.com/p/dslvariantmanagement/downloads/list"&gt;available as a download&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;The DSL Variant Management tools allow you to access pure::variants feature models from within your own textual DSLs. Static checking of feature names is the supported. There is also an integration with pure::variants relations view, which means that if you select a feature in the feature model the relations you will tell you, which off your DSL files refer to that feature.&lt;br /&gt;&lt;br /&gt;In addition, you can also specify feature dependent regions in manually written code (in fact, any text file) and you can query selection status of features from within model transformations and templates.&lt;br /&gt;&lt;br /&gt;We have also updated the documentation. The code used in the documentation is available for download, too.&lt;br /&gt;&lt;br /&gt;On a related note: we are currently preparing an &lt;a href="http://www.eclipse.org/proposals/feature-model/"&gt;eclipse project to implement simple feature model tools&lt;/a&gt; based on EMF and other Eclipse Modeling technologies. Over time, we will and able the DSL variant management tools to also work with this open source feature modeling environment, and not just with the commercial &lt;a href="http://www.pure-systems.com/Variantenmanagement.49.0.html"&gt;pure::variants&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-1575236407833802327?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://code.google.com/p/dslvariantmanagement/downloads/list' title='DSL Variant Management for TMF Xtext Released'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/1575236407833802327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=1575236407833802327' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/1575236407833802327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/1575236407833802327'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/08/dsl-variant-management-for-tmf-xtext.html' title='DSL Variant Management for TMF Xtext Released'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-3572036885729405622</id><published>2009-08-09T11:40:00.003+02:00</published><updated>2009-08-09T17:46:53.625+02:00</updated><title type='text'>Results of my Layouting experiments</title><content type='html'>Over the last couple of months, together with a couple of other people, I have been working on &lt;a href="http://code.google.com/p/emfmodelvisualizer/"&gt;model visualization&lt;/a&gt; tooling, based on &lt;a href="http://graphviz.org/"&gt;GraphViz&lt;/a&gt; and &lt;a href="http://www.eclipse.org/gef/zest/"&gt;ZEST&lt;/a&gt;. However, the layout algorithms that come with these tools aren't as good as I'd like them to be; specifically, the algorithms in ZEST don't avoid node overlaps and aren't robust with regard to adding a few new nodes (i.e. the layout can change completely if you add new nodes). &lt;br /&gt;&lt;br /&gt;A while ago I had the idea of using numerical simulations for layouting. Each node is assigned a negative charge (i.e. nodes repel each other) and the connections act as springs (i.e. they create a pull force between them). Doing an interative numerical simulation of the forces between them should result in a nice layout. That was the idea. &lt;br /&gt;&lt;br /&gt;Since I couldn't convince somebody else to try this out, I had to do it myself :-) Here are the preliminary results.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/5Bpmxi7Ad9o&amp;hl=en&amp;fs=1&amp;rel=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/5Bpmxi7Ad9o&amp;hl=en&amp;fs=1&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;I built this thing "from scratch" using &lt;a href="http://scala-lang.org"&gt;Scala&lt;/a&gt; and Java2D. I think the results are convincing. The next steps would be to either integrate a layout along these lines into ZEST or to enhance my prototype to become a complete Eclipse-based model visualization solution. &lt;br /&gt;&lt;br /&gt;I'd prefer the first alternative. Anybody interesting in integrating this approach into ZEST?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-3572036885729405622?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.youtube.com/watch?v=5Bpmxi7Ad9o' title='Results of my Layouting experiments'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/3572036885729405622/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=3572036885729405622' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/3572036885729405622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/3572036885729405622'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/08/results-of-my-layouting-experiments.html' title='Results of my Layouting experiments'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-7838976958505281512</id><published>2009-08-02T20:24:00.002+02:00</published><updated>2009-08-02T20:31:34.781+02:00</updated><title type='text'>Back to the Roots</title><content type='html'>Yesterday evening, and also most of today, I spent coding in Scala. I was prototyping a layout algorithm. I implemented the prototype in Scala, nicely test-driven (ScalaTest), and using IntelliJ as the IDE. I've used Scala before, but ScalaTest and IntelliJ was new for me.&lt;br /&gt;&lt;br /&gt;The coding was/is a lot of fun! As you probably know, these days I spend most of my time doing meta stuff: languages, meta models, code generators. Or, if I code, it's either C (in customer projects) or it's Java based on huge frameworks (usually Eclipse or JEE stuff). Programming against these frameworks is not so much about creatively programming, it's more about understanding and mastering existing frameworks, which can be very frustrating.&lt;br /&gt;&lt;br /&gt;Over the last two days, the only framework I had to work with was Java2D. Everything else is very much self-contained, really nice OO design. Scala is really refreshing, and I have to say, I start understanding people who say that IntelliJ is the better IDE for Java development... Eclipse is of course very useful because of it's plugin architecture and the huge amount of existing plugins, but for pure coding... IntelliJ really is nice.&lt;br /&gt;&lt;br /&gt;So, in summary: this was a lot of fun. I should do more coding like this :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-7838976958505281512?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/7838976958505281512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=7838976958505281512' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/7838976958505281512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/7838976958505281512'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/08/back-to-roots.html' title='Back to the Roots'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-5082683922293404250</id><published>2009-07-23T20:14:00.002+02:00</published><updated>2009-07-23T20:21:01.355+02:00</updated><title type='text'>MPS 1.0 is now available</title><content type='html'>Jetbrains have just released &lt;a href="http://www.jetbrains.com/mps/index.html"&gt;MPS 1.0&lt;/a&gt;. You can get it from &lt;a href="http://www.jetbrains.com/mps/download/index.html"&gt;here&lt;/a&gt;, and there's also a lot of &lt;a href="http://www.jetbrains.com/mps/documentation/index.html"&gt;docs and videos&lt;/a&gt; available.&lt;br /&gt;&lt;br /&gt;From my perspective, tools like &lt;a href="http://www.eclipse.org/Xtext/"&gt;Xtext&lt;/a&gt;, &lt;a href="http://intentsoft.com/"&gt;Intentional's Domain Workbench&lt;/a&gt; and - of course - &lt;a href="http://www.jetbrains.com/mps/index.html"&gt;MPS&lt;/a&gt; have the potential for a revolution in programming. Being able to define your own languages, including IDE support, or extending existing languages, also with IDE support, is really a powerful concept. If think about it, this really blurs the line between modeling and programming - very very nice.&lt;br /&gt;&lt;br /&gt;Try out those tools! And even if you judge them as not ready for primetime yet, think ahead one or two more years, or even three, and imagine what they'll be able to do.&lt;br /&gt;&lt;br /&gt;Congratulations Jetbrains!&lt;br /&gt;&lt;br /&gt;And thanks for making it Open Source ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-5082683922293404250?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.jetbrains.com/mps/index.html' title='MPS 1.0 is now available'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/5082683922293404250/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=5082683922293404250' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/5082683922293404250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/5082683922293404250'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/07/mps-10-is-now-available.html' title='MPS 1.0 is now available'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-9045700364456663447</id><published>2009-07-17T15:50:00.000+02:00</published><updated>2009-07-17T15:52:08.152+02:00</updated><title type='text'>Graphviz Integration Ported to Eclipse 3.5/TMF</title><content type='html'>I have ported the oAW visualization tooling for Graphviz to TMF Xtext and Eclipse 3.5. You can get the distribution and the docs from the &lt;a href="http://code.google.com/p/emfmodelvisualizer/downloads/list"&gt;Google code download page.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-9045700364456663447?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://code.google.com/p/emfmodelvisualizer/downloads/list' title='Graphviz Integration Ported to Eclipse 3.5/TMF'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/9045700364456663447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=9045700364456663447' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/9045700364456663447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/9045700364456663447'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/07/graphviz-integration-ported-to-eclipse.html' title='Graphviz Integration Ported to Eclipse 3.5/TMF'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-3579501759581899548</id><published>2009-07-14T17:42:00.002+02:00</published><updated>2009-07-14T17:42:45.747+02:00</updated><title type='text'>First MPS-Based Open Source Activities</title><content type='html'>Some people want to &lt;a href="http://code.google.com/p/mps-csharp/"&gt;add C# to MPS&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;I'd like to see C in MPS, too. Anybody interested?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-3579501759581899548?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://code.google.com/p/mps-csharp/' title='First MPS-Based Open Source Activities'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/3579501759581899548/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=3579501759581899548' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/3579501759581899548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/3579501759581899548'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/07/first-mps-based-open-source-activities.html' title='First MPS-Based Open Source Activities'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-1271046935352184726</id><published>2009-07-10T17:27:00.002+02:00</published><updated>2009-07-10T17:27:51.684+02:00</updated><title type='text'>MPS 1.0 Release Candidate</title><content type='html'>... has been released today. Go &lt;a href="http://www.jetbrains.net/devnet/thread/282673?tstart=0"&gt;here&lt;/a&gt; to get it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-1271046935352184726?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.jetbrains.net/devnet/thread/282673?tstart=0' title='MPS 1.0 Release Candidate'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/1271046935352184726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=1271046935352184726' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/1271046935352184726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/1271046935352184726'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/07/mps-10-release-candidate.html' title='MPS 1.0 Release Candidate'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-989684788658066250</id><published>2009-06-25T08:10:00.002+02:00</published><updated>2009-06-25T08:13:22.097+02:00</updated><title type='text'>Eclipse, Galileo and oAW</title><content type='html'>Yesterday was the big day: Eclipse 3.5 Galileo was just released.&lt;br /&gt;&lt;br /&gt;I thought I'd use this occasion to give you an update about oAW in this context.&lt;br /&gt;&lt;br /&gt;The Galileo release contains what has been known as oAW 5. Over the last year, oAW has been broken down into its constituent components, and the components have been contributed to Eclipse. oAW 5 can thus be considered a distribution, or packaging, of these components. &lt;br /&gt;&lt;br /&gt;However, currently there's no real oAW 5 release, specifically the &lt;a hef="http://www.openarchitectureware.org"&gt;openArchitectureWare.org&lt;/a&gt; website does not yet reflect the newest release.&lt;br /&gt;&lt;br /&gt;If you want to get the new code, you should simply download the available distributions. You can get the Everything-in-Modeling distribution from here the &lt;a href="http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/galileo/R/eclipse-modeling-galileo-incubation-win32.zip"&gt;Eclipse download page&lt;/a&gt; or you can get the oAW distribution from &lt;a href="http://oaw.itemis.com/openarchitectureware/language=en/2837/downloads"&gt;itemis' oAW site&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So what's new in the current release?&lt;br /&gt;&lt;br /&gt;First of all, Xtext has been completely rewritten, as part of the TMF project. This is why we now call it TMF Xtext. The new version is much more scalable, supports cross-language references well, supports (single) language inheritance and is generally much more flexible. Go to the &lt;a href="http://www.eclipse.org/Xtext/"&gt;official TMF Xtext project page&lt;/a&gt; to find (the really nice!) documentation and access to newsgroups and mailing lists.&lt;br /&gt;&lt;br /&gt;oAW 5 also contains - as you would expect - Xpand, Xtend and Check. These are all wrapped under the &lt;a href="http://www.eclipse.org/modeling/m2t/?project=xpand"&gt;M2T Xpand project&lt;/a&gt;. Compared to 4.3.1, no major changes have been made; a couple of bugs were fixed and a number of minor adaptations have been made to work better as an Eclipse citizen. There's also a &lt;a href="http://wiki.eclipse.org/Xpand"&gt;wiki page&lt;/a&gt; as well as &lt;a href="http://www.eclipse.org/modeling/m2t/newsgroup-mailing-list.php"&gt;newsgroups and mailing lists&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Finally, the release also contains the tried and trusted &lt;a href="http://www.eclipse.org/modeling/emft/?project=mwe"&gt;workflow engine&lt;/a&gt;. It is now its own EMFT project, with the goal of encouraging other transformation tool developers to write a workflow component to integrate with workflows. Imaging you could simply use an ATL transformation or MOFScript generator as part of your workflow...!? &lt;br /&gt;&lt;br /&gt;So you might wonder: what has happened to openArchitectureWare as a whole, now that all its "real stuff" has become Eclipse projects and the downloads are available as part of distros? There is now an &lt;a href="http://www.eclipse.org/workinggroups/oaw/"&gt;oAW Working Group&lt;/a&gt;. It has its own mailing list and website, and this is the place where we want to gather oAW users, discuss the tool and coordinate further development in the context of the Eclipse development process. The &lt;a hef="http://www.openarchitectureware.org"&gt;openArchitectureWare.org&lt;/a&gt; website will be adapted soon to act as a redirect to the working group page.&lt;br /&gt;&lt;br /&gt;Thanks to all the oAW comitters, specifically the itemis guys in Kiel, for doing a great job with the new release, specifically with TMF Xtext. I am not completely happy with all the decisions they've made, but it is an important and very good step forward!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-989684788658066250?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/989684788658066250/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=989684788658066250' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/989684788658066250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/989684788658066250'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/06/eclipse-galileo-and-oaw.html' title='Eclipse, Galileo and oAW'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-7602942953798567696</id><published>2009-06-21T19:54:00.002+02:00</published><updated>2009-06-21T19:55:55.942+02:00</updated><title type='text'>Synchronized editors with TMF/Xtext and GMF</title><content type='html'>Jan Koehnlein, in his blog talks about creating a system where &lt;a href="http://koehnlein.blogspot.com/2009/06/synchronized-editors-with-tmfxtext-and.html"&gt;TMF Xtext and GMF work on the same model.&lt;/a&gt; He has a &lt;a href="http://download.itemis.com/Screencast_Xtext_GMF.mp4"&gt;screencast&lt;/a&gt; that shows it. Well worth watching.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-7602942953798567696?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://koehnlein.blogspot.com/2009/06/synchronized-editors-with-tmfxtext-and.html' title='Synchronized editors with TMF/Xtext and GMF'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/7602942953798567696/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=7602942953798567696' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/7602942953798567696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/7602942953798567696'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/06/synchronized-editors-with-tmfxtext-and.html' title='Synchronized editors with TMF/Xtext and GMF'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-7951935586365387480</id><published>2009-06-19T10:23:00.004+02:00</published><updated>2009-06-19T10:27:18.083+02:00</updated><title type='text'>Visio, EMF and oAW</title><content type='html'>A long time ago I built an integration of Visio with openArchitectureWare 3. As version three of oAW went out of use, I didn't have the time and resources to update the tooling for oAW 4 and EMF. Recently some people have asked me about Visio/EMF integration and I had to disappoint them...&lt;br /&gt;&lt;br /&gt;However there's good news! &lt;a href="http://bis.informatik.uni-leipzig.de/HeikoKern/visioemfbridge/"&gt;Heiko Kern from Leipzig University has built a Visio/EMF bridge that looks really nice!&lt;/a&gt; I have not yet used it, but it looks really good.&lt;br /&gt;&lt;br /&gt;So, whoever asked me about the Visio/EMF integration recently (I have to admit, I forgot who it was :-( ): why don't you try this out and let me and others know if it works for you?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-7951935586365387480?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://bis.informatik.uni-leipzig.de/HeikoKern/visioemfbridge/' title='Visio, EMF and oAW'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/7951935586365387480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=7951935586365387480' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/7951935586365387480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/7951935586365387480'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/06/visio-emf-and-oaw.html' title='Visio, EMF and oAW'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-3143103231199765506</id><published>2009-06-19T09:43:00.001+02:00</published><updated>2009-06-19T09:44:45.429+02:00</updated><title type='text'>CodeGeneration 2009 - a great conference</title><content type='html'>I spent the last three days at the CodeGeneration2009 conference. I knew it would be good, since it was good the last two years, but this year it was really great.&lt;br /&gt;&lt;br /&gt;The good thing is that it really serves as a (european) community meeting for many folks involved in DSLs, MDD and code generation. The best part of the conference, hence, is meeting all the colleagues and friens in this space. &lt;br /&gt;&lt;br /&gt;Also, this was the first conference in a long time where I spend almost every slot in a session: I was in Eelco Visser's Stratego/XT tutorial, in a panel or two, and in two goldfishbowls (I love the format!) about the relationship between DSLs and programming languages, and modeling vs. programming in general.&lt;br /&gt;&lt;br /&gt;I had the pleasure of keynoting the event this year, together with Metacase's Steve Kelly. We never did a talk together, but I think our two co-presented keynotes on best and worst practices in DSLs and MDD went really well - at least that's what the audience feedback sounded like.&lt;br /&gt;&lt;br /&gt;The talk on MPS with Konstantin Solomatov was also a great success. I started out by presenting a bunch of slides about the idea of programming == modeling and projectional editing, and then Konstanting gave an impressive demo of MPS. You could see a bunch of open mouths in the audience while he was showing off the tool (people told me that mine was also open :-)). After he finished his demo with the words "I think that's all I wanted to show" the audience spontaneously applauded. &lt;br /&gt;&lt;br /&gt;I think tools like MPS and Intentional's Domain Workbench have a great future - even if currently they still have a couple of rough edges. Who cares if you have to wait another year for a revolution :-) ?&lt;br /&gt;&lt;br /&gt;So, I guess, you should really consider going to Code Gen 2010 next year if you're into DSLs. Not the usual introductory stuff - really interesting content! &lt;br /&gt;&lt;br /&gt;Thanks Mark Dalgarno!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-3143103231199765506?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.codegeneration.net/cg2009/' title='CodeGeneration 2009 - a great conference'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/3143103231199765506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=3143103231199765506' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/3143103231199765506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/3143103231199765506'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/06/codegeneration-2009-great-conference.html' title='CodeGeneration 2009 - a great conference'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-2999505088558582398</id><published>2009-06-17T08:41:00.000+02:00</published><updated>2009-06-17T08:42:27.323+02:00</updated><title type='text'>Flying with the Cambridge Gliding Club</title><content type='html'>Bernd Kolb and I spent yesterday evening with the &lt;a href="http://www.glide.co.uk/"&gt;Cambridge Gliding Centre&lt;/a&gt;. We are currently both at the &lt;a href="http://www.codegeneration.net/cg2009/"&gt;Code Generation 2009&lt;/a&gt; conference. &lt;a href="http://homepage.ntlworld.com/ajwatson/"&gt;Andrew Watson&lt;/a&gt;, also at the conference, and gliding instructor at Cambridge, invited us to join him for the Tuesday evening flying - thank you very much for this, Andrew!&lt;br /&gt;&lt;br /&gt;Gliding really is the same everywhere, so once you are on an airfield, you can give everybody a hand and help out. And pilots are also a very nice bunch of folks, so it was easy to feel comfortable there. Bernd and I also both got a ride in one of their &lt;a href="http://www.glide.co.uk/aboutus/fleet.aspx"&gt;ASK-21's&lt;/a&gt;, a training plane both Bernd and I have a lot of exprience in. We did a winch take-off, and because it was evening already, it was only a five minute hop. I hadn't done a winch take-off for a long time, so it was also good exercise! &lt;br /&gt;&lt;br /&gt;Thanks to the evening crew for their hospitality, and to Andrew to taking us along!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-2999505088558582398?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/2999505088558582398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=2999505088558582398' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/2999505088558582398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/2999505088558582398'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/06/flying-with-cambridge-gliding-club.html' title='Flying with the Cambridge Gliding Club'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-5564292950960108128</id><published>2009-06-12T11:00:00.002+02:00</published><updated>2009-06-12T11:03:49.245+02:00</updated><title type='text'>GMF is still awful</title><content type='html'>Today we had a GMF workshop at a customer (I was a participant, not the presenter). And I have to say I am still seriously underwhelmed by GMF ... I hadn't looked at it for a year or so. It is still basically unusable: awful editors, bad diagnostics and a lot of duplication.&lt;br /&gt;&lt;br /&gt;Obviously, having a tool for defining graphical editors is a good thing. However, I think GMF really fails at delivering. It is too low level, and too brittle. &lt;br /&gt;&lt;br /&gt;I wonder when somebody will build a decent (textual) language that supports simple creation of (GMF-based) graphical editors. York's Epsilon Eugenia is a step in the right direction.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-5564292950960108128?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/5564292950960108128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=5564292950960108128' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/5564292950960108128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/5564292950960108128'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/06/gmf-is-still-awful.html' title='GMF is still awful'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-2569535601660250744</id><published>2009-06-11T21:56:00.002+02:00</published><updated>2009-06-11T22:05:17.123+02:00</updated><title type='text'>I hate travelling, continued</title><content type='html'>I am currently in Norway for a customer. Last night I was in the &lt;a href="http://www.firsthotels.com/no/Norsk/Norge/Drammen/First-Hotel-Ambassadeur/"&gt;Ambassador Hotel in Drammen&lt;/a&gt;. I sucked - stay away! First I was in a room that was extremely loud, the trucks practically drove through the room. I asked for another room a minute after I arrived and they said they had no other room. Two hours later, after I tried in vain to sleep, I called the reception: "I want another room or I will leave the hotel". Then they had one....! I changed. &lt;br /&gt;&lt;br /&gt;Of course I forgot my notebook power cord in the room, which meant I had to go back to the room the next morning. I asked at the reception to have them go into the room and grab the cable - they refused: "there's somebody else in there". I knocked at the room door 10 times, no reaction. They still said "somebody in there" and refused to let me in, "the person must be at breakfast". I asked everybody at breakfast. Nobody was in the room. After a long while I convinced a cleaning lady to let me in. It was empty. I got my cable. Of course I missed the train to the customer....&lt;br /&gt;&lt;br /&gt;Next day, better hotel, Scandic Hotel in Asker. Nice room. Quiter. Of course at 21:40 a group of guests started dancing and singing outside the hotel in front of my room. No sleep, again. &lt;br /&gt;&lt;br /&gt;I HATE TRAVELLING!!! I guess I really have to make sure that I have to travel less. The plan was to travel &lt;= 50% as part of my work for itemis. However, as a consequence of the current economic situation I guess I have to travel more (again...). &lt;br /&gt;&lt;br /&gt;Next year will be different! I promise (to myself)!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-2569535601660250744?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/2569535601660250744/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=2569535601660250744' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/2569535601660250744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/2569535601660250744'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/06/i-hate-travelling-continued.html' title='I hate travelling, continued'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-6823459969575882445</id><published>2009-06-09T10:27:00.002+02:00</published><updated>2009-06-09T10:29:29.606+02:00</updated><title type='text'>Keynote at Practical Product Lines 2009</title><content type='html'>I am happy to report that I will be giving a keynote at this year's &lt;a href="http://www.practicalproductlines.org/ppl2009/"&gt;Practical Product Lines&lt;/a&gt; conference. This is a new conference on PLE organized by Mark Dalgarno, who is also the person behind the very successful &lt;a href="http://www.codegeneration.net/cg2009/"&gt;Code Generation&lt;/a&gt; conference series. &lt;br /&gt;&lt;br /&gt;Now I just have to come up with a good topic/talk :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-6823459969575882445?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.practicalproductlines.org/ppl2009/keynotes.php' title='Keynote at Practical Product Lines 2009'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/6823459969575882445/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=6823459969575882445' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/6823459969575882445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/6823459969575882445'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/06/keynote-at-practical-product-lines-2009.html' title='Keynote at Practical Product Lines 2009'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-4442980327981987559</id><published>2009-06-04T11:55:00.002+02:00</published><updated>2009-06-04T11:57:29.504+02:00</updated><title type='text'>MPS Beta 3</title><content type='html'>&lt;a href="http://www.jetbrains.com/mps/download/index.html"&gt;MPS Beta 3&lt;/a&gt; is available for download. Important new features include a new, more text-flow-like editor layout as well as a facility to build custom MPS distributions/packages that only include your own languages.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-4442980327981987559?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.jetbrains.com/mps/download/index.html' title='MPS Beta 3'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/4442980327981987559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=4442980327981987559' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/4442980327981987559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/4442980327981987559'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/06/mps-beta-3.html' title='MPS Beta 3'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-4796303065431868587</id><published>2009-05-20T21:20:00.003+02:00</published><updated>2009-05-20T21:31:27.979+02:00</updated><title type='text'>SoftwareArchitekTOUR Podcast</title><content type='html'>I just wanted to let you know about a new (german language) podcast on software architecture called &lt;a href="http://www.heise.de/developer/podcast"&gt;SoftwareArchitekTOUR&lt;/a&gt;. It is hosted at heise.developer, supported by Microsoft, IBM, itemis, innoQ and Siemens. &lt;br /&gt;&lt;br /&gt;The shows are hosted by &lt;a href="http://www.innoq.com/blog/st/"&gt;Stefan Tilkov&lt;/a&gt;, &lt;a href="http://www.stal.de/"&gt;Michael Stal&lt;/a&gt;, &lt;a href="http://blogs.thinktecture.com/cweyer/"&gt;Christian Weyer&lt;/a&gt; and myself.&lt;br /&gt;&lt;br /&gt;In contrast to &lt;a href="http://se-radio.net"&gt;SE Radio&lt;/a&gt;, we won't do many interviews, but we'll try to build a real community by encouraging feedback and audience interaction.&lt;br /&gt;&lt;br /&gt;Go, give it a try and let me know what you think!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-4796303065431868587?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.heise.de/developer/podcast' title='SoftwareArchitekTOUR Podcast'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/4796303065431868587/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=4796303065431868587' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/4796303065431868587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/4796303065431868587'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/05/softwarearchitektour-podcast.html' title='SoftwareArchitekTOUR Podcast'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-4836229147012868429</id><published>2009-05-19T07:48:00.001+02:00</published><updated>2009-05-19T07:49:28.627+02:00</updated><title type='text'>Microsoft Axum: "Erlang for .NET"</title><content type='html'>Microsoft has just started talking about a new .NET language called Axum. People have described it as "Erlang for .NET". To stick with this classification, one could also call it "Erlang with a more mainstream syntax". &lt;br /&gt;&lt;br /&gt;It is an agent based language, which means that communication is asynchronous and message-based, and agents (cf, the Actors model) are considered active, i.e. they have their own thread or process. Data in messages is typed and can be (deeply) serialized to make remote message sending (i.e. agent distribution) possible and more or less transparent. Axum comes with integration into WCF. &lt;br /&gt;&lt;br /&gt;Communication between agents happens via Channels. A channel is a kind of "asynchronous interface", i.e. channels define which messages can be sent into it and received from it. Agents "implement" Channels as a way of defining the kinds of messages it can handle.&lt;br /&gt;&lt;br /&gt;Since the timing and sequencing in asynchronous applications can be hard to understand, Axum supports the definition of protocol state machines (yeah!!) for channels. So if you send something in the wrong order, you don't get a strange crash or a deadlock, but rather a meaningful error message. I *love* that part!&lt;br /&gt;&lt;br /&gt;Axum comes with powerful operators to define dataflow networks. You can say things like: "wait until a message arrives in this channel and in that other channel, then combine the two messages in an array, forward them to the agent xyz and forward the result to these other two channels, in an alternating way". You can define things like that with concise expressions. Very cool!&lt;br /&gt;&lt;br /&gt;Axum has a controlled way of handling side effects. Specifically, the "units of functionality" can be declared as functions, which means they have no way of accessing state (this is checked by the compiler). The point of this is, of course, to be able to run parts of dataflow networks in parallel. This is where the big benefit of agent-based/dataflow-oriented systems comes in.&lt;br /&gt;&lt;br /&gt;I have to say, this stuff looks *really* interesting! Because it is based on the .NET platform you get interop with other .NET stuff more or less for free. There's also an integration with VisualStudio. It is really interesting to see how Microsoft, after "renovating" and "mainstreaming" Haskell to F# they now adress Erlang and pimp it up to Axum. Very cool!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-4836229147012868429?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://msdn.microsoft.com/en-us/devlabs/dd795202.aspx' title='Microsoft Axum: &quot;Erlang for .NET&quot;'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/4836229147012868429/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=4836229147012868429' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/4836229147012868429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/4836229147012868429'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/05/microsoft-axum-erlang-for-net.html' title='Microsoft Axum: &quot;Erlang for .NET&quot;'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19398645.post-176978582423960755</id><published>2009-05-10T20:42:00.002+02:00</published><updated>2009-05-10T20:44:25.800+02:00</updated><title type='text'>Afrikanische Ostern</title><content type='html'>(sorry for the German language...) An Ostern 2009 war segelfliegerisch das absolute Hammerwetter. Das kam so unerwartet und hat mich derart begeistert, dass is beschlossen habe, mal ein paar Eindrücke zu Papier zu bringen. Das 9 Megabyte &lt;a href="http://www.voelter.de/data/AfrikanischeOstern.pdf"&gt;PDF&lt;/a&gt; ist jetzt fertig. Viel Spass beim Lesen :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-176978582423960755?l=voelterblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.voelter.de/data/AfrikanischeOstern.pdf' title='Afrikanische Ostern'/><link rel='replies' type='application/atom+xml' href='http://voelterblog.blogspot.com/feeds/176978582423960755/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19398645&amp;postID=176978582423960755' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/176978582423960755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19398645/posts/default/176978582423960755'/><link rel='alternate' type='text/html' href='http://voelterblog.blogspot.com/2009/05/afrikanische-ostern.html' title='Afrikanische Ostern'/><author><name>Markus Voelter</name><uri>http://www.blogger.com/profile/17202827990748358797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
