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.