About Me

Hello, my name is Pierre Chapuis, and some people call me catwell, both online and offline. I live in Paris, France.

I am a software engineer with a T-shaped skill set, which means that I am both a generalist and an expert in a specific field (Distributed Systems and Algorithms). I have a Network Engineering degree from a French Grande École and an MSc in Distributed Systems from a British University, but my interest for computers and programming started way before that (in 2000, at age 11) thanks to Linux and the Open Source community.

I enjoy working at startups, on their core product. My main defining trait is what Werner Vogels calls a strong sense of ownership: the software I write and the systems I design are important to me, and I will always go the extra mile to make sure they are running well. I never merely implement specifications; I always make choices that take into account the needs of customers and the strategy of the company.

From 2010 to 2013, I worked at Moodstocks, a startup specialized in image and object recognition on mobile devices. I was their first long-term employee and worked on many things. I left in December 2013; Moodstocks was later acquired by Google in July 2016.

Since January 2014, I work at a startup called Lima on a distributed filesystem. I currently lead the core engineering team, and I am the software architecture go to person for the whole company.

Selected skills

Distributed Systems and Algorithms

My main field of expertise is writing distributed software, more precisely replicated filesystems and databases.

What first got me interested in the topic was a conference talk (in French) by Benjamin Bayart at Libre Software Meeting 2007, entitled "Free Internet or Minitel 2.0?". I went on to study Network Engineering, and got my MSc in Distributed Systems (at the time called "Grid Computing") in 2010.

At Moodstocks, I got to apply those skills to the scaling of the core image search engine, as well as to some Web crawling-related code. Later on, I created a distribution mechanism for image signatures, which ended up being generalized to all kinds of mobile data and sold as a separate service called Winch (see those presentations). I also started to get interested in CRDTs.

At Lima, my main job is designing and maintaining a distributed filesystem, which is the core of the product.

Systems Administration

I installed my first Linux distribution - Red Hat 6.2 - at age 11, after Windows 98 crashed one too many times. It got me introduced to the world of Open Source software and Unix systems.

While I was a student at IMT Atlantique (then Télécom Bretagne), I joined and became the president of the school's student network association. Think of it as some kind of mini-ISP, providing Internet access to hundreds of students and services such as email and Web hosting to many more.

At Moodstocks, I was responsible for the whole Cloud-based production infrastructure: not only did I write most of the code that was running on those servers, but I was responsible for deploying and maintaining it too. To achieve that, I had to make everything as simple, reliable and automated as possible.

At Lima too, we do not have a dedicated operations team. Me and another developer on my team share administration duty.

A (non-exhaustive) list of tools and software I have significant experience running in production includes: CentOS and Arch Linux, Bash, Flask / Gunicorn, Postfix, nginx and OpenResty, Redis, beanstalkd... I also know the AWS cloud infrastructure stack pretty well, given that we used it at Moodstocks and Lima.

Research and Development

I am the kind of person who enjoys reading not only technical blog posts, but research papers as well. I sometimes go as far as implementing them for fun. Of course, having worked in the fields of Computer Vision and Distributed Filesystems, this has also been a significant part of my professional life for the last decade.

In fact, even though I enjoy changing roles from time to time, my idea of the perfect place for me is leading a small R&D team dedicated to finding great ideas from Academia, implementing them, improving on them and applying them to real world problems.

That being said, I also know to stick to tried and true solutions when they do the job well enough!

Software and Systems Architecture

I was almost always more interested in programming in the large than programming in the small. I think more in terms of systems and protocols than data structures and algorithms. There is a reason my blog has been, for years, called Separate Concerns.

At Moodstocks, my focus on scalability made me contribute a lot to the systems architecture and the definition of the various services. At Lima, working on core software - and on replication in particular - had the same effect.

In November 2017, my role at Lima changed slightly, and I became the reference for software architecture decisions across the whole company, not only the core team that I am leading. Collaborating with developers who work on software I understand less, with languages and technologies I am sometimes unfamiliar with, is a challenging but nonetheless interesting experience.

Some of my guiding principles regarding software architecture and design are:

Understanding user behavior and business metrics

I am a little bit worried about the current trend of software engineers thinking users are someone else's concern. I get why the job is becoming ultra-specialized those days, but the fact that there is someone with the title "UX designer" on a team does not preclude everyone else from thinking about what they are doing.

At IMT Atlantique, I worked for 1.5 years working with an HMI research lab (LUSSI) on multi-touch multi-user tabletop interfaces for the military (using the MERL DiamondTouch). My job was mostly writing code, but I got to work with great HMI experts such as Gilles Coppin and François Legras (who went on to found Deev Interaction). Today, I still like to read a few design books to keep up.

At Moodstocks, I designed the public API that customers were using to search and index images. I also had the idea for an example application, Moodstocks Notes, which attracted a bit of attention (TechCrunch, Mashable)... Most importantly, I started getting very interested in user metrics and how to analyze them. I learned about AARRR and cohort analysis and applied them to various parts of the business. I kept doing that at Lima as well.

The Lua programming language

I am not one of those "Language X" programmers. Those days, I write most of my code in C, Lua and Python (in that order), but it has not always been the case. Learning a new programming language does not trouble me; on the contrary, I usually enjoy the process.

Lua does hold a special place in my heart though. I started using it in 2007, because I wanted to learn in depth how a major interpreter works, and the Lua code base was way more tractable than Python. I have discovered a lovely, under-estimated, very cautiously designed language that has way more use cases that one would think.

Since then, I introduced Lua at the two companies I worked for (Moodstocks and Lima), got pretty involved with the community, published a few Open Source modules, attended and spoke at Lua Workshop, co-hosted the Lua track at FOSDEM twice and co-authored a book in French.

[ home ]