Animé par une soif constante de comprendre les choses en profondeur, je suis passé de l'électronique embarquée (ma formation initiale) au développement backend (mon parcours professionnel) et j'approfondis mes connaissances en autodidacte sur les technologies serverless d'AWS (avec pour objectif une certification à terme).
Débrouillard et autodidacte (merci à mon temps passé au Hackerspace/fablab), je suis capable de naviguer rapidement dans votre base de code.
J'aime relever des défis techniques, logiques ou mathématiques. J'ai notamment résolu le Rubik's cube en 4D et je prends les compétitions de bots sur Codingame trop au sérieux. J'explore avec plaisir de nouveaux domaines en mettant mes compétences à votre service pour résoudre vos problématiques.
À la suite d'une rupture conventionnelle avec mon précédent employeur, je me lance dans l'aventure du freelance. Cela me permet:
Après avoir assuré le rôle de leader de l'équipe API pendant une période de transition importante pour l'entreprise, je suis passé à un temps partiel (80 %) pour m'occuper de mes enfants.
J'ai logiquement aidé au recrutement et à la formation de mon remplaçant.
Mes fonctions sont restées globalement les mêmes (à l'exception de l'organisation).
Participation à la migration de notre infrastructure vers AWS et à la gestion des conséquences qui en découlent.
Dockerisation et instrumentation Prometheus de notre proxy mitm legacy.
Collaboration avec un devops pour déployer une stack complète sous Kubernetes et résoudre les problèmes au fur et à mesure.
Une première expérience sur l'utilisation de Kubernetes et des charts Helm.
POC d'une réécriture complète de notre proxy mitm legacy, en utilisant mitmproxy.
Recrutement : mener les entretiens techniques et d'adéquation pour constituer l'équipe de développement API (passée de 1 à 5 personnes).
Organiser le transfert de connaissances : exercices d'onboarding, formations sur le backend, documentation.
Responsable de deux repos : API Backend et notre proxy mitm interne. J'en assure la maintenance, les releases et suis le contact pour toutes les questions techniques les concernant
De nombreuses revues de code (étant souvent considéré comme la personne à contacter)
Participation à l'établissement et à la validation des spécifications des nouvelles fonctionnalités.
Préparation des séances de grooming.
Développement sur le backend de l'entreprise, offrant une API REST permettant d'automatiser la récupération d'informations financières sur les utilisateurs.
Stack technique : Python, Werkzeug (framework web de bas niveau, notamment utilisé par Flask), SQLAlchemy, MariaDB, Docker, GitLab CI.
Suite à des départs et à une réorganisation, j'ai été le seul développeur de l'équipe API pendant 6 mois.
Conception et développement de nouvelles fonctionnalités.
Maintenance : réduction de la dette technique (la base de code a 10 ans).
Audit des cas particuliers remontés par nos clients en soutien à l'équipe support. Je suis notamment efficace pour croiser nos nombreuses sources d'informations et de logs
Collaboration avec différentes équipes, notamment celles dédiées au web scraping et à la data science.
Cryptobox est à la pointe de la technologie de stockage collaboratif en ligne sécurisé. Fort de plusieurs brevets, notamment pour la récupération d'un mot de passe dans un contexte 0-knowledge, c'est la seule solution de ce type certifiée par l'ANSSI [en 2020] pour le stockage en ligne de documents classés "diffusion restreinte"
J'étais l'un des deux développeurs backend du projet, dans une équipe de 6 personnes au total travaillant sur ce produit. (Les bénéfices de ce projet étant marginaux au global, il s'agit d'un side-project chez Thales.)
Maintenance et ajout de fonctionnalités à l'API
Création et optimisation de requêtes SQL complexes (sans ORM)
Refactorisation de l'existant pour réduire la dette technique
Ajout de nombreux tests. Tout étant chiffré en base avec des clés détennues seulement par les utilisateurs finaux, le debug d'erreurs est extrèmement complexe sur des instances de production.
Développement du protocole RF permettant de piloter un parc de volets roulants de la marque Bubendorff à l'aide d'une carte hardware interne. (produit fini : iDiamant)
Le protocole étant figé et le parc installé étant important, ne suivant pas toujours les recommandations radio actuelles, de nombreuses astuces et du rétro-engineering ont été nécessaires pour assurer une qualité de communication radio, tout en respectant les contraintes inhérentes au sujet (temps d'occupation des canaux radio, préservation des batteries pour une partie des volets).
La majeure partie de mon temps était consacrée au développement de C embarqué bas niveau sur microcontrôleur. Un certain nombre de scripts Python ont été développés, notamment :
En poste du début du projet jusqu'à sa commercialisation. Premier développeur à temps plein sur ce projet, j'ai travaillé seul pendant les 6 premiers mois, puis en équipe de 2 le reste du temps.
Temps passé à développer et estimer la viabilité commerciale d'un projet personnel: utiliser le boîtier d'une radio vintage des années 20 pour y intégrer un lecteur multimédia intelligent connecté. Le prototype permet:
Au final, la viabilité commerciale de ce projet n'était pas assurée et le ratio gain/investissement était bien moins intéressant qu'un CDI dans mon domaine avec mes compétences.
Apprentissage autodidacte: Flask, SocketIO, Angular.js, Bootstrap.
Création d'un plugin Python pour Mopidy, permettant le streaming depuis le site radiooooo.com
Développement bas niveau Linux sur BeagleBone/Raspberry Pi pour la gestion d'un DAC audio
Développement d'une API Flask pour faire la liaison entre le server MPD, les boutons physiques et servir l'interface web personnalisée.
Employé en renfort (CDD) lors de la sortie d'un nouveau moniteur médical 'Pressio2', j'ai développé complètement (POC, schématique, PCB et logiciel) un outil de démonstration destiné aux commerciaux. Cet outil simule des signaux vitaux réalistes et paramétrables (température, fréquence cardiaque, pression artérielle moyenne, amplitude) d'un patient.
Mes autres tâches consistaient principalement en :
La partie conception de A à Z de l'électronique me convenait tout à fait, mais le reste beaucoup moins. La majeure partie de mes 6 mois a été consacrée à la conception, en raison du besoin particulier lié à la sortie du produit. Par la suite, cela n'aurait représenté qu'une proportion marginale de mon travail. C'est pourquoi j'ai décidé de ne pas poursuivre dans cette entreprise à la fin de mon CDD.
Présent pendant 14 mois sur la base Alfred Faure dans archipel de Crozet. C'est une base militaire et scientifique isolée, composée de 24 à 36 personnes. Employé pour la partie scientifique, j'étais le relais logistique de l'IPEV sur place et le support technique des scientifiques au quotidien. Le poste pouvait se résumer à "faire ce qui est nécessaire pour que les études scientifiques puissent se dérouler le mieux possible".
Assure en binôme le suivis et la continuité des mesures pour différents observatoires des sciences de la terre (orbitographie, géomagnétisme, sismologie, marégraphie, prélèvement d'air)
Réparation d'appareils électroniques divers (balance de précision, spectrophotomètre, magnétomètre à proton, connectiques, vérification annuelle des appareils médicaux, etc).
Développement d'outils en Python avec les données d'OpenStreetMap : génération de fonds de carte Garmin spécifiques simplifiant les sorties aux scientifiques selon leurs besoins.
assistance à l'anesthésie pour les opérations chirurgicales de prélèvements de muscle sur les manchots.
manipulation d'animaux, mesures et collecte d'échantillons (manchots, albatros, insectes, escargots, etc.).
Recherche, proposition et validation de solutions techniques pour gérer les obsolescences de composants sur l'ensemble des produits d'Alstom Transport.
Toutes les technologies ont été traitées : composants discrets, circuits intégrés (principalement mémoires et logique) et composants programmables (microcontrôleurs/DSP et FPGA).
Études de solutions complètes, du remplacement pin à pin compatible au redesign plus ou moins local des cartes électroniques.
Responsable des analyses de codes existants pour les remplacements de composants programmables afin d'identifier l'ensemble minimal des périphériques et caractéristiques nécessaires.
Création d'un outil de scrapping en Python des données métier (schémas affectés) sur un outil interne extrêmement lent.
Automatisation partielle en Python de la partie documentaire : détection et extraction des tableaux de caractéristiques de composants dans des PDFs (datasheets) pour les comparer.
Un site pour générer une liste de courses à partir de recettes choisies parmi un catalogue scrappé d'un service de livraison à domicile.
N'hésitez pas à me demander un compte si vous voulez tester/voir.
Une API privée me servant pour mes différentes projets électroniques connectés.
Exemple de l'URL: génération d'image à la demande pour l'affichage sur un panneau E-Ink. Ici, la météo par demie-journée, pluie dans l'heure et les prochains passages de tram. Les librairies de scrapping, manipulation d'images et de textes sur les systèmes embarqués étant vite limitée.
Chaque projet a son router Fastapi dédié.
Génération de puzzles supplémentaires difficiles pour le jeu SmartGames Temple Trap. Trouvés par un parcours exhaustif de tous les états possibles du jeu. Le calcul parallélisé a été fait en quelques heures sur un calculateur EC2 à 72 cœurs. Le résultat final est un jeu de cartes à imprimer.
Création de puzzles sur le modèle du jeu Fold-It pour une taille de 6x6 (format initial : 4x4). Parcours exhaustif des états de jeu possibles. Création de motifs pour impression sur tissu et d'un jeu de cartes.
Création d'un escape game papier pour un week-end entre amis. Le PDF ne vous sera pas très utile sans les instructions de préparation, mais il montre les détournements faits sur des QR-codes. Les résoudre/compléter les rend lisibles.
Une investigation pas à pas sur les différences en Python sur les fonctions et les méthodes. L'article est écrit en suivant la problèmatique suivantes: comment "monkey patcht" une méthode d'une seule instance d'une classe ?
379ème personne à résoudre le rubik's cube en 4 dimension (2018)
Échange linguistique de 3 mois au Canada (2003). Stage de fin d'étude au Tyndall National Institute en Irlande (2011). Road-trip de 5 mois en Australie (2012)