<?xml version="1.0"?>
<rss version="2.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:yt="http://gdata.youtube.com/schemas/2007">
   <channel>
      <title>SE Blogs</title>
      <description>Pipes Output</description>
      <link>http://pipes.yahoo.com/pipes/pipe.info?_id=kglXRKMO3hGT5gAWBR50VA</link>
      <pubDate>Sun, 22 Nov 2009 17:16:44 -0800</pubDate>
      <generator>http://pipes.yahoo.com/pipes/</generator>
      <item>
         <title>Thoughts on Migrating Model-Driven Solutions between Tools</title>
         <link>http://voelterblog.blogspot.com/2009/11/thoughts-on-migrating-model-driven.html</link>
         <description>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 &quot;procedural&quot; code. Turing complete, procedural code is hard to &quot;understand&quot; 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 &quot;just another model&quot; 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 (&quot;give me all types of all public attributes of all classes in this file&quot;) 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=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-7441762785876764764?l=voelterblog.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Markus Voelter</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-19398645.post-7441762785876764764</guid>
         <pubDate>Sat, 21 Nov 2009 01:24:00 -0800</pubDate>
      </item>
      <item>
         <title>Eclipse Demo Camp Stuttgart Location Change</title>
         <link>http://voelterblog.blogspot.com/2009/11/eclipse-demo-camp-stuttgart-location.html</link>
         <description>If you are planning to join, please take a look &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://bit.ly/LYOkn&quot;&gt;at this page&lt;/a&gt; to see the new updated location at the airport.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-5739159197700074234?l=voelterblog.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Markus Voelter</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-19398645.post-5739159197700074234</guid>
         <pubDate>Wed, 18 Nov 2009 14:31:00 -0800</pubDate>
      </item>
      <item>
         <title>Oslo becomes SQL Server Modeling - my 2 cents</title>
         <link>http://voelterblog.blogspot.com/2009/11/oslo-becomes-sql-server-modeling-my-2.html</link>
         <description>Here are my two cents why I am disappointed by Microsoft's decision to change Oslo to SQL Server Modeling. In &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;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&quot;&gt;this eWeek article&lt;/a&gt; Doug Purdy is being quoted as follows: &lt;br /&gt;&lt;br /&gt;&lt;i&gt;&quot;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?&quot; &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 &quot;persistence backend&quot; 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=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-2106178491558169880?l=voelterblog.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Markus Voelter</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-19398645.post-2106178491558169880</guid>
         <pubDate>Sun, 15 Nov 2009 23:47:00 -0800</pubDate>
      </item>
      <item>
         <title>PIK 2010: Produktlinien im Kontext</title>
         <link>http://voelterblog.blogspot.com/2009/11/pik-2010-produktlinien-im-kontext.html</link>
         <description>Here some information about an interesting workshop at the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.se2010.upb.de/&quot;&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 rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://2010.pik-konf.de/cfp.html&quot;&gt;Call for Papers&lt;/a&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-7006470722921521587?l=voelterblog.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Markus Voelter</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-19398645.post-7006470722921521587</guid>
         <pubDate>Sat, 14 Nov 2009 07:43:00 -0800</pubDate>
      </item>
      <item>
         <title>Eclipse Modeling: Models Getting Bigger</title>
         <link>http://voelterblog.blogspot.com/2009/11/eclipse-modeling-models-getting-bigger.html</link>
         <description>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 rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wiki.eclipse.org/CDO&quot;&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 rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/summiteurope2009/sessions?id=1009&quot;&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 rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wiki.eclipse.org/EmfIndex&quot;&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 rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.artop.org/&quot;&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 &quot;real&quot; environments. It is a good sign if a technology leaves behind the &quot;it works&quot; phase and addresses &quot;how to use it large scale&quot;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-1112418496001928687?l=voelterblog.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Markus Voelter</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-19398645.post-1112418496001928687</guid>
         <pubDate>Wed, 11 Nov 2009 06:37:00 -0800</pubDate>
      </item>
      <item>
         <title>Programming, Modeling, DSLs and Language Workbenches</title>
         <link>http://voelterblog.blogspot.com/2009/11/programming-modeling-dsls-and-language.html</link>
         <description>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 rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.slideshare.net/schogglad/from-programming-to-modeling-and-back-again&quot;&gt;slideshare&lt;/a&gt; and &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.voelter.de/data/presentations/ProgrammingToModeling-JUGs.pdf&quot;&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=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-8320967167238717371?l=voelterblog.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Markus Voelter</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-19398645.post-8320967167238717371</guid>
         <pubDate>Sat, 07 Nov 2009 11:49:00 -0800</pubDate>
      </item>
      <item>
         <title>William Cook on Industry and Academia</title>
         <link>http://voelterblog.blogspot.com/2009/10/william-cook-on-industry-and-academia.html</link>
         <description>You should really read &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wcook.blogspot.com/2009/10/ecoop-2009-banquet-speech.html&quot;&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=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-5375262146431390108?l=voelterblog.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Markus Voelter</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-19398645.post-5375262146431390108</guid>
         <pubDate>Fri, 23 Oct 2009 12:08:00 -0700</pubDate>
      </item>
      <item>
         <title>A few thoughts on code generation with MPS</title>
         <link>http://voelterblog.blogspot.com/2009/10/few-thoughts-on-code-generation-with.html</link>
         <description>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 &quot;tricks&quot; 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=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-5496487025794107382?l=voelterblog.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Markus Voelter</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-19398645.post-5496487025794107382</guid>
         <pubDate>Fri, 23 Oct 2009 02:58:00 -0700</pubDate>
      </item>
      <item>
         <title>Training on DSLs, Product Lines and Language Workbenches</title>
         <link>http://voelterblog.blogspot.com/2009/10/training-on-dsls-product-lines-and.html</link>
         <description>On February 3 and 4 2010 I will run a &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.sioux.nl/index.php?option=com_content&amp;task=view&amp;id=249&amp;Itemid=245&quot;&gt;course on Domain Specific Languages (for Product Lines)&lt;/a&gt; at &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.sioux.nl&quot;&gt;Sioux Embedded Systems&lt;/a&gt; in Eindhoven, The Netherlands. In addition to concepts, I will cover &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://eclipse.org/Xtext&quot;&gt;Xtext&lt;/a&gt; as well as &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://jetbrains.com/mps&quot;&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=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-3728488066435288558?l=voelterblog.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Markus Voelter</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-19398645.post-3728488066435288558</guid>
         <pubDate>Thu, 22 Oct 2009 14:52:00 -0700</pubDate>
      </item>
      <item>
         <title>Practical Product Lines 2009</title>
         <link>http://voelterblog.blogspot.com/2009/10/practical-product-lines-2009.html</link>
         <description>I just returned from the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.practicalproductlines.org/ppl2009/&quot;&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 rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://twitter.com/#search?q=%23ppl2009&quot;&gt;Twitter #ppl2009 stream&lt;/a&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-1971061425744874272?l=voelterblog.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Markus Voelter</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-19398645.post-1971061425744874272</guid>
         <pubDate>Thu, 22 Oct 2009 01:07:00 -0700</pubDate>
      </item>
      <item>
         <title>Slides uploaded to slideshare.net</title>
         <link>http://voelterblog.blogspot.com/2009/10/slides-uploaded-to-slidesharenet.html</link>
         <description>I have just uploaded &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.slideshare.net/schogglad/presentations&quot;&gt;a couple of my currently relevant presentations&lt;/a&gt; to &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://slideshare.net&quot;&gt;http://slideshare.net&lt;/a&gt;. All of them had been online at &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.voelter.de/conferences/index.html&quot;&gt;my website&lt;/a&gt;, too, but I decided I wanted to participate in the slideshare community.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-7784123494380058821?l=voelterblog.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Markus Voelter</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-19398645.post-7784123494380058821</guid>
         <pubDate>Sun, 18 Oct 2009 05:39:00 -0700</pubDate>
      </item>
      <item>
         <title>Type Systems for Xtext DSLs</title>
         <link>http://voelterblog.blogspot.com/2009/10/type-systems-for-xtext-dsls.html</link>
         <description>I recently implemented a type system for an &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://eclipse.org/xtext&quot;&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 &quot;write down&quot; 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 &quot;compatible&quot;, 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 rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://jetbrains.com/mps&quot;&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=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-5314383029296219318?l=voelterblog.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Markus Voelter</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-19398645.post-5314383029296219318</guid>
         <pubDate>Sun, 11 Oct 2009 11:17:00 -0700</pubDate>
      </item>
      <item>
         <title>MPS Workshop at itemis</title>
         <link>http://voelterblog.blogspot.com/2009/09/mps-workshop-at-itemis.html</link>
         <description>Last week, we had a workshop about &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://jetbrains.com/mps&quot;&gt;JetBrains MPS&lt;/a&gt; at &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://itemis.com&quot;&gt;itemis&lt;/a&gt; in Pforzheim. &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://solomatov.wordpress.com/&quot;&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 &quot;feel&quot; 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 rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://eclipse.org/xtext&quot;&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 rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://intentsoft.com&quot;&gt;Intentional Domain Workbench&lt;/a&gt; to complete my picture about the three most interesting DSL tools out there: &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://eclipse.org/xtext&quot;&gt;Eclipse Xtext&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://jetbrains.com/mps&quot;&gt;JetBrains MPS&lt;/a&gt; and the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://intentsoft.com&quot;&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=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-4373138219462529620?l=voelterblog.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Markus Voelter</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-19398645.post-4373138219462529620</guid>
         <pubDate>Mon, 28 Sep 2009 03:05:00 -0700</pubDate>
      </item>
      <item>
         <title>The future of openArchitectureWare</title>
         <link>http://voelterblog.blogspot.com/2009/09/future-of-openarchitectureware.html</link>
         <description>Over the last couple of months, many people have asked me about the status of openArchitectureWare. &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://voelterblog.blogspot.com/2009/06/eclipse-galileo-and-oaw.html&quot;&gt;I have blogged about this before&lt;/a&gt;. Here is some update. &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://heikobehrens.net&quot;&gt;Heiko&lt;/a&gt; and &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.peterfriese.de/&quot;&gt;Peter&lt;/a&gt; have created a succinct summary at &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://openarchitectureware.org/&quot;&gt;openarchitectureware.org&lt;/a&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-6226375835742964750?l=voelterblog.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Markus Voelter</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-19398645.post-6226375835742964750</guid>
         <pubDate>Mon, 28 Sep 2009 02:58:00 -0700</pubDate>
      </item>
      <item>
         <title>Profiler for XPand and Xtend</title>
         <link>http://voelterblog.blogspot.com/2009/09/profiler-for-xpand-and-xtend.html</link>
         <description>&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.heikobehrens.net&quot;&gt;Heiko Behrens&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.heikobehrens.net/2009/09/25/profiler-for-xpandxtendcheck/&quot;&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=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-8215910185601674926?l=voelterblog.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Markus Voelter</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-19398645.post-8215910185601674926</guid>
         <pubDate>Sun, 27 Sep 2009 11:31:00 -0700</pubDate>
      </item>
      <item>
         <title>Website down</title>
         <link>http://voelterblog.blogspot.com/2009/09/website-down.html</link>
         <description>It seems my website &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.voelter.de&quot;&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=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-2580432274296338012?l=voelterblog.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Markus Voelter</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-19398645.post-2580432274296338012</guid>
         <pubDate>Thu, 17 Sep 2009 14:47:00 -0700</pubDate>
      </item>
      <item>
         <title>Using Scala for Xtext scope definitions</title>
         <link>http://voelterblog.blogspot.com/2009/09/using-scala-for-xtext-scope-definitions.html</link>
         <description>Over the last couple of days I have experimented with using &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://scala-lang.org&quot;&gt;Scala&lt;/a&gt; for a &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/Xtext&quot;&gt;XText&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/Xtext/documentation/0_7_2/xtext.html#scoping&quot;&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 rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.scala-lang.org/node/94&quot;&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 rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://lampsvn.epfl.ch/trac/scala/wiki/EclipsePluginsWithScala&quot;&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 rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/Xtext/documentation/0_7_2/xtext.html#generator&quot;&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 rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://daily-scala.blogspot.com/2009/08/implicit-methods.html&quot;&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 &quot;destroys&quot; the classpath, preventing Xtext from generating the language, there is no &quot;organize imports&quot; 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 rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.chuusai.com/&quot;&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=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-1343535389434798335?l=voelterblog.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Markus Voelter</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-19398645.post-1343535389434798335</guid>
         <pubDate>Wed, 09 Sep 2009 09:16:00 -0700</pubDate>
      </item>
      <item>
         <title>MDE Diploma in Nantes</title>
         <link>http://voelterblog.blogspot.com/2009/09/mde-diploma-in-nantes.html</link>
         <description>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 rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.emn.fr/x-info/atlanmod/index.php/The_MDE_Diploma&quot;&gt;take a look!&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-4204109192864539588?l=voelterblog.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Markus Voelter</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-19398645.post-4204109192864539588</guid>
         <pubDate>Sun, 06 Sep 2009 12:55:00 -0700</pubDate>
      </item>
      <item>
         <title>Xtext Helios Roadmap</title>
         <link>http://voelterblog.blogspot.com/2009/08/xtext-helios-roadmap.html</link>
         <description>... on &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://blog.efftinge.de/2009/08/xtext-road-to-helios.html&quot;&gt;Sven's Blog&lt;/a&gt;. Let him know if you have comments, suggestions or input!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-8673149331572136328?l=voelterblog.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Markus Voelter</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-19398645.post-8673149331572136328</guid>
         <pubDate>Thu, 27 Aug 2009 10:36:00 -0700</pubDate>
      </item>
      <item>
         <title>Java programmers: you must read these two books</title>
         <link>http://voelterblog.blogspot.com/2009/08/java-programmers-you-must-read-these.html</link>
         <description>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 rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://scala-lang.org&quot;&gt;Scala&lt;/a&gt; and &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://clojure.org/&quot;&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 &quot;newer&quot; 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 rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://en.wikipedia.org/wiki/Actor_model&quot;&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 rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.amazon.com/Programming-Scala-Multi-Core-Complexity-Programmers/dp/193435631X/&quot;&gt;Programming Scala by Venkat Subramaniam&lt;/a&gt; and &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.amazon.com/Programming-Clojure-Pragmatic-Programmers-Halloway/dp/1934356336&quot;&gt;Programming Clojure by Stuart Halloway&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-5441613039882103843?l=voelterblog.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Markus Voelter</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-19398645.post-5441613039882103843</guid>
         <pubDate>Mon, 24 Aug 2009 06:32:00 -0700</pubDate>
      </item>
      <item>
         <title>News about OSLO</title>
         <link>http://voelterblog.blogspot.com/2009/08/news-about-oslo.html</link>
         <description>Some &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.douglaspurdy.com/2009/08/17/on-oslo/&quot;&gt;news about OSLO&lt;/a&gt;. I am not sure I like the merging of the Data Programmability team and the &quot;Oslo&quot; team (&quot;Quadrant&quot;, Repository, &quot;M&quot;). 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=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-8158525251316825597?l=voelterblog.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Markus Voelter</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-19398645.post-8158525251316825597</guid>
         <pubDate>Tue, 18 Aug 2009 05:20:00 -0700</pubDate>
      </item>
      <item>
         <title>Hardware for Podcast Editing</title>
         <link>http://voelterblog.blogspot.com/2009/08/hardware-for-podcast-editing.html</link>
         <description>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 &quot;something that simulates a keyboard&quot;.&lt;br /&gt;&lt;br /&gt;I have been looking into the following devices: &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.frontierdesign.com/Products/TranzPort/&quot;&gt;Frontier Design Tranzport&lt;/a&gt;, the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.numark.com/totalcontrol&quot;&gt;Numark Total Control&lt;/a&gt;, the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.thomann.de/de/miditech_mtbcommand_black.htm&quot;&gt;Miditech MTB Command&lt;/a&gt; as well as the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.thomann.de/de/contour_av_solutions_shuttlepro_hardwarecontroller.htm&quot;&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 &quot;keyboard simulator&quot; 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 rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://en.wikipedia.org/wiki/HOTAS&quot;&gt;HOTAS&lt;/a&gt; from military aviation: it takes a little bit of time to learn to &quot;play it&quot;, 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=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-3757590755183869689?l=voelterblog.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Markus Voelter</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-19398645.post-3757590755183869689</guid>
         <pubDate>Thu, 13 Aug 2009 14:17:00 -0700</pubDate>
      </item>
      <item>
         <title>DSL Variant Management for TMF Xtext Released</title>
         <link>http://voelterblog.blogspot.com/2009/08/dsl-variant-management-for-tmf-xtext.html</link>
         <description>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 rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://code.google.com/p/dslvariantmanagement/downloads/list&quot;&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 rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/proposals/feature-model/&quot;&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 rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.pure-systems.com/Variantenmanagement.49.0.html&quot;&gt;pure::variants&lt;/a&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-1575236407833802327?l=voelterblog.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Markus Voelter</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-19398645.post-1575236407833802327</guid>
         <pubDate>Thu, 13 Aug 2009 04:24:00 -0700</pubDate>
      </item>
      <item>
         <title>Results of my Layouting experiments</title>
         <link>http://voelterblog.blogspot.com/2009/08/results-of-my-layouting-experiments.html</link>
         <description>Over the last couple of months, together with a couple of other people, I have been working on &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://code.google.com/p/emfmodelvisualizer/&quot;&gt;model visualization&lt;/a&gt; tooling, based on &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://graphviz.org/&quot;&gt;GraphViz&lt;/a&gt; and &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/gef/zest/&quot;&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;iframe class=&quot;embeddedvideo&quot; src=&quot;http://www.youtube.com/v/5Bpmxi7Ad9o&amp;hl=en&amp;fs=1&amp;rel=0&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt; I built this thing &quot;from scratch&quot; using &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://scala-lang.org&quot;&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=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-3572036885729405622?l=voelterblog.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Markus Voelter</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-19398645.post-3572036885729405622</guid>
         <pubDate>Sun, 09 Aug 2009 04:40:00 -0700</pubDate>
      </item>
      <item>
         <title>Back to the Roots</title>
         <link>http://voelterblog.blogspot.com/2009/08/back-to-roots.html</link>
         <description>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=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-7838976958505281512?l=voelterblog.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Markus Voelter</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-19398645.post-7838976958505281512</guid>
         <pubDate>Sun, 02 Aug 2009 13:24:00 -0700</pubDate>
      </item>
      <item>
         <title>BPMN vs BPEL: Are We Still Debating This?</title>
         <link>http://feedproxy.google.com/~r/brsilver/toIM/~3/XPvSNm5od3g/</link>
         <description>Active Endpoints&amp;#8217; Alex Neihaus points me to a post by his CTO Michael Rowley entitled &amp;#8220;Which is simpler: BPMN or BPEL?&amp;#8221; I&amp;#8217;m groaning before I even read it, because I know where Michael is headed. Right off a cliff, in my view.
Their product ActiveVOS is one of the first to support BPMN 2.0 diagrams, but [...]</description>
         <guid isPermaLink="false">http://www.brsilver.com/wordpress/?p=629</guid>
         <pubDate>Thu, 19 Nov 2009 15:37:12 -0800</pubDate>
         <content:encoded><![CDATA[<p>Active Endpoints&#8217; Alex Neihaus points me to a post by his CTO Michael Rowley entitled &#8220;<a rel="nofollow" target="_blank" href="http://www.vosibilities.com/bpel/bpmn-or-bpel-which-is-simpler/2009/11/19/">Which is simpler: BPMN or BPEL</a>?&#8221; I&#8217;m groaning before I even read it, because I know where Michael is headed. Right off a cliff, in my view.</p>
<p>Their product ActiveVOS is one of the first to support BPMN 2.0 diagrams, but they use it to create BPEL. Such a use was actually anticipated by the developers of BPMN 2.0 &#8211; IBM, Oracle, and SAP &#8211; all of which have been shipping BPEL engines for some time. So that&#8217;s not such a big deal, and Michael doesn&#8217;t really need to defend doing it. Saying it&#8217;s a &#8220;simpler&#8221; way to go than executable BPMN 2.0, however, is a stretch.</p>
<p>Simpler for whom? When you sort it all out, he&#8217;s actually saying BPEL is simpler for an engine vendor because it doesn&#8217;t have overlapping or alternative constructs like BPMN does. No one would argue with that, but who cares? No engine vendor is going to support every possible BPMN 2.0 element and attribute called out in the metamodel. And I&#8217;m not saying just in the first release. Not ever. In that sense, BPMN 2.0 is not a self-contained execution language like BPEL is.</p>
<p>However, for process modelers, and even for executable process designers, there&#8217;s no way BPEL execution makes BPMN modeling &#8220;simpler.&#8221; That&#8217;s because the subset of BPMN supported with BPEL execution excludes the very features that make BPMN attractive to business-oriented modelers in the first place: things like freeform looping back to a previous step in the flow. BPEL is inherently block oriented, like a computer program, while BPMN is inherently graph oriented, like a flowchart. </p>
<p>In the BPEL mapping section of BPMN 2.0, the spec describes &#8220;basic mapping&#8221; of block-oriented BPMN. Then follows a section on &#8220;extended mapping&#8221; where the BPMN does not conform to BPEL&#8217;s natural block structure. The spec essentially says here engine vendors are on their own, noting &#8220;in many cases there is no preferred single mapping of a particular block, but rather, multiple WS-BPEL patterns are possible to map that block to.&#8221; </p>
<p>Freeform loopbacks are a prime example. They typically describe what BPEL calls &#8220;interleaved loop&#8221; structures. To map these to BPEL, the BPMN spec says the following:</p>
<blockquote><p>The looping section of the Process, where the loops first merge back (upstream) into the flow until all paths have merged back to Normal Flow, shall be separated from the main WSBPEL process into a set of derived processes that will spawn each other until all the looping conditions are satisfied.The section of the process that is removed will be replaced by a (one-way) invoke to spawn the process, followed by a receive to accept the message that the looping sections have completed and the main process can continue. </p></blockquote>
<p>In other words, just to support freeform routing in the diagram, a single BPMN process must be split into multiple BPEL processes that signal to each other through messages. Is this simpler? No I don&#8217;t think so.</p>
<p>Over the past year, engineers at Oracle and IBM have been making changes to their process engines precisely to break out of the BPEL box, not just to better handle BPMN constructs like OR gateways, boundary events, and sequence flow loopbacks, but ad-hoc behavior as well. If BPEL were adequate to execute processes the way business wants to model them, it would have become the BPM runtime standard. It hasn&#8217;t.</p> <p><a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/aBztODBfr8JW2XJ-l7nQSOcK70U/0/da"><img src="http://feedads.g.doubleclick.net/~a/aBztODBfr8JW2XJ-l7nQSOcK70U/0/di" border="0" ismap></a><br/>
<a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/aBztODBfr8JW2XJ-l7nQSOcK70U/1/da"><img src="http://feedads.g.doubleclick.net/~a/aBztODBfr8JW2XJ-l7nQSOcK70U/1/di" border="0" ismap></a></p><img src="http://feeds.feedburner.com/~r/brsilver/toIM/~4/XPvSNm5od3g" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>Teamworks 7 BPMS Report</title>
         <link>http://feedproxy.google.com/~r/brsilver/toIM/~3/7buX92hT1j4/</link>
         <description>Lombardi&amp;#8217;s Teamworks 7 adds a wealth of features tosupport massive reuse of process artifacts across multiple projects in various stages of development and maintenance. My latest BPMS Report takes a close look at Lombardi&amp;#8217;s brand new offering.</description>
         <guid isPermaLink="false">http://www.brsilver.com/wordpress/?p=623</guid>
         <pubDate>Fri, 30 Oct 2009 16:02:34 -0700</pubDate>
         <content:encoded><![CDATA[<p>Lombardi&#8217;s Teamworks 7 adds a wealth of features tosupport massive reuse of process artifacts across multiple projects in various stages of development and maintenance. My <a rel="nofollow" target="_blank" href="http://www.brsilver.com/wordpress/lombardi-teamworks-7-bpms-report/">latest BPMS Report</a> takes a close look at Lombardi&#8217;s brand new offering.</p> <p><a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/qXoyHuOu_bSK186zHXJF5mot93w/0/da"><img src="http://feedads.g.doubleclick.net/~a/qXoyHuOu_bSK186zHXJF5mot93w/0/di" border="0" ismap></a><br/>
<a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/qXoyHuOu_bSK186zHXJF5mot93w/1/da"><img src="http://feedads.g.doubleclick.net/~a/qXoyHuOu_bSK186zHXJF5mot93w/1/di" border="0" ismap></a></p><img src="http://feeds.feedburner.com/~r/brsilver/toIM/~4/7buX92hT1j4" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>Appian 6 Released</title>
         <link>http://feedproxy.google.com/~r/brsilver/toIM/~3/O7tKGjgnzSk/</link>
         <description>Two weeks ago Appian launched version 6 of its BPMS, along with a rebooted online collaboration network called Appian FORUM and a suite of professional services offerings. Appian plays in the human-centric business-empowered end of the BPMS vendor landscape along with Lombardi and Savvion. With all the vendors now claiming ease of use, Appian&amp;#8217;s new [...]</description>
         <guid isPermaLink="false">http://www.brsilver.com/wordpress/?p=619</guid>
         <pubDate>Tue, 13 Oct 2009 16:42:51 -0700</pubDate>
         <content:encoded><![CDATA[<p>Two weeks ago Appian launched version 6 of its BPMS, along with a rebooted online collaboration network called Appian FORUM and a suite of professional services offerings. Appian plays in the human-centric business-empowered end of the BPMS vendor landscape along with Lombardi and Savvion. With all the vendors now claiming ease of use, Appian&#8217;s new claim is &#8220;fastest,&#8221; meaning shortest cycle time from concept to production. It&#8217;s a distinction without much of a difference, but Appian believes that its tools require less scripting and technical futzing than its natural competitors. I think it would be fair to say that Appian provides more of the solution building blocks already preconfigured, so in that sense it could be faster to deploy.</p>
<p>Like Lombardi in Teamworks 7, Appian 6 is emphasizing new capabilities that enable &#8220;massive reuse&#8221;, design team collaboration, and one-click deployment. This is natural as the human-centric end of the BPMS market evolves from isolated projects to &#8220;enterprise&#8221; BPM programs. Of all the human-centric vendors, Appian seems most at ease with complete business empowerment.</p>
<p>All of Appian&#8217;s design and runtime administration tools are browser-based, and Appian 6 now supports import, export, and publishing of all application components &#8211; flows, forms, rules, etc. &#8211; in one click. In order to support today&#8217;s multi-application BPM environments, Appian 6 has also adapted the portal to provide tab-selectable application-specific views.</p>
<p>Appian FORUM appears to be the successor to the promised online &#8220;marketplace&#8221; for Appian Anywhere, the company&#8217;s cloud-based offering. Available to customers of both Appian Enterprise and Appian Anywhere, the new FORUM provides a library of downloadable application templates, process templates, and reusable tasks called Smart Services, developed by customers, partners, and Appian itself. Templates include Employee Onboarding, Spend Request, and IT Service Management. Appian-developed templates are free, while partner-developed are fee-based.</p>
<p>Appian&#8217;s new professional services framework is built around a its own BPM maturity model that aims to move customer self-sufficiency from the isolated project level to the enterprise program level. Like Lombardi&#8217;s similar offering, it takes a fairly narrow product-centric approach to &#8220;BPM in the large.&#8221; At the same time, Appian appears to be expanding its relationship with Mega, a major player in the BPA space. That could help to enlarge Appian&#8217;s view of the BPM market to include the majority of &#8220;BPM&#8221; users that are still at the modeling and analysis stage and not ready to automate anything just yet.</p> <p><a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/LM4_hUK_jdu850XR_eMjwqnIxcg/0/da"><img src="http://feedads.g.doubleclick.net/~a/LM4_hUK_jdu850XR_eMjwqnIxcg/0/di" border="0" ismap></a><br/>
<a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/LM4_hUK_jdu850XR_eMjwqnIxcg/1/da"><img src="http://feedads.g.doubleclick.net/~a/LM4_hUK_jdu850XR_eMjwqnIxcg/1/di" border="0" ismap></a></p><img src="http://feeds.feedburner.com/~r/brsilver/toIM/~4/O7tKGjgnzSk" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>The DI Mess</title>
         <link>http://feedproxy.google.com/~r/brsilver/toIM/~3/nhgRxWupD7s/</link>
         <description>[My August column on BPMInstitute.org]
BPMS Watch readers know I am a big fan of OMG&amp;#8217;s Business Process Modeling Notation (BPMN) 2.0, which has passed its first approval hurdle and is now in the Finalization Task Force stage. A major reason is that for the first time, BPMN has standardized the schema for XML interchange of [...]</description>
         <guid isPermaLink="false">http://www.brsilver.com/wordpress/?p=614</guid>
         <pubDate>Wed, 05 Aug 2009 11:51:33 -0700</pubDate>
         <content:encoded><![CDATA[<p>[My August column on BPMInstitute.org]</p>
<p>BPMS Watch readers know I am a big fan of OMG&#8217;s Business Process Modeling Notation (BPMN) 2.0, which has passed its first approval hurdle and is now in the Finalization Task Force stage. A major reason is that for the first time, BPMN has standardized the schema for XML interchange of process models. That means you will be able to create a BPMN model in one tool with confidence you can open it in a different tool. I think that&#8217;s what every user expects from a &#8220;standard,&#8221; but BPMN never had it until v2.0. But there is one part of the standard that the team messed up big time: Diagram Interchange (DI), meaning the graphical layout of the shapes and symbols.</p>
<p>Prior to BPMN 2.0, the de facto interchange format for BPMN models has been XPDL, an existing standard from the Workflow Management Coalition (WfMC) modified to handle BPMN. Each node in XPDL represents both an element in the BPMN semantic model and its corresponding visual element &#8211; including position, size, and other graphical details &#8211; in the diagram. But BPMN 2.0 separates the semantic model from its diagrammatic representation. That&#8217;s in a separate model &#8211; the DI model &#8211; that sits alongside the semantic model in the XML interchange document.</p>
<p>That&#8217;s actually a good thing. It allows multiple diagrams (views, pages, etc.) to represent the same semantic element in different ways, such as different levels of detail. For example, if you have a hierarchical diagram of a complex process model, with a top-level view showing the entire process at very coarse-grained detail and many child-level views showing increasing levels of detail, BPMN 2.0 maintains a single consistent semantic model for the process, referenced by all the various views. That is good for maintaining the integrity of the model. In contrast, with XPDL each view of a particular model element represents a different XML element in the export, so if a subprocess or pool appears on multiple pages of the model, it is up to the tool &#8211; or the modeler &#8211; to maintain consistency between their definitions.</p>
<p>But OMG did not want to make DI, the graphical model, BPMN-specific. They wanted it to support other types of diagrams as well, particularly UML, something completely different but also owned by OMG. And they didn&#8217;t want to define the format in an XML schema document (XSD), the universal standard used by XML tools, SOA, and BPM. They wanted to define it in XMI (XML Model Interchange), OMG&#8217;s own standard for interchanging UML models. The problem with DI as specified in the BPMN 2.0 draft is that BPMN-specific diagram structure is not defined in a format usable by XML tools. Instead, it is defined in a separate &#8220;library,&#8221; which you could think of as a cheat sheet off to the side to remind you of the particular attributes allowed or required for BPMN-specific shapes.</p>
<p>If you think that is a strange way to define what is still nominally a notation (i.e. graphics) standard, you are not alone.</p>
<p>The problem is not that it is <em>impossible</em> to define a BPMN 2.0 model using the graphics as specified by DI, just that it will be <em>too difficult to do so in practice</em>. Unless you can represent DI as a true BPMN-specific schema, tool implementers cannot use the rich array of XML tools available to validate, transform, and test their XML exports. Graphical model interchange is difficult enough in XPDL, where the graphics come pre-attached to their semantic elements. A few BPMN 1.x tool vendors &#8211; ITP Commerce, Fujitsu, Global360, eClarus, TIBCO, BizAGI, and Lombardi &#8211; have achieved some level of BPMN interoperability using XPDL 2.1, but it requires tweaks to the XPDL using XSLT, the standard language for XML transformation. It would be extremely difficult to create those tweaks with DI &#8211; and they no doubt will still be needed with BPMN 2.0 &#8211; since tools that create, execute, and debug XSLT all need a proper schema. OMG needs to try again on the DI part.</p>
<p>It is no great feat to turn DI into a proper BPMN-specific schema. I did it myself (BpmnDi.xsd) in a few hours. I also created an XSLT that maps XPDL 2.1 to BPMN 2.0, using BpmnDi as the graphics model. If you are interested in such things, you can download from <a rel="nofollow" target="_blank" href="http://www.bpmnstyle.com">http://www.bpmnstyle.com</a> on the Tools menu page. If your BPMN tool outputs XPDL 2.1, you can try it out on your own models. [So far only the XPDL "standard"-level conformance is supported.] If you are interested in interoperability between BPMN tools, please make your sentiments known to OMG. These implementation &#8220;details&#8221; are what the FTF phase is all about.</p> <p><a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/tlrH2YarjEn2zTY1wkxu6KDefNk/0/da"><img src="http://feedads.g.doubleclick.net/~a/tlrH2YarjEn2zTY1wkxu6KDefNk/0/di" border="0" ismap></a><br/>
<a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/tlrH2YarjEn2zTY1wkxu6KDefNk/1/da"><img src="http://feedads.g.doubleclick.net/~a/tlrH2YarjEn2zTY1wkxu6KDefNk/1/di" border="0" ismap></a></p><img src="http://feeds.feedburner.com/~r/brsilver/toIM/~4/nhgRxWupD7s" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>Case Management White Paper</title>
         <link>http://feedproxy.google.com/~r/brsilver/toIM/~3/zrLlQbhuTJM/</link>
         <description>I just finished a white paper on case management for Global 360, whose Case360 product comes the closest to my own view of what case management is all about. Click here to download the report. If you are interested in that topic, you might want to subscribe to my BPMN Case Management site, www.bpmncase.com.</description>
         <guid isPermaLink="false">http://www.brsilver.com/wordpress/?p=612</guid>
         <pubDate>Wed, 05 Aug 2009 11:43:19 -0700</pubDate>
         <content:encoded><![CDATA[<p>I just finished a white paper on case management for Global 360, whose Case360 product comes the closest to my own view of what case management is all about. Click <a rel="nofollow" target="_blank" href="http://www.brsilver.com/bpmn/download/casemgtwp.pdf"><span style="color:#7f9a42;">here </span></a>to download the report. If you are interested in that topic, you might want to subscribe to my BPMN Case Management site, <a rel="nofollow" target="_blank" href="http://www.bpmncase.com">www.bpmncase.com</a>.</p> <p><a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/mOrM5rm-KUs74RJ92IdV7fbZa3I/0/da"><img src="http://feedads.g.doubleclick.net/~a/mOrM5rm-KUs74RJ92IdV7fbZa3I/0/di" border="0" ismap></a><br/>
<a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/mOrM5rm-KUs74RJ92IdV7fbZa3I/1/da"><img src="http://feedads.g.doubleclick.net/~a/mOrM5rm-KUs74RJ92IdV7fbZa3I/1/di" border="0" ismap></a></p><img src="http://feeds.feedburner.com/~r/brsilver/toIM/~4/zrLlQbhuTJM" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>Blueprint and BPMN Diagram Portability</title>
         <link>http://feedproxy.google.com/~r/brsilver/toIM/~3/95PGyeAYTC0/</link>
         <description>I wrote previously about Lombardi&amp;#8217;s efforts to open up Blueprint using XPDL 2.1. A BPMN diagram created in Blueprint can be exported as XPDL and imported into itp commerce Process Modeler for Visio, the tool I use in my BPMessentials training. This is great! Even though it is a standard, BPMN is rarely portable between [...]</description>
         <guid isPermaLink="false">http://www.brsilver.com/wordpress/?p=602</guid>
         <pubDate>Wed, 29 Jul 2009 10:30:36 -0700</pubDate>
         <content:encoded><![CDATA[<p>I wrote previously about Lombardi&#8217;s efforts to open up Blueprint using XPDL 2.1. A BPMN diagram created in Blueprint can be exported as XPDL and imported into itp commerce Process Modeler for Visio, the tool I use in my BPMessentials training. This is great! Even though it is a standard, BPMN is rarely portable between tools, something that baffles users. But I noticed the lanes did not import properly. My investigation into why has increased my understanding of the portability problem.</p>
<p>A long time ago, when we wasted time talking about the relative merits of BPEL vs XPDL, Keith Swenson used to go on and on about the need to port the diagram graphics in addition to the semantic model. (BPEL has no graphics model, but today that seems almost besides the point.) I argued at the time that graphics portability was hopeless anyway, since each tool uses different graphics libraries, fonts, connection points, etc. You could never get the graphics to port exactly and remain editable.</p>
<p>The truth, as it turns out, is something in between. Portable BPMN graphics is really an approximation of the layout, capturing the arrangement of nodes in swimlanes and connector bendpoints, but not necessarily fonts, precise connection points, etc. Those are still determined by each tool. This is more or less in line with user expectations, and XPDL can deliver on this&#8230; in principle.</p>
<p>Upon further investigation of the Blueprint-ITP issue, I found out that ITP ignores the graphics info in the Blueprint XPDL and reconstructs the diagram from the semantic model (sans lanes). The engineer said it was too complicated to explain, as he headed off for vacation. So I had to figure it out on my own.</p>
<p>Turns out there are several related issues. One is coordinate systems. &#8220;Standard&#8221; XPDL measures node xy coordinates as position of the top left corner relative to the top left corner of the page. Yes, XPDL expects diagrams to have pages, but they are not required. Blueprint has no pages.</p>
<p>Second is scale. There is a PixelsPerMillimeter scale attribute in XPDL, but tools can omit or ignore it. Scale turns out to be important because most of the graphics in the diagram are fixed in size.</p>
<p>Third is standardization in XPDL. The spec says, per Robert Shapiro, my XPDL guru:</p>
<blockquote><p>X and Y coordinates of node&#8217;s upper left corner (bounding box). Tool specific and depends on ToolId. Usual implementation based on upper left corner of page being (0, 0) and all coordinates &gt;= 0.</p></blockquote>
<p>The operative words here are <em>tool-specific</em> and <em>depends on ToolId</em>. You can&#8217;t have real portability when key elements are tool-specific. It&#8217;s more like EDI: you can integrate, but it takes side agreements to do so.</p>
<p>In the end, it seems that ITP only imports the graphics when it recognizes its own ToolId. OK, I can forge that. And it measures coordinates of node centers relative to bottom left corner of page. OK, I can do the math. And it uses the PageId attribute. That&#8217;s a bit harder, since Blueprint is pageless. When it constructs the graphics from the imported Blueprint XPDL, ITP creates pages for the expanded subprocesses. This is the hierarchical style I teach in BPMessentials. I&#8217;ll figure that out somehow&#8230;</p>
<p>I set about writing an XSLT transform that would map the Blueprint export XPDL into something ITP can import, including graphics. I played around to arrive at a scale factor that made the imports look OK. If I had more time, maybe I could figure out how to create multi-page hierarchical models in the XSLT, but to start I just put everything in one page &#8212; which is what the Blueprint export actually provides.</p>
<p>Here are the results. This is a fragment of the sample Hiring process on the Blueprint site:</p>
<p><a rel="nofollow" target="_blank" href="http://www.brsilver.com/wordpress/wp-content/bphiring-orig.png"><img class="alignleft size-full wp-image-603" title="bphiring-orig" src="http://www.brsilver.com/wordpress/wp-content/bphiring-orig.png" alt="bphiring-orig" width="593" height="321"/></a></p>
<p>Here is how it looks imported from the raw XPDL. Note the lanes have been lost and pages for the subprocesses have been added.</p>
<p><a rel="nofollow" target="_blank" href="http://www.brsilver.com/wordpress/wp-content/bphiring-xpdlimport-raw.png"><img class="alignleft size-full wp-image-604" title="bphiring-xpdlimport-raw" src="http://www.brsilver.com/wordpress/wp-content/bphiring-xpdlimport-raw.png" alt="bphiring-xpdlimport-raw" width="921" height="211"/></a></p>
<p><a rel="nofollow" target="_blank" href="http://www.brsilver.com/wordpress/wp-content/bphiring-xpdlimport-raw2.png"><img class="alignleft size-full wp-image-605" title="bphiring-xpdlimport-raw2" src="http://www.brsilver.com/wordpress/wp-content/bphiring-xpdlimport-raw2.png" alt="bphiring-xpdlimport-raw2" width="818" height="293"/></a></p>
<p>Here is the import after my XSLT transformation:</p>
<p><a rel="nofollow" target="_blank" href="http://www.brsilver.com/wordpress/wp-content/bphiring-xpdlimport-transformed.png"><img class="alignleft size-full wp-image-606" title="bphiring-xpdlimport-transformed" src="http://www.brsilver.com/wordpress/wp-content/bphiring-xpdlimport-transformed.png" alt="bphiring-xpdlimport-transformed" width="946" height="329"/></a></p>
<p>The lanes are back! Actually, I had to do two things first in Visio. Send the expanded subprocess shapes to the back layer in order to see the connectors, and change the page size (fixed at A4 in the XSLT) to fit the drawing. Note the connectors do not touch the activities in exactly the same place as in the Blueprint original, but the general layout is preserved. </p>
<p>And here&#8217;s a cool thing you can do in the ITP tool: convert the expanded-inline subprocesses into collapsed subprocesses with the expansion on another page of the diagram, as in the hierarchical style. Here is what that looks like:</p>
<p><a rel="nofollow" target="_blank" href="http://www.brsilver.com/wordpress/wp-content/bphiring-xpdlimport-transformed3.png"><img class="alignleft size-full wp-image-608" title="bphiring-xpdlimport-transformed3" src="http://www.brsilver.com/wordpress/wp-content/bphiring-xpdlimport-transformed3.png" alt="bphiring-xpdlimport-transformed3" width="936" height="548"/></a></p>
<p>I&#8217;m not much of a programmer, but it seems to work. If you are interested in the xslt, you can download it <a rel="nofollow" target="_blank" href="http://www.brsilver.com/bpmn/download/BPtoITP.xslt">here</a>. I used the xsl:function tag, so it requires an XSLT 2.0 engine, such as XMLSpy (the engine is free from Altova). It probably could be rewritten in XSLT 1.0 without that.</p> <p><a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/tEgnWGR8jojLurobDcG0S220tWc/0/da"><img src="http://feedads.g.doubleclick.net/~a/tEgnWGR8jojLurobDcG0S220tWc/0/di" border="0" ismap></a><br/>
<a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/tEgnWGR8jojLurobDcG0S220tWc/1/da"><img src="http://feedads.g.doubleclick.net/~a/tEgnWGR8jojLurobDcG0S220tWc/1/di" border="0" ismap></a></p><img src="http://feeds.feedburner.com/~r/brsilver/toIM/~4/95PGyeAYTC0" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>Lombardi Opens Up Blueprint</title>
         <link>http://feedproxy.google.com/~r/brsilver/toIM/~3/7H6NLK5TvXI/</link>
         <description>Well, sort of&amp;#8230; By that I mean you can export a BPMN diagram from your Blueprint account to your desktop and import it into another BPMN tool, like Process Modeler for Visio, the tool I use in my BPMessentials training, or BizAGI (see screenshot). After months of my nagging Lombardi about the need for this, it popped [...]</description>
         <guid isPermaLink="false">http://www.brsilver.com/wordpress/?p=600</guid>
         <pubDate>Mon, 13 Jul 2009 14:40:13 -0700</pubDate>
         <content:encoded><![CDATA[<p>Well, sort of&#8230; By that I mean you can export a BPMN diagram from your Blueprint account to your desktop and import it into another BPMN tool, like Process Modeler for Visio, the tool I use in my BPMessentials training, or BizAGI (see screenshot). </p>
<p><img class="alignnone" title="Blueprint BPMN export" src="http://www.lombardi.com/images/email/blueprint-modal-portability.jpg" alt="" width="510" height="381"/></p>
<p>After months of my nagging Lombardi about the need for this, it popped up like a surprise gift in the July Blueprint release. You might think they always had this. Not really. Notwithstanding Forrester&#8217;s swooning over Blueprint&#8217;s BPDM export feature, that never really worked. The one that does work is based on XPDL 2.1, which has emerged as the interchange format of choice for BPMN 1.x. Robert Shapiro and I are working on the portability conformance levels in XPDL 2.2, which supports BPMN 2.0, and we welcome Lombardi&#8217;s commitment to BPMN model portability between tools. </p>
<p> There is a small problem getting lanes to interchange properly with Process Modeler for Visio. I am trying to get ITP to debug that for me and then I will post the minor xslt tweak needed to go between Blueprint and Process Modeler for Visio. This is key for me as I am committed to BPMN training on both tool platforms. Kudos to Lombardi for making it happen.</p> <p><a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/KMXaypELjfjmubU2ya6mAy1wyCI/0/da"><img src="http://feedads.g.doubleclick.net/~a/KMXaypELjfjmubU2ya6mAy1wyCI/0/di" border="0" ismap></a><br/>
<a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/KMXaypELjfjmubU2ya6mAy1wyCI/1/da"><img src="http://feedads.g.doubleclick.net/~a/KMXaypELjfjmubU2ya6mAy1wyCI/1/di" border="0" ismap></a></p><img src="http://feeds.feedburner.com/~r/brsilver/toIM/~4/7H6NLK5TvXI" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>Case Management Forum Launched</title>
         <link>http://feedproxy.google.com/~r/brsilver/toIM/~3/lqgET28Rs6s/</link>
         <description>I have taken Phil Gilbert&amp;#8217;s suggestion to heart and stood up a new website BPMN Case Management where we can explore the possibilities for a case management modeling notation closely tied to BPMN&amp;#8230; without re-fighting the whole BPMN war from the very beginning, as OMG seems inclined to do. Once the DNS sets up, it [...]</description>
         <guid isPermaLink="false">http://www.brsilver.com/wordpress/?p=598</guid>
         <pubDate>Thu, 09 Jul 2009 14:33:42 -0700</pubDate>
         <content:encoded><![CDATA[<p>I have taken Phil Gilbert&#8217;s suggestion to heart and stood up a new website BPMN Case Management where we can explore the possibilities for a case management modeling notation closely tied to BPMN&#8230; without re-fighting the whole BPMN war from the very beginning, as OMG seems inclined to do. Once the DNS sets up, it will be <a rel="nofollow" target="_blank" href="http://www.bpmncase.com">www.bpmncase.com</a>, but for now you can reach it at <a rel="nofollow" target="_blank" href="http://www.brsilver.com/bpmncase">www.brsilver.com/bpmncase</a>. I&#8217;ve invited a bunch of people that I know, and who have expressed an interest in the topic, to be &#8220;authors&#8221; &#8211; allowed to post &#8211; and I expect to hear from a lot more people that I don&#8217;t know requesting same. There&#8217;s not much there yet&#8230; I just registered the name a couple hours ago&#8230; but if you&#8217;re interested, maybe subscribe to the feed and something good will come out of it.</p> <p><a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/olNpbUr3fIfMVLiS4Hbvb6Me6Ks/0/da"><img src="http://feedads.g.doubleclick.net/~a/olNpbUr3fIfMVLiS4Hbvb6Me6Ks/0/di" border="0" ismap></a><br/>
<a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/olNpbUr3fIfMVLiS4Hbvb6Me6Ks/1/da"><img src="http://feedads.g.doubleclick.net/~a/olNpbUr3fIfMVLiS4Hbvb6Me6Ks/1/di" border="0" ismap></a></p><img src="http://feeds.feedburner.com/~r/brsilver/toIM/~4/lqgET28Rs6s" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>Teaching Elephants to Dance</title>
         <link>http://feedproxy.google.com/~r/brsilver/toIM/~3/IrEvtRmIffY/</link>
         <description>[My July column for BPMInstitute.org]
In these tough times, even the most change-resistant organizations are re-examining whether past practice should continue to govern standard operating procedures. Government and airlines, for example, spring to mind. Last week, I saw further evidence of this in delivering a BPMN training class to one of the many Federal agencies involved [...]</description>
         <guid isPermaLink="false">http://www.brsilver.com/wordpress/?p=594</guid>
         <pubDate>Thu, 09 Jul 2009 11:16:38 -0700</pubDate>
         <content:encoded><![CDATA[<p>[My July column for BPMInstitute.org]</p>
<p>In these tough times, even the most change-resistant organizations are re-examining whether past practice should continue to govern standard operating procedures. Government and airlines, for example, spring to mind. Last week, I saw further evidence of this in delivering a BPMN training class to one of the many Federal agencies involved in financial regulation. I was surprised to find that most in the class were experienced process modelers already. Many had prior BPMN experience, for some including BPMN-based BPM Suites. The processes of greatest interest concerned internal policies and procedures: hiring and employee onboarding, granting security clearances, etc.</p>
<p>On the flight home, another pleasant surprise: wi-fi and AC power at my seat in coach! For about the same price as one of those nasty &#8220;snack-paks&#8221; they offer, you can get in-flight Internet service coast-to-coast. While other airlines solemnly invoke policies and procedures to ban cell phones, GPS devices, and even powered headphones below 10,000 feet, Virgin America has figured out that giving business travelers an extra full workday might be good for customer satisfaction.</p>
<p>On the flight home, I noticed something familiar in the latest column from my favorite business journalist, Steven Pearlstein of the Washington Post. Headlined &#8220;<a rel="nofollow" target="_blank" href="http://www.washingtonpost.com/wp-dyn/content/article/2009/06/23/AR2009062303348.html?nav=rss_opinion/columns">The Productivity Revolution Trickles Into Government</a>,&#8221; the column relates how a top government priority, $80 Billion in loan guarantees for clean and renewable energy, did not expect to achieve approval of its first guarantee until the end of 2010, a full five years after Congressional authorization. Lots of rules, you see. Policies and procedures.</p>
<p>Not good enough, said Obama&#8217;s new Energy secretary Steven Chu on taking office in early 2009. He challenged his staff with the simple question, &#8220;What would it take to get the approvals done in three months?&#8221; Well. If you ask it that way&#8230; It turned out the secretary had the authority to waive, modify, or expedite half of the procedures &#8211; no one had bothered to ask &#8211; and the first loan guarantee was issued to a solar panel manufacturer in March 2009.</p>
<p>The real problem was no one was thinking about the end-to-end process. As Pearlstein relates,</p>
<blockquote><p>[Chu's consultant] assembled staff members from all the offices involved and vested them, collectively, with end-to-end responsibility for the approval process. Up to that point, people had been focused only on their own narrow tasks, and when they were finished they tossed the application over the wall to the next office. Once they started working as a team, however, they found that some of the work&#8230; could be done simultaneously rather than sequentially.</p></blockquote>
<p>While he could not have provided a better summary of BPM, Pearlstein frames the story in the more familiar narrative of &#8220;productivity,&#8221; government plodding versus the &#8220;efficiency&#8221; of the private sector. But this is not really about productivity, which measures output of work per unit of labor or capital applied. This is about cycle time, which is more often hampered by the structure of the end-to-end process rather than resource efficiency: unnecessary steps, excessively sequential processing, and no KPIs or governance at the end-to-end, customer-facing level.</p>
<p>Other recent government &#8220;productivity&#8221; gains Pearlstein cites are similar: DoD civilian security clearances reduced from 440 days to 40 days. IRS new hire process reduced from 120 days to 15. This tells me that while the principles of BPM are taking root in government just as they have in the private sector, the media still does not understand the role of process. They don&#8217;t yet get the BPM story.</p>
<p>That story begins with understanding the end-to-end process as a single &#8220;thing,&#8221; and measuring performance from that end-to-end, customer-facing perspective. That means, in turn, you need to be able to document the process end-to-end in a concise but readily understandable way, so you can clearly visualize the handoffs, exception paths, rework loops, and other sources of delay and stalemate.</p>
<p>Once you can visualize the process in this way, it becomes much easier to tackle process improvement. What would it take to do it faster, with less cost, or with higher quality? Why do we do this step here? In fact, why do we do it at all? Aimed at a process diagram laid out on the table rather than at the responsible person or organization, such questions lose the sting of a personal attack. They put the focus on the process rather than on the resources performing it. That&#8217;s a plus. Sure, implementing some of the proposed improvements may involve some office politics, but it no longer requires a miracle.</p>
<p>It all starts with documenting the as-is process, in a clear and sharable way. BPMN, the industry standard for process modeling, is great for that, and government is eagerly adopting it. But using BPMN effectively to create process models that stand on their own, clear from the diagram alone, requires a methodology and a consistent style. You can get that in my new book, BPMN Method and Style. Even better, you can learn it in a two-day class at BPM Institute, in Washington DC September 23-24 or in New York November 3-4. So whether you regulate Wall Street or work on Wall Street, here&#8217;s a way to jump-start your organization&#8217;s process improvement efforts.</p> <p><a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/GIE_ddCwm4Vuk6OEJh3-zPRjwCc/0/da"><img src="http://feedads.g.doubleclick.net/~a/GIE_ddCwm4Vuk6OEJh3-zPRjwCc/0/di" border="0" ismap></a><br/>
<a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/GIE_ddCwm4Vuk6OEJh3-zPRjwCc/1/da"><img src="http://feedads.g.doubleclick.net/~a/GIE_ddCwm4Vuk6OEJh3-zPRjwCc/1/di" border="0" ismap></a></p><img src="http://feeds.feedburner.com/~r/brsilver/toIM/~4/IrEvtRmIffY" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>Engaging the Business in BPM</title>
         <link>http://feedproxy.google.com/~r/brsilver/toIM/~3/_BrLY4aPrxA/</link>
         <description>[My June column for BPMInstitute.org]
As BPM begins to expand beyond isolated projects to mainstream programs at the division or enterprise level, there is a need to engage a far greater number of business people in the effort. That&amp;#8217;s not easy, and achieving it is going to require significant change in the way BPM is practiced.
The [...]</description>
         <guid isPermaLink="false">http://www.brsilver.com/wordpress/?p=592</guid>
         <pubDate>Thu, 09 Jul 2009 11:12:33 -0700</pubDate>
         <content:encoded><![CDATA[<p>[My June column for BPMInstitute.org]</p>
<p>As BPM begins to expand beyond isolated projects to mainstream programs at the division or enterprise level, there is a need to engage a far greater number of business people in the effort. That&#8217;s not easy, and achieving it is going to require significant change in the way BPM is practiced.</p>
<p>The most important role for business is probably documenting current-state business processes and analyzing them for possible improvement. But conventional practices in this area are inefficient and inherently small-scale.</p>
<p>One typical scenario involves a team of business analysts or business architects mapping various processes using Visio or Powerpoint. Doing this requires no special tools or training, but the resulting process maps are not easily shared without elaborate accompanying explanation or documentation. The reason is each modeler makes up his or her own conventions about what the shapes and symbols mean. There is no defined methodology. The sphere of understanding is thus limited to the individual modeler. This scenario doesn&#8217;t scale, and you can&#8217;t base a BPM program on it.</p>
<p>In another typical scenario, a process improvement consultant comes in and works with a small project team, with the goal of fixing some process problem in the business, or at least mapping out a plan of action. The consultant&#8217;s emphasis is typically on a facilitated methodology, not on tools. In fact, the &#8220;tools&#8221; employed are frequently yellow stickies on the wall and paper-based tables and charts. While this is fine for fixing isolated problems, it does not scale to program-level BPM. Again the sphere of shared understanding of the process, as-is and to-be, is limited, in this case to a small radius around the facilitator. And paper-based tools? Come on, this is the twenty-first century!</p>
<p>At the other end of the spectrum, a small group of business architects or enterprise architects may use repository-based Business Process Analysis suites to model the business at the division or enterprise level. Besides process, these suites model data, strategies and goals, KPIs, policies and rules, organizations and roles, services and systems, and so on. The tools are great for looking at the company&#8217;s core end-to-end processes and aligning them for consistency, data integration, and governance at the enterprise level. But they rarely get down into the weeds of the problems affecting process performance and quality at ground level. They are really about architecture, not process improvement. The tools are proprietary, very expensive &#8211; over $10K per seat &#8211; and require weeks of training in the methodology. For this reason alone, the approach does not scale.</p>
<p>Each of these approaches brings something important to engaging the business on a larger scale: software tools that are easily accessible, business-friendly, and inexpensive; a way to clearly express problem areas, including exceptions, in the process model; a well-defined methodology for translating process understanding into diagrams that can stand on their own; and a repository to facilitate model sharing, cross-referencing, versioning, and reuse. The trick is combining them.</p>
<p>Pieces of the solution are coming into focus. BPMN is one key ingredient, as it provides a business-friendly visual language for process modeling, able to express exception-handling and other process details, with predefined meanings for the shapes and symbols. Thus the diagrams, if created correctly, can stand on their own, shareable across the enterprise without accompanying explanation. BPMN is a standard, and tools are inexpensive, in some cases free.<br />
A model repository is another. This is a database of process models supporting versioning and governance, allowing collaborative editing by team members without sacrificing authorization and access control.</p>
<p>Making these tools easily accessible across the business has been a challenge in the past. Now a number of tool vendors, including IBM, Lombardi, and SoftwareAG, are making repository-based modeling, including BPMN, available through cloud computing. Typically these are vendor-hosted sites that allow users to set up collaborative BPM team spaces on the web for a low monthly subscription. While the previous BPM era emphasized downloadable desktop tools for business users, the new trend is toward browser-based tools hosted on the web by the tool vendor.</p>
<p>With the tools in place, you still have the problem of using them effectively. BPMN proudly has no methodology, and its full palette of shapes and symbols is admittedly overwhelming. Very few people, in fact, either in business or IT, know how to use BPMN effectively. To encourage business engagement, one tool vendor strategy is to reduce the modeling palette to a minimal working set, essentially those carried over from traditional flowcharting, and make up the lost expressiveness through freeform commenting features. The idea here is that to engage business more fully, we need to lower the tooling barriers, making BPM so intuitive that anyone can do it.<br />
I would call that the predominant view right now, but I don&#8217;t think it&#8217;s the right view. Certainly it&#8217;s not the complete answer. The reason is that in order to capture the exceptions at the root of process improvement, and in order to collaborate with IT in the development of improved to-be process implementations, business can&#8217;t rely on what it already knows about process modeling, because it doesn&#8217;t know enough. It needs to learn to think about process in a more disciplined, structured way &#8211; more like IT, but from a non-technical business perspective. It needs to understand what the BPMN shapes and symbols really mean, and how to use them effectively to communicate through the diagram. And it needs a methodology, a step-by-step cookbook for going from an empty page to a complete diagram.</p>
<p>In other words, instead of just dumbing down the tools to the level of untrained users, we could also educate and train business people to use BPMN as it was meant to be used. I&#8217;ve been doing that for over two years, and I&#8217;ve come to see through that experience what is probably obvious to many of you already: business users are not all the same. They don&#8217;t all have the same skills and they are not all trying to do the same thing with process modeling. What is essential detail to one group may be down in the weeds for another.</p>
<p>Consequently, I believe the right approach is to view BPMN as a hierarchy of levels. Level 1, meant for any business person, uses a limited palette and is intuitive to untrained users. Level 2, aimed at business analysts and business architects, uses a wider palette to capture nuances of process behavior, including event and exception handling. Level 2 is that long-sought common process language shared by business and IT, something absolutely needed to truly empower business in BPM. Level 3 is using BPMN to describe executable process implementations, really just for IT.</p>
<p>The hard part is making each level a refinement of the previous one, not a do-over. That means imposing some structure and discipline in the methodology of Level 1, so that the Level 2 modeler doesn&#8217;t just throw out the Level 1 effort but instead just tweaks it. The end result is one model, viewable at different levels of detail by different groups of users for different purposes, not separate models for each purpose.</p>
<p>That idea is the basis of my new book, BPMN Method and Style, and my new BPMInstitute class Process Modeling with BPMN, offered September 23-24 in Washington DC. If you want to learn how to effectively engage the business in BPM across your company, come to that event.</p> <p><a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/FQ1xKKaaWreuQjB6U-trgOtcVtE/0/da"><img src="http://feedads.g.doubleclick.net/~a/FQ1xKKaaWreuQjB6U-trgOtcVtE/0/di" border="0" ismap></a><br/>
<a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/FQ1xKKaaWreuQjB6U-trgOtcVtE/1/da"><img src="http://feedads.g.doubleclick.net/~a/FQ1xKKaaWreuQjB6U-trgOtcVtE/1/di" border="0" ismap></a></p><img src="http://feeds.feedburner.com/~r/brsilver/toIM/~4/_BrLY4aPrxA" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>Kanban for Software Development</title>
         <link>http://kswenson.wordpress.com/2009/11/22/kanban-for-software-development/</link>
         <description>Last Wednesday I got a full scale indoctrination into the agile software development methodology called Kanban, loosly based on the Toyota Production System (TPS) mechanism with the same name. Toyota uses the kanban as a mechanism to allow for just the right amount of parts to be ordered and to be delivered just in time [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=kswenson.wordpress.com&amp;blog=190929&amp;post=679&amp;subd=kswenson&amp;ref=&amp;feed=1&quot;/&gt;</description>
         <guid isPermaLink="false">http://kswenson.wordpress.com/?p=679</guid>
         <pubDate>Sun, 22 Nov 2009 13:05:16 -0800</pubDate>
         <content:encoded><![CDATA[<div class='snap_preview'><br /><p>Last Wednesday I got a full scale indoctrination into the agile software development methodology called Kanban, loosly based on the Toyota Production System (TPS) mechanism with the same name. Toyota uses the kanban as a mechanism to allow for just the right amount of parts to be ordered and to be delivered just in time (JIT) in order to avoid overproduction and waste in the production line. Kanban Software Development Methodology (KSDM) brings the same lean ideas to a development team.<span id="more-679"></span></p>
<p>The <a rel="nofollow" target="_blank" href="http://qconsf.com/sf2009/tracks/show_track.jsp?trackOID=304">Kanban track</a> at<a rel="nofollow" target="_blank" href="http://qconsf.com/sf2009/conference/"> QCon</a>, the SD conference in San Francisco, had a line of speakers coordinated to give a thorough explanation: David Anderson, Jeff Patton, Henrik Kniberg, Chris Shinkle, and David Laribee. What I found impressed me as an approach that may answer some of the problems I have been having in moving teams to agile development.</p>
<p>My first thought was that it should not be called &#8220;Kanban&#8221; since there is no kanban card: neither physical nor virtual nor electronic. Instead the focus is on &#8220;leveling&#8221; (also known in TPS as &#8220;heijunka&#8221;) which is a way of keeping the amount of work in each category steady. Kanban is the mechanism in TPS for achieving this leveling, but in KSDM achieves this leveling without a Kanban token itself. I won&#8217;t dwell any more on the name, because it is in widespread use, and the ideas attached to the name as so important.</p>
<h2>Resources</h2>
<p>Being new to the topic, I refer you right away to resources with a more thorough treatment of the subject:</p>
<ul>
<li><a rel="nofollow" target="_blank" href="http://www.limitedwipsociety.org/">LimitedWIPSociety</a> &#8211; a focal point for this philosophy. &#8220;WIP&#8221; means &#8220;Work In Progress&#8221;.</li>
<li>The <a rel="nofollow" target="_blank" href="http://finance.groups.yahoo.com/group/kanbandev/">kanbandev group</a> at Yahoo has discussions on these topics.</li>
<li><a rel="nofollow" target="_blank" href="http://www.infoq.com/articles/hiranabe-lean-agile-kanban">Kanban Applied to Software Development: from Agile to Lean</a> &#8211; a good article from Kenji Hiranabe at InfoQ that lays things out in good detail.</li>
<li><a rel="nofollow" target="_blank" href="http://www.agilemanagement.net/resources/BetterSoftwareKanbanPrimer.pdf">The Kanban Primer: A Cultural Evolution in Software</a> &#8211; a good overview article from David Anderson</li>
<li><a rel="nofollow" target="_blank" href="http://kswenson.wordpress.com/2009/10/24/taiichi-ohno-reinterpreted/">Taiichi Ohno Reinterpreted</a> &#8211; my post from a few weeks ago visiting the fundamentals of Toyota Production System</li>
</ul>
<p>My goal will be to simply cover my impression of what is different or unique about this approach to agile software development &#8212; there is a lot more to it than I can cover here.</p>
<h2>Key Concepts</h2>
<p>The key to any Lean (with a capital L) method is to eliminate waste. In software, work that is partially complete is waste. This partially complete work is known as &#8220;Work In Progress&#8221; or WIP. There is a necessity to have a certain amount of WIP, but the point is to minimize that to the degree possible. You minimize WIP, and as a result that work gets accomplished quickly. It only stands to reason: with a fixed amount of workers, reducing the number of things being worked on will allow them to spend more time on those fewer things, and get them to a completed state more quickly.</p>
<p>Let me emphasize how important this is. Development projects that go for 8 months with no visible results are dangerous on many levels. By taking such a big bite of work at once, you commit the entire department to a direction without knowing whether it is going to work. There is no way to gauge the progress of the team, except in vague status measures which can be manipulated by incompetent players to hide reality. KSDM is about nibbling away at the work. Each small unit is completed and made customer ready BEFORE the next unit is started. In my <a rel="nofollow" target="_blank" href="http://kswenson.wordpress.com/2009/10/24/taiichi-ohno-reinterpreted/">reading of Taiichi Ohno</a>, this production in small continuous batches, instead of huge batches, is the essential ingredient of Just In Time manufacturing.</p>
<p>The focus is on &#8220;flow&#8221; of development activities. Focus on flow does two thing: first it obviously help to continuously get things completed. The other thing is that it helps to expose trouble. Whenever there is a disruption in the flow, when the flow does not work quite right, it is an indication of a problem that needs addressing. If works starts to pile up at one step, this is an indication that you should focus effort on that step and find out what is not working well.</p>
<h2>How it Works</h2>
<p>This seems in many ways contrary to the punctuated approach emphasized by Scrum and other strict iterative development. This apparent difference is an illusion caused simply by scale. KSDM allows for finer grained control. Scrum is a fairly course grained approach, e.g. all work gets done in a three week cycle. If you look at the larger scale, over the year, Scrum is providing a steady flow of features into the product. The 3 week iteration is a mechanism to assure that there is not a huge huge backlog of incomplete work. All the work, of the complete development cycle must be started and finished in that one sprint, which can be difficult if you have people that specialize in certain phases of development.</p>
<p>KSDM takes this control to a different level. You break the work process in a series different activities (phases). You then set a limit of how many job units you will allow at any phase. A simple rule of thumb: you can have a few more work units as you have people doing that job, so that each has one thing to work on at a time, and a small cache of completed jobs. The people in a given phase will do their work on a job unit to completion, so that it is ready for the next phase of work.</p>
<p>This is where the somewhat brilliant key idea behind KSDM comes to play. The completed job does NOT free the person for working on another job, until that job is pulled into the following phase and work is started there. If work is piling up at a particular phase, those people are NOT ALLOWED to work ahead. As Taiichi Ohno makes so clear, that working ahead is waste. Instead of working ahead, they can look around to see what is wrong.</p>
<blockquote><p>&#8220;I feel a disturbance in the flow&#8230;&#8221; &#8211; Obi Wan Kenobi on software development</p></blockquote>
<p>To put this in concrete terms, consider a process which involves (1) detailed design, (2) coding, (3) testing, and (4) documenting. Each of these stages you place a limit on the number of jobs, and for the sake of example lets say that limit is 4. Say for example that the coders have finished coding on their four job units, and are ready to take a new one. But the testing is backed up for some reason, still working on the last four job units, and are not ready to take a new job. The developers are <em>not allowed </em>to pull in a fifth job unit. There is <em>no point</em> in coding up more features when the earlier features are not getting tested or documented. It is also possible that because the developers are not pulling jobs from design, that the design phase becomes filled up with completed tasks. When work backs up in this way, one should go and figure out why testing is stuck. Maybe the real problem is that the documentation is blocking test. Whatever it is, <em>the primary job of the entire team is to identify the problem with the flow</em>, and fix it. Do not simply work ahead accumulating a huge pile of work for &#8220;someone else&#8221;. Instead, focus on the big goal, which is to get features completed to a customer ready state as quickly as possible.</p>
<h2>Reflection</h2>
<p>This idea of setting limits on the number of discrete jobs that can exist at any given phase at a time is so simple, and yet so profound, that I want to format these paragraph all in bold italics. It allows people to specialize into different role, to focus on their particular work, while the mechanism assures that the primary goal is not being lost. Some teams can take a feature (a story actually, a small separable part of a feature) from design to completely implemented, tested and document in only four days.</p>
<p>Kanban works in a car factory because the time to complete a particular job is well known. A Corolla comes off the line every 97 seconds. The factory is set up to produce a car&#8217;s worth of parts every 97 seconds as well. The parts are highly repeatable, so if it takes more than 97 seconds to build four doors, then you need either multiple steps, or parallelism, whatever makes the most sense. Once you have figured out exactly how long it takes to build a door it can be done again and again. Software is not so repeatable. Every software job is different and unique. How does that work with Kanban? The interesting thing: it does not turn out to matter. You break features into stories that are approximately the same size, but if one story takes three times the effort as another story, no problem. With software the job does not need to be timed to fit into 97 second slots. We can be flexible in the time dimension: one story takes one day, and another takes three days. What is important is that that story, no matter how long it takes, is completed before another is pulled in by that resource. With this understanding, my biggest concern was eliminated.</p>
<p>Clearly the method requires that features be broken down into fine grained stories. If you did not do this, you run the risk of &#8220;starving the line&#8221;. That is, one phase is filled with long running jobs, and the following phase has completed all their work. One area to explore is when the feature designer claims that the feature can not be broken down into small stories. There are surely techniques to address this, including job classification and prioritization, minimum marketable features, and other details which I can&#8217;t cover in this post.</p>
<p>Finally, it appears to me that a teams with a long practice of waterfall development might be able to <em>evolve </em>into this method. There is no big disruptive change. Just make the process visible, and limit the amount of work that is in progress at any given time. This allows Taiichi Ohno&#8217;s concept of &#8220;autonomism&#8221; to take over, and team can self organize to become more efficient. This make a lot of sense.</p> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/kswenson.wordpress.com/679/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kswenson.wordpress.com/679/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/kswenson.wordpress.com/679/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kswenson.wordpress.com/679/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/kswenson.wordpress.com/679/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kswenson.wordpress.com/679/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/kswenson.wordpress.com/679/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kswenson.wordpress.com/679/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/kswenson.wordpress.com/679/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kswenson.wordpress.com/679/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kswenson.wordpress.com&blog=190929&post=679&subd=kswenson&ref=&feed=1"/></div>]]></content:encoded>
         <media:content url="http://1.gravatar.com/avatar/5c921b0a84b183a2dd884ce4adf73d88?s=96&amp;amp;d=identicon&amp;amp;r=G" medium="image">
            <media:title>kswenson</media:title>
         </media:content>
      </item>
      <item>
         <title>Devaluing Email Addresses</title>
         <link>http://kswenson.wordpress.com/2009/11/21/devaluing-email-addresses/</link>
         <description>Attacking back at the Spammers
Some of my friends and acquaintances know that I am have been experimenting with a new scheme to control spam email. Like many people, I have had to abandon email addresses in the past due to over-abundance of spam. When you open a new email address, there is no spam. But [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=kswenson.wordpress.com&amp;blog=190929&amp;post=667&amp;subd=kswenson&amp;ref=&amp;feed=1&quot;/&gt;</description>
         <guid isPermaLink="false">http://kswenson.wordpress.com/?p=667</guid>
         <pubDate>Sat, 21 Nov 2009 17:08:34 -0800</pubDate>
         <content:encoded><![CDATA[<div class='snap_preview'><br /><h2>Attacking back at the Spammers</h2>
<p>Some of my friends and acquaintances know that I am have been experimenting with a new scheme to control spam email. Like many people, I have had to abandon email addresses in the past due to over-abundance of spam. When you open a new email address, there is no spam. But as you continue to use the box, eventually the knowledge that you are actually using a particular email address gets out. Once your email address becomes known to the spammers there is no sure way to get them to forget it.<span id="more-667"></span></p>
<p>A verified email address has value, and lists of email addresses are traded and bartered in the spam underworld. Even a non-verified but potentially valid email address has value. Sending a piece of spam does not cost much, but it has a cost. Sending to all possible email addresses (start with aaaaaaaa@aaaaa.com, then aaaaaaab@aaaaa.com, etc) is not viable. Spammers want an email address that is known or at least likely to work.</p>
<p>You could say that a particular email address has value because it is so much rarer than a completely random email address. A list of 1000 addresses that reaches 1000 people is the same value as a list of 100,000 addresses that reaches 1000 people. From a spammer&#8217;s perspective, you would like every email address to be valid (reach a person) forever, and have no addresses that go to dead ends. When people change their email address, there is a cost (albeit small) to the spammer, because the old email address become invalid. My goal then is to frustrate spammers by filling their lists with invalid email addresses.</p>
<h2>The Answer</h2>
<p>The value of my email address is due to its relative rareness. I can decrease the value of a particular email address, by increasing the number of email addresses I use. The idea is this: I can use thousands of email addresses out of a pool of billions of possible address. I can use a unique email address for (almost) every occasion. All of the email addresses deliver mail to me. Imagine the extreme: I print my business cards with a unique email address on every card. Anyone who uses the address has no problem sending email to me.</p>
<p>It is possible that in the course of normal email interchange, an email message with that address on it, gets posted to some sort of web page (e.g. email forum archive) and the spammers pick it up from there. The anti-spam feature is that whenever I start to receive spam on a particular email address, I <strong>turn off (disable) the address</strong>.</p>
<p>What if a legitimate party was using that address? What if that is the email address I gave to my mom to use to contact me? This would block email from her as well. Part of the scheme has to be keeping a record of who I have given the address to. When I turn that email address off, I go back to the legitimate person that I gave it to (e.g. mom), and give them a new email address to use.</p>
<p>You might be thinking correctly that this is onerous to have to tell people to use a different address. But keep this in mind: if I have given unique addresses to each of my hundreds of correspondents, then all of those addresses except this one remain unaffected. In the past, I have had to abandon entire email inboxes to ALL correspondents, and send them ALL a new address. Since there is no way I can remember all of them, I undoubtedly lose a many along the way. The need to abandon an email address is rare in general, and contacting one person to switch is painful, but far better than contacting all your contacts.</p>
<h2>Version 1.0</h2>
<p>About 6 months ago I put in place a plan to experiment with. It turns out that the XPDL.ORG site, which I help run, has unlimited free email forwarding. So what I did was create new cryptic email addresses, and forward them all to my regular email inbox. For example:</p>
<blockquote><p>kds_Why54TzrvyZfgzNqqerf@xpdl.org</p></blockquote>
<p>Every time I signed up for some sort of online service or account, I would create a new forwarding address. I created a private wiki page where I recorded the cryptic address, who or what I gave the address to, and when I did that. The idea is that if I ever have to turn that forwarding off, I can get back in touch with whomever I gave it to.</p>
<p>The email address must be long so that it can not be guessed. For example if I just use &#8220;keith1&#8243;, &#8220;keith2&#8243;, etc. it would be too easy for the spammers to guess other valid email addresses. This could cause me to have to turn off many many addresses inconveniently. If I make the address long and cryptic, then it is very very hard to guess other legitimate addresses, making those addresses relatively safe.</p>
<p>Most of these email addresses are entered into online forms, and used by those services, without anyone actually having to read them, or type them, so it really does not matter how long and complex the email address is.</p>
<h2>It is not perfect&#8230;</h2>
<p>What about &#8220;from&#8221; address on email? On my standard email, I created a new cryptic address as my &#8220;from&#8221; address every month. It does not matter how long or complicated an email address is when people simply use the &#8220;reply&#8221; button. Cycling every month is not perfect because if someone puts that email in their address book, and it also gets on a spam list, I might turn it off, and I don&#8217;t know who using that address, so I don&#8217;t have any way to let them know a newer address to use. Creating a new unique address for every email might be better, because this decreases the chance that someone would hang on to an address that also got on a spam list, but that causes other difficulties.</p>
<p>Some services require you to log in using your email address. If you really want to keep your &#8220;real&#8221; address private, then you have no choice but to give them and use the cryptic on to log in. Typing that long and meaningless address is a pain, so in those cases I have to create an address that is easier to remember and type, which unfortunately decreases its security.</p>
<p>Because you are using many email addresses simultaneously, it is possible to start getting multiple copies of a message. For example, if a message comes to you using address &#8220;a&#8221;, and you reply to it using address &#8220;b&#8221;, then both addresses become part of the ongoing email address. Some email in-boxes are smart enough to eliminate the duplicate, but not all are.</p>
<p>Every time you sign up for a mailing list, you use a unique cryptic email address, but again this can cause message multiplication when the message is addresses to multiple lists which have different email addresses for you.</p>
<p>In the six months that I have been doing this, I have not had the opportunity yet to turn off an email address. This is because it takes time to get on those spam lists, so as far as I know, none of my &#8220;new&#8221; email addresses that are less than 6 months old are on any lists yet. So it is really too early to tell. It is also true that going to the admin interface and creating a new cryptic email address, recording what I am using it for, and then using that in the sign up form, makes signing up for any service quite a bit more trouble. Sometimes I am too lazy, and just go ahead and use the fixed address because it is easier.</p>
<h2>Version 2.0</h2>
<p>I just found out about a new service called<strong> <a rel="nofollow" target="_blank" href="http://www.otherinbox.com/">otherinbox.com</a></strong>. This is the service that I have been looking for, and it is aimed at <a rel="nofollow" target="_blank" href="http://www.404techsupport.com/2009/01/01/otherinboxcom-the-perfect-secondary-e-mail/">exactly</a> this problem. (Scott Francis: you mentioned this service to me a while ago, but it took me this long to investigate.)</p>
<p>You get an account ($20/year &#8211; trial accounts are free) and it gives you an infinite number of email addresses which all go to you. It has all the capabilities described above, including the ability to block an address at any time in the future. You can record notes about a particular address to remind you of who you gave the address to, and when.</p>
<p>There is one particular improvement over my old scheme: you don&#8217;t have to set up the address in advance. When signing up for an account at Barnes and Noble I can create a suitably cryptic address on the fly, and it will automatically create the inbox for that address without extra work from me. Usually such services start by sending an email for you verify that you own the address, so I can go to the otherinbox.com, find that new email address, and set the address to be forwarded. This is so much nicer to do later instead of having to do it before you sign up, particularly when you are not on line. You can even make up an address while filling in a paper form with a pencil, and eventually the account is created for you &#8212; if needed.</p>
<p>They have a lot of other features for filtering and such. Email can be forwarded, or picked up directly from their web or IMAP interface. If you want, you can let the email pile up there, and receive only a digest of the email once a day. That might be really handy with some of the email lists I am on.</p>
<h2>Contemplations</h2>
<p>Perhaps this seems like a lot of trouble, to have to set up and manage a bunch of different email addresses so that you can have the option to cut one off if necessary. To be honest:<em> it is lot of trouble</em>. OtherInBox looks like a lot less trouble than my initial way, but it is still more trouble than just being able to give out a single address forever. Some of the need for this might go away if we had widespread cryptographic signing of email messages so we could know who the email came from, but there are many forces working against that. Signed messages would not help in a mailing list situation when you are exchanging messages with people you do not know. There are some possibilities that social software will offer some benefits in this area, once they have matured a bit more.<em> So for now given the current infrastructure, this looks like the best hope for combating spam.</em></p> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/kswenson.wordpress.com/667/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kswenson.wordpress.com/667/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/kswenson.wordpress.com/667/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kswenson.wordpress.com/667/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/kswenson.wordpress.com/667/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kswenson.wordpress.com/667/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/kswenson.wordpress.com/667/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kswenson.wordpress.com/667/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/kswenson.wordpress.com/667/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kswenson.wordpress.com/667/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kswenson.wordpress.com&blog=190929&post=667&subd=kswenson&ref=&feed=1"/></div>]]></content:encoded>
         <media:content url="http://1.gravatar.com/avatar/5c921b0a84b183a2dd884ce4adf73d88?s=96&amp;amp;d=identicon&amp;amp;r=G" medium="image">
            <media:title>kswenson</media:title>
         </media:content>
      </item>
      <item>
         <title>Cloud Contracts</title>
         <link>http://kswenson.wordpress.com/2009/11/20/cloud-contracts/</link>
         <description>Down-to-Earth Contracts that Keep the Cloud Aloft &amp;#8211; A look at the basic interoperability requirements when communicating with the Cloud, Keith Swenson &amp;#38; Jacques Durand, Nov 2009
Working together with Jacques Durand, a colleague and expert in the B2B exchange standards space, we put together this article exploring how many of the same standards and agreements [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=kswenson.wordpress.com&amp;blog=190929&amp;post=683&amp;subd=kswenson&amp;ref=&amp;feed=1&quot;/&gt;</description>
         <guid isPermaLink="false">http://kswenson.wordpress.com/?p=683</guid>
         <pubDate>Fri, 20 Nov 2009 13:58:26 -0800</pubDate>
         <content:encoded><![CDATA[<div class='snap_preview'><br /><blockquote><p><a rel="nofollow" target="_blank" href="http://cloudcomputing.sys-con.com/node/1196601"><strong>Down-to-Earth Contracts that Keep the Cloud Aloft</strong> &#8211; A look at the basic interoperability requirements when communicating with the Cloud</a>, Keith Swenson &amp; Jacques Durand, Nov 2009</p></blockquote>
<p>Working together with Jacques Durand, a colleague and expert in the B2B exchange standards space, we put together this article exploring how many of the same standards and agreements necessary today will also be necessary for applications deployed to the cloud. Just published!</p> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/kswenson.wordpress.com/683/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kswenson.wordpress.com/683/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/kswenson.wordpress.com/683/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kswenson.wordpress.com/683/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/kswenson.wordpress.com/683/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kswenson.wordpress.com/683/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/kswenson.wordpress.com/683/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kswenson.wordpress.com/683/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/kswenson.wordpress.com/683/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kswenson.wordpress.com/683/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kswenson.wordpress.com&blog=190929&post=683&subd=kswenson&ref=&feed=1"/></div>]]></content:encoded>
         <media:content url="http://1.gravatar.com/avatar/5c921b0a84b183a2dd884ce4adf73d88?s=96&amp;amp;d=identicon&amp;amp;r=G" medium="image">
            <media:title>kswenson</media:title>
         </media:content>
      </item>
      <item>
         <title>Interstage BPM Version 11 &amp; Cloud</title>
         <link>http://kswenson.wordpress.com/2009/11/19/interstage-bpm-version-11-cloud/</link>
         <description>Fujitsu made a couple of press releases last week, announcing two things: a new release of Interstage BPM, Version 11, and our Cloud BPM offering. This post just contains links to articles on the subject of these announcements. Product Review: Interstage BPM V11 &amp;#8211; Column 2
Fujitsu Interstage BPM in the Cloud &amp;#8211; Column 2
Fujitsu BPM Cloud [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=kswenson.wordpress.com&amp;blog=190929&amp;post=671&amp;subd=kswenson&amp;ref=&amp;feed=1&quot;/&gt;</description>
         <guid isPermaLink="false">http://kswenson.wordpress.com/?p=671</guid>
         <pubDate>Thu, 19 Nov 2009 18:09:17 -0800</pubDate>
         <content:encoded><![CDATA[<div class='snap_preview'><br /><p>Fujitsu made a couple of press releases last week, announcing two things: a new release of Interstage BPM, Version 11, and our Cloud BPM offering. This post just contains links to articles on the subject of these announcements.</p>
<ul>
<li><a rel="nofollow" target="_blank" href="http://www.column2.com/2009/11/fujitsu-interstage-bpm-v11/">Product Review: Interstage BPM V11</a> &#8211; Column 2</li>
<li><a rel="nofollow" target="_blank" href="http://www.column2.com/2009/11/fujitsu-interstage-bpm-in-the-cloud/">Fujitsu Interstage BPM in the Cloud</a> &#8211; Column 2</li>
<li><a rel="nofollow" target="_blank" href="http://www.channelinsider.com/c/a/Cloud-Computing/Fujitsu-BPM-Cloud-Challenges-IBM-Oracle-401162/">Fujitsu BPM Cloud Challenges IBM, Oracle in Cloud Computing</a> &#8211; Channel Insider</li>
<li><a rel="nofollow" target="_blank" href="http://searchsoa.techtarget.com/news/article/0,289142,sid26_gci1373879,00.html">Fujitsu fields BPM on cloud computing platform</a> &#8211; Search SOA</li>
<li><a rel="nofollow" target="_blank" href="http://esj.com/articles/2009/11/09/fujitsu-enhanced-cloud.aspx">Fujitsu Announces Free Access to Enhanced Cloud BPM Platform</a> &#8211; Enterprise Systems</li>
<li><a rel="nofollow" target="_blank" href="http://www.ctoedge.com/content/fujitsu-cracks-bpm-auto-discovery-code">Fujitsu Cracks BPM Auto Discovery Code</a> &#8211; CTO Edge</li>
<li><a rel="nofollow" target="_blank" href="http://www.itbusinessedge.com/cm/blogs/vizard/auto-discovery-comes-to-bpm/?cs=37324">Auto-Discovery Comes to BPM</a> &#8211; IT Business Edge</li>
<li><a rel="nofollow" target="_blank" href="http://www.cbronline.com/news/fujitsu_releases_new_version_of_interstage_bpm_091109">Fujitsu releases new version of Interstage BPM Captures hybrid collaborative process patterns</a> &#8211; CBR</li>
<li><a rel="nofollow" target="_blank" href="http://soa.sys-con.com/node/1177177">Fujitsu Interstage BPM Version 11, Lets Businesses Proactively &#8220;Sense and Respond&#8221; to Change</a> &#8211; SOA World</li>
<li><a rel="nofollow" target="_blank" href="http://www.ebizq.net/news/11878.html">Fujitsu Announces Free Access to its Enhanced Cloud BPM Platform for Solution Providers and Enterprise Teams</a> &#8211; EBizQ</li>
<li><a rel="nofollow" target="_blank" href="http://searchcio-midmarket.techtarget.com/tip/0,289483,sid183_gci1374184,00.html">Process intelligence tools reduce guesswork, increase payout of BPM</a> &#8211; Search CIO Midmarket</li>
<li><a rel="nofollow" target="_blank" href="http://searchcio-midmarket.techtarget.com/tip/0,289483,sid183_gci1374184,00.html">Process intelligence tools reduce guesswork, increase payout of BPM</a> &#8211; a writeup on the use of Process Discovery at ESI.</li>
</ul>
<p>While there are many small features in the Version 11 release, the two main ones are a significantly extended capabilities in Dynamic BPM and extended tenant management capabilities. The latter feature helps to support the extended cloud BPM offering which includes a complete BPM design, development, and run-time capability which is free for small teams.</p> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/kswenson.wordpress.com/671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kswenson.wordpress.com/671/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/kswenson.wordpress.com/671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kswenson.wordpress.com/671/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/kswenson.wordpress.com/671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kswenson.wordpress.com/671/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/kswenson.wordpress.com/671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kswenson.wordpress.com/671/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/kswenson.wordpress.com/671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kswenson.wordpress.com/671/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kswenson.wordpress.com&blog=190929&post=671&subd=kswenson&ref=&feed=1"/></div>]]></content:encoded>
         <media:content url="http://1.gravatar.com/avatar/5c921b0a84b183a2dd884ce4adf73d88?s=96&amp;amp;d=identicon&amp;amp;r=G" medium="image">
            <media:title>kswenson</media:title>
         </media:content>
      </item>
      <item>
         <title>Errors &amp; Learning Opportunities</title>
         <link>http://kswenson.wordpress.com/2009/11/12/errors-learning-opportunities/</link>
         <description>This button in this situation produces an error report &amp;#8230; therefor the button should be disabled.
I question this line of reasoning. I have observed this reasoning used at all levels, from programmers, to UI designers, to Product managers, and even to customers (users) themselves. The goal seems to be &amp;#8220;protect the user from error messages&amp;#8221;. [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=kswenson.wordpress.com&amp;blog=190929&amp;post=662&amp;subd=kswenson&amp;ref=&amp;feed=1&quot;/&gt;</description>
         <guid isPermaLink="false">http://kswenson.wordpress.com/?p=662</guid>
         <pubDate>Thu, 12 Nov 2009 10:11:53 -0800</pubDate>
         <content:encoded><![CDATA[<div class='snap_preview'><br /><blockquote><p>This button in this situation produces an error report &#8230; therefor the button should be disabled.</p></blockquote>
<p>I question this line of reasoning. I have observed this reasoning used at all levels, from programmers, to UI designers, to Product managers, and even to customers (users) themselves. The goal seems to be &#8220;protect the user from error messages&#8221;. Some people naively think <span id="more-662"></span>that a perfect user interface is one in which the user never sees an error message.</p>
<p>&#8220;Good usability&#8221; means that a user can use a product without requiring significant training. It should be expert friendly as well as novice friendly. This means that the product itself helps to train the novice user. <strong>An error message is an opportunity to learn.</strong></p>
<p>Intelligent people learn from mistakes. My dad used to say that &#8220;if you are not making mistakes you are not learning anything.&#8221; Imagine, if you can, a school designed around the idea of preventing students from making mistakes. Imagine a math teacher who instead of grading a test, would correct all the mistakes or otherwise <em>prevent</em> students from having incorrect answers. Clearly, the student would learn very little. Students who already knew all the concepts would do fine, but those attending to pick up concepts would be out of luck. It would be &#8220;expert friendly&#8221; but not &#8220;novice friendly&#8221;. Allowing students to make mistakes (safely) and learn from them is a widely accepted pedagogical principle.</p>
<p>How odd it is that many software designers attempt to eliminate the occurrence of error reports. Error messages are assumed to be &#8220;bad&#8221;. Usually it is explained: &#8220;the user should not have to see an error message.&#8221; So they disable controls. I have covered this in the past with posts <a rel="nofollow" target="_blank" href="http://kswenson.wordpress.com/2006/08/19/please-dont-disable-my-menu-options/">Please Don’t Disable My Menu Options!</a> and <a rel="nofollow" target="_blank" href="http://kswenson.wordpress.com/2007/10/02/89/">More on Disabling UI Controls</a>. Because of this misguided design principle, the user interface is not as good at training new users. It seems that such software is designed to be &#8220;expert friendly&#8221; but not &#8220;novice friendly&#8221;.</p>
<p>In defense of these people, many software packages have extremely poor error reporting interfaces. Often the software &#8220;accuses&#8221; the person of making a mistake, blaming them for doing something wrong. This makes error reports unnecessarily distasteful.</p>
<p><strong>An error message should instead be presented as an opportunity to learn something about the program. </strong>Like any good tutor, the information is presented at the time that you need it, at the time that you try a particular approach. The error message should contain useful information about why that particular action was not applicable at the moment. From this, the user would learn about the software, learn what was possible, and what is not possible.</p>
<p>Instead of trying to &#8220;protect&#8221; the user from error messages, we should be aiming for the exact opposite extreme: copious error messages. Instead of disabling actions, the actions should be enabled, and should explain why that action might not be used at that moment, and when it can be used. It is harder to make this kind of user interface, but worth it. It is far more novice friendly because it helps them learn the product as they use it.</p> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/kswenson.wordpress.com/662/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kswenson.wordpress.com/662/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/kswenson.wordpress.com/662/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kswenson.wordpress.com/662/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/kswenson.wordpress.com/662/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kswenson.wordpress.com/662/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/kswenson.wordpress.com/662/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kswenson.wordpress.com/662/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/kswenson.wordpress.com/662/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kswenson.wordpress.com/662/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kswenson.wordpress.com&blog=190929&post=662&subd=kswenson&ref=&feed=1"/></div>]]></content:encoded>
         <media:content url="http://1.gravatar.com/avatar/5c921b0a84b183a2dd884ce4adf73d88?s=96&amp;amp;d=identicon&amp;amp;r=G" medium="image">
            <media:title>kswenson</media:title>
         </media:content>
      </item>
      <item>
         <title>Taiichi Ohno Reinterpreted</title>
         <link>http://kswenson.wordpress.com/2009/10/24/taiichi-ohno-reinterpreted/</link>
         <description>Taiichi Ohno is credited with the creation of the Toyota just-in-time production system, and his book &amp;#8220;Toyota Production System: Beyond Large Scale Production&amp;#8221; is a surprisingly good read even today when many of these principles are considered well established.
My interest was in understanding how this philosophy applies to Agile/Lean Software Development. I was pointed this [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=kswenson.wordpress.com&amp;blog=190929&amp;post=642&amp;subd=kswenson&amp;ref=&amp;feed=1&quot;/&gt;</description>
         <guid isPermaLink="false">http://kswenson.wordpress.com/?p=642</guid>
         <pubDate>Sat, 24 Oct 2009 17:18:29 -0700</pubDate>
         <content:encoded><![CDATA[<div class='snap_preview'><br /><p>Taiichi Ohno is credited with the creation of the Toyota just-in-time production system, and his book &#8220;Toyota Production System: Beyond Large Scale Production&#8221; is a surprisingly good read even today when many of these principles are considered well established.</p>
<p>My interest was in understanding how this philosophy applies to Agile/Lean Software Development. <span id="more-642"></span> I was pointed this way by <a rel="nofollow" target="_blank" href="http://www.poppendieck.com/ld.htm">Tom and Mary Poppendieck&#8217;s</a> excellent book on the same subject, as well as an insightful paper from Fujitsu on the subject of <a rel="nofollow" target="_blank" href="http://sciencelinks.jp/j-east/article/200706/000020070607A0159269.php">Innovation in Software Development Process by Introducing Toyota Production System</a> (<a rel="nofollow" target="_blank" href="http://www.fujitsu.com/downloads/MAG/vol43-1/paper16.pdf">pdf</a>). As I am reading I am surprised at how perfectly the advice from Mr. Ohno fits to the advice I would give to a software team for Lean/Agile software development</p>
<h2>Mapping Concepts to Software</h2>
<p>Before the advice applies, you need to understand how software maps to 20th century automobile manufacturing. Ohno&#8217;s central theme is to eliminate waste.</p>
<p>One form of waste is the consuming of parts (which cost money) into incomplete products (which can not be sold yet). The most wasteful form of mass productions would be one where you build 1000 car chassis, then you put 4000 wheels on them, then you put 1000 engines in them. All the time you have this inventory of 1000 incomplete cars until they are finally finished. He would prefer that there be only a single incomplete car at a time. The reality is that it takes time to put the parts together, and so there is an assembly line with a number of cars being worked on at the same time, and the real goal is a very steady even stream of not only the finished cars, but also all the parts flowing into the process. The total accumulation of incomplete cars, as well as the accumulation of incomplete parts, adds to the amount of waste, and should be eliminated to the degree possible. If you have a significant amount of over production, then there is additional waste from the need to store the extra parts and handle them multiple times.</p>
<p>For software, the bytes that form the lines of code cost nothing. You should not think of lines of code as being the parts of the system, and you should not think about the source code as being the output of the process. This focus on the source code as the &#8220;product&#8221; is one of the biggest misconception in the software industry. Reality is less tangible. The &#8220;parts&#8221; that are consumed are simply the &#8220;person-hours&#8221; that are invested in discovering and developing a feature. This includes time from not only programmers, but all the various roles on the team. The output is best described as &#8220;satisfied customers&#8221;. While slightly inaccurate, this phase is meant to remind us that it is not enough to burn a CD with the program on it, but the final sale is for installed software which is successfully used to solve customer problems. If you have done the job right, they will be &#8220;satisfied&#8221;.</p>
<p>Just as in a car factory, you do not want to build 1000 cars in parallel, similarly in software you do not want to create 1000 features in parallel. As you start to build a car, the waste builds as you add more and more parts, but the waste disappears when the car is completed and ready for shipment. The uncompleted cars are a liability on the organization, and building cars in parallel multiplies the amount of waste. Similarly, once your start designing a feature, and start investing person-hours, the waste builds in direct proportion. Finally, when the new feature is actually in a &#8220;customer-ready&#8221; shape, that waste disappears. The started-but-uncompleted features are a liability. Features designed but not coded is a waste of time. Code that is written but not tested is a real liability because there is now a hidden amount of work that must be done to correct problems in the coding. Completed features in the code, but can not be installed are still a waste. Building a bunch of features in parallel multiplies the waste.</p>
<p>Careful readers will notice that the above discussion is slightly simplified. Even a perfect factory would have cars in an incomplete state, and a perfect software team would have some feature in an incomplete state. It is wrong to call all items in transit &#8220;waste&#8221;, rather it is waste only if it is more than the minimum necessary. We want to minimize the number of incomplete features, not eliminate them entirely.</p>
<p>While you can envision a software development team as a factory that produces &#8220;features&#8221;, you need to be very careful. When building 1000 cars/day, all of the various steps are highly repeatable. The time for each step can be measured to a high precision, and the exact costs of parts can be predicted. For software development no such predictability exists. You start a software feature with no reliable estimate of the cost. This does not change the goal of elimination of waste. Even though you don&#8217;t know ahead of time the amount of waste, it still makes sense to runs thing in such a way as to minimize waste in whatever amount occurs.</p>
<h2>Quotes from the Book</h2>
<p>Understanding the mapping, we can now take quotes directly from the book (including page numbers), and translate them in to meaning for software development teams.</p>
<blockquote><p>The loom stopped instantly if any one of the warp or weft threads broke. Because a device that could distinguish between normal and abnormal conditions was build into the machine, defective products were not produced. &#8211; p6</p></blockquote>
<p>Automated testing and continuous testing are a central pillar of Agile development. Ohno is talking here about looms that were perfected by Toyoda Sakichi from 1910 to 1926. Amazing that the concept of continuous automated tests was in use a century ago.</p>
<blockquote><p>Stopping the machine when there is trouble forces awareness on everyone. &#8211; p7</p></blockquote>
<p>When a test fails, a software team should drop whatever it is doing and address the problem of the test. This does force awareness on everyone.</p>
<blockquote><p>&#8230;the workers themselves should push the stop button to halt production if any abnormality appears. &#8211; p7</p></blockquote>
<p>Stopping a production line is expensive, but here we see that Ohno understand that the expense of an unfixed problem is far greater. The biggest enemy of software quality is ignoring test failures. Once I joined a team where the building of the product produced thousands of warnings from the compiler. The developers felt that warnings were harmless, but they are not. First thing I had them do was fix the code that caused the harmless warnings, so we could then see if any important warnings came out. Allowing anyone to check in source with a broken test propagates those broken tests, and that causes a blindness to the real problems in the code.</p>
<blockquote><p>Repeating <em>why</em> five times, like this, can help uncover the root of the problem and correct it. -p17</p></blockquote>
<p>So much of software is written to get around problems at other layers of software. Code bases often seem like a huge elaborate house of cards. Compensating code is distributed throughout to hold it together. One should ask: &#8220;why is that routine written this way&#8221;, &#8220;why does that support routine return this result&#8221;, &#8220;why is this value needed&#8221;, etc. Addressing the problem at the lowest level will eliminate the need to multiple copies of the compensating code, and usually reduce the potential for bugs.</p>
<blockquote><p>We regard only work that is needed as real work, and define the rest as waste. &#8230; we must make only the amount needed. -p19</p></blockquote>
<p>Here Ohno explains an important concept that overproduction is waste as well. Well known in software methodology as <a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/YAGNI">YAGNI</a>. Don&#8217;t implement anything until you need it for an actual end-user use case. Contrary to this, programmers often pride themselves on &#8220;complete&#8221; implementations of interior object classes, commonly adding a host of getters and setters which are not (yet) needed by anyone, but they anticipate will be needed at some time in the future. This additional coding is precisely the kind of overproduction that Ohno is speaking of: not only does it waste the programmer&#8217;s time to implement it, but the excess lines of code increase the code review and maintenance burden in the way exactly analogous to the need to store the extra parts in a car factory.</p>
<blockquote><p>I used to tell production workers one of my favorite stories about a boat rowed by eight men. One rower might feel he is stronger than the next and row twice as hard. This extra effort upsets the boat&#8217;s process and moves it off course. -p24</p></blockquote>
<p>Lessons on teamwork are always useful, and this points out the danger of measuring anything intermediate to &#8220;customer satisfaction&#8221;. The goal in rowing is to get the entire boat to the end line as quickly as possible, and a focus on anything else, such as individual force on the oar can distract from this goal. In software, getting a workable feature to the final customer is the goal, and measuring anything else, such a number of lines produced, or bugs found at a particular phase, can distort the process in unacceptable directions.</p>
<blockquote><p>The operating method of the Toyota production system is kanban. This piece of paper carries information that be divided into three categories: (1) pickup information, (2) transfer information, and (3) production information. -p27</p></blockquote>
<p>Kanban was a way of decentralizing the control of production. The factory is oriented on pull-based production, and the kanban is a way to communicate the detailed need for production, in order to avoid over (or under) production. The kanban might be considered to be analogous to storycards that are used to communicate details of a customer use case. This is only the top level, because kanban is used to communicate within the factory within any producing/consuming relationship, and for the most part this is NOT done in a software team. Sometimes a bug report can be used to allow one team to make a request for enhancement on another team, and to track the progress. In this case the bug report is analogous to the kanban. But caution should be used in the analogy: remember that software parts are unpredictable by nature. The very regularity of car parts, and the known quantity and cost of the parts, makes it very easy to implement specific requests for production. In software, however, every part is unique and custom made for the situation, and so a much richer, more interactive discussion is needed. Kanban should not be implemented literally in a software development team to replace internal communications. Still, the idea that performance level is tuned according to the need to produce a given use case is very important.</p>
<blockquote><p>I have good reason for emphasizing the role of top management in discussing the first rule of kanban. &#8230;management commitment and strong support are essential to the successful application of this first rule. -p31</p></blockquote>
<p>Here he is talking about moving control of production from the central planners, and replacing that with the more &#8220;autonomic&#8221; method of Kanban. It is interesting to see how this must have been very uncomfortable for upper management to &#8220;trust&#8221; that the people on the floor would regulate things correctly. It is the same with moving software development to an agile approach, where individuals on the team self-organize to get the current sprint done. The waterfall approach gave more control to external authority, and also provided a better way to measure progress. Changing to a lean software approach means that this control and to some extent this ability to report progress is eliminated. This top management support is essential.</p>
<blockquote><p>Unless one completely grasps this method of doing work so that things will flow, it is impossible to go right into the kanban system when the time comes. -p33</p></blockquote>
<p>The key word here is &#8220;flow&#8221;. In a factory the flow of physical parts is paramount. In software, the flow of feature ideas is paramount. The flow of continual builds, and regular sprints, with customer quality code available at all times is the key. Stockpiling a huge number of features for implementation in an 8 month project is precisely like the mass production of cars that was beginning to show signs of inefficiency in the 60&#8217;s and 70&#8217;s. Mass production creates waste. Waste is eliminated by a steady flow of product releases, each quickly generated from the last. <strong>This is the central theme of the book, and it is the central theme of Lean Software Development.</strong></p>
<blockquote><p>In the beginning, everyone resisted kanban because is seemed to contradict conventional wisdom. &#8230; To make kanban understood throughout the company, we have to involve everyone. If the manager of the production department understood it while the workers did not, kanban would not have worked. -p35</p></blockquote>
<p>How interesting that Mr. Ohno had so much pushback. He admits else where that it was non-intuitive, but remember that conventional wisdom is based exclusively on what you used to do. We see the same with software method, including the need to include everyone. If you train part of a team on the method, you will surely fail, (and I have direct personal experience with this).</p>
<blockquote><p>While traditional planned mass-production system does not respond easily to change, the Toyota production system is very elastic and can take the difficult conditions imposed by diverse marked demands and digest them. &#8211; -p37</p></blockquote>
<p>This is the promise of Lean/Agile software development: the continuous flow of small features allows for much more rapid response to market changes. It is <em>ironic </em>that cars with all their physicality can be developed in an agile way, while software which due its lack of physicality aught to be easy to change, but is still developed with a waterfall model making it impervious to change.</p>
<blockquote><p>Production Leveling: It had been a long accepted production fact that continuous punching with one die in the press beings the cost down. It was considered common sense to product in the largest lots possible and punch continuously without stopping the press. -p38</p>
<p>In the 1940&#8217;s, Toyota&#8217;s die changes took two to three hours &#8230; By the late 1960s it was down to a mere three minutes. -p39</p></blockquote>
<p>The idea that large production runs can reduce cost is well established, and is exactly counter to the idea of producing only as many of a thing that you need. Not deterred by this, Toyota figured out how to eliminate much of the waste in small production runs. Ohno had faith that die changes could be made faster, and without that faith it would never have been accomplished.</p>
<p>The same thinking perpetuates waterfall software development: the established <em>&#8220;fact&#8221; </em>that there is overhead in checking in and testing code, therefor, if you have to touch the code you should implement as many features at once as possible. If you have the orientation that testing is long and difficult, and you do it only once a quarter, then the idea of doing it once a day is simply impossible to consider, and quick development sprints equally impossible. However, if you understand the advantage of continuous flow of features, then you automate your tests, and make them so you can run them every day. If you have faith that tests can be automated and run quickly, then you have a chance of realizing this potential.</p>
<blockquote><p>To ensure that we have 100% defect-free products, we must set up a syste that automatically informs us if any process generates defective products -p41</p></blockquote>
<p>Automated testing, continuous builds, with automated runs of tests. Require each programmer to run the tests before checking in, don&#8217;t check in if the test does not run. This is Agile/Lean software development, and Ohno is telling us about it in the 70&#8217;s.</p>
<blockquote><p>Rule three of kanban prohibits picking up or producing goods without a kanban. Overproduction is automatically checked, even if someone wants to make more. -p43</p></blockquote>
<p>If software is developed only to meed the needs of a specific use case, and the use case is attached to the check in, we will eliminate over coding of things not needed for the use case.</p>
<blockquote><p>If one sticks to the idea that, once set, a plan should not be changed, a business cannot exist for long. Sticking to a plan once it is set up is like putting the human body in a cast. It is not healthy. -p46</p></blockquote>
<p>This puts a dagger in the heart of the idea that plans should be perfectly formed ahead of time, and this is particularly true in software where nothing is predictable. Instead, a lean/agile approach to software allows plans to be flexible over time. Very important, and an idea I frankly did not expect to come from a car manufacturing giant.</p>
<blockquote><p>The plant should be a place where such judgments can be made by workers autonomously. -p45</p></blockquote>
<p>Again a common theme in lean/agile software development approaches, but not what I expected to hear from a manufacturing giant. In this case he describes the business organization as having an &#8220;Autonomic Nervous System&#8221;.</p>
<blockquote><p>Similarly we want information only when we need it. Too much information induces us to procese ahead, and can cause mix-up in sequence. In business, excess information must be suppressed. -p50</p></blockquote>
<p>The kanban allows the information to be carried with the products/parts, one of the reasons why kanban works. It is interesting to see the bias against too much information. He talks about automatic fine tuning in this quote:</p>
<blockquote><p>as long as we cannot accurately predict the future, our actions should change to suit changing situations. -p52</p></blockquote>
<p>Again we see flexibility and adaptibility as a core value, the antithesis of putting together a perfect plan and then executing long term against that plan. Instead, adapt as you go along.</p>
<blockquote><p>In any manufacturing situation, we frequently see people working ahead. Instead of waiting, the worker works on the next job, so the waiting is hidden. If this situation is repeated, inventory begins to accumulate at the end of the production line or between lines. -p59</p></blockquote>
<p>Here we touch upon a very pernicious area of waste in software products. If the schedule is relatively fixed, when a programmer finds that an implementation went well and they get done early, they often turn to implementing an extra pet project they have been intending to implement. It is routine for development team to report to product management that few extra features have been included &#8220;for free&#8221;. The worst cases of these I have seen have actually caused delays in the product because once implemented we found flaws in the approach, but it was too much work to pull out the functionality, so instead extra work went into fixing it. Extra work is not extra value, it is instead increased waste.</p>
<blockquote><p>Making large lots of a single part &#8212; that is, punching out a large quantity of parts without a die change &#8212; is a common sense production rule even today. &#8230; The Toyota system takes the reverse course. Our production slogan is &#8220;small lot sized and quick setups.&#8221; -p95</p></blockquote>
<p>In this chapter he compares Ford production system to Toyota system in order to emphasize the differences. The parallel of the Ford system to waterfall software method is strong, while the Toyota system is like Lean/Agile software development. The biggest single driver of continued use of waterfall is the idea that creating a bunch of features at once will reduce overall cost. There is a feeling that there is an &#8220;overhead&#8221; to the cycle that can not be avoided, and therefor do as much in a single cycle is the most efficient way. Toyota&#8217;s concept of flow and production leveling is just as radical as the idea of continuous builds and fast sprint feature cycles. Both are are not intuitive, and have to be seen to believe that it is possible. It should be obvious, however, that large lot sizes will make changing the product more difficult and maybe nearly impossible. Thus it is the method of manufacturing that causes the inability to respond.</p>
<blockquote><p>For automation to be effective, we must implement a system in which the machines sense the occurrence of an abnormality and stop themselves. In other words, we must give the automated machines a human touch &#8212; enough intelligence to make them autonomated and achieve &#8220;worker saving&#8221; rather than &#8220;labor saving&#8221;. -p113</p></blockquote>
<p>In software development, of course, machines are replaced with automated script and programming that does steps of the process, and these must include tests at every step. Ohno&#8217;s statement here is strong: the automation without the sensing causes more waste than it is worth. Thus tests built into the automated process, or possibly into the product itself, becomes most important in automating builds and steps in the software cycle.</p>
<h2>Conclusions</h2>
<p>In 117 pages he sets out a clear description of how Toyota has accomplished the climb to be the world&#8217;s biggest car maker, and is a <em>must read</em> for anyone interested in industrial production strategy.</p>
<p>Then, if you understand the mapping to software development, you find that he sets out an equally clear description for Lean/Agile software development. If Ohno was alive today, I am convinced he would have been an eloquent proponent for developing software in short iterations, with continuous builds, continuous testing, immediate response to build breakage, and guided by feature burn-down. In other words, a proponent of Agile Software Development.</p> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/kswenson.wordpress.com/642/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kswenson.wordpress.com/642/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/kswenson.wordpress.com/642/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kswenson.wordpress.com/642/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/kswenson.wordpress.com/642/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kswenson.wordpress.com/642/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/kswenson.wordpress.com/642/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kswenson.wordpress.com/642/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/kswenson.wordpress.com/642/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kswenson.wordpress.com/642/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kswenson.wordpress.com&blog=190929&post=642&subd=kswenson&ref=&feed=1"/></div>]]></content:encoded>
         <media:content url="http://1.gravatar.com/avatar/5c921b0a84b183a2dd884ce4adf73d88?s=96&amp;amp;d=identicon&amp;amp;r=G" medium="image">
            <media:title>kswenson</media:title>
         </media:content>
      </item>
      <item>
         <title>Putting Your Toys Away</title>
         <link>http://kswenson.wordpress.com/2009/10/20/putting-your-toys-away/</link>
         <description>You know that book on how everything important is learned in Kindergarten? Along that same line, before I got into Kindergarten, my mother taught me to that if I put my toys away, I will be able to find them again later. I am sure there was a lot of crying and whining involved, but [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=kswenson.wordpress.com&amp;blog=190929&amp;post=636&amp;subd=kswenson&amp;ref=&amp;feed=1&quot;/&gt;</description>
         <guid isPermaLink="false">http://kswenson.wordpress.com/?p=636</guid>
         <pubDate>Tue, 20 Oct 2009 11:02:03 -0700</pubDate>
         <content:encoded><![CDATA[<div class='snap_preview'><br /><p>You know that book on how everything important is learned in Kindergarten? Along that same line, before I got into Kindergarten, my mother taught me to that if I put my toys away, I will be able to find them again later. I am sure there was a lot of crying and whining involved, but like most people I eventually got the point.</p>
<p>Fast forward to the adult world. How many times have you heard these questions:</p>
<ul>
<li>Where is the latest spreadsheet?</li>
<li>Does this document have the latest changes in it?</li>
<li>Are your changes in this document?</li>
<li>Can you send the copy of the file that contains all the latest updates?</li>
</ul>
<p>This situation is caused by the worst scourge of our time: the addiction to email. <span id="more-636"></span> Specifically the attempt to use email as a document management system.</p>
<p>The solution is so simple: find a place to put the document, where everyone can access it. Put it there, and always update it there. If you always get the document from there you will always have the latest copy. If the always put updates there, everyone else will always get the change. This is so obvious that I am sure most of you reading this will feel slightly insulted that I am spelling it out in such detail.</p>
<p><strong>Why is it then so difficult to teach people this behavior?</strong></p>
<p><em>Part of it is simply short sighted thinking</em>: it takes extra effort to put your toys away, and the benefit of putting them away might be a long time from now (like tomorrow). Just like it is easier to leave your toys sitting in the middle of the room, when someone requests a document, it is simply easier to just email it to them. Attach it as an attachment, and off it goes, problem solved &#8230; for the moment. It takes quite a bit longer view to realize that (1) others may come back and request the document again, and (2) even that person is going to in the future want updated versions. Why put out extra effort now, in order to save that work which will come in the future (like tomorrow).</p>
<p><em>Some of it is blindness to the dynamics</em>: documents change over time, but for some reason we always act as this version I am sending now is the final version never to be modified again. I laugh every time I see a document with a title that includes &#8220;FINAL&#8221; in the name. It is even funnier when the title has multiple repetitions of FINAL. How does this blind spot persist when at the same time we all have such difficulty locating the &#8220;updated&#8221; copy.</p>
<p><em>Some of it is selfishness</em>: I received an email this week from the finance department detailing exactly how to handle a particular kind of financial transaction. From the detail of the procedure involved, it was obvious that the entire company was not expected to memorize the exact procedure. They apparently expected everyone in the company to carefully file this important information away in a place that you can find it if the need ever arises. Instead of taking the time to organize the information in a single place where everyone can get it, they push this task out to everyone in the company. Multiplying the real effort to the company by many fold. Clearly it would be better for everyone to integrate this into a corporate knowledge base, organized so I can find it if I needed, at that time that I need it. But that kind of foresighted thinking is rare when it is just so easy to send an email.</p>
<p><strong>First Step is Acknowledgment of the Problem</strong></p>
<p>Let say that everyone realizes that email attachments are the problem, what can we use instead. There are some problems with current document management systems (DMS).</p>
<p><em>Access</em> : I can send an email to whomever I want, and attach the document. But putting a document into a DMS, how can I guarantee that the intended recipient can access the document? Most internal corporate networks have become byzantine mazes as the result of attempt to control who can access what through the use of blocking certain addresses at certain routers. I have heard this complaint from many people at many organizations. The blocks are put into place in the name of safety, and getting thing unblocked is nearly impossible since it is virtually impossible to prove that such a change is still safe. Desktop computer A is cut off from desktop computer B because a virus might propogate along that path. How can you prove that virus will not? You can&#8217;t.</p>
<p><em>Access Control</em>: If you are lucky enough to find a DMS that everyone can access, how do you make sure that only the intended recipient(s) can access it? All DMS have fine grained access control, but it is usually a large amount of trouble to change it because of the detail that you have to work at. Addressing an email message is easy, especially if you use &#8220;Reply&#8221;. Assigning users to access a document is easy, but there is no analog to &#8220;reply&#8221;. Few DMS offer a way for people to request a document from those who own it. Most DMS don&#8217;t even allow people to be aware of documents they don&#8217;t have access to, which would be necessary to make the request in the first place.</p>
<p>Transitive Access Control: If I send a document to Joe, he can forward it to Mary. If I give right to Joe to access a document, most DMS systems will NOT allow Joe to give access to Mary. It wouldn&#8217;t be &#8220;control&#8221; otherwise, would it? But to allow a DMS to replace email, this is exactly what is needed. In the <a rel="nofollow" target="_blank" href="http://wiki.600building.com/nugen/">Process Leaves</a> system, we implemented such ability to &#8220;forward&#8221; the rights to another person, but most users find this so surprising and unexpected that they never use it.</p>
<p>The solution is to make a shared &#8220;room&#8221; where all the toys can be shared equally within a group. That is the solution that many approaches have taken, and it is not difficult. But someone still has to set up the room in advance, in anticipation of the need to share, and most people will not take this step. It is just easier to send the documents as an attachment and force the work onto everyone else. In groups that I work with, even making the room available to people, they rarely get used.</p>
<p><em>Any ideas on how to break the email addiction?</em> Any tricks you know of in getting people to use &#8220;places&#8221; to put documents? I made a similar plea last year in &#8220;<a rel="nofollow" target="_blank" href="http://kswenson.wordpress.com/2008/09/18/page-first-then-e-mail-please/">Page First, Then E-Mail, Please</a>&#8221; about the email message itself. Otherwise, I am afraid, it is a bit like teaching teenagers the benefits of a tidy room &#8212; in other-words: a lost cause.</p> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/kswenson.wordpress.com/636/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kswenson.wordpress.com/636/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/kswenson.wordpress.com/636/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kswenson.wordpress.com/636/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/kswenson.wordpress.com/636/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kswenson.wordpress.com/636/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/kswenson.wordpress.com/636/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kswenson.wordpress.com/636/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/kswenson.wordpress.com/636/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kswenson.wordpress.com/636/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kswenson.wordpress.com&blog=190929&post=636&subd=kswenson&ref=&feed=1"/></div>]]></content:encoded>
         <media:content url="http://1.gravatar.com/avatar/5c921b0a84b183a2dd884ce4adf73d88?s=96&amp;amp;d=identicon&amp;amp;r=G" medium="image">
            <media:title>kswenson</media:title>
         </media:content>
      </item>
      <item>
         <title>Process Improvement: Informed &amp; Lean</title>
         <link>http://kswenson.wordpress.com/2009/10/15/process-improvement-informed-lean/</link>
         <description>I could call this post &amp;#8220;Removing the Risk from Lean Process Improvement&amp;#8221; because it starts with the assumption that you want to improve your processes using Lean principles, but you want guidance on how to apply those principles most effectively.
Soooo much discussion of Lean last week at the Forrester Forum and the Gartner BPM Summit. [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=kswenson.wordpress.com&amp;blog=190929&amp;post=628&amp;subd=kswenson&amp;ref=&amp;feed=1&quot;/&gt;</description>
         <guid isPermaLink="false">http://kswenson.wordpress.com/?p=628</guid>
         <pubDate>Thu, 15 Oct 2009 13:55:32 -0700</pubDate>
         <content:encoded><![CDATA[<div class='snap_preview'><br /><p>I could call this post &#8220;<strong>Removing the Risk from Lean Process Improvement</strong>&#8221; because it starts with the assumption that you want to improve your processes using Lean principles, but you want guidance on how to apply those principles most effectively.</p>
<p>Soooo much discussion of <a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Lean_manufacturing">Lean</a> last week at the Forrester Forum and the Gartner BPM Summit. Who can argue against Lean? It is after all a focus on providing more value with less waste. Lean is a focus on eliminating waste, the original sevens wastes identified by Toyota, as well as elimination of anything that does not provide value to the customer. We all want to get rid of waste and inefficiency.</p>
<p><em>How do you identify the waste in your business process?</em> This is harder than you might think. <span id="more-628"></span>Sure, you probably have many <em>anecdotes </em>about cases that went terribly wrong, but how much did that really cost? How common is it? After all, one extreme case does not signify a trend. What you need is a <em>quantitative measure</em> of how much your current process inefficiencies are costing you.</p>
<p>This is exactly what <a rel="nofollow" target="_blank" href="http://esi.com">Electro Scientific Industries, Inc</a>. (ESI) wanted to do. They knew they had process inefficiencies for two reasons: they were having inventory problems and they were having a hard time responding quickly to customers. But what was causing this? ESI embarked on a Process Mining exercise using <a rel="nofollow" target="_blank" href="http://www.fujitsu.com/global/services/software/interstage/abpd/">Fujitsu&#8217;s Automated Process Discovery</a>. What they found astounded them. What they expected to be a 5 to 7 step process, with maybe a dozen variant paths, turned out to be far more complex in reality. They analyzed 12,000 cases that had occurred in the past 3 years, and they found 1300 distinct process paths. They found actual evidence for hundreds of cases of severe repetition, including one case where the order was changed 120 times! They were able to identify errant paths, and tell precisely how many cases had gone that way. They found specific process steps with unusually long average transition time, and could measure exactly how many cases were effected by this. All of this information was pulled out of their existing SAP system without the need to install any new software in their environment.</p>
<p><em>This is exactly what you need for a Lean Process Improvement project.</em> Greg Mueller who headed up the project at ESI, was able to show precise measures of the cost of process inefficiency to upper management. This resulted in ample support for initiatives to fix them. Peter Schooff did a <a rel="nofollow" target="_blank" href="http://www.ebizq.net/blogs/bpminaction/2009/10/how_automated_process_discover.php">podcast</a> with Greg on exactly how they went about this. As Greg says: &#8220;Process Discovery found 17 different ways to eliminated waste from their business process, any one of which would have more than made up for the effort of doing the discovery.&#8221; Also, see the<a rel="nofollow" target="_blank" href="http://www.column2.com/2009/10/fujitsu-process-discovery-case-study-gartnerbpm/"></a><a rel="nofollow" target="_blank" href="http://www.column2.com/2009/10/fujitsu-process-discovery-case-study-gartnerbpm/"> blog post from </a>Sandy Kemsley covering this use case.</p>
<p>Being able to get precise measures of waste that can be eliminated is critical, even more amazing is how quickly this evidence can be gathered. Some of the most important evidence was exposed on the second day of investigation. The data gathering was completed in the first two days. Analysis continued with what is best described as a &#8220;learning&#8221; phase: gaining a better and better understanding of what was really going on in the organization. The team would slice the hypercube different ways, isolating teams from each other to discover process patterns in different offices or for different situations. That data collection is still available today for immediate access so that when someone comes up with an innovative idea to eliminate waste, they can go back to the historical data and estimate the amount of savings that will generate. The analysis never ends, but within two weeks they were able to identify 17 specific projects to eliminate waste from the business process, along with evidence based estimates of the savings to be made.</p>
<p><em>For those of you planning Lean Process Improvement projects</em>, visualize sitting there, one week from today, with specific evidence based assessments of where your biggest process inefficiencies were, and how much they were costing you? How much would that be worth? Would that help you get funding and support for your project? Sure it would. You owe it to yourself to at least investigate what a process mining session might be able to do.</p>
<p>Fujitsu has been offering this service for about a year. The biggest barrier is that is it just so hard to believe that the results are possible. It seems too good to be true. I admit, if I had not seen the results myself, I would be skeptical. But I have seen the results (<a rel="nofollow" target="_blank" href="http://solutions.us.fujitsu.com/www/content/aboutus/casestudies/index.php">1</a>, <a rel="nofollow" target="_blank" href="http://www.sap.com/community/showdetail.epx?ItemID=17872">2</a>) which are nothing short of amazing. Anyone considering process improvement will be wise to <a rel="nofollow" target="_blank" href="http://www.fujitsu.com/global/services/software/interstage/download/Forrester-Learn-Webinar-2009May-QA.html">learn about them</a> as well. <em> Informing yourself up-front with quantitative measures of the waste in your current processes, will eliminate much of the risk in a Lean Business Process Improvement program</em>.</p> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/kswenson.wordpress.com/628/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kswenson.wordpress.com/628/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/kswenson.wordpress.com/628/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kswenson.wordpress.com/628/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/kswenson.wordpress.com/628/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kswenson.wordpress.com/628/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/kswenson.wordpress.com/628/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kswenson.wordpress.com/628/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/kswenson.wordpress.com/628/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kswenson.wordpress.com/628/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kswenson.wordpress.com&blog=190929&post=628&subd=kswenson&ref=&feed=1"/></div>]]></content:encoded>
         <media:content url="http://1.gravatar.com/avatar/5c921b0a84b183a2dd884ce4adf73d88?s=96&amp;amp;d=identicon&amp;amp;r=G" medium="image">
            <media:title>kswenson</media:title>
         </media:content>
      </item>
      <item>
         <title>Human BPM vs. Case Management, Summit Nov 3</title>
         <link>http://kswenson.wordpress.com/2009/10/14/human-bpm-vs-case-management-summit-nov-3/</link>
         <description>There might be three distinct kinds of process support necessary:
1) System Centric Processes
2) Human Centric Processes
3) Knowledge Worker Processes
System centric processes are fairly well defined: it is a kind of software engineering for very complex distributed systems. These are designed to completely automate the information flow so that no person has to be involved.
Human Centric [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=kswenson.wordpress.com&amp;blog=190929&amp;post=624&amp;subd=kswenson&amp;ref=&amp;feed=1&quot;/&gt;</description>
         <guid isPermaLink="false">http://kswenson.wordpress.com/?p=624</guid>
         <pubDate>Wed, 14 Oct 2009 17:11:48 -0700</pubDate>
         <content:encoded><![CDATA[<div class='snap_preview'><br /><p>There might be three distinct kinds of process support necessary:</p>
<p>1) System Centric Processes<br />
2) Human Centric Processes<br />
3) Knowledge Worker Processes<span id="more-624"></span></p>
<p><strong>System centric processes</strong> are fairly well defined: it is a kind of software engineering for very complex distributed systems. These are designed to completely automate the information flow so that no person has to be involved.</p>
<p><strong>Human Centric Processes</strong> are those well defined processes which involve people. Since people are not &#8220;invoked&#8221; the way that software services are, there are a lot of extra capabilities that are needed in order to interface successfully with the asynchronous nature of personal interactions.</p>
<p>Are <strong>Knowledge Worker Processes</strong> distinct type of process, or just an extreme case? The unique thing about knowledge work is that it is unpredictable. Human Centric Processes can still be formal processes that are all predefined. Knowledge work, by it very nature, can not be predicted in advance. There is no fixed process for this kind of work. The work is &#8220;impromptu&#8221; in that the sequence of steps is figured out at the time that the work is done.</p>
<p>Some have called the technology to support knowledge workers &#8220;<a rel="nofollow" target="_blank" href="http://kswenson.wordpress.com/2009/09/23/what-is-case-management/">Case Management</a>&#8220;. Especially in the medical field where you have experts who examine the &#8220;case&#8221; (the collection of documents and reports compiled for a given case) and then decide what to do next. (See <a rel="nofollow" target="_blank" href="http://www.cmsa.org/">CSMA</a>.) Case management is also the name used in the legal field. See particularly work at <a rel="nofollow" target="_blank" href="http://www.ncsc.org/default.aspx">National Center for State Courts</a> which is promoting an idea of <a rel="nofollow" target="_blank" href="http://contentdm.ncsconline.org/cgi-bin/showfile.exe?CISOROOT=/tech&amp;CISOPTR=565">Configurable Case Management</a>. Some also call this area Dynamic BPM. Some call it &#8220;Unstructured BPM&#8221;. A better term might be Situational Process Management.</p>
<p>Where exactly is the boundary, if any, between Human Process and Knowledge Worker Process? Clearly KWP need extra support at run time to allow processes to proceed in ways that were not predicted in advance.</p>
<h2>Thought Leader Summit Workshop</h2>
<p>WfMC will be holding a Thought Leader Summit on this subject on Nov 3 in Maidenhead England. Please find additional information at:</p>
<p><a rel="nofollow" target="_blank" href="http://www.linkedin.com/redirect?url=http%3A%2F%2Fwfmc%2Eorg%2Fnovember-member-meeting%2Ehtml&amp;urlhash=NUMa&amp;_t=disc_detail_link">http://wfmc.org/november-member-meeting.html</a><br />
<a rel="nofollow" target="_blank" href="http://www.linkedin.com/redirect?url=http%3A%2F%2Fwww%2Expdl%2Eorg%2Fnugen%2Fp%2Flpqyjklyf%2Fpublic%2Ehtm&amp;urlhash=2Mi9&amp;_t=disc_detail_link">http://www.xpdl.org/nugen/p/lpqyjklyf/public.htm</a></p>
<p>The purpose of the workshop is to clarify the requirements of “the kind of process support which is needed in order to support knowledge workers”. What is and is not included in this kind of a product / technology? This is the essence of this discussion hosted by WfMC. Henk de Man from Cordys will be there. Dana Khoyi from Global 360 will be there. John Hoogland from Pallas Athena will be there. Max Pucher from Isis Papyrus will be there. Many other thought leaders including Justin Brunt, Nathaniel Palmer, Keith Swenson (myself), Robert Shapiro, are expected to attend in order to get to the bottom of this highly relevant issue.</p>
<p><strong>Goals: </strong>Determine <a rel="nofollow" target="_blank" href="http://kswenson.wordpress.com/2009/09/23/what-is-case-management/">the best name</a>; create a short and long definition of the capabilities; get agreement on a list of requirements that such technology must have to be considered in the category; draw up a &#8220;Reference Model&#8221; or &#8220;Notional Architecture&#8221; for the category; follow through with a site for market education. It is a tall order. To those coming: be prepared to roll up your sleeves. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley'/> </p>
<p>The summit will continue on Nov 4 with a workshop on BPMN 2.0 portability. Will BPMN diagrams be exchangeable between tools? Will BPMN 1.2 diagram be portable to BPMN 2.0? Answers to these questions will be worked on as a continuation of the fine work of the <a rel="nofollow" target="_blank" href="http://www.xpdl.org/nugen/p/gseonklyf/public.htm">BPMN 2.0 / XPDL 2.2 working group</a>. This group has already completed a proposed BPMN2.0 serialization schema, prototype transform from XPDL2.1 to proposed BPMN2.0 serialization, and prototype transform from BPMN2.0 serialization to XPDL2.1. This workshop will continue with discussions of BPMN 1.2 Status and use today, how fast people are migrating to 2.0, diagram interchange conformance classes, tools for validation, BPMN 2.0 Finalization Task Force Status, concerns over the direction, and other working group activities.</p> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/kswenson.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kswenson.wordpress.com/624/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/kswenson.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kswenson.wordpress.com/624/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/kswenson.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kswenson.wordpress.com/624/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/kswenson.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kswenson.wordpress.com/624/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/kswenson.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kswenson.wordpress.com/624/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kswenson.wordpress.com&blog=190929&post=624&subd=kswenson&ref=&feed=1"/></div>]]></content:encoded>
         <media:content url="http://1.gravatar.com/avatar/5c921b0a84b183a2dd884ce4adf73d88?s=96&amp;amp;d=identicon&amp;amp;r=G" medium="image">
            <media:title>kswenson</media:title>
         </media:content>
      </item>
      <item>
         <title>26 Hints for Agile Software Development</title>
         <link>http://kswenson.wordpress.com/2009/10/01/26-hints-for-agile-software-development/</link>
         <description>I collect nuggets of wisdom on various topics. Recently I have been going over the topic of Agile software development; what really matters? Below is a list of 26 key principles to guide an agile software development team. Get case 1 fully working before starting case 2. Another way of saying this to use a kitchen [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=kswenson.wordpress.com&amp;blog=190929&amp;post=616&amp;subd=kswenson&amp;ref=&amp;feed=1&quot;/&gt;</description>
         <guid isPermaLink="false">http://kswenson.wordpress.com/?p=616</guid>
         <pubDate>Thu, 01 Oct 2009 17:05:45 -0700</pubDate>
         <content:encoded><![CDATA[<div class='snap_preview'><br /><p>I collect nuggets of wisdom on various topics. Recently I have been going over the topic of Agile software development; what really matters? Below is a list of 26 key principles to guide an agile software development team.</p>
<ul>
<li><strong>Get case 1 fully working before starting case 2.</strong> Another way of saying this to use a kitchen metaphor is: &#8220;<em>Serve the current meal before starting to cook the next</em>&#8220;. <span id="more-616"></span>The biggest problem with software development is to start a bunch of things in parallel, because inevitably work will include something that is later discarded, meaning wasted work. Work on one case (or a small number of cases depending upon team size); get that fully functional; get the tests running; write the documentation; check it all in as a finished piece of work, before you start on the next case.</li>
<li><strong>Never break the build</strong>. Pretty obvious, but must be included in any list of software development advice. A programmer who is taking all the proper precautions to test before checking in will never break the build. If the build is broken, it is always because someone took a shortcut.</li>
<li><strong>Never implement a routine before it is needed in a use case</strong>. When implementing a particular class, you should have a particular use case in mind, and you should implement only the methods required for that use case. You might think about the potential for other capabilities on a class, and you might document this in a comment, but implementation should wait until it is actually needed in a use case.</li>
<li><strong>Never add a data member before it is needed in a use case.</strong> Exactly like above except with regard to class data members. It may seem obvious to the programmer that a &#8220;customer&#8221; record will need a &#8220;ship to address&#8221;, but that ship to address should not be implemented until you have a use case which specifically needs it.</li>
<li><strong>Don&#8217;t be afraid to make a decision; don&#8217;t be afraid to change an earlier decision</strong>. Agile development is about quickly responding to uncertainty. Early in development you do not have complete information. You should delay decisions as long as possible, but there comes a time that a decision is needed to move forward. You can not hold up decision until that information comes in. Instead, make the best decision you can on the available information. Later, when new information arrives, don&#8217;t be afraid to change that decision. (<em>Some dinosaurs call this flip-flopping, but I call it reacting to a changing environment.</em>)</li>
<li><strong>Continually learn how to improve quality.</strong> This job never ends, so you should expect to be constantly on the look out for things that could be improved, and collect examples of ways that quality problems were identified and addressed.</li>
<li><strong>Measure, measure, measure.</strong> Agile development helps address the problem of uncertainty about the future, but there should be no uncertainty about the past. Tests should be continually running. Performance of every run should be measured and recorded.</li>
<li><strong>Design around people, not systems.</strong> Too often developers get sidetracked into designing for technical opportunities. Never lose sight of the ultimate purpose of the software, and that is to help people get work done.</li>
<li><strong>Tests are part of the product</strong>. Many developers and managers consider the product to be what you ship to the customer, and everything else less important. The tests should be considered an actual part of the product, worthy of full consideration during design, and even, in many cases, delivered with the product to the customer. (This latter part is controversial, but a built-in self-test as part of a software delivery takes inconsequential space, and yet provide tremendous benefit when needed.)</li>
<li><strong>Write the test before the code.</strong> The test itself can be used to clarify the design for exactly what is needed. Many times there are flaws in the design approach which are discovered when working through the test cases. Think how much time would be saved to work through those cases before coding. But: write the test for case1, and code for case 1, before starting case 2.</li>
<li><strong>Eliminate Waste.</strong> Frankly, another ubiquitous platitude which must be included in any list of development principles because it is so important. There is no end to the job of looking for waste where it exists and eliminating it. Eliminate anything that does not add value to the actual customer. If you can not identify the value to the customer, then you probably don&#8217;t need it.</li>
<li><strong>Build a culture of immediate response to build breakage.</strong> Understand that when the build is broken, it effect everyone in the project, and so there is nothing more important than making sure that the central core code is building and testing properly. I have seen teams that allowed broken tests to persist for months because is was someone else&#8217;s job. Everyone suffered, but nobody acted. Instead, there needs to be widespread recognition that a little work will pay back in a big way over the team.</li>
<li><strong>Every team members needs to understand the needs of the customer</strong>. Large complex projects must be broken into separate teams and further divided for handing out to developers, but this should never be done to the extent that people lose sight of the desires and goals of the actual users of the final product.</li>
<li><strong>Keep related definitions together.</strong> Structure the code so that highly related things are located together, possibly within one class. This is a standard OO design principle of encapsulation. Ideally, all the code outside the class will not need to know the details of the internal workings. Some developers delight in spreading details across multiple files in order to organize in different way: such as to keep all the same data types together, or to organize alphabetically. For example, putting all the constants in one class in a different package from where they are being used adds unnecessarily to the complexity of the program. The guiding rule should be to group by relatedness with the result being to hide complexity.</li>
<li><strong>Always run the tests before checking in.</strong> This guideline will help you satisfy the &#8220;never break the build&#8221; guideline.</li>
<li><strong>Premature optimization is the root of all evil.</strong> A quote from Don Knuth which rings true today. Code should be written well to avoid needless waste at the micro level, but optimization beyond the individual method level should wait until testing within the entire program with a stress test bases on an actual end user use case. Intuition of what is important for overall performance is almost always wrong when based only on a static understanding of the code. Instead, measure the behavior of the complete system, to identify the 1% of the code that really makes a different in performance, and focus on that.</li>
<li><strong>Minimize backlog of uncompleted coding tasks.</strong> When a developer starts to work on a use case, there is a cost associated with all the code that has been modified, but not completed and tested. Holding uncompleted changes for days or weeks adds up to a significant risk of waste due to rework. Consider three tasks estimated to take 1 day each. Starting all three at one time, and working in parallel for three days involves an accumulation of 9 &#8220;units&#8221; of cost. But doing each task sequentially, completing each task before starting the next, involves only 3 &#8220;units&#8221; of cost. This is not intuitive. Our intuition tells us that while we are in there, we might as well do three things at once, before buttoning the work up. But software is not like physical construction. Short, quick, and complete jobs not only cause less cognitive load, but also reduce the chance that uncompleted work will conflict with another person&#8217;s uncompleted work.</li>
<li><strong>Never overgeneralize functionality.</strong> This is also know as &#8220;<em>YAGNI &#8211; You Aren&#8217;t Going to Need It</em>&#8221; . While coding a particular class, programmers like to think with a small tweak this class might be used for several other purposes. This is fine if those purposes are required by the current use case, but usually the programmer is thinking about uses which have not been invented yet, and which may in fact never be needed. (<em>This subject always reminds me of the classic Saturday Night Live skit about the product which was both a floor wax, and a dessert topping.</em>)</li>
<li><strong>Never use 3 lines when 2 lines would do. </strong> Succinctness in code pays every time someone else has to read it. But don&#8217;t shrink the code to the point of being difficult to read. Smaller, well written code can easier to maintain and easier to spot errors in, than verbose, ornately written code. Always simplify as much as possible, but no more.</li>
<li><strong>Never ever measure code by counting lines.</strong> The number of lines needed to do a particular task varies greatly from programmer to programmer, and from style to style. The number of lines of code does not tell you much of anything about the completeness or the quality of the code. Code quality can vary by a factor of 200, and this overwhelms any usefulness of the count of the lines. Count instead functioning use cases.</li>
<li><strong>Continually re-design and re-factor.</strong> Apply this cautiously because some code is brittle and difficult to change, but in general you should not be afraid to change the code to match the real use case. A data member may have been an integer in the past, but when a use case requires it to be a floating point don&#8217;t be afraid to change it, only be sure to complete everything: tests, documentation, installer.</li>
<li><strong>Delete dead code.</strong> There is a tendency to let &#8220;sleeping dogs lie&#8221; when it comes to large blocks of code that is not well understood. One example is adding a new method to a class to replace another, quite often the developer will leave the old method there &#8220;just in case&#8221;. Some effort should be expended to check to see if that method is needed, and <em>delete it</em> if there is no evidence that it is needed. The worst offense is commenting out blocks of code, and leaving that commented code around. Commented code should be deleted as soon as you know that the tests run, and certainly before checking it in. It is easy to add code at any time, it is hard to delete code at any time. Therefor, at a particular time that you have a good idea that something might not be needed, and small extra effort to verify this and eliminate the code will make the codebase more maintainable.</li>
<li><strong>Don&#8217;t invent new languages.</strong> Programmers love to make text files that drive functionality in way configurable at run-time. There are no end of configuration files to be able to change the behavior of the program without recompiling. The advent of XML is driving a chain of specialized custom &#8220;scripting languages&#8221; that allow functionality to be &#8220;programmed&#8221; by the end user without having to compile. The flaw in this reasoning is that the precise definition of the behavior of the operations almost never well defined outside of the context of a particular implementation, and these types of scripting languages are mainly useful only to people who have an intimate knowledge of the internal working of the code body in question. Thus, real end users without detailed internal knowledge can never possibly know what is necessary to anticipate the effect of complex combinations of commands. Scripting languages have a use, and can not be eliminated, but the designer must take a very very conservative approach and use existing languages as far as possible, and avoid inventing new ones.</li>
<li><strong>Do not create a design until you are ready to implement and test the implementation.</strong> You should have some overall idea of where you are going, and a overview of the system architecture that will be aimed for, but no detailed design, no detailed description of functional implementation should be written down until the development iteration that will allow that design to be implemented and tests. The detailed design should cover only as much as is needed to handle the current use case. The biggest cause of waste in software development is time spend designing things that are not needed or need to be redesigned because of some mistaken assumptions that the design is based on.</li>
<li><strong>Software is Plastic.</strong> Unlike physical manufacturing, software can be changed in significant ways very easily. In fact there is plenty of evidence that software is easier to change than the design specifications that describe the software. Furthermore, software communicates the design more effectively than the specification. Therefor, you should spend the time to implement the design directly, so that customers can see the details of the design. If you miss and have the change the design, it is easier to change the software than it would be to change the spec. But most important, your information about what the customers wants is far better after they have seen the code running.</li>
<li><strong>Take the time to code a complete description of the problem in the code that detects and reports exceptional situations. </strong> Programmers are often very lazy and throw exceptions with superficial descriptions of what is wrong. Thinking that they are the only people who will ever see the problem, and they will remember the meaning of the problem from the vague description included. But in fact more time is wasted in customer support situations because of inaccurate or incomplete error reports than any other cause. Write every error message is if you are explaining the situation to someone who just walked into the room and has no experience with the code. The customer, and the customer support team, after all, have no experience with the code.</li>
</ul>
<p>These are presented in no particular order. I welcome comments on principles that I have left out, or (if this is the case) principles that you disagree with.</p> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/kswenson.wordpress.com/616/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kswenson.wordpress.com/616/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/kswenson.wordpress.com/616/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kswenson.wordpress.com/616/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/kswenson.wordpress.com/616/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kswenson.wordpress.com/616/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/kswenson.wordpress.com/616/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kswenson.wordpress.com/616/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/kswenson.wordpress.com/616/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kswenson.wordpress.com/616/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kswenson.wordpress.com&blog=190929&post=616&subd=kswenson&ref=&feed=1"/></div>]]></content:encoded>
         <media:content url="http://1.gravatar.com/avatar/5c921b0a84b183a2dd884ce4adf73d88?s=96&amp;amp;d=identicon&amp;amp;r=G" medium="image">
            <media:title>kswenson</media:title>
         </media:content>
      </item>
      <item>
         <title>Xtext - Tour Dates</title>
         <link>http://blog.efftinge.de/2009/11/xtext-tour-dates.html</link>
         <description>&lt;p&gt;I just realized that there's an invasion of Xtext presentations and demos about to overrun the world during the next couple of weeks. And all of them are free of charge!&lt;/p&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Date&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;Country&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;City&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;Title&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;Presenter&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/11/16&lt;/td&gt;&lt;td&gt;USA&lt;/td&gt;&lt;td&gt;New York&lt;/td&gt;&lt;td&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wiki.eclipse.org/Eclipse_Modeling_Day#New_York_City&quot;&gt;Modeling Day: Building DSLs with Xtext&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Heiko Behrens&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/11/16&lt;/td&gt;&lt;td&gt;USA&lt;/td&gt;&lt;td&gt;New York&lt;/td&gt;&lt;td&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wiki.eclipse.org/Eclipse_Modeling_Day#New_York_City&quot;&gt;Modeling Day: Converging Textual and Graphical Editors&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Moritz Eysholdt&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/11/17&lt;/td&gt;&lt;td&gt;France&lt;/td&gt;&lt;td&gt;Paris&lt;/td&gt;&lt;td&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Paris&quot;&gt;Demo Camp: Building DSLs with Xtext&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Sebastian Zarnekow&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/11/17&lt;/td&gt;&lt;td&gt;Germany&lt;/td&gt;&lt;td&gt;Leipzig&lt;/td&gt;&lt;td&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Leipzig&quot;&gt;Demo Camp: Und heute generier' ich&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Alexander Nittka&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/11/18&lt;/td&gt;&lt;td&gt;Germany&lt;/td&gt;&lt;td&gt;Hamburg&lt;/td&gt;&lt;td&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.jughh.org/pages/viewpage.action?pageId=4325396&quot;&gt;Java User Group: Building DSLs with Xtext&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Sven Efftinge, Sebastian Zarnekow&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/11/18&lt;/td&gt;&lt;td&gt;Canada&lt;/td&gt;&lt;td&gt;Toronto&lt;/td&gt;&lt;td&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wiki.eclipse.org/Eclipse_Modeling_Day#Toronto&quot;&gt;Modeling Day: Building DSLs with Xtext&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Heiko Behrens&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/11/18&lt;/td&gt;&lt;td&gt;Canada&lt;/td&gt;&lt;td&gt;Toronto&lt;/td&gt;&lt;td&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wiki.eclipse.org/Eclipse_Modeling_Day#Toronto&quot;&gt;Modeling Day: Converging Textual and Graphical Editors&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Moritz Eysholdt&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/11/23&lt;/td&gt;&lt;td&gt;Germany&lt;/td&gt;&lt;td&gt;Berlin&lt;/td&gt;&lt;td&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Berlin&quot;&gt;Demo Camp: Building DSLs with Xtext&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Peter Friese&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/11/26&lt;/td&gt;&lt;td&gt;Germany&lt;/td&gt;&lt;td&gt;Frankfurt&lt;/td&gt;&lt;td&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Frankfurt&quot;&gt;Demo Camp: Using Xtext in a large scale modeling and implementation project&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Nicolai Busse&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/11/26&lt;/td&gt;&lt;td&gt;Germany&lt;/td&gt;&lt;td&gt;Stuttgart&lt;/td&gt;&lt;td&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Stuttgart&quot;&gt;Demo Camp: Textual DSLs with Eclipse Xtext (and a little bit code code generation with Xpand)&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Markus Völter&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/11/30&lt;/td&gt;&lt;td&gt;Austria&lt;/td&gt;&lt;td&gt;Vienna&lt;/td&gt;&lt;td&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Vienna&quot;&gt;Demo Camp: Xtext&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Michael Clay&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/12/04&lt;/td&gt;&lt;td&gt;Germany&lt;/td&gt;&lt;td&gt;Hamburg&lt;/td&gt;&lt;td&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Hamburg&quot;&gt;Demo Camp: Combining graphics and text in model editors&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Jan Köhnlein&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/12/10&lt;/td&gt;&lt;td&gt;Italy&lt;/td&gt;&lt;td&gt;Florence&lt;/td&gt;&lt;td&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Florence&quot;&gt;Demo Camp: Xtext, a Textual Modeling Framework &lt;/a&gt;&lt;/td&gt;&lt;td&gt;Francesco Guidieri&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24248206-3181933089302874735?l=blog.efftinge.de' alt=''/&gt;&lt;/div&gt;</description>
         <author>Sven Efftinge</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-24248206.post-3181933089302874735</guid>
         <pubDate>Fri, 13 Nov 2009 07:00:00 -0800</pubDate>
      </item>
      <item>
         <title>Xtext in the automotive industry</title>
         <link>http://blog.efftinge.de/2009/11/xtext-in-automotive-industry.html</link>
         <description>&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://2.bp.blogspot.com/_Ii_da0jTxAY/Svw04lZ900I/AAAAAAAAANA/XSBSb3086sQ/s1600-h/P90053936.jpg&quot;&gt;&lt;img style=&quot;margin:0pt 0pt 10px 10px;float:right;cursor:pointer;width:400px;height:267px;&quot; src=&quot;http://2.bp.blogspot.com/_Ii_da0jTxAY/Svw04lZ900I/AAAAAAAAANA/XSBSb3086sQ/s400/P90053936.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5403251799656092482&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;At this year's &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.blogger.com/www.eclipsecon.org/summiteurope2009/&quot;&gt;Eclipse Summit Europe&lt;/a&gt; there was a &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/summiteurope2009/sessions?id=988&quot;&gt;very nice Xtext-related talk&lt;/a&gt; given by &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;https://www.xing.com/profile/Sebastian_Benz5&quot;&gt;Sebastian Benz&lt;/a&gt; who is working at BMW Car IT.&lt;br /&gt;The talk was about how they used &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.xtext.org/&quot;&gt;Xtext&lt;/a&gt; in order to develop a textual syntax and corresponding IDE for the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.autosar.org/&quot;&gt;AUTOSAR&lt;/a&gt; standard. The name of the project is ARText and it is freely available to all AUTOSAR members as part of the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.artop.org/&quot;&gt;Artop project&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;One of the biggest challenges when implementing the AUTOSAR standard is to create scalable solutions. AUTOSAR projects might become very, very big and in order to work with such huge projects the tools need to perform very well. In the modeling world people usually strife for repository-based (i.e. database-based) solutions as soon as projects get really big. However, the folks at BMW Car IT wanted to develop AUTOSAR projects in a traditional text-based manner and given all the good experiences with tools like JDT or IntelliJ, it's clear that text-based IDEs can scale very well.&lt;br /&gt;&lt;br /&gt;In order to implement the language they first had tried the old Xtext version from oAW, which was way too slow. Then, later, when the new &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/Xtext&quot;&gt;TMF Xtext&lt;/a&gt; came around they gave it another try and saw that the performance had been improved significantly. Sebastian showed the following slide in his talk:&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://3.bp.blogspot.com/_Ii_da0jTxAY/SwZahStRobI/AAAAAAAAANY/BBnEHjCb9Ho/s1600/performance.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:400px;height:283px;&quot; src=&quot;http://3.bp.blogspot.com/_Ii_da0jTxAY/SwZahStRobI/AAAAAAAAANY/BBnEHjCb9Ho/s400/performance.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5406107930708779442&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;After that he explained how they have solved a couple of other problems, such as supporting different releases of the standard or making the language extendable. All the solutions looked very nice, they must have some very skilled people at BMW Car IT.&lt;br /&gt;&lt;br /&gt;He compared working with the state-of-the-art commercial graphical modeling tool (What's the name of it?) and the ARText IDE and found that the use of ARText reduces development time by about 40%.&lt;br /&gt;&lt;br /&gt;In the end there was this nice summary slide I don't want to withhold:&lt;br /&gt;&lt;span style=&quot;text-decoration:underline;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://2.bp.blogspot.com/_Ii_da0jTxAY/SwZa6Up44GI/AAAAAAAAANg/FkPqBJSRRhI/s1600/summary.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:400px;height:283px;&quot; src=&quot;http://2.bp.blogspot.com/_Ii_da0jTxAY/SwZa6Up44GI/AAAAAAAAANg/FkPqBJSRRhI/s400/summary.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5406108360728174690&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;It was a very nice talk and of course a pleasure to see that Xtext is used by such smart people in such an interesting environment. And even better it seems that they've had as much fun using Xtext as we had and still have when developing (and using) it. :-)&lt;br /&gt;&lt;br /&gt;Btw.: If you have &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://blog.efftinge.de/2009/09/xtext-in-wind-energy.html&quot;&gt;other interesting applications&lt;/a&gt; of Xtext or Eclipse Modeling in general, please contact me. (Even if you don't want me to blog about it ;-))&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24248206-7646231212825894582?l=blog.efftinge.de' alt=''/&gt;&lt;/div&gt;</description>
         <author>Sven Efftinge</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-24248206.post-7646231212825894582</guid>
         <pubDate>Thu, 12 Nov 2009 08:22:00 -0800</pubDate>
         <media:thumbnail width="72" url="http://2.bp.blogspot.com/_Ii_da0jTxAY/Svw04lZ900I/AAAAAAAAANA/XSBSb3086sQ/s72-c/P90053936.jpg" height="72" xmlns:media="http://search.yahoo.com/mrss/"/>
      </item>
      <item>
         <title>Eclipse Summit Europe 2009</title>
         <link>http://blog.efftinge.de/2009/10/eclipse-summit-europe-2009.html</link>
         <description>This year's &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/summiteurope2009/&quot;&gt;Eclipse Summit Europe&lt;/a&gt; is again a very nice happening. It's so important to meet all the people you're chatting and mailing with in person.&lt;br /&gt;Yesterday, &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://zarnekow.blogspot.com/&quot;&gt;Sebastian&lt;/a&gt; and I had the chance to demo some of the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/summiteurope2009/sessions?id=906&quot;&gt;new Xtext features&lt;/a&gt; we've been working on in the Helios train. It was much fun and we got very positive feedback for both the talk and (more important) the features. We'll post the demos to our blogs very soon.&lt;br /&gt;&lt;br /&gt;I'm especially excited about how well Xtext is accepted within the Eclipse Community. Yesterday there were at least three talks about other projects which make use of Xtext:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The b3 guys are working on a DSL to describe builds&lt;/li&gt;&lt;li&gt;In the new EMF Search implementation the query language is implemented with Xtext&lt;/li&gt;&lt;li&gt;The Relax NG tools are as well implemented in Xtext&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;How about e4? Designing UIs works good in a WYSIWYG style, but there are scenarios where you want to program parts of it. In addition storing the UI descriptions in XMI is not necessarily the best option. You cannot read it and it's very hard to diff and merge them. I can imagine that a programmer friendly textual syntax might please the modeling skeptics a bit. We can still use a WYSIWYS editor on top.&lt;br /&gt;&lt;br /&gt;Implementing the CSS functionality with Xtext could be another opportunity to get more for less. To find out, I'll have to attend Kai's talk about the&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/summiteurope2009/sessions?id=850&quot;&gt; CSS customization in e4&lt;/a&gt; this morning.&lt;br /&gt;There are lots of other interesting sessions to attend today. Unfortunately I have to decide between listening to&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Sebastian Benz (BMW) who talks about how &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/summiteurope2009/sessions?id=988&quot;&gt;Xtext is applied in the automotive industry&lt;/a&gt; (AUTOSAR) and&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://koehnlein.blogspot.com/&quot;&gt;Jan Koehnlein&lt;/a&gt; and Jos Warmer who talk about how to &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/summiteurope2009/sessions?id=957&quot;&gt;combine Xtext and GMF&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;because they are both scheduled for 14:40.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24248206-3094905624098819284?l=blog.efftinge.de' alt=''/&gt;&lt;/div&gt;</description>
         <author>Sven Efftinge</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-24248206.post-3094905624098819284</guid>
         <pubDate>Thu, 29 Oct 2009 01:03:00 -0700</pubDate>
      </item>
      <item>
         <title>Helios M2 of Xtext, Xpand and MWE</title>
         <link>http://blog.efftinge.de/2009/10/helios-m2-of-xtext-xpand-and-mwe.html</link>
         <description>&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://4.bp.blogspot.com/_Ii_da0jTxAY/Ssm57_fdhgI/AAAAAAAAAMo/f5KvX6s7YfM/s1600-h/Xtext-Logo-Kreide-sw.jpg&quot;&gt;&lt;img style=&quot;margin:0pt 0pt 10px 10px;float:right;cursor:pointer;width:403px;height:232px;&quot; src=&quot;http://4.bp.blogspot.com/_Ii_da0jTxAY/Ssm57_fdhgI/AAAAAAAAAMo/f5KvX6s7YfM/s400/Xtext-Logo-Kreide-sw.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5389042869432321538&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;The M2 builds are promoted (with Athena!). And here's the promised update on what we've already done for the M2 of Helios.&lt;br /&gt;&lt;br /&gt;You can find the details in the bugzilla links. Here I'll only mention new big features.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Xtext (&lt;/span&gt;&lt;a rel=&quot;nofollow&quot; style=&quot;font-weight:bold;&quot; target=&quot;_blank&quot; href=&quot;https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&amp;amp;classification=Modeling&amp;amp;product=TMF&amp;amp;component=Xtext&amp;amp;target_milestone=M2&quot;&gt;fixed bugzillas&lt;/a&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;&lt;br /&gt;Quickfix Support&lt;/span&gt;&lt;br /&gt;It is now possible to register quickfixes for validation rules. The feature is documented as part of the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.tmf/org.eclipse.xtext/plugins/org.eclipse.xtext.doc/html/xtext.html?root=Modeling_Project&amp;amp;view=co#validation&quot;&gt;validation section&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;JVM - EMF bridge&lt;/span&gt;&lt;br /&gt;This one allows referencing Java elements from EMF models, as it is desired in most DSLs which are used in a JVM context. We already wrote a small MWE prototype (without XML syntax), which makes use of this new component. It took us a day to come up with a neat MWE editor. Our upcoming base language will be based on top of this type system.&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://zarnekow.blogspot.com/&quot;&gt;Sebastian&lt;/a&gt; is going to blog about the details soon.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;EMF Index integration&lt;/span&gt;&lt;br /&gt;We made some good progress with regards to the index integration. However, as it was not finished by M2 and the changes were too big we decided to hold it back. It will be shipped with M3 and I will write a separate blog about it soon.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Xpand (&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&amp;amp;classification=Modeling&amp;amp;product=M2T&amp;amp;component=Xpand&amp;amp;target_milestone=M2&quot;&gt;fixed bugzillas&lt;/a&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;Incremental Generation&lt;/span&gt;&lt;br /&gt;There's support for incremental generation now. It leverages EMFCompare to find out what has changed and only triggers those parts in a generator which could possibly be affected by the changes. In typical scenarios where one has big models and only very little changes between the builds this can yield a significant performance boost. The implementation is there and the unit tests should be a good starting point (org.eclipse.xpand.incremental.tests). Documentation and an example workflow will follow.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;Xpand Profiler&lt;/span&gt;&lt;br /&gt;If you want to improve the overall execution performance of your generator, the new Xpand profiler comes in handy. Heiko already &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.heikobehrens.net/2009/09/25/profiler-for-xpandxtendcheck/&quot;&gt;blogged about it&lt;/a&gt;. There's also &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.m2t/org.eclipse.xpand/doc/org.eclipse.xpand.doc/html/xpand_reference.html?root=Modeling_Project&amp;amp;view=co#r10_profiler&quot;&gt;documentation&lt;/a&gt; available.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;MWE (&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&amp;amp;classification=Modeling&amp;amp;product=EMFT&amp;amp;component=MWE&amp;amp;target_milestone=M2&quot;&gt;fixed bugzillas&lt;/a&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For MWE only some bugs were fixed. The new MWE syntax we're working on has not yet been checked in. It is primarily meant as a test language for the Java EMF bridge. In order to replace the current parser and infrastructure we need to implement an XML based reader (for backward compatibility) and of course the interpreter needs to work on EMF models. This is not planned for M3 as we have little resources and want to focus on the EMF Index integration as well as the Java EMF bridge. But I'm pretty sure we'll do this during one of the next milestones.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;font-style:italic;&quot;&gt;Disclaimer: We encourage &lt;/span&gt;&lt;span style=&quot;font-weight:bold;font-style:italic;&quot;&gt;everybody to use and test our milestones. It really helps to get as much feedback as possible. However, note that every API we introduce between M1 to M5 might be changed or even be removed completely in future milestones. Also milestones are usually not as stable as releases.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you want to test the milestones just take the composite updates site from itemis:&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;http://download.itemis.com/updates/milestones/&lt;br /&gt;&lt;/span&gt;&lt;span&gt;C&lt;/span&gt;heck the Antlr feature (&quot;Xtext Antlr Support 0.8.0 M2&quot; -&amp;gt; &quot;Xtext Antlr Feature&quot;) and p2 will do the rest.&lt;br /&gt;&lt;br /&gt;Just in case you're interested in what is planned for M3. Here are the bugzilla queries:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&amp;amp;classification=Modeling&amp;amp;product=TMF&amp;amp;component=Xtext&amp;amp;field0-0-0=flagtypes.name&amp;amp;type0-0-0=substring&amp;amp;value0-0-0=helios&amp;amp;target_milestone=M3&quot;&gt;Xtext M3 bugzillas&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&amp;amp;classification=Modeling&amp;amp;product=M2T&amp;amp;component=Xpand&amp;amp;field0-0-0=flagtypes.name&amp;amp;type0-0-0=substring&amp;amp;value0-0-0=helios&amp;amp;target_milestone=M3&quot;&gt;Xpand M3 bugzillas&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&amp;amp;classification=Modeling&amp;amp;product=EMFT&amp;amp;component=MWE&amp;amp;field0-0-0=flagtypes.name&amp;amp;type0-0-0=substring&amp;amp;value0-0-0=helios&amp;amp;target_milestone=M3&quot;&gt;MWE M3 bugzillas&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24248206-7047973104660094619?l=blog.efftinge.de' alt=''/&gt;&lt;/div&gt;</description>
         <author>Sven Efftinge</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-24248206.post-7047973104660094619</guid>
         <pubDate>Mon, 05 Oct 2009 02:15:00 -0700</pubDate>
         <media:thumbnail width="72" url="http://4.bp.blogspot.com/_Ii_da0jTxAY/Ssm57_fdhgI/AAAAAAAAAMo/f5KvX6s7YfM/s72-c/Xtext-Logo-Kreide-sw.jpg" height="72" xmlns:media="http://search.yahoo.com/mrss/"/>
      </item>
      <item>
         <title>Xtext in wind energy</title>
         <link>http://blog.efftinge.de/2009/09/xtext-in-wind-energy.html</link>
         <description>&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://2.bp.blogspot.com/_Ii_da0jTxAY/SrN_Ou0yi4I/AAAAAAAAAMQ/AXyApNlk0Nc/s1600-h/IWES_OneWind.jpg&quot;&gt;&lt;img style=&quot;margin:0pt 0pt 10px 10px;float:right;cursor:pointer;width:400px;height:301px;&quot; src=&quot;http://2.bp.blogspot.com/_Ii_da0jTxAY/SrN_Ou0yi4I/AAAAAAAAAMQ/AXyApNlk0Nc/s400/IWES_OneWind.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5382785870702218114&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;I've visited the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.iwes.fraunhofer.de/&quot;&gt;Fraunhofer IWES&lt;/a&gt; in Bremerhaven this week. Fraunhofer is a famous german research institute and the IWES department focusses on wind energy. In their current research project they make heavy use of &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.xtext.org&quot;&gt;Xtext&lt;/a&gt; and other &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/modeling/&quot;&gt;Eclipse Modeling&lt;/a&gt; technologies.&lt;br /&gt;&lt;br /&gt;The project is about specifying and connecting the different components a wind turbine is made of and simulating real time scenarios using such models.&lt;br /&gt;The problem they want to solve is that today's computers are much too slow to compute structural, fluid, or thermo dynamics of detailed models in detailed surroundings in a reasonable time. Also the components are usually tested and simulated in isolation only.&lt;br /&gt;The general approach to face this is to reduce the level of detail in order to speed up computation. This has of course the drawback that the resulting data gets more imprecise. The goal of the research project is to dynamically change the level of detail for the different components during the simulation. This is modeled using a state machine.&lt;br /&gt;For instance if you want to simulate a storm in order to find out at what wind force a blade breaks you have to start with low wind force and increase it constantly. The system would allow to replace a lower detailed blade with a higher detailed one in certain scenarios. The engineer specifies in what circumstances detailed information is interesting and the system can use fast models with low details for the rest of the time. For instance one would want to replace a low-detailed blade with a high-detailed blade when the wind gets so strong that it is likely that the blade breaks.&lt;br /&gt;&lt;br /&gt;The other problem they have to solve is that there are many different tools (e.g. &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.modelica.org/&quot;&gt;Modelica&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://en.wikipedia.org/wiki/Nastran&quot;&gt;NASTRAN&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://en.wikipedia.org/wiki/ANSYS&quot;&gt;ANSYS&lt;/a&gt;) used to model and simulate the different components. Each of them have their strengths and weaknesses so the research team needs to find a universal way to reuse and interconnect all of these tools.&lt;br /&gt;&lt;br /&gt;To solve these two issues they have developed a DSL used to model the different components. From that description they generate representations for the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://2.bp.blogspot.com/_Ii_da0jTxAY/SrOAJlxCyAI/AAAAAAAAAMY/MJ4Ru3KwVr8/s1600-h/2385413733_1ee7b88ceb.jpg&quot;&gt;&lt;img style=&quot;margin:0pt 0pt 10px 10px;float:right;cursor:pointer;width:400px;height:299px;&quot; src=&quot;http://2.bp.blogspot.com/_Ii_da0jTxAY/SrOAJlxCyAI/AAAAAAAAAMY/MJ4Ru3KwVr8/s400/2385413733_1ee7b88ceb.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5382786881882867714&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;different tools in different levels of detail. In addition they have developed Xtext implementations of the most interesting languages they use, that is &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.modelica.org/&quot;&gt;Modelica&lt;/a&gt; (an object-oriented, equation based language), NASTRAN, and ANSYS.&lt;br /&gt;&lt;br /&gt;I want to mention that the Fraunhofer IWES are &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.iwes.fraunhofer.de/jobs/&quot;&gt;looking for smart software engineers&lt;/a&gt;. So if you're interested in wind energy and Eclipse Modeling it might be a good fit. I haven't spent much time in Bremerhaven but on a first glance it looked much nicer than I thought.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24248206-6899666947437229076?l=blog.efftinge.de' alt=''/&gt;&lt;/div&gt;</description>
         <author>Sven Efftinge</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-24248206.post-6899666947437229076</guid>
         <pubDate>Tue, 15 Sep 2009 06:21:00 -0700</pubDate>
         <media:thumbnail width="72" url="http://2.bp.blogspot.com/_Ii_da0jTxAY/SrN_Ou0yi4I/AAAAAAAAAMQ/AXyApNlk0Nc/s72-c/IWES_OneWind.jpg" height="72" xmlns:media="http://search.yahoo.com/mrss/"/>
      </item>
      <item>
         <title>Xtext - Road to Helios</title>
         <link>http://blog.efftinge.de/2009/08/xtext-road-to-helios.html</link>
         <description>After the Galileo release of Xtext we are now focussing on the next iteration. We've had a &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wiki.eclipse.org/Xtext/Meetings&quot;&gt;face-to-face meeting in Kiel&lt;/a&gt; and discussed the different ideas, our process and what the &quot;themes&quot; for our Helios development are.&lt;br /&gt;&lt;br /&gt;In this post I want to share our vision of how the road to Helios could! look like. I say 'could' because although we have a rough idea of where we want to go, we know from the past, that the actual road we go will slightly differ. That is things we find useful today might have become less important in six months. &quot;Round And Round The Earth Is Turning&quot; :-).&lt;br /&gt;I'll outline our visions and priorities along the four themes we identified for the Helios development period.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:180%;&quot;&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Theme I : Clean Code&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Our code base is already comparatively clean but we want it to be even cleaner. Cleanness in code means the following to us:&lt;br /&gt;&lt;br /&gt;DRY - Don't repeat yourself&lt;br /&gt;&lt;br /&gt;Every information should be kept in one place only. This is as everything I write not meant dogmatic. So, there are of course situations where it is more pragmatic to duplicate a piece of information.&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;&lt;br /&gt;KISS - Keep it small and simple&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Solutions should only be as complicated as they need to be. Sometimes it is hard to understand for developers that they have solved a problem but we do not want to check it in in that way. That is of course not because we do not appreciate the effort. It is because we think it is too complex, and we do not want to add superfluous complexity to the code base. Of course opinions of what is superfluous and what is not might as well differ :-).&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Keep it testable and have tests&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Code needs to be testable. If it is not testable unit testing is either not possible or it is too complicated and therefore is fragile and complex. We want to have sufficient unit tests. Sufficient is again a weak statement. Usually one has too little tests, so having too many tests is very seldom the case. Mature and published code can't have too many tests, as long as each test covers a different case. Note that the code cleanness of unit tests is as important as the code quality of the production code. When we fix bugs we usually do test first. That is we write a failing test reproducing the reported miss behavior and fix it afterwards.&lt;br /&gt;In Xtext we have more LOC in the tests than in production code.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Comments&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Any comments need to reflect the code! Wrong comments are far more problematic than no comments.&lt;br /&gt;&lt;br /&gt;Inlined comments are a smell. They tell you that your code is not readable. Most of the time the simplest thing to do in order to avoid such comments is extracting a method and naming that method like the comment you wanted to put in front of that code snippet.&lt;br /&gt;&lt;br /&gt;JavaDoc comments are important. This is an aspect where we should improve our code base.&lt;br /&gt;JavaDocs should be as small as possible and as verbose as needed in order to understand the contract behind the API at hand. We only add JavaDocs to primary hooks. Internal stuff is seldom commented because we can do a quick view at the code in order to understand what's going on. At least as long as the code fulfills the next requirement.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Readability&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Code is read far more often than it is written or edited. So it's especially important to write the code so that your intentions are clear. Small functions and expressive names are good starting points.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;font-size:180%;&quot;&gt;Theme II : Usability (UI Quality &amp;amp; Features, API Quality, Documentation Quality)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;UI Quality and Features&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In Galileo we mainly focused on putting the main abstractions in place and creating a solid framework. Some UI features were therefore postponed.&lt;br /&gt;One of the first things we want to do in Helios is adding the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wiki.eclipse.org/EmfIndex&quot;&gt;EMF Index&lt;/a&gt; and making the usage of it and &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://blog.efftinge.de/2009/07/xtext-scopes-and-emf-index-in-action.html&quot;&gt;the corresponding scope provider&lt;/a&gt; the default. Based on that we have information about all cross file references, which enables us to not only automatically trigger validation of referencing models, but also provide advanced navigation features and things like rename refactoring.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;API Quality&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It is our desire that people have fun when working with the abstractions we provide.&lt;br /&gt;The mantra for last year's development was 'We aim to make simple things simple and complex things possible.' (by Alan Kay). Which means to us that what the 80% of things we want to do with a framework needs to be as simple as possible, but at the same time we need to make sure that the other 20% are still possible (and ideally also not too hard to accomplish). Of course there are use cases which simply do not fall into the scope of a framework but that is a different story.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Documentation Quality&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Our &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/Xtext/documentation/&quot;&gt;documentation&lt;/a&gt; is in a relatively good shape, but still can be improved. We are convinced that good documentation is key for the overall acceptance of a framework.&lt;br /&gt;So keeping the documentation current and keeping a good quality is part of our development process. That is adding or changing code is always paired with adding and changing tests and updating the documentation.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:180%;&quot;&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Theme III : Performance &amp;amp; Scalability &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This has been a major theme for last year's development as well.&lt;br /&gt;Given user stories like the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;https://www.eclipsecon.org/submissions/ese2009/view_talk.php?id=988&quot;&gt;talk about Xtext and AUTOSAR&lt;/a&gt; proposed for ESE 2009, it seems that we met this non-functional requirement fair enough.&lt;br /&gt;But that does not mean that we don't need to check it from time to time, or that users neverface performance issues. We take this aspect very serious.&lt;br /&gt;But of course we do not write optimized code as along as we haven't measured that optimization is worth the extra unreadability, complexity or what ever.&lt;br /&gt;What we do is having regular profiling sessions and thinking about different use cases when we design concepts.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;font-size:180%;&quot;&gt;Theme IV : Increase Applicability (Base Language, Grammar Features)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So far all the themes are more or less about, improving the quality. I haven't talked about many new features (despite the mentioning of EMF Index and what it means for some UI features we want to implement). You will of course see many improvements and new features I haven't mentioned in this post. We decide which bugzillas to work on from milestone to milestone (I'll write about what is coming in M2 in a separate post.)&lt;br /&gt;But there is one huge &quot;feature&quot; we want to do and I want to mention it here:&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Base Language&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We want to provide a base language, which can be extended and customized by users. The idea is not new: The Intentional Workbench as well as MPS both have similar things. Despite that these frameworks are of a different nature (they are not text-based) we also don't want to implement Java or C# (that is what they do), but come up with a much simpler and nicer language. Actually I like Scala very much, because it has very little concepts in it and allows to define new concepts out of them. But with an Xtext-based language you don't need the syntactical flexibility of Scala or Ruby, because the parser and the compiler are open and you can change the language as it seems fit. Imagine state machines with action implementations, entity models with implementation for operations and derived attributes, validation languages etc. Looking at the current land scape of external DSLs I'ld say that about 90% of all languages would benefit from support for embedding expressions. Some people already have implemented their own expression language others reuse the language of the target platform, i.e. they write the behavior in Java and mix it into the generated code. &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://zarnekow.blogspot.com/&quot;&gt;Sebastian&lt;/a&gt; and I gave a &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.slideshare.net/sefftinge/challenges-in-dsl-design&quot;&gt;talk about this at Code Generation 2009&lt;/a&gt; in June.&lt;br /&gt;&lt;br /&gt;In order to show and prove how great such a language is, we plan to implement an EMFatic version that supports adding implementation for EOperations and derived EStructuralFeatures.&lt;br /&gt;With that you'll no longer need to change the generated code (at least most of the time) and you'ld have everything in one place.&lt;br /&gt;In addition DSLs for common viewpoints in Xtext, such as scoping, validation, quick fixes, formatting, etc. would be nice.&lt;br /&gt;&lt;br /&gt;The base language is a huge effort and will likely not be finished by next year. As of now I'm not sure if and how much it will be included in the Helios release.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Java adaption&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Another really nice thing we're already working on is, having a thin EMF adapter layer to JDT's Java model. This allows for referencing Java elements from within a DSL, which is very often desired. Reimplementing MWE with a nicer syntax will be a matter of a couple of days when we have this feature. We want this to be tightly integrated with EMF Index.&lt;br /&gt;This is also a bigger topic but will definitely be part of Helios (actually we plan to have it finished by M4).&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Grammar Features&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There are a lot of ideas of additional features for the grammar language. We haven't decided on them yet but things like multiple grammar inheritance might get more important when we ship a base language. But what exactly such a feature would mean and what the consequences are still has to grow on us.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;DISCLAIMER&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Please don't take any of these ideas as guaranteed. This is what we currently have in mind but our view of the world will change. Also note that developing the base language we have in mind is a big effort, so it might take us more than just one release cycle.&lt;br /&gt;I'll write a post for each milestone in order to tell what we exactly we did and do.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24248206-1022866070154292872?l=blog.efftinge.de' alt=''/&gt;&lt;/div&gt;</description>
         <author>Sven Efftinge</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-24248206.post-1022866070154292872</guid>
         <pubDate>Thu, 27 Aug 2009 03:43:00 -0700</pubDate>
      </item>
      <item>
         <title>Xtext 0.7.1 available</title>
         <link>http://blog.efftinge.de/2009/07/xtext-071-available.html</link>
         <description>We've just published a bugfix update to the Galileo release. Actually it is not only an update of &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.xtext.org&quot;&gt;Xtext&lt;/a&gt; but also of MWE and Xpand. All three projects are now shipped in version 0.7.1.&lt;br /&gt;&lt;br /&gt;The update contains a lot of nice bugfixes (see &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://zarnekow.blogspot.com/2009/07/xtext-071-is-in-starting-blocks.html&quot;&gt;Sebastian's blog &lt;/a&gt;for details). Getting it should be pretty easy for everyone this time. It's all available from our update site at itemis :&lt;br /&gt;&lt;br /&gt; &lt;span style=&quot;font-weight:bold;&quot;&gt;http://download.itemis.com/updates&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://twitter.com/docfx&quot;&gt;Moritz&lt;/a&gt; made it a P2 composite site pointing to the corresponding update sites at Eclipse as well as to the highly recommended Antlr generator fragment. So it is just a matter of pressing 'update' if you already had Xtext installed and had added the updatesite above. If you want to install Xtext for the first time, just add the update site above and install the Xtext SDK. This will install everything you need (including MWE UI and the like, which was previously not automatically added). Have fun!&lt;br /&gt;&lt;br /&gt;Thank you Moritz, Dennis and Sebastian. It works great! :-)&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24248206-8720175646576635876?l=blog.efftinge.de' alt=''/&gt;&lt;/div&gt;</description>
         <author>Sven Efftinge</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-24248206.post-8720175646576635876</guid>
         <pubDate>Fri, 17 Jul 2009 14:23:00 -0700</pubDate>
      </item>
      <item>
         <title>RT @Xtext #webinar #bugfix-release #dsl-contest</title>
         <link>http://blog.efftinge.de/2009/07/rt-xtext-webinar-bugfix-release-dsl.html</link>
         <description>Just in case you're not sure what exciting things to do within the next couple of days, here are some suggestions:&lt;br /&gt;&lt;br /&gt;First you could attend the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://live.eclipse.org/node/705&quot;&gt;Xtext webinar&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.1160pm.net/&quot;&gt;Heiko&lt;/a&gt; and I are giving today (at 5:00 pm GMT). There you'll learn something about the general principles and ideas behind this new language framework. We'll also show some examples.&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;You have to &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://live.eclipse.org/node/705&quot;&gt;register in advance&lt;/a&gt;!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Second you grab the bugfix release (0.7.1) of &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/Xtext&quot;&gt;Xtext&lt;/a&gt; which is due this Friday (July 17th). It includes a lot of nice &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&amp;amp;short_desc_type=allwordssubstr&amp;amp;short_desc=&amp;amp;classification=Modeling&amp;amp;product=TMF&amp;amp;version=0.7.0&amp;amp;target_milestone=SR1&amp;amp;long_desc_type=allwordssubstr&amp;amp;long_desc=&amp;amp;bug_file_loc_type=allwordssubstr&amp;amp;bug_file_loc=&amp;amp;status_whiteboard_type=allwordssubstr&amp;amp;status_whiteboard=&amp;amp;keywords_type=allwords&amp;amp;keywords=&amp;amp;bug_status=RESOLVED&amp;amp;bug_status=VERIFIED&amp;amp;resolution=FIXED&amp;amp;emailtype1=substring&amp;amp;email1=&amp;amp;emailtype2=substring&amp;amp;email2=&amp;amp;bugidtype=include&amp;amp;bug_id=&amp;amp;votes=&amp;amp;chfieldfrom=&amp;amp;chfieldto=Now&amp;amp;chfieldvalue=&amp;amp;cmdtype=doit&amp;amp;order=Reuse+same+sort+as+last+time&amp;amp;known_name=Xtext+0.7.1&amp;amp;query_based_on=Xtext+0.7.1&amp;amp;field0-0-0=noop&amp;amp;type0-0-0=noop&amp;amp;value0-0-0=&quot;&gt;bug fixes&lt;/a&gt;. &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://zarnekow.blogspot.com/2009/07/xtext-071-is-in-starting-blocks.html&quot;&gt;Sebastian already blogged about it&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;With that on your box you'll be well prepared to develop a nice, witty language using Xtext and submit it for the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://tinyurl.com/nlt27n&quot;&gt;DSL contest&lt;/a&gt; itemis is running. Creativity wins!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.1160pm.net/wp-content/uploads/2009/07/xtext-laureate.png&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:411px;height:292px;&quot; src=&quot;http://www.1160pm.net/wp-content/uploads/2009/07/xtext-laureate.png&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24248206-2205418460153437960?l=blog.efftinge.de' alt=''/&gt;&lt;/div&gt;</description>
         <author>Sven Efftinge</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-24248206.post-2205418460153437960</guid>
         <pubDate>Wed, 15 Jul 2009 00:56:00 -0700</pubDate>
      </item>
      <item>
         <title>Xtext scopes and EMF index in action</title>
         <link>http://blog.efftinge.de/2009/07/xtext-scopes-and-emf-index-in-action.html</link>
         <description>&lt;span style=&quot;font-style:italic;&quot;&gt;This is a post about scoping and how to use the EMF index for that. It is in some sense a practical follow up on another blog post about the general idea behind &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://blog.efftinge.de/2009/01/xtext-scopes-and-emf-index.html&quot;&gt;indexing and scoping in Xtext&lt;/a&gt;. The topic is somewhat advanced and bleeding edge. This post describes the needed steps to get the current index based default scoping up and running. I've prepared a &lt;/span&gt;&lt;a rel=&quot;nofollow&quot; style=&quot;font-style:italic;&quot; target=&quot;_blank&quot; href=&quot;http://gallery.me.com/sven.efftinge/100036&quot;&gt;small screencast&lt;/a&gt;&lt;span style=&quot;font-style:italic;&quot;&gt; demonstrating the result in action.&lt;/span&gt; &lt;span style=&quot;font-style:italic;&quot;&gt;The example language can be downloaded from &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.efftinge.de/index-based-language.zip&quot;&gt;here&lt;/a&gt;.&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Today, the common way to do cross resource references in &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.xtext.org&quot;&gt;Xtext&lt;/a&gt; is to do it via resource URIs. That is if you want to reference a model element (EObject) from another resource, you typically put the whole resource on the scope by adding a corresponding import. Example:&lt;br /&gt;&lt;pre&gt;import &quot;platform:/resource/my.project/src/othermodel.dsl&quot;&lt;br /&gt;&lt;br /&gt;//.. refer to elements from othermodel.dsl&lt;/pre&gt;The corresponding default scoping is very simplistic. Every object in the current resource and in the referenced resources can be referenced by its simple name (as long as it has a 'name').&lt;br /&gt;&lt;br /&gt;Although this is very easy to understand, it has it's limitation when it comes to more sophisticated design. If you for instance want to hide some elements or have duplicate simple names in different packages (this can be the case if you use elements, which are developed by others).&lt;br /&gt;&lt;br /&gt;In many programming languages we have the notion of namespaces, which are much more flexible and powerful. Java, for instance, is file system agnostic. Although it forces you to put the files into folders which correspond the packages, it ultimately is just based on namespaces (packages, types).&lt;br /&gt;That said Java's namespace mechanism is also a bit limited. For instance I cannot have imports in nested namespaces but only per file. And I cannot nest packages but only classes and interfaces.&lt;br /&gt;&lt;br /&gt;Scala and C# both allow to have multiple nested packages within one file and you can put imports per namespace, so that imported names are only visible within that namespace.&lt;br /&gt;&lt;br /&gt;In order to demonstrate how to use the index together with Xtext, I've implemented a &lt;span style=&quot;font-family:courier new;&quot;&gt;DefaultIndexBasedScopeProvider &lt;/span&gt;which implements a similar semantic. There's a small example I've prepared, where you can see how it can be used. It is mainly a matter of configuring the different implementations with &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://code.google.com/p/google-guice/&quot;&gt;Guice&lt;/a&gt;. Programming is not needed as long as you're happy with the defaults.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Here's how it works&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/emfindex/&quot;&gt;index&lt;/a&gt; registeres a builder, which is invoked on resource changes. In order to make your model elements visible, you'll have to contribute a so called Indexer using an extension point.&lt;br /&gt;&lt;pre&gt;&amp;lt;extension point=&quot;org.eclipse.emf.index.indexer&quot;&amp;gt;&lt;br /&gt;&amp;lt;indexer class=&quot;org.eclipse.xtext.example.DomainmodelExecutableExtensionFactory&lt;br /&gt; :org.eclipse.xtext.index.DefaultDeclarativeResourceIndexer&quot;&lt;br /&gt; fileextensions=&quot;dmodel&quot;/&amp;gt;&lt;br /&gt;&amp;lt;/extension&amp;gt;&lt;br /&gt;&lt;/pre&gt;Please ignore the &lt;span style=&quot;font-family:courier new;&quot;&gt;ExecutableExtensionFactory&lt;/span&gt;, which is declared in order to make any executable extension Guice aware, that is you can use dependency injection. This is a different topic and might be covered by another blog post.&lt;br /&gt;&lt;br /&gt;The actual class to be instantiated is the one after the colon (':'): The &lt;span style=&quot;font-family:courier new;&quot;&gt;DefaultDeclarativeResourceIndexer&lt;/span&gt;, which delegates to an instance of &lt;span style=&quot;font-family:courier new;&quot;&gt;IQualifiedNameProvider&lt;/span&gt;, which itself is injected. This means that its implementation can be arbitrarily changed.&lt;br /&gt;The contract of a name provider is very simple: it computes a qualified name for an element, if it returns null, the element is not indexed and hence not referable.&lt;br /&gt;&lt;br /&gt;By default we use a &lt;span style=&quot;font-family:courier new;&quot;&gt;DefaultDeclarativeQualifiedNameProvider&lt;/span&gt;, which if not otherwise specified looks up a simple name (if there's an attribute 'name') and concatenates it to the qualified name of its parent. It's named 'declarative' because you're able to change the described default behavior per type by just adding a method like this:&lt;br /&gt;&lt;pre&gt;String qualifiedName(MyType foo) {&lt;br /&gt; // compute different qualified name for MyTypes&lt;br /&gt; // ...&lt;br /&gt;}&lt;/pre&gt;It will automatically dispatch to this method as soon as it has to compute a qualified name for an instance of MyType.&lt;br /&gt;&lt;br /&gt;With this in place we'll have our elements automatically indexed as long as they are in a project, which have the index nature enabled. Being indexed means that they are globally visible by their qualified name, which is comparable to how public Java elements are globally visible as soon as they are on the classpath.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;What's next?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In order to use the index and have it injected into your components (e.g. your scope provider) you'll have to configure the singleton instance from the index bundle into your Guice module. In the example the corresponding binding goes into the UI module and looks like this:&lt;br /&gt;&lt;pre&gt;public IndexStore bindIndexStore() {&lt;br /&gt; return EmfIndexUIPlugin.getDefault().getIndexStore();&lt;br /&gt;}&lt;/pre&gt;With that in place you can inject the index store by just adding a dependency in your code:&lt;br /&gt;&lt;pre&gt;@Inject&lt;br /&gt;private IndexStore store;&lt;/pre&gt;Guice will automatically put the instance into such declared dependencies.&lt;br /&gt;Now that we have a binding for &lt;span style=&quot;font-family:courier new;&quot;&gt;IndexStore&lt;/span&gt; we can add the index based scoping to the runtime module:&lt;br /&gt;&lt;pre&gt;public IndexStore bindIndexStore() {&lt;br /&gt; return new PersistableIndexStore();&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;@Override&lt;br /&gt;public Class bindIScopeProvider() {&lt;br /&gt; return DefaultIndexBasedScopeProvider.class;&lt;br /&gt;}&lt;/pre&gt;Note the additional &lt;span style=&quot;font-family:courier new;&quot;&gt;IndexStore&lt;/span&gt; binding, which is overridden by the binding we previously added to the UI module, but is needed in order to use this stuff at runtime (i.e. without running within exquinox). So it gets active as soon as you run without UI.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;How the &lt;span style=&quot;font-family:courier new;&quot;&gt;DefaultIndexBasedScopeProvider&lt;/span&gt; works&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The &lt;span style=&quot;font-family:courier new;&quot;&gt;DefaultIndexBasedScopeProvider&lt;/span&gt;&lt;br /&gt;- looks up EAttributes with name '&lt;span style=&quot;font-family:courier new;&quot;&gt;importNamespace&lt;/span&gt;'&lt;br /&gt;- and translates the globally unique qualified name into shorter ones using those import statements.&lt;br /&gt;&lt;br /&gt;By default qualified names with or without a wildcard at the end are supported. For an import of a qualified name the simple name is made available as we know from e.g. Java, where&lt;br /&gt;&lt;pre&gt;import java.util.Set;&lt;/pre&gt;makes it possible to refer to 'java.util.Set' by its simple name 'Set'.&lt;br /&gt;Contrary to Java the import is not active for the whole file but only for the namespace it is declared in and its child namespaces. That is why you can write the following in the example DSL:&lt;br /&gt;&lt;pre&gt;package foo {&lt;br /&gt; import bar.Foo&lt;br /&gt; entity Bar extends Foo {&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;package bar {&lt;br /&gt; entity Foo {}&lt;br /&gt;}&lt;/pre&gt;Of course the declared elements within a package are as well referable by their simple name:&lt;br /&gt;&lt;pre&gt;package bar {&lt;br /&gt; entity Bar extends Foo {}&lt;br /&gt; entity Foo {}&lt;br /&gt;}&lt;/pre&gt;Of course the following would as well be ok:&lt;br /&gt;&lt;pre&gt;package bar {&lt;br /&gt; entity Bar extends bar.Foo {}&lt;br /&gt; entity Foo {}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Disclaimer&lt;/span&gt;&lt;br /&gt;All this is in a very early stage. The index is not finished and its architecture is not settled down yet. Also the scope provider implementation might be changed in future (I'm sure it will).&lt;br /&gt;Additionally, there are other things around this which we have to work on before considering this mature.&lt;br /&gt;&lt;br /&gt;But as I know that there are a lot of bleeding edge users out there, I wanted to share the current state, so you might find a starting point to play with it. The index is an enabler for more advanced functionality in Xtext and in EMF based development in general. So expect it to become an important part in Eclipse Modeling.&lt;br /&gt;&lt;br /&gt;Feedback is highly appreciated and should either go to the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/newsportal/thread.php?group=eclipse.modeling.tmf&quot;&gt;newsgroup&lt;/a&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/newsportal/thread.php?group=eclipse.modeling.tmf&quot;&gt; for Xtext&lt;/a&gt; (the scoping part) or to the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/newsportal/thread.php?group=eclipse.technology.emft&quot;&gt;EMFT newsgroup&lt;/a&gt; (the index part), because the index project is a component under EMFT.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24248206-4023821900980796565?l=blog.efftinge.de' alt=''/&gt;&lt;/div&gt;</description>
         <author>Sven Efftinge</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-24248206.post-4023821900980796565</guid>
         <pubDate>Thu, 02 Jul 2009 06:23:00 -0700</pubDate>
      </item>
      <item>
         <title>Galileo! Thank you team!</title>
         <link>http://blog.efftinge.de/2009/06/galileo-thank-you-team.html</link>
         <description>&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org&quot;&gt;Today is the day&lt;/a&gt;. The &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/Xtext&quot;&gt;framework&lt;/a&gt; we've been working on for over a year has been released.&lt;br /&gt;And before I fall into a big dark hole (because I forgot to think about what is next), I wanted to use this medium in order to thank my team. I never ever had the pleasure to work with such nice and talented people. Without them there would be nothing to release.&lt;br /&gt;&lt;br /&gt;Usually I prefer to stick talking about the team as a whole as opposed to talking about the individuals, because the synergy is so important and needs to be emphasized. But on the other hand it's important for me that everybody knows who was involved and made this possible.&lt;br /&gt;So I will make an exception this time and want thank them in alphabetical order:&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://4.bp.blogspot.com/_Ii_da0jTxAY/SkIvqCHbq5I/AAAAAAAAAL4/6MK1S87n2_I/s1600-h/DSC00366.JPG&quot;&gt;&lt;img style=&quot;margin:0pt 0pt 10px 10px;float:right;cursor:pointer;width:400px;height:308px;&quot; src=&quot;http://4.bp.blogspot.com/_Ii_da0jTxAY/SkIvqCHbq5I/AAAAAAAAAL4/6MK1S87n2_I/s400/DSC00366.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5350891706438626194&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.1160pm.net/&quot;&gt;Heiko&lt;/a&gt; (Behrens)&lt;/span&gt;, our drummer, came in one year ago. The first thing he did was developing the Ecore model generation from Xtext grammars. He's an excellent software developer and at the same time (and that is rare) a highly skilled communicator and team player. He developed a profiler for Xpand and improved the performance of the static analysis of Xpand templates about 300%. Also he designed and implemented our nice new website.&lt;br /&gt;Thank you, Heiko. I have learned a lot from you.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;https://www.xing.com/profile/Michael_Clay&quot;&gt;Michael&lt;/a&gt; (Clay&lt;/span&gt;) is one of the few people who were already active contributors to the previous version of Xtext. He worked a lot on the code completion functionality as well as implemented a &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://blog.efftinge.de/2009/01/emfatic-implemented-in-tmf-xtext.html&quot;&gt;textual format for Ecore models&lt;/a&gt; as one of the examples. I'm sorry that especially in the beginning, I was not able to integrate him enough, since we had a lot of offline discussions, which he couldn't join. Thank you for contributing (and for your patience). &lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.linkedin.com/pub/moritz-eysholdt/8/503/b2a&quot;&gt;Moritz&lt;/a&gt; (Eysholdt&lt;/span&gt;) joined our team in April 2008 in order to write his master thesis on co-evolution of meta models and models (he finished with 100 out of 100 points). In parallel he not only managed the support for the XSD adapter he wrote for Xpand, but wrote the serialization algorithm for Xtext. That is definitely not an easy one and he solved it without too much worry. Good to have you!&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.peterfriese.de/&quot;&gt;Peter&lt;/a&gt; (Friese&lt;/span&gt;), our &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://twitter.com/xtext&quot;&gt;tweeting bird&lt;/a&gt;, always has an eye on how the project is viewed from outside. He is not only one of the kindest people I know but is so a&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://2.bp.blogspot.com/_Ii_da0jTxAY/SkIv6WMYGGI/AAAAAAAAAMA/ZU5b9JLqLBc/s1600-h/IMG_5211.JPG&quot;&gt;&lt;img style=&quot;margin:0pt 0pt 10px 10px;float:right;cursor:pointer;width:400px;height:266px;&quot; src=&quot;http://2.bp.blogspot.com/_Ii_da0jTxAY/SkIv6WMYGGI/AAAAAAAAAMA/ZU5b9JLqLBc/s400/IMG_5211.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5350891986705979490&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;ctive in the Eclipse Community, that some people even have thought that he was the founder of &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.itemis.com&quot;&gt;itemis&lt;/a&gt;. Thank you, for doing all that community work and spreading the word. Also thank you for coming up with the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wiki.eclipse.org/Mylyn/Incubator/WikiText&quot;&gt;WikiText&lt;/a&gt; infrastructure, which we used to write the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/Xtext/documentation/0_7_0/xtext.pdf&quot;&gt;documentation&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I've been working with &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;https://www.xing.com/profile/Dennis_Huebner2&quot;&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Dennis&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt; (Huebner&lt;/span&gt;) for about 6 years now. He's always been a great person to work with. Last year we had serious problems with our build infrastructure. Every now and then strange errors came up and we didn't know what to do. So at some point Dennis took this thing over and managed it. It was great to see how he cared about the whole project, he fixed broken builds even at night or at the weekends. Without him there would be no release today.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://koehnlein.blogspot.com/&quot;&gt;Jan&lt;/a&gt; (Koehnlein&lt;/span&gt;) joined the team in February, 2008. Among all the cool stuff he did, the most noteworthy things may be co-authoring the initial design of the grammar language as well as implementing the partial parsing algorithm. Also he's the most experienced with EMF. Jan has really become a friend of mine over the past year and I especially enjoyed visiting all the conferences with him. But, Jan, please do not talk me into drinking whisky again. Thanks!&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;https://www.xing.com/profile/Patrick_Schoenbach&quot;&gt;Patrick&lt;/a&gt; (Schoenbach&lt;/span&gt;) is the good fairy behind the scenes. He's responsible at any day time and when ever there was something wich needed urgent action, Patrick was there. Thank you, Patrick, I hope we can meet some day.&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://1.bp.blogspot.com/_Ii_da0jTxAY/SkIwg7O5FfI/AAAAAAAAAMI/-3YFZt6FZIs/s1600-h/DSC00354.JPG&quot;&gt;&lt;img style=&quot;margin:0pt 0pt 10px 10px;float:right;cursor:pointer;width:400px;height:300px;&quot; src=&quot;http://1.bp.blogspot.com/_Ii_da0jTxAY/SkIwg7O5FfI/AAAAAAAAAMI/-3YFZt6FZIs/s400/DSC00354.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5350892649483671026&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.linkedin.com/pub/knut-wannheden/1/40/a98&quot;&gt;Knut&lt;/a&gt; (Wannheden&lt;/span&gt;) joined the team very late, but had provided a lot of useful features before. Knut is one of these seldom seen developers who look deep into the code and understands what's going on in an incredible short amount of time. Whatever he contributes is of highest quality. Good to have you.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://zarnekow.blogspot.com/&quot;&gt;Sebastian&lt;/a&gt; (Zarnekow&lt;/span&gt;). He is unbelievable. He joined the team late 2008. If you look at the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://dash.eclipse.org/dash/commits/web-app/summary.cgi?login=y&amp;amp;month=x&amp;amp;project=modeling.tmf&amp;amp;company=itemisAG&quot;&gt;commit statistics&lt;/a&gt;, you'll see what kind of productivity gain Sebastian brought to the project. From day one he cared about every single line, he reviewed every bit which was committed. On the other hand he contributed masses of code, which is between the best I've seen so far. Sebastian is propably the one with the most knowledge about the whole system and has become something like a co-lead to me. Besides other things he tought me to improve keeping discipline (still learning ;-)) and why it is important. Sebastian, you made my year.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://4.bp.blogspot.com/_Ii_da0jTxAY/SkIsPdV2WRI/AAAAAAAAALw/UdaFUABcb8A/s1600-h/IMG_0064.JPG&quot;&gt;&lt;img style=&quot;margin:0pt 0pt 10px 10px;float:right;cursor:pointer;width:400px;height:300px;&quot; src=&quot;http://4.bp.blogspot.com/_Ii_da0jTxAY/SkIsPdV2WRI/AAAAAAAAALw/UdaFUABcb8A/s400/IMG_0064.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5350887951355500818&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;We've just been out for lunch where I got the chance to take this nice photo (&lt;span style=&quot;font-weight:bold;&quot;&gt;Note the&lt;/span&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt; name of that restaurant!&lt;/span&gt;). Hopefully we can convince someone to open a new restaurant or rename an existent to &lt;span style=&quot;font-weight:bold;&quot;&gt;'Helios' &lt;/span&gt;soon.&lt;br /&gt;&lt;br /&gt;Have fun (while downloading the complete Xtext distro from &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://xtext.itemis.com/&quot;&gt;http://xtext.itemis.com/&lt;/a&gt;)!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24248206-4743750871922784674?l=blog.efftinge.de' alt=''/&gt;&lt;/div&gt;</description>
         <author>Sven Efftinge</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-24248206.post-4743750871922784674</guid>
         <pubDate>Wed, 24 Jun 2009 03:47:00 -0700</pubDate>
         <media:thumbnail width="72" url="http://4.bp.blogspot.com/_Ii_da0jTxAY/SkIvqCHbq5I/AAAAAAAAAL4/6MK1S87n2_I/s72-c/DSC00366.JPG" height="72" xmlns:media="http://search.yahoo.com/mrss/"/>
      </item>
      <item>
         <title>Xtext : New Website</title>
         <link>http://blog.efftinge.de/2009/06/xtext-new-website.html</link>
         <description>It has been online for a couple of days and also been mentioned on twitter as well as in the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://ianskerrett.wordpress.com/2009/06/16/galileo-freshman-project-1-xtext/&quot;&gt;blogosphere&lt;/a&gt;. But we haven't announced it &quot;officially&quot; yet. So here we go:&lt;br /&gt;&lt;br /&gt; &lt;span style=&quot;font-weight:bold;&quot;&gt;We have a &lt;/span&gt;&lt;a rel=&quot;nofollow&quot; style=&quot;font-weight:bold;&quot; target=&quot;_blank&quot; href=&quot;http://www.xtext.org/&quot;&gt;new website&lt;/a&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt; :-)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://2.bp.blogspot.com/_Ii_da0jTxAY/Sjs_MOAst2I/AAAAAAAAALg/z-FjX1BhgY8/s1600-h/Picture+2.png&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:400px;height:328px;&quot; src=&quot;http://2.bp.blogspot.com/_Ii_da0jTxAY/Sjs_MOAst2I/AAAAAAAAALg/z-FjX1BhgY8/s400/Picture+2.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5348938461584602978&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;I think &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.1160pm.net/&quot;&gt;Heiko&lt;/a&gt; really did an excellent job. Given the limited time he had (as it states in the screenshot there are &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/galileo/&quot;&gt;only five days left&lt;/a&gt;...) the result is just fantastic.&lt;br /&gt;&lt;br /&gt;How do you like it?&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24248206-8172284578214646498?l=blog.efftinge.de' alt=''/&gt;&lt;/div&gt;</description>
         <author>Sven Efftinge</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-24248206.post-8172284578214646498</guid>
         <pubDate>Fri, 19 Jun 2009 01:29:00 -0700</pubDate>
         <media:thumbnail width="72" url="http://2.bp.blogspot.com/_Ii_da0jTxAY/Sjs_MOAst2I/AAAAAAAAALg/z-FjX1BhgY8/s72-c/Picture+2.png" height="72" xmlns:media="http://search.yahoo.com/mrss/"/>
      </item>
      <item>
         <title>Code Generation Conference 2009</title>
         <link>http://blog.efftinge.de/2009/06/code-generation-conference-2009.html</link>
         <description>This year's &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.codegeneration.net/cg2009/&quot;&gt;Code Generation Conference&lt;/a&gt; in Cambridge UK is again a great event. So far I listened to a lot of interesting and entertaining talks and had many discussions on code generation and language development. It's organization is just perfect. They even came up with great weather and fireworks (each night!)!&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://1.bp.blogspot.com/_Ii_da0jTxAY/Sjn7Wq2bU_I/AAAAAAAAALY/fZ4CWCucv5E/s1600-h/fire_work.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:400px;height:268px;&quot; src=&quot;http://1.bp.blogspot.com/_Ii_da0jTxAY/Sjn7Wq2bU_I/AAAAAAAAALY/fZ4CWCucv5E/s400/fire_work.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5348582399357441010&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;Thanks to Mark Dalgarno and his team, who again did an excellent job.&lt;br /&gt;&lt;br /&gt;I've uploaded the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.slideshare.net/sefftinge/challenges-in-dsl-design&quot;&gt;slides of the presentation&lt;/a&gt; I did together with &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://zarnekow.blogspot.com/&quot;&gt;Sebastian&lt;/a&gt; on Tuesday.&lt;br /&gt;&lt;br /&gt;Today is the last day, and there'll be a workshop on a new technology called &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.xtext.org&quot;&gt;Xtext&lt;/a&gt;.&lt;br /&gt;Sounds exciting ;-)&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24248206-3329497368653214580?l=blog.efftinge.de' alt=''/&gt;&lt;/div&gt;</description>
         <author>Sven Efftinge</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-24248206.post-3329497368653214580</guid>
         <pubDate>Thu, 18 Jun 2009 01:40:00 -0700</pubDate>
         <media:thumbnail width="72" url="http://1.bp.blogspot.com/_Ii_da0jTxAY/Sjn7Wq2bU_I/AAAAAAAAALY/fZ4CWCucv5E/s72-c/fire_work.jpg" height="72" xmlns:media="http://search.yahoo.com/mrss/"/>
      </item>
      <item>
         <title>Xtext : From oAW to TMF</title>
         <link>http://blog.efftinge.de/2009/06/xtext-from-oaw-to-tmf.html</link>
         <description>Only two weeks until the release of Xtext 0.7.0 (simultaneous with Galileo). If you've been using the Xtext version previously shipped with openArchitectureWare (oAW Xtext) you might wonder what has changed and how to migrate to the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.xtext.org&quot;&gt;new version from TMF&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;We now have a &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/modeling/tmf/documentation/from_oaw_to_tmf.pdf&quot;&gt;migration document&lt;/a&gt; describing the most important decisions, changes, and the motivation behind them. We hope it will not only help oAW Xtext users to get their projects migrated but also provide them a good start for learning about the new ideas and concepts. Any feedback is highly appreciated!&lt;br /&gt;&lt;br /&gt;We are confident that migrating to TMF Xtext is a good idea and pays off soon. Your DSLs will not only run on faster and better code (we e.g. have &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://download.eclipse.org/modeling/tmf/xtext/downloads/drops//0.7.0/S200906021318/testresults/html/org.eclipse.xtext.generator.tests_linux.gtk.html&quot;&gt;lots&lt;/a&gt; of &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://download.eclipse.org/modeling/tmf/xtext/downloads/drops//0.7.0/S200906021318/testresults/html/org.eclipse.xtext.ui.common.tests_linux.gtk.html&quot;&gt;unit&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://download.eclipse.org/modeling/tmf/xtext/downloads/drops//0.7.0/S200906021318/testresults/html/org.eclipse.xtext.ui.core.tests_linux.gtk.html&quot;&gt;tests&lt;/a&gt;), but you'll automatically benefit from cool new features like serialization, pretty printing, template proposals, and semantic highlighting (just to name a few).&lt;br /&gt;&lt;br /&gt;Also we, the committers, love the project and are keen on helping you in the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/newsportal/thread.php?group=eclipse.modeling.tmf&quot;&gt;newsgroup&lt;/a&gt; :-).&lt;br /&gt;Note, that &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.itemis.com&quot;&gt;itemis&lt;/a&gt; offers migration services and trainings, just in case you're busy or don't want to do it yourself. Just drop me a note in that case.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24248206-8957247674406194104?l=blog.efftinge.de' alt=''/&gt;&lt;/div&gt;</description>
         <author>Sven Efftinge</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-24248206.post-8957247674406194104</guid>
         <pubDate>Fri, 05 Jun 2009 12:41:00 -0700</pubDate>
      </item>
      <item>
         <title>Code Generation 2009</title>
         <link>http://blog.efftinge.de/2009/05/code-generation-2009.html</link>
         <description>&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.codegeneration.net/cg2009/images/CG2009logo150x115.gif&quot;&gt;&lt;img style=&quot;margin:0pt 0pt 10px 10px;float:right;cursor:pointer;width:150px;height:115px;&quot; src=&quot;http://www.codegeneration.net/cg2009/images/CG2009logo150x115.gif&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;Some of &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://koehnlein.blogspot.com/&quot;&gt;my&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.1160pm.net/&quot;&gt;team&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://zarnekow.blogspot.com/&quot;&gt;mates&lt;/a&gt; and I will be attending this years &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.codegeneration.net/cg2009&quot;&gt;Code Generation conference&lt;/a&gt; in Cambridge.&lt;br /&gt;Last year's Code Generation conference has been one of the most interesting of the year, so I'm really looking forward to it.&lt;br /&gt;&lt;br /&gt;We'll be doing&lt;br /&gt;- a &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.codegeneration.net/cg2009/sessioninfo.php?session=30&quot;&gt;workshop on TMF Xtext&lt;/a&gt;&lt;br /&gt;- a talk on general &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.codegeneration.net/cg2009/sessioninfo.php?session=23&quot;&gt;challenges in DSL Design&lt;/a&gt;&lt;br /&gt;- and a talk about &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.codegeneration.net/cg2009/sessioninfo.php?session=64&quot;&gt;practical experience&lt;/a&gt; at &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.codegeneration.net/cg2009/sessioninfo.php?session=64&quot;&gt;Deutsche Boerse&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I especially enjoyed the different gold fish bowls and panels. Looking at &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.codegeneration.net/cg2009/sessioninfo.php?session=59&quot;&gt;this year's&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.codegeneration.net/cg2009/sessioninfo.php?session=60&quot;&gt;topics&lt;/a&gt; they should become pretty interesting again.&lt;br /&gt;So if you're at all into code generation, language design or model&lt;span style=&quot;font-weight:bold;&quot;&gt;&lt;/span&gt;ing &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.codegeneration.net/cg2009&quot;&gt;Code Generation 2009&lt;/a&gt; is a must attend event.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24248206-3589443569477104742?l=blog.efftinge.de' alt=''/&gt;&lt;/div&gt;</description>
         <author>Sven Efftinge</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-24248206.post-3589443569477104742</guid>
         <pubDate>Thu, 14 May 2009 00:32:00 -0700</pubDate>
      </item>
      <item>
         <title>Xtext M7 - New &amp; Noteworthy</title>
         <link>http://blog.efftinge.de/2009/05/xtext-m7-new-noteworthy.html</link>
         <description>Last week was the last milestone (M7) for this year's release train (Galileo). We're pretty happy with the result. It's in a much better shape than what was available after M6 as we cleaned up a number of things and fixed many bugs.&lt;br /&gt;&lt;br /&gt;Besides that Xtext now supports lazy linking, the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wiki.eclipse.org/Xtext/Documentation#Content_Assist&quot;&gt;content assist framework&lt;/a&gt; has been overhauled and finally is in a shape we're very happy with. In addition M7 enables &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wiki.eclipse.org/Xtext/Documentation#Templates&quot;&gt;template proposals &lt;/a&gt;(including corresponding preference page) for all languages without the need for any extra programming or configuration. Also the preference page for syntax coloring now works as expected.&lt;br /&gt;Finally we made some progress regarding the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/proposals/emf-index/&quot;&gt;EMF Index&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;See the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wiki.eclipse.org/Xtext/Documentation/Xtext_New_and_Noteworthy#New_.26_Noteworthy_M7&quot;&gt;New &amp;amp; Noteworthy&lt;/a&gt; document for the whole list of changes in M7.&lt;br /&gt;&lt;br /&gt;Xtext now contains all features and concepts we wanted it to have in the final release.&lt;br /&gt;There will be five release candidates (RC) before the final build will be made available:&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; border=&quot;1&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;RC1&lt;/b&gt;&lt;/td&gt;&lt;td&gt;05/19/2009&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;RC2&lt;/b&gt;&lt;/td&gt;&lt;td&gt;05/26/2009&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;RC3&lt;/b&gt;&lt;/td&gt;&lt;td&gt;06/02/2009&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;RC4&lt;/b&gt;&lt;/td&gt;&lt;td&gt;06/09/2009&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;RC5&lt;/b&gt;&lt;/td&gt;&lt;td&gt;06/16/2009&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;0.7.0&lt;/b&gt;&lt;/td&gt;&lt;td&gt;06/28/2009&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;We'll spend the next weeks on improving the overall user experience. This includes things like&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wiki.eclipse.org/Xtext/Documentation&quot;&gt;Documentation&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Website&lt;/li&gt;&lt;li&gt;Wizards&lt;/li&gt;&lt;li&gt;UI polishing&lt;/li&gt;&lt;li&gt;minor code clean ups&lt;/li&gt;&lt;li&gt;Bug fixing&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;In order to allow you helping us ;-), we've prepared a set of Galileo M7 distros containing everything necessary to get started with Xtext. The zips can be downloaded from itemis' website:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://xtext.itemis.com/distros/eclipse-SDK-3.5M7-xtext-0.7M7-win32.zip&quot;&gt;eclipse-SDK-3.5M7-xtext-0.7M7-win32.zip&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://xtext.itemis.com/distros/eclipse-SDK-3.5M7-xtext-0.7M7-macosx-carbon.tar.gz&quot;&gt;eclipse-SDK-3.5M7-xtext-0.7M7-macosx-carbon.tar.gz&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://xtext.itemis.com/distros/eclipse-SDK-3.5M7-xtext-0.7M7-macosx-cocoa.tar.gz&quot;&gt;eclipse-SDK-3.5M7-xtext-0.7M7-macosx-cocoa.tar.gz&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://xtext.itemis.com/distros/eclipse-SDK-3.5M7-xtext-0.7M7-linux-gtk.tar.gz&quot;&gt;eclipse-SDK-3.5M7-xtext-0.7M7-linux-gtk.tar.gz&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Any &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/newsportal/thread.php?group=eclipse.modeling.tmf&quot;&gt;feedback&lt;/a&gt; is as always highly appreciated. Have fun!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24248206-603414975819811096?l=blog.efftinge.de' alt=''/&gt;&lt;/div&gt;</description>
         <author>Sven Efftinge</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-24248206.post-603414975819811096</guid>
         <pubDate>Mon, 11 May 2009 12:06:00 -0700</pubDate>
      </item>
      <item>
         <title>EclipseCon: Slides and other stupid things</title>
         <link>http://blog.efftinge.de/2009/03/eclipsecon-slides-and-other-stupid.html</link>
         <description>So far &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/&quot;&gt;EclipseCon&lt;/a&gt; was much fun and I'm pretty confident that we will have a good time for the rest.&lt;br /&gt;&lt;br /&gt;One thing which might be especially entertaining is the talk &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.peterfriese.de/&quot;&gt;Peter&lt;/a&gt; is giving this afternoon (15:30 / Theater).&lt;br /&gt;Now that he's been living in America for some time, it seems that he like many &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://ed-merks.blogspot.com/&quot;&gt;other American&lt;/a&gt; finally is convinced about &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/2009/sessions?id=358&quot;&gt;the stupidity of modeling&lt;/a&gt;. So if you also think modeling is stupid, let's meet in the talk to gossip about it. See you there ;-)&lt;br /&gt;&lt;br /&gt;Btw.: I just uploaded the slides for yesterday's talks (&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.slideshare.net/sefftinge/xtext-eclipse-con&quot;&gt;xtext&lt;/a&gt; , &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.slideshare.net/sefftinge/generic-editor&quot;&gt;generic editor&lt;/a&gt;). Unfortunately slideshare is not able to show the embedded videos and transitions &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://koehnlein.blogspot.com/&quot;&gt;Jan&lt;/a&gt; and I put into the slides :-(&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24248206-3822679268398432602?l=blog.efftinge.de' alt=''/&gt;&lt;/div&gt;</description>
         <author>Sven Efftinge</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-24248206.post-3822679268398432602</guid>
         <pubDate>Wed, 25 Mar 2009 12:39:00 -0700</pubDate>
      </item>
      <item>
         <title>TMF Xtext M6</title>
         <link>http://blog.efftinge.de/2009/03/tmf-xtext-m6.html</link>
         <description>&lt;p&gt;The &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/modeling/tmf/downloads/?project=xtext&quot;&gt;M6 builds&lt;/a&gt; are published and ready for &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://oaw.itemis.com/openarchitectureware/language=en/2837/downloads&quot;&gt;download&lt;/a&gt;. We've prepared a &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://oaw.itemis.com/openarchitectureware/language=en/2837/downloads&quot;&gt;distro&lt;/a&gt; containing everything you need and have written a short &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wiki.eclipse.org/Xtext/GettingStarted&quot;&gt;getting started tutorial&lt;/a&gt; which should give you a feel of how Xtext works. M6 Xtext is using &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wiki.eclipse.org/MWE&quot;&gt;MWE&lt;/a&gt; and &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wiki.eclipse.org/Xpand&quot;&gt;Xpand&lt;/a&gt;, so oAW Xtext users should feel comfortable. Note that the M6 release is not intended to be used in production. We'll still change things and if you don't get support by one of the committers (see below), you might need to have good code archeologists on your site ;-). The production-ready release will be available in June (Galileo).&lt;/p&gt;&lt;p&gt;During M6 we've focused on a large number of things (see &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wiki.eclipse.org/Xtext/Documentation/Xtext_New_and_Noteworthy&quot;&gt;New and Noteworthy&lt;/a&gt;). For instance, TMF Xtext now generates EMF classes for the derived EPackages (using existing EPackages is of course supported as well). The generated EClasses make use of &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://ed-merks.blogspot.com/2009/01/emf-ultra-slim-diet.html&quot;&gt;latest improvements in EMF&lt;/a&gt;, namely the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;https://bugs.eclipse.org/bugs/show_bug.cgi?id=252501&quot;&gt;MinimalEObject&lt;/a&gt;. This has reduced memory footprint by about 30% and at the same time made the runtime even faster.&lt;/p&gt;&lt;p&gt;Another noteworthy thing is the new composable code generator API. Xtext is now shipped with lots of so called generator fragments, each adding functionality for a certain aspect. For instance, the generation of EMF classes is implemented as such a fragment. You can choose from those provided fragments, configure them individually and even add your own fragments in order to have a generator, generating exactly what you need. A fragment can contribute, to Manifest.MF, plugin.xml and the Guice modules. Sebastian has &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://zarnekow.blogspot.com/2009/03/xtext-corner-4-customizing-generator.html&quot;&gt;written&lt;/a&gt; about it.&lt;/p&gt;&lt;p&gt;Looking at &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/projects/project-plan.php?projectid=modeling.tmf&quot;&gt;our project plan&lt;/a&gt;, one can see that M6 is also the API freeze milestone. Have a look at &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.1160pm.net/2009/03/19/xtext-m6-with-more-documentation-and-stable-api/&quot;&gt;Heiko's post&lt;/a&gt; and the corresponding &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wiki.eclipse.org/Xtext/Documentation/API&quot;&gt;wiki page&lt;/a&gt; to see how we handle API contracts.&lt;/p&gt;&lt;p&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://koehnlein.blogspot.com/&quot;&gt;Jan&lt;/a&gt; and I will present &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/2009/sessions?id=436&quot;&gt;TMF Xtext M6 at EclipseCon&lt;/a&gt; next week.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;M7&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;There are a couple of things we want to do in M7 (&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;https://bugs.eclipse.org/bugs/show_bug.cgi?id=242356&quot;&gt;enum rules&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;https://bugs.eclipse.org/bugs/show_bug.cgi?id=263711&quot;&gt;lazy linking&lt;/a&gt;, etc.). In addition it's planned to put the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/proposals/emf-index/&quot;&gt;EMF Index&lt;/a&gt; into a shape, where it can become a solid foundation for linking and navigation in Xtext. Jan will give a short talk about the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/2009/sessions?id=501&quot;&gt;EMF Index at EclipseCon&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;We do consulting&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Although mentioned, that M6 is not yet production-ready, we at &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.itemis.com/&quot;&gt;itemis&lt;/a&gt; already help a couple of customers using &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.xtext.org/&quot;&gt;TMF Xtext&lt;/a&gt; in industry projects. It's so important to use new technology to solve real problems and gather feedback which is based on real projects as soon as possible. Using TMF Xtext in many different projects gives us a pretty good feel for what's important and what is not. And so far the feedback from those projects is very positive.&lt;/p&gt;&lt;p&gt;It's also good to see that our business model actually works well (even in these times). This is especially important since doing open-source development which is only funded by doing consulting, is not that common at Eclipse.&lt;/p&gt;&lt;p&gt;So, don't forget that we provide professional support! This does not mean that we won't do regular unpaid support through the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/newsportal/thread.php?group=eclipse.modeling.tmf&quot;&gt;newsgroup.&lt;/a&gt; It's just that if you need things like prototypes, reliable response times, onsite trainings, etc. &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://oaw.itemis.com/openarchitectureware/language=en/2824/professional-services&quot;&gt;you can get it&lt;/a&gt;.&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24248206-7605409475915664013?l=blog.efftinge.de' alt=''/&gt;&lt;/div&gt;</description>
         <author>Sven Efftinge</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-24248206.post-7605409475915664013</guid>
         <pubDate>Thu, 19 Mar 2009 04:06:00 -0700</pubDate>
      </item>
      <item>
         <title>itemis on TV</title>
         <link>http://blog.efftinge.de/2009/02/itemis-on-tv.html</link>
         <description>There was a competition in western Germany comparing medium-sized companies and how good they are as employer. And itemis won first price :-)&lt;br /&gt;&lt;br /&gt;See my colleagues on TV : &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://tinyurl.com/aez2bd&quot;&gt;http://tinyurl.com/aez2bd&lt;/a&gt;&lt;br /&gt;And in the Bild-Zeitung : &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://tinyurl.com/b9rpgc&quot;&gt;http://tinyurl.com/b9rpgc&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24248206-7206952587257270267?l=blog.efftinge.de' alt=''/&gt;&lt;/div&gt;</description>
         <author>Sven Efftinge</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-24248206.post-7206952587257270267</guid>
         <pubDate>Mon, 02 Feb 2009 00:00:00 -0800</pubDate>
      </item>
      <item>
         <title>Xtext - new parser backend</title>
         <link>http://blog.efftinge.de/2009/01/xtext-new-parser-backend.html</link>
         <description>So far, &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.xtext.org&quot;&gt;Xtext&lt;/a&gt;'s parsing was based on &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.antlr.org&quot;&gt;Antlr 3.0&lt;/a&gt;, a very popular Java-based parser generator.&lt;br /&gt;Unfortunately we've had an IP-issue with Antlr. As Xtext is an Eclipse project, all used libraries need to get IP-approved by the EMO. This has been done for the runtime of Antlr 3.0 but not for the generator. The generator is implemented in StringTemplate, Terence Parr's template language. The problem is that StringTemplate itself is implemented in Antlr 2.x, which won't get an approvement, because it is not clear where all it's code orginally comes from.&lt;br /&gt;As Terence won't be able to migrate StringTemplate to Antlr 3.0 before this summer, we had to solve this somehow. :-(&lt;br /&gt;&lt;br /&gt;The good news are, that we found a very nice solution:&lt;br /&gt; &lt;span style=&quot;font-weight:bold;&quot;&gt;We're implementing our own parser generator :-)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Actually &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://zarnekow.blogspot.com/&quot;&gt;Sebastian&lt;/a&gt; already did so and is still working on things like error recovery and error reporting. The parser backend is based on a &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://pdos.csail.mit.edu/%7Ebaford/packrat/&quot;&gt;packrat parsing algorithm&lt;/a&gt;, which means it is scanner-less. We've read &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.cs.ucla.edu/%7Eawarth/papers/dls07.pdf&quot;&gt;all&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.cs.nyu.edu/rgrimm/papers/pldi06.pdf&quot;&gt;kinds&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://pdos.csail.mit.edu/%7Ebaford/packrat/thesis&quot;&gt;of related papers&lt;/a&gt; (Actually, I was surprised how good the quality of those papers are) and played around with prototypes.&lt;br /&gt;&lt;br /&gt;The new implementation is three times faster. This does not mean that Antlr is three times slower, but that we've used it in a rather expensive way :-). The replacement of a lexer-based parser with a packrat algorithm also allows for much simpler composition of grammars (a.k.a. grammar modularization). And we can provide nice hooks for error recovery and handling.&lt;br /&gt;&lt;br /&gt;We now develop both solutions in parallel, so that the dependency to Antlr's generator is only 'works-with' as oppposed to 'pre-req'. But we hope that we're soon able to remove the Antlr implementation completely.&lt;br /&gt;&lt;br /&gt;Stay tuned.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24248206-6403206919806906272?l=blog.efftinge.de' alt=''/&gt;&lt;/div&gt;</description>
         <author>Sven Efftinge</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-24248206.post-6403206919806906272</guid>
         <pubDate>Mon, 19 Jan 2009 08:13:00 -0800</pubDate>
      </item>
      <item>
         <title>Xtext Scopes and EMF Index</title>
         <link>http://blog.efftinge.de/2009/01/xtext-scopes-and-emf-index.html</link>
         <description>There is a new proposal for a so called &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/proposals/emf-index/&quot;&gt;EMF Index&lt;/a&gt;. At ESE I got the impression that a lot of people are looking for such a thing or have already built their own. To make clear what we expect from such a project, I'll try to explain why and how TMF Xtext needs such an &quot;Index&quot;.&lt;br /&gt;&lt;br /&gt;The main difference between &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.xtext.org&quot;&gt;Xtext&lt;/a&gt; and &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://msdn.microsoft.com/en-us/library/dd129869.aspx&quot;&gt;Oslo's MGrammar&lt;/a&gt; or other parser generators, is that Xtext not only provides abstractions (mostly DSLs) to describe the syntax of a language, but also for implementing other aspects. One is linking. So where other frameworks create a tree, Xtext also takes care of the cross-links, hence creates a graph (a.k.a model).&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;font-size:100%;&quot;&gt;How does this work?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Let me explain this by example.&lt;br /&gt;Assume you want to parse the following model:&lt;br /&gt;&lt;pre&gt;entity Animal&lt;br /&gt;entity Dog extends Animal&lt;br /&gt;&lt;/pre&gt;That is, two declarations of something we call 'entity' one 'extending' the other. The extend declaration 'extends Animal' cross-links to the actual declaration 'entity Animal'.&lt;br /&gt;So that we're able to write something like this when working on the parsed model later:&lt;br /&gt;&lt;pre&gt;myDog.getExtends().getName().equals(&quot;Animal&quot;)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;What do we need to do, to get this working?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;First of all, one has to specify the syntax of the language including the syntax for the cross link. With Xtext one not only specifies the syntax but also writes down how a model is created during parsing:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;MyModel : (entities+=Entity)*;&lt;br /&gt;Entity : 'entity' name=ID ('extends' extends=[Entity|ID])?;&lt;br /&gt;&lt;/pre&gt;This would result in an ecore model of the following structure:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;EPackage {&lt;br /&gt; EClass MyModel {&lt;br /&gt; containment entities : Entity[]&lt;br /&gt; }&lt;br /&gt; EClass Entity {&lt;br /&gt; name : EString&lt;br /&gt; extends : Entity // the crosslink&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;Naturally a parser is only able to create a tree, so parsing an instance of the DSL defined above would result in an unlinked model, which has to be linked in a second phase using the provided ID (which was 'Animal' in the introductory example).&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;So how do I find an Entity which is 'identifiable' by the text 'Animal'?&lt;/span&gt;&lt;br /&gt;By default Xtext assumes that the name of an EObject (if it's EClass has such an EAttribute) is the identifier. All the named elements within the same file are visible (as long as they have a unique name). We also have a very simple import mechanism:&lt;br /&gt;If you have an EObject, containing a string in an EAttribute called '&lt;span style=&quot;font-style:italic;&quot;&gt;importedURI&lt;/span&gt;', Xtext automatically creates an outer scope containing the content of the referred EMF Resource. &quot;Outer scope&quot; what's that?&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Scoping&lt;/span&gt;&lt;br /&gt;In Xtext scopes (&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.tmf/org.eclipse.xtext/plugins/org.eclipse.xtext/src/org/eclipse/xtext/crossref/IScope.java?root=Modeling_Project&amp;amp;view=markup&quot;&gt;IScope&lt;/a&gt;) are nested. Each scope makes EObjects visible by an identifier (String).&lt;br /&gt;Assume we have added the import feature described above:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;MyModel :&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;(imports+=Import)*&lt;/span&gt;&lt;br /&gt;(entities+=Entity)*;&lt;br /&gt;&lt;br /&gt;Import :&lt;br /&gt;'import' &lt;span style=&quot;font-weight:bold;&quot;&gt;importedURI&lt;/span&gt;=STRING;&lt;br /&gt;&lt;br /&gt;Entity :&lt;br /&gt;'entity' name=ID ('extends' extends=[Entity|ID])?;&lt;br /&gt;&lt;/pre&gt;... we would be able to have two files:&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;myModel1.dsl&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt; entity Animal&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;and &lt;span style=&quot;font-style:italic;&quot;&gt;otherModel.dsl&lt;/span&gt;&lt;br /&gt;&lt;pre&gt; import &quot;myModel1.dsl&quot;&lt;br /&gt;entity Dog extends Animal&lt;br /&gt;&lt;/pre&gt;The scope used to do the linking in the declaration of entity 'Dog' would have an outer scope containing the definitions from the imported file ('-&amp;gt;' means outer):&lt;br /&gt;&lt;pre&gt; scope (elements from otherModel.dsl) -&amp;gt; scope(elements from myModels1.dsl)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;If we would add additional import statements, we would get additional outer scopes in the order of declaration:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;import &quot;myModel1.dsl&quot;&lt;br /&gt;import &quot;myModel2.dsl&quot;&lt;br /&gt;import &quot;myModel3.dsl&quot;&lt;br /&gt;entity Dog extends Animal&lt;br /&gt;&lt;/pre&gt;results in&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;scope(elements from local resource) -&amp;gt;&lt;br /&gt;scope(elements from myModels1.dsl) -&amp;gt;&lt;br /&gt;scope(elements from myModels2.dsl) -&amp;gt;&lt;br /&gt;scope(elements from myModels3.dsl)&lt;br /&gt;&lt;/pre&gt;So the linker would ask the most inner scope for an element called 'Animal'. If it contains such an element it returns it if not it asks it's outer scope.&lt;br /&gt;This means that an inner scope overlays elements from the outer scope. So it would be ok to have a declaration of 'Animal' in the local file, but the one imported from 'myModel1.dsl' wouldn't be referenceable anymore.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;import &quot;myModel1.dsl&quot;&lt;br /&gt;entity Dog extends Animal&lt;br /&gt;entity Animal // this one overlays the definition imported from myModel.dsl&lt;br /&gt;&lt;/pre&gt;If you don't want to allow overwriting things, you'll have to add constraints, which is of course possible but is a different topic.&lt;br /&gt;Ok, I hope you have an idea of how linking in TMF Xtext basically works.&lt;br /&gt;&lt;br /&gt;Although the described default semantics might be sufficient in many cases, sometimes scoping and linking is a bit more sophisticated. We won't need (and currently have) something like an Index, but it might speed things up, if one wouldn't need to load referenced resources while linking but just ask something like an Index, what's in a resource. The Index could provide a normalized EMF URI, which can then be set into a proxy.&lt;br /&gt;Also there are IDE things like &quot;Find Model Element&quot; or code completion for available resources, which would be easy to implement on top of an EMF Index.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Advanced Scoping and Linking&lt;/span&gt;&lt;br /&gt;Anyway, if you want to have something more file-system independent like Java's class path, where one imports name spaces instead of actual URIs, you would need some kind of repository (similar to the class path) containing all referenceable elements. This is because it would far two expensive to &quot;scan the world&quot; each time you want to satisfy a link.&lt;br /&gt;&lt;br /&gt;In fact I think that leveraging the Java class path is a very good idea, since it is well understood by Xtext users and is well supported in the development phase (Eclipse JDT, or even the OSGi support from PDT) and at runtime. That's why Xtext has a URIConverter introducing a class path scheme for EMF resources. So what we want to do most of the time is to scan the class path for EMF resources and index them.&lt;br /&gt;We would need to index them per container (jar, class-folder, etc.), because the class path is also scoped hierarchically.&lt;br /&gt;Such a hierarchy could look like so:&lt;br /&gt;&lt;pre&gt; classpathScope{stuff from bin/} -&amp;gt;&lt;br /&gt;classpathScope{stuff from foo.jar/} -&amp;gt;&lt;br /&gt;... -&amp;gt;&lt;br /&gt;classpathScope{stuff from JRE System Library}&lt;br /&gt;&lt;/pre&gt;And of course, we would like to have these global scopes backed up by the EMF Index transparently integrated into our scoping hierarchy. This turns out to be very natural if we look into a final example, showing how we would implement the scoping for Java:&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align:left;&quot;&gt;&lt;pre class=&quot;source-java&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// file contents scope&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;co2&quot;&gt;import static my.Constants.&lt;span style=&quot;font-weight:bold;&quot;&gt;STATIC&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; ScopeExample &lt;span class=&quot;br0&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// class body scope&lt;/span&gt;&lt;br /&gt; &lt;span class=&quot;kw2&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;Object&lt;/span&gt; &lt;span style=&quot;font-weight:bold;&quot;&gt;field&lt;/span&gt; = &lt;span class=&quot;kw2&quot;&gt;null&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt; &lt;span class=&quot;kw2&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; method&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;String&lt;/span&gt; &lt;span style=&quot;font-weight:bold;&quot;&gt;param&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// method body scope&lt;/span&gt;&lt;br /&gt; &lt;span class=&quot;kw3&quot;&gt;String&lt;/span&gt; &lt;span style=&quot;font-weight:bold;&quot;&gt;localVar&lt;/span&gt; = null;&lt;br /&gt; innerBlock: &lt;span class=&quot;br0&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// block scope&lt;/span&gt;&lt;br /&gt; &lt;span class=&quot;kw3&quot;&gt;String&lt;/span&gt; &lt;span style=&quot;font-weight:bold;&quot;&gt;innerScopeVar&lt;/span&gt; = null&lt;span class=&quot;st0&quot;&gt;&lt;/span&gt;;&lt;br /&gt; &lt;span class=&quot;kw3&quot;&gt;Object&lt;/span&gt; &lt;span style=&quot;font-weight:bold;&quot;&gt;field&lt;/span&gt; = null;&lt;br /&gt; &lt;span class=&quot;co1&quot;&gt;// ?SCOPE?&lt;/span&gt;&lt;br /&gt; &lt;span class=&quot;br0&quot;&gt;}&lt;/span&gt;&lt;br /&gt; &lt;span class=&quot;br0&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;br0&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;font-family:Georgia, serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;The object scope created in the inner block (//?SCOPE?) would look like so:&lt;br /&gt;&lt;pre&gt; blockScope{field,innerScopeVar}-&amp;gt;&lt;br /&gt;methodScope{localVar,param}-&amp;gt;&lt;br /&gt;classScope{field}-&amp;gt;&lt;br /&gt;fileScope{STATIC}-&amp;gt; //the static import&lt;br /&gt;classpathScope{static fields from bin/} -&amp;gt; // (e.g. my.Constants.STATIC)&lt;br /&gt;classpathScope{static fields from foo.jar/} -&amp;gt;&lt;br /&gt;... -&amp;gt;&lt;br /&gt;classpathScope{static fields JRE System Library}&lt;br /&gt;&lt;/pre&gt;For performance reasons it would be useful to have some kind of database (EMF Index) backing up the class path scopes. Especially during development (modeling) , because it would be necessary to re-index changed models.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;EMF Index&lt;/span&gt;&lt;br /&gt;So mainly we want to have something which tells us what elements are available in a given 'world'. Such a 'world' like a Java class path includes EObjects (from several EMF resources). It should be possible to define and configure arbitrary implementations of 'worlds' (databases, web, workspace, etc.). Elements contained in a world, need to be selectable using an identifier (unique within a world). It also should be possible to add arbitrary additional information to such entry.&lt;br /&gt;&lt;br /&gt;As mentioned, IMHO such an Index is important to track changes during development (i.e. modeling). Also we want to have code completion for globally available elements, look model elements up by name, etc.. At runtime we need to load all the models anyway, so the need for an index is not that important.&lt;br /&gt;&lt;br /&gt;This has been a lengthy post (sorry). But if you made it to this point, it would be very helpful to hear what you think about this. Would the scope abstraction work for the languages you have in mind? What do you expect from an EMF Index? Maybe answers to the latter question better go to the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/newsportal/thread.php?group=eclipse.technology.emft&quot;&gt;EMFT news group&lt;/a&gt; :-)&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24248206-5698183814198237939?l=blog.efftinge.de' alt=''/&gt;&lt;/div&gt;</description>
         <author>Sven Efftinge</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-24248206.post-5698183814198237939</guid>
         <pubDate>Thu, 08 Jan 2009 02:32:00 -0800</pubDate>
      </item>
      <item>
         <title>EMFatic implemented in TMF Xtext (Screencast)</title>
         <link>http://blog.efftinge.de/2009/01/emfatic-implemented-in-tmf-xtext.html</link>
         <description>&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://3.bp.blogspot.com/_Ii_da0jTxAY/SWPM4FsNY8I/AAAAAAAAALA/qlwpEjz7zyo/s1600-h/Picture+3.png&quot;&gt;&lt;img style=&quot;margin:0pt 0pt 10px 10px;float:right;cursor:pointer;width:249px;height:150px;&quot; src=&quot;http://3.bp.blogspot.com/_Ii_da0jTxAY/SWPM4FsNY8I/AAAAAAAAALA/qlwpEjz7zyo/s400/Picture+3.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5288295651435439042&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;https://www.xing.com/profile/Michael_Clay&quot;&gt;Michael Clay&lt;/a&gt; is working on a &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.xtext.org/&quot;&gt;TMF Xtext&lt;/a&gt; implementation of &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.google.de/url?sa=t&amp;amp;source=web&amp;amp;ct=res&amp;amp;cd=1&amp;amp;url=http%3A%2F%2Fwiki.eclipse.org%2FEmfatic&amp;amp;ei=OcxjSZCgN4PI0gWauZjKCA&amp;amp;usg=AFQjCNHIeZkbqChplH0Na4Q5uUlzB1-WsQ&amp;amp;sig2=rWt1usX4SEcxaKGsxEaNyw&quot;&gt;EMFatic&lt;/a&gt; (see &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.screencast.com/t/UAtBcfRF&quot;&gt;this screencast&lt;/a&gt;).&lt;br /&gt;He's also prepared &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.screencast.com/t/5wek9C3FIr&quot;&gt;a screencast&lt;/a&gt; showing template proposals on &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://martinfowler.com/dslwip/Intro.html#TheStateMachineFramework&quot;&gt;Martin Fowler's DSL example&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;We'll show more of &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/2009/sessions?id=436&quot;&gt;TMF Xtext at EclipseCon&lt;/a&gt; in march.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24248206-20250601843045910?l=blog.efftinge.de' alt=''/&gt;&lt;/div&gt;</description>
         <author>Sven Efftinge</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-24248206.post-20250601843045910</guid>
         <pubDate>Tue, 06 Jan 2009 14:04:00 -0800</pubDate>
         <media:thumbnail width="72" url="http://3.bp.blogspot.com/_Ii_da0jTxAY/SWPM4FsNY8I/AAAAAAAAALA/qlwpEjz7zyo/s72-c/Picture+3.png" height="72" xmlns:media="http://search.yahoo.com/mrss/"/>
      </item>
      <item>
         <title>W-JAX slides online</title>
         <link>http://blog.efftinge.de/2008/11/w-jax-slides-online.html</link>
         <description>I've just uploaded the slides of the presentations I gave at last weeks W-JAX conference in munich.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.slideshare.net/sefftinge/scala-737461/&quot;&gt;Scala&lt;/a&gt; - (It's an introduction to a programming language called Scala. Most of the slides contain code snippets only, so it may not be that usable without explanation.)&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.slideshare.net/sefftinge/MissingFeaturesInJava/&quot;&gt;Vermisste Sprachfeatures in Java&lt;/a&gt; (it's in german and is about some IMHO important language features Java lacks.)&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24248206-3563756476852141672?l=blog.efftinge.de' alt=''/&gt;&lt;/div&gt;</description>
         <author>Sven Efftinge</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-24248206.post-3563756476852141672</guid>
         <pubDate>Mon, 10 Nov 2008 06:12:00 -0800</pubDate>
      </item>
      <item>
         <title>Multi-line String Literals in Java</title>
         <link>http://blog.efftinge.de/2008/10/multi-line-string-literals-in-java.html</link>
         <description>Having multi-line string literals is a common and useful thing in most modern languages. It is for instance very convenient to use multi-line strings to specify test data in-line as opposed to referring to external files containing the data. As Java lackes multi-line string literals, one observes the definition of data in external files very often.&lt;br /&gt;&lt;br /&gt;I've implemented multi-line strings in Java using a library approach, so that it's possible to write the following:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; /**&lt;br /&gt; * @param args&lt;br /&gt; */&lt;br /&gt; public static void main(String[] args) {&lt;br /&gt; System.out.println(S(/* &lt;br /&gt; Wow, we finally have&lt;br /&gt; multiline strings in&lt;br /&gt; Java! HOOO!&lt;br /&gt; */));&lt;br /&gt; }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;which will print the following to standard out:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; Wow, we finally have&lt;br /&gt; multiline strings in&lt;br /&gt; Java! HOOO!&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;How does this work?&lt;br /&gt;Well, first of all you have to make sure that your source is on the class path, then the following code does the job:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; public static String S() {&lt;br /&gt; StackTraceElement element = new RuntimeException().getStackTrace()[1];&lt;br /&gt; String name = element.getClassName().replace('.', '/') + &quot;.java&quot;;&lt;br /&gt; InputStream in = getClassLoader().getResourceAsStream(name);&lt;br /&gt; String s = convertStreamToString(in, element.getLineNumber());&lt;br /&gt; return s.substring(s.indexOf(&quot;/*&quot;)+2, s.indexOf(&quot;*/&quot;));&lt;br /&gt; }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Obviously this don't perform that well, but for unit testing it's sufficient. &lt;br /&gt;Maybe it would be cool to add some support for interpolation functionality to it (using e.g. groovy or Xpand).&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24248206-8796355388424654294?l=blog.efftinge.de' alt=''/&gt;&lt;/div&gt;</description>
         <author>Sven Efftinge</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-24248206.post-8796355388424654294</guid>
         <pubDate>Fri, 17 Oct 2008 05:28:00 -0700</pubDate>
      </item>
      <item>
         <title>Article on Xtext and oAW</title>
         <link>http://blog.efftinge.de/2008/09/article-on-xtext-and-oaw.html</link>
         <description>I just found &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.mt-ag.com/web/download/experts_library/special_interest_artikel/Implementation%20and%20Integration%20of%20a%20DSL.pdf&quot;&gt;a really nice article/tutorial on Xtext and oAW&lt;/a&gt; on the web.&lt;br /&gt;&lt;br /&gt;It walks you through the process of&lt;br /&gt;1) designing a dsl with xtext&lt;br /&gt;2) adding constraints&lt;br /&gt;3) enhancing the generated text editor&lt;br /&gt;4) generating some code out of it&lt;br /&gt;in great detail (about 30) and very well written.&lt;br /&gt;&lt;br /&gt;The author comes to this nice conclusion :&lt;br /&gt;&lt;blockquote&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;Finally, consider the effort we had to invest. It took a couple of pages to describe the process, but when you count the actual lines of code we had to write and the number of clicks we had to perform, you may agree that this does not amount to anything worth worrying about. The framework kept most of the complexities away from us. &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;It is the power of frameworks like oAW that let us leverage the potential of DSLs and related concepts into our daily projects.&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;:-)&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24248206-3533038578504554843?l=blog.efftinge.de' alt=''/&gt;&lt;/div&gt;</description>
         <author>Sven Efftinge</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-24248206.post-3533038578504554843</guid>
         <pubDate>Wed, 24 Sep 2008 01:13:00 -0700</pubDate>
      </item>
      <item>
         <title>Language feature supporting internal DSLs</title>
         <link>http://blog.efftinge.de/2008/09/language-feature-supporting-internal.html</link>
         <description>There's a lot of discussion going on about internal or embedded DSLs and what programming languages are best suited to develop them.&lt;br /&gt;Mainly an internal DSL is about pushing the syntactic flexibility of a language to it's limits in order to write against an API in a domain-specific manner. What that means depends on the DSL but in most cases it means simplification of client code by implying context, allowing declarativity and avoiding &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://en.wikipedia.org/wiki/Don%27t_repeat_yourself&quot;&gt;DRY&lt;/a&gt;-violation.&lt;br /&gt;&lt;br /&gt;Many people think, that it is the dynamic nature of a language which makes it suitable for internal DSLs. That is only partly true. More important than the possibility to do meta programming is to have a flexible syntax allowing to invoke functions with different syntaxes (omitting paranthesis, semicolons, etc.). Ruby and Scala are both very flexible in this sense.&lt;br /&gt;&lt;br /&gt;Working on the new version of &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.xtext.org&quot;&gt;Xtext&lt;/a&gt;, I had an idea for what I think would be a cool language feature.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Introducing new syntax via libraries&lt;/span&gt;&lt;br /&gt;When declaring a function, one typically only declares a name and what kind of parameters need to be passed in. Programming languages themselfs then have defined a (more or less flexible) generic way of how such functions can be invoked.&lt;br /&gt;&lt;br /&gt;Example:&lt;br /&gt;&lt;pre&gt;def foo(String x) : &quot;foo&quot;+x;&lt;/pre&gt;which is invoked like this :&lt;br /&gt;&lt;pre&gt;foo(&quot;bar&quot;)&lt;/pre&gt;Imagine a language which alternatively allows to specify the concrete syntax of how such a function is invoked.:&lt;br /&gt;&lt;pre&gt;def myFunc : 'foo' x=ID : &quot;foo&quot;+x;&lt;/pre&gt;Where the part between the first and the second colon introduces a new syntax (I've reused the Xtext syntax here) which can be used to invoke the function, so one could simply write:&lt;br /&gt;&lt;pre&gt;foo bar&lt;/pre&gt;Where 'foo' is a newly introduced keyword (limited to the static scope where the definition is visible of course) and bar is an identifier which is a builtin lexer token of type String.&lt;br /&gt;&lt;br /&gt;Another example:&lt;br /&gt;&lt;pre&gt;def Person :&lt;br /&gt; ('girl'|male?='boy') name=ID (lastName=ID)? ('from' city=ID)? :&lt;br /&gt; new Person(male,name,lastName,city);&lt;br /&gt;&lt;br /&gt;def greet :&lt;br /&gt; p1=Person 'greets' 'the'? p2=Person :&lt;br /&gt; p2.greetedBy = p1;&lt;br /&gt;&lt;/pre&gt;which would allow for expressions like:&lt;br /&gt;&lt;pre&gt;boy Sven from Kiel greets the girl Scarlett Johansson&lt;/pre&gt;and would effectively construct two instances of person and link them. :-)&lt;br /&gt;&lt;br /&gt;Obviously this would be a tough thing to implement (parsers which dynamically change their behaviour) and it would also be problematic to avoid ambiguities with syntaxes imported by other libraries or introduced by the host language. I haven't spent much time on thinking it out yet. So maybe there are obvious show stoppers I overlooked or one of your neighbors has already developed such a language a decade ago?&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24248206-4609380187109332640?l=blog.efftinge.de' alt=''/&gt;&lt;/div&gt;</description>
         <author>Sven Efftinge</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-24248206.post-4609380187109332640</guid>
         <pubDate>Thu, 18 Sep 2008 13:49:00 -0700</pubDate>
      </item>
      <item>
         <title>EuGENia: Polishing your GMF editor</title>
         <link>http://epsilonblog.wordpress.com/2009/06/15/eugenia-polishing-your-gmf-editor/</link>
         <description>EuGENia is a front-end for GMF that enables developers to generate a fully functional GMF editor by attaching a few high-level annotations to the Ecore metamodel. The original aim of EuGENia was to lower the entrance barrier for new GMF users and enable people to quickly and easily develop the first version of their editor.
However, [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=epsilonblog.wordpress.com&amp;blog=2097844&amp;post=136&amp;subd=epsilonblog&amp;ref=&amp;feed=1&quot;/&gt;</description>
         <guid isPermaLink="false">http://epsilonblog.wordpress.com/?p=136</guid>
         <pubDate>Mon, 15 Jun 2009 07:09:36 -0700</pubDate>
         <content:encoded><![CDATA[<div class='snap_preview'><br /><p><a rel="nofollow" target="_blank" href="http://www.eclipse.org/gmt/epsilon/doc/eugenia">EuGENia</a> is a front-end for GMF that enables developers to generate a fully functional GMF editor by attaching a few high-level annotations to the Ecore metamodel. The original aim of EuGENia was to lower the entrance barrier for new GMF users and enable people to quickly and easily develop the first version of their editor.</p>
<p>However, after the initial excitement of (at last) being able to get a working GMF editor with minimal effort and no cryptic error messages, all users (including ourselves) used to come to a dead-end. EuGENia could generate an editor that looked 90% similar to what we wanted but when we started polishing the .gmfgraph, .gmftool, .gmfmap and .gmfgen models manually to get to 100%, it meant we couldn&#8217;t use EuGENia any more as subsequent invocations of the tool would overwrite our manual changes. Obviously, providing support in EuGENia for all the options that GMF provides wouldn&#8217;t be reasonable either as this would progressively make EuGENia as complex as GMF itself.</p>
<p>Our first thought was to try merging (instead of overwriting) the generated with the existing GMF models, but due to the complexity and inter-weaving of these models we’ve found no sensible way of doing this in an automated way. Therefore, we’ve come up with a different solution.</p>
<p>Behind the scenes, EuGENia runs set of model-to-model transformations written in <a rel="nofollow" target="_blank" href="http://www.eclipse.org/gmt/epsilon/doc/eol">EOL</a> which generate the necessary GMF models from the annotated Ecore metamodel. In order to accommodate the need for persistent customizations, we’re now allowing developers to specify their own little EOL scripts next to the annotated Ecore metamodel, which are responsible for customizing the generated GMF models.</p>
<p>Let’s go straight into a short example. We define this minimal flowchart metamodel using Emfatic.</p>
<pre style="font-size:11px;">@namespace(uri="flowchart", prefix="flowchart")
package flowchart; @gmf.diagram(foo="bar")
class Flowchart { val Node[*] nodes; val Transition[*] transitions;
} @gmf.node(label="name", label.icon="false")
abstract class Node { attr String name; ref Transition[*]#source outgoing; ref Transition[*]#target incoming;
} @gmf.link(label="name", source="source", target="target", target.decoration="arrow")
class Transition { attr String name; ref Node#outgoing source; ref Node#incoming target;
} class Subflow extends Flowchart, Node{ } @gmf.node(figure= "org.eclipse...examples.flowchart.diagram.figures.SquareFigure")
class Action extends Node { } @gmf.node(figure= "org.eclipse...examples.flowchart.diagram.figures.DiamondFigure")
class Decision extends Node { }</pre>
<p>We then use EuGENia to generate a GMF editor out of it and here is what we get:</p>
<p><a rel="nofollow" target="_blank" href="http://epsilonblog.files.wordpress.com/2009/06/image.png"><img style="border-width:0;" src="http://epsilonblog.files.wordpress.com/2009/06/image_thumb.png?w=469&#038;h=442" border="0" alt="image" width="469" height="442"/></a></p>
<p>However, what we’d really like to get is this (spot the differences?)</p>
<p><a rel="nofollow" target="_blank" href="http://epsilonblog.files.wordpress.com/2009/06/image1.png"><img src="http://epsilonblog.files.wordpress.com/2009/06/image_thumb1.png?w=469&#038;h=442" border="0" alt="image" width="469" height="442"/></a></p>
<p>To achieve this we need to tweak a few things in the flowchart.gmfgraph model:</p>
<p><a rel="nofollow" target="_blank" href="http://epsilonblog.files.wordpress.com/2009/06/image2.png"><img style="border-width:0;" src="http://epsilonblog.files.wordpress.com/2009/06/image_thumb2.png?w=404&#038;h=528" border="0" alt="image" width="404" height="528"/></a></p>
<p>We can either do these changes manually after every invocation of EuGENia (boring), or specify the changes in the following ECore2GMF.eol script next to our metamodel.</p>
<p><a rel="nofollow" target="_blank" href="http://epsilonblog.files.wordpress.com/2009/06/image3.png"><img style="border-width:0;" src="http://epsilonblog.files.wordpress.com/2009/06/image_thumb3.png?w=267&#038;h=323" border="0" alt="image" width="267" height="323"/></a></p>
<p><strong>ECore2GMF.eol:</strong></p>
<pre style="font-size:11px;">-- Set text of transitionLabel to empty string
var transitionLabel = GmfGraph!Label. selectOne(l|l.name='TransitionLabelLabel');
transitionLabel.text = ''; -- Add bold font to actionLabel
var actionLabel = GmfGraph!Label. selectOne(l|l.name='ActionLabelFigure');
actionLabel.font = new GmfGraph!BasicFont;
actionLabel.font.style = GmfGraph!FontStyle#BOLD; -- Add italic font to actionLabel
var decisionLabel = GmfGraph!Label. selectOne(l|l.name='DecisionLabelFigure');
decisionLabel.font = new GmfGraph!BasicFont;
decisionLabel.font.style = GmfGraph!FontStyle#ITALIC;</pre>
<p>Now, each time we click <em>Eugenia-&gt;Generate GMF tool, graph and map models</em>, EuGENia will perform the built-in transformation and then it will also run our custom script on the generated models so that we can get the tailored output we need. Similarly, by specifying a transformation named FixGMFGen.eol we can customize the generated .gmfgen model (in this example we <a rel="nofollow" target="_blank" href="http://dev.eclipse.org/svnroot/modeling/org.eclipse.gmt.epsilon/trunk/examples/org.eclipse.epsilon.eugenia.examples.flowchart/model/FixGMFGen.eol">add a dependency</a> to the figures plugin).</p>
<p>Except for enabling developers to now use EuGENia throughout the GMF editor development process, this extension also provides a good evolution mechanism for EuGENia itself. Reoccurring scripts will be good candidates for inclusion in the form of high-level annotations, that will be natively supported by future versions of the tool.</p>
<p>The complete source code of this example is available (projects named org.eclipse.epsilon.eugenia.examples.flowchart.*) in the <a rel="nofollow" target="_blank" href="http://dev.eclipse.org/svnroot/modeling/org.eclipse.gmt.epsilon/trunk/examples">SVN</a>. You can also find another example, as well as more technical details about this extension <a rel="nofollow" target="_blank" href="http://epsilonlabs.wiki.sourceforge.net/EuGENia+Customization">here</a>.</p> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/epsilonblog.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/epsilonblog.wordpress.com/136/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/epsilonblog.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/epsilonblog.wordpress.com/136/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/epsilonblog.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/epsilonblog.wordpress.com/136/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/epsilonblog.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/epsilonblog.wordpress.com/136/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/epsilonblog.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/epsilonblog.wordpress.com/136/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=epsilonblog.wordpress.com&blog=2097844&post=136&subd=epsilonblog&ref=&feed=1"/></div>]]></content:encoded>
         <media:content url="http://1.gravatar.com/avatar/7c3777a06d6d0861869ef58dbfe1e26c?s=96&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&amp;amp;r=G" medium="image">
            <media:title>Dimitris Kolovos</media:title>
         </media:content>
         <media:content url="http://epsilonblog.files.wordpress.com/2009/06/image_thumb.png" medium="image">
            <media:title>image</media:title>
         </media:content>
         <media:content url="http://epsilonblog.files.wordpress.com/2009/06/image_thumb1.png" medium="image">
            <media:title>image</media:title>
         </media:content>
         <media:content url="http://epsilonblog.files.wordpress.com/2009/06/image_thumb2.png" medium="image">
            <media:title>image</media:title>
         </media:content>
         <media:content url="http://epsilonblog.files.wordpress.com/2009/06/image_thumb3.png" medium="image">
            <media:title>image</media:title>
         </media:content>
         <category>Uncategorized</category>
      </item>
      <item>
         <title>New in Epsilon 0.8.5</title>
         <link>http://epsilonblog.wordpress.com/2009/05/24/new-in-epsilon-0-8-5/</link>
         <description>Apart from adding support for managing inconsistent EMF models with HUTN, and fixing several bugs, version 0.8.5 of Epsilon also includes a few new and noteworthy features.
Use of = both for assignment and for comparison
As EOL builds on OCL, it (re)uses = for comparison (e.g. if (a = b) {&amp;#8230;}) and := for assignment (e.g. [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=epsilonblog.wordpress.com&amp;blog=2097844&amp;post=108&amp;subd=epsilonblog&amp;ref=&amp;feed=1&quot;/&gt;</description>
         <guid isPermaLink="false">http://epsilonblog.wordpress.com/?p=108</guid>
         <pubDate>Sat, 23 May 2009 19:58:39 -0700</pubDate>
         <content:encoded><![CDATA[<div class='snap_preview'><br /><p>Apart from adding support for <a rel="nofollow" target="_blank" href="http://epsilonblog.wordpress.com/2009/04/27/managing-inconsistent-models-with-hutn/">managing inconsistent EMF models with HUTN</a>, and fixing several <a rel="nofollow" target="_blank" href="https://bugs.eclipse.org/bugs/buglist.cgi?product=gmt&amp;component=Epsilon&amp;cmdtype=doit&amp;order=Reuse+same+sort+as+last+time">bugs</a>, version 0.8.5 of Epsilon also includes a few new and noteworthy features.</p>
<p><strong>Use of = both for assignment and for comparison</strong></p>
<p>As EOL builds on OCL, it (re)uses = for comparison (e.g. if (a = b) {&#8230;}) and := for assignment (e.g. a := b;). As <a rel="nofollow" target="_blank" href="http://epsilonblog.wordpress.com/2009/04/20/test-driven-development-for-epsilon/">Louis reported here</a>, this has been a source of confusion and well-camouflaged errors because when a mistyped a = b; assignment statement is executed, it will do nothing, but will not complain either. To deal with this we decided to follow the old <a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Visual_Basic">VB6</a> paradigm and support = both for assignment (in addition to the := that of course still works) and for comparison. Therefore, since 0.8.5 the following code runs just fine:</p>
<pre style="font-size:11px;">var x = 2;
(x*x).println(); -- prints 4</pre>
<p><strong>Support for additional options in EuGENia</strong></p>
<p>We&#8217;ve added support for several more options to <a rel="nofollow" target="_blank" href="http://epsilonblog.wordpress.com/2008/08/04/eugenia-kick-start-your-gmf-editor-development/">EuGENia</a> (the front-end provided by Epsilon for simplifying the development of GMF editors), such as for specifying if the model and the diagram are to be stored in the single file, for defining the extensions of the model and diagram files etc. A complete list of the supported options is available <a rel="nofollow" target="_blank" href="http://epsilonlabs.wiki.sourceforge.net/EuGENia">here</a>. Kudos to Michael Moser for putting in <a rel="nofollow" target="_blank" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=265285">these</a> <a rel="nofollow" target="_blank" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=265609">requests</a> for <a rel="nofollow" target="_blank" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=268085">enhancement</a> in the bugzilla.</p>
<p><strong>Support for float and double numbers in EOL</strong></p>
<p>The EOL Real type now provides support both for Double and for Float numbers (only floats were supported up to 0.8.4). Kudos to Aleksander Bandelj for raising <a rel="nofollow" target="_blank" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=270570">this issue</a> in the bugzilla.</p>
<p><strong>ANT tasks for EMF models</strong></p>
<p>The new epsilon.emf.loadModel task has been added to the list of Epsilon ANT tasks as an alternative for the generic &#8211; but more cumbersome &#8211; epsilon.loadModel task. Using the new task, a sample UML model can be loaded as follows:</p>
<pre style="font-size:11px;">&lt;project default="main"&gt; &lt;target name="main"&gt; &lt;epsilon.emf.loadModel name="MyUMLModel" modelfile="sample.uml" metamodeluri="http://www.eclipse.org/uml2/2.1.0/UML" read="true" store="false" /&gt; &lt;epsilon.eol&gt; MyUMLModel!Class.all.size().println(); &lt;model ref="MyUMLModel"/&gt; &lt;/epsilon.eol&gt; &lt;/target&gt;
&lt;/project&gt;</pre>
<p>We&#8217;ve also added two more EMF-specific tasks. The epsilon.emf.register task, which registers the EPackages of an Ecore file to the EPackage registry:</p>
<pre style="font-size:11px;">&lt;project default="main"&gt; &lt;target name="main"&gt; &lt;epsilon.emf.register file="sample.ecore" /&gt; &lt;/target&gt;
&lt;/project&gt;</pre>
<p>and the epsilon.emf.loadRegisteredMetamodel which can load a registered EPackage as a model that can be then accessed by other Epsilon tasks:</p>
<pre style="font-size:11px;">&lt;project default="main"&gt; &lt;target name="main"&gt; &lt;epsilon.emf.loadRegisteredMetamodel name="UMLM2" metamodeluri="http://www.eclipse.org/uml2/2.1.0/UML" /&gt; &lt;epsilon.eol&gt; UMLM2!EClass.all.size().println(); -- Prints 246 &lt;model ref="UMLM2"/&gt; &lt;/epsilon.eol&gt; &lt;/target&gt;
&lt;/project&gt;</pre>
<p>We are working on more enhancements, such as support for multiple iterators in first order logic operations (kudos to Edd Turner), and Java-ifications for the upcoming 0.8.6 which will be made available in late June. Stay tuned!</p> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/epsilonblog.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/epsilonblog.wordpress.com/108/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/epsilonblog.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/epsilonblog.wordpress.com/108/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/epsilonblog.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/epsilonblog.wordpress.com/108/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/epsilonblog.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/epsilonblog.wordpress.com/108/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/epsilonblog.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/epsilonblog.wordpress.com/108/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=epsilonblog.wordpress.com&blog=2097844&post=108&subd=epsilonblog&ref=&feed=1"/></div>]]></content:encoded>
         <media:content url="http://1.gravatar.com/avatar/7c3777a06d6d0861869ef58dbfe1e26c?s=96&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&amp;amp;r=G" medium="image">
            <media:title>Dimitris Kolovos</media:title>
         </media:content>
         <category>Uncategorized</category>
      </item>
      <item>
         <title>Managing Inconsistent Models with HUTN</title>
         <link>http://epsilonblog.wordpress.com/2009/04/27/managing-inconsistent-models-with-hutn/</link>
         <description>A model and metamodel are consistent when the metamodel specifies every concept used in the model definition. A metamodel can evolve (be adapted by a developer), which can cause inconsistency. We&amp;#8217;ve recently added a tool to Epsilon, the HUTN / XMI bridge, that seeks to aid developers in manually managing inconsistency.
HUTN, an OMG standard, specifies [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=epsilonblog.wordpress.com&amp;blog=2097844&amp;post=88&amp;subd=epsilonblog&amp;ref=&amp;feed=1&quot;/&gt;</description>
         <guid isPermaLink="false">http://epsilonblog.wordpress.com/?p=88</guid>
         <pubDate>Mon, 27 Apr 2009 05:53:10 -0700</pubDate>
         <content:encoded><![CDATA[<div class='snap_preview'><br /><p>A model and metamodel are<span> </span><strong><em>consistent</em></strong><span> </span>when the meta<span>model specifies every concept used in the model definition. A metamodel can evolve (be adapted by a developer), which can cause in<span>consistency. We&#8217;ve recently added a tool to Epsilon, the HUTN / XMI bridge, that seeks to aid developers in manually managing inconsistency.</span></span></p>
<p>HUTN, an OMG standard, specifies a human-usable, textual notation for MOF-based models. Epsilon provides an implementation of HUTN for Ecore-based models. HUTN can be thought of as an alternative concrete syntax to XMI. While XMI is optimised for use by machines, HUTN is optimised for use by humans. We discuss HUTN in more detail in <a rel="nofollow" title="Constructing Models with HUTN at MoDELS '08" target="_blank" href="http://dx.doi.org/10.1007/978-3-540-87875-9_18">this paper at MoDELS 2008</a>.</p>
<p>We have recently extended our HUTN implementation to include an XMI bridge, which allows us to generate HUTN source code from EMF models. Furthermore, the HUTN / XMI bridge can be used to report inconsistencies between a model and its metamodel, and to resolve those inconsistencies using a human-usable notation.</p>
<p><strong>Example</strong></p>
<p>To demonstrate the HUTN / XMI bridge, here&#8217;s a short example. Below is an exemplar metamodel, along with a sample model:</p>
<p><img class="aligncenter size-full wp-image-90" title="channels_mm_before" src="http://epsilonblog.files.wordpress.com/2009/04/channels_mm_before.png?w=386&#038;h=198" alt="channels_mm_before" width="386" height="198"/><img class="aligncenter size-full wp-image-91" title="channels_model_before" src="http://epsilonblog.files.wordpress.com/2009/04/channels_model_before.png?w=450&#038;h=293" alt="channels_model_before" width="450" height="293"/></p>
<p>Channel B has ConnectionPoint both?! as its reader and as its writer.</p>
<p>Suppose we now wish to make distinct ConnectionPoints that are used for writing and ConnectionPoints that are used for reading. We may elect to change our metamodel, as shown in the diagram below:<img class="aligncenter size-full wp-image-92" title="channels_mm_after" src="http://epsilonblog.files.wordpress.com/2009/04/channels_mm_after.png?w=415&#038;h=339" alt="channels_mm_after" width="415" height="339"/>When we try to load our model with EMF, we receive a single error, stating, for example, that &#8220;The class &#8216;ConnectionPoint&#8217; is not a valid classifier.&#8221; By contrast, the HUTN/XMI bridge is able to produce a complete list of the inconsistencies:</p>
<p style="text-align:center;"><img class="aligncenter size-full wp-image-94" title="channels_model_hutn_xmi_errors" src="http://epsilonblog.files.wordpress.com/2009/04/channels_model_hutn_xmi_errors.png?w=450&#038;h=147" alt="channels_model_hutn_xmi_errors" width="450" height="147"/><em>(Produced by the <strong>Check Consistency</strong> option, available by right-clicking a .model file).</em></p>
<p>To aid developers in resolving consistency, the HUTN / XMI bridge can generate HUTN from a model&#8217;s XMI, even when that model is inconsistent with its metamodel:</p>
<p><img class="aligncenter size-full wp-image-95" title="channels_hutn_with_errors" src="http://epsilonblog.files.wordpress.com/2009/04/channels_hutn_with_errors.png?w=450&#038;h=400" alt="channels_hutn_with_errors" width="450" height="400"/></p>
<p>Once there are no further inconsistencies, HUTN can be used to generate a model that is now consistent with its metamodel.</p>
<p><strong>Related Work</strong></p>
<p>The HUTN / XMI bridge is a tool for manually managing inconsistency between models and metamodels. There are situations in which an automatic approach is more suitable. For example, perhaps you have a large number of inconsistent models. In those situations, we&#8217;d recommend using a different tool, such as <a rel="nofollow" title="Couple Evolution of Metamodels and Models for EMF" target="_blank" href="http://cope.in.tum.de/pmwiki.php">COPE</a>. You may also be interested in <a rel="nofollow" title="Antonio Cicchetti's publications" target="_blank" href="http://www.di.univaq.it/cicchetti/index.php?pageId=publications">Antonio Cicchetti&#8217;s work</a>; Cicchetti advocates a fundamentally different approach to the one used in COPE.</p>
<p><strong>Installation</strong></p>
<p>If you&#8217;d like to try the HUTN / XMI bridge, it&#8217;s available from the Epsilon SVN repository (<a rel="nofollow" title="Instructions for accessing the Epsilon SVN repository" target="_blank" href="http://www.eclipse.org/gmt/epsilon/doc/EpsilonSVN.pdf">access instructions</a>). <span style="text-decoration:line-through;">It will also appear in the upcoming 0.7.5 HUTN release</span><strong>*</strong>. We&#8217;ll be adding new features and fixing problems per user requests &#8211; do drop by the <a rel="nofollow">Epsilon newsgroup</a> if you have questions, problems or suggestions.</p>
<p><strong>* [Update 27/04/09]</strong> The HUTN XMI Bridge is included in HUTN 0.7.5, which was released today, as part of Epsilon 0.8.5.<strong> </strong></p> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/epsilonblog.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/epsilonblog.wordpress.com/88/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/epsilonblog.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/epsilonblog.wordpress.com/88/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/epsilonblog.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/epsilonblog.wordpress.com/88/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/epsilonblog.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/epsilonblog.wordpress.com/88/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/epsilonblog.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/epsilonblog.wordpress.com/88/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=epsilonblog.wordpress.com&blog=2097844&post=88&subd=epsilonblog&ref=&feed=1"/></div>]]></content:encoded>
         <media:content url="http://0.gravatar.com/avatar/6634d495dd596083ec80398d6fbe563a?s=96&amp;amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&amp;amp;r=G" medium="image">
            <media:title>Louis Rose</media:title>
         </media:content>
         <media:content url="http://epsilonblog.files.wordpress.com/2009/04/channels_mm_before.png" medium="image">
            <media:title>channels_mm_before</media:title>
         </media:content>
         <media:content url="http://epsilonblog.files.wordpress.com/2009/04/channels_model_before.png" medium="image">
            <media:title>channels_model_before</media:title>
         </media:content>
         <media:content url="http://epsilonblog.files.wordpress.com/2009/04/channels_mm_after.png" medium="image">
            <media:title>channels_mm_after</media:title>
         </media:content>
         <media:content url="http://epsilonblog.files.wordpress.com/2009/04/channels_model_hutn_xmi_errors.png" medium="image">
            <media:title>channels_model_hutn_xmi_errors</media:title>
         </media:content>
         <media:content url="http://epsilonblog.files.wordpress.com/2009/04/channels_hutn_with_errors.png" medium="image">
            <media:title>channels_hutn_with_errors</media:title>
         </media:content>
         <category>Uncategorized</category>
      </item>
      <item>
         <title>Test-Driven Development for Epsilon</title>
         <link>http://epsilonblog.wordpress.com/2009/04/20/test-driven-development-for-epsilon/</link>
         <description>Test-Driven Development (TDD) is an approach to software development that advocates writing tests before implementation. TDD has many advantages when compared to other forms of development, in which tests are often an after-thought. Proponents argue that TDD produces clean interfaces, minimal implementations and a suite of tests that can be used to guard against regressions. [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=epsilonblog.wordpress.com&amp;blog=2097844&amp;post=85&amp;subd=epsilonblog&amp;ref=&amp;feed=1&quot;/&gt;</description>
         <guid isPermaLink="false">http://epsilonblog.wordpress.com/?p=85</guid>
         <pubDate>Mon, 20 Apr 2009 04:45:31 -0700</pubDate>
         <content:encoded><![CDATA[<div class='snap_preview'><br /><p>Test-Driven Development (TDD) is an approach to software development that advocates writing tests before implementation. TDD has many advantages when compared to other forms of development, in which tests are often an after-thought. Proponents argue that TDD produces clean interfaces, minimal implementations and a suite of tests that can be used to guard against regressions. (See &#8220;TDD by Example,&#8221; Beck and, to some extent, &#8220;Refactoring,&#8221; Fowler).</p>
<p>In the past, we&#8217;ve been reluctant to construct automated unit tests for Epsilon, largely because we lacked structures and processes for constructing and checking models in the context of a testing framework, such as jUnit.</p>
<p>Since developing HUTN, we&#8217;ve been discovering/inventing/hallucinating patterns for constructing and checking models that allowed us to construct tests that were readable and malleable. This week, we wanted to make an enhancement to EOL, and, using these patterns, I was able to do so in a (more) test-driven manner.</p>
<p>EOL defines distinct operators for comparing expressions and for performing assignment. The concrete syntax is = for the former and := for the latter. We&#8217;ve found that we&#8217;ve had a few reports of code like the following:</p>
<pre style="font-size:11px;">var a : Integer;
a = 2;</pre>
<p>EOL compares a and 2 in the second line, rather than assigning a to 2.</p>
<p>We decided that we could change EOL to rewrite statements whose first operator was = to an equivalent statement whose first operator was :=</p>
<p>I started by defining some tests that exercised the EOL execution engine with the old behaviour and with the new behaviour:</p>
<pre style="font-size:11px;">private static final EolEvaluator evaluator = new EolEvaluator(); @Test
public void assignment() { evaluator.execute("var a; a := 1 + 2;"); assertEquals(new EolInteger(3), evaluator.evaluate("a"));
} @Test
public void equalityActsAsAssignment() { evaluator.execute("var a; a = 1 + 2;"); assertEquals(new EolInteger(3), evaluator.evaluate("a"));
}</pre>
<p>I&#8217;m using the EolEvaluator class, which decorates the EOL execution engine and can be used to execute small snippets of EOL code.</p>
<p>The first test passed, and the second test failed as expected. Typically, we&#8217;d now define some unit tests on the unit that needs to change to accommodate those changes, but I&#8217;ll leave that as an exercise for your imagination.</p>
<p>Crucially, because I&#8217;d used TDD, I felt comfortable editing a piece of code that I&#8217;d not developed, and never touched before &#8211; I had tests that verified (to some extent) my work. Plus, we&#8217;ve got tests that guard against regression in this part of EOL.</p> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/epsilonblog.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/epsilonblog.wordpress.com/85/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/epsilonblog.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/epsilonblog.wordpress.com/85/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/epsilonblog.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/epsilonblog.wordpress.com/85/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/epsilonblog.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/epsilonblog.wordpress.com/85/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/epsilonblog.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/epsilonblog.wordpress.com/85/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=epsilonblog.wordpress.com&blog=2097844&post=85&subd=epsilonblog&ref=&feed=1"/></div>]]></content:encoded>
         <media:content url="http://0.gravatar.com/avatar/6634d495dd596083ec80398d6fbe563a?s=96&amp;amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&amp;amp;r=G" medium="image">
            <media:title>Louis Rose</media:title>
         </media:content>
         <category>Uncategorized</category>
      </item>
      <item>
         <title>Epsilon + AppEngine + Ajax = Epsilon Live</title>
         <link>http://epsilonblog.wordpress.com/2009/04/16/epsilon-appengine-ajax-epsilon-live/</link>
         <description>The Epsilon website already includes several screencasts and examples that demonstrate the tools and languages it provides. The preview release of the Google App Engine for Java has made it possible to go one step further and allow people to actually write and execute EOL (the core language of Epsilon) programs straight from their browser [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=epsilonblog.wordpress.com&amp;blog=2097844&amp;post=84&amp;subd=epsilonblog&amp;ref=&amp;feed=1&quot;/&gt;</description>
         <guid isPermaLink="false">http://epsilonblog.wordpress.com/2009/04/16/epsilon-appengine-ajax-epsilon-live/</guid>
         <pubDate>Thu, 16 Apr 2009 03:16:43 -0700</pubDate>
         <content:encoded><![CDATA[<div class='snap_preview'><br /><p>The Epsilon website already includes several <a rel="nofollow" target="_blank" href="http://www.eclipse.org/gmt/epsilon/cinema/">screencasts</a> and <a rel="nofollow" target="_blank" href="http://www.eclipse.org/gmt/epsilon/examples">examples</a> that demonstrate the tools and languages it provides. The preview release of the <a rel="nofollow" target="_blank" href="http://appengine.google.com">Google App Engine</a> for Java has made it possible to go one step further and allow people to actually write and execute EOL (the core language of Epsilon) programs straight from their browser without needing to download or install anything.</p>
<p><a rel="nofollow" target="_blank" href="http://epsilonblog.files.wordpress.com/2009/04/image2.png"><img style="border-width:0;" height="480" alt="image" src="http://epsilonblog.files.wordpress.com/2009/04/image-thumb2.png?w=564&#038;h=480" width="564" border="0"></a> </p>
<p><a rel="nofollow" target="_blank" href="http://www.eclipse.org/gmt/epsilon/live">http://www.eclipse.org/gmt/epsilon/live</a> includes an editor where one can write and execute EOL scripts, and a console that captures their output. Apart from playing with the basic features of EOL (variables, control flow structures etc.) one can also query/modify a live EMF model (which for simplicity is Ecore itself). To help you get started, the page also provides a number of ready-to-run scripts as a starting point for further exploration.</p> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/epsilonblog.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/epsilonblog.wordpress.com/84/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/epsilonblog.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/epsilonblog.wordpress.com/84/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/epsilonblog.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/epsilonblog.wordpress.com/84/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/epsilonblog.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/epsilonblog.wordpress.com/84/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/epsilonblog.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/epsilonblog.wordpress.com/84/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=epsilonblog.wordpress.com&blog=2097844&post=84&subd=epsilonblog&ref=&feed=1"/></div>]]></content:encoded>
         <media:content url="http://1.gravatar.com/avatar/7c3777a06d6d0861869ef58dbfe1e26c?s=96&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&amp;amp;r=G" medium="image">
            <media:title>Dimitris Kolovos</media:title>
         </media:content>
         <media:content url="http://epsilonblog.files.wordpress.com/2009/04/image-thumb2.png" medium="image">
            <media:title>image</media:title>
         </media:content>
         <category>Uncategorized</category>
      </item>
      <item>
         <title>The EMF EPackage Registry View</title>
         <link>http://epsilonblog.wordpress.com/2009/02/13/the-emf-epackage-registry-view/</link>
         <description>The EPackage registry (EPackage.Registry.INSTANCE) contains references to all registered ECore EPackages in EMF. To visualise the contents of the registry, we have implemented the following EPackage Registry view. Using this view, one can browse through the EClasses contained in each registered EPackage, discover the super/sub types of each EClass, and navigate through its features and [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=epsilonblog.wordpress.com&amp;blog=2097844&amp;post=66&amp;subd=epsilonblog&amp;ref=&amp;feed=1&quot;/&gt;</description>
         <guid isPermaLink="false">http://epsilonblog.wordpress.com/2009/02/13/the-emf-epackage-registry-view/</guid>
         <pubDate>Fri, 13 Feb 2009 13:24:44 -0800</pubDate>
         <content:encoded><![CDATA[<div class='snap_preview'><br /><p>The EPackage registry (EPackage.Registry.INSTANCE) contains references to all registered ECore EPackages in EMF. To visualise the contents of the registry, we have implemented the following EPackage Registry view.</p>
<p><a rel="nofollow" target="_blank" href="http://epsilonblog.files.wordpress.com/2009/02/image.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="335" alt="image" src="http://epsilonblog.files.wordpress.com/2009/02/image-thumb.png?w=404&#038;h=335" width="404" border="0"></a> </p>
<p>Using this view, one can browse through the EClasses contained in each registered EPackage, discover the super/sub types of each EClass, and navigate through its features and operations. The view provides options to show/hide derived features, operations, inherited features and opposite references, supports quick navigation from a feature to it&#8217;s type (double-click), and integrates with the Properties view. </p>
<p>If you&#8217;d like to give it a spin, it comes as a part of <a rel="nofollow" target="_blank" href="http://www.eclipse.org/gmt/epsilon">Epsilon</a> 0.8.3 (or later) and can be installed via the <a rel="nofollow" target="_blank" href="http://download.eclipse.org/modeling/gmt/epsilon/updates">update site</a>.</p> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/epsilonblog.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/epsilonblog.wordpress.com/66/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/epsilonblog.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/epsilonblog.wordpress.com/66/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/epsilonblog.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/epsilonblog.wordpress.com/66/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/epsilonblog.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/epsilonblog.wordpress.com/66/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/epsilonblog.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/epsilonblog.wordpress.com/66/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=epsilonblog.wordpress.com&blog=2097844&post=66&subd=epsilonblog&ref=&feed=1"/></div>]]></content:encoded>
         <media:content url="http://1.gravatar.com/avatar/7c3777a06d6d0861869ef58dbfe1e26c?s=96&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&amp;amp;r=G" medium="image">
            <media:title>Dimitris Kolovos</media:title>
         </media:content>
         <media:content url="http://epsilonblog.files.wordpress.com/2009/02/image-thumb.png" medium="image">
            <media:title>image</media:title>
         </media:content>
         <category>Uncategorized</category>
      </item>
      <item>
         <title>Error Markers and Quick Fixes in GMF editors using EVL</title>
         <link>http://epsilonblog.wordpress.com/2008/11/09/error-markers-and-quick-fixes-in-gmf-editors-using-evl/</link>
         <description>The Epsilon Validation Language (EVL) is a model validation language that provides additional features to OCL, such as guards, constraint dependency management, user interaction, access to Java objects, and the ability to specify a number of fixes for each constraint, that the user can invoke if the constraint fails in order to repair the model. [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=epsilonblog.wordpress.com&amp;blog=2097844&amp;post=59&amp;subd=epsilonblog&amp;ref=&amp;feed=1&quot;/&gt;</description>
         <guid isPermaLink="false">http://epsilonblog.wordpress.com/?p=59</guid>
         <pubDate>Sun, 09 Nov 2008 05:30:51 -0800</pubDate>
         <content:encoded><![CDATA[<div class='snap_preview'><br /><p>The Epsilon Validation Language (EVL) is a model validation language that provides additional features to OCL, such as guards, constraint dependency management, user interaction, access to Java objects, and the ability to specify a number of <em>fixes</em> for each constraint, that the user can invoke if the constraint fails in order to repair the model. We&#8217;ve been recently working on integrating EVL with GMF so that failed constraints can appear as error/warning markers in GMF editors, and fixes can be invoked using the standard Quick Fix mechanism. An example follows:</p>
<p>The following screenshot shows a file system model in a GMF-based editor (constructed <a rel="nofollow" target="_blank" href="http://epsilonblog.wordpress.com/2008/08/04/eugenia-kick-start-your-gmf-editor-development/">here</a>).</p>
<p><a rel="nofollow" target="_blank" href="http://epsilonblog.files.wordpress.com/2008/11/filesystem.png"><img style="border-width:0;" height="322" alt="FileSystem" src="http://epsilonblog.files.wordpress.com/2008/11/filesystem-thumb.png?w=438&#038;h=322" width="438" border="0"></a> </p>
<p>We now specify the following EVL constraints and bind them to the editor (using the instructions provided <a rel="nofollow" target="_blank" href="http://epsilonlabs.wiki.sourceforge.net/EVL-GMF+Integration">here</a>):</p>
<pre style="font-size:11px;">context File { constraint HasName { check : self.name.isDefined() message : 'Unnamed ' + self.eClass().name + ' not allowed' } } context Folder { critique NameStartsWithCapital { guard : self.satisfies('HasName') check : self.name.firstToUpperCase() = self.name message : 'Folder ' + self.name + ' should start with an upper-case letter' fix { title : 'Rename to ' + self.name.firstToUpperCase() do { self.name := self.name.firstToUpperCase(); } } } } context Sync { constraint MustLinkSame { check : self.source.eClass() = self.target.eClass() message : 'Cannot synchronize a ' + self.source.eClass().name + ' with a ' + self.target.eClass().name fix { title : 'Synchronize with another ' + self.source.eClass().name do { var target := UserInput.choose('Select target', _Model.getAllOfType(self.source.eClass().name)); if (target.isDefined()) self.target := target; } } } }
</pre>
<p>Then, we evaluate the constraints by clicking <strong>Diagram-&gt;Validate</strong>, and our editor and Problems view now look like this:</p>
<p><a rel="nofollow" target="_blank" href="http://epsilonblog.files.wordpress.com/2008/11/filesystemwitherrorshighlighted.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="322" alt="FileSystemWithErrorsHighlighted" src="http://epsilonblog.files.wordpress.com/2008/11/filesystemwitherrorshighlighted-thumb.png?w=438&#038;h=322" width="438" border="0"></a> </p>
<p><a rel="nofollow" target="_blank" href="http://epsilonblog.files.wordpress.com/2008/11/problemsview.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="172" alt="ProblemsView" src="http://epsilonblog.files.wordpress.com/2008/11/problemsview-thumb.png?w=438&#038;h=172" width="438" border="0"></a> </p>
<p>We can now right click on the warning and invoke quick fix we have defined for the <strong>NameStartsWithCapital</strong> critique.</p>
<p><a rel="nofollow" target="_blank" href="http://epsilonblog.files.wordpress.com/2008/11/quickfix.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="488" alt="QuickFix" src="http://epsilonblog.files.wordpress.com/2008/11/quickfix-thumb.png?w=412&#038;h=488" width="412" border="0"></a>&nbsp;
<p>By clicking Finish, the fix is executed and the warning disappears.</p>
<p><a rel="nofollow" target="_blank" href="http://epsilonblog.files.wordpress.com/2008/11/afterquickfix.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="322" alt="AfterQuickFix" src="http://epsilonblog.files.wordpress.com/2008/11/afterquickfix-thumb.png?w=438&#038;h=322" width="438" border="0"></a> </p>
<p>A complete reference of the syntax and semantics of EVL can be found in Chapter 6 of the <a rel="nofollow" target="_blank" href="http://epsilonlabs.svn.sourceforge.net/svnroot/epsilonlabs/org.eclipse.epsilon.book/EpsilonBook.pdf">Epsilon Book</a> (PDF). Also, instructions for binding EVL constraints with an existing GMF editor can be found <a rel="nofollow" target="_blank" href="http://epsilonlabs.wiki.sourceforge.net/EVL-GMF+Integration">here</a>. Finally, a Flash screencast of this example is available <a rel="nofollow" target="_blank" href="http://www.eclipse.org/gmt/epsilon/cinema/EVLGMFValidation.htm">here</a>.</p> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/epsilonblog.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/epsilonblog.wordpress.com/59/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/epsilonblog.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/epsilonblog.wordpress.com/59/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/epsilonblog.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/epsilonblog.wordpress.com/59/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/epsilonblog.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/epsilonblog.wordpress.com/59/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/epsilonblog.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/epsilonblog.wordpress.com/59/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=epsilonblog.wordpress.com&blog=2097844&post=59&subd=epsilonblog&ref=&feed=1"/></div>]]></content:encoded>
         <media:content url="http://1.gravatar.com/avatar/7c3777a06d6d0861869ef58dbfe1e26c?s=96&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&amp;amp;r=G" medium="image">
            <media:title>Dimitris Kolovos</media:title>
         </media:content>
         <media:content url="http://epsilonblog.files.wordpress.com/2008/11/filesystem-thumb.png" medium="image">
            <media:title>FileSystem</media:title>
         </media:content>
         <media:content url="http://epsilonblog.files.wordpress.com/2008/11/filesystemwitherrorshighlighted-thumb.png" medium="image">
            <media:title>FileSystemWithErrorsHighlighted</media:title>
         </media:content>
         <media:content url="http://epsilonblog.files.wordpress.com/2008/11/problemsview-thumb.png" medium="image">
            <media:title>ProblemsView</media:title>
         </media:content>
         <media:content url="http://epsilonblog.files.wordpress.com/2008/11/quickfix-thumb.png" medium="image">
            <media:title>QuickFix</media:title>
         </media:content>
         <media:content url="http://epsilonblog.files.wordpress.com/2008/11/afterquickfix-thumb.png" medium="image">
            <media:title>AfterQuickFix</media:title>
         </media:content>
         <category>Uncategorized</category>
      </item>
      <item>
         <title>New in HUTN 0.7.1</title>
         <link>http://epsilonblog.wordpress.com/2008/09/15/new-in-hutn-071/</link>
         <description>Last week we released v0.7.1 of our Human-Usable Textual Notation implementation. It&amp;#8217;s available as part of Epsilon 0.8.1. In this release, we&amp;#8217;ve aligned our implementation more closely to the OMG specification, and added some new features. Here&amp;#8217;s a summary of the changes:
Validation
An error is now produced when enumerations, data types and abstract classes are specified [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=epsilonblog.wordpress.com&amp;blog=2097844&amp;post=47&amp;subd=epsilonblog&amp;ref=&amp;feed=1&quot;/&gt;</description>
         <guid isPermaLink="false">http://epsilonblog.wordpress.com/?p=47</guid>
         <pubDate>Mon, 15 Sep 2008 04:03:19 -0700</pubDate>
         <content:encoded><![CDATA[<div class='snap_preview'><br /><p>Last week we released v0.7.1 of our Human-Usable Textual Notation implementation. It&#8217;s available as part of Epsilon 0.8.1. In this release, we&#8217;ve aligned our implementation more closely to the OMG specification, and added some new features. Here&#8217;s a summary of the changes:</p>
<h3><strong>Validation</strong></h3>
<p>An error is now produced when enumerations, data types and abstract classes are specified as the type of an object.</p>
<p>An error is now produced for objects that do not specify the value of attributes with a lower bound greater than zero.</p>
<h3><strong>Adjectives</strong></h3>
<p>Positive adjectives are no longer prefixed with the # symbol. For instance:</p>
<pre>DogPackage { male Dog "Fido" {} // old syntax was #male Dog
}</pre>
<p>Adjectives prefixed with the # symbol will cause a deprecation warning.</p>
<h3><strong>Enumeration Values</strong></h3>
<p>Support for enumeration values in association instances has been added. The syntax is:</p>
<pre>DogPackage { Dog "Lassie" { breed: Collie // Enumeration value name: "Lassie" // String value }
}</pre>
<h3><strong>Classifier-Level Attributes</strong></h3>
<p>Support for classifier-level attributes has been added. The syntax is:</p>
<pre>DogPackage { Dog.breed: Collie; // All dogs in this package are Collies by default Dog "Lassie" {} Dog "Jessie" {} Dog "Scooby" { breed: GreatDane }
}</pre>
<p>Classifier-level attribute values take precedence over any default value rules specified in a HUTN configuration model.</p>
<h3><strong>Associations: Block and Infix Notations</strong></h3>
<p>Support for association blocks has been added. Assuming that the Family class has a reference called &#8220;pets&#8221; accepting objects of type Dog, the syntax is:</p>
<pre>DogPackage { Family "The Smiths" {} Dog "Rover" {} pets { Family "The Smiths" Dog "Rover" // Refers to the existing Pet object, defined above Family "The Smiths" Dog "Fido" // Created automatically by the association block }
}</pre>
<p>Similarly, associations may be specified using an infix notation. The example above could be written:</p>
<pre>DogPackage { Family "The Smiths" {} Dog "Rover" {} Family "The Smiths" pets Dog "Rover"; Family "The Smiths" pets Dog "Fido";
}</pre>
<p>We hope you find the improved validation and more flexible syntax useful. You can update your installation using the Eclipse update manager, or follow the instructions on the <a rel="nofollow" target="_blank" href="http://www.eclipse.org/gmt/epsilon/download.php">Epsilon download page</a>.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/epsilonblog.wordpress.com/47/"/> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/epsilonblog.wordpress.com/47/"/> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/epsilonblog.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/epsilonblog.wordpress.com/47/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/epsilonblog.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/epsilonblog.wordpress.com/47/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/epsilonblog.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/epsilonblog.wordpress.com/47/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/epsilonblog.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/epsilonblog.wordpress.com/47/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/epsilonblog.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/epsilonblog.wordpress.com/47/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=epsilonblog.wordpress.com&blog=2097844&post=47&subd=epsilonblog&ref=&feed=1"/></div>]]></content:encoded>
         <media:content url="http://0.gravatar.com/avatar/6634d495dd596083ec80398d6fbe563a?s=96&amp;amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&amp;amp;r=G" medium="image">
            <media:title>Louis Rose</media:title>
         </media:content>
         <category>Uncategorized</category>
      </item>
      <item>
         <title>Negative Text Search Engine</title>
         <link>http://epsilonblog.wordpress.com/2008/08/05/negative-text-search-engine/</link>
         <description>A little off-topic but hopefully useful. Recently, I needed to find all the .java files in my workspace that did not contain a particular phrase (&amp;#8220;Eclipse Public License&amp;#8221;) to find out which files I had forgot to add copyright notices to. I tried to do this with regular expressions but couldn&amp;#8217;t seem to make it [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=epsilonblog.wordpress.com&amp;blog=2097844&amp;post=45&amp;subd=epsilonblog&amp;ref=&amp;feed=1&quot;/&gt;</description>
         <guid isPermaLink="false">http://epsilonblog.wordpress.com/2008/08/05/negative-text-search-engine/</guid>
         <pubDate>Tue, 05 Aug 2008 15:47:13 -0700</pubDate>
         <content:encoded><![CDATA[<div class='snap_preview'><br /><p>A little off-topic but hopefully useful. Recently, I needed to find all the .java files in my workspace that did <strong>not</strong> contain a particular phrase (&#8220;Eclipse Public License&#8221;) to find out which files I had forgot to add copyright notices to. I tried to do this with regular expressions but couldn&#8217;t seem to make it work. So I looked into the Eclipse search plugin and finally managed to scribble a negative text search engine i.e. an engine that returns all the files that do <strong>not</strong> contain a particular phrase. Instructions on how to install and use the plugin are available <a rel="nofollow" target="_blank" href="http://kolovos.wiki.sourceforge.net/Eclipse+Negative+Text+Search+Engine">here</a>.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/epsilonblog.wordpress.com/45/"/> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/epsilonblog.wordpress.com/45/"/> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/epsilonblog.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/epsilonblog.wordpress.com/45/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/epsilonblog.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/epsilonblog.wordpress.com/45/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/epsilonblog.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/epsilonblog.wordpress.com/45/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/epsilonblog.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/epsilonblog.wordpress.com/45/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/epsilonblog.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/epsilonblog.wordpress.com/45/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=epsilonblog.wordpress.com&blog=2097844&post=45&subd=epsilonblog&ref=&feed=1"/></div>]]></content:encoded>
         <media:content url="http://1.gravatar.com/avatar/7c3777a06d6d0861869ef58dbfe1e26c?s=96&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&amp;amp;r=G" medium="image">
            <media:title>Dimitris Kolovos</media:title>
         </media:content>
         <category>Uncategorized</category>
      </item>
      <item>
         <title>EuGENia: Kick-start your GMF editor development</title>
         <link>http://epsilonblog.wordpress.com/2008/08/04/eugenia-kick-start-your-gmf-editor-development/</link>
         <description>GMF is a great piece of software in terms of features &amp;#8211; and not only because it&amp;#8217;s built atop GEF and EMF. Nevertheless, (here it comes) it also requires significant effort to learn, the error messages it produces during validation are often cryptic, the gmfmap wizard typically gets it all wrong, and all put together [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=epsilonblog.wordpress.com&amp;blog=2097844&amp;post=43&amp;subd=epsilonblog&amp;ref=&amp;feed=1&quot;/&gt;</description>
         <guid isPermaLink="false">http://epsilonblog.wordpress.com/?p=43</guid>
         <pubDate>Mon, 04 Aug 2008 15:31:37 -0700</pubDate>
         <content:encoded><![CDATA[<div class='snap_preview'><br /><p>GMF is a great piece of software in terms of features &#8211; and not only because it&#8217;s built atop GEF and EMF. Nevertheless, (here it comes) it also requires significant effort to learn, the error messages it produces during validation are often cryptic, the gmfmap wizard typically gets it all wrong, and all put together just make it too hard for the inexperienced user.</p>
<p>To reduce the effort required to build a basic editor we&#8217;ve implemented a tool, called <strong>EuGENia</strong>, which can derive the gmfgraph, gmftool and gmfmap models that are required to generate a fully functional GMF editor using only the ECore metamodel itself, augmented with a few GMF-specific annotations (I know that annotations pollute metamodels but they&#8217;re irresistibly convenient).</p>
<p><strong>The Filesystem editor example</strong></p>
<p>In this example we&#8217;ll construct a GMF editor for a filesystem metamodel. To generate a basic GMF editor from the metamodel, all we need to know is that:</p>
<ul>
<li>The root of the diagram is FileSystem</li>
<li>File and all of its subclasses (Drive, Folder, Shortcut etc) are nodes with a label that reflects the value of their name attribute</li>
<li>Shortcut.target is a link</li>
<li>Sync is also a link class with Sync.source as the one end, Sync.target as the other and lastSync as the label</li>
</ul>
<p>To capture the above, plus a bit of formatting information, we add the following @gmf.* annotations to the metamodel (in Emfatic):</p>
<pre style="font-size:11px;">@namespace(uri="filesystem", prefix="filesystem")
@gmf
package filesystem; @gmf.diagram
class Filesystem { val Drive[*] drives; val Sync[*] syncs;
} class Drive extends Folder { } class Folder extends File { @gmf.compartment val File[*] contents;
} class Shortcut extends File { @gmf.link(target.decoration="arrow", style="dash") ref File target;
} @gmf.link(label="lastSync", source="source", target="target", style="dot", width="2")
class Sync { ref File source; ref File target; attr String lastSync;
} @gmf.node(label = "name")
class File { attr String name;
}</pre>
<p>Through the process demonstrated in <a rel="nofollow" target="_blank" href="http://www.eclipse.org/gmt/epsilon/cinema/Eugenia.htm">this screencast</a> EuGENia can generate the following editor without the user needing to touch any of the .gmfgraph, .gmfmap or .gmftool models manually.</p>
<p><a rel="nofollow" target="_blank" href="http://epsilonblog.files.wordpress.com/2008/08/image.png"><img style="border-width:0;" src="http://epsilonblog.files.wordpress.com/2008/08/image-thumb.png?w=442&#038;h=348" border="0" alt="image" width="442" height="348"/></a></p>
<p>Obviously EuGENia doesn&#8217;t support all the options the .gmfgraph and .gmfmap models do but only a small subset of commonly needed features. A complete list of the annotations EuGENia supports as well as instructions for obtaining it is available <a rel="nofollow" target="_blank" href="http://epsilonlabs.wiki.sourceforge.net/EuGENia">here</a>.</p>
<p><strong>Follow up: </strong><a rel="nofollow" target="_blank" href="http://epsilonblog.wordpress.com/2009/06/15/eugenia-polishing-your-gmf-editor/">EuGENia: Polishing your GMF editor</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/epsilonblog.wordpress.com/43/"/> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/epsilonblog.wordpress.com/43/"/> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/epsilonblog.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/epsilonblog.wordpress.com/43/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/epsilonblog.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/epsilonblog.wordpress.com/43/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/epsilonblog.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/epsilonblog.wordpress.com/43/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/epsilonblog.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/epsilonblog.wordpress.com/43/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/epsilonblog.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/epsilonblog.wordpress.com/43/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=epsilonblog.wordpress.com&blog=2097844&post=43&subd=epsilonblog&ref=&feed=1"/></div>]]></content:encoded>
         <media:content url="http://1.gravatar.com/avatar/7c3777a06d6d0861869ef58dbfe1e26c?s=96&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&amp;amp;r=G" medium="image">
            <media:title>Dimitris Kolovos</media:title>
         </media:content>
         <media:content url="http://epsilonblog.files.wordpress.com/2008/08/image-thumb.png" medium="image">
            <media:title>image</media:title>
         </media:content>
         <category>Uncategorized</category>
      </item>
      <item>
         <title>Do It Better With A Model</title>
         <link>http://ed-merks.blogspot.com/2009/11/do-it-better-with-model.html</link>
         <description>Has the spark of excitement in your life slowly dwindled? Do you suffer from performance anxiety? Are you concerned that you won't be able to fully satisfy Helios? Fear not for you are not alone! Fortunately for you, we have &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/proposals/b3/&quot;&gt;a new drug free solution&lt;/a&gt;. Forget about all those ads for pills and mechanical devices filling up your spam folder. We have discovered that real live models bring a whole new perspective.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://2.bp.blogspot.com/_rFZqMGOSYY8/Svf5Sx7N3QI/AAAAAAAABek/l16RVfwq3nQ/s1600-h/Ludswigburg.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:251px;height:320px;&quot; src=&quot;http://2.bp.blogspot.com/_rFZqMGOSYY8/Svf5Sx7N3QI/AAAAAAAABek/l16RVfwq3nQ/s320/Ludswigburg.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5402060379088870658&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;Our carefully selected models aren't merely super, they're versatile and flexible enough to satisfy your every need. Just relax and let them do their thing. Of course if you feel so inclined, you can take control anytime the urge arises. If you aren't yet fully convinced that &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/modeling/&quot;&gt;our stimulating models&lt;/a&gt; are exactly what you need, have a look at &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://thhal.blogspot.com/2009/10/lessons-learned-about-modeling.html&quot;&gt;this testimonial&lt;/a&gt; from one our many completely satisfied customers. He's clearly taken aim and hit the mark, and he's not alone.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/Svf8dCJBnoI/AAAAAAAABe0/5fNQeIsPqU0/s1600-h/FrankAndMichelleWithGuns.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:254px;&quot; src=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/Svf8dCJBnoI/AAAAAAAABe0/5fNQeIsPqU0/s320/FrankAndMichelleWithGuns.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5402063853775330946&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;Best of all, our models aren't merely good for builds, they're good for development in general. Whether you like to do it top down, bottom up, or some other way we've not yet imagined, our models will be there to help you feel like the real developer you've always wanted to be. Your imagination is the only limitation, so take a bit of time to dream of the many exciting things our models might do for you do today. The &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/e4/&quot;&gt;e4&lt;/a&gt; team has, and now there's no holding them back. Just keep in mind that no problem is &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.ibm.com/developerworks/data/library/techarticle/dm-0911db2emfresourceleaks/index.html&quot;&gt;too small&lt;/a&gt; or &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://thegordian.blogspot.com/2008/11/how-scalable-are-my-models.html&quot;&gt;too big&lt;/a&gt; for our models. After all, I doubt this grand palace was built without the aid of a model.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://4.bp.blogspot.com/_rFZqMGOSYY8/Svf6-HpWTiI/AAAAAAAABes/DzjwsPoRubw/s1600-h/LudswigburgPalace.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:128px;&quot; src=&quot;http://4.bp.blogspot.com/_rFZqMGOSYY8/Svf6-HpWTiI/AAAAAAAABes/DzjwsPoRubw/s320/LudswigburgPalace.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5402062223165509154&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;We're so fully convinced that our models are world class, we've scheduled free &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wiki.eclipse.org/Eclipse_Modeling_Day&quot;&gt;modelings days&lt;/a&gt; in two of North America's great cities: &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wiki.eclipse.org/Eclipse_Modeling_Day#New_York_City&quot;&gt;New York&lt;/a&gt; and &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wiki.eclipse.org/Eclipse_Modeling_Day#Toronto&quot;&gt;Toronto&lt;/a&gt;. Register immediately for these exclusive events before time runs out! You'll spend a fun filled day learning about b3, &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/Xtext/&quot;&gt;Xtext&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/cdo/&quot;&gt;CDO&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/amp/&quot;&gt;AMP&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/modeling/mdt/?project=papyrus&quot;&gt;Papyrus&lt;/a&gt;, and &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/summiteurope2009/sessions?id=1009&quot;&gt;SAP's exciting new query technology&lt;/a&gt; from some of the world's leading experts as well as discovering how these technologies have been effectively exploited. Not only that, all four authors of the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.informit.com/title/9780321331885&quot;&gt;EMF book&lt;/a&gt; are expected to be at the Toronto event, so bring your books to be signed. At the end of the day, I'm sure you'll agree: it's simply more exciting to do it with models.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3879044552984472733-7872928260035065615?l=ed-merks.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Ed Merks</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3879044552984472733.post-7872928260035065615</guid>
         <pubDate>Sun, 08 Nov 2009 22:35:00 -0800</pubDate>
         <media:thumbnail width="72" url="http://2.bp.blogspot.com/_rFZqMGOSYY8/Svf5Sx7N3QI/AAAAAAAABek/l16RVfwq3nQ/s72-c/Ludswigburg.jpg" height="72" xmlns:media="http://search.yahoo.com/mrss/"/>
      </item>
      <item>
         <title>Eclipse Summit Europe 2009: The Final Day</title>
         <link>http://ed-merks.blogspot.com/2009/10/eclipse-summit-europe-2009-final-day.html</link>
         <description>The day started with Tony Ballenti's &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/summiteurope2009/sessions?id=1045&quot;&gt;keynote&lt;/a&gt; about the dynamics of open source.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/Sup_hMxG7jI/AAAAAAAABdo/poxrellzSgg/s1600-h/Tony.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:262px;&quot; src=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/Sup_hMxG7jI/AAAAAAAABdo/poxrellzSgg/s320/Tony.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5398267311696571954&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;He explored the various reasons why organizations get involved in open source and how that motivation matures over time.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://1.bp.blogspot.com/_rFZqMGOSYY8/SuqASQoP24I/AAAAAAAABdw/QiigoIKUP1A/s1600-h/OSValue.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:250px;&quot; src=&quot;http://1.bp.blogspot.com/_rFZqMGOSYY8/SuqASQoP24I/AAAAAAAABdw/QiigoIKUP1A/s320/OSValue.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5398268154546740098&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;As with all things in life, investing more effort generally generates more reward, or at least the potential for that. Nevertheless, many if not most are quite comfortable investing very little while still reaping significant rewards. Tony spent a lot of time talking about ecosystems with these takeaways.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/SuqBCJPiWmI/AAAAAAAABd4/YviJX2Rsp9Y/s1600-h/Takeaways.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:250px;&quot; src=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/SuqBCJPiWmI/AAAAAAAABd4/YviJX2Rsp9Y/s320/Takeaways.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5398268977197767266&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;From a modeling perspective, we've gained a great deal of value from innovative individuals including many researchers. In addition, a significant number of companies have grown in this space and are investing heavily in it, which is very good if you consider where we'd be if we still relied primarily on the two large organizations that kicked off this venture.&lt;br /&gt;&lt;br /&gt;After the break, during which I talked with &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wp.kolbware.de/&quot;&gt;Bernd&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://borisoneclipse.blogspot.com/&quot;&gt;Boris&lt;/a&gt;, and &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.toedter.com/blog/&quot;&gt;Kai&lt;/a&gt; about using Xtext to specify a CSS subset for e4 styling, was &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://kenn-hussey.blogspot.com/&quot;&gt;Kenn Hussey&lt;/a&gt;, Raphael Faudou, and Patrick Tessier's &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/summiteurope2009/sessions?id=1027&quot;&gt;Papayrus talk&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://4.bp.blogspot.com/_rFZqMGOSYY8/SuqCmrUNdGI/AAAAAAAABeA/5K-JSKyml9U/s1600-h/Papyrus.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:206px;&quot; src=&quot;http://4.bp.blogspot.com/_rFZqMGOSYY8/SuqCmrUNdGI/AAAAAAAABeA/5K-JSKyml9U/s320/Papyrus.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5398270704331093090&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;The room was way overcrowded and there just wasn't enough air. They outlined the history of the project, i.e., they started as a number of separate external UML tool efforts. These efforts merged under the Papyrus 2 umbrella which is now producing some very slick looking technology. Kenn described the &quot;perfect storm&quot; that's bringing things together.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://2.bp.blogspot.com/_rFZqMGOSYY8/SuqD-KtZsPI/AAAAAAAABeI/PSDPPePRb70/s1600-h/PerfectStorm.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:237px;&quot; src=&quot;http://2.bp.blogspot.com/_rFZqMGOSYY8/SuqD-KtZsPI/AAAAAAAABeI/PSDPPePRb70/s320/PerfectStorm.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5398272207406870770&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;The project aims to separate out a DSL backbone that can be reused with other models such as SysML, BPMN2, and so on. Stay tuned for other developments in the area of a common DSL workbench...&lt;br /&gt;&lt;br /&gt;Markus Herrmannsdoerfer's &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/summiteurope2009/sessions?id=1025&quot;&gt;COPE talk&lt;/a&gt; was in the same room and it was even more crowded, so much so that people just couldn't fit in the room anymore.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://1.bp.blogspot.com/_rFZqMGOSYY8/SuqEnB8w14I/AAAAAAAABeQ/efWa1HXgJFA/s1600-h/Markus.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:162px;&quot; src=&quot;http://1.bp.blogspot.com/_rFZqMGOSYY8/SuqEnB8w14I/AAAAAAAABeQ/efWa1HXgJFA/s320/Markus.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5398272909430019970&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;I assume many people have data that needs to be migrated as their models change. Go figure. The idea behind Cope is to track the changes made to the Ecore model and then apply those same operations to the actual instance data. He demonstrated how it really works with a simple state machine model.&lt;br /&gt;&lt;br /&gt;Hajo Eichler's &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/summiteurope2009/sessions?id=1017&quot;&gt;Model Execution Framework talk&lt;/a&gt; was also in the same room.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://4.bp.blogspot.com/_rFZqMGOSYY8/SuqFM5mUnLI/AAAAAAAABeY/hP8CWohkE8o/s1600-h/Hajo.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:204px;&quot; src=&quot;http://4.bp.blogspot.com/_rFZqMGOSYY8/SuqFM5mUnLI/AAAAAAAABeY/hP8CWohkE8o/s320/Hajo.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5398273560023440562&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;Thank goodness someone figured out how to open a window or I'd have died by now. He did a bit of slide &quot;borrowing&quot; for his talk; Eike and I made it clear intend to send the license police after him. Quickly thereafter, you could hear the police sirens out in the street, and he looked worried. He showed how he extended the Ecore model to be able to express behavior using a subset of UML activities. There's an intepretter to execute the model as well as a debugger for interactively tracking the execution process. It looks very promising.&lt;br /&gt;&lt;br /&gt;After that was lunch, during which Thomas, Henrik and I talked with Wayne about how we can help with aggregating p2 repositories for Helios and for projects not on the release train. Unfortunately, I missed all the afternoon sessions dealing with modeling project management issues. If I told you about them, I'd have to kill you. I really wanted to see &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/summiteurope2009/sessions?id=979&quot;&gt;EuGENia&lt;/a&gt;;I heard from others that it was really cool. I also wanted to see the progress that was made on &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/summiteurope2009/sessions?id=946&quot;&gt;EEF&lt;/a&gt;. It was a bit of a bummer to miss all the interesting sessions that afternoon. There should be more time for chatting at these conferences...&lt;br /&gt;&lt;br /&gt;By late afternoon, word had gotten out that it was my birthday. During the closing session, Ralph incited the entire audience to sing happy birthday for me. How embarrassing is that? According to German custom, I should have bought cake for everyone and invited them all to a party. Sorry dudes, I can't afford that much cake. As expected, ESE just keeps getting better each year and I look forward to next year.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3879044552984472733-7932261971150044611?l=ed-merks.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Ed Merks</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3879044552984472733.post-7932261971150044611</guid>
         <pubDate>Thu, 29 Oct 2009 17:35:00 -0700</pubDate>
         <media:thumbnail width="72" url="http://3.bp.blogspot.com/_rFZqMGOSYY8/Sup_hMxG7jI/AAAAAAAABdo/poxrellzSgg/s72-c/Tony.jpg" height="72" xmlns:media="http://search.yahoo.com/mrss/"/>
      </item>
      <item>
         <title>Eclipse Summit Europe 2009: A Day of Talks</title>
         <link>http://ed-merks.blogspot.com/2009/10/eclipse-summit-europe-2009-day-of-talks.html</link>
         <description>The morning started with the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/summiteurope2009/sessions?id=1046&quot;&gt;keynote&lt;/a&gt; about functional programming by Don Syme of Microsoft.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://1.bp.blogspot.com/_rFZqMGOSYY8/SuknXWwAG_I/AAAAAAAABcU/Ute6DC7o7Uo/s1600-h/FSharpTalk.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:212px;&quot; src=&quot;http://1.bp.blogspot.com/_rFZqMGOSYY8/SuknXWwAG_I/AAAAAAAABcU/Ute6DC7o7Uo/s320/FSharpTalk.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5397888910577638386&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;I loved functional programming back in my university days, which seems like so many eons ago. He argues that certain classes of problem are far simpler to solve using functional programming and shows a number of examples where F#'s syntax is far simpler, i.e., less verbose, than C#. Personally though, I'm not one who easily buys into the idea that syntactic conciseness in and of itself makes a language significantly better. Simplicity of the underlying semantic/mental model is ultimately what counts, and that of course needs to be balanced against expressiveness power, which generally is the counter point to simplicity. F# definitely looks powerful.&lt;br /&gt;&lt;br /&gt;The break was an opportunity for many interesting discussions. One of the great things about conferences is the face to face discussions they facilitate. The summit is particularly conducive to that type of interation. Unfortunately that resulted in missing the start of the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/summiteurope2009/sessions?id=982&quot;&gt;e4 talk&lt;/a&gt;. The diverse e4 team has made a lot of progress.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://1.bp.blogspot.com/_rFZqMGOSYY8/Sukn75UexJI/AAAAAAAABcc/qRR6xEy307E/s1600-h/e4Talk.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:220px;&quot; src=&quot;http://1.bp.blogspot.com/_rFZqMGOSYY8/Sukn75UexJI/AAAAAAAABcc/qRR6xEy307E/s320/e4Talk.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5397889538332738706&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;After another yummy lunch I was torn between &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/summiteurope2009/sessions?id=906&quot;&gt;Sven's Xtext talk&lt;/a&gt; and &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/summiteurope2009/sessions?id=859&quot;&gt;Tom's e4 model talk&lt;/a&gt;. Two cool things at once. Darn! I know more about Xtext than the e4 model, so I opted for the latter. It was interesting hearing all Tom's reasons for using EMF in e4.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://1.bp.blogspot.com/_rFZqMGOSYY8/SukooVCIhvI/AAAAAAAABck/CnxupvpTinM/s1600-h/e4Tom.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:289px;&quot; src=&quot;http://1.bp.blogspot.com/_rFZqMGOSYY8/SukooVCIhvI/AAAAAAAABck/CnxupvpTinM/s320/e4Tom.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5397890301686220530&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;He showed how a simple application model specifies the logical structure of the user interface, eliminating the need to build up these structures with a pile of boilerplate Java code. Then he showed how to extend that base scaffolding with embedded parts. He even showed an example where one process is editing an e4 model stored in a CDO repository while another process is rendering that same model from the shared repository in the actual UI; changes are immediately reflected across the process boundary effecitvely giving you a WYSIWYG editor. He also explained how you can define your own renderer to display the same model in various different ways. It's looking very good!&lt;br /&gt;&lt;br /&gt;After that I attended Bernd Kolb and Christian Mohr's &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/summiteurope2009/sessions?id=1009&quot;&gt;query talk&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://4.bp.blogspot.com/_rFZqMGOSYY8/SukpR5v90fI/AAAAAAAABcs/y9mc_HEgLJw/s1600-h/BerndChristian.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:222px;&quot; src=&quot;http://4.bp.blogspot.com/_rFZqMGOSYY8/SukpR5v90fI/AAAAAAAABcs/y9mc_HEgLJw/s320/BerndChristian.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5397891015916769778&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;Bernd explained some of the shortcomings of the existing EMF query technology; it's definitely pretty crude. SAP had some existing query infrastructure that was part of their proprietary MOF implementation; that's what's being contributed to Eclipse. They demonstrated examples of the cool SQL-like query language they support. The query execution engine makes use of the EMF index project, but can work against in memory resources as well as directly against a database too.&lt;br /&gt;&lt;br /&gt;Frederic Jouault and Hugo Bruneliere's &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/summiteurope2009/sessions?id=885&quot;&gt;EMF Oslo&lt;/a&gt; talk was next.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://2.bp.blogspot.com/_rFZqMGOSYY8/Sukpre599zI/AAAAAAAABc0/6JFfa3nV528/s1600-h/FredericHugo.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:249px;&quot; src=&quot;http://2.bp.blogspot.com/_rFZqMGOSYY8/Sukpre599zI/AAAAAAAABc0/6JFfa3nV528/s320/FredericHugo.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5397891455387563826&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;They explained that M consistst of three complementary languages: MSchema, MGraph, and MGrammer, analogous to Ecore, EObject, and Xtext. Bridging these technologies involves mapping these specific concepts. To start one could define an Ecore model for MSchema so that it's possible to transform Ecore instances to MSchema instances which could then be serialized to conform of the MSchema textual syntax. They demonstrate their progress toward implementing this approach including ATL transformations for doing the mapping.&lt;br /&gt;&lt;br /&gt;Henrik Lindberg and Thomas Hallgren's &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/summiteurope2009/sessions?id=998&quot;&gt;b3 talk&lt;/a&gt; followed a short break.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/SukrIyHoPdI/AAAAAAAABc8/66m_qjbovrc/s1600-h/ThomasHenrik.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:214px;&quot; src=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/SukrIyHoPdI/AAAAAAAABc8/66m_qjbovrc/s320/ThomasHenrik.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5397893058272968146&quot; border=&quot;0&quot;/&gt;&lt;/a&gt; One might summarize the approach as model driven builds. Key aspects of the build and provisioning process are captured as declarative models, e.g., buildable units which are analogous to p2's installable units, and these ultimately drive the build process. Xtext is being used to provide human readable syntax for the build models. There's a lot of cool stuff planned! If you're working on an Eclipse project, you're probably painfully aware of how much of a nightmare it currently is to set up and maintain your builds. Goodness forbid someone changes the requirements for what needs to be pumped out at the end!&lt;br /&gt;&lt;br /&gt;After that I had a chance to chat with a guy hoping to get involved in &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/gef/&quot;&gt;GEF&lt;/a&gt;, a project that certainly needs some fresh and lively committers. Maybe I'll be able to help. This was followed by the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/summiteurope2009/sessions?id=997&quot;&gt;Buckminster talk&lt;/a&gt; from Henrik, Thomas, and Filip Hrbek.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/Sukt8_toT9I/AAAAAAAABdM/V6apiXCshB0/s1600-h/BuckminsterRight.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:156px;&quot; src=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/Sukt8_toT9I/AAAAAAAABdM/V6apiXCshB0/s320/BuckminsterRight.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5397896154298470354&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;It attracted a very large audience.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://4.bp.blogspot.com/_rFZqMGOSYY8/Sukt1ycVLUI/AAAAAAAABdE/7eFPWFkdmec/s1600-h/BuckminsterLeft.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:151px;&quot; src=&quot;http://4.bp.blogspot.com/_rFZqMGOSYY8/Sukt1ycVLUI/AAAAAAAABdE/7eFPWFkdmec/s320/BuckminsterLeft.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5397896030477167938&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;Henrik explained that provisioning a workspace or building a p2 repository ought to be as simple as ordering your favorite burger at your burger outlet of choice.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://2.bp.blogspot.com/_rFZqMGOSYY8/Sukuuu6oOZI/AAAAAAAABdU/nr5hh8UkiXI/s1600-h/Henrik.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:226px;height:320px;&quot; src=&quot;http://2.bp.blogspot.com/_rFZqMGOSYY8/Sukuuu6oOZI/AAAAAAAABdU/nr5hh8UkiXI/s320/Henrik.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5397897008783047058&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;Filip and Thomas demonstrated that it's as simple as specifying a query to locate the root feature and asking for its p2 repository to be built.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://2.bp.blogspot.com/_rFZqMGOSYY8/SukvSbt53ZI/AAAAAAAABdc/J_Kr0DHJLbc/s1600-h/FilipThomas.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:302px;height:320px;&quot; src=&quot;http://2.bp.blogspot.com/_rFZqMGOSYY8/SukvSbt53ZI/AAAAAAAABdc/J_Kr0DHJLbc/s320/FilipThomas.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5397897622104694162&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;The tools, e.g., the dependency visualizer, are looking very slick. They also demonstrated the repository aggregator, which is based on an EMF model and an EMF generated editor. It can even produce a Maven repository as well as a p2 repository. How cool is that? At the end they explained how the lessons learned from building Buckminster will be used to drive further improvements into the b3 project. Models, models, everywhere.&lt;br /&gt;&lt;br /&gt;This was followed by the reception. It included a talk by Microsoft that felt a little too much like advertisement to me. Oh well, they paid for the the food and the spirits---the salmon was excellent and so was the wine---so it was a reasonable trade-off. I finished the day at a birds of a feather session discussing how to transform the modeling project into something suited for supporting a DSL workbench as well as how interested consumers could help fund that effort. It was a very interesting day indeed!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3879044552984472733-7225473074657377932?l=ed-merks.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Ed Merks</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3879044552984472733.post-7225473074657377932</guid>
         <pubDate>Wed, 28 Oct 2009 17:48:00 -0700</pubDate>
         <media:thumbnail width="72" url="http://1.bp.blogspot.com/_rFZqMGOSYY8/SuknXWwAG_I/AAAAAAAABcU/Ute6DC7o7Uo/s72-c/FSharpTalk.jpg" height="72" xmlns:media="http://search.yahoo.com/mrss/"/>
      </item>
      <item>
         <title>Eclipse Summit Europe 2009: Tutorials and Symposia</title>
         <link>http://ed-merks.blogspot.com/2009/10/eclipse-summit-europe-2009-tutorials.html</link>
         <description>&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/summiteurope2009/&quot;&gt;Eclipse Summit Europe&lt;/a&gt; started today. The weather was very mild making the short walk from Nestor Hotel to the Schlosspark Forum particularly enjoyable. It's a grand looking facility.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://2.bp.blogspot.com/_rFZqMGOSYY8/SubO1fl45PI/AAAAAAAABaU/8Dt8qcIObsA/s1600-h/SchlossparkForum.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:244px;&quot; src=&quot;http://2.bp.blogspot.com/_rFZqMGOSYY8/SubO1fl45PI/AAAAAAAABaU/8Dt8qcIObsA/s320/SchlossparkForum.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5397228621858923762&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;Eike, Tom, and I started the day with the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/summiteurope2009/sessions?id=1015&quot;&gt;EMF Tutorial&lt;/a&gt;. It was an extremely large group of people.&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/SubP5UKJ0JI/AAAAAAAABas/5snBgNkJ50g/s1600-h/ESE2009EMFTutorialLeft.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:118px;&quot; src=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/SubP5UKJ0JI/AAAAAAAABas/5snBgNkJ50g/s320/ESE2009EMFTutorialLeft.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5397229787020906642&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;They didn't all fit in one picture.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://1.bp.blogspot.com/_rFZqMGOSYY8/SubPPHmEhyI/AAAAAAAABac/xx82KMNHuNE/s1600-h/ESE2009EMFTutorialLeft.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:124px;&quot; src=&quot;http://1.bp.blogspot.com/_rFZqMGOSYY8/SubPPHmEhyI/AAAAAAAABac/xx82KMNHuNE/s320/ESE2009EMFTutorialLeft.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5397229062093834018&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;I started with basic concepts about resource management and XML serialization, Eike went into depth about CDO, and Tom finished with an overview of EMF's data binding integration.&lt;br /&gt;&lt;br /&gt;The Modeling Symposium also had a very large turnout.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://4.bp.blogspot.com/_rFZqMGOSYY8/SufZIGgWIgI/AAAAAAAABa4/czBcMp2GvOM/s1600-h/ESE2009SymposiumLeft.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:138px;&quot; src=&quot;http://4.bp.blogspot.com/_rFZqMGOSYY8/SufZIGgWIgI/AAAAAAAABa4/czBcMp2GvOM/s320/ESE2009SymposiumLeft.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5397521411635290626&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;The room was packed.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/SufZetwvJUI/AAAAAAAABbA/3rqEmnd4kNM/s1600-h/ESE2009SymposiumRight.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:164px;&quot; src=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/SufZetwvJUI/AAAAAAAABbA/3rqEmnd4kNM/s320/ESE2009SymposiumRight.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5397521800130143554&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;Christian Meier of UBS kicked off the Modeling Symposium with a presentation about the relevance of modeling in the enterprise.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://1.bp.blogspot.com/_rFZqMGOSYY8/SufaSKcPwQI/AAAAAAAABbI/TZ1MrBkN9OY/s1600-h/ChristianMeier.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:308px;&quot; src=&quot;http://1.bp.blogspot.com/_rFZqMGOSYY8/SufaSKcPwQI/AAAAAAAABbI/TZ1MrBkN9OY/s320/ChristianMeier.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5397522684002156802&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;He would like to see Eclipse evolve toward a first class IDE for developing models with integration through repositories to better manage the integrity of large interdependent models as they are modified by distributed groups of developers.&lt;br /&gt;&lt;br /&gt;Eike continued with a brief demonstration of CDO as applied to his eDine restaurant model.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/SufazMDladI/AAAAAAAABbQ/jdTqNc3bgTs/s1600-h/EikeESE.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:299px;height:320px;&quot; src=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/SufazMDladI/AAAAAAAABbQ/jdTqNc3bgTs/s320/EikeESE.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5397523251371272658&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;He showed how several applications can coordinate around a single repository and thereby reflect changes made to the state at that central repository.&lt;br /&gt;&lt;br /&gt;Next Frédéric Madiot of Mia-Software presented the MoDisco project which is focused on discovering the models that underlie complex applications.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://4.bp.blogspot.com/_rFZqMGOSYY8/SufbSJIGoRI/AAAAAAAABbY/5CXxbYm-zrI/s1600-h/Fred.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:311px;height:320px;&quot; src=&quot;http://4.bp.blogspot.com/_rFZqMGOSYY8/SufbSJIGoRI/AAAAAAAABbY/5CXxbYm-zrI/s320/Fred.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5397523783160865042&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;This information can be used to evolve and modernized those applications. He showed the generic browser that can help analyze any EMF model. It supports specifying queries that can be used to alter how the model is viewed. He shows how this can be used to specify a derived feature that's external to the actual model. Once you induce an interesting view on the model, you could use those queries to extract that into a formal model of the application.&lt;br /&gt;&lt;br /&gt;Next Skhiri Sabri of Euranova demonstrated his live model to model transformation technology.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://2.bp.blogspot.com/_rFZqMGOSYY8/Sufb8NIs_QI/AAAAAAAABbg/NOLhgvXKfOY/s1600-h/Sabri.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:260px;&quot; src=&quot;http://2.bp.blogspot.com/_rFZqMGOSYY8/Sufb8NIs_QI/AAAAAAAABbg/NOLhgvXKfOY/s320/Sabri.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5397524505791626498&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;He talked about how an underlying model drives many of the related parts of an overall application. They have a model for the UI, a model for the data objects, and a modeled transformation layer for mapping the object model onto the UI. The tansformation layer is designed to listen to the source instances so that it can update the target instances as the source changes. In many ways, it acts similar to data binding, but is focused on always on live model to model transformation. It would have been cool to see it in action.&lt;br /&gt;&lt;br /&gt;Markus Voelter did a lightning presentation about &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/proposals/feature-model/&quot;&gt;feature models&lt;/a&gt; which are used for managing variability.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://4.bp.blogspot.com/_rFZqMGOSYY8/SufcatqAzTI/AAAAAAAABbo/dGL3wWuikgw/s1600-h/Markus.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:260px;height:320px;&quot; src=&quot;http://4.bp.blogspot.com/_rFZqMGOSYY8/SufcatqAzTI/AAAAAAAABbo/dGL3wWuikgw/s320/Markus.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5397525029917347122&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;A feature model describes how a valid instance is composed of parts, some of which might be mandatory, optional, or perhaps one choice of many options.&lt;br /&gt;&lt;br /&gt;Frédéric Jouault of Ecole Des Mines Nantes described the MDE diploma he's helping to develop.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://4.bp.blogspot.com/_rFZqMGOSYY8/SufcyNDCaCI/AAAAAAAABbw/0jYntUvuv0Y/s1600-h/FredericJ.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:292px;height:320px;&quot; src=&quot;http://4.bp.blogspot.com/_rFZqMGOSYY8/SufcyNDCaCI/AAAAAAAABbw/0jYntUvuv0Y/s320/FredericJ.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5397525433480800290&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;It will teach students basic MDE concepts and technologies with a focus on things that have direct industrial application. He outlined the basic curriculum they plan to support. It will include an internship program.&lt;br /&gt;&lt;br /&gt;Cédric Vidal of ProxiAD described EMF Customerizer, a technology for customizing generated models.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/SufduWG0wkI/AAAAAAAABcA/blwnzYYDyDI/s1600-h/CedricV.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:270px;height:320px;&quot; src=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/SufduWG0wkI/AAAAAAAABcA/blwnzYYDyDI/s320/CedricV.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5397526466704753218&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;It uses a CSS-style syntax for expressing the customization. This way the customizations can be expressed external to the model and hence can be reapplied to a modified version of that model. Perhaps in the future, direct changes to a model could be persisted as a customization.&lt;br /&gt;&lt;br /&gt;Sebastian Benz of BMW presented EFactory, a textual syntax for creating instances of Ecore models.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/SufdNJ0tB-I/AAAAAAAABb4/ZtsZ3a1DlSA/s1600-h/Sebastian.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:290px;&quot; src=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/SufdNJ0tB-I/AAAAAAAABb4/ZtsZ3a1DlSA/s320/Sebastian.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5397525896471840738&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;He used Xtext to define it and showed how it could be used as textual syntax for building Ecore itself. How cool is that?&lt;br /&gt;&lt;br /&gt;Cédric Brun demonstrated Acceleo's support for MTL. It looks like a nice language and the editor is quite slick.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/SufeHQ2MEjI/AAAAAAAABcI/v6supagcEHI/s1600-h/CedricB.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:296px;&quot; src=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/SufeHQ2MEjI/AAAAAAAABcI/v6supagcEHI/s320/CedricB.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5397526894789530162&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;There is support for prototype-based template generation, traceability hooks, and even a profiler to help tune generator performance. Very impressive.&lt;br /&gt;&lt;br /&gt;During the final discussions, we talked about the problem of wanting fine grained object level repositories as well course grained textual resources. Part of the issue is how often do conflicts arrive from simultaneous users. But even there, a textual file can be converted to a model, and comparisons can be done at the model level instead of the file level when merging changes. The problem is often establishing identity, which is generally lost in a modified textual representation. Names could be used for identity, but refactoring can change a name. Ideally we could edit textually but not produce wholesale changes in the underlying model. It was an interesting discussion, but such a large room with a large group is not a great venue for including all the interested parties.&lt;br /&gt;&lt;br /&gt;Afterward I sat through the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/summiteurope2009/sessions?id=1037&quot;&gt;Foundation 2.0 Symposium&lt;/a&gt;, but I quickly started to feel that pulling out a fingernail would be far less painful. I'm still not sure why model bashing is a necessary part of improving the foundation. Consider the 150+ people interested in modeling at ESE today, you'd feel safe to assume that modeling is quite an important part of the foundation's future. Oh well, you can't please all of the people all of the time. At least things progressed to more constructive contributions, such as how best to build an ecosystem where people can pay for bug fixes as well as fund feature development. I had to leave early for the sponsor's dinner, which was far more enjoyable!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3879044552984472733-1339746467507263916?l=ed-merks.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Ed Merks</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3879044552984472733.post-1339746467507263916</guid>
         <pubDate>Tue, 27 Oct 2009 17:38:00 -0700</pubDate>
         <media:thumbnail width="72" url="http://2.bp.blogspot.com/_rFZqMGOSYY8/SubO1fl45PI/AAAAAAAABaU/8Dt8qcIObsA/s72-c/SchlossparkForum.jpg" height="72" xmlns:media="http://search.yahoo.com/mrss/"/>
      </item>
      <item>
         <title>Life in the Fast Lane</title>
         <link>http://ed-merks.blogspot.com/2009/10/life-in-fast-lane.html</link>
         <description>Do you ever feel as if life is speeding by in a blur? I often feel that way these days.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/SuFxgrcxP7I/AAAAAAAABZo/IMKeqMCIOjk/s1600-h/BerlinTraffic.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:190px;&quot; src=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/SuFxgrcxP7I/AAAAAAAABZo/IMKeqMCIOjk/s320/BerlinTraffic.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5395718634799710130&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;My time in Berlin is rapidly nearing the end. How can the last five weeks have gone by so quickly? It's been more than a bit little dazzling.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://1.bp.blogspot.com/_rFZqMGOSYY8/SuFxvK49FII/AAAAAAAABZw/FcCDzvMYX1E/s1600-h/DazzlingFrank.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:201px;&quot; src=&quot;http://1.bp.blogspot.com/_rFZqMGOSYY8/SuFxvK49FII/AAAAAAAABZw/FcCDzvMYX1E/s320/DazzlingFrank.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5395718883757593730&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;Next week is Eclipse Summit Europe, so I'll be off to Ludswigburg. I love the cozy atmosphere of the summit! I've been fortunate to have been able to attend every single one; I've only missed one EclipseCon, but let's not go there. The summit gets better every year so I have particularly high expectations. No doubt it will be grand.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://2.bp.blogspot.com/_rFZqMGOSYY8/SuFyGkCMxWI/AAAAAAAABZ4/QffneZl3Tmg/s1600-h/GrandLights.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:240px;&quot; src=&quot;http://2.bp.blogspot.com/_rFZqMGOSYY8/SuFyGkCMxWI/AAAAAAAABZ4/QffneZl3Tmg/s320/GrandLights.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5395719285644248418&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://ralph-at-eclipse.blog.de/2009/10/22/ese-2009-update-4-get-ready-7220982/&quot;&gt;Ralph&lt;/a&gt; would be very happy if you registered immediately; we all live to make him happy, don't we? Of course it will make your pocket happier not to wait until next week. Note that last I checked, there were at least 60 people planning to attend the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/summiteurope2009/sessions?id=889&quot;&gt;modeling symposium&lt;/a&gt;. &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wp.kolbware.de/2009/10/modeling-symposium-cfp/&quot;&gt;Bernd&lt;/a&gt; and I have a few interesting sessions lined up already, but there's still room if you having something cool you'd like to show off. It doesn't have to be anything too formal.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://2.bp.blogspot.com/_rFZqMGOSYY8/SuFyRg3QOVI/AAAAAAAABaA/TICVAWmk86g/s1600-h/FormalLights.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:171px;&quot; src=&quot;http://2.bp.blogspot.com/_rFZqMGOSYY8/SuFyRg3QOVI/AAAAAAAABaA/TICVAWmk86g/s320/FormalLights.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5395719473771592018&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;The registration for the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wiki.eclipse.org/Eclipse_Modeling_Day&quot;&gt;Eclipse Modeling Days&lt;/a&gt; is looking very good too. That's something to look forward to after Frank, Else, and I leave Berlin behind at the beginning of November. These days, Berlin is the city of lights; I'll always remember it fondly.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://4.bp.blogspot.com/_rFZqMGOSYY8/SuFyc8t56KI/AAAAAAAABaI/VlyxKidOqUo/s1600-h/DomeLights.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:240px;&quot; src=&quot;http://4.bp.blogspot.com/_rFZqMGOSYY8/SuFyc8t56KI/AAAAAAAABaI/VlyxKidOqUo/s320/DomeLights.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5395719670227134626&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;When you live life in the fast lane, there's never a dull moment. I even fixed almost the entire defect backlog this week!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3879044552984472733-8197794502533749250?l=ed-merks.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Ed Merks</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3879044552984472733.post-8197794502533749250</guid>
         <pubDate>Thu, 22 Oct 2009 19:54:00 -0700</pubDate>
         <media:thumbnail width="72" url="http://3.bp.blogspot.com/_rFZqMGOSYY8/SuFxgrcxP7I/AAAAAAAABZo/IMKeqMCIOjk/s72-c/BerlinTraffic.jpg" height="72" xmlns:media="http://search.yahoo.com/mrss/"/>
      </item>
      <item>
         <title>Much Ado About Modeling</title>
         <link>http://ed-merks.blogspot.com/2009/10/much-ado-about-modeling.html</link>
         <description>What a relief! &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://thegordian.blogspot.com/&quot;&gt;Eike&lt;/a&gt; and I completed our &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://entwickler-akademie.de/ak/codecamps/eclipse-cc-modeling-en&quot;&gt;Code Camp&lt;/a&gt; yesterday here in Munich. It was a great deal of effort to prepare the material and given my strong dislike for working on powerpoint slides, all the advanced work seemed particularly onerous. But it was fun once we got started and now that it's done we have excellent material for the next time. The attendees were certainly very positive in their reviews; look at how studious they were doing their exercises.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://2.bp.blogspot.com/_rFZqMGOSYY8/StgCodhio6I/AAAAAAAABZA/5HSVBJgEwE4/s1600-h/CodeCampAttendees.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:138px;&quot; src=&quot;http://2.bp.blogspot.com/_rFZqMGOSYY8/StgCodhio6I/AAAAAAAABZA/5HSVBJgEwE4/s320/CodeCampAttendees.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5393063447919502242&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;Everyone had a great time and even I learned a lot listening to Eike's excellent presentation about &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/cdo/&quot;&gt;CDO&lt;/a&gt;. CDO is totally cool and I bet a lot more people would use it if they knew more about it. Eike's &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/summiteurope2009/sessions?id=1015&quot;&gt;CDO tutorial at ESE&lt;/a&gt; on October 27th is bound to be well attended; &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://tomsondev.bestsolution.at/&quot;&gt;Tom&lt;/a&gt; will also be involved to explain how EMF and databinding are as complimentary as nuts and chocolate. Speaking of totally cool, the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/summiteurope2009/sessions?id=1010&quot;&gt;DSL tutorial at ESE&lt;/a&gt; I'm sure will be a big hit as well; &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/Xtext/&quot;&gt;Xtext&lt;/a&gt; is one of my favorite things. It goes without saying that attending the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/summiteurope2009/table?date=2009-10-27&quot;&gt;ESE Modeling Symposium&lt;/a&gt; after the tutorial of your choice is an absolute must; don't forget to &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wp.kolbware.de/2009/10/modeling-symposium-cfp/&quot;&gt;send us your abstracts&lt;/a&gt; so we can prepare a fascinating agenda. It's clear that October 27th will be all modeling all the time! Even the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/summiteurope2009/sessions?id=1000&quot;&gt;b3 symposium&lt;/a&gt; and the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/summiteurope2009/sessions?id=981&quot;&gt;e4 symposium&lt;/a&gt; are about modeling. In Germany, every time you turn around, there's another model, or statue if you like.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://4.bp.blogspot.com/_rFZqMGOSYY8/StgK5YaUEdI/AAAAAAAABZM/Qw3mUgtekIo/s1600-h/EdAndFrankWithPegasus.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:275px;&quot; src=&quot;http://4.bp.blogspot.com/_rFZqMGOSYY8/StgK5YaUEdI/AAAAAAAABZM/Qw3mUgtekIo/s320/EdAndFrankWithPegasus.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5393072534697808338&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;Of course you don't have to attend ESE to learn more about modeling. For example, the itemis guys are doing &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.itemis.com/itemis-ag/language=en/20652/eclipse-modeling-gef-emf-gmf&quot;&gt;several training sessions&lt;/a&gt; in the coming weeks, not to mention the upcoming &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wiki.eclipse.org/Eclipse_Modeling_Day&quot;&gt;modeling days in Toronto and New York&lt;/a&gt;. Don't forget to register! Personally I'm very excited to learn more about the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/amp/&quot;&gt;Agent Modeling Platform&lt;/a&gt;, among other things; &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://milesparker.blogspot.com/&quot;&gt;Miles&lt;/a&gt; is doing some really cool stuff. There are definitely interesting things on the horizon as well as a clear path for how to get there.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/StgNdb6_AsI/AAAAAAAABZU/mkcrncKAGtg/s1600-h/Perspective.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:177px;&quot; src=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/StgNdb6_AsI/AAAAAAAABZU/mkcrncKAGtg/s320/Perspective.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5393075353138692802&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;Eike and I were going to go sight seeing in Munich today, but it's unseasonably cold---it snowed the last few days--- and we're just not properly equipped with warm jackets, so we'll head back to Berlin around noon. I'm not exactly sure what to sink my teeth into next.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://4.bp.blogspot.com/_rFZqMGOSYY8/StgPQdnMhbI/AAAAAAAABZc/WEe5IbmRPD4/s1600-h/Boar.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:264px;&quot; src=&quot;http://4.bp.blogspot.com/_rFZqMGOSYY8/StgPQdnMhbI/AAAAAAAABZc/WEe5IbmRPD4/s320/Boar.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5393077329277519282&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;No doubt it will be modeling related. Perhaps I should tackle that growing defect backlog!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3879044552984472733-7861581989582214953?l=ed-merks.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Ed Merks</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3879044552984472733.post-7861581989582214953</guid>
         <pubDate>Thu, 15 Oct 2009 17:05:00 -0700</pubDate>
         <media:thumbnail width="72" url="http://2.bp.blogspot.com/_rFZqMGOSYY8/StgCodhio6I/AAAAAAAABZA/5HSVBJgEwE4/s72-c/CodeCampAttendees.jpg" height="72" xmlns:media="http://search.yahoo.com/mrss/"/>
      </item>
      <item>
         <title>Really Big Models</title>
         <link>http://ed-merks.blogspot.com/2009/10/really-big-models.html</link>
         <description>&lt;div style=&quot;text-align:left;&quot;&gt;My modeling pilgrimage to Nantes the other week was most enjoyable. The stupid modeling talk went over well and it was great fun spending time with Jean as well as the academic and industrial modeling researchers from the area. Instead staying at an impersonal hotel, Stéphane, Etienne, and Cédric each hosted me at their respective homes. I even participated in the swimming portion of the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.triathlon-labaule.com/&quot;&gt;La Baule Triathalon&lt;/a&gt;. Checkout out my awesome team.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://4.bp.blogspot.com/_rFZqMGOSYY8/SssS_VRhSEI/AAAAAAAABYo/6YUbQFweYDA/s1600-h/EdTriathalon.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:247px;&quot; src=&quot;http://4.bp.blogspot.com/_rFZqMGOSYY8/SssS_VRhSEI/AAAAAAAABYo/6YUbQFweYDA/s320/EdTriathalon.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5389422258330617922&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;After the triathlon, we played soccer for a few hours; I hate to admit that I had trouble walking the next few days. Thanks to the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://mariot-thoughts.blogspot.com/2009/09/nathalie-effect-goals-tests-and-patches.html&quot;&gt;Nathalie Effect&lt;/a&gt;, my soccer team crushed the other team; sorry Etienne, better luck next year. The day was rounded off by a &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://model-driven-blogging.blogspot.com/2009/09/having-more-control.html&quot;&gt;giant barbecue party&lt;/a&gt; at Cedric's country estate.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://2.bp.blogspot.com/_rFZqMGOSYY8/SssUVK1MtNI/AAAAAAAABYw/NVzJWnagz18/s1600-h/EdBbq.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:256px;height:320px;&quot; src=&quot;http://2.bp.blogspot.com/_rFZqMGOSYY8/SssUVK1MtNI/AAAAAAAABYw/NVzJWnagz18/s320/EdBbq.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5389423732996224210&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;Since then I've been working with &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://thegordian.blogspot.com/&quot;&gt;Eike&lt;/a&gt; to prepare for the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://entwickler-akademie.de/ak/show.php3?id=44&amp;amp;ccid=9&quot;&gt;Eclipse Code Camp&lt;/a&gt; which is next week; did I ever mention how much I dislike preparing slides? I've also been working with &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://ianskerrett.wordpress.com/2009/10/02/growing-communities/&quot;&gt;Ian&lt;/a&gt; on the plans for the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wiki.eclipse.org/Eclipse_Modeling_Day&quot;&gt;Eclipse Modeling Days&lt;/a&gt; as well as with Bernd on the agenda for &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/summiteurope2009/&quot;&gt;Eclipse Summit Europe's&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wp.kolbware.de/2009/10/modeling-symposium-cfp/&quot;&gt;Modeling Symposium&lt;/a&gt;. If you're interested in participating in these events please let us know! Lately I feel like I've bitten off more than I can chew...&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://1.bp.blogspot.com/_rFZqMGOSYY8/SssYALxzqUI/AAAAAAAABY4/pJMhlDHRiVw/s1600-h/ElseWithStick.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:138px;&quot; src=&quot;http://1.bp.blogspot.com/_rFZqMGOSYY8/SssYALxzqUI/AAAAAAAABY4/pJMhlDHRiVw/s320/ElseWithStick.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5389427770519693634&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;This last weekend was a special event for Berlin: the wall came down twenty years ago. As part of the festivities, I saw the biggest model ever!&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:center;&quot;&gt;&lt;iframe class=&quot;embeddedvideo&quot; width=&quot;320&quot; height=&quot;266&quot; src=&quot;http://www.blogger.com/img/videoplayer.swf?videoUrl=http%3A%2F%2Fvp.video.google.com%2Fvideodownload%3Fversion%3D0%26secureurl%3DqAAAADjB7cieHmVEItu-JNF4-KKJAbjADNg98Ps0nmcCEYGecnzHRtDqdNSfWvwqa-w3zhlY8FPoPRN1j4hl8a7WXnsKB8ELaWFmYu2UAHsSP6QXERJxF4K-jyaxsDvPOrjR8XQjXFcMVCN9LMfy1u-R7WHyehYycL_QgP5yU__Vh5WE1h3iTEFMTe3Kycb_14AceJWrU-hrWUvsCygF6t6LfqdtmouVRXJmZbq6Ku87aav-%26sigh%3DOfWhPpyoE6OTExmYgBblyGt_79Q%26begin%3D0%26len%3D86400000%26docid%3D0&amp;amp;nogvlm=1&amp;amp;thumbnailUrl=http%3A%2F%2Fvideo.google.com%2FThumbnailServer2%3Fapp%3Dblogger%26contentid%3Df80b78ac36e99b67%26offsetms%3D5000%26itag%3Dw320%26sigh%3DXuBt9Dpl2zQ8r14v2VGwXMRKg4g&amp;amp;messagesUrl=video.google.com%2FFlashUiStrings.xlb%3Fframe%3Dflashstrings%26hl%3Den&quot; type=&quot;application/x-shockwave-flash&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt; The small giant above was 7 meters tall but the big one was 14 meters!!&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:center;&quot;&gt;&lt;iframe class=&quot;embeddedvideo&quot; width=&quot;320&quot; height=&quot;266&quot; src=&quot;http://www.blogger.com/img/videoplayer.swf?videoUrl=http%3A%2F%2Fvp.video.google.com%2Fvideodownload%3Fversion%3D0%26secureurl%3DqAAAAHfApvOOOB_WlESfHfM9b00WOkRg1sDj2n-RHGMGRdyed-v7p8Wb1wLgKp50ydbzw3fKDLBFclSHs6ZnvKHKQqFp_jSwYpqKZh4gu3G40xTnFJn6rR-ssykRTEMjUXs17gZMdfcfjiR0JGi9RQwAjwFZVLTD6uE549Jx4bbsgZUNpTb8o8vHyq--MzhOCYMtmyAjs13zNfIPsBIhCJm7qsBvFgvZELq4fyVUYMApre0n%26sigh%3D9ZHmDhq9VBif8tLqfuQ0vYHdlqA%26begin%3D0%26len%3D86400000%26docid%3D0&amp;amp;nogvlm=1&amp;amp;thumbnailUrl=http%3A%2F%2Fvideo.google.com%2FThumbnailServer2%3Fapp%3Dblogger%26contentid%3D7c81ad298fc4e93c%26offsetms%3D5000%26itag%3Dw320%26sigh%3DHLqXLvHVtrkXpokanYJaEzvjMw4&amp;amp;messagesUrl=video.google.com%2FFlashUiStrings.xlb%3Fframe%3Dflashstrings%26hl%3Den&quot; type=&quot;application/x-shockwave-flash&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt; I can say without fear of contradiction that models are big in Germany!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3879044552984472733-2965903141321491260?l=ed-merks.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Ed Merks</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3879044552984472733.post-2965903141321491260</guid>
         <pubDate>Mon, 05 Oct 2009 19:47:00 -0700</pubDate>
         <media:thumbnail width="72" url="http://4.bp.blogspot.com/_rFZqMGOSYY8/SssS_VRhSEI/AAAAAAAABYo/6YUbQFweYDA/s72-c/EdTriathalon.jpg" height="72" xmlns:media="http://search.yahoo.com/mrss/"/>
      </item>
      <item>
         <title>What's All This Fuss About Modeling?</title>
         <link>http://ed-merks.blogspot.com/2009/09/whats-all-this-fuss-about-modeling.html</link>
         <description>I've been incredibly busy these past few weeks. After getting home from Berlin last month I headed for California two days later to &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://live.eclipse.org/node/811&quot;&gt;present at the Googleplex&lt;/a&gt;. My presentation was about build and provision of all things! Speaking of which, did you see the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/proposals/b3/&quot;&gt;b3 proposal&lt;/a&gt;? Clearly models are good for everything, including builds. While in California I met up with Peter who &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://live.eclipse.org/node/800&quot;&gt;presented an introduction to DSLs&lt;/a&gt;. It was an excellent talk and overall the Google folks hosted a great event. Afterward, Peter came back to my place for a visit, and the next day Frank, &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://thegordian.blogspot.com/&quot;&gt;Eike&lt;/a&gt;, and Rene arrived as well. It was kind of a German invasion of my home but my killer guard dogs lost their killer instinct long ago.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://2.bp.blogspot.com/_rFZqMGOSYY8/Srsqeiv-JvI/AAAAAAAABXo/ESIJs38bAvo/s1600-h/PeterFrankEikeRene.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:229px;&quot; src=&quot;http://2.bp.blogspot.com/_rFZqMGOSYY8/Srsqeiv-JvI/AAAAAAAABXo/ESIJs38bAvo/s320/PeterFrankEikeRene.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5384944483664013042&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;Peter only stayed for a few days, but the rest stayed until just this past weekend. While I went to Boston last week for the Eclipse Board meeting---yet more travel---the guys took a trip to Ottawa to visit &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://kenn-hussey.blogspot.com/&quot;&gt;Kenn&lt;/a&gt; and &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://dev.eclipse.org/blogs/lynngo/&quot;&gt;Lynn&lt;/a&gt;. The girls are always concerned whenever anyone left the house with suit cases.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/Srsr-hx_krI/AAAAAAAABXw/5WLV02OQ0Zk/s1600-h/TrunkGirls.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:301px;height:320px;&quot; src=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/Srsr-hx_krI/AAAAAAAABXw/5WLV02OQ0Zk/s320/TrunkGirls.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5384946132671500978&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;Given that I have several events to attend in Europe in the coming weeks, I decided to head back to Berlin along with my guests. Frank and I arrived Monday after a flight in which nearly everything that can go wrong did go wrong. How exactly does a confirmed flight segment disappear from the system? No really, I do want to end up in Berlin, not Frankfurt! And no, I don't want just one of us to be upgraded to business, thanks for the kind offer. It made me a little prickly, but all is well that ends well.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/Srs1ATvICII/AAAAAAAABX4/UVOqc88RbXk/s1600-h/cactus.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:320px;&quot; src=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/Srs1ATvICII/AAAAAAAABX4/UVOqc88RbXk/s320/cactus.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5384956058865764482&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;On Monday I got a chance to spend time with &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.itemis.com/itemis-ag/company/language=en/2601/management-board&quot;&gt;Wolfgang Neuhaus&lt;/a&gt; who made a special trip out to Berlin so we could discuss itemis business in person. We spent a sunny day at a lovely cafe a short walk from Frank's place and decided to avoid sitting under the chestnut trees which were dropping spiked chestnut bombs with frightening regularity. It was very enjoyable. This area of Berlin is incredibly beautiful, especially the botanical garden!&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/Srs2nBUB5MI/AAAAAAAABYA/N3zac1lBASw/s1600-h/FernGreenHouse.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:240px;&quot; src=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/Srs2nBUB5MI/AAAAAAAABYA/N3zac1lBASw/s320/FernGreenHouse.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5384957823446803650&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;Yesterday I headed to Nantes to spend time with my friends at &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.obeo.fr/&quot;&gt;Obeo&lt;/a&gt;. Today I'll talk again about &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.emn.fr/z-info/jmodeles/index.php?page=prochaine-conference&quot;&gt;the unbearable stupidity of modeling&lt;/a&gt;. I'll be presenting in French; just kidding! Jean Bezivin invited me to present and I'm just a boy who can't say no. It's simply beautiful here in Nantes, and the people I'm staying with are all so nice. Too bad I forgot my camera!&lt;br /&gt;&lt;br /&gt;In an upcoming week I'll be helping Eike with the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://entwickler-akademie.de/ak/show.php3?id=44&amp;amp;ccid=9&quot;&gt;Eclipse Code Camp&lt;/a&gt;. I'll be presenting in German; just kidding! It will be four action packed days of fun and learning so don't miss the opportunity if you're able to find your way to Munich the week of October 12, or is that Oktober. I feel a bit dazzled these days.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/Srs4unQj2sI/AAAAAAAABYI/BCX-U3quGEk/s1600-h/SunnyGrass.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:218px;&quot; src=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/Srs4unQj2sI/AAAAAAAABYI/BCX-U3quGEk/s320/SunnyGrass.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5384960152915139266&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;For &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;https://www.eclipsecon.org/summiteurope2009/&quot;&gt;Eclipse Summit Europe&lt;/a&gt; I'm going to clone myself so I can attend both the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;https://www.eclipsecon.org/summiteurope2009/sessions?id=889&quot;&gt;Modeling Symposium&lt;/a&gt; and the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;https://www.eclipsecon.org/summiteurope2009/sessions?id=1000&quot;&gt;B3 Symposium&lt;/a&gt;. Speaking of which, for the modeling symposium we want to give people a chance to present short 10-15 minute presentations about the modeling technology they're working on or to propose discussion topics. If you're interested, please send a &lt;span style=&quot;font-weight:bold;&quot;&gt;short&lt;/span&gt; abstract for a talk or a proposal for a discussion topic to &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;mailto:ed.merks@gmail.com&quot;&gt;ed.merks@gmail.com&lt;/a&gt; and &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;mailto:bernd.kolb@sap.com&quot;&gt;bernd.kolb@sap.com&lt;/a&gt;; please use a subject line of the form [ese2009]...&lt;br /&gt;&lt;br /&gt;And finally, in November, there are going to be some Eclipse Modeling Days, but that's a secret, so I can't tell you about it, especially not about their secret locations in Toronto and New York. We're still gathering abstracts. Interested?&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3879044552984472733-8456278430531203085?l=ed-merks.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Ed Merks</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3879044552984472733.post-8456278430531203085</guid>
         <pubDate>Wed, 23 Sep 2009 19:53:00 -0700</pubDate>
         <media:thumbnail width="72" url="http://2.bp.blogspot.com/_rFZqMGOSYY8/Srsqeiv-JvI/AAAAAAAABXo/ESIJs38bAvo/s72-c/PeterFrankEikeRene.jpg" height="72" xmlns:media="http://search.yahoo.com/mrss/"/>
      </item>
      <item>
         <title>Berlin's Eclipse Modeling Stammtisch</title>
         <link>http://ed-merks.blogspot.com/2009/08/berlins-eclipse-modeling-stammtisch.html</link>
         <description>The Eclipse Modeling Stammtisch in Berlin yesterday was a lot of fun. Eike and I arrived a few minutes late only to realize we'd really not made good arrangements for how to find others at the huge beer garden. Eike took off his hat to be more easily recognizable; clearly I should have worn my pink shirt. Fortunately it didn't take us long to find the early birds; the hats with little propellers really helped. Beer is not my drink of choice, but I'm acquiring a taste for &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://en.wikipedia.org/wiki/Wheat_beer&quot;&gt;weißbier&lt;/a&gt; so I promptly started on one of those. After the social lubricant, we got down to some real hard work. First we created an economic model which we used to resolve the economic crisis.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://1.bp.blogspot.com/_rFZqMGOSYY8/Soz1E8tXfrI/AAAAAAAABW4/AgKIT31d8S8/s1600-h/BerlinStammtisch1.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:240px;&quot; src=&quot;http://1.bp.blogspot.com/_rFZqMGOSYY8/Soz1E8tXfrI/AAAAAAAABW4/AgKIT31d8S8/s320/BerlinStammtisch1.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5371937920910851762&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;Then we built a climate model and promptly came up with a way to halt global warming without banning SUVs.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://1.bp.blogspot.com/_rFZqMGOSYY8/Soz1K6CnaEI/AAAAAAAABXA/Urn3Y8-wH40/s1600-h/BerlinStammtisch2.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:240px;&quot; src=&quot;http://1.bp.blogspot.com/_rFZqMGOSYY8/Soz1K6CnaEI/AAAAAAAABXA/Urn3Y8-wH40/s320/BerlinStammtisch2.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5371938023273883714&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;Next we hashed out a new food distribution model to solve the problem of world hunger; there really is plenty of good food to go around.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/Soz1RKp4PmI/AAAAAAAABXI/JqLiz3tEdj8/s1600-h/BerlinStammtisch3.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:240px;&quot; src=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/Soz1RKp4PmI/AAAAAAAABXI/JqLiz3tEdj8/s320/BerlinStammtisch3.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5371938130812747362&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;And finally we created a new agent model to arrive at a proven policy for achieving world peace. We're calling the new policy: Open Source for Open Minds.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://4.bp.blogspot.com/_rFZqMGOSYY8/Soz1tCg9SOI/AAAAAAAABXY/-9kOc_1ISEY/s1600-h/BerlinStammtisch4.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:240px;&quot; src=&quot;http://4.bp.blogspot.com/_rFZqMGOSYY8/Soz1tCg9SOI/AAAAAAAABXY/-9kOc_1ISEY/s320/BerlinStammtisch4.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5371938609664182498&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;When all the great problems of our times were resolved, Ralph showed up to shower us with praise and more importantly, the free beer I promised.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/Soz1zlcKwDI/AAAAAAAABXg/TX2h_e_LKqQ/s1600-h/BerlinStammtisch5.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:240px;&quot; src=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/Soz1zlcKwDI/AAAAAAAABXg/TX2h_e_LKqQ/s320/BerlinStammtisch5.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5371938722118549554&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;I lost track of time after that. Good company and good beer tends to do that! Thanks for the fun time to those of you who came; sorry you couldn't make it to all the rest of you. Maybe next time...&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3879044552984472733-4296151430233477447?l=ed-merks.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Ed Merks</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3879044552984472733.post-4296151430233477447</guid>
         <pubDate>Wed, 19 Aug 2009 18:32:00 -0700</pubDate>
         <media:thumbnail width="72" url="http://1.bp.blogspot.com/_rFZqMGOSYY8/Soz1E8tXfrI/AAAAAAAABW4/AgKIT31d8S8/s72-c/BerlinStammtisch1.jpg" height="72" xmlns:media="http://search.yahoo.com/mrss/"/>
      </item>
      <item>
         <title>Eclipse Modeling Stammtisch Plans</title>
         <link>http://ed-merks.blogspot.com/2009/08/eclipse-modeling-stammtisch-plans.html</link>
         <description>As my plane approached Frankfurt early Friday morning, the sun peeked over the horizon with promises of good things to come, which of course includes tomorrow's Eclipse Modeling Stammtisch &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://thegordian.blogspot.com/2009/08/modeling-stammtisch-details.html&quot;&gt;Eike&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://ralph-at-eclipse.blog.de/2009/08/13/notes-from-within-6716226/&quot;&gt;Ralph&lt;/a&gt;, and &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://ed-merks.blogspot.com/2009/08/berlin-there-i-go-again.html&quot;&gt;I&lt;/a&gt; blogged about last week.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://4.bp.blogspot.com/_rFZqMGOSYY8/SopalKPjRrI/AAAAAAAABWo/NdJtUDkksr4/s1600-h/SunPeeking.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:182px;&quot; src=&quot;http://4.bp.blogspot.com/_rFZqMGOSYY8/SopalKPjRrI/AAAAAAAABWo/NdJtUDkksr4/s320/SunPeeking.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5371205100043978418&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;So far nineteen people have responded to &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.doodle.com/qwpp6p8wtcq78t2i&quot;&gt;our poll&lt;/a&gt;. We'll host the Stammtisch at &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.pratergarten.de/d/biergarten.php4&quot;&gt;Der Biergarten of the PraterGarten&lt;/a&gt; and start at around 6:30PM. What better place for free beer? It seats 600, in case a few more people decide to join the last minute. This is a golden opportunity to meet and greet!&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/SopfLqz8KSI/AAAAAAAABWw/QqMKvy14W1U/s1600-h/GoldenElse.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:245px;height:320px;&quot; src=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/SopfLqz8KSI/AAAAAAAABWw/QqMKvy14W1U/s320/GoldenElse.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5371210159668078882&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;Don't miss it. See you tomorrow, i.e., Wednesday August 19th.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3879044552984472733-400070106440635564?l=ed-merks.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Ed Merks</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3879044552984472733.post-400070106440635564</guid>
         <pubDate>Mon, 17 Aug 2009 19:26:00 -0700</pubDate>
         <media:thumbnail width="72" url="http://4.bp.blogspot.com/_rFZqMGOSYY8/SopalKPjRrI/AAAAAAAABWo/NdJtUDkksr4/s72-c/SunPeeking.jpg" height="72" xmlns:media="http://search.yahoo.com/mrss/"/>
      </item>
      <item>
         <title>Berlin: There I Go Again</title>
         <link>http://ed-merks.blogspot.com/2009/08/berlin-there-i-go-again.html</link>
         <description>Berlin was so cool I'm going back later this week to see all the things I missed in June.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/SoG8IaGaw4I/AAAAAAAABWY/Y2TbTPqTs_Q/s1600-h/PassingShipsInBerlin.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:206px;&quot; src=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/SoG8IaGaw4I/AAAAAAAABWY/Y2TbTPqTs_Q/s320/PassingShipsInBerlin.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5368779083433558914&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://thegordian.blogspot.com/&quot;&gt;Eike&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://ralph-at-eclipse.blog.de/&quot;&gt;Ralph&lt;/a&gt;, and I thought it would be a great opportunity to host an Eclipse Modeling Stammtisch on Wednesday August 19th. If you're not into modeling, you're still more than welcome to join the party; expect to be converted into the fold.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://4.bp.blogspot.com/_rFZqMGOSYY8/SoG-gFnYiGI/AAAAAAAABWg/tF5FAzps5qQ/s1600-h/BombedChurch.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:240px;height:320px;&quot; src=&quot;http://4.bp.blogspot.com/_rFZqMGOSYY8/SoG-gFnYiGI/AAAAAAAABWg/tF5FAzps5qQ/s320/BombedChurch.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5368781689274796130&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;Please let us know your intent to join by &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.doodle.com/qwpp6p8wtcq78t2i&quot;&gt;completing this poll&lt;/a&gt;. We'll find a good location based on attendance. Did I mention Ralph's promise of free beer?&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3879044552984472733-3663512819083069034?l=ed-merks.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Ed Merks</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3879044552984472733.post-3663512819083069034</guid>
         <pubDate>Tue, 11 Aug 2009 06:35:00 -0700</pubDate>
         <media:thumbnail width="72" url="http://3.bp.blogspot.com/_rFZqMGOSYY8/SoG8IaGaw4I/AAAAAAAABWY/Y2TbTPqTs_Q/s72-c/PassingShipsInBerlin.jpg" height="72" xmlns:media="http://search.yahoo.com/mrss/"/>
      </item>
      <item>
         <title>On Dead Lines</title>
         <link>http://ed-merks.blogspot.com/2009/08/on-dead-lines.html</link>
         <description>Although lines don't die, deadlines are nevertheless an ugly fact of reality. In particular, the opportunity to &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipsecon.org/summiteurope2009/submissions&quot;&gt;submit a talk for Eclipse Summit Europe 2009&lt;/a&gt; is rapidly reaching its inevitable conclusion. This year's drop dead date is August 19th so you have just barely over two weeks to dilly-dally before it's too late. After that, it will just be so much water under the bridge, or is that over the falls...&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/Sncsyu5rihI/AAAAAAAABV4/L90PI9H5y_E/s1600-h/ShannonFalls.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:285px;height:320px;&quot; src=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/Sncsyu5rihI/AAAAAAAABV4/L90PI9H5y_E/s320/ShannonFalls.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5365806731130276370&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;The runtime folks are certainly off to a running start with their submissions---not that I'm competitive or anything---while the modeling submissions are sadly lagging. No doubt folks are busy modeling their submissions first and will hence be far ahead of the game in the end. Of course my whining is really just a case of the pot calling the kettle black given that I've not yet submitted a proposal for the modeling symposium, as I committed to doing several weeks ago. In my defense, I've been traveling and Vancouver was way too beautiful to spend at a computer! To my credit, today I'm working during a holiday.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3879044552984472733-5852461904003301713?l=ed-merks.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Ed Merks</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3879044552984472733.post-5852461904003301713</guid>
         <pubDate>Mon, 03 Aug 2009 05:54:00 -0700</pubDate>
         <media:thumbnail width="72" url="http://3.bp.blogspot.com/_rFZqMGOSYY8/Sncsyu5rihI/AAAAAAAABV4/L90PI9H5y_E/s72-c/ShannonFalls.jpg" height="72" xmlns:media="http://search.yahoo.com/mrss/"/>
      </item>
      <item>
         <title>Grieving Over the Death of a Cash Cow</title>
         <link>http://ed-merks.blogspot.com/2009/07/grieving-over-death-of-cash-cow.html</link>
         <description>A sizable portion of the software cash cow herd is dying and our industry is learning to cope with grief, the natural expected response to death. Grief is painful, but absolutely necessary and completely unavoidable. Shock, anger, guilt, obsession, depression, confusion, and feelings of &lt;span class=&quot;blsp-spelling-corrected&quot; id=&quot;SPELLING_ERROR_0&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_0&quot;&gt;helplessness&lt;/span&gt;&lt;/span&gt;, emptiness, and loneliness are among grief's many facets. It's almost too much to bear.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/SlMAeLI5OvI/AAAAAAAABRw/ruOHtagxLzU/s1600-h/Bear.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:223px;&quot; src=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/SlMAeLI5OvI/AAAAAAAABRw/ruOHtagxLzU/s320/Bear.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5355624900259822322&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;Once upon a time, vast herds of carefully controlled cash cows were tended with loving care until some of the cows mutated and escaped. Actually, let's be frank, the cows were &lt;span class=&quot;blsp-spelling-corrected&quot; id=&quot;SPELLING_ERROR_1&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_1&quot;&gt;deliberately&lt;/span&gt;&lt;/span&gt; genetically engineered and then set lose with the disruptive intent, e.g., to undermine competing herds of cash cows. Those with the biggest herds were often in the best position to sacrifice a few cows and could draw attention to the virtue of their sacrificial offerings. Consider though how much it cost to develop what's at Eclipse today, i.e., hundreds of millions. No doubt this is dwarfed by commercial investments in Linux, i.e., multiple billions. Do these appear to be purely noble acts intended to build a grand public edifice?&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://1.bp.blogspot.com/_rFZqMGOSYY8/SlMBpKTj_AI/AAAAAAAABR4/weluVKr7W1g/s1600-h/GrandEdifice.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:244px;&quot; src=&quot;http://1.bp.blogspot.com/_rFZqMGOSYY8/SlMBpKTj_AI/AAAAAAAABR4/weluVKr7W1g/s320/GrandEdifice.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5355626188526320642&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;Most certainly open source investment is generally not a selfless act; yes, it really does involve investment and yes, there is virtue in it as well. However, whenever a valuable resource is consumed, a return is expected. It is the economic way of the things. There can be no exceptions for long. So we must wonder, who will continue to tend the free cows and what return on investment do they expect? I.e., what is the emerging business model for our future software economy? In other words, how will &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://thegordian.blogspot.com/&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_2&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_2&quot;&gt;Eike&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; stock his bar so the goodness of &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/cdo/&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_3&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_3&quot;&gt;CDO&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; continues to flow?&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://2.bp.blogspot.com/_rFZqMGOSYY8/SlMCwtgC-8I/AAAAAAAABSA/nKIoTEOiKX8/s1600-h/EikeAtComputer.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:254px;&quot; src=&quot;http://2.bp.blogspot.com/_rFZqMGOSYY8/SlMCwtgC-8I/AAAAAAAABSA/nKIoTEOiKX8/s320/EikeAtComputer.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5355627417744636866&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;I've already suggested that open source can act as a way of targeting competitors by undermining their cash flow thereby making them less of a competitive threat. Of course that tends to &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_4&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_4&quot;&gt;commoditize&lt;/span&gt;&lt;/span&gt; the domain so that no one makes money from it. A related strategy is to open source only part of the solution, just the basic frameworks and &lt;span class=&quot;blsp-spelling-corrected&quot; id=&quot;SPELLING_ERROR_5&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_5&quot;&gt;capabilities&lt;/span&gt;&lt;/span&gt;, and then provide value added software to drive revenue, i.e., a free cow &lt;span class=&quot;blsp-spelling-corrected&quot; id=&quot;SPELLING_ERROR_6&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_6&quot;&gt;complemented&lt;/span&gt;&lt;/span&gt; by a cash cow. In principle this can be quite effective because consumers love free things. From that perspective, open source software is almost like a coupon. If it could be contained to that, we'd not need a new business model, so this approach is a pinnacle of success and has shining appeal.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/SlMEcSsg6fI/AAAAAAAABSI/dLMq5mey3So/s1600-h/GlassTower.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:162px;height:320px;&quot; src=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/SlMEcSsg6fI/AAAAAAAABSI/dLMq5mey3So/s320/GlassTower.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5355629265975044594&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;Another approach is to just open source everything. After all, we all know that free software still takes effort to install, learn, use effectively, and keep up-to-date, so there's still money to be made in the services around all this &quot;free&quot; software. &lt;span class=&quot;blsp-spelling-corrected&quot; id=&quot;SPELLING_ERROR_7&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_7&quot;&gt;Unfortunately&lt;/span&gt;&lt;/span&gt;, all this free software has produced a &lt;span class=&quot;blsp-spelling-corrected&quot; id=&quot;SPELLING_ERROR_8&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_8&quot;&gt;debilitating&lt;/span&gt;&lt;/span&gt; almost viral condition known as &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_9&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_9&quot;&gt;freetardation&lt;/span&gt;&lt;/span&gt;: the irrational belief that paying a dollar for anything software related is offensive in principle. How many &lt;span class=&quot;blsp-spelling-corrected&quot; id=&quot;SPELLING_ERROR_10&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_10&quot;&gt;organizations&lt;/span&gt;&lt;/span&gt; and individuals don't end up spending person weeks of time and effort doing poorly something they could have &lt;span class=&quot;blsp-spelling-corrected&quot; id=&quot;SPELLING_ERROR_11&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_11&quot;&gt;accomplished&lt;/span&gt;&lt;/span&gt; more effectively with appropriate technology or expert assistance at a small fraction of the real cost? The old penny wise pound foolish principle often rears its ugly head &lt;span class=&quot;blsp-spelling-corrected&quot; id=&quot;SPELLING_ERROR_12&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_12&quot;&gt;particularly&lt;/span&gt;&lt;/span&gt; when all the costs and benefits are not properly measured. The problem with the service model is that it's not a license to print money the same ways as is selling software. Software is practically infinitely scalable, i.e., just provide enough download bandwidth, while service generally requires more people, highly skilled people who are themselves expensive and in short supply. Still, it's also a proven model that's held up well.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://1.bp.blogspot.com/_rFZqMGOSYY8/SlMGciAtELI/AAAAAAAABSQ/_n1vEaSuSSc/s1600-h/SonyCenterRoof.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:240px;&quot; src=&quot;http://1.bp.blogspot.com/_rFZqMGOSYY8/SlMGciAtELI/AAAAAAAABSQ/_n1vEaSuSSc/s320/SonyCenterRoof.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5355631469109514418&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;A valuable aspect of open source software that's more easily overlooked is as protection against vendor lock-in. A few weeks ago at one of the banks it was explained to me that they're fed up with the products they're using. They're too expensive and provide little value over and above what's available in open source. What they're most frustrated with is that each year the salesmen show up with a laundry list of cool new features that justify the upgrade price and yet doesn't include a single feature they actually need. Open source provides better cost control and a better hedge against arbitrary future changes. Self service is even possible and while open source software too can change, there's always the option to fork. Decision makers are in a much better position these days to control their destiny.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://1.bp.blogspot.com/_rFZqMGOSYY8/SlMICjVxS0I/AAAAAAAABSY/Ql0lAzF2caA/s1600-h/BoardStrategySession.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:188px;&quot; src=&quot;http://1.bp.blogspot.com/_rFZqMGOSYY8/SlMICjVxS0I/AAAAAAAABSY/Ql0lAzF2caA/s320/BoardStrategySession.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5355633221812964162&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;I'm not really sure how this will all unfold in the longer term. I doubt anyone is, but the trend toward open source is clear. Probably some of the cash cows will survive, perhaps the value-add approach will work well, at least for those most skilled at riding the leading edge of the crashing wave, but most certainly the service model will survive regardless, because all the models rely on service. &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_13&quot;&gt;This should give &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_13&quot;&gt;committers&lt;/span&gt;&lt;/span&gt; pause for a bit of self reflection.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://1.bp.blogspot.com/_rFZqMGOSYY8/SlMJTPdrNrI/AAAAAAAABSg/y0ixurHE84o/s1600-h/ReflectingSphere.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:320px;&quot; src=&quot;http://1.bp.blogspot.com/_rFZqMGOSYY8/SlMJTPdrNrI/AAAAAAAABSg/y0ixurHE84o/s320/ReflectingSphere.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5355634608046814898&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;Personally I'm not grieving, at least not over the demise of software cash cows. Like other &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_14&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_14&quot;&gt;committers&lt;/span&gt;&lt;/span&gt; at Eclipse, I am a highly skilled expert, and that puts me and &lt;span class=&quot;blsp-spelling-corrected&quot; id=&quot;SPELLING_ERROR_15&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_15&quot;&gt;professionals&lt;/span&gt;&lt;/span&gt; like me in the driver's seat. We fit into the economic picture regardless of what business model prevails. If you think of software as content, much like a song, book, or movie is content, then we are the content producers. If you think of software as a service, we are the service providers. There is no software without us, and no, ten unskilled workers will not produce the same result as will one highly skilled individual. So while employers will be tempted to farm out your job to someone else if they think they can save a dollar, they're definitely going to need someone just like you. By being the best at what you do, you're in an excellent position to control your destiny because those in need of expertise will often be willing to pay top dollar to get the very best.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3879044552984472733-4682096228077196225?l=ed-merks.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Ed Merks</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3879044552984472733.post-4682096228077196225</guid>
         <pubDate>Mon, 06 Jul 2009 20:42:00 -0700</pubDate>
         <media:thumbnail width="72" url="http://3.bp.blogspot.com/_rFZqMGOSYY8/SlMAeLI5OvI/AAAAAAAABRw/ruOHtagxLzU/s72-c/Bear.jpg" height="72" xmlns:media="http://search.yahoo.com/mrss/"/>
      </item>
      <item>
         <title>Talking About Connected Data Objects</title>
         <link>http://ed-merks.blogspot.com/2009/07/talking-about-connected-data-objects.html</link>
         <description>My personal Berlin tour guide, &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://thegordian.blogspot.com/&quot;&gt;Eike Stepper&lt;/a&gt;, and I did a &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://java.dzone.com/podcasts/galileo-podcast-series-cdo&quot;&gt;Galileo Series Podcast about CDO&lt;/a&gt; with James Sugrue the other day.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://4.bp.blogspot.com/_rFZqMGOSYY8/Sky0myfifEI/AAAAAAAABPA/2NtW3M6RJDE/s1600-h/EikeAtCafe.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:240px;height:320px;&quot; src=&quot;http://4.bp.blogspot.com/_rFZqMGOSYY8/Sky0myfifEI/AAAAAAAABPA/2NtW3M6RJDE/s320/EikeAtCafe.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5353852635518762050&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;Eike and his rapidly growing team are doing some extremely cool things with CDO, so you might be interested to find out more.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3879044552984472733-1443039228093249447?l=ed-merks.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Ed Merks</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3879044552984472733.post-1443039228093249447</guid>
         <pubDate>Thu, 02 Jul 2009 01:09:00 -0700</pubDate>
         <media:thumbnail width="72" url="http://4.bp.blogspot.com/_rFZqMGOSYY8/Sky0myfifEI/AAAAAAAABPA/2NtW3M6RJDE/s72-c/EikeAtCafe.jpg" height="72" xmlns:media="http://search.yahoo.com/mrss/"/>
      </item>
      <item>
         <title>Going Gaga Over Galileo</title>
         <link>http://ed-merks.blogspot.com/2009/06/going-gaga-over-galileo.html</link>
         <description>As a &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/donate/&quot;&gt;true friend of Eclipse&lt;/a&gt;, I had early access to &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/galileo/&quot;&gt;Galileo&lt;/a&gt; and thanks to the fast friendly mirror, I downloaded the classic SDK in just over three minutes. A friend of mine who isn't a friend of Eclipse (and who shall remain nameless to protect the guilty) is finding his download will take an hour. Friendship is a bountiful font from which many good things flow and that brings a smile to my face.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://2.bp.blogspot.com/_rFZqMGOSYY8/SkIG5Yz01_I/AAAAAAAABAY/82V3WdiC4nY/s1600-h/EdWithFountain.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:230px;height:320px;&quot; src=&quot;http://2.bp.blogspot.com/_rFZqMGOSYY8/SkIG5Yz01_I/AAAAAAAABAY/82V3WdiC4nY/s320/EdWithFountain.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5350846890251704306&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.cloudsmith.com/&quot;&gt;Cloudsmith&lt;/a&gt;, my latest additional benefactor, is providing a cool community service that we've dubbed Galileo Plus. Projects like &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/modeling/emf/?project=teneo&quot;&gt;Teneo&lt;/a&gt; and &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.eclipse.org/modeling/emf/?project=cdo&quot;&gt;CDO&lt;/a&gt; provide integration with LGPL libraries like Hibernate that can't be distributed by Eclipse. The p2 repository at &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://download.cloudsmith.com/galileoplus/&quot;&gt;http://download.cloudsmith.com/galileoplus/&lt;/a&gt; is basically a clone of the Galileo repository with additional libraries such as Hibernate. Don't worry if your browser says the page for this link has forbidden access, there really is a p2 repository there and you can add it as a site in your installer like this:&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://2.bp.blogspot.com/_rFZqMGOSYY8/SkIx7hj_08I/AAAAAAAABAo/zbtrZb2JF1A/s1600-h/SoftwareInstaller.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:285px;&quot; src=&quot;http://2.bp.blogspot.com/_rFZqMGOSYY8/SkIx7hj_08I/AAAAAAAABAo/zbtrZb2JF1A/s320/SoftwareInstaller.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5350894205960967106&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;Now clients of these modeling technologies have a p2 site with one-stop-shopping for their installation needs; you'll find additional categories like &quot;Net4j Database Adapters&quot; and &quot;Third Party Libraries&quot; among other things. We intend to grow this repository to include more missing bundles as well as other interesting additional bundles. If your project could benefit from this type of one-stop-shopping, send me a note and let the good times flow.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://2.bp.blogspot.com/_rFZqMGOSYY8/SkIv7rwTf7I/AAAAAAAABAg/snMrb8IUQdg/s1600-h/SonyCenterFountain.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:240px;height:320px;&quot; src=&quot;http://2.bp.blogspot.com/_rFZqMGOSYY8/SkIv7rwTf7I/AAAAAAAABAg/snMrb8IUQdg/s320/SonyCenterFountain.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5350892009673686962&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;Goodbye Galileo, hello Helios.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3879044552984472733-7953990530849419535?l=ed-merks.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Ed Merks</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3879044552984472733.post-7953990530849419535</guid>
         <pubDate>Tue, 23 Jun 2009 22:49:00 -0700</pubDate>
         <media:thumbnail width="72" url="http://2.bp.blogspot.com/_rFZqMGOSYY8/SkIG5Yz01_I/AAAAAAAABAY/82V3WdiC4nY/s72-c/EdWithFountain.jpg" height="72" xmlns:media="http://search.yahoo.com/mrss/"/>
      </item>
      <item>
         <title>Blow Away the Blues in Berlin</title>
         <link>http://ed-merks.blogspot.com/2009/06/blow-away-blues-in-berlin.html</link>
         <description>Blue is my favorite color, but being a bit blue bites badly. I remind myself frequently that life's colors are just as bright as they ever were, it's just my perception that's changed.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://2.bp.blogspot.com/_rFZqMGOSYY8/SjJZl6J6zAI/AAAAAAAAA5o/pMNWbuJ0aKQ/s1600-h/FlaxWithSunburstLocust.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:320px;&quot; src=&quot;http://2.bp.blogspot.com/_rFZqMGOSYY8/SjJZl6J6zAI/AAAAAAAAA5o/pMNWbuJ0aKQ/s320/FlaxWithSunburstLocust.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5346434215443090434&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;For this reason, I'm very much looking forward to blowing away my blues with a trip to Berlin next week. I've never been there before, and &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://thegordian.blogspot.com/2009/06/meet-eclipse-directors-in-berlin.html&quot;&gt;Eike Stepper&lt;/a&gt; will be my personal tour guide, so I'm totally stoked. The Eclipse Board of Directors meets June 17 and 18. As &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://dev.eclipse.org/blogs/mike/2009/06/09/berlin-board-stammtisch/&quot;&gt;Mike mentioned&lt;/a&gt;, it's the first meeting of the board outside of the states and it's in Germany in recognition of the large number of German members who have been traveling across the planet for so many years; consider how far California is from Germany! I don't suppose it's very green regardless of where we have the meetings.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://4.bp.blogspot.com/_rFZqMGOSYY8/SjJioJXjP5I/AAAAAAAAA5w/MWPTmsyj6Bk/s1600-h/Elm.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:249px;&quot; src=&quot;http://4.bp.blogspot.com/_rFZqMGOSYY8/SjJioJXjP5I/AAAAAAAAA5w/MWPTmsyj6Bk/s320/Elm.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5346444149491187602&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;As a small part of my fun filled week, we're planning a modeling party on June 16th starting at 7:00PM at the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.bavarium-berlin.de/&quot;&gt;Bavarium&lt;/a&gt; hosted by Eike and yours truly. We promise free beer and witty commentary. A professional photographer will attend. If you plan to partake, please &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www3.doodle.com/xsfdcb8rugnzpe4d&quot;&gt;register your intent&lt;/a&gt;. Well, I confess I've become a bit delusional; it's actually a &quot;Meet the Board Members &lt;span class=&quot;il&quot;&gt;Stammtisch&lt;/span&gt;,&quot; but I'm a board member and you'll get to meet Eike and me, so that makes it a modeling party, in my humble opinion. See you there!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3879044552984472733-6160954051000700374?l=ed-merks.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Ed Merks</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3879044552984472733.post-6160954051000700374</guid>
         <pubDate>Fri, 12 Jun 2009 01:22:00 -0700</pubDate>
         <media:thumbnail width="72" url="http://2.bp.blogspot.com/_rFZqMGOSYY8/SjJZl6J6zAI/AAAAAAAAA5o/pMNWbuJ0aKQ/s72-c/FlaxWithSunburstLocust.jpg" height="72" xmlns:media="http://search.yahoo.com/mrss/"/>
      </item>
      <item>
         <title>I Don't Care Much for Words of Doom</title>
         <link>http://ed-merks.blogspot.com/2009/06/i-dont-care-much-for-words-of-doom.html</link>
         <description>Likely it's mostly a reflection of personal sensitivity given my fluctuating moods of late, but it seems to me I've witnessed more negative navel gazing in the past few weeks than is entirely healthy. The balance between optimism and pessimism is always a challenge, but if you pay attention only to the rain brought on by life's dark clouds, you'll tend to miss the bright colors revealed when the sun peeks out, as it inevitably does.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://2.bp.blogspot.com/_rFZqMGOSYY8/SiOutY7PwBI/AAAAAAAAA5I/GPAfjLvx7lY/s1600-h/GrapeHyacinthWithAzalea.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:310px;height:320px;&quot; src=&quot;http://2.bp.blogspot.com/_rFZqMGOSYY8/SiOutY7PwBI/AAAAAAAAA5I/GPAfjLvx7lY/s320/GrapeHyacinthWithAzalea.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5342305677799833618&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;It's best to be on guard against creeping negative attitudes because positive change flows only from constructive actions and those actions are nurtured by the feeling of empowerment.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/SiOxImqTK1I/AAAAAAAAA5Q/ZQtFjdBkJ0E/s1600-h/SwedishPalaceGuard.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:162px;height:320px;&quot; src=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/SiOxImqTK1I/AAAAAAAAA5Q/ZQtFjdBkJ0E/s320/SwedishPalaceGuard.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5342308344366574418&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;In every problem lies an opportunity that's waiting for someone to take action. Of course there is value in identifying problems; the world if full of arm chair critics who excel at that. There is even more value in identifying solutions; there tends to be a plethora of those as well. But in the end, the greatest value lies in taking action. After all, grand designs don't build themselves.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/SiO0dacI1RI/AAAAAAAAA5Y/g6-Qd0umao0/s1600-h/Cathedral.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:222px;height:320px;&quot; src=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/SiO0dacI1RI/AAAAAAAAA5Y/g6-Qd0umao0/s320/Cathedral.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5342312000398087442&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;One of the problems I see is a lack of leadership from many of Eclipse's largest commercial members. We could bemoan that situation at length, but I gave up on that approach last July; soon it will be a year since I threw my shackles away. It's best to view the current situation as an excellent opportunity for smaller players and even individuals to step in and take charge. Don't complain about the economic downturn either. Sure this presents a significant barrier to all the players large and small, but those who persist will prevail and those who whine will fail. We should feel empowered by the extent to which individuals are making a significant impact at Eclipse; history is rife with such individuals and ultimately they shape our world.&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/SiPdbw0SJzI/AAAAAAAAA5g/SvaLAmtyu8o/s1600-h/Linne.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:286px;height:320px;&quot; src=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/SiPdbw0SJzI/AAAAAAAAA5g/SvaLAmtyu8o/s320/Linne.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5342357052021942066&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;I don't care much for words of doom. We should look beyond problems toward solutions and then take the next step toward action. And don't look to others to take those actions, look to yourself. Are those imaginary shackles constraining you? Throw them off! If someone tells you it can't be done, prove them wrong. Your greatest feeling of accomplishment will come from overcoming the most daunting adversity, so embrace challenges with a vengeance.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3879044552984472733-7074651988640884924?l=ed-merks.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>Ed Merks</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3879044552984472733.post-7074651988640884924</guid>
         <pubDate>Mon, 01 Jun 2009 02:24:00 -0700</pubDate>
         <media:thumbnail width="72" url="http://2.bp.blogspot.com/_rFZqMGOSYY8/SiOutY7PwBI/AAAAAAAAA5I/GPAfjLvx7lY/s72-c/GrapeHyacinthWithAzalea.jpg" height="72" xmlns:media="http://search.yahoo.com/mrss/"/>
      </item>
      <item>
         <title>If Only it Were That Simple</title>
         <link>http://ed-merks.blogspot.com/2009/04/if-only-it-were-that-simple.html</link>
         <description>Simplicity is a holy grail touted as an ideal for which to strive. Keep it simple stupid, KISS, is sacred doctrine. Yet is the world a simple place? Are the problems you are solving simple? Are Java or C++ simple languages? In fact, do simple things ever stay simple? After all, C evolved into C++, and Java too evolved to support generics and enumerations, and those clearly didn't make the languages simpler. Consider too why it is that a simple mind is not a good thing despite the fact that simplicity is such a good thing. The reason is simple: extremes are typically not optimal. In the end, there needs to be a delicate balance between simplicity and complexity. I certainly don't want my garden to be simple!&lt;br /&gt;&lt;br /&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/SfhydvNuiZI/AAAAAAAAA3Y/lGmlwagz_a0/s1600-h/SpringPond.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:320px;height:168px;&quot; src=&quot;http://3.bp.blogspot.com/_rFZqMGOSYY8/SfhydvNuiZI/AAAAAAAAA3Y/lGmlwagz_a0/s320/SpringPond.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5330136014208797074&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;br /&gt;Consider for example a &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://en.wikipedia.org/wiki/Turing_machine&quot;&gt;Turing machine&lt;/a&gt;. With an optimally simple set of symbols, i.e., only zeros and ones, it's effectively impossible to come up with a simpler computational model. So why don't we all flock to this simplicity? Because it's a mirage. The expression of our solution isn't helped by the simplicity of the Turing machine, rather it's hurt by the lack of expressiveness. It's for this very reason that I bristle when I hear people say that EMF is too complex. I'll argue that it's ne