Skip to content
Back home

Blog

Writing about ML, data, and things I learn along the way.

Rebuilding WISDM HAR after a leaky 0.89

I froze the June WISDM notebook at git tag v1.0.0, then rebuilt subject-independent HAR. Same 5 s phone flatten: 0.8925 leaky macro-F1 vs 0.2924 GroupKFold. Watch statistical XGBoost is 0.7031.

PythonWISDMXGBoostGroupKFoldFastAPI
Read post

Building a Cloud Native AI Platform Under $15 a Month

A $15/month hobby lab around a thin FastAPI summarizer on one Hetzner box. Terraform, k3s, Helm, Argo CD, and Prometheus/Grafana/Loki are live. Autoscaling, secrets, TLS, canary, and disaster recovery are next.

KubernetesHelmTerraformArgo CDFastAPIPrometheus
Read post

Building Gavel: Turning AI Opinions Into Experiments

How I built Gavel, a workspace for shaping ideas, collecting evidence, running structured multi-agent judgment, and turning model feedback into the next validation cycle.

PythonFastAPILangGraphNext.jsSQLite
Read post

Building a RAG Pipeline: Patterns That Worked

Patterns and techniques for building RAG systems with LangGraph, Qdrant, and OpenAI. Covers chunking, hybrid retrieval, query rewriting, and hallucination prevention.

LangGraphQdrantRAGOpenAIPython
Read post

What 27,000 Steam Games Reveal About Genre Evolution

Building a bipartite genre network from the Steam database, projecting it into a weighted graph, running centrality and community detection, and learning why static game properties cannot predict playtime.

PythonNetworkXGephiLouvainRegression
Read post

Learning ML and Deep Learning by Building Everything Twice

Implementing every ML algorithm twice: first from scratch in NumPy, then in PyTorch. From linear regression through CNNs, RNNs, and transformers, with miniprojects on MNIST, CIFAR-10, CelebA, and IMDB.

PythonNumPyPyTorchDeep LearningFrom Scratch
Read post