The science, tools, strategies, patterns and tools behind the creation and processing of languages

Bromium DSL: a DSL to test UI actions

Bromium DSL: a DSL to Test UI Actions

  I recently heard about Bromium, a Domain Specific Language (DSL) to describe user actions on a UI. Given I love everything regarding DSLs I contacted his author, Hristo Vrigazov, and chatted with him about: the DSL he has built, building editors using Xtext, working on an open-source project his visions on language engineering Enjoy! […]

Designing a DSL for accounting

Designing a DSL for accounting: use a DSL to describe taxes, pension contributions, and general financial calculations

Let’s see how we can design a DSL. Many readers appreciated the tutorials we wrote on implementing Domain Specific Languages but kept asking us resources on the designing of these languages. On this blog we have discussed already how to write parsers, interpreters, and compilers but we did not write much on what comes before, […]

Telosys: a Code Generation Tool

Telosys: a Code Generation Tool by Laurent Guerin

  In this article we are going to examine Telosys, a code generation tool. We will do that by discussing with its author, Laurent Guerin. This will give us the possibility to learn also about his views on code generation and what its users have accomplished by using Telosys. Why are code generation tools relevant? […]

So Much Data, So Many Formats

So Much Data, So Many Formats: a Conversion Service

Data is a core resource for many activities. One important challenge for handling data is storing the data in the right way. We need to choose a format that makes easy solving the problem at hand. When multiple problems are being solved using the same data, that could mean that the same data has to […]

Blazor: .NET in the Browser

Blazor: .NET in the Browser

In this article and tutorial we are going to use Blazor to bring C# in the browser. We are going to talk about what you can do and the things you have to think about when creating a Blazor app. WebAssembly is a great platform that promises to revolutionize development on the browser. Thanks to […]

Tutorial_ how to add an Action to the Jetbrains MetaProgramming-System

How to Add an Action to the Jetbrains MetaProgramming-System

The Jetbrains MetaProgrammin-System (MPS) I published the original version of this article in March 2012, using MPS 2.0.6. I have then updated in July 2018, using MPS 2018.1.5. It is interesting to see how MPS evolved in the meantime. The MetaProgramming-System is a Language Workbench based on projectional editing and it is the most advanced […]

Interview to Pedro J. Molina on DSLs

Interview to Pedro J. Molina on DSLs

We were lucky enough to get an interview from Pedro J. Molina. He has been a well-known protagonist in the Language Engineering field for quite some time. For me it was such an honor to finally meet him, even if virtually. In this interview he tells us about his experience using DSLs, his activities at […]

Code Generation

A Guide to Code Generation

There are many uses for Code Generation: We can generate repetitive code from schemas or source of information we have. For example, we can generate Data Access Objects from database schema files We can generate code from wizards We can generate skeletons of applications from simple models. We wrote about an example here: Code Generation […]

You Cannot Do Everything with Excel

Are You Abusing Excel? You Need Something Different

Excel is a great software but… for some tasks is just not the right tool. In this article we share a story of how Excel ended up costing billions of dollars because of a simple error. Luckily there is none in your spreadsheets 🙂 We all know how this happens: you start creating a short list […]

Getting started with ANTLR in C++

Getting Started with ANTLR in C++

ANTLR can generate parsers in many languages: Java, C#, Python (2 and 3), JavaScript, Go, Swift, and C++. We have written an article to use an ANTLR C# parser and we have also written a mega tutorial to teach you how to use ANTLR with Java, C#, Python and JavaScript. In this article we are […]