Posts by pjmolina.

Interview on DSLs

Federico Tomassetti is doing a great job spreading the knowledge on Domain Specific Languages and related tooling.

Recently, he interviewed me. We talk about current state of DSLs, models, and related tooling. You can find a version and the transcript in his blog.


Quid. DSL for exploring Web Components

Today at Metadev we have released Quid. A new web-based tool for UI prototyping with a strong focus on Web Components.

Quid uses a textual DSL with minimalistic syntax to define and compose components. With real-time preview, the immediate feedback provides a great editing experience.

After months of works it is a joy to share it and await for your feedback.

Three common uses cases for OpenAPI

Just posted on the OpenAPI blog a short entry presenting three common API scenarios where the OpenAPI Spec could be useful.

Anti-pattern: Semantic Code in Comments

Sematic Code in Comments

Have you ever encounter semantic code in comments? I mean, code in a different language to the main one used (could be a DSL), having impact on the semantics and been part of the final behavior or the program?

It’s not code commented and therefore deactivated. No, this code still influences the behavior of your app.

Yes, it sound weird, I know. But from time to time you can find it hidden in code comments.

This post discuss about this pattern found in some languages and argues about why it should be considered and anti-pattern in most of cases.

So, let’s do some some deep dive in code archaeology and review some examples:

More… »

OpenAPI is moving on!

I am a great fan of standardization in general. API-interop is definitely one of such places where universal standards are needed.

I started using Swagger v. 1.1 some years ago, and them moved to version 2.0 when start working on tooling for APIs and Microservices serving mobile apps.

Today the OpenAPIs Initiative is releasing a implementors draft for version 3.0 of the spec. See announce here.

This new version brings enhancements and simplification to the previous v. 2.
To start supporting v. 3. on my own projects as soon as possible I started the following initiatives:

  1. Build a OpenAPI library for TypeScript to help building API contracts for v.3. it includes a small fluent DSL to build your contract and explore v. 3 building blocks.
  2. Build a plugin for one of my favourite libs: baucisJS The library is called baucis-openapi3 and as you will probably guess, yes it adds OpenAPI contracts to your API built with baucis.
  3. Setup a working fully sample running on: where you can see and compare different contracts versions linked to a working service. Log in with demo/demo for a simple tour. Full source code is available on:

As v. 3.0.0-rc0 is an evolving standard, I expect to add minor changes to fix bugs and add extra functionality when needed.

These are my two cents to start testing it as a tool implementor.
Enjoy and give feedback!

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:

Microservices, MEAN Stack, & Docker

In May I have been talking about Microservices and the MEAN Stack in Madrid (JSDay.ES), Málaga (OpenSouthCode) and Seville (SevillaJS).
Here you have the recording for the first one (in Spanish).

Later on, with LemonCode we broadcast a webminar about Docker and Docker-Compose (in Spanish).

Finally, with Bruno Capuano a Podcast with Introduction to Microservices (in Spanish).

Time for New 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.

Dissecting an AppNow Specimen

Artisan Spanish Knife
AppNow is a minimalist service that converts simple models in a cloud deployed back-end.
The simplicity of this approach encourages developers to focus on what to build (business needs) instead of how (the technical skills to build it) and where to deploy it (devOps).

In this article, we are going to focus and delve into the technical choices made for the backend: architecture, languages & tools, organization and code practices used.

In particular, this can be a useful read for a developer wanting to introduce her/himself into MEAN development. On the other hand, the text is full of low-level technical details and is not suitable for those unfamiliar with programming.
You have been been warned.

More… »