Blog
Mostly post-mortems. When something takes me far longer than it should have, the reason is usually more interesting than the fix, and writing it down is how I make sure I actually learned it.
18 August 2026/2 min read
Sales are not a time series until you make them one
Mana's market tools could already tell you what something is worth right now. Teaching it to forecast meant turning a scatter of irregular sale events into something a model could actually read.
- mana
- forecasting
- data-engineering
18 August 2026/2 min read
The dtype that was not there
I burned hours fixing hyperparameters that were never the problem, because the actual bug was a dtype the training config never controlled in the first place.
- debugging
- pytorch
- veritarach
18 August 2026/2 min read
The README that promised more than it shipped
Fixing one broken install link in db-artisan's README turned up a second, bigger problem. The docs described five skills. Only one of them actually exists.
- db-artisan
- documentation
18 August 2026/2 min read
The touch targets an audit could not see
An automated mobile audit found fourteen controls too small to tap. It also missed three more, because an audit can only see the state it happens to load in.
- euphonia
- accessibility
- mobile
17 August 2026/2 min read
The forecast gate I almost got wrong
I guessed a rule for when Hecate's forecasts were trustworthy enough to show. The guess was wrong. Testing it against real data gave me a better one, and testing didn't stop once the feature shipped.
- forecasting
- hecate
- data-engineering
15 August 2026/2 min read
The checkpoint that was quietly guessing
The deployed classifier looked fine until I loaded the checkpoint directly and asked it about the first line of Pride and Prejudice. It barely had an opinion.
- debugging
- pytorch
- veritarach