Skip to content

CV

My Ideal Job

  • Strong technical culture
  • High impact
  • Remote first

Experience

I started writing code in 2000 in middle school and I haven’t stopped since.

I care deeply about 2 things: my community of engineers, and our customers. The former shows on both the body of tools and APIs I’ve created or improved, as well as my community initiatives over the years. The latter shows in how I’ve always pushed to do the right thing by our customers, striving to find creative ways to ship faster without compromising on the customer experience.

Before joining Square, I was already fairly good at writing readable code, sharing knowledge, doing deep technical dives and thinking about customer experience. At Square, I greatly increased my skills in multiple areas, such as the breadth and depth of my technical knowledge, the impact of what I share with the world, my ability to bring people together in an urgent crisis, and my ability to influence a large organization (including external companies) and shift behaviors.

Principal Engineer - Block

[ : 2022 - Present] [ : San Francisco -> Lyon]

In early 2022 I wrote the story of an investigation into the performance degradation of Square’s fork of the Android OS (Squid): “Diary of a Slow Squid” (learn more in this public talk).

Diary of a Slow Squid

This convinced Square’s leadership that we needed to invest in performance at both the app & the OS level, which led to funding and quickly scaling our Mobile Performance & Reliability team from 1 engineer to 8 engineers, a PM, and a data analyst. I became the go-to person for everything performance: I built tooling inside POS, created guides and dashboards now used by teams across all verticals (performance investigation, profiling, Android Vitals, interaction latency, benchmarking), and taught engineers across the organization how to investigate and fix performance issues. I also ran a blog series on Android performance in production that reached 10K+ views and was featured four times in Android Weekly.

After a multi-hour Square outage in September 2023, we realized we lacked the metrics to correctly evaluate customer impact. Ben VandenBos started an initiative to establish success rate metrics for all Critical Jobs across Square, but it initially did not encompass what sellers experienced inside POS. I spotted the potential in a hackweek project on client-side instrumentation, co-opted it, and drove adoption across the codebase to ship User Journeys to production within weeks — filling that gap for POS. The approach was later adopted by the Dashboard web app and by Cash App.

I convinced the Perfetto team at Google to extend their Kotlin tracing API from Android-only to JVM, enabling tools that can automatically analyze traces at scale. I also wrote a guide that led the Jetpack Compose team at Google to turn on LeakCanary in their CI UI tests — they fixed a number of leaks, including one tied to a Kotlin coroutine bug I helped investigate.

In 2024 I led as engineering DRI for a cross-org, cross-platform mobile performance squad that wrapped up in H1 2025 with significant improvements across the board, including a meaningful ANR rate reduction.

Latency improvements

At the end of 2024 I built infrastructure to automatically capture and upload heap dumps on OutOfMemory crashes in production. I also extended LeakCanary with a heap dump sanitization utility that strips primitive arrays and PII before upload, making safe production heap analysis at scale practical.

Within Block, I initiated a group trip to Droidcon NYC 2025 and led the initial budget push — we sent 55 engineers across Block.

Droidcon NYC (Source)

I explored the future of mobile observability at Block and ran a Bitdrift trial. After a successful pilot and an ADR-driven vendor evaluation, I shaped Square’s mobile analytics and observability strategy and drove the creation of a dedicated observability squad, which unfortunately did not survive the 2026 RIF apocalypse.

Staff Engineer - Square / Block

[ : 2016 - 2022] [ : San Francisco]

Summary

Body of Work

In February 2016, I joined the new Developer Platform team as its Android lead. A few months later we released Point of Sale API, an API that used app links to preload POS with a target amount.

In March 2016 I started organizing EngTsq (“Engineering Town Square”), a monthly internal lightning talk series: one hour, 5 lightning talks across all of engineering, consistently drawing 150+ engineers. Over five years, roughly 200 engineers gave their first tech talk in front of a large audience.

EngTsq

