Hi, I'm Rémi Vion

Hello everyone !

I’m glad to join such an interesting and promising community.

You can find below:

  1. My BIO / Background
  2. My recent “Language Workbench” journey

I’m looking forward contributing to this community.
See you very soon :wave: !

1 - My BIO / Background

I’m a french software architect with a passion for modeling, crafting DSLs, and type-safety.

I’ve mostly worked as a independent dev / consultant.
I also worked as CTO in a fast-growing startup (from 5 to 100+ employees)
then as lead tech / CTO in the Innovation Lab of a large International-company.

The two very first languages I settled when I was younger were Haskell and Ruby
Both were very Language Engineering friendly, and shaped my interests quite a lot.
In Haskell I played quite a lot with parser combinators, free-monads and the like for various projects.
In Ruby, I crafted quite a few embedded DSLs.

I love playing with, and discovering new languages every so often.
I’ve hacked a little bit on a few GPL and DSL compilers and interpreters along the years.

I’ve switched my main language to typescript a few years ago.
Nowadays, I maintain a bit more than 150 typescript libraries in a wide range of categories.

When relevant, I like creating intermediary representation to decouple specification from implementation.
I often find interpreters the simplest way to turn those specifications into applications.
I’m also a code-generation enthusiast, notably when I can get type-safe low-abstraction boilerplate out from it.
I have created and refined my own code generation tooling over the years.

I’m not quite used to public speaking / writing about me.
So far, I have no website, no blog, and mostly only shared my work with friends and coworkers (with a few recent exceptions).

2 - My recent “Language Workbench” journey

I’ve recently embarked in a fun journey to create a new Language Workbench.
I’ll share details about what I’m building very soon. In the meantime, here is the backstory :

  • I’ve loved the idea of structural editors and graphical modelers for years.

  • Around two years ago, I spent 2/3 weeks building a small web-based modeler + integrated code-generator prototype for fun.
    It didn’t go very far, and I abandoned it and moved to other topics.

  • Less than one year ago, I pick-up this idea again, and spent 3 months building a second prototype.
    The tool was bootstraped, featured an extensible widget system, and was full of shortcuts to model / edit things “fast”.
    Alas, I made quite a few unfortunate choices.
    Lots of things were pretty naive, and the bootstraping was done too early.
    Once again, I abandoned it.

  • At that time, I was working with a friend of mine who pushed me to structure my research and contact domain experts.
    I did so, and decided to allocate a few more weeks to do research in this area.
    I read a few books and a few papers.
    I discovered Languages workbenches, played with a few of them, and fell in love with the idea even more.
    I also understood I had a wrong approach on quite a few points.

  • I then started a third prototype featuring modeling capabilities closer to what MPS offers.
    I built a custom tree-based editor with shortcuts and goodies for fast-editing.
    This prototype was the most promising so far, but…
    I ran low on cash, so decided to look for work ¯\_(ツ)_/¯

  • And at the beginning of the year, I joined a French-based SMB sotfware company that was already familiar with software-modeling approaches.
    There, one of my mission was to grow a DSL Engineering section to build DSls for various internal projects (e.g. contract modelling, or low-code platform).
    One month after I joined them, my company approved my proposal to start building a new language workbench and around mid-February, I started working on my first “real” language workbench prototype.
    This one didn’t fail yet and I’m now developing it full time, and am currently on-boarding 2 developers full time to help me on it.
    We’ll also probably start hiring soon.

I’ll share more information about it with you very soon !
In the meantime, here is a small screenshot of its projectional editor :

Cheers !

8 Likes

Hi Rémi, I think it would be interesting to see a demo of this tool at our very informal meetings on Thursday. In case you are open to present it please let me know and we will block a slot for you

1 Like

Hi Federico, thanks for the proposal !
I’ll be very happy to showcase it very soon.
I still need a few days or weeks to sort out a few things before the demo, but I’m almost there.
I’ll ping you as soon as I’m ready !

3 Likes

Perfect! Feel free to reach me here or by email!

1 Like

Your LWB tools seem promising. See you at our meetings to know more!

1 Like

Hello,

Looks interesting. What is the motivation / are the goals of building a new projectional LWB over using MPS? If you are allowed to share those, I believe this might be very valuable to the community. I’m also in the middle of pitching a similar idea to my new employer :wink:.

Robert

2 Likes

Looks interesting. What is the motivation / are the goals of building a new projectional LWB over using MPS?

Beside having fun and learning a lot in the process, quite a few more reasons :slight_smile:

~ ~
Disclaimer: I’m no MPS expert at all. I plan to play more with MPS soon.
Don’t take my wishlist below as a MPS criticism.
~ ~

I’ll release a short technical description of what we’re building very soon.
It will explain our goal, and it will highlight key differences with MPS.
Until then, here are a few pieces of answer:

We want to experiment with developer ergonomics, and it’s easier when you control everything.
We want to make creating and using languages as friction-less and simple as possible.
We want to experiment with several ways to integrate the tech into current programmer workflows on existing project codebases
We want better modularity: creating a DSL + creating a web-app with an integrated structural editor for this DSL along a “live preview” interpreter should take minutes to make, not more.
We also want to support different renderers for our projectional editor (like a textual / terminal one).
We want to make crafting interpreters for various programming languages very easy, and ease how several external components can communicate with our editors.
We want to play with realtime collaborative editors.
We want better defaults for projections, base languages, etc.

Also, I believe that there are still too few LWB out there, so one more won’t hurt the community :slight_smile: