Posts categorized “Essential”.

Code generation with Essential. Back to Basics

One day I had and keep having the feeling that mainstream tools for Code Generation are over-engineered and provides a lack of Separation on Concerns.

This was the motivation for me to build Essential as a MDE tooling for creating and maintain custom code generators. Time has arrived I need to get it back to life, refresh it and adapt to the new needs.

In the meantime, for the people interested in:

CG2012 Summary, day 2

CG2012 Summary (part II)

After reviewing LWC2012 and CG2012 day 1, let’s continue with day 2.

Day 2, Thursday 29th

The morning started with the first keynote. Markus Völter led the session with the title “Domain-Specific Language Design – A conceptual framework for building good DSLs”.  Here Markus deep down with an ontology approach, reviewing the dimensions of DSL Design: covering nine topics: expressivity, coverage, semantics, separation of concerns, completeness, paradigms, modularity, concrete syntax & process. In the session, he focused mainly on expressivity, semantics, modularity and concrete syntax. I found specially interesting the dissection of types of language extension and composition providing detailed samples in each case. In summary, good and quality stuff as Markus used to deliver. As commented by Markus, this material will be published as a book “DSL Engineering” at the early 2013.

After the coffee break, I entered the Peter Friese’s tutorial on “Traditional and Model-Driven Approaches for Cross-Platform Mobile Development”. Peter demonstrated a very good knowledge of the mobility space presenting nor one or two alternatives but six (6) ways of developing cross-platform mobile applications considering pros and cons. Great talk covering native development (showing iPhone, Android and WP7), HTML5 and JavaScript frameworks like Sencha or jQueryMobile reviewing cross tools like phoneGap. It was a pity that the Wifi connectivity were failing and interrupted in some moments the flow of the demo, but Peter was able to overcome it and show what’s going on.

User Interfaces are always interesting to me so: Achim Demelt session’s was a must see session or me. “Mission: Impossible — Purely declarative User Interface Modeling”.

The session was very good. The slides are not enough, the accompanying demo shown the tool at work. Achim and his team created Silverlight based UIs using a Java back-end. The S4 environment presented is agile enough to model and generate UIs for the ERP domain Achim was targeting.

Next session for me was for the Jetbrains’s guys Maxim Mazin and Evgenii Schepotiev with the talk “Webr-DNQ — web application development with pleasure”.  They show the language extensions Jetbrains has designed over Java using MPS  to build in-house products like YouTrack. This is a very clear sample of the quote: eat your own dog food.

After a coffee, and back to action to a very different session: Steven Kelly lead the hands-on session titled “Have your language built while you wait”. Here some of us creating Language Workbenches where placed in a room with our laptops waiting for customers. During rounds of 25 minutes we were attending them showing the capabilities of each tool and solving a concrete and practical small problem proposed by the customer. 15 master craftsmen, representing 11 top language workbench tools, volunteered their time to build languages for participants’ domains. It was a very interesting format because it not only allows people to try new tools, but also to promote cross polinization between tool makers. From mi side I was there showing Essential and also have the chance to play a little with The Whole Platform with Riccardo Solmi and Enrico Persiani and take a closer look to Ensō with Alex Loh.

Steve prepared a good summary on this session (take a look for the details on each tools). I borrow here the video here :-).


So far, so good! Another day full of code generation, but the dessert was still missing.

This year CG2012 changed the relaxing punting trip on the river Cam in favor of a conference called “How Apollo we flew to the moon” by David Woods. The result: totally amazing! This guy presented us all a brief but detailed introduction to the Apollo systems and navigation procedures and then deep down on the specific problems on the Apollo XI, the mission where Aldrin, Armstrong and Collins engraved theirs names in the history.

Given the audience, David make special emphasis on the computer devices on board in the Apollo missions. Totally amazing the rudimentary technology used was good enough to fly to the moon and come back! Q&A delivered may geek questions about the Apollo mission that David responded with flying colors to impress even more the audience.