In August 2016 my team was put in charge of building the Mobile Payments SDK (an SDK for connecting to the Square reader) after two previous attempts by other teams had failed — one trying to extract our spaghetti reader code, another trying to rewrite it from scratch. Having released the Point of Sale API, I had the idea to sidestep the extraction problem entirely: bundle the entire POS app code inside the SDK and leverage the Point of Sale API from within it.

A team had shipped a "project shoehorn" (to reintegrate a forked app into the monorepo) so I dubbed this "project shoecover"

While not the cleanest approach, it let us build a working POC in one day and ship to alpha customers in one quarter, getting real feedback fast. We released in August 2018 after 1.5 years of private betas. I talked about the technical challenges in AARAWR! Fantastic Bits and Where to Dex Them.

Lunch Testing

In 2018, as several teams were struggling to fill senior Android positions, I partnered with a colleague and worked with recruiters to organize informal Android dinners: a mix of Square engineers and candidates, geek-talking about Android over dinner. The results exceeded expectations — in one case the recruiter told us that closing a single candidate justified the cost of ten more of these events.

In September 2018 I ran a hackweek project building on the hooks we had created for the Mobile Payments SDK to prototype a push-based extension. This proved that building a Square Terminal API was within reach, and the Terminal API team was formed a few months later.

Terminal API

In January 2019 we released the In-App Payments SDK. Our team built it really fast and really well, as a high functioning team with almost a hive mind, knocking out bugs and features left and right. This isn’t just an SDK, it’s a delightful experience. We carefully crafted every detail, from the shape of (Kotlin first) APIs, to the SDK UI (only XML vector drawables, advanced canvas drawing, responsive animations with ConstraintLayout), to the code of the sample app (examplary example code!), to the structure of the quick start guide.

In March 2019 I joined the Developer Empowerment organization to take on a new challenge, initially focusing on the reliability on Square mobile apps and SDKs. Unfortunately I had to put that effort on the backburner as our organization needed folks to lead teams. From August 2019 to April 2020, I led the Isolated Development team as TLM, growing it from 3 to 6 Android and iOS engineers. Our goal was to increase developer velocity by decoupling the POS monorepo into smaller, independently iterable pieces. We drove organic adoption of a new module structure with explicit boundaries — by March 2020, 67% of our 1,650 Android modules had adopted it — and grew from 7 to 50+ demo apps on Android and equivalent on iOS. These demo apps were 11x faster to build, which explains the fast adoption (even CashApp adopted them after seeing our results).

We also rolled out module ownership across both iOS and Android repositories, with every module owned by exactly one team, which became foundational for crash triaging and cross-team collaboration. I also nudged Ralf Wondratschek to explore and open source Anvil, a Dagger auto-configuration library that became a game changer for multi-module Android development and was adopted by Dropbox, Slack, Snap, Tonal, and others.

In May 2020 I moved back to an IC role. I started by migrating the entire POS codebase to AndroidX — 2.8K files and 5K lines of code changed in a single after-hours PR — unblocking POS from updating dozens of Android ecosystem dependencies that had stalled for over a year.

I tackled our UI test flakiness problem by building flake monitoring dashboards and tooling to run tests directly on Firebase, dramatically speeding up iteration. While improving Espresso error messages during this work, I reused view hierarchy printing code I had originally written in 2014 inside POS — code that had since become the basis of my interview question. In 2020, Zach Klippenstein and I open sourced that code as Radiography. Similarly, Curtains grew out of my investigation into window callback hooks while chasing crashes. I also built and evangelized the foundation for network and UI performance monitoring across Square mobile.

I discovered that our analytics event library was silently dropping at least 35% of events from at least 30% of active devices. A simple queue size increase from 256KB to 2MB brought the drop rate down to ~10%. I also found that three Android app targets had never had server-side analytics logging enabled at all.

I invested deeply in understanding the crash triage process by working closely alongside our RelOps team, then redesigned it end to end. The results were dramatic: average resolution time dropped from 60 to 21 days, the resolution rate improved from 68% to 89%, and the crash rate fell from 0.47% to 0.31%.

Starting in 2021 I drove several high-impact performance investigations. I surfaced a major regression on Square Register and Square Terminal that traced back to configuration bugs in the Linux kernel of Square’s Android fork — bugs that had already shipped to customers without anyone at Square noticing, and might otherwise have led to costly hardware spec upgrade.

Latency improvements

Debugging hardware is something else…

Hair Dryer

I unblocked the launch of a major POS UI redesign (introducing a nav bar) that teams had worked on for 1.5 years without migrating any UI tests — I figured out a path to migrate 3,000 UI tests to the new UI in just a few days. I extracted our production performance tracking code into square/papa (talk), which also enabled Cash Android to build its performance dashboard much faster than planned. And I built and open sourced square/logcat in September 2021, after production logging mistakes had caused significant performance issues in POS.

Promo to Principal Engineer

In 2022 I was promoted to L8 (Principal Engineer).

Software Engineer - Square

[ : March 2013 - 2016] [ : San Francisco]

How I ended up at Square

While working for Siine, I had the opportunity to interview at Google in Paris. I barely did any prep and flunked the interview: the recruiter told me the feedback was “good technical skills but lacking cognitive skills”. My pride was hurt, so from then on I started paying more attention to algorithms and data structure implementation details. That helped a ton with my next step!

Introduction to Algorithms

With AndroidAnnotations (a framework that reduced code boilerplate), I had built the first Android annotation processor. I had tried to add dependency injection support but wasn’t happy with the result, so when Square released Dagger, I filed a GitHub issue on dagger/square asking for a plugin architecture. Jesse Wilson responded over email: “are you interested in coming to work for Square?”.

Plugin architecture ?

Square flew me from Paris to San Francisco for the interviews, and I also used that opportunity to interview at Facebook. Both companies had interviews that were a full day of mostly leet code. However, on the Facebook side I met 20-something engineers I’d never heard of, who talked about reimplementing the feed with OpenGL, and we were coding on whiteboards. On the Square side, we were coding on a laptop, and I already knew the names of almost everyone that interviewed me (Jake Wharton, Jesse Wilson, Ray Ryan, and even the CTO Bob Lee). I knew I had found my people, and I moved to the San Francisco office to work with the best Android engineers.

Square office

Body of Work

I have contributed to almost every release of Square Point of Sale for Android since I joined in March 2013.

In college, I didn’t pay attention to signal processing courses, thinking I would never need that… I was wrong! Three months after joining Square, I was put in charge of integrating the code processing the signals sent by the new Square Reader. The processing code had been written in Matlab and auto translated to C, and was a performance disaster. This two week integration turned into a 6 month project where I also ended up redesigning our reader data pipeline.

Square Reader

In August 2013 I led a HackWeek project: SQUA(RED), a special red edition of the Square reader to fight AIDS. Our hardware team turned that into a real product.

Another fun HackWeek project of mine worth mentioning: Swipey Bird, a Flappy Bird clone were you swiped a credit card to make the bird fly. There was a 250ms delay between a swipe and the app picking up the reader signal, which made this game real hard!

Swipey Bird

In March 2014, I started leading the engineering effort to bring Square POS to Android Tablets. None of the iPad work had been documented, so this involved a lot of reverse engineering of expected product behavior from sources. While the iPad & iPhone implementations were wildly different, I made sure to implement new features no matter the screen size, as I strongly believed features should be ubiquitous.

In August 2015 I wrapped up my work on the Android Tablets team, which had grown from 1 to 6 engineers. We were done catching up with the iPad and started focusing on building new features. Our work was the foundation for the Square Register.

Square Register

In Q4 2015 I worked on a white label loyalty app (the pitch: any seller can get their own Starbucks-like app). Small team, high throughput, we built something great really fast. Too fast actually: by the time we were ready to ship, executive leadership learnt about the project and told us not to start the project: there was too much app store risk and product risk, right as we were going through IPO. While the app was killed, I also used that experience as a technical experiment, playing with architecture & libraries that I succesfully brought back to Square POS.

Whitelabel app

Promo to Staff Engineer

