Open Source & Software
Overview
Software is a major part of my engineering practice.
I use Python both as a scientific-computing environment and as an engineering automation language for modelling, validation, requirements analysis, data processing, testing, and technical documentation.
I favour open-source software, standard formats, reproducible workflows, and tools that can be inspected and maintained independently of proprietary platforms.
Scientific Python
My regular scientific-computing stack includes:
- Python;
- NumPy;
- SciPy;
- pandas;
- scikit-learn;
- statsmodels;
- xarray;
- Matplotlib;
- SymPy;
- PyTorch.
Typical applications include numerical modelling, data analysis, signal processing, state estimation, engineering automation, and model validation.
Software engineering
I use software-engineering practices that are common in production Python projects:
- Git-based version control;
- automated testing with pytest;
- static analysis and linting;
- type checking;
- continuous integration;
- packaging and dependency management;
- reproducible environments;
- code review;
- automated quality checks.
My current toolset includes Git, pytest, Ruff, mypy, uv, Bash, GNU/Linux, Emacs, Org mode, and LaTeX.
Engineering software
My engineering work has also involved:
- IBM DOORS;
- MATLAB and Simulink;
- LabVIEW;
- TestStand;
- ControlBuild;
- LTspice.
Communication interfaces and protocols encountered in validation and test activities include Ethernet, CAN, CANopen, and ARINC 429.
Engineering automation
A recurring part of my work is replacing repetitive or fragile manual processing with reviewable software.
Examples include:
- comparison of regulatory requirements with project requirements stored in IBM DOORS;
- Python tooling for railway validation;
- development of the PyMamut test library;
- automated processing and analysis of test data;
- numerical-model testing and regression checks;
- generation of structured technical outputs from machine-readable data.
The objective is not automation for its own sake, but reduction of avoidable manual work while retaining traceability and engineering judgement.
Open-source work
I maintain and contribute to software projects related to scientific computing, engineering, data access, Linux tooling, and terminal applications.
Selected areas include:
- scientific Python;
- PEM fuel-cell modelling;
- public-data tooling;
- Linux and Emacs configuration;
- terminal user interfaces;
- test and CI improvements in existing projects.
My public repositories are available on GitHub.
Development environment
My preferred environment is based on open tools:
- Debian GNU/Linux;
- Emacs;
- Org mode;
- Git;
- Python;
- Bash;
- standard Unix utilities.
This environment is used both for software development and for technical writing, documentation, publishing, and reproducible research workflows.
Principles
I prefer software that is:
- understandable;
- testable;
- documented;
- version-controlled;
- reproducible;
- based on open standards where practical;
- maintainable after the original development context has disappeared.
The same principles apply to engineering scripts and scientific models as to general-purpose software.