Docteur en Optique, Développeur Logiciel Temps Réel
et Ingénieur Traitement du Signal

Expérience professionnelle

Depuis 2018

Depuis 2018

Développeur logiciel responsable du développement de l'application C/C++ multithread et multiprocess temps réel de contrôle de boucle d'optique adaptative. Responsable du développement, des tests de l'intégration et du paquetage des librairies logicielles industrielles C/C++ et leurs wrappers C, Python, Matlab and LabVIEW et du produit ALPAO RTC. Administrateur de l'application web interne GitLab et responsable de la maintenance des serveurs d'intégration continue. Développement des outils temps réel (Python, NI-DAQmx). Responsable du support client logiciel international et discussion avec les fournisseurs internationaux pour intégration de nouveaux matériels temps réel dans les solutions ALPAO. Chef de projet du partenariat entre l'équipe de recherche du laboratoire d'astrophysique de Marseille et ALPAO pour de nouvelles fonctionnalités d'ALPAO RTC avec l'encadrement et la formation d'un développeur junior.

2012-2017

2012-2017

Développeur logiciel à Resolution Spectra Systems. Développement des logiciels industriels de traitement de donnés, interface graphique et librairies logicielles pour les clients et l'utilisation interne. Développement, documentation, tests et maintenance des solutions C/C++ et Qt ainsi que des wrappers Python, C#, .NET et LabVIEW.

2010-2011

2010-2011

Collaborateur expert dans le cadre du projet SWIFTS 400-1000 à l'Institut de Planétologie et d'Astrophysique. Développement d'une transformée de Fourier rapide non uniforme et sous-échantillonnée. Développement du premier logiciel d'exploitation de l'instrument SWIFTS en C/C++ et Qt. Formation autodidacte sur la programmation orientée objet en C/C++, PHP, C#, java.

2009

2009

Post Doctorat à l'IMEP-LAHC. Amélioration des outils de simulation AFMM 2D courbe. Développement de l'AFMM 2D courbe en C/C++ à partir de la version Matlab. Dessin des nouveaux masques de lithographie pour la réalisation des prochains prototypes.

2005-2009

2005-2009

Doctorat en optique à I'IMEP-LAHC à Grenoble. Modélisation électromagnétique et développement du logiciel de simulation AFMM 2D courbe sous Matlab. Réalisation du spectromètre en optique intégrée sur verre par échange d'ions. Réalisation du banc de caractérisation optique pour analyser et qualifier les dispositifs réalisés. Présentations des travaux de recherche en conférences internationales et par des publications scientifiques.

Formation

2002-2005

2002-2005

École Nationale Supérieure de Physique de Grenoble (ENSPG/PHELMA), double cursus Ingénieur – Master Optique (INPG), spécialité en instrumentation.

2000-2002

2000-2002

Classe Préparatoire aux Grandes Écoles, PC, Lycée René Descartes, Tours.

2000

2000

Baccalauréat Scientifique, Poitiers.

Compétences

Développement logiciel

Développement logiciel

  • Maîtrise en programmation orientée objet (C/C++, C#, Python, PHP, java),
  • Maîtrise des outils de développement (CMake, CTest, CPack, SVN, git, GitLab, Doxygen, CppUnit)
  • Maîtrise des outils DevOps (GitLab, Jenkins, Docker, QEMU, VirtualBox, VMware)
  • Maîtrise des bibliothèques Qt, Qwt, BLAS, LAPACK, FFTW, eBUS SDK
  • Connaissance de base des protocoles de communication réseau IP, UDP, TCP, HTTP et des protocoles de communication caméra GenICam, GigE Vision, Camera Link
  • Bonne connaissance du noyau Linux et du noyau Real Time Linux et de sa configuration,
  • Connaissance de base de programmation module du noyau Linux,
  • Bonne connaissance des principaux systèmes d'exploitation : Windows, macOS, Linux (Debian, CentOS),
  • Connaissance de base des systèmes embarqués (STM32, ESP32, W5500, Raspberry Pi, SPI protocol).
  • Scientifiques

    Scientifiques

  • Compréhension et résolution de problèmes complexes (propagation d'onde, optique guidée, Real Time),
  • Modélisation et simulation numérique de propagation d'ondes
  • Traitement du signal et calcul scientifique (Matlab, LabVIEW, Octave, Python).
  • Langues

    Langues

  • Anglais (intermédiaire, scientifique, niveau B2),
  • Espagnol (intermédiaire).
  • Expérience extra-professionnelle

    Microcontrôleurs

    Microcontrôleurs

    Le but de ce projet est de prendre en main les microcontrôleurs STM32 (80MHz) et ESP32 (240MHz). L'exercice consiste à implémenter un horodateur d'évènements sur le STM32. On prévoit deux lignes d'entrée indépendantes capables d'horodater des front montant ou descendant sur la même base de temps. Les horodatages, précis à 12.5ns, sont encodés en entiers 32 bits et envoyés dans un packet UDP sur le réseau. On utilise un W5500 interfacé en SPI avec le STM32 pour envoyer ces paquets.

    On utilise d'abord la connection série pour renvoyer les statistiques sur les pulses détectés (moyenne, minimum et maximum de période). Puis, on utilise le système d'IRQ pour horodater les pulses. On utilise ensuite le transfert DMA pour envoyer les statistiques par connexion série UART. Enfin, on ajoute le W5500 par connection SPI avec transfert DMA pour envoyer les horodatages sur le réseau.

    Dans ce système, le ESP32 est utilisé comme générateur de pulses. Une API web est développée pour lancer l'émission d'un nombre de pulse spécifique à une fréquence donnée. Le dépôt de ce projet est à cette url esp32-pulse-emitter.

    Le code du STM32 est disponible à cette url : stm32-pulse-timestamper. On attends des fréquence de train de pulses de l'ordre de qques 10aine de kHz en émission et en lecture.

    Qt4

    Qt4

    Le but de ce projet est de prendre en main la library C/C++ Qt. Mouthus est un jeu de type Motus en version console et version bureau. On peut choisir le nombre de lettres et le programme vient piocher aléatoirement un mot dans un dictionnaire généré à partir de (Merci !) LEXIQUE. Le code est disponible à cette url : Mouthus

    Compute Web Appp

    Compute Web Appp

    Ce projet concerne la distribution de calcul intensif sur un cluster hétérogène de machines. L'idée est une application central et des applications qui s'exécutent sur chaque machine. Chaque application tire les données de application centrale, effectue le calcul demandé et rend disponible les résultats. L'application centrale expose une API REST et propose une interface graphique légère en Vue.js visualiser les données, suivre la progression des process et visualiser les résultat. Le prototype est écrit en Python. L'implémentation finale est en C/C++ et utilise les librairies POCO C++, HDF5, Boost.Asio et Eigen C++. Le code est disponible à cette url : Compute Web App.