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

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 […]

How to Add JARs to a Jetbrains MPS project

How to Add JARs to a Jetbrains MPS Project

Jetbrains MPS is a wonderful tool to create DSLs. We love it and use it regularly in our consultancy work. So we have written about Jetbrains MPS before. Being a projectional editor allows you to easily create DSLs that can be used through a graphical interface or things like mathematical formulas. Though all this power […]

Getting started with ANTLR in C#

Getting started with ANTLR in C#

Readers of this website will know that ANTLR is a great tool to quickly create parsers and help you in working with a known language or create your DSL. While the tool itself is written in Java, it can also be used to generate parsers in several other languages, for instance Python, C# or Javascript (with […]

Understand WebAssembly

Understand WebAssembly: Why It Will Change the Web

There is a new weapon in the great war against JavaScript the struggle to allow developers to choose their favorite style of programming while improve performance and their productivity. That weapon is WebAssembly, that will revolutionize client-side web development. WebAssembly, or wasm, is a low-level bytecode format for in-browser client-side scripting. If you are writing […]

Guide to Natural Language Processing

Analyze and Understand Text: Guide to Natural Language Processing

What Can You Do With Natural Language Processing? Natural Language Processing (NLP) comprises a set of techniques to work with documents written in a natural language to achieve many different objectives. They range from simple ones that any developer can implement, to extremely complex ones that require a lot of expertise. The following table illustrate […]