~rom1v/blog { un blog libre }

Curriculum vitæ

Education

  • Engineer in Computer Science and Applied Mathematics (ENSEEIHT, France, 2008)
  • University Diploma in Technology in Computer Science (University Institute of Technology of Le Havre, France, 2005)

Work experience

Videolabs (since 2018)

https://videolabs.io/

Kyber

The Kyber project provides multi-platform low-latency video and controls streaming. Watch this video presentation by j-b.

I developed initial prototypes for VLC low-latency and a Rust WASM client, then I designed and implemented the video and audio protocols (with and without forward error correction), libraries and abstractions over QUIC/WebTransport (among others).

C, Rust, WASM, QUIC, WebTransport, FFmpeg, VLC.

VLC

Everyone knows VLC.

I have merged hundreds of commits. Here are some of my contributions:

C, C++, OpenGL.

rav1e

Rav1e is an AV1 encoder written in Rust, developed by Mozilla/Xiph.

I implemented tile-based encoding to enable parallel processing: article.

Rust, AV1.

Genymobile (2013 → 2018)

scrcpy

I developed scrcpy, an open source application to mirror and control Android devices.

I keep developing and maintaining it. It has become quite popular (+100,000 stars on GitHub, ~10,000 downloads per day).

C, Java, Android, FFmpeg, SDL, libusb.

Reverse tethering app

I developed gnirehtet, an open source tool that allows Android devices to use the internet connection of the computer they are connected to.

I first wrote it in Java, then rewrote it in Rust to get a native binary.

Java, Rust, Android.

Complete overhaul of a C++/Qt application

For over 2 years, I worked on Genydeploy, first for its complete overhaul (v3), then for developing new features (scrcpy and gnirehtet have in fact been started as part as Genydeploy).

C++11, Qt5, Java, Android.

Pepper robot API

For Softbank Robotics (previously Aldebaran), I designed the first Android API of the Pepper robot.

I first implemented Java/JNI bindings to expose C++ promise/future from their libqi library. This part is open source : libqi-java.

I then developed a higher-level Android API that exposes the robot’s features.

C++, Java, JNI, Android, NDK, AOSP.

Set-top box

I worked on the development of a video system for Android set-top boxes.

I integrated LibVLC in an Android app to play UDP multicast video streams.

I also integrated a tool that enables the playback of UDP multicast video streams with the native Android video player: article.

C, Java, Android, NDK, AOSP, CyanogenMod, LibVLC.

Video system for foosball

For our foosball table at work, my colleagues developed an Android app that automatically counted the points (thanks to sensors connected to a Raspberry Pi).

I developed the video system to replay the goals.

I also wrote a (hacky) tool to delay the video stream by a few seconds: article. This tool has since been packaged for Debian (delay).

C, Java, Android, Bash.

Other client missions

  • I added the first ChromeCast support in the Android app CanalPlay.
  • I integrated video timeshifting in AOSP for ExpWay.
  • I fixed issues on the Android and Android TV apps for Molotov TV.

Java, Android, C++.

AtoS Open Source Center / SmartMobility (2012 → 2013)

Communication over Mesh

Based on the Serval project, I developed an Android app to make Android devices communicate using an ad-hoc network (without any mobile or wifi networks):

  • walkie-talkie between several clients ;
  • text messaging ;
  • geolocation sharing ;
  • file sharing.

I made contributions to the Serval project:

For the development of the walkie-talkie, I developed a simple audio mixing solution, of which I explain the principle in this article.

We also used AndroidAnnotations, where I made several contributions.

Java, C, Android, NDK.

Android apps for car dashboard

When I first started with Android, I developed email and Twitter applications for the tablet integrated into the Renault Zoé car dashboard.

Java, Android.

Logica (2008 → 2012)

I primarily worked on a 3-year project at Sanofi-Aventis to develop a Java/Flex application for molecule search.

Java EE, Adobe Flex, ActionScript.

Other projects

See projects.

Interests

I like programming puzzles (1, 2, 3, 4, 5…) and surprising undefined behaviors.

Problems involving mathematics are the most interesting.

I’m less interested in developing user interfaces, and I’m not good at graphic design.

I use Linux (mainly Debian) on all my computers.

Relevant readings

Here are relevant books I’ve read: