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
- Python scientifique reproductible — Une chaîne de travail maintenable pour l'analyse scientifique, les tests et les résultats traçables avec Python
- D'ABBYY XML à Org Mode — Convertir une structure OCR en un document source Org mode modifiable et reproductible
- Construire un moteur d'Awalé — Règles, recherche, tests, auto-jeu et apprentissage par renforcement dans un projet logiciel d'Awalé
- datagouv-toolkit — Boîte à outils en ligne de commande pour découvrir, évaluer, sélectionner, télécharger et auditer les jeux de données de data.gouv.fr
- Transmission TUI : gérer les torrents depuis le terminal — Une interface terminal légère pilotée au clavier pour surveiller et administrer un démon Transmission.