So I couldn’t resist, and bought my copy of his book and got it autographed by David (I was not the only one BTW). A good reading for sure, if you like space and/or engineering.

Code Generation 2012

CG 2012 logo

Times fly! Code Generation 2012 is only two weeks ahead.

During the latest’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 this year comes with some interesting sessions. I want to highlight some of them:

From my side, and once established in Seville, I will join the conference with some of my Icinetic colleagues. The activities we will be involved include:

As every year, looking forward to join and meet again with the CG community. See you there, guys!

New kid on the block: XCore

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 between the Java modeling  side of world (EMF) and .NET modeling efforts with Essential are now simpler with the arrival of XCore.

As Meinte Boersma @miente37 comment on twitter: semicolons seems to be the main difference.

BTW, a new release of Essential with minimal bug fixing has been released (0.5.1). Try it out!

Modelling the User Interface, the video

The recording of the Code Generation 2011 session about ‘Modelling the User Interface’ 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 new proof of concept UI specification and WYSIWYG prototyping tool.

Essential on Alt.Net Hispano

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, este video grabado para la comunidad en español es un buen punto de partida.

Mi agradecimiento a Alt.NET Hispano por el interés en la materia y la invitación a divulgarlo.

Descarga directa del video (562 Mb).


More… »

Code Generation 2011: a personal review

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 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 Johan den Haan, Markus Völter, Angelo Hulshout, Marco Bambrilla, or Mariot Chauvin to cite a few and more expected to come. Find the majority of the pointers at the

In this edition, the conference has been deeply covered via twitter using #cg2011 and #lwc11

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.

More… »

First public Essential 0.4.44 Beta!

Essential Logo

The Code Generation 2011 conference and the Language Workbenches Competition 2011 Workshop are quite close in the calendar.

I want to celebrate it with the MDD community sharing my work on Essential (a tool designed for acquiring speed with Model Driven Development). On 11th may 2011, version 0.4.44 has been released as the first public beta.

Essential is a meta-modeling and code generation tool providing specific DSLs to define and consume:

  • Metamodels
  • Models
  • Templates (using StringTemplate) &
  • Transformations (Model2Text and Model2Model)
With a strong emphasis on model interpretation, prototyping a code generation can be done in an agile way without the need of generating any infrastructure boilerplate or meta-editor plumbling accessories.
The main goals of the tools is to enable software architects to:
  • Prototyping software directly from models in a unexpensive way
  • Evolve theirs software architectures as fast as possible experimenting with design choices
  • Benchmarking and comparing architectures
  • Code generation
For all of you interested in, feel free to try it, enjoy and provide feedback.

Try it also with the sample projects created for the LWC 2011 challenge.

Getting ready for CG2011

Code Generation 2011 is the leading European conference on modeling and code generation. It’s a great opportunity to meet with the experts in the field and share the latest research in the area.

The invited speakers this year are very, very interesting:

As a novelty, previous to the conference itself the first edition of the Language Workbenches Competition will take place on May 24th in the same venue.

In this edition, I will be there again, more active if ever, taking part with some activities:

As always, I’m looking forward to meet again the code generation community.

Take a look to the full programme and don’t miss the chance.

See you in Cambridge!

Essential submission to LWC11

As blogged before, at CG2010 a group of interest came up with a proposal for creating a Language Workbenches Competition and the first edition will be taking place in Cambridge May 24th, just before CG2011.

I submitted a proposal with Essential for participation in LWC11. It’s going to be a great forum for comparing language workbenches capabilities and the state of the art in the area. If interested, track the progress here LCW11.

During the last weeks I’ve been working a little, replacing the old Microsoft Oslo dependencies to MGrammar inside Essential to an alternative parsing solution. The MS Oslo and later SQL Server Modeling never passed from the CTP stage and finally were discontinued. Therefore, I couldn’t ship a product in such conditions and finally decided to change it.