Latest posts.

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. https://github.com/metadevpro/openapi3-ts 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: https://openapi3.herokuapp.com 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: https://github.com/pjmolina/event-backend

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

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

Publishing OpenData with AppNow

OpenData

OpenData logo by @fontanon

Open Data is a philosophy to make data public & accessible on the internet. Governmental data, expenditures and investments, economic indicators, resources exploit, anonymous medical information, weather information, genomics, or universe exploration to cite a few. I.e. Data.gov & Data.gov.uk are good sources of governmental data from US & UK government respectively.

This movement is a prerequisite for other ones like:

  • Open Government to add transparency to the work of our politicians or
  • Open Science where science facts and research papers are freely shared on the net for anyone to conduct a further research today or in the future on the current knowledge. That what Newton referred as “If I have seen further it is by standing on the shoulders of giants” and it is one of the best way to boost the human knowledge and scientific progress.

In these days we are living, one can argue we are surrounded by tons of data, and more and more our capacity to process it is rapidly saturated and filtering mechanism are more needed than ever to reduce the noise over the signal.

On other hand, not all the relevant data is published. Not all is in digital form, not all is available for others. Providing fast and cheap publication mechanism can help to spread openData with valuable one.

What we can do as Developers?

More… »

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

End User Programming for Mobile Apps

Mobile Apps
Jean Bézivin (@jbezivin) (see slide 4 here) has a great slide about how the number of world-wide professional developers grows linearly respect to time, and at the same time, the need for software grows exponentially.

Mobile application is a specific market where the explosion for new software are more demanding than never before.

The obvious conclusion, we as developers are not going to be enough to cope with the demand without improving our productivity in orders of magnitude and/or lowering the entry barrier for non-programmers to create applications.

You know, probably it is me as an MDD/MDE practitioner could be biased, but to my best knowledge, I strongly think that Model Driven Engineering is in an excellent position to play crucial role in both worlds:

  • For professional developers: to provide tools to provide such productivity improvement.
  • For end users: to provide tools as easy as possible to allow non-programmers to solve their common tasks.

 

Today, let’s talk a bit more about end users: why an end user would like to develop an App?

  • Because is something I want, or I like.
  • Because is cool.
  • Because is easy (should be easy, let’s say doable for the average person).
  • Because is cheaper than asking someone else to develop it for me.

 

Personal Apps

A Personal App is an application tailored to a specific customer and needs. Maybe it will have only one user (as a RSS and content aggregator for day to day consume like videos, music or posts) or be shared among friends (like a birthday application or a shared travel experience). Company apps, catalog of products, specific content about music, TV or films are high popular on markets.

 

Windows Phone App Studio

In this context, the tool Windows Phone App Studio released two days ago by Microsoft is a great step forward in this direction enabling final users to create their own apps: Personal Apps.

With-in a three or four step wizard, the user is able to select a template for the application, define, change or refine the contents, and select the layout and colors. No technical questions, no programming skills, just the minimum set of questions required: less is more in this contexts. In 5 minutes the work is done and the application ready to be deployed to the device.

See this 5 minutes video:  Windows Phone App Studio Introduction

Windows Phone App Studio provides the ability to generate, compile and deploy the app directly to the user phone with a download initiated by a QR/BIDI code, or to download the source code for a developer to extend, change and customize the app.

 

Native code

Many app builders focus on HML5, JavaScript and tools like PhoneGap/Cordova. This approach has advantages in terms that provides a common JS core code to do cross-platform to many devices at the cost of non-taking the advantages of the native development: best performance, take advantage of the device unique features and APIs, and better battery management. For the problems of JS on mobile development see this great article/essay: Why mobile web apps are slow.

If you are a developer, you will be productive with the tools you know, of course. But, definitely if you can afford code generation do it: a native app will excel its JS counterpart.

 

Quality by Design

Another great key feature of a code generator for end users apps is about hiding a huge pile of technical details. Very huge, trust me. If you want to develop from scratch a new mobile application for a phone and put it in a market, you should consider many, many factors:

  • Compliance with the UX, style guide of the device
  • Margins
  • Colors
  • Behaviors of the application
  • APIs for accessing all the features
  • Things allowed in the market, things that are not allowed
  • Etc.

For our own experience in Radarc, passing the Windows Phone Store Certification to create our first App took us 5 iterations of one week each. Now, a well-fine-tuned code generation can produce the code right on the first run saving a lot of time, and therefore, saving money. Of course, there are other constraints like the content to be adequate and not offensive, this is for sure a human task, but the generator solve the other 95% issues.

 

To sum up: Very, very happy with the team work so far. Congrats to all the involved in the creation and launching of Windows Phone App Studio.

End user programming is not a new term, but hey! new tools are over the table. Let’s see how people react and what they can build with it. Enjoy!