Logiciel

Je développe principalement des logiciels pour rendre le travail scientifique et d'ingénierie plus fiable, plus reproductible et moins répétitif. La plupart de mes projets utilisent Python sous Debian GNU/Linux, avec Emacs, Git et une documentation en texte brut comme environnement de travail.

Principes

Je préfère les petits outils composables aux plateformes opaques. Un projet doit rendre visibles ses entrées, ses sorties, ses dépendances et ses modes de défaillance. Lorsque c'est pertinent, il doit aussi fournir des tests automatisés et une commande permettant de reconstruire le résultat à partir des données sources.

Les principaux critères sont :

  • un comportement correct et explicite ;
  • un code lisible, idiomatique et typé lorsque c'est utile ;
  • des tests automatisés centrés sur les invariants du domaine ;
  • une exécution déterministe ou maîtrisée ;
  • des dépendances et des interfaces documentées ;
  • des formats ouverts et des données exportables ;
  • une licence de logiciel libre lorsque le code peut être publié.

Python scientifique

Python est mon langage principal pour le traitement de données, les expériences numériques, la visualisation, l'automatisation et la génération de rapports. Un projet maintenu typique utilise un fichier pyproject.toml, un environnement isolé, le contrôle de version, des tests, des vérifications statiques et une interface en ligne de commande concise.

Des outils comme NumPy, SciPy, pandas, Matplotlib, SymPy et PyTorch sont précieux, mais le choix de la bibliothèque vient après la question scientifique et le modèle de données. Un calcul vectorisé n'est pas automatiquement correct, et un modèle d'apprentissage automatique ne supprime pas la nécessité d'un protocole de validation pertinent.

Automatisation en ingénierie

De nombreux processus d'ingénierie contiennent des opérations répétitives qui se prêtent bien à une automatisation maîtrisée :

  • vérifier la cohérence de documents et de tableaux ;
  • extraire et comparer des exigences ;
  • analyser des résultats d'essais ;
  • générer des rapports de traçabilité ;
  • valider des règles de nommage, de métadonnées et de configuration ;
  • produire des figures et des livrables reproductibles.

L'objectif n'est pas simplement d'économiser des frappes au clavier. Un bon outil d'automatisation réduit aussi l'ambiguïté et laisse une trace inspectable de ce qui a été vérifié.

Traitement documentaire

Je développe des chaînes de traitement pour convertir des ouvrages numérisés et des sorties OCR en documents sources modifiables et durables. Un sujet actuel est la conversion d'ABBYY XML vers Org mode, en préservant autant que possible la structure du document, les images, les tableaux, les notes et les liens.

La difficulté n'est pas de produire un texte plausible. Elle consiste à conserver les indices de structure de page, à traiter les reconnaissances incertaines et à effectuer des corrections manuelles sans perdre la possibilité de régénérer le document.

Moteur de jeu et apprentissage par renforcement

Un autre projet est un moteur d'Awalé avec une implémentation testée des règles, de la recherche, des tables de transposition, de l'auto-jeu et de l'apprentissage par renforcement basé sur PyTorch. Il constitue un laboratoire compact utile pour la représentation d'état, la recherche adversariale, les performances, les tests et la différence entre une chaîne d'apprentissage qui s'exécute et une chaîne qui progresse selon un protocole d'évaluation défendable.

Code source

Les dépôts publics sont disponibles sur github.com/fmaillar. Des pages dédiées apportent davantage de contexte sur certains logiciels, méthodes et chaînes de reproductibilité.

Pages