Posts tagged “DSL”.

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:

Time for New Horizonts

horizonts

Three weeks before, I decided Monday 7th of March, 2016 was going to be my last day working for Icinetic.

That was a hard decission to take, because in the last 4 years in my role of CRO & CTO I have learned and enjoyed working with a wonderful team and building amazing MDE software products like Onion, AppWorks, Radarc, Buildup, and Hivepod.

Now, the time has arrived where I feel I need to fly on my own and look for new projects I want to address on my way. If I succeed or fail, do not matter too much: the important thing is to do & try it instead of regretting for not tried it at all.

Therefore, I am now open for ideas and collaboration on projects involving DSL, MDE, Microservices, Cloud, IoT, UIs, and more. If you have a project or an idea needing technical help or coaching feel free to drop me a line and let’s talk.

I wish all the best and good luck to my Icinetic friends and mates! Keep pushing good software!

Modeling on the Web

Just a quick note to link the session recorded last April 11th at Cambridge (UK) for Code Generation 2014 titled “Modeling on the Web” is now available on InfoQ.

Slides also available on slideshare.

In such presentation, our work at Icinetic on Web Modeling (textual, proyectional and wizard-based) was illustrated detailing how we addressed it. Now you can test it by yourself on the products:

Your feedback and comments is welcomed.

Microservices Standardization from Models

Alhambra Tiles by Roberto Verturini

Microservices is emerging as an architectural pattern. They encourage small, autonomous and decoupled services exposing a stable contract implementing a business service with the minimum set of external dependencies.

For further discussions on Microservices, accurate definitions and its use cases read Lewis & Fowler, Richardson, or Crammon.

With no doubt, Microservices are gaining momentum. A lot, and too fast, as usual in the tech industry. So fast, that microservices abuse (just because has its buzz component and coolness factor) is already causing also problems:
More… »

CG2012 Summary, day 3

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, 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.

Friday 30th, day 3

The last day of the conference started with the keynote “Speed and Innovation through Architecture” by Jan Bosch (@JanBosch). 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.

Some of the pearls (argued by the audience in twitter latter) in his talk were:

  • The market is moving from products to services
  • The need for the speed: R&D departments should have very short innovation cycles. Speed is the primary feature to achieve. (Time to Market)
  • Moving faster: no efficiency improvement will outperform cycle time reduction.
  • Traditional SW development does not scale. We need to change the way we create SW.
  • Amazon releases new software every 11 seconds…
  • R&D as an Experiment System
  • Decisions should be based on DATA, not opinions
  • Learning: the company running the most experiments against the lowest cost per experiment wins
  • There are things you can’t predict until you perform tests
  • Lean and Agile as Scale: as a dancing elephant (see the photo in the slides)


Some tweets reactions about it:

  • @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
  • @tvdstorm: No more heavy process. This is going the way of the dinosaurs. @JanBosch #cg2012
  • @stevekmcc: @JanBosch 10% more revenue vs. 10% less dev costs (“efficiency”) assumes rest of org has zero incremental cost & demand is infinite #cg2012
  • @delphinocons Amazon releases new software every 11 seconds… wow. @JanBosch @ #cg2012
  • @pmolinam  “Learning: the company running the most experiments against the lowest cost per experiment wins” @janbosch #cg2012 #innovation –> Google
  • @tvdstorm: @JanBosch’s keynote: crowd sourcing the scientific method at a very high speed. Continuous integration -> deployment -> AB testing. #cg2012
  • @pmolinam Arquitecture goals accordingly to @janbosch Simplify, Decoupling, Lean and agile at scale, End to end quality, fight design erosion #cg2012
  • @pmolinam “Interconnected teams and organizations asymptotically reduce productivity to zero” -> Twitter? @janbosch #cg2012 #innovation
  • @pmolinam Decoupling: NO versions! only the deployed one! @janbosch #cg2012 #innovation <- Hard to achieve out of the web
  • @pmolinam Very great keynote! by @janbosch #cg2012 #innovation very inspiring and totally on-topic.
  • Great slide @janbosch #cg2012 implication http://t.co/OBiSKfjZ
  • @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

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&D departments. Dear CIOs, take note.

After the keynote, time for a quick coffee and I move quickly to prepare my session on “Multichannel User Interfaces”

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 — called Oz UI — 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.

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.

After the session and with the feeling of work completed, it was time for lunch and relaxation.

My last technical session was: tercnoC xatnyS srettaM (Concrete Syntax Matters) by Steven Kelly. 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 — measured in number of users — will be influenced greatly by these choices. See Steven in action.

Following our last coffee/orange-juice break, we all moved to the closing session: a panel discussion on “Code Generation – how far have we come in 5 years?”, lead by Andrew Watson, who introduced the topic and the panelists: Wim Bast, Steven Kelly, Darius Silingas, and Markus Völter.

Some ideas that were discussed:

  • MDSD Commoditization
  • Moving from a technical discourse to the necessary business discourse
  • The complexity of SW is ever growing; MDSD helps manage the complexity

Some interesting tweets about the panel supporting it:

  • @lmontrieux: Final panel session begins at code generation #cg2012 http://t.co/ffQOqyQ6
  • @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
  • @pmolinam @CompSciFact “Before you can design a good DSL, you have to understand the D.” On-topic for #cg2012
  • @tvdstorm: Need: live prototyping environments to be able to try out many different designs. Modeling needs immediacy, liveness and directness. #cg2012
  • @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! #cg2012
  • @pmolinam On SoC and abstractions in DSLs #cg2012 Panel
  • @stevekmcc We are building the complex systems as ever. DSL helps in this race. #cg2012

Summing up

Finally, I present my personal conclusions on the State of the Art in MDSD based on what I have seen at CG2012:

  1. Two main lines of work have arisen in MDSD seen this year:
    • Bottom-up using a low-level general language and adding extensions that raise the abstraction level (eg.: mbeddr over C or Webr-DNQ over Java) for a specific purpose (domain), and
    • 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: Radarc, IFML, MetaEdit+).
  2. More effort is needed to explain ROI for potential MDSD consumers (customers).
  3. Increasing complexity and diversity (mobile) in technology pushes the market ever closer to MDSD (as there are no other choices).
  4. 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).
  5. Some MDSD technologies are powerful yet also rather complex; more work is required to simplify their presentation in order to increase user adoption.
  6. User Interface modeling is gaining momentum this year (with at least four sessions), that being a great and challenging DSL domain.
  7. The cloud provides opportunities for applying MDSD; this context already showing adoption in transparent infrastructure (see Mendix for a sample), deployment and configuration (cloud operation).
  8. Multi-core CPUs provide opportunities for executing DSL specs with efficient parallel processing.


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 — join us in 2013.

I want to thank the work of Robert McCall. He contacted me and volunteered for polishing my sometimes rusty English and making the full text more readable.

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.

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 http://modeldrivensoftware.net

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… »