Simon van Lierde

Research software engineer

Open software and data infrastructure for industrial ecology · PhD candidate, Leiden University

Download as PDF

Last updated

Profile

I'm a full-stack research software engineer with three years of professional experience in software, data, and solution architecture, now halfway through a PhD in Industrial Ecology at CML, Leiden University. I lead the development of R9lab, a platform that records what products are made of, and I own it end to end. I also build dashboards and interactive visualizations so that people outside the field can read the research. My code and data are open and follow the FAIR principles (findable, accessible, interoperable, reusable).

Experience

PhD Researcher in Industrial Ecology, Apr 2024 – Present

CML, Leiden University

  • Lead developer of R9lab, responsible for the whole software lifecycle: a FastAPI/PostgreSQL backend with OAuth and Alembic migrations, React/TypeScript and Expo front-ends, CI/CD, Cloudflare networking, restic backups, and security hardening guided by OWASP ASVS.
  • Ran two data-collection workshops (135 participants) and deployed the platform in a lab. By October 2026 it held 94 products, 1,779 components, and 4,455 images.
  • Designed and deployed a central observability stack for CML's research software (OpenTelemetry, Grafana, OpenTofu). R9lab reports to it today.
  • Built a Raspberry Pi camera plugin that captures images automatically. It has an OpenAPI spec and is released on PyPI.

Data Manager, Sep 2023 – Apr 2024

Nationale Milieudatabase (Dutch Environmental Database)

  • Managed the environmental databases behind sustainability calculations for the Dutch construction sector. Improved their data structure, consistency, and validation, and advised on software implementation.
  • Brought the national environmental databases in line with open data standards (EU LCDN, PEF), working with policymakers, developers, and industry.

Solution Architect & Product Manager, Aug 2022 – Sep 2023

Metabolic

  • Designed tools for LCA (life-cycle assessment) and sustainability reporting. Advised the division's projects on how to apply LCA, EEIOA (environmentally extended input-output analysis), and MFA (material flow analysis).
  • Product owner and domain expert for automated sustainability-reporting tools (FastAPI, Vue) that replaced static Excel models with REST APIs and web applications.

Consultant & Data Analyst, Sustainable Industries, Feb 2021 – Aug 2022

Metabolic

  • Built environmental-impact models (LCA, MFA) in Python for sustainability consulting projects, with clients in industry, NGOs, and government.

Publications

Education

MSc Industrial Ecology, 2018 – 2023

Leiden University & TU Delft

Joint degree, specializing in environmental modeling, LCA, and GIS. My thesis used Python geoscripting to model the environmental impacts of space cooling in The Hague.

BSc Physics & Astronomy, 2014 – 2018

Radboud University

Focus on mathematics, theoretical physics, and programming. Exchange semester at the National University of Singapore.

Projects

R9lab

Open-source platform that records what products are made of by taking them apart, and collects the photos that computer-vision research needs.

Open-source contributions

  • lca_algebraic: fixed sampling, method lookup and a time-zone cache bug; halved parameter expansion (0.76 s to 0.40 s) and made Sobol analysis about 20× faster without second-order indices (3.13 s to 0.16 s).
  • Brightway and pymrio: fixed wrong LCA scores, cleared two security advisories, made importing Brightway about 0.3 s faster, and sped up pymrio's account calculation 26× (6.1 s to 0.23 s).
  • flodym: stopped lifetime extension overwriting model parameters, and made it 9× faster (0.83 s to 0.092 s).
  • premise and Activity Browser: fixed unreported scenario bugs in premise, and parameter, scenario-file and Monte Carlo bugs in Activity Browser.
  • Also merged: CodeMeta, Boavizta, SchemaStore, pyOpenSci, wanderer and fastapi-mail (30 pull requests in all).

jsonvet

Pre-commit hook and Rust library that checks JSON, JSONC, JSON5 and three other dialects, released on PyPI and crates.io. Matches the Python original on 40,228 test runs, survived a billion fuzzing inputs, up to 1,395× faster.

Public web apps

credit-matrix, a CRediT authorship-statement tool with a Zenodo DOI, and four personal web apps, among them a multiplayer game whose one-CPU server holds about 200 rooms of 6 players under load.

RaMa-Scene explorer

Map of where a country's consumption causes emissions, jobs and metal-ore extraction, over a baseline and 153 RaMa-Scene scenarios on EXIOBASE (Svelte, D3). It loads under 1 MB of a 51.5 MB Parquet file by range request. Zenodo DOI.

Skills

Programming

Python, TypeScript/JavaScript, Rust, SQL, Bash

Front-end

React, Svelte, Vue, Astro, Expo/React Native, D3, MapLibre, WCAG 2.2 AA (axe-core)

Back-end

FastAPI, REST/OpenAPI, WebSockets, OAuth, PostgreSQL, Alembic

DevOps

Docker, GitHub Actions, OpenTofu/Terraform (IaC), Cloudflare, Grafana, uv, pnpm

Practices

Git/GitHub, pytest, Playwright, benchmarking, fuzzing, PyPI and crates.io releases, reproducible workflows, FAIR (Zenodo, CodeMeta), OWASP ASVS

Data science & ML

PyTorch, NumPy/SciPy, Pandas, DuckDB, Parquet, Snakemake

Domain modeling

LCA (Brightway), MFA, EEIOA (EXIOBASE), GIS, circular economy

Languages

Dutch (native), English (fluent), French (B1), Chinese (A2)

Talks and training

Interests

Multi-day treks in the mountains, Fermenting (kimchi, kombucha, tempeh) and cooking for friends, Climbing and via ferrata