← Work

halflife

A study tracker that measures what you retained, not what you covered

JavaScript · 2026 · active

Ticking a box records that you read something. It does not record whether you still know it a month later, and the gap between those two is the entire point. Every card in halflife carries a stability measured in days; retrievability decays as 0.9 ^ (elapsed / stability); and the app reports Covered and Retained as two separate numbers, because they are two separate things.

Underneath it is a hosted tracker for multi-week learning paths with a spaced-repetition review loop over them. The curriculum is data — a JSON file per path — and the app is a Cloudflare Worker serving an API from D1 alongside a statically built page. Reading a curriculum needs no account; tracking progress does.

View source on GitHub →