Software

I develop software primarily to make scientific and engineering work more reliable, reproducible, and less repetitive. Most projects use Python on Debian GNU/Linux, with Emacs, Git, and plain-text documentation forming the working environment.

Principles

I prefer small, composable tools over opaque platforms. A project should make its inputs, outputs, dependencies, and failure modes visible. Where practical, it should also provide automated tests and a command that reconstructs the result from source data.

The main criteria are:

  • correct and explicit behaviour;
  • readable, idiomatic, and typed code where useful;
  • automated tests focused on domain invariants;
  • deterministic or controlled execution;
  • documented dependencies and interfaces;
  • open formats and exportable data;
  • a free-software licence when the code can be published.

Scientific Python

Python is my main language for data processing, numerical experiments, visualisation, automation, and report generation. A typical maintained project uses a pyproject.toml file, an isolated environment, version control, tests, static checks, and a concise command-line interface.

Tools such as NumPy, SciPy, pandas, Matplotlib, SymPy, and PyTorch are valuable, but the library choice comes after the scientific question and data model. A vectorised calculation is not automatically correct, and a machine-learning model does not remove the need for a meaningful validation protocol.

Engineering automation

Many engineering processes contain repetitive operations that are good candidates for controlled automation:

  • checking document and table consistency;
  • extracting and comparing requirements;
  • analysing test results;
  • generating traceability reports;
  • validating naming, metadata, and configuration rules;
  • producing repeatable figures and deliverables.

The purpose is not simply to save keystrokes. A good automation tool also reduces ambiguity and leaves an inspectable record of what was checked.

Document processing

I am developing workflows for converting scanned works and OCR output into editable, durable source documents. One current subject is conversion from ABBYY XML to Org mode while preserving document structure, images, tables, notes, and links as far as the source data permits.

The difficult part is not producing plausible text. It is retaining evidence of page structure, handling uncertain recognition, and making manual corrections without losing the ability to regenerate the document.

Game engine and reinforcement learning

Another project is an Oware engine with a tested rules implementation, search, transposition tables, self-play, and PyTorch-based reinforcement learning. It is a useful compact laboratory for state representation, adversarial search, performance, testing, and the difference between a learning pipeline that runs and one that improves under a defensible evaluation protocol.

Source code

Public repositories are available at github.com/fmaillar. Dedicated project pages provide additional context on selected software, methods, and reproducibility workflows.

Pages