<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Metalevel &#187; MDD</title>
	<atom:link href="http://pjmolina.com/metalevel/category/mdd/feed/" rel="self" type="application/rss+xml" />
	<link>http://pjmolina.com/metalevel</link>
	<description>Abstraction based levitation</description>
	<lastBuildDate>Mon, 30 Apr 2012 06:55:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>CG2012 Summary, day 3</title>
		<link>http://pjmolina.com/metalevel/2012/04/cg2012-summary-day-3/</link>
		<comments>http://pjmolina.com/metalevel/2012/04/cg2012-summary-day-3/#comments</comments>
		<pubDate>Mon, 30 Apr 2012 06:42:26 +0000</pubDate>
		<dc:creator>Pedro J. Molina</dc:creator>
				<category><![CDATA[Code Generation]]></category>
		<category><![CDATA[DSL]]></category>
		<category><![CDATA[MDD]]></category>
		<category><![CDATA[cg2012]]></category>
		<category><![CDATA[mde]]></category>
		<category><![CDATA[mdsd]]></category>

		<guid isPermaLink="false">http://pjmolina.com/metalevel/?p=852</guid>
		<description><![CDATA[CG2012 Summary, (part III) This is the last post in my series of summaries of the Code Generation 2012 conference. After having reviewed the LWC day and days one and two, this third and last day concludes my personal report. Some of you will remember my intense tweeting in such days under the hashtag #cg2012, [...]]]></description>
			<content:encoded><![CDATA[<h1 dir="ltr">CG2012 Summary, (part III)</h1>
<p>This is the last post in my series of summaries of the Code Generation 2012 conference. After having reviewed the <a title="LWC2012 summary" href="http://pjmolina.com/metalevel/2012/04/summary-language-workbenches-challenge-2012/">LWC day</a> and days <a title="CG2012 summary day 1" href="http://pjmolina.com/metalevel/2012/04/cg2012-summary-day-1/">one</a> and <a title="CG2012 summary day 2" href="http://pjmolina.com/metalevel/2012/04/cg2012-summary-day-2/">two</a>, this third and last day concludes my personal report. Some of you will remember my intense tweeting in such days under the hashtag #cg2012, but I had a good reason: such tweets help me document the event and log the activities, which actually makes the process of writing these summaries possible. So, let’s stop meta-posting and dive into the content of the day D.</p>
<h2>Friday 30th, day 3</h2>
<p>The last day of the conference started with the keynote <a href="http://t.co/s19ApZG5">“Speed and Innovation through Architecture”</a> by Jan Bosch (<a href="https://twitter.com/#!/JanBosch">@JanBosch</a>). This was very provocative in that it addressed MDSD and Software Architecture within the context of innovation in industrial contexts and presented it from a business perspective: opposite but complementary to the technical content that usually drives a CG session. Jan supported his talk with examples drawn from Nokia, Siemens, and other companies he is either currently working with or worked with prior to his current academic position.<strong><strong></strong></strong></p>
<p>Some of the pearls (argued by the audience in twitter latter) in his talk were:</p>
<ul>
<li>The market is moving from products to services</li>
<li>The need for the speed: R&amp;D departments should have very short innovation cycles. Speed is the primary feature to achieve. (Time to Market)</li>
<li>Moving faster: no efficiency improvement will outperform cycle time reduction.</li>
<li>Traditional SW development does not scale. We need to change the way we create SW.</li>
<li>Amazon releases new software every 11 seconds&#8230;</li>
<li>R&amp;D as an Experiment System</li>
<li>Decisions should be based on DATA, not opinions</li>
<li>Learning: the company running the most experiments against the lowest cost per experiment wins</li>
<li>There are things you can&#8217;t predict until you perform tests</li>
<li>Lean and Agile as Scale: as a dancing elephant (see the photo in the slides)</li>
</ul>
<p><strong><strong><br />
Some tweets reactions about it:</strong></strong></p>
<ul>
<li>@delphinocons: Reducing dev. cycle time is 10x more beneficial than improving dev. efficiency I can see him build the case for MD(S)D from here. #cg2012</li>
<li>@tvdstorm: No more heavy process. This is going the way of the dinosaurs. @JanBosch #cg2012</li>
<li>@stevekmcc: @JanBosch 10% more revenue vs. 10% less dev costs (&#8220;efficiency&#8221;) assumes rest of org has zero incremental cost &amp; demand is infinite #cg2012</li>
<li>@delphinocons Amazon releases new software every 11 seconds&#8230; wow. @JanBosch @ #cg2012</li>
<li>@pmolinam  &#8221;Learning: the company running the most experiments against the lowest cost per experiment wins&#8221; @janbosch #cg2012 #innovation &#8211;&gt; Google</li>
<li>@tvdstorm: @JanBosch&#8217;s keynote: crowd sourcing the scientific method at a very high speed. Continuous integration -&gt; deployment -&gt; AB testing. #cg2012</li>
<li>@pmolinam Arquitecture goals accordingly to @janbosch Simplify, Decoupling, Lean and agile at scale, End to end quality, fight design erosion #cg2012</li>
<li>@pmolinam &#8220;Interconnected teams and organizations asymptotically reduce productivity to zero&#8221; -&gt; Twitter? @janbosch #cg2012 #innovation</li>
<li>@pmolinam Decoupling: NO versions! only the deployed one! @janbosch #cg2012 #innovation &lt;- Hard to achieve out of the web</li>
<li>@pmolinam Very great keynote! by @janbosch #cg2012 #innovation very inspiring and totally on-topic.</li>
<li>Great slide @janbosch #cg2012 implication <a href="http://t.co/OBiSKfjZ">http://t.co/OBiSKfjZ</a></li>
<li>@MarkDalgarno: Every engineer at @intuit spends at least 1 day a year with a consumer seeing how their products are used in practice. @janbosch at #cg2012</li>
</ul>
<p>As commented, this was a great keynote with respect to rethinking the role of MDSD within business organizations and how MDSD is still a great and undiscovered lever to drive innovation inside a company from within the IT and R&amp;D departments. Dear CIOs, take note.</p>
<p>After the keynote, time for a quick coffee and I move quickly to prepare my session on <a href="http://www.codegeneration.net/cg2012/sessioninfo.php?session=42">“Multichannel User Interfaces”</a></p>
<div id="__ss_12255211" style="width: 425px;">
<p><strong style="display: block; margin: 12px 0 4px;"><a title="Multichannel User Interfaces" href="http://www.slideshare.net/icinetic/multichannel-user-interfaces-12255211" target="_blank">Multichannel User Interfaces</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/12255211" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="425" height="355"></iframe></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/icinetic" target="_blank">Icinetic</a></div>
</div>
<p>In this session, I presented some issues we are working on at Icinetic. When developing a new service or product, UIs are expensive to develop if you have to offer the service in the leading edge mobile platform. The market is fragmented and thus provides several competing platforms and technologies with which to build a UI: XAML/C#, JavaFX/Java, Android, Objective-C/Cocoa, HTML5/Javascript with a JS framework, etc. The technology is changing quite fast and there is an open war to determine who will dominate the mobility space. Developing for any platform’s target UI technologies is neither cheap nor maintainable; is well: they don’t scale. It is in this context where Modeling device independent User Interfaces makes complete sense for business software. I demonstrated one of the prototypes we are building &#8212; called Oz UI &#8212; which utilizes my work on conceptual user interface patterns and is able to declaratively specify and prototype the UI then generate an implementation based upon any of a set of different widget technologies.</p>
<p>I got a very good feedback from the audience and feel that there is space for creating new tools in this domain that further alleviate the effort required by developers to work within the plumbing present in every development framework.</p>
<p>After the session and with the feeling of work completed, it was time for lunch and relaxation.</p>
<p>My last technical session was: <a href="http://www.codegeneration.net/cg2012/sessioninfo.php?session=34">tercnoC xatnyS srettaM</a> (Concrete Syntax Matters) by <a href="http://www.metacase.com/blogs/stevek/blogView">Steven Kelly</a>. The superbly selected title speaks for itself: when designing a new language there are many considerations to be taken into account in order to make the language pleasant for your users. Usability, concreteness, unambiguity, homogeneity, human perception of colors, forms and text are all relevant when addressing the design of a new language. The success of your language &#8212; measured in number of users &#8212; will be influenced greatly by these choices. See <a href="https://twitter.com/#!/pmolinam/status/185699584192954369/photo/1">Steven in action</a>.</p>
<p>Following our last coffee/orange-juice break, we all moved to the closing session: a panel discussion on <a href="http://www.codegeneration.net/cg2012/sessioninfo.php?session=56">“Code Generation &#8211; how far have we come in 5 years?”</a>, lead by <a href="http://homepage.ntlworld.com/ajwatson/">Andrew Watson</a>, who introduced the topic and the panelists: <a href="http://www.wimbast.nl/">Wim Bast</a>, <a href="http://www.metacase.com/blogs/stevek/blogView">Steven Kelly</a>, <a href="https://twitter.com/#!/dariussilingas">Darius Silingas</a>, and <a href="https://twitter.com/#!/markusvoelter">Markus Völter</a>.</p>
<p>Some ideas that were discussed:</p>
<ul>
<li>MDSD Commoditization</li>
<li>Moving from a technical discourse to the necessary business discourse</li>
<li>The complexity of SW is ever growing; MDSD helps manage the complexity</li>
</ul>
<p>Some interesting tweets about the panel supporting it:</p>
<ul>
<li>@lmontrieux: Final panel session begins at code generation #cg2012 <a href="http://t.co/ffQOqyQ6">http://t.co/ffQOqyQ6</a></li>
<li>@delphinocons: Wim Bast: competing DSLs and LWBs is good for innovation, but bringing MD(S)D to the market requires commodity as well. #cg2012 closingpanel</li>
<li>@pmolinam @CompSciFact &#8220;Before you can design a good DSL, you have to understand the D.&#8221; On-topic for #cg2012</li>
<li>@tvdstorm: Need: live prototyping environments to be able to try out many different designs. Modeling needs immediacy, liveness and directness. #cg2012</li>
<li>@delphinocons Wim Bast/Darius Silingas: we have to avoid focusing too much on the technical side in favor of the business benefits of MDSD. Agree! <a href="https://twitter.com/#!/search/%23cg2012">#cg2012</a></li>
<li>@pmolinam On SoC and abstractions in DSLs #cg2012 Panel</li>
<li>@stevekmcc We are building the complex systems as ever. DSL helps in this race. #cg2012</li>
</ul>
<h2>Summing up</h2>
<p>Finally, I present my personal conclusions on the State of the Art in MDSD based on what I have seen at CG2012:</p>
<ol>
<li>Two main lines of work have arisen in MDSD seen this year:</li>
<ul>
<li>Bottom-up using a low-level general language and adding extensions that raise the abstraction level (eg.: <a href="http://mbeddr.wordpress.com/">mbeddr</a> over C or <a href="http://www.codegeneration.net/cg2012/sessioninfo.php?session=38">Webr-DNQ</a> over Java) for a specific purpose (domain), and</li>
<li>Top-down using a high-level DSL/language with a specific, targeted level of abstraction in order to describe a domain (hiding technology details and other concerns) upon which code generation is applied (samples: <a href="http://www.radarc.net/">Radarc</a>, <a href="http://www.ifml.org/">IFML</a>, <a href="http://www.metacase.com/products.html">MetaEdit+</a>).</li>
</ul>
<li>More effort is needed to explain ROI for potential MDSD consumers (customers).</li>
<li>Increasing complexity and diversity (mobile) in technology pushes the market ever closer to MDSD (as there are no other choices).</li>
<li>Technology independence (one of the foremost qualities of systems developed via MDSD) provides even greater value when technology is undergoing rapid advances (see the mobile arena for example).</li>
<li>Some MDSD technologies are powerful yet also rather complex; more work is required to simplify their presentation in order to increase user adoption.</li>
<li>User Interface modeling is gaining momentum this year (with at least four sessions), that being a great and challenging DSL domain.</li>
<li>The cloud provides opportunities for applying MDSD; this context already showing adoption in transparent infrastructure (see <a href="http://www.mendix.com/">Mendix</a> for a sample), deployment and configuration (cloud operation).</li>
<li>Multi-core CPUs provide opportunities for executing DSL specs with efficient parallel processing.</li>
</ol>
<p><strong><br />
</strong> As always, CG2012 was a great opportunity to take the pulse of the MDSD community, providing a good overview of the current problems and areas of research. If you want to get in the loop don’t miss the next edition &#8212; join us in 2013.</p>
<p>I want to thank the work of <a title="Robert McCall" href="http://execNext.com">Robert McCall</a>. He contacted me and volunteered for polishing my sometimes rusty English and making the full text more readable.</p>
]]></content:encoded>
			<wfw:commentRss>http://pjmolina.com/metalevel/2012/04/cg2012-summary-day-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CG2012 Summary, Day 1</title>
		<link>http://pjmolina.com/metalevel/2012/04/cg2012-summary-day-1/</link>
		<comments>http://pjmolina.com/metalevel/2012/04/cg2012-summary-day-1/#comments</comments>
		<pubDate>Tue, 17 Apr 2012 08:52:50 +0000</pubDate>
		<dc:creator>Pedro J. Molina</dc:creator>
				<category><![CDATA[Code Generation]]></category>
		<category><![CDATA[MDD]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[cg2012]]></category>
		<category><![CDATA[mde]]></category>
		<category><![CDATA[mdsd]]></category>

		<guid isPermaLink="false">http://pjmolina.com/metalevel/?p=826</guid>
		<description><![CDATA[A personal CG2012 summary (part I) Better later than never, here it is, finally, my summary on CG2012. In this serie of three post I will summarize my days at CG2012 in Cambridge held on 28-30 of March. The full programme can be reviewed here http://www.codegeneration.net/cg2012/program.php. Disclaimer: as usual CG2012 runs three sessions in parallel, so you are [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter" title="CG2012 logo" src="http://www.codegeneration.net/cg2012/images/CG2012logo600x171.gif" alt="" width="324" height="93" /></p>
<h1>A personal CG2012 summary (part I)</h1>
<p>Better later than never, here it is, finally, my summary on CG2012. In this serie of three post I will summarize my days at CG2012 in<br />
Cambridge held on 28-30 of March. The full programme can be reviewed here<a href="http://www.codegeneration.net/cg2012/program.php"> http://www.codegeneration.net/cg2012/program.php</a>.</p>
<p><em>Disclaimer:</em> as usual CG2012 runs three sessions in parallel, so you are always losing ⅔ of the good stuff. In any way, this year we were able to alleviate this: attending with two more Icinetic colleagues (<a href="https://twitter.com/#!/rubenjmarrufo">Rubén Jimenez</a>  and <a href="https://twitter.com/#!/joncacmar">Jonathan Cáceres</a>) help in dividing the sessions and giving a full event coverage.</p>
<h2>Day 1, Wednesday 28th</h2>
<p>Ruben and I led one of the opening sessions for CG2012. In our talk Ruben presented in a practical way how the .NET platform has matured during these years and provided opportunities and enough base tools to use MDSD. Not been on the top of Eclipse/EMF is not an excuse anymore. In the demo time, Ruben shown also <a title="Radarc" href="http://radarc.net">Radarc</a>, our product at Icinetic to build and generate applications for different architectures. Slides of the session follows:</p>
<div id="__ss_12255195" style="width: 425px;">
<p><strong style="display: block; margin: 12px 0 4px;"><a title="Modelling and code generation in .NET at Icinetic" href="http://www.slideshare.net/icinetic/modelling-and-code-generation-in-net-at-icinetic-12255195" target="_blank">Modelling and code generation in .NET at Icinetic</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/12255195" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="425" height="355"></iframe></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/icinetic" target="_blank">Icinetic</a></div>
</div>
<p>After the coffee break, I moved into the session “User Interaction Modeling: current status of the standardization process, from the requirements to the language” given by Marco Brambilla and Emanuele Molteni (from <a href="http://www.webratio.com/">WebModels</a>). Marco and Emanuele are pushing an standardization effort called <a title="IFML" href="http://www.ifml.org">IFML</a> inside OMG to propose a UI standard based in their UI modeling experience. In the mid-term UML tools vendors could finally start adding support for UI Modeling and this is a good thing, per se. Other standardization efforts are on-going such us <a title="UIML" href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=uiml">UIML</a> in OASIS and Jean Vanderdonckt&#8217;s <a href="http://www.w3.org/2005/Incubator/model-based-ui/wiki/UsiXML">UsiXML</a> in the W3C.</p>
<div id="__ss_12198234" style="width: 425px;"><strong style="display: block; margin: 12px 0 4px;"><a title="Experiences and requirements for a User Interaction Modeling Language" href="http://www.slideshare.net/mbrambil/experiences-and-requirements-for-a-user-interaction-modeling-language" target="_blank">Experiences and requirements for a User Interaction Modeling Language</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/12198234" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="425" height="355"></iframe></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/thecroaker/death-by-powerpoint" target="_blank">PowerPoint</a> from <a href="http://www.slideshare.net/mbrambil" target="_blank">Marco Brambilla</a></div>
</div>
<p>Time for lunch, and back to action. Enrico Persiani and Riccardo Solmi presented <a href="http://www.codegeneration.net/cg2012/sessioninfo.php?session=32">“Integrating model driven technologies in<br />
the publishing industry”</a>. This was a very refreshing session, presenting a novel domain for MDSD: interactive books. Riccardo and Enrico presented the base XML used before for composing the books and how this approach become a maintenance nightmare also for each book. Using The <a href="http://wholeplatform.blogspot.com.es/">Whole Platform</a> they provided a projectional editor integrating images and colorization preview in a kind of WYSIWYG approach making the edition a more pleasant experience.</p>
<p>After that, I move on Markus Völter &amp; Bernhard Merkle’s session on <a href="http://www.voelter.de/data/presentations/mbeddr-PRINT.pdf">“mbeddr C: an MPS and model based, extensible version of the C programming language”</a>.  Using MPS Markus and Bernard has extended the base C language to include safety and productivity features like unit tests support, type safe units, state machines, etc. Impressive bottom-up work inserting new features in a well-known language. <a href=" http://mbeddr.wordpress.com/">mbeddr C</a> have for sure real applications in the embedded software industry.</p>
<p>To end the day, Eric Jan Malotaux presented a very original case study. Under the title <a href="http://www.codegeneration.net/cg2012/sessioninfo.php?session=45">“Transforming a 15 year old model-driven application from C++ to Java”</a> he presented the costs and migration efforts performed to migrate a legacy application modeled over a DB and generating C++ to a most modern EMF models and Java source code as output. Eric pointed out that many of the problems came from the different architecture (implicit) assumptions done in the source model. Not until understand it, they were able to solve the problems. Eric concluded that although it was not cheap and easy, it probably would be more expensive and painfuller if the source was only source code and not a model based with a unique semantic over it. Eric gave a great talk and was very prudent about giving only numbers he could backup with data.</p>
<div id="__ss_12207681" style="width: 425px;">
<p><strong style="display: block; margin: 12px 0 4px;"><a title="Transforming a 15 year old model-driven application from C++ to Java" href="http://www.slideshare.net/emalotau/transforming-a-15-year-old-modeldriven-application-from-c-to-java" target="_blank">Transforming a 15 year old model-driven application from C++ to Java</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/12207681" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="425" height="355"></iframe></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/emalotau" target="_blank">Eric Malotaux</a></div>
</div>
<p>This case, presented by Eric made me think twice about how MDD provides advantages years after it was build. At the end is always a problem of dealing with complexity: a model has lower complexity (more constraint) that pure source code.</p>
<p>We ended the evening in a more relaxed way in the nearby Castle Inn sharing good moments.</p>
]]></content:encoded>
			<wfw:commentRss>http://pjmolina.com/metalevel/2012/04/cg2012-summary-day-1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Summary: Language Workbenches Challenge 2012</title>
		<link>http://pjmolina.com/metalevel/2012/04/summary-language-workbenches-challenge-2012/</link>
		<comments>http://pjmolina.com/metalevel/2012/04/summary-language-workbenches-challenge-2012/#comments</comments>
		<pubDate>Mon, 09 Apr 2012 09:15:50 +0000</pubDate>
		<dc:creator>Pedro J. Molina</dc:creator>
				<category><![CDATA[DSL]]></category>
		<category><![CDATA[Language Workbench]]></category>
		<category><![CDATA[MDD]]></category>
		<category><![CDATA[cg2012]]></category>
		<category><![CDATA[language workbench]]></category>
		<category><![CDATA[lwc2012]]></category>

		<guid isPermaLink="false">http://pjmolina.com/metalevel/?p=812</guid>
		<description><![CDATA[Two weeks ago, I honored the yearly tradition of traveling to Cambridge and join with my colleagues at the Code Generation Conference. As commented before in this blog, this conference is something unique. It is not an academic oriented event: it has no papers and publications in the traditional way of an academic meeting. On [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" title="LWC2012" src="http://www.languageworkbenches.net/skins/common/images/lwc-logo.png " alt="LWC2012 logo" width="193" height="99" /></p>
<p>Two weeks ago, I honored the yearly tradition of traveling to Cambridge and join with my colleagues at the Code Generation Conference.</p>
<p>As commented before in this blog, this conference is something unique. It is not an academic oriented event: it has no papers and publications in the traditional way of an academic meeting. On the other hand, it shows live tools and samples of real technology in use in the industry and the latest research tools in the academia in the field of Software Modeling, Domain Specific Languages and Code Generation. If you want to meet and talk with the toolmakers this is definitely the place to come.</p>
<p>The event was intensively reported via twitter under the hashtags <a href="https://twitter.com/#!/search/%23cg2012">#cg2012</a> and <a href="https://twitter.com/#!/search/%23lwc2012">#lwc2012</a>.</p>
<p>In this first post I will review the LWC and write about CG2012 in the next one.</p>
<p><strong>LWC2012</strong></p>
<p>On Tuesday 27th, the 2nd edition of the <a href="http://www.languageworkbenches.net/index.php?title=LWC_2012">Language Workbenches Challenge</a>  took place. 32 of us meet there to see how 10 tools solved the Piping and Instrumentation problem. This year I was only an observer, no time from my side to prepare a solution, I hope to submit next year again.</p>
<p><a href="http://ruicurado.com/">Rui Curado</a> presented his solution with <a href="http://www.atomweaver.com/">AtomWeaver</a>. He has added a graphical notation on the top of AtomWeaver in the late year. Great work.</p>
<p><a href="http://www.metacase.com/blogs/jpt/blogView">Juha-Pekka Tolvanen</a> shown a solution based in <a href="http://www.metacase.com/mep/">MetaEdit+</a>. Based on the maturity of MetaEdit, the graphical nature of the problem and the experience of Juha-Pekka he excels his solution showing a use case of the system and later on going meta and showing us how it was done.</p>
<p>An UML solution was represented by <a href="http://www.linkedin.com/pub/paul-zenden/1/320/878">Paul Zenden</a>. Using <a href="http://www.sparxsystems.com/products/ea/index.html">Enterprise Architect</a> as the base tool and complemented with Xtend/Xpand he was able to metamodel all the elements needed to describe the problem. He took advantage of the capabilities of the EA tool to add custom graphic symbols to the new symbols defined.</p>
<p><a href="http://homepages.cwi.nl/~storm/">Tijs van der Storm</a> presented a textual approach based on <a href="http://www.rascal-mpl.org/">Rascal</a>. Graphics were generated using an additional graphical library.</p>
<p><a href="http://www.cs.utexas.edu/~alexloh/">Alex Loh</a> from Texas introduced us <a href="http://www.cs.utexas.edu/~alexloh/enso/lwc2012.shtml">Ensō</a>. Ensō is a new LW built on top of Ruby. Although a bit slow in its first version, it opens the doors a new way of LW taking advantage of the dynamic and interpretation capabilities of the Ruby language.</p>
<p>The Web is ubiquitous, and this issue is also reaching modeling concerns. <a href="http://dslmeinte.wordpress.com/">Meinte Boersma</a> in cooperation with <a href="http://modeldrivensoftware.net/profile/MartinThiede">Martin Thiede</a> presented <a href="http://wdw-dslmeinte.appspot.com/">Más </a>(Modeling As Service, más = means more in Spanish). Martin created and presented <a href="http://concrete-editor.org/">Concrete</a> as a projectional editor based in Ruby and HTML5 in CG2011. Now Meinte has extended it to create a full web modeling environment targeting enterprise modeling.</p>
<p>Finally <a href="http://modeldrivensoftware.net/profile/MarkoBoger">Marko Boger</a> presented an implementation of the graphical language build using <a href="http://code.google.com/a/eclipselabs.org/p/spray/">Spray</a>. Spray is a project to provide textual DSLs to create graphical DSL on the top of Eclipse Graphitti.</p>
<p>Spray was conceived in the Castle Inn (our local CG reference pub) one year ago after a CG2011 session after people have the shared complaint about how painful and slow was to maintain GMF editors or to build them from scratch using Graphitti. Now one year later, Spray is a reality. Good job, very well done!</p>
<p>This edition was very diverse with respect a tools, approaches and solutions taken. Great workshop!</p>
<p>We ended the day with the traditional family photo. Special thanks to <a href="http://www.hulshout.nl/">Angelo Hulshout</a> for organizing it and <a href="http://www.linkedin.com/pub/paul-zenden/1/320/878">Paul Zenden</a> for proposing the challenge and the reference implementation (thanks Angelo for remember me it as it was).<br />
See you next year!<strong id="internal-source-marker_0.36215021391399205"><br />
</strong></p>
<p style="text-align: center;"><strong id="internal-source-marker_0.36215021391399205"><img class="aligncenter" title="LWC2012 family photo" src="https://p.twimg.com/ApayPKKCEAAC3H_.jpg" alt="LWC2012 family photo" width="480" height="360" /></strong></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://pjmolina.com/metalevel/2012/04/summary-language-workbenches-challenge-2012/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Radarc 3.0 Released!</title>
		<link>http://pjmolina.com/metalevel/2012/03/radarc-3-0-released/</link>
		<comments>http://pjmolina.com/metalevel/2012/03/radarc-3-0-released/#comments</comments>
		<pubDate>Wed, 21 Mar 2012 18:45:15 +0000</pubDate>
		<dc:creator>Pedro J. Molina</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Code Generation]]></category>
		<category><![CDATA[MDD]]></category>
		<category><![CDATA[mde]]></category>
		<category><![CDATA[mdsd]]></category>
		<category><![CDATA[Radarc]]></category>

		<guid isPermaLink="false">http://pjmolina.com/metalevel/?p=790</guid>
		<description><![CDATA[The arrival to my new job in Sevilla has coincided with the preparations and launch of a new product. We at Icinetic, are releasing Radarc 3.0. Radarc is a very easy to use code generator highly integrated with Visual Studio and targeting .NET technologies. Radarc has the ability produce multiple architectures using the same base models [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter" title="Radarc 3.0" src="http://cdn.shopify.com/s/files/1/0114/1512/t/1/assets/logo.png" alt="" width="319" height="77" /></p>
<p style="text-align: left;">The arrival to my <a title="Hola Sevilla" href="http://pjmolina.com/metalevel/2012/01/hola-sevilla/">new job in Sevilla</a> has coincided with the preparations and launch of a new product. We at <a title="Icinetic" href="http://icinetic.com/Home/tabid/39/language/en-US/Default.aspx">Icinetic</a>, are releasing <strong><a title="Radarc 3.0" href="http://www.radarc.net/">Radarc 3.0</a></strong>. Radarc is a very easy to use code generator highly integrated with Visual Studio and targeting .NET technologies.</p>
<p>Radarc has the ability produce multiple architectures using the same base models and keeping in-sync generated artifacts when model element changes. Architectures and DSLs for defining the models are packaged in so called <em>&#8220;Formulas&#8221;</em>.</p>
<p>Currently, the following formulas are available for download and it is free for non-commercial usage:</p>
<ul>
<li>ASP.NET Web Forms + Entity Framework</li>
<li>ASP.NET MVC 3.0 + Entity Framework</li>
<li>ASP.NET MVC 3.0 + Entity Framework + Azure Storage &amp; deployment</li>
<li>Windows Phone 7</li>
</ul>
<div>Radarc creates a complete prototyping application in seconds following the cycle: change the model, touch no line of code, build and run. Prototyping an application is a question of minutes, and obtain a first scaffolding of your application. Moreover, custom code can be inserted in specially designed locations that will be preserved in every regeneration lap.</div>
<p>Radarc 3.0 is available with three licensing models and its free for non-commercial usage.</p>
<p>Other technologies are available on demand, such as:</p>
<ul>
<li>.NET 4.0 Domain Driven Design N-Layered Architecture</li>
<li>NHibernate &amp; more to come&#8230;</li>
</ul>
<div>Some cases of usage:</div>
<div>
<ul>
<li>If you work in a .NET development shop, feel free to <a title="Radarc 3.0" href="http://www.radarc.net/">give it a try</a> and give us some feedback.</li>
<li>On the other hand, if you want to <strong>start learning</strong> one of the previous technologies or architectures, you can use also Radarc to <strong>generate a reference sample application</strong> and start exploring the code.</li>
<li>If you are a experienced software architect and needs to evaluate SW architectures to <strong>benchmark</strong> them before choosing a winner arch for your project, think about the cheap possibility of generate the same application in two technologies and test how well performs for your specfic problem.</li>
</ul>
</div>
<div></div>
<div>These days, I am learning a lot about the state of art here at Icinetic and I hope to start contributing to the bits very, very soon.</div>
<div></div>
<div>Bonus extra: a <a title="Radarc 3.0 demo en &quot;12 Horas con Visual Studio 2010&quot;" href="http://bit.ly/radarcVS12">20 minutes demo video</a> (in Spanish) generating three architectures is available.</div>
<div></div>
<div>Next week we will be attending <a title="Code Generation 2012" href="codegeneration.net/cg2012/index.php">Code Generation 2012</a>. If you are interested, join us and see a live demo or download it and give it a try!</div>
]]></content:encoded>
			<wfw:commentRss>http://pjmolina.com/metalevel/2012/03/radarc-3-0-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Code Generation 2012</title>
		<link>http://pjmolina.com/metalevel/2012/03/code-generation-2012/</link>
		<comments>http://pjmolina.com/metalevel/2012/03/code-generation-2012/#comments</comments>
		<pubDate>Sun, 18 Mar 2012 20:44:26 +0000</pubDate>
		<dc:creator>Pedro J. Molina</dc:creator>
				<category><![CDATA[Code Generation]]></category>
		<category><![CDATA[DSL]]></category>
		<category><![CDATA[Essential]]></category>
		<category><![CDATA[MDD]]></category>
		<category><![CDATA[mdsd]]></category>

		<guid isPermaLink="false">http://pjmolina.com/metalevel/?p=799</guid>
		<description><![CDATA[Times fly! Code Generation 2012 is only two weeks ahead. During the latest&#8217;s weeks we have been very busy combining day to day work with the preparation of material for the conference. This year the conference will be held from 28th till 30th of March, in the habitual place: Murray Edwards College, Cambridge, UK. The programme [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter" title="CG2012 logo" src="http://www.codegeneration.net/cg2012/images/CG2012logo600x171.gif" alt="CG 2012 logo" width="432" height="124" /></p>
<p style="text-align: justify;">Times fly!<strong> <a title="CG2012" href="http://www.codegeneration.net/cg2012/index.php">Code Generation 2012</a></strong> is only two weeks ahead.</p>
<p>During the latest&#8217;s weeks we have been very busy combining day to day work with the preparation of material for the conference.</p>
<p>This year the conference will be held from 28th till 30th of March, in the habitual place: Murray Edwards College, Cambridge, UK.</p>
<p>The <a title="CG2012 Programme" href="http://www.codegeneration.net/cg2012/program.php">programme</a> this year comes with some interesting sessions. I want to highlight some of them:</p>
<ul>
<li>The day before, the 27th the <a title="LWC2012" href="http://www.languageworkbenches.net/index.php?title=LWC_2012">Language Workbenches Challenge 2012</a> takes place in the same scenario. The competing tools will show us how they resolved <a title="The LCW2012 assignment" href="http://www.languageworkbenches.net/index.php?title=LWC_2012#The_assignment">the current assignment</a>.</li>
<li>The keynotes by <a title="Jan Bosch" href="http://janbosch.com/">Jan Bosch</a> &#8221;Speed and Innovation through Architecture&#8221; and <a title="Markus Völter" href="http://www.voelter.de/">Markus Völter</a> &#8221;Domain-Specific Language Design &#8211; A conceptual framework for building good DSLs&#8221;.</li>
<li><a title="David Woods" href="http://www.wdwoods.com/">David Woods</a> will talk on 29th about &#8220;How Apollo flew to the Moon&#8221; <em>Don&#8217;t miss it!</em></li>
<li>The practical session <a title="Have your language built while you wait " href="http://www.codegeneration.net/cg2012/sessioninfo.php?session=35">&#8220;Have your language built while you wait&#8221;</a> driven by <a title="Steven Kelly" href="http://www.metacase.com/blogs/stevek/blogView">Steven Kelly</a> will allow you to solve your problem (domain) in 20 minutes. <em>It will be funny.</em></li>
</ul>
<p>From my side, and once established in Seville, I will join the conference with some of my <a title="Icinetic" href="http://icinetic.com/">Icinetic</a> colleagues. The activities we will be involved include:</p>
<ul>
<li>Attending the full LWC2012 and CG2012.</li>
<li>This year, Icinetic proudly sponsors CG2012, so we will be present there. If your are interested in MDSD feel free to ask us and we will make you a demo of our work and products.</li>
<li><a title="Ruben Jimenez Marrufo" href="http://geeks.ms/blogs/rjimenez/">Ruben Jimenez</a> and I will be presenting the session <a title="Modelling and Code Generation on the .NET platform at Icinetic" href="http://www.codegeneration.net/cg2012/sessioninfo.php?session=52">&#8220;Modelling and Code Generation on the .NET platform at Icinetic&#8221;</a> on Wednesday 28th.</li>
<li>On Thursday 29th I will be taking part in the previously quoted session <a title="Have your language built while you wait " href="http://www.codegeneration.net/cg2012/sessioninfo.php?session=35">&#8220;Have your language built while you wait&#8221;</a> with <a title="Essential" href="pjmolina.com/metalevel/essential">Essential</a>.</li>
<li>Finally, on Friday 30th, Ruben and I will lead the session <a title="Mutichannel User Interfaces" href="http://www.codegeneration.net/cg2012/sessioninfo.php?session=42">&#8220;Multichannel User Interfaces&#8221;</a>.</li>
</ul>
<p>As every year, looking forward to join and meet again with the CG community. See you there, guys!</p>
]]></content:encoded>
			<wfw:commentRss>http://pjmolina.com/metalevel/2012/03/code-generation-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New kid on the block: XCore</title>
		<link>http://pjmolina.com/metalevel/2012/02/new-kid-on-the-block-xcore/</link>
		<comments>http://pjmolina.com/metalevel/2012/02/new-kid-on-the-block-xcore/#comments</comments>
		<pubDate>Sat, 11 Feb 2012 13:09:21 +0000</pubDate>
		<dc:creator>Pedro J. Molina</dc:creator>
				<category><![CDATA[DSL]]></category>
		<category><![CDATA[Essential]]></category>
		<category><![CDATA[MDD]]></category>
		<category><![CDATA[XCore]]></category>

		<guid isPermaLink="false">http://pjmolina.com/metalevel/?p=784</guid>
		<description><![CDATA[The guys at the Eclipse Modeling Framework leaded by Ed Merks @edmerks are working hard in XCore to provide ECore models a textual syntax. This is a needed feature from a long time. It was also a good surprise to see how XCore syntax is quite close to Essential Meta. This is good news again: interoperability [...]]]></description>
			<content:encoded><![CDATA[<p>The guys at the Eclipse Modeling Framework leaded by <a title="Ed Merks blog" href="http://ed-merks.blogspot.com/2012/02/xcore-on-training-wheels.html">Ed Merks</a> <a title="Ed Merks" href="https://twitter.com/#!/EdMerks">@edmerks</a> are working hard in <a title="Xcore" href="http://wiki.eclipse.org/Xcore">XCore</a> to provide ECore models a textual syntax. This is a needed feature from a long time.</p>
<p>It was also a good surprise to see how XCore syntax is quite close to <a title="Essential Meta" href="http://pjmolina.com/metalevel/2010/02/essential-meta-a-concise-dsl-for-metamodeling/">Essential Meta</a>. This is good news again: interoperability between the Java modeling  side of world (EMF) and .NET modeling efforts with Essential are now simpler with the arrival of XCore.</p>
<p>As Meinte Boersma <a title="Meinte Boersma" href="https://twitter.com/#!/meinte37">@miente37</a> comment on twitter: semicolons seems to be the main difference.</p>
<p>BTW, a new release of <a title="Essential" href="http://pjmolina.com/essential">Essential</a> with minimal bug fixing has been released (0.5.1). <a title="Essential evaluation" href="http://pjmolina.com/essential/download-eval/">Try it out</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://pjmolina.com/metalevel/2012/02/new-kid-on-the-block-xcore/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>¡Hola Sevilla!</title>
		<link>http://pjmolina.com/metalevel/2012/01/hola-sevilla/</link>
		<comments>http://pjmolina.com/metalevel/2012/01/hola-sevilla/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 19:30:04 +0000</pubDate>
		<dc:creator>Pedro J. Molina</dc:creator>
				<category><![CDATA[Code Generation]]></category>
		<category><![CDATA[DSL]]></category>
		<category><![CDATA[MDD]]></category>
		<category><![CDATA[Icinetic]]></category>
		<category><![CDATA[Sevilla]]></category>

		<guid isPermaLink="false">http://pjmolina.com/metalevel/?p=767</guid>
		<description><![CDATA[&#160; Model Driven Development is one of my favourite research topics. That’s why when the Icinetic guys contacted and offer me to join them to work together I had few arguments to resist the temptation and enroll. Therefore, today I’m moving to Sevilla, in the south of Spain, to start a new phase of my life to [...]]]></description>
			<content:encoded><![CDATA[<div class="wp-caption aligncenter" style="width: 510px"><img title="Plaza de España, Sevilla" src="http://farm2.staticflickr.com/1351/5158639564_79ed587a54.jpg" alt="" width="500" height="327" /><p class="wp-caption-text">Plaza de España, Sevilla (By CCSA Tom Raftery)</p></div>
<p>&nbsp;</p>
<div>
<p><strong>Model Driven Development</strong> is one of my favourite research topics. That’s why when the <a href="http://www.icinetic.com/">Icinetic</a> guys contacted and offer me to join them to work together I had few arguments to resist the temptation and enroll.</p>
<p>Therefore, today I’m moving to <strong>Sevilla</strong>, in the south of Spain, to start a new phase of my life to work as the Chief Research Officer. Icinetic is an young MDD tool-maker and consultancy company.</p>
<p>I am quite excited to have the chance, the tools and the right team (both with the required business vision and the technical background) to focus on innovation and to create cool MDD &amp; code generation tools.</p>
<p>We are going to enjoy it, for sure!</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://pjmolina.com/metalevel/2012/01/hola-sevilla/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Modelling the User Interface, the video</title>
		<link>http://pjmolina.com/metalevel/2011/10/modelling-the-user-interface-the-video/</link>
		<comments>http://pjmolina.com/metalevel/2011/10/modelling-the-user-interface-the-video/#comments</comments>
		<pubDate>Wed, 26 Oct 2011 22:24:55 +0000</pubDate>
		<dc:creator>Pedro J. Molina</dc:creator>
				<category><![CDATA[DSL]]></category>
		<category><![CDATA[Essential]]></category>
		<category><![CDATA[MDD]]></category>
		<category><![CDATA[User Interface]]></category>
		<category><![CDATA[modeling]]></category>
		<category><![CDATA[ui]]></category>

		<guid isPermaLink="false">http://pjmolina.com/metalevel/?p=738</guid>
		<description><![CDATA[The recording of the Code Generation 2011 session about &#8216;Modelling the User Interface&#8217; is finally available online at InfoQ. For further details take a look to the slides and Conceptual User Interface Patterns. During the video you can see a pair of demos:  Essential on action doing full UI inference and code generation and IO, the codename for a [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" title="InfoQ" src="http://cdn2.infoq.com/styles/i/logo-infoq.gif" alt="" width="127" height="38" />The recording of the Code Generation 2011 <a title="Session details" href="http://www.codegeneration.net/cg2011/sessioninfo.php?session=14" target="_blank">session</a> about <em>&#8216;Modelling the User Interface&#8217;</em> is finally available online at <a title="Modelling the User Interface" href="http://www.infoq.com/presentations/Modeling-the-User-Interface" target="_blank">InfoQ</a>.</p>
<p>For further details take a look to the <a title="Modelling the User Interface" href="http://www.slideshare.net/pjmolina/modelling-the-user-interface" target="_blank">slides</a> and <a title="Conceptual User Interface Patterns" href="http://pjmolina.com/cuip" target="_blank">Conceptual User Interface Patterns</a>.</p>
<p>During the video you can see a pair of demos:</p>
<ul>
<li> <a title="Essential" href="http://pjmolina.com/metalevel/essential/" target="_blank">Essential</a> on action doing full UI inference and code generation</li>
<li>and IO, the codename for a new proof of concept UI specification and WYSIWYG prototyping tool.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://pjmolina.com/metalevel/2011/10/modelling-the-user-interface-the-video/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Essential on Alt.Net Hispano</title>
		<link>http://pjmolina.com/metalevel/2011/07/essential-on-alt-net-hispano/</link>
		<comments>http://pjmolina.com/metalevel/2011/07/essential-on-alt-net-hispano/#comments</comments>
		<pubDate>Sun, 03 Jul 2011 08:46:15 +0000</pubDate>
		<dc:creator>Pedro J. Molina</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Code Generation]]></category>
		<category><![CDATA[DSL]]></category>
		<category><![CDATA[Essential]]></category>
		<category><![CDATA[MDD]]></category>

		<guid isPermaLink="false">http://pjmolina.com/metalevel/?p=723</guid>
		<description><![CDATA[The Alt.NET Hispano group has published my VAN about Code generation with Essential. The recording was done in Spanish. La comunidad Alt.NET Hispano ha publicado la VAN (desconferencia) sobre Generación de código con Essential que tuvimos el pasado dia 11 de junio. Si estás interesado en MDD, generación de código y como aplicarlo con Essential, [...]]]></description>
			<content:encoded><![CDATA[<p>The <a title="Alt.NET Hispano" href="http://altnethispano.org">Alt.NET Hispano</a> group has published my VAN about <a title="Generación de Código con Essential" href="http://altnethispano.org/wiki/van-2010-05-28-generacion-de-codigo-con-essential.ashx">Code generation with Essential</a>. The recording was done in Spanish.</p>
<p>La comunidad Alt.NET Hispano ha publicado la VAN (desconferencia) sobre <a title="Generación de código con Essential" href="http://altnethispano.org/wiki/van-2010-05-28-generacion-de-codigo-con-essential.ashx">Generación de código con Essential</a> que tuvimos el pasado dia 11 de junio. Si estás interesado en MDD, generación de código y como aplicarlo con Essential, este video grabado para la comunidad en español es un buen punto de partida.</p>
<p>Mi agradecimiento a Alt.NET Hispano por el interés en la materia y la invitación a divulgarlo.</p>
<p><a title="Descarga directa: Essential Video" href="http://content.screencast.com/users/AltNetHispano/folders/VAN/media/512cfc98-8e47-48a2-8781-a22bf3f40af9/van-2011-06-11.flv?downloadOnly=true">Descarga directa del video</a> (562 Mb).</p>
<p>&nbsp;</p>
<p><span id="more-723"></span></p>
<p><object id="scPlayer" width="700" height="468" data="http://content.screencast.com/users/AltNetHispano/folders/VAN/media/512cfc98-8e47-48a2-8781-a22bf3f40af9/flvplayer.swf" type="application/x-shockwave-flash"><param name="movie" value="http://content.screencast.com/users/AltNetHispano/folders/VAN/media/512cfc98-8e47-48a2-8781-a22bf3f40af9/flvplayer.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#FFFFFF" /><param name="flashVars" value="thumb=http://content.screencast.com/users/AltNetHispano/folders/VAN/media/512cfc98-8e47-48a2-8781-a22bf3f40af9/FirstFrame.jpg&amp;containerwidth=800&amp;containerheight=468&amp;analytics=UA-21341284-1&amp;content=http://content.screencast.com/users/AltNetHispano/folders/VAN/media/512cfc98-8e47-48a2-8781-a22bf3f40af9/van-2011-06-11.flv&amp;blurover=false" /><param name="allowFullScreen" value="true" /><param name="scale" value="showall" /><param name="allowScriptAccess" value="always" /><param name="base" value="http://content.screencast.com/users/AltNetHispano/folders/VAN/media/512cfc98-8e47-48a2-8781-a22bf3f40af9/" />Unable to display content. Adobe Flash is required.</object></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://pjmolina.com/metalevel/2011/07/essential-on-alt-net-hispano/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://content.screencast.com/users/AltNetHispano/folders/VAN/media/512cfc98-8e47-48a2-8781-a22bf3f40af9/van-2011-06-11.flv&amp;amp" length="589272873" type="video/x-flv" />
<enclosure url="http://content.screencast.com/users/AltNetHispano/folders/VAN/media/512cfc98-8e47-48a2-8781-a22bf3f40af9/van-2011-06-11.flv?downloadOnly=true" length="589272873" type="video/x-flv" />
		</item>
		<item>
		<title>Code Generation 2011: a personal review</title>
		<link>http://pjmolina.com/metalevel/2011/05/code-generation-2011-a-personal-review/</link>
		<comments>http://pjmolina.com/metalevel/2011/05/code-generation-2011-a-personal-review/#comments</comments>
		<pubDate>Tue, 31 May 2011 10:50:17 +0000</pubDate>
		<dc:creator>Pedro J. Molina</dc:creator>
				<category><![CDATA[Code Generation]]></category>
		<category><![CDATA[Essential]]></category>
		<category><![CDATA[MDD]]></category>
		<category><![CDATA[User Interface]]></category>
		<category><![CDATA[cg2011]]></category>
		<category><![CDATA[DSL]]></category>
		<category><![CDATA[language workbench]]></category>
		<category><![CDATA[lwc]]></category>
		<category><![CDATA[report]]></category>

		<guid isPermaLink="false">http://pjmolina.com/metalevel/?p=702</guid>
		<description><![CDATA[Once again, back home after the most exciting till date edition of the Code Generation conference in the latest years. The co-allocation of the Language Workbenches Competition has been a great incentive to attract all of us to join and present alternatives to a great challenge in the domain of modeling and code generation. In [...]]]></description>
			<content:encoded><![CDATA[<p>Once again, back home after the most exciting till date edition of the <a title="CG2011" href="http://www.codegeneration.net/cg2011/index.php">Code Generation conference</a> in the latest years. The co-allocation of the <a title="LWC2011" href="http://www.languageworkbenches.net/">Language Workbenches Competition</a> has been a great incentive to attract all of us to join and present alternatives to a great challenge in the domain of modeling and code generation.</p>
<p>In this long post, I want to share my personal view about these days, and for sure, take note it could be partial and subjective. So, be kind to review also the comments as seen by others like <a title="Johan LWC2011 review" href="http://www.theenterprisearchitect.eu/archive/2011/05/26/language-workbench-competition-2011">Johan den Haan</a>, <a title="Markus on LWC2011" href="http://voelterblog.blogspot.com/2011/05/language-workbench-competition-2011.html">Markus Völter</a>, <a title="Angelo LWC &amp; CG report" href="http://www.hulshout.nl/blog/2011/05/29/language-workbench-competition-2011-code-generation-2011/">Angelo Hulshout</a>, <a title="Marco on LWC2011 and CG2011" href="http://www.modeldrivenstar.org/2011/05/highlights-from-lwc-2011-language.html">Marco Bambrilla</a>, or <a title="About modeling workbenches" href="http://mariot-thoughts.blogspot.com/2011/05/about-modeling-workbenches.html">Mariot Chauvin</a> to cite a few and more expected to come. Find the majority of the pointers at the <a href="http://modeldrivensoftware.net/">http://modeldrivensoftware.net</a></p>
<p>In this edition, the conference has been deeply covered via twitter using <a title="CG2011" href="http://twitter.com/#!/search/%23cg2011">#cg2011</a> and <a title="LWC11" href="http://twitter.com/#!/search/%23lwc11">#lwc11</a></p>
<p>As expected, I will be only be able to comment about the sessions I personally have attended. Running three tracks in parallel always force us to choose one and miss two other great sessions.</p>
<p><span id="more-702"></span></p>
<h2>Day 0. The Language Workbenches Competition</h2>
<p>Ten tools were presented in a marathonian session exactly allocating 40 minutes per tool. The Angelo’s egg-timer was implacable: Whenever it rang reaching the agreed time, the speakers suddenly stopped talking unable to end a simple phrase.</p>
<p>The challenge was a competition without a winner or loser, mainly because there was no prize to win (may be next year a generous sponsor could change that). The main objective is to <strong>compare </strong>how different tools are able to complete a common problem facing modeling, model transformations and code generation to multiple platforms.</p>
<p>Johan den Haan has prepared a detailed report of the tools presented. <a title="Johan on LWC2011" href="http://www.theenterprisearchitect.eu/archive/2011/05/26/language-workbench-competition-2011">Take a look on it</a>.</p>
<p>From my side, I have created a <a title="LWC2011 feature matrix" href="https://spreadsheets.google.com/spreadsheet/ccc?key=0AoxxO-Frx5JsdFcwMGQtdzBjNzhfQUxZT1dJSWdtYXc&amp;hl=es">feature matrix</a> for comparing the different approaches stressing what I see as different in each tool. It is not complete: some information is missing and some other not yet contrasted so take it as a beta version to be improved.</p>
<p>With respect to my beloved tool <a title="Essential" href="pjmolina.com/essential">Essential</a>, I have to say that I received a very nice feedback from the audience. See a sample of the twitted comments:</p>
<p style="padding-left: 30px;"><strong>kthoms:</strong> @pmolinam Has a high voltage notebook &#8211; projector crashed on plugging in. Now let&#8217;s see how he could improvise the situation #lwc11</p>
<p style="padding-left: 30px;"><strong>stevekmcc</strong>:  @pmolinam Showing #Essential: major theme is separation of concerns, so opposite to Rascal #lwc11</p>
<p style="padding-left: 30px;"><strong>stevekmcc:</strong> #Essential looks very clean compared to other text or text-projection workbenches #lwc11</p>
<p style="padding-left: 30px;"><strong>delphinocons:</strong> RT @stevekmcc: #Essential looks very clean compared to other text or text-projection workbenches #lwc11 &lt;== I agree. Relaxing to the eyes.</p>
<p style="padding-left: 30px;"><strong>delphinocons:</strong> #lwc11 The Essential metamodel is smaller than EMFs, and a little larger than MetaEdit+&#8217;s</p>
<p style="padding-left: 30px;"><strong>meinte37:</strong> @pmolinam is the first to finish before the egg timer at #lwc11. That&#8217;s because he cuts down to the Essential-s <img src='http://pjmolina.com/metalevel/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p style="padding-left: 30px;"><strong>JohanDenHaan:</strong> @pmolinam nice presentation and demo, good mix of slides and demo. Great timing!</p>
<p style="text-align: center;"><img class="aligncenter" title="LWC 2011 family photo." src="http://i233.photobucket.com/albums/ee316/angelopa/DSC00667.jpg" alt="" width="500" /></p>
<p style="text-align: center;">&nbsp;</p>
<h2>Day 1. Code Generation 2011 starts</h2>
<p>I started the day giving an initial talk about <strong>Introduction to Model Driven Software Development</strong>.</p>
<div style="width:425px" id="__ss_8150087"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/pjmolina/introducing-mdsd" title="Introducing MDSD">Introducing MDSD</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/8150087" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
<div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/pjmolina">Pedro J. Molina</a> </div>
</p></div>
<p>Later on, Obeo guys (Mariot Chauvin &amp; Stéphane Begaudeau) presented how to use Obeo Designer to create sensible graphical DSL tools on the top of the Eclipse framework. Obeo uses model interpretation over the EMF models to create in runtime GMF based editors.</p>
<p><strong>Panel: Build or Buy &#8211; who should develop and own your DSLs and generators?</strong></p>
<p>We played a nice game with the following roles:</p>
<ul>
<li>Juha-Pekka Tolvanen (MetaCase), the moderator</li>
<li>Jos Warmer (Independent) , the homegrow tool maker</li>
<li>Pedro J. Molina (Capgemini) , the consultant</li>
<li>Johan den Haan (Mendix), the tool vendor</li>
</ul>
<p>More soon than later, Andrew Watson and Markus Völter join with the rest of the audience in the discussion. Of course, there is not an easy answer to that question and depends a lot of the particular context and requiring thinking about, but not only on:</p>
<ul>
<li>the experience of the in-house developers with MDD</li>
<li>the level of criticality of the process for the business to be automated (core or non -core to business)</li>
<li>the existence of tools able to provide the requested features</li>
<li>the need to split the business process from the current technology</li>
</ul>
<p>&nbsp;</p>
<p><strong>Type Systems for DSLs.</strong></p>
<p>Markus Völter presented a nice library he has been creating to help with the type checking in expressions of DSLs. After a gentle introduction to type checking, he introduced three different approaches to the problem:</p>
<ul>
<li>recursive type-checkers,</li>
<li>union based (a la MPS) and</li>
<li>table driven (a declarative way of the first one).</li>
</ul>
<p>&nbsp;</p>
<h2>Day 2. Getting speed</h2>
<p><strong>Terrence Parr Keynote</strong> was one of the more awaited talks in the conference. Many of us use their tools on a daily basis like <a title="ANTLR" href="http://antlr.org/">ANTLR</a> and <a title="StringTemplate" href="http://stringtemplate.org/">StringTemplate</a>. So having him here is quite special. In his keynote titled “Why program by hand in five days what you can spend five years of your life automating?” he let us some pearls like the following ones highly twitteable:</p>
<ul>
<li>“XML is not for humans beings, just for machines.” (Donald Knuth, the father of TeX support this, and I am not going the one to contradict this)</li>
<li>“Programmers are lazy.” Yes, we are. We don’t like repetition of tasks, trivial or not, because we get bored, so we always try to automate things. And this is our main driver and source of fun.</li>
<li>“Automate the things more prone to human errors”. Automate the tedious work!</li>
<li>Running a test does not increase the quality of the code.</li>
</ul>
<p><strong> </strong></p>
<p><strong>MetaEdit+ Hands On</strong></p>
<p>MetaCase MetaEdit+ was of my pending tools to try from previous editions of CG. I had the tool, I had the chances but not the inline tutor to allow me to get advantage of the tool. Risto, Steven and Juha-Pekka did a great work in the “hands on” session been able to not to left away any of the practitioners. They have did this lots of time and they are good teaching it.</p>
<p>Definitely, the learning curve of MetaEdit is not big, but for sure, you need the initial proper training to get the grasp of the tool to start creating your own graphical DSLs. Been a tool implemented in Smalltalk and using a repository, MetaEdit provided an edition experience quite different to the ones more used to edit traditional files.</p>
<p><strong>Generating Graphical DSLs</strong></p>
<p>Marko Boger, one of the fathers of the Poseidon tool, presented his work about applying DSLs to describe graphical DSLs. The idea was well received, and later on in the local pub called The Castle Inn an informal Birds of a Feather session was settled to create the Spray project to join forces and create a common core DSLs to help in generating graphical DSLs.</p>
<p><strong>Modeling the UI</strong></p>
<p>To end the day I gave a talk about how we take in account to model the User Interface of a business application. The topic is important because the IU is not always pondered as it should be. The UI is the only aspect the user will see from any system we build. Approaches to modeling and code generation based in a pattern based approach were presented with the help of briefs live demos using Essential and Io tools.</p>
<div style="width:425px" id="__ss_8150041"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/pjmolina/modelling-the-user-interface" title="Modelling the User Interface">Modelling the User Interface</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/8150041" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
<div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/pjmolina">Pedro J. Molina</a> </div>
</p></div>
<p><span style="font-size: 20px; font-weight: bold;">Day 3. Closing a great edition</span></p>
<p><strong>Ed Merks Keynote</strong></p>
<p>Ed is the leader of the<a title="EMF" href="http://www.eclipse.org/modeling/emf/"> Eclipse Modeling Framework</a> based in Montreal and now working also for Itemis. In his keynote he remarked some of the prejudices people use to have against code generation and (UML) modeling, leaving also some great quotes:</p>
<ul>
<li>“Resistance is futile: Best practices will be assimilated by code generators.”</li>
<li>“XMI sucks because XML sucks. XMI sucks for transitivity.”</li>
</ul>
<p>Ed talks reinforces my idea that, talking about software, Europeans are usually more instructed in the university in formal methods and theories where Americans uses to be quite more practical and take a more empirical approach to software engineering or computer science.</p>
<p>It is interesting to see that mostly all the participants in the LWC with the exception of Intentional are Europeans. Well, Charles Simony (the owner) and Mats Helander (the presenter) both from Intentional are also Europeans. So, there is no interest in Language Workbenches in other continents apart from Europe?</p>
<p><strong> </strong></p>
<p><strong>Goldfish Bowl: “Code Generation as a normal programming practice”</strong></p>
<p>Jos Warmer lead this session were all the interested participants shared thoughts about how to integrate code generation with traditional styles of development.</p>
<p>How to create a good template: Go to your best developers and tell them: “write this DAO code file as it were the last time in your life you are going to write it”. Then abstract it and you got it. If the further in time found a bug, they can always came back and fix the template also.</p>
<p><strong>Final panel: “Models, DSLs, Transformations: The Next 5 years”</strong></p>
<p>In the closing plenary session, future directions and incoming challenges were addresses by the panelist and the audience.</p>
<ul>
<li>Andrew Watson focused on resolving business problems instead of technological problems.</li>
<li>Jos Warmer encourages us to build better tools and better languages.</li>
<li>Johan den Haan pinpointed some incoming trends: Mobile, cloud, social, multi-core and poliglot languages.</li>
<li>Wim Bast commented about the need for parallelization and the best way to achieve it is to move to a more declarative DSLs allowing us to exploit the intrinsic parallelization in the execution of such algorithms. Wim pointed out also about the difficulty of making prediction about the future.</li>
</ul>
<p>So, I put my two cents remembering the genial quote of <a title="Alan Kay" href="http://en.wikipedia.org/wiki/Alan_Kay">Alan Kay</a>: “The best way to predict the future is to invent it”.</p>
<p>My position is that we have the tools, we have the knowledge… so, we should put all our efforts in improving the tools. Good tools will make MDD mainstream soon or later. So, I want to see it happening: let’s improve our tools now better sooner than later.</p>
<h2>Conclusions</h2>
<p>The <strong>LWC</strong> has been a great idea made real. Having the opportunity to compare solutions and styles of tools has been quite productive for all of us. All the participants were happy with the idea of repeating next year and the next edition is looking for the next challenge.</p>
<p><strong>Twitter</strong> this years has expanded the real-time conference far away that the walls of the College. Colleagues like Rui Curado, Xavier Seignard, Jordi Cabot, Angel J. Lopez or the AltNet Hispano group to cite a few I am aware were tracking the conference and taking part via twitter. This enriches the experience and makes it more participative.</p>
<p>Some tools, highly integrated with the Eclipse environment were suffering during the conference live demo failures. This is not an exception, but a warning signal that some task that should be easy are getting complex and complex when the number of dependencies to run a simple task is out of control. The <strong>friction level</strong> of these environments is definitely something to keep as low as possible. Model interpretation versus traditional code generation can be helpful also to reduce startup times and opening another instance of the same environment.</p>
<p>The new born project <strong><a title="Spray project" href="http://code.google.com/a/eclipselabs.org/p/spray/">Spray</a></strong> (as reported by <a title="Karsten on Spray" href="http://kthoms.wordpress.com/2011/05/30/spray-a-quick-way-to-create-graphiti/">Karsten</a>) can be quite helpful as a neutral DSL definition for describing graphical DSL in an technological agnostic way. The risk however is if it is too close to a certain technology stack like GMF or Graphiti it will only be used in such context. To my understanding, a Spray definition should be implementable also in Microsoft DSL Tools  to put a extreme counterpart.</p>
<p>If a contest for the novel tool of the year will have ever existed in CG, IMHO this year had been awarded to <strong>The Whole Plaftorm</strong> by Riccardo Solmi and Enrico Persiani. They have a nice and cool looking projectional tool that was deeply unknown to all of us. So, welcomed to the club!</p>
<p><strong>XML</strong> is definitely not for humans (Terrence Parr) and XMI sucks for XML transitivity (Ed Merks).</p>
<p>Finally <strong>Mark Dalgarno</strong> and <strong>his team</strong> were <strong>superb</strong> organizing all the logistics to make all of this possible. Thanks to everyone and see you there next year.</p>
]]></content:encoded>
			<wfw:commentRss>http://pjmolina.com/metalevel/2011/05/code-generation-2011-a-personal-review/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

