Presentation

You’ve probably come to the right place if you are looking for a dedicated developer. I have been working in 3D Computer Graphics for two years and am now shifting my interests towards Fullstack web development. My main centers of interest are

  • Designing modular and reusable software;
  • Automating redundant (or simply boring) tasks;
  • Harnessing the power of digital tools to complement human-driven processes;
  • Sharing knowledge (through blogging and teaching for example).

Hellville harbour, in Nosy Be, Madagascar

Still attached to my roots of a working-class region in South-Eastern France near Saint-Etienne, I am very grateful towards my present situation. The things I enjoy the most about being a developer are probably

  • the diversity of frameworks and languages;
  • the huge community maintaining an almost inexhaustible amount of resources to be used and to learn about.

Feel free to email me on my personal address for any additional information you might need.

Experience

Since October 2021

Web developer - OCTO Technology

Working there as a fullstack developer. I got involved in OCTO’s skool program and am now looking for a mission in the Lille office.

October 2019 - August 2021

Research engineer - PIRVI

Pôle Interaction, Réalité Virtuelle et Images, belonging to the CRIStAL lab (CNRS, University of Lille). Part of a team of 7 developers working on 3D interactive projects, mostly using VR devices. The team has a diverse range of public collaborations with researchers, artists, and museums. Developers design tailor-made 3D applications such as virtual tools for the exploration of ancient graves in VR, interactive maps displaying 3D cities along with data visualization or VAirDraw, a drawing application of 3D shapes and curves in Virtual Reality. More details can be found on the team website.

January-July 2019

Master internship - INRIA Grenoble-Alpes

3D Sketching in Virtual Reality. Project proposed by the IMAGINE team, about using the user’s 3D strokes from VR controllers (HTC Vive) in order to compute and render 3D shapes.

Rendered results of sketching sessions

It implies mesh generation techniques based on a least-squares approximation of positions and controller orientations, as well as considerations about the initial intent of the user depicted by his gestures. The algorithm was designed with the help of my internship supervisors, implemented in C++ and then tested and debugged thanks to the IGL geometry processing library, as well as Eigen for matrices manipulation and operations. Source code can be consulted and downloaded from this GitHub repository.

July 2017

Volunteer for OLPC France

Village development assitance in Antitorona, Madagascar. Part of the Nosy Komba Project

2017-2018

Wine Analysis club of Télécom Paris

Assisting in organizing wine and beer tastings. I was particulary interested in the beer brewing industry, so I mostly helped for beer tastings.

April-July 2016

Technician - Actemium Rhône-Alpes Agro

Internship in the domain of industrial automatism, followed by a temporary summer contract. Development of a supervision software for a glass sorting factory.

July-August 2015

Production operator - CÉMOI Confiseur

Summer contract in a chocolate factory supplying most of the main french supermarket firms.

Since 2015

Tutor for exceptional students

Mathematics for 6th, 10th and 11th high school grades.

Education

July 2019

Graduated from Télécom Paris

Specialization : Human-Computer Interaction, 3D Computer Graphics, Networks & IoT

August-December 2018

École Polytechnique Montréal

Exchange program with Télécom ParisTech. 3D computation from medical scans, website conception, cybersecurity & physics for Media applications.

March 2018

Politecnico di Milano

Using the Geographical Information Systems (GIS) for the quantitative and qualitative landscape analysis.

November 2017

Universidad Politecnica de Madrid

Physical computing based on Open Software and Hardware Platforms.

September 2016

Student at Télécom Paris

Computer Science engineering. Joined from the parallel admission process.

2014-2016

Télécom Saint-Étienne

Higher National Diploma for studies in all the fields of ICT, Physics, Maths, Electrity and Informatics bases for engineering.

2012-2014

Scientific A-Level

Georges Brassens high-school, close to my hometown

Technical skills

My skills profile in development is mainly related to 3D computer graphics, interactive applications and web-based platforms (front and back-end).

Programming languages

C++11
Python 2.7
Linux Bash
Java 8
JavaScript - ES6
SQL 8
TypeScript 4.2

Frameworks and libraries

OpenGL 4.4
Android 7
Bootstrap 4
Jekyll 3.9
Angular 6
React 16
Django 3.1

Styling and editing

CSS3 / Sass
HTML5

Tools and environments

Ubuntu/Fedora
VS Code
Git CLI
VIM
Linux Shell
This is just a quick overview. Feel free to ask me for more details about any of these assets.

