Senior software engineer and full-stack developer from Calgary. I build things: apps, backends, cloud setups, the occasional over-engineered side project. Lately that also means training ML models, fine-tuning LLMs and breaking them on purpose to see what happens. If there's a problem to solve, I'm probably already writing code for it. ๐ ๏ธ
๐งช Latest: SecondThought, on letting a model think before a tool call only when it's unsure.
About me
I started on my dad's computer-store PCs as a kid and have been building software ever since: years of client work across web, mobile, cloud and security, now mostly local LLMs.
I try to keep everything I share reproducible. If there's a number in a README, there's a script that produces it.
Away from the keyboard: woodworking, 3D printing, fishing, and keeping up with a new baby.
- โ๏ธ I tried to make a small open model work like Jev (post)
- ๐ง SecondThought: think only when the tool call looks shaky (paper + code)
- ๐ Does forcing JSON make models worse? (paper + code)
- โก Decisions in one forward pass (paper + code)
I also send fixes to open-source tools I use, and keep a few curated lists: LLM evals, LLM extraction, local voice AI.

