Federico Tomassetti

Software Architect, Consultant

Download PDF


+33 (0)78.39.888.14



Developing software is my biggest passion since I was a child. I have done a few things in this field:

  • I got a PhD in Software Engineering
  • I have working experience in four countries: Italy, Germany, Ireland and France
  • I worked as an employee for established companies such as TripAdvisor and Groupon
  • I started and contributed to tens of Open-source projects.
       You can take a look at my GitHub profile
  • I taught software development at universities and in private companies. I also wrote a introductionary book for a graduate course
  • I can develop using different languages and paradigms (OOP and functional)

I am physically located in Lyon, France. I work remotely, having experience working in teams spread across continents. I am open to travel for limited periods.


DSLs and MDD

I have experience designing and implementing Domain Specific Languages (DSL), Model Driven Development solutions (MDD) and supporting tools like editors and simulators.

Code processing

I have also experience building tool for code comprehension and automated refactoring.

Software process

Tests, CI, proper usage of Git, experience with agile development: I can help you applying these principles in your organization.


  • Jetbrains MPS
  • Java
  • Python
  • Kotlin
  • Haskell (to be improved)
  • C
  • Git
  • EMF
  • Xtext
  • C#
  • Ruby



Software Architect

July 2015 - Current

I have worked with several clients from France, Italy, Germany, USA, UK, Ireland, Brazil and other countries.

My main responsibilities have been the design of DSLs and MDD solutions, the implementation of prototypes and the engineering of complex web applications.


Software Development Engineer

January 2015 - June 2015

As part of the Platform services & Local extensions team for EMEA my main task was to design and develop microservices used globally or specifically for the EMEA markets.

In Groupon I had the possibility to use many differen technologies including Docker, Python, Java, Ruby and C++.

I was a full stack engineer following projects from requirements definition to deployment and monitoring.


Senior Engineer

May 2014 – January 2015

I was a full-stack Software Engineer, working in the personalisation team.

As part of my job I needed to be able to work on all the different aspects of our website and infrastructure: analysing the data with technologies like redshift, hadoop and tableau, to refine our recommenders algorithms, to improve the UI, to configure new machines. A fundamental skill was being able to work on rapid cycles, interacting with teams in other continents.

Some achievements:

  • main author of the explanatory messages for our users (feature who permitted to activate personalization for ~300M users and increased significantly our click rate)
  • realized debugging tools for PMs, to explore the way our explanatory messages were built
  • advocated test culture


Consultant for the DSL re-engineering process (part-time)

January 2014 – May 2014

I was in charge of designing to design from scratch a new parser and code generator for an existing DSL. I supervised the migration process and trained the personnel involved during weekly meetings. The solution designed was based on ANTLR and a metamodeling library for the .NET platform (which I developed).

Politecnico di Torino

Research Assistant

March 2010 – April 2014

Responsibilities include:

  • Develop software for static and dynamic analysis of code in different languages (mostly JRuby, Python and Java)
  • Data analysis (with JRuby, R)
  • Teaching assistant for four different courses on software development (main technologies taught UML, Java, Python)
  • Supervise students working on their bachelor/master thesis
  • Realizing independent research work

Fortiss (Technische Universität München)

Visiting PhD Student

September 2012 – February 2013

I took part in the mbeddr project (http://mbeddr.com). I realized an importer from C to the higher livel of abstraction of mbeddr-C. It meant to analyze all the usages of the preprocessor. A short demo is available here: http://www.youtube.com/watch?v=1OrHUQ1anZg


EMF Tutor (part-time)

April 2011 – July 2011

I was the tutor of a programmer learning Model-driven development using the EMF platform (EMF, Xtext, Xpand, MWE) at CSI Piemonte.


IT Consultant

January 2010 – March 2010

I developed a modeling solution for the development of multilayer applications. As part of the solution a small set of DSLs were developed.


Software developer

July 2007 – December 2007

I developed complex web applications for the managament of fleets. Our customers were institutions. My applications were used by different branches of the Italian police.

Other activities

  • I regularly write technical articles on my blog (http://tomassetti.me), attracting thousands of visitors per month and being republished by well-known websites like DZone
  • I self published several technical books

  • I have been a technical reviewer for tens of book edited by Manning, the Programming Bookshelf and Packt Publishing
  • I co-authored a technical book for graduate students which was adopted at Politecnico di Torino
  • I wrote several articles for the most widespread Italian magazine for developers (ioProgrammo)


  • English fully professional proficiency
  • French good comprehension, limited written production
  • Italian native speaker
  • German elementary level


Politecnico di Torino - Turin, Italy

Doctor of Philosophy (PhD), Software Engineering

The topic of my thesis is polyglot software development.

I focus on Domain Specific Languages (DSLs), Model-Driven Development (MDD) and language integration using different technologies (antlr, EMF, Jetbrains MPS and static analysis techniques).

I spent one semester at Fortiss, an institute of the Technische Universität München.

Politecnico di Torino - Turin, Italy

Master Degree, Computer Engineering, 105 points out of 110

I spent two semesters at Universität Karlsruhe (TH) where I attended several advanced courses and passed 7 exams.

Politecnico di Torino - Turin, Italy

Bachelor's degree, Computer Engineering, 102 points out of 110

Federico Tomassetti — federico@tomassetti.me — +33 (0)78.39.888.14