Je suis ingénieur logiciel et docteur en informatique, responsable du projet Catala, qui vise à fiabiliser et moderniser les logiciels de calcul de transferts financiers basés sur des spécifications juridiques.
Mon titre officiel est « chef de projet infrastructures logicielles en appui aux politiques publiques » au sein du programme « Apollo » de l'agence de programmes dans le numérique portée par Inria.
Je travaille notamment avec de grandes administrations publiques sur des projets à fort enjeux :
Au delà du projet Catala, je suis toujours attentif à d'autres opportunités pour apporter mon aide à des projets dans d'autres secteurs où il est question de prélever, distribuer ou répartir des sommes d'argent en fonction de règles complexes.
Mon expertise, éprouvée depuis 2019, permet d'automatiser de manière fiable et transparente les calculs financiers en explicitant les règles et leurs interprétations par tous les acteurs, via la construction de langages formels dédiés et d'applications pour les manipuler et en expliquer les résultats. Je suis capable de mettre en œuvre une démarche d'innovation basée sur la recherche qui va de la conception à l'industrialisation, en passant par les aspects juridiques et économiques, ainsi que le travail de développement informatique et son encadrement.
Ma formation d'ingénieur polytechnicien s'est terminée par un master à la Carnegie Mellon University. J'ai rejoint mon poste actuel après un début de carrière de chercheur dans l'équipe-projet PROSECCO, spécialisée dans l'étude des langages de programmations et de la vérification formelle. J'ai ensuite travaillé de manière interdisciplinaire avec des juristes et des sociologues pour comprendre en détail la dynamique de création et d'application des normes fondants les calculs d'impôts et de prestations sociales.
denis [point] merigoux [arobase] inria [point] fr
Mon langage de programmation de choix étant OCaml (suivi de près par Rust), je travaille préférentiellement sur mes différents projets avec des ingénieur·e·s logiciel maîtrisant la programmation fonctionnelle, ainsi que la compilation et l'analyse statique de programmes.
Pour l'instant, je n'ai pas d'offre de recrutement particulière à partager. Cependant, n'hésitez pas à me contacter si vous êtes intéressé·e par mon travail et que vous voulez rejoindre mon petit réseau informel de recrutement. Je suis en effet responsable directement ou indirectement de la création d'une douzaine d'emplois pérennes pour le genre ingénieur·e·s décrit ci-dessus.
Je tiens de manière occassionnelle un blog pédagogique autour des langages de programmation et de leur implémentation, à destination de tous ceux qui programment sans savoir comment les choses marchent sous le capot.
Mlang est un compilateur pour le langage M de la Direction Générale des Finances Publiques (DGFiP). Créé au printemps 2019, j'en suis l'auteur principal. Le but du projet est de répliquer le calcul de l'impôt sur le revenu afin de le distribuer dans d'autres langages de programmation et de l'analyser formellement. Voir mon billet de blog à ce sujet.
Steel est le framework de logique de séparation pour F*. Après avoir contribué intensivement pendant l'été 2019 en collaboration avec des chercheurs de Microsoft Research, je me suis spécialisé sur le modèle mémoire ainsi que la future extraction vers C.
De février 2018 à la fin de l'année 2018, j'ai contribué à l'écriture d'une implémentation du protocole cryptographique Signal en F*. J'ai plus particulièrement travaillé sur l'extraction de Signal* vers WebAssembly et son interopérabilité avec le code Javascript, afin de passer la suite de tests complète de l'implémentation officielle de Signal.
Lors d'un deuxième stage à Mozilla en 2018, j'ai contribué à l'architecture du compilateur Rust. En lien avec mon précédent stage sur Cranelift, j'ai refactorisé le bout de la chaîne de compilation afin de pouvoir cibler plusieurs backends de génération de code machine, enlevant ainsi la dépendance dure du compilateur Rust à LLVM.
J'ai contribué pendant l'été 2017 à Cranelift, générateur de code machine écrit en Rust basé sur une représentation intermédiaire proche de WebAssembly. Plus particulièrement, j'ai écrit la traduction de WebAssembly vers Cranelift IR.
Coccinelle est un outil de refactoring sémantique de code C utilisé par la communauté du noyau Linux. Au printemps 2016, j'ai conçu un nouvel outil, Spinfer, analysant des commits de code et inférant des règles SmPL de transformation. Le fonctionnement de Spinfer est détaillé dans mon rapport de stage.
Pour accéder à l'intégralité des compte-rendu des conseils d'administration de l'École polytechnique entre août 2013 et juin 2021, de l'Institut Polytechnique de Paris entre août 2019 et décembre 2020, et de l'ENSTA entre septembre 2017 et septembre 2019, cliquez ici.