Main projects

These are the most significant projects I've had the opportunity to work on, since 2014. Click on any project title below for more details.

Professional

3D models annotation tool

A tablet web-based application for the annotation of 3D models. It is intended for clothes designers during prototyping sessions : they can draw on clothes using touch interactions and explain what needs to be done on the current prototypes.

I was responsible of the development of the tablet drawing interface, with basic options (color, lines thickness) and navigation around the model.

Technologies : Webpack, ThreeJS, JavaScript ES6

Visualization of 3D hyperbolic spaces

A web-based application for the exploration of hyperbolic spaces from inside. The transform from the cartesian to the hyperbolic space is done using vertex shaders.

I was part of a pair with one of my PIRVI colleagues for this project.

Technologies : ThreeJS, JavaScript ES6, GLSL

3D buildings generation module

3D buildings generation and rendering from GeoJSON Polygon descriptions, for the project UrbiViz. This feature was included inside the demonstrator showed on the previous video, to display the city of Lomme (next to Lille).

Technologies : C++11, OpenGL4, GeoJSON, Triangle library

Collision detection system

A collision detection feature added in the VAirDraw 3D engine used by the PIRVI team. It is based on state-of-the-art raycasting with acceleration structures (octree).

It was used for projects using pointing interactions to select or move objects in the scene, or for the projection of 3D lines on other objects in order to make annotations on it for example.

You can find more information about this feature on its corresponding documentation.

Technologies : C++11

Urban data visualization

Basic data visualization module, taking a list of geolocalized elements (for example, air quality data) and displaying corresponding visualization elements as output (for example, spheres with size associated to air quality level). Each visualization element’s geometry is directly computed on the GPU for performance.

Technologies : C++11, GLSL

Generic material rendering

Generic material rendering from .mtl files and textures as usually made in modern video games or 3D applications (diffuse, specular, bump and shadow mapping, transparency).

Technologies : C++11, OpenGL4, GLSL, Assimp library

L'Ébauchoir

Part of a team of two developers, assisting the artist Pauline De Chalendar on her project combining art and technology. She uses PIRVI’s 3D drawing tool VAirDraw for this purpose. Our tool allows her to draw basic “ribbon-like” lines and shapes thanks to the algorithm implemented during my internship at the INRIA Grenoble-Alpes (see Experience section) research institute.

I have then embedded the drawing tool inside PIRVI’s 3D engine. We’ve also added some other features like replaying the whole drawing process programmatically, or inserting “camouflage” shapes to hide some 3D objects in specific contexts (observer’s position and gaze direction). Other tools are needed for the editing process, like the possibility of splitting a drawing session into different file outputs. It allows Pauline to define different phases when animating the drawing.

You can read the shapes drawing feature documentation here.

Technologies : C++11, OpenGL4, GLSL, Python 2.7, Eigen library

Academic

Visible Touch

Development of a system responsible of prototyping frame animations on wearable LED devices. The ultimate goal is to design animations communicating emotions or feelings, like a shockwave for example, by a meaningful GIF-like animation on a LED matrix. We developped a web application based on React.js in order to design frames. The animation is then transferred via USB to an Arduino UNO chip, connected to the LED device.

Check our source code or get more details from here.

Technologies : React 16, Node, TypeScript, JavaScript

European time use visualization

A user-friendly data visualization webpage showing the average amount of time spent by European citizens on different common activities like sleeping, household care or reading. Based on data from Eurostat. You can have more details on the features here, or even try it directly.

Technologies : D3.js, JavaScript

Interactive restaurant menu

A tablet interface showing a restaurant menu and letting customers order their menu easily. Running on Android OS, and based on a Google Firebase database. Connected to a PC client (Qt-based) for the restaurant workers, letting them manage the commands and edit the menu. My personal role was to design and implement the menus interface on tablets. GitHub repository, and interface screenshots.

Technologies : Android 7, Java 7, Qt5, C++11

Enforcement project on images processing

A Python program aiming at detecting and reading characters from plane analog cockpit screens. This would further be used for semantic compression of video records from these screens in order to operate real-time transfer to the ground. Our work was to locate letters or symbols, and output a list of boxes precisely delimiting each symbol. This would be later used by a PhD student’s neuronal network responsible of recognizing each character. More details here.

