Mostly small, mostly born out of a specific annoyance at a specific 2am. A few are open source; the rest just run quietly on my own infrastructure.
homelab-iac
#linux
A set of Ansible playbooks and a Terraform module that rebuild my entire homelab — Proxmox VMs, ZFS pools, and DNS — from a single YAML inventory. Started as a way to stop hand-editing config after the third late-night mistake.
Ansible · Terraform · Proxmox
● activeself-hosted, ~4k lines
pgcheck
#databases
A small CLI that runs a battery of read-only PostgreSQL health checks — bloat, missing indexes, long-running transactions, replication lag — and prints a plain-text report a human can actually read.
Go · PostgreSQL
● activegithub.com/mlaaksonen/pgcheck
compose-lint
#docker
A pre-commit hook that catches the Docker Compose mistakes I kept shipping to production — missing resource limits, `:latest` tags, and named volumes without a backup label.
Python · Docker
● activegithub.com/mlaaksonen/compose-lint
nordicops.dev
#web-design
This site. Hand-written HTML and CSS, no build step, no JavaScript framework — partly a design exercise, partly stubbornness. The full build notes are on the colophon page.
HTML · CSS · vanilla JS
● activeyou're looking at it
shelfware-tracker
#linux
A weekend project that scans a homelab network for containers and VMs that haven't been touched in 90+ days and emails a weekly "do you still need this?" digest. Has quietly reclaimed a lot of disk space.
Python · cron
○ maintenance modeself-hosted
timeseries-bench
#databases
Benchmark scripts comparing TimescaleDB, plain PostgreSQL partitioning, and InfluxDB for a metrics-ingestion workload. Originally written for a client project, since generalized and open-sourced.
Python · PostgreSQL · InfluxDB
○ archived, results still usefulgithub.com/mlaaksonen/timeseries-bench
Most of these started as blog posts
If a project below is missing context, there's usually a longer writeup in the archive explaining why it exists.