Last year I started a stream series about JetBrains Metaprogramming System called “Heavy Meta” on Twitch. In this blog post I would like to give you an update on my ideas for this year and look back on what worked well and what did not.


My goal with “Heavy Meta” was to do a slow paced tutorial on MPS, that is up to date with the current developments in MPS and its community. A secondary goal was to use the project build during the stream as a bases for further project ideas. So far I have produced over 20 hours of video. The good news it that I will continue to do so in 2019, but I won’t have time to do that before February. In addition to current tutorial based format I also have some ideas on what I would like to add to the streams, but more on that later.

Looking Back

I started the whole thing back end of October mostly out of my own frustration that I had to answer the same questions over and over again to beginners. While there is the “Fast Track to MPS” and since mid last year also Markus “MPS Intro Course”, while they are both good tutorials they focus on something different from I wanted to do. The first focuses on explaining basics of MPS and its terminology to you in a very compact format. The tutorial does not talk a lot about possible tradeoffs of alternative ways to do something. The second already assumes quite some knowledge about MPS and gets into more advanced territory quickly. Apart from being slow paced and explaining alternatives and their tradeoffs I also wanted to choose a format that allowed interactivity.

The interactivity part didn’t really work that good, so far. There was little interaction with the chat in most streams. This is a bit disappointing to me and I would like to change that. Live viewer number are pretty much as expected: constantly below 10. The MPS community is small and I don’t expect tenth of people to watch a basic tutorial on it. The recordings where viewed more than I expected after 4 weeks they usually had between 30 and 40 views.

Lessons Learned

Over the holidays I took some time to reflect on the past episodes and what I could learn from it.

Interaction is Hard

My initial idea was to make a format that is really interactive and viewers could directly participate. This idea has not worked out. I think it did not work for two reasons: episodes where pretty packed with information in a tutorial style and second that the live audience was to small. The content of the episodes itself still worked out well. I will keep the same tutorial oriented content in the future but will add a different kind of format that focuses on interactivity (see below). Of course you can always ask questions in chat on any episode.

Slow Might Still be to Fast

One interesting aspect of the streams was, after working with MPS for over six years almost every day, to get an impression on the basics again. Prior to the first stream I implemented everything I wanted to do myself. The implementation took me a little over two hours and I was concerned that it was not enough content till the end of the year. It turned out to be more than enough. This is really interesting input for other tutorials and trainings on MPS that I might do in the future.

Looking Forward

As mentioned in the beginning I won’t be resuming “Heavy Meta” streams, in the tutorial kind of fashion, until February. I need some time to prepare the streams and I have a lot of travel in January going on. I can’t fit all of that. Starting from February we will take a look at three main things: Shadow Models, none textual notations and command line build. Thanks to everyone who voted in the Github repository to help me prioritise. My current plan is to continue on the February 7th with the next episode, where we will start to build a graphical editor. I will update the Google Calendar as soon as all my travel plans are fixed and I know when I’ll be back.

Most of the past episode are available on Twitch at the moment but Twitch will only keep them for 60 days. I will upload all of the past episode to Youtube into a single playlist, that way they will continue to be available.

Two New Formats

Apart from resuming with the tutorial based “Heavy Meta” format, I have two new ideas that I would like to try out:

A monthly MPS community update, where we take a look at different things that happened in MPS and its community. For instance what is going in the MPS extensions or other open source projects around MPS. If you have any interesting content for this kind of format, just let me know via Twitter, the comments here or create an issue for it on Github. Apart from once a month I haven’t decided on a schedule yet. Let me know what would work best for you: on weekends, in the evening on a normal weekday or a different time? As an experiment I’m most probably going to the first episode on February 6st.

The second format doesn’t have a name yet. I would like to do a regular stream where I answer your questions and help you solve your MPS problems. It can be concrete technical questions on how to do a certain thing in MPS or more abstract questions about language design decisions. You can even bring your own code and we take a look at it on stream. In order to get your input you can open issue with questions in this Github repository. Marco Lombardo has already asked the first question that I would like to answer in such format. If you like me to work on your very same piece of code, you can also open a pull request in the very same repository. I’m not yet sure if it’s a dedicated format or part of the normal “Heavy Meta”. If there is a lot of interest in this, I’m most probably doing dedicated streams for this. I will keep your updated in this blog and on Twitter.