Laurent Sansonetti's Home Page

Hi! My name is Laurent! Welcome to 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 with 20+ years of experience who accidentally specialized in system development, more specifically in the design and implementation of tools for other programmers (ex. programming languages, runtimes, compilers, bridges, toolchains, etc.). This said, I'm also quite eclectic and have been working on other problem spaces too (ex. consumer apps) with a variety of programming languages and technologies. But I am however not a Web programmer / designer as you can already see.

(Even though all my job titles included the word "engineer" with various glorification prefixes I consider myself a programmer first and foremost. I just enjoy programming computers and I don't think that anything I'm doing is even remotely related to either science or engineering. I also can't believe we are getting paid to do this.)

Although a lot of the work I have done has been proprietary, I'm a strong open source advocate, and I always try to push for it when it makes sense from a business perspective.

I have been working remotely since a decade or so. While I don't mind visiting corporate offices periodically and meeting people face-to-face, I much prefer to work from home (or wherever I happen to be).

Pointers

Current activity

After enjoying a short break I joined Nvidia in mid-2022, where I am working on Omniverse. I'm quite excited to work on something new and experience a different work culture at the same time. More details to come later!

Past activities

Apple (2018-2022)

After a short sabbatical I re-joined Apple in late 2018, more specifically the iWork organization.

Within that team I created and I led the development of a dedicated toolchain that allowed iWork engineers to easily port existing native code, written in C++/Objective-C, to the Web platform, using WebAssembly as a target. The toolchain is driven by clang, uses the LLVM WebAssembly backend, includes custom compiler/linker passes, a custom Objective-C runtime (fully static), a Foundation layer, and finally a TypeScript bridge which allowed native code to be reused in the JavaScript world. Features using the toolchain started shipping since April 2020 / iWork 10.0, and I was also responsible for one of them.

After that I worked on several things that have not shipped at the time of this writing, so I can't share details, but it was very cool stuff. I enjoyed my time there (and eventually got bricked in late 2021), the things I did and the people I worked with, but as the years went by it was time to move on to work on something else.

Microsoft (2017-2018)

I was shortly employed by Microsoft working for the Xamarin team in the Developer Division.

I wrote a minimalist yet fully compliant CSS Flexbox implementation, as a single .c file with no dependencies, and a C# port of it eventually shipped into Xamarin Forms at the Build 2018 conference. After that I started an effort to bring C# to WebAssembly with a static compilation approach based on the LLVM tooling and the Mono AOT compiler, then I worked on prototyping a new project.

I left Microsoft after just 1.5 years but I kept many friends there. I'm especially grateful to have been able to learn many things about the Microsoft developer ecosystem while working for/with Miguel de Icaza, one of my personal heroes!

RubyMotion (2011-2017)

In late 2011 I solo-founded, bootstrapped and managed a small startup named HipByte 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. RubyMotion has been used to create many high-profile apps that have been downloaded million of times over, some of them were even pre-installed on demonstration phones in Apple stores.

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. The build system was open source and the compiler and runtimes were kept proprietary for commercial reasons.

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 (which was necessary for Android).

I co-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, I will always be grateful for all the things I learned and all the awesome people I met, but it was time to move on.

Apple (2004-2011)

Before doing RubyMotion I was employed by Apple for 7 years. I started in the Paris office working on iCal and something else that never shipped, then I moved to Cupertino to join the Core OS BSD team (managed by Jordan Hubbard) and I worked on all releases of OS X from Tiger to Mountain Lion.

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 then almost full 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 and open sourced RubyOSA, an Apple Events bridge for Ruby. I was also a developer and later maintainer of the open source RubyCocoa project, 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).


***

About me

I currently live in the Condroz region of Belgium with my wife, son and cat. In the past I lived in Paris (France), San Jose (California) and Liège (Belgium), the city I was born in.

As my family name 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 indirectly attached to France and its culture, being a French speaker and having married a French person (also I love their cheeses).

Our son was labeled autistic quite early until we were able, many years later, to figure out the real issue: a mutation of the USP9X gene during pregnancy. Raising a kid with a disability can be challenging at times but it's also extremely rewarding. I would not change anything, and as a matter of fact I feel like he's teaching me a lot more than I do for him. (If you read this text after a Google search and have a family member with the same pathology please connect! It's a small world!)

Interests & tidbits

My main interests include spending time with my close family, programming computers (who would have guessed?), reading books (I try to read on a daily basis, most always fiction, and will usually finish a book per week), listening to music (I especially like metal, classical and electronic music), workout out (I enjoy running, rowing with an indoor machine and bodyweight exercices), 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, my favorite StarCraft race is Zerg, my favorite video game franchise is Fire Emblem (The Elder Scrolls being a close second), my favorite composer is Sergei Rachmaninoff, my favorite author is Haruki Murakami, my favorite city is Tokyo, my favorite cuisine is Indian and my favorite beer is Orval. I was sadly born with only 10 fingers so my favorite text editor is Vi(m) and not Emacs. My favorite web site is Wikipedia.

Although I spent 12 years in catholic schools, I have been an atheist as early as my first days of catechism. I do envy those able to believe in religions however, as I find the mysticism, mythologies and layers of ceremony built around them quite fascinating. The Bible was a nice read too (although I preferred The Lord of the Rings).

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.

On March 2016 I was returning from a trip in India and sitting in the Brussels' airport lobby when 2 bombs exploded (I believe I saw the second one detonate, although my memories of that day are very fuzzy). I left the airport uninjured but it took me a few weeks to be able to leave my home. Up to this day I am still feeling anxious every second I have to spend in pre-security airport lobbies.

Since 2018 I switched to a low-carb diet and also introduced intermittent fasting. Originally tried as an experiment after a recommendation from a good friend, I immediately noticed so many improvements and health benefits that it is unlikely at this point that I will go back to my previous lifestyle. As of 2020, I'm fasting between 18 and 20 consecutive hours each day and still totally avoiding carbs as much as possible (although I will have an occasional cheat day from time to time.

In late 2022 I started exercising more seriously with a mix of running, indoor rowing and strength training. I log most of the geeky details of my workouts on the amazing Runalyze platform. I try to exercice on a daily basis when possible.

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 or other text-based systems of conversation.