Coordonnées
Présentation
Ingénieur logiciel avec 8 ans d'expérience. Je travaille sur des technologies Fullstack JS. J'utilise principalement Node.js, React.js, React Native, Electron, et Flutter. Je suis persévérant et créatif pour trouver des solutions techniques, et n'hésite pas à utiliser des technologies bas niveau lorsque la performance est une priorité. Je contribue à des projets open source, et développe PikaTorrent, une application de partage de fichiers en peer-to-peer.
Compétences
Diplômes


Expériences
PikaTorrent
Application open source pour mobile, desktop et web de partage de fichiers en peer-to-peer.
- Développement de l'application web et desktop avec React.js et Electron.
- Développement mobile avec React Native.
- Développement backend Node.js et React Native en C/C++ pour libtransmission, une bibliothèque BitTorrent.
- Ré-écriture du logiciel avec Flutter/Dart/C++, afin de simplifier le développement multi-plateforme.
- Développement de plugins natifs (C++, Java) pour faire fonctionner la couche C++ sur mobile (Android et iOS)
- Contributions à la bibliothèque C++ du projet open source Transmission (https://transmissionbt.com)
- Organisation de sous-projets dans un monorepo.
- Définition et implémentation d'un protocole d'échanges de messages en p2p via WebRTC et Websocket.
- Publication sur des canaux de distributions: Google Play Store, Microsoft Store, Flathub.org, et Github Releases.
- Mise en place de tests d'intégration, et déploiement continue (CI/CD) avec GitHub Actions.
- Communication du projet sur Internet.
XXII
Développement d'applications web d'analyses de vidéos par IA, dans une équipe de 4 développeurs, 2 POs et 1 designer.
- Développement de nouvelles fonctionnalités s'inscrivant dans la roadmap des produits.
- Réalisation d'un PoC d'intégration d'APIs de LLM/VLM (IA) dans le cadre d'un hackaton.
- Réduction de la dette technique: identifications de dettes, suppressions de code et conversions de modules JavaScript vers TypeScript.
- Collaboration continue avec l'équipe produit pour améliorer l'UX et affiner des fonctionnalités.
- Rédaction détaillée de conceptions techniques. Définition d'interfaces avec d'autres équipes. Création de tickets.
- Participation aux ateliers de découpages, chiffrages, et aux réunions daily.
- Débug et corrections des applications existantes.
Projet de plateforme CRM
Développement d'une plateforme CRM "from scratch" en SAAS, avec un associé commercial.
- Architecture et développement de l'application fullstack avec React.js, Express.js, et MongoDB.
- Création d'un moteur de recherche full text avec Elasticsearch.
- Développement d'un microservice de parsing de documents en Python.
- Développement d'une application mobile avec React Native.
- Développement d'une extension Chrome/Firefox
- Mise en place et développement de tests unitaires, fonctionnels, et d'intégration avec Cypress.
- Création et publications d'images Docker.
- Déploiement des services sur kubernetes.
- Gestion d'un cluster Kubernetes et déploiement des services en SAAS: gestion de sous-domaines, certificats TLS (https), séparation des données clients...
- Mise en place d'outils d'amélioration du code: linters de code et formatters (eslint/prettier).
- Mise à contribution d'un développeur junior.
- Sécurisation de données sensibles avec du chiffrement.
- Création et déploiement de scripts de backups de données.
Qwant
Développement d'une application de sécurisation et décentralisation des données personnelles (Masq), dans une équipe de 3 développeurs et une équipe design produit. Puis Qwant Search & Qwant Maps
- Mise en place de l'architecture et prise de responsabilités sur l'application web en React.js et Redux.
- Propositions et utilisation de technologies peer-to-peer via WebRTC pour établir des communications en peer-to-peer entre appareils.
- Mise en place et développement de tests par snapshots avec Jest.
- Participation aux code reviews et pair programming.
- Implémentation from scratch en CSS/SASS des designs fournis par l'équipe en charge des produits.
- Mise en place d'outils d'amélioration du code: linters de code et formatters (eslint/prettier).
- Qwant Maps: participation à la refonte de l'interface en React.js.
- Qwant Search: développement d'un microservice en Rust performant et léger pour categoriser des sites web. Développement en TTD (≃ 1mois).
- Participation aux sprint pokers.
GetQuanty
Développement fullstack d'un équivalent à Google Analytics orienté B2B, au sein d'une équipe de 4 développeurs, un data scientist, et un product owner.
- Maintenance et évolution de la plateforme web fullstack avec Node.js, Express.js, Angular, et MongoDB.
- Développement d'un moteur de recherche avec ElasticSearch.
- Architecture, développement, et migration de données vers Apache Cassandra.
- Documentation des APIs avec Swagger (OpenAPI).
- Participation à la migration de Angular 1 vers Angular 2+ en TypeScript, et refactorisations du code.
- Proposition et implémentations de schémas de données dans MongoDB, ElasticSearch et CassandraDB.
- Participation à la création de tests E2E pour stabiliser la plateforme.
- Amélioration des performances de la CI en parallélisant les tests.
- Mise en place d'outils d'amélioration du code: linters de code et formatters (eslint/prettier).
- Participation aux sprint pokers.
Open Wide (Rachetée par Smile)
Développement de PoCs avec un noyau Linux temps réel sur Android, sur plateforme embarquée ARM.
- Ajout du support d'interfaces industrielles(I2C, GPIO, etc...) et d'un kernel temps-réel (Xenomai) dans Android AOSP.
- Réalisation de benchmarks entre OpenPOWERLINK, avec, et sans RTnet.
- Extension des fonctionnalités d'Android (C/Java) en modifiant le SDK.
- Intégration de la bibliothèque glibc dans Android.
- Réalisation d'applications de tests temps-réel avec Android 6.0 sur Beaglebone black. Avec un noyau linux 4.1 + Xenomai 3.x.
- Développement dans la stack complète Android AOSP, en C et Java. (Services, JNI...)
- Compilation de noyaux Linux en cross-compilation, modifications de modules et drivers.
- Rédaction d'un article paru dans le magazine Open Silicium présentant une partie des travaux.
Contributions opensource
Transmission
Ajout du support d'Android pour compiler libtransmission. Développement d'un job Github Actions pour vérifier la compilation dans la CI. Correction de bugs et documention.
random-access-idb
Correction d'un important souci de performance observé lors de l'usage avec le projet Qwant Masq.
signalhubws
Remplacement d'une bibliothèque pour utiliser des websockets non supportée par les version de Node.js >.10. Dans le cadre du projet Qwant Masq.
Popcorn Time
Développement d'une fonctionnalité de lecture de bande annonces de films. Développement en JavaScript avec node-webkit (équivalent Electron). Implémentation du lecteur qui ouvre une bande-annonce. Contribution pour des millions d'utilisateurs.
LineageOS (ex CyanogenMod), fork de Android AOSP.
Correction de la compilation du projet pour Google Nexus 4, dû à une bibliothèque manquante.