Laurent Sansonetti's Home Page

Hi! My name is Laurent! I'm a Belgo-Italian software hacker, and this is my home page! As you can see from the pictures below modelling wasn't exactly a viable career option so I decided to work with computers instead. Yes, I do wear a ponytail.


***

Work

I am a programmer specialized in system development, more specifically in the design and implementation of tools for other programmers (ex. programming languages, runtimes, compilers, environments, etc.). I am not a Web programmer / designer as you can already see.

Current Activity

I'm currently employed by Microsoft as a Principal Engineer working for the Mobile Visual Studio team. Nothing else to share here yet as I just recently started!

Past Activities

RubyMotion (2011-2017)

In late 2011 I solo-founded, bootstrapped and managed a small startup for almost 6 years. The company's main product was RubyMotion, a commercial toolchain to write cross-platform apps for iOS (plus OS X, watchOS, tvOS) and Android using the Ruby language. I grew the company organically, which was quite challenging: I never did any marketing, with the exception of speaking at conferences, and never raised external funding. At its peak RubyMotion had over 7000 paid customers and employed ~4 people.

Technically speaking RubyMotion is a build system, a REPL, an ahead-of-time LLVM-based static compiler for Ruby, and 2 implementations of the Ruby runtime, respectively for Objective-C and JVM / JNI targets.

I started RubyMotion as a fork of MacRuby to support iOS plus static (AOT) compilation, and eventually launched it in 2012 (and made it to an exclusive story in ArsTechnica). OS X support shipped in 2013, and Android support, which required a brand-new runtime implementation (and a lot of other things!), in 2014.

I wrote all significant features over the years and then maintained it with a small team of programmers I carefully recruited and managed. My favorite hack as far as I remember was creating a REPL that would evaluate code on connected devices, using a remote-JIT strategy.

I organized 3 RubyMotion conferences: one in Brussels in 2013, one in San Francisco in 2014, and one in Paris in 2015, each one featuring over 20 speakers and welcoming 100-150 attendees. I also helped organizing and teaching several trainings over the world on the platform.

In 2015 I received an award from Japan's Shimane Prefecture Governor and Ruby's original author Yukihiro Matsumoto for my work with RubyMotion during a ceremony in Tokyo.

Lately I began to realize that I didn't enjoy doing business development and that I also wanted to do something else, as I had been working on the same codebase for over a decade. I eventually decided to sell RubyMotion to one of its most popular user, who promised to continue its development. RubyMotion has certainly been a rewarding journey for me, both financially and educationally, but it was time to move on.

Apple (2004-2011)

Before doing RubyMotion I was employed by Apple for 7 years as a Senior Engineer, where I worked on iCal, iLife (as well as something else), then on all releases of OS X from Tiger to Mountain Lion at the CoreOS / BSD (UNIX) level.

I was also the author and lead developer of MacRuby, Apple's implementation of Ruby. MacRuby started as a fork of Ruby 1.9 which I hacked to use the Objective-C runtime to create the Ruby object model, then I integrated the (now defunct) Objective-C garbage collector, rewrote basic classes to use CoreFoundation and ICU, and eventually replaced the bytecode virtual machine with a new one based on LLVM (as a JIT). Ultimately, the only piece I didn't end up rewriting from the original Ruby interpreter codebase was the language parser.

MacRuby started as a pet project during the 2007 Christmas break, and eventually I was authorized to open source it, work half-time on it and speak publicly about it at conferences. At one point it even got slashdotted. Lion shipped with core functionality written in MacRuby.

I also created RubyOSA, an Apple Events bridge for Ruby. I was also a developer and later maintainer of RubyCocoa, an Objective-C bridge for Ruby which eventually shipped in Leopard (problems due to the nature of the bridge led to the creation of MacRuby as a replacement).

Around that time I also created the BridgeSupport infrastructure as a way for non-C languages to better integrate with the native Mac APIs. BridgeSupport was used by RubyCocoa and MacRuby, but it was also adopted by bridges for other languages (Python, Smalltalk, JavaScript, etc.) and shipped in Leopard. In Lion, it was rewritten to use the clang frontend. Several years later BridgeSupport proved to be a critical piece of RubyMotion as well.

I enjoyed very much working at Apple. I was lucky to join right before it became the giant that it is today, and to watch it grow from the inside. I got to work on both visible (reviewed by Steve) and hidden (developers only) stuff. Eventually I left as I wanted to try doing a startup.

...

Before joining Apple I worked on IDA Pro for a few years, more specifically on several disassembler modules (I was told they are still in use). I also worked on a picture recovery solution, and very modestly contributed to the GNOME project on my free time (in addition to Ruby-GNOME2 which I then used to write a book collection manager).

I graduated from college in 2002 with a Bachelor in Computer Science and wrote a simple host-based IDS as my final year project.

I discovered programming with BASIC the day my mom brought a C64 back home, I believe I was 8. As a teenager I discovered the C language at the same time as Linux (I wasn't popular at school as you can guess).

Speaking

I frequently speak at programming conferences and love to meet other programmers. Here is a map of the countries I was incredibly lucky to visit in order to give a presentation.

If you are organizing a conference and find me interesting, drop me a message, I would love to come and speak if my schedule permits it!


***

About Me

I currently live in Liège, Belgium, the city I was born in, with my wife, son and cat. In the past I lived in Paris, France and Silicon Valley, California.

As my surname suggests I am Italian, however my native language is French as I was educated in Belgium. I own both citizenships and as a first-generation immigrant I don't feel that I belong to a specific country, but I somehow do feel European. I'm also attached to France and its culture, being a French speaker and having married a French person.

Interests

My main interests include spending time with my close family, programming computers (who would have guessed?), reading science-fiction, listening to classical music, traveling, cooking, sleeping, pretty much anything related to Japan and its culture, "retro" (ex. NES) video games, making awkward jokes, playing devil's advocate, and appreciating the small pleasures of life.

My favorite programming language is Lisp (surprise?), my favorite StarCraft race is Zerg (used to be Protoss), my favorite composer is Sergei Rachmaninoff, my favorite author is Philip K. Dick (but my favorite science-fiction novel is Dune), my favorite city is Tokyo, Japan, and my favorite beer is Orval. I was sadly born with only 10 fingers so my favorite text editor is Vi(m). My favorite web site is Wikipedia.

Since 2004 I have been desperately trying to learn Japanese.

Since 2010 I have been working on my own programming language. I only get to work on it during holiday breaks, but it's getting there. Don't expect to see it tomorrow, though.

Since 2017 I became essentially vegetarian, for health reasons.

lrz?

My Internet handle is lrz, a 3-letter contraction of my Italian name (Lorenzo) that I chose when I was playing (probably too much) arcade games as a teenager and had to file something as a score name.

It's definitely not related to the Leibniz Supercomputing Centre as I'm often asked (even though that place looks pretty awesome).


***

Contact

Need to contact me? My email address is lrz@ this domain (I don't like spam either). I read all my emails but if I don't reply after a week feel free to send me a reminder.

If you have my phone number please don't use it, I don't like much talking over the phone. I much prefer email.

Alternatively you can send me a message over Twitter.