In 2016 I was promoted to L7 (Staff Engineer), for growing the Android Tablets team, and numerous technical feats such as creating LeakCanary or safely migrating the entire codebase from Dagger1 to Dagger2.

Lead Software Developer - Siine

[ : September 2011 - January 2013] [ : Barcelona & Paris]

The CEO of Siine reached out, and after two years of consulting work, I decided it was time to have fun and work on more impactful projects. The small founding team had built a fun shortcut-based keyboard, raised 800K€, and hired several senior engineers in Barcelona (and me working remote from Paris). 6 months later, all the engineers had left but me. I quickly rebuilt the whole app on top of the AOSP keyboard so that we could focus our efforts on building new UX, cleaned up our build process, added feature toggles, CI, and automatic releases. We were told that we could be featured on the PlayStore if we redesigned the entire app to Android ICS’s style within a week… so I crunched & did that. We were featured and went from 5K to 1M downloads in a few days, which helped with raising the next round. I distinctely remember being introduced to investors as “the tech lead”, when in fact I was also the sole engineer.

Siine

During my time at Siine, I released the Siine Keyboard, RefereePro to empower soccer referees, and PhOCD, a one day hackaton experiment.

Software Engineer - bfinance

[ : November 2010 - September 2011] [ : Paris]

After a year at JCDecaux, I wanted to do less driving. Excilys found a nice new client for me: bfinance, a financial services firm.

It was a challenging time to join the team: all the software engineers had just left, I was now the sole developer of two complex tender managing applications that were critical to the business. The first one is used for cash management analysis, and the other for financing and banking relationship analysis.

These applications had been developed with a team of 6+ software engineers over several years, who had all quit at once after disagreeing with executive leadership. In order to keep potential regressions under control, I introduced continuous integration, a clean release process, and frequent small releases.

I also created AndroidAnnotations as a side project, initially as a toy after seeing a talk on Java 6 annotation processing.

Software Engineer - JCDecaux

[ : November 2009 - November 2010] [ : Paris]

JCDecaux liked the Android prototype I had done for them and I came in for a 3 months contract to finish the app. The food was great, so I ended up staying a year and contributed to many other projects.

I took over the REST endpoint that talked to the mobile apps, a Tomcat / MySql app that was consuming web services. It was a stepping stone for what later became JCDecaux Open Data API.

I also wrote their first GWT app, a map with a live overview of the state of the Velib stations for supervision and support purposes. You can see it here.

Software Engineer - Excilys Group

[ : August 2009 - September 2011] [ : Paris]

After my engineering internship at Excilys, I got a full time offer.

Over a two year period I worked as a consultant for two clients: JCDecaux and bfinance.

I also managed Excilys technical blog, gave Android & GWT trainings, and created a widely used Open Source library for Android: AndroidAnnotations.

Engineering Internship - Excilys Group

[ : February 2009 - July 2009] [ : Paris]

After writing software for Excilys during college, I decided to get an internship.

I worked with skilled software engineers and learned a lot about Java.

I discovered Android, had fun with it, and soon enough I was creating a prototype app for JCDecaux Velib maintenance team.

Side projects

LeakCanary

[ : May 2015 - Present] [ : San Francisco]

LeakCanary is an Open Source memory leak detection library for Android. We leveraged it to reduce OutOfMemory crashes in POS by 90% in 2015, then by another 60% since 2019. Adopted by most professional Android teams worldwide — 140K monthly downloads, 7K monthly documentation visitors — it has also found memory leaks in the Android Framework itself, with fixes benefiting millions of apps and billions of devices in newer Android versions.

Radiography

[ : 2020 - Present] [ : San Francisco]

Radiography is an Open Source library for pretty-printing Android view hierarchies. It grew out of work improving Espresso error messages while investigating UI test flakiness.

Curtains

[ : 2021 - Present] [ : San Francisco]

Curtains is an Open Source library providing a structured API for hooking into Android window callbacks. It grew out of crash investigation work.

square/logcat

[ : 2021 - Present] [ : San Francisco]

square/logcat is an Open Source Android logging utility built after production logging mistakes caused significant performance issues in POS.

square/papa

[ : 2021 - Present] [ : San Francisco]

square/papa is an Open Source library for Android production performance tracking, extracted from POS instrumentation code. It enabled Cash Android to build its performance dashboard much faster than originally planned.

Call For Paper committee - Devoxx US 2017

[ : October 2016 - March 2017] [ : San Francisco]

Call For Paper committee - Devoxx France 2013

[ : October 2012 - April 2013] [ : Paris]

The Devoxx team contacted me for my mobile and Android skills, and my interest in the Java community.

I helped organizing Devoxx France 2013 (2000+ attendees) and selecting talks as part of the Call For Paper committee.

AndroidAnnotations

[ : December 2010 - December 2012] [ : Paris]

AndroidAnnotations is an Open Source framework that enables Android developers to focus on their business problem rather than the plumbing that connects components and systems.

I presented it at FOSDEM 2012, PAUG, Devoxx France 2012, OWF 2012, Devoxx 2012, LyonJUG.

I created and maintained this project on my free time. Excilys contracted with me to maintain it from September 2011 to December 2012.

VuzZz

[ : February 2012] [ : Paris]

VuzZz was created during the Android DevCamp Paris 2012, a 3 day hackaton with 10 competing teams. After 48 hours of intense non stop hacking, our team finished first. VuzZz downloads geolocated data from several Open Data sources and then gives a note to a given address based on 50 criteria grouped in 6 categories (culture, transport, etc). The perfect tool for finding your next apartment!

Voxe.org

[ : September 2011 - September 2012] [ : Paris]

Voxe.org is a neutral open platform to compare political programs. I joined this non-profit organization on my free time to create the Android app.

2H4U

[ : 2006] [ : Paris]

2H4U

EKC

[ : January 2003 - December 2004] [ : Paris]

With a team of 20 passionate people, we created a 3D RTS game using DarkBASIC on our free time (I was in High school).

2H4U 2H4U 2H4U

Education

Education is what remains after one has forgotten everything he learned in school.

INSA Rouen

[ : Master’s degree, Computer Software Engineering] [ : 2004 - 2009] [ : Rouen, France]

The INSA Rouen is a French School of Engineering. I earned a Diplôme d’Ingénieur en Architecture des Systèmes d’Information.

ASI : Architecture des Systèmes d’Information

During my last semester I led 9 students for 6 months on a software project for Excilys. We worked 20 hours a week to create a functional testing tool (built on top of FIT) that would enable functional test driven development.

We used agile practices (Scrum / XP) and were certified ISO 9001-2000. That means walls covered with post-its, a lot of paperwork, and a little bit of coding.

Kungliga Tekniska Högskolan

[ : Information & Communication Technology] [ : 2008] [ : Stockholm, Sweden]

My last Engineering semester of Engineering School was in Stockholm, Sweden, in the Royal Institute of Technology. I studied ICT - Information & Communication Technology.

I took classes on Network Security (amazing class), Software Design (UML mi amor) and Entrepreneurship (it’s the team, not the idea).

I also learnt how to make a really good Tortilla de patatas.

Lycée Albert Schweitzer

[ : Baccalauréat scientifique mention Bien] [ : 2001 - 2004] [ : Le Raincy, France]

I was in a European class, which meant more English courses.

On my free time, I learnt a lot about coding by contributing to a 3D RTS game. My last year practical work was on generic algorithms, I wrote a somewhat working implementation for the traveling salesman problem, in DarkBasic (a Basic with 2D commands).

Patents

  • REPROGRAMMABLE POINT-OF-SALE TRANSACTION FLOWS
    • US10692055, US10762480, US10496973, US10872320

Certifications

  • Functional Programming Principles in Scala
    • Coursera, November 2012
  • Sun Certified Programmer for the Java Platform, SE 6
    • 91%, License CX-310-065, November 2009
  • TOEIC
    • 940, 2008
  • First Certificate of Cambridge
    • Grade B with distinctions, 2004