Technologies : Python 2.7, OpenCV

Last Night

First year engineering school project involving 8 fellow students from my promotion. Our idea was to develop a platform dedicated to student parties, enhancing the experience of each participant.

For this purpose, we designed an online platform, accessible from an Android application by participants. The application tracks the user’s dancing movements from the accelerometer of his cell phone, and computes a dance quality metric thanks to signal processing algorithms based on the detection of a regular tempo.

Another parts consisted in proposing a user interface to respond to polls of the party’s DJ, about the next music to be played for example. Participants could also send pictures they had taken during the party to the platform.

LastNight: Party menu

At the end, each user was offered a complete recap, with a graph of the evolution of his dance quality throughout the party and all the pictures posted by participants.

LastNight: Party recap

I was responsible of the development of the Android client application. Code is available on this Github repository.

Technologies : Android 7

Soccer game sheets live editor

A Windows application, letting the user set up all the data of a soccer match. During the match, you can record efficiently all the key facts. Then, the software generates a full recap of the match into an Excel file automatically. See source code on this Github repository or see more details on the project here.

Technologies : C#

Advanced calculator

A C console program capable of computing operations on integers larger than 64 bits. In order to achieve this, integers are given to the program as string characters to the program, which then stores them as an array of 32 bits integers. In fact, we operate in a 232 basis. My group was specifically responsible of this conversion, as well as giving the result back as a string character on the display.
More details on the project can be found in this pdf file.

Technologies : C

Radiation level on solar panels

A project involving my whole class group (28 students). The final goal was to create a console C++ program taking all the main solar panel parameters considered in this document, and computing an estimation of the potential solar radiation level on this panel. As a manager, I was responsible of the functional breakdown of the program development, and then dispatching the different parts to the other students.

Feel free to download the whole report from this link

Technologies : C

Side projects

Photos hosting platform

Web-based application dedicated to personal pictures storage and sharing. Each user can create his own account, and then create and edit albums. Any user is able to consult an album if its owner has provided him its name and password. This allows fast album sharing between users.

The application is based on a LAMP stack, with a web interface developed thanks to the Angular 9 framework. The source code is available on this Github repository. You can also use the platform on this server.

Technologies : Angular 9, Apache HTTP server, MySQL, PHP 7.2

Development of this website

I started engaging in learning a bit more about front-end web development during summer 2018, while taking the opportunity to make my own portfolio webpage. Styling has been done thanks to the Bootstrap framework as well as the Sass stylesheet language.

Sections of the website (Presentation, Experience, Projects and Skills) are stored inside static files (.yml for skills, and Markdown for others) and inserted inside the main page using Liquid templating language and some filters. The website is deployed on Github pages using Jekyll.

Technologies : Jekyll 3.9, Bootstrap 4, Liquid, Sass, Markdown

Museomatch

Concept prototype designed during the Museomix2020 event, a hackathon hosted in “La Chartreuse de Douai” fine art museum in which I took part. During this event, several teams worked on new ideas to highlight the museum’s collection thanks to mobile-based systems. Ours, Museomatch, aims at facilitating communication between the outside garden plants and inside’s paintings with an association game. It follows the concept of dating applications, but gives information about common points between a given plant and the painting when the association has been found successfully by the visitor. The game is hosted on a Github Pages server through a Ionic web application, developed with the Angular framework. More details about the project can be found at this url.

Technologies : React 16, Ionic

Learn OpenGL programming

I’ve been learning about 3D programming with OpenGL since my specialization course in 1st year of master, but really started developing my own application from scratch from september 2019. I was mostly driven by the wonderful resources available on the website Learn OpenGL by Joey de Vries.

Most of this work is available on this Github repository. I tried to implement different rendering techniques which needed to break and rebuild some parts of the code, so each step is stored in a specific commit in the history.

Image-based lighting on a Stitch model

What I’ve learned to implement :

  • Basic OpenGL application architecture and components (context initialization, storage of geometry with buffers and attribute pointers, texture reading and mapping, objects drawing commands…)
  • Shadowing : calculation of an omnidirectional shadow map from a punctual light’s position and objects in the 3D scene
  • Screen-space ambient occlusion
  • Physics-based rendering using BRDF implementations
  • Image-based lighting thanks to 360° panoramic pictures from this website

Image-based lighting on a Batman model

Technologies : C++11, OpenGL 3.3, GLSL, Assimp library