The topic of Domain-Specific Languages (DSLs), and the wider topics of software language engineering and model-driven software development (MDSD), have held great promise over several decades already. Then why aren’t we all building DSLs to do our projects with MDSD-style?

I think several problems cause that. Below, I’ll outline these, and explain for each one of them how the book I’m writing addresses that problem.

TL;DR 1. There’s hardly any introductory-level material to learn about DSLs; 2. Parsing technology is hard and only good for purely-textual DSLs —projectional editing to the rescue; 3. DSLs on the Web #FTW; 4. The…


“A while ago” I was approached by Manning Publications: whether I was down for writing a book about these things called Domain-Specific Languages. I happily obliged, and in the meanwhile, they have deemed the latest version of the contents good and substantial enough to go into the Manning Early Access Program. You can have a peek at the first three chapters at https://livebook.manning.com/book/domain-specific-languages-made-easy/.

Today, August 14th, Domain-Specific Languages made Easy is part of Deal of the Day. Head over to https://bit.ly/3kEBsuV and use the code dotd081420au to get 50% off the price of not only my book, but also off…


While I was wrestling with some ghastly batch script the other day, it struck me that we seem to be relatively loathe to hold the, often quite dark, art of scripting to the same standards as we do other aspects of software engineering principles.

In random order:

  • Scripting languages have limited expressivity.
    This probably stems from the principle that scripts should “just” string together lots of — very imperative — invocations of “real” programs (such as grep/ls/sed/…), without interacting directly with the results of those invocations. Instead, they should implement the actual logic largely by virtue of piping untyped text to…


Last week, I went to the Munich MPS Meetup 2018 (see agenda), intended for practitioners to learn about what other are doing with MPS and how. My key takeaways of this event are as follows.

I think the most important remark was by Eugen Schindler of Océ who got a bit ruffled by remarks along the line of “MPS is just another tool”. According to him — and other and I agree wholeheartedly — MPS is foundational technology going beyond being a mere link in the chain of tools. …


Lately, I’ve been doing a lot of work in Jetbrains’ language workbench MPS. Even though the initial learning was a bit slower than expected, this has been a very happy experience so far. Especially implementing actual languages with it has been thrillingly simple and productive, and I got the hang of writing model-to-model transformations pretty quickly as well. The part of the product which “pushed back” the most was generating actual code, Java or otherwise — see a previous blog.

Of course, it’s the premise of a projectional language workbench that implementing languages takes away one critical hurdle — writing…


Más was my attempt at a Web-based workbench for projectional modelling languages which I’ve effectively abandoned late 2014. You can still try it out at the link given, although you’ll have to use a non-WebKit browser such as Firefox: the JavaScript happens to rely on some API which has been patched shut in WebKit.

A short history of Más

In 2011, I attended the CodeGen conference with the co-located Language Workbench Competition (LWC). My key takeaways from the latter were:

  1. There are plenty of language workbenches out there. (In fact, to date every edition of the LWC has seen a small set of recurring participants…


Recently, I’ve had my first stint with MPS and for the most part, it’s been a hoot. The “most part” bit binds to the code generation side of things, which I’ve found quite counter-intuitive, especially coming from a background where code generation is typically a model-to-text transformation rather than a model-to-model one.

First of all, the reference documentation for generation is — as is often the case with these tools — of the “you can read it well once you already understand all of it”-kind. That’s hardly avoidable since this documentation also strives for completeness, but it makes it not…


A veritable library has been filled with literature about parsing in its gazillion variants. A somewhat smaller library has been populated with how to translate that into editors that can be integrated into quality IDEs. I’m not aware of any equivalent of the “Dragon Book” for projectional editors.

This cannot be immediately explained by the novelty of the subject: the term seems to have been popularised (if not coined) by Martin Fowler in 2008. It might have something to do with the technology not quite having gone mainstream (yet!). Another factor might be that there’s essentially only one quasi-well-known product…


Via Twitter I stumbled on letter to the editor by economist Ewoud Jansen about the “hype” surrounding the necessity of learning how to program in schools, ranging from high school to even pre-school, which starts at age 4 in the Netherlands. This “essay” struck a certain nerve with me, probably because I’m both a mathematician (i.e., I actually graduated as one) as well a professional software developer (as in: I code stuff and people pay me money for it).

Jansen’s arguments seem to be based mostly on his own limited experience, and the observation that we got things working without…


Provocative sub title: “MVC isn’t dead, it just needs a P” ;)

The Model-View-Controller Pattern has been around for a long time — long enough in fact to remember the years of Reagan’s White House residency. It has been often derided as being old-fashioned, too strict, or plain wrong, but that hasn’t stopped it from surviving this far. When you use an allegedly “competing” Pattern like MVP, there’s a good chance you could still recognise good’ole MVC in your code.

In case you weren’t told a gazillion times yet: the MVC Pattern separates the concern of the Model (i.e., the…

Meinte Boersma

All-round software value creator, specialising in DSL construction and language engineering.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store