Writings
Long-form essays and thoughts.

Building Collaborative Web Applications with the modelix Stack

Happy birthday mbeddr 🎉

Meta Programming System Mentoring Experiment 2022

Modelling in the Browser isn’t enough!

Skadi Cloud - May Update

How JetBrains Meta Programming System (MPS) Identifies Things

Skadi Cloud - an Experiment with JetBrains Projector and MPS

JetBrains Projector a Game Changer for MPS Projects?

Context Boundaries in Language Engineering Projects

A new Home for my MPS Tutorials

Language Engineering Newsletter

Introducing Fernsprecher for IntelliJ IDEs
JetBrains MPS Generators: Down the Rabbit Hole

Heavy Meta 2019

Update to MPS 2018.3: Behind the Scenes

Testing in JetBrains Meta Programming System: What and Why?

Heavy Meta: A Streaming Series on JetBrains MPS
MPS, Feature Branches and Language Migrations: DOs and DON’Ts
Streaming, Contributing to MPS and Git Workflow

Slack is not smart

My personal blockbuster 2016: Planet Earth II
a Functional Approach to Asserts in Swift
Some playgrounds to explore CIFilters on OSX
Home data: Arduino (part 1)
Home data (part 0)
Fsharp
Ghostbusters
java extensions 101 with MPS
In the past years I have done lots of work in C# and recently came back to work with Java because I am
now working in a project that involves MPS. The Meta Programming System from JetBrains. Which is a
language workbench with a projectional editor. I got quite used to some of the features C# offers.
One of the features I love the most is implicit strong typed variables, expressed with the var keyword
as type in a variable declarations. Due to the extensible nature of MPS it is quite easy to extend existing
languages. So I decided to build this feature in MPS for Java.
Now you might think this ridiculously crazy since it is hard to change an existing language. But in MPS
everything is about modularization, extensibility and composition of languages. And It ships with a
Java implementation called baselanguage out of the box. For me it took 30 minutes of work to build
this extension. Though I have a lot of experience with MPS and a good knowledge of baselanguage
but even if you don’t have that it should take you not longer than an hour to do it on your own. And that is
what this tutorial is about. What I will show here is how to extend
baselanguage with a new kind of variable declaration that uses its initializer to calculate its type.