Dustin Lee
Specification-driven AI development, Linux, and infrastructure automation.
Why Maths for Machine Learning?
Part 1 of the Maths for ML series. What mathematics you actually need, why it matters, and a roadmap for learning it from first principles.
Regression and Decision Boundaries
Part 5 of the ML Fundamentals series. Linear and polynomial regression, Ridge and Lasso regularisation, logistic regression, the Perceptron, and visualising …
Classification — KNN, Naive Bayes, Decision Trees
Part 4 of the ML Fundamentals series. Three foundational classification algorithms — how they work, when to use each, and hands-on implementation with …
Python ML Toolkit
Part 3 of the ML Fundamentals series. Setting up a Python ML environment, and practical workflow patterns with Pandas, NumPy, Matplotlib, Scikit-learn, and …
Data Pre-processing and Evaluation
Part 2 of the ML Fundamentals series. Cleaning messy data, selecting features, splitting datasets, and measuring whether your model is actually any good.
What Is Machine Learning?
Part 1 of the ML Fundamentals series. What machine learning actually is, the three main learning paradigms, and why it matters for infrastructure, automation, …
Managing a NixOS Fleet with Claude Code
Using Claude Code as an infrastructure co-pilot: a dedicated service account, scoped sudo, and a workflow for managing NixOS hosts through conversation.
Managing NixOS with Git: A Declarative Infrastructure Workflow
NixOS is unlike any other Linux distribution. Your entire system — packages, services, users, firewall rules, filesystems — is described in configuration …
Building Gatehouse: A REST API for OpenBSD's PF Firewall
Managing PF through SSH doesn’t scale when you want phone toggles, family controls, and audit trails. Gatehouse wraps pfctl in 66 authenticated REST endpoints — …
Archiving Claude Code Conversations to Hugo
Every Claude Code session is a JSONL file sitting in ~/.claude/projects/. Across 17 projects I had 156 sessions — debugging logs, architecture decisions, …