2026 · 06 · 28
Designing for someone having a bad day
Streaks, badges, and red notification dots are motivational tools built for people who already feel fine. What we replaced them with, and how the app behaves when a user disappears for three weeks.
Product · 7 min
2026 · 06 · 09
A backup is a restore you haven't tested yet
Our restore drill, start to finish: what we broke on purpose, how long it took to come back, and the three assumptions that turned out to be wrong.
Infrastructure · 6 min
2026 · 05 · 22
Running several models on one box without them fighting
Memory budgets, scheduling, and the quantisation trade-offs that let a modest server serve more than one workload at a usable latency.
AI / ML · 11 min
2026 · 05 · 03
Hosting an open-source social platform, and what moderation really costs
Peer support is genuinely useful in behavioral health. It's also a moderation problem you inherit on day one. What we planned for, and what we didn't.
Open source · 8 min
2026 · 04 · 18
The evaluation set we wrote before we wrote the feature
How we test whether a model response is actually helpful to an anxious user, when "sounds supportive" is the easiest thing in the world to fake.
AI / ML · 10 min
2026 · 03 · 30
Ubuntu LTS, boring on purpose
Why a small team should choose the least interesting base OS available, and the upgrade calendar we keep so that choice stays cheap.
Infrastructure · 5 min