PhD in Optics, Real Time Software Developer
and Data Processing Engineer

Professional experience

Since 2018

Since 2018

Software developer at ALPAO in charge of development of Real Time multithread and multiprocess C/C++ application for controling adaptive optic loop. In charge of development, tests, integration and packaging of industrial C/C++ SDK and their C, Python, Matlab and LabVIEW wrappers and ALPAO RTC product. GitLab internal web application administrator and in charge of continuous integration servers maintenance. Real Time intenal tools development (Python, NI-DAQmx). In charge of software worldwide customer support for ALPAO products and worldwilde suppliers discussions for integration of new Real Time devices in ALPAO solutions. Project leader of a partnership between laboratoire d'astrophysique de Marseille research team and ALPAO on new ALPAO RTC features with a junior developer management and formation.

2012-2017

2012-2017

Software developer at Resolution Spectra Systems. Development of industrial data processing software, GUI and SDK for customer and internal use. Development, documentation, tests and maintenance of C/C++ and Qt solutions with Python, C#, .NET and LabVIEW wrappers.

2010-2011

2010-2011

Expert collaborator in SWIFTS 400-1000 project at Institut de Planétologie et d'Astrophysique. Development of a non uniform and undersampled fast Fourier transform. Development of the first version of SWIFTS instrument software in C/C++ and Qt. Self-educated formation in object oriented programmation in C/C++, PHP, C# and java.

2009

2009

Postdoctoral researcher at IMEP-LaHC. Improvements of curved AFMM 2D simulation tools an implementation in C/C++ from Matlab code. New lithography mask design for next spectrometer prototype generation.

2005-2009

2005-2009

PhD in Optics at IMEP-LaHC. Electromagnetism modeling and development of curved AFMM 2D simulation tool in Matlab. Realisation of spectrometer prototype in glass ion exchanged integrated optics. Design of characterisation optic bench for analyzing and qualifying realized prototypes. Presentation of research work at international conferences and by scientific papers.

Initial training

2002-2005

2002-2005

Grenoble engineer school of Physics (ENSPG/PHELMA) instrumentation branch, Master's degree in Optics (INPG/Grenoble INP - UGA), Grenoble, France.

2000-2002

2000-2002

Preparatory class for high schools, physics and chemestry, Lycée René Descartes, Tours, France.

2000

2000

Scientific baccalaureate, Poitiers, France.

Professional skills

Software development

Software development

  • Solid knowledge of object oriented programmation (C/C++, C#, Python, PHP, java)
  • Basic knowledge unified modeling language (UML),
  • Solid knowledge of development tools (CMake, CTest, CPack, SVN, git, GitLab, Doxygen, CppUnit),
  • Solid knowledge of DevOps tools (GitLab, Jenkins, Docker, QEMU, VirtualBox, VMware),
  • Basic knowledge of network communication protocols IP, UDP, TCP, HTTP and standard camera communication protocols GenICam, GigE Vision, Camera Link,
  • Good knowledge of Linux kernel and Real Time Linux kernel configuration,
  • Basic knowledge of Linux kernel module development,
  • Good knowledge of principal operating systems Windows, macOS, Linux (Debian, CentOS)
  • Basic knowledge on embedded devices (STM32, ESP32, W5500, Raspberry Pi, SPI protocol)
  • Scientific

    Scientific

  • Understanding and solving complex problems (wave propagation, guided optics, Real Time),
  • Modeling and numerical simulation of wave propagation,
  • Data processing and scientific computing (Matlab, LabVIEW, Octave, Python).
  • Language

    Language

  • English (intermediate, scientific, B2 level),
  • Spanish (intermediate).
  • Personnal experience

    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.