Writing
Technical studies and field notes on machine learning, LLM agents, and the models I take apart in my spare time.
-
Small updates break first
I fine-tuned small language models, quantized them the way people ship them, and measured how much of the gain survived. In all ten pre-registered tests at MLX 3-bit and GGUF Q3_K_M, the gentle LoRA kept less of its gain than the strong one, and gentle is mlx-lm’s default learning rate.
-
The simulator was the experiment
I built an RL environment for fraud investigation and trained a policy that beat every baseline I had, including a hand-written rule. Then I ran it on the real regime break, and the advantage did not show up. The agent was never the thing being tested. Corrected September 25, 2026.
-
The wrong opponent
Jev ships with two headline multipliers, 193.6x faster and 444.6x cheaper, and neither one names what it is faster and cheaper than. Arithmetic on TypeSafe’s own published cells pins them to two different opponents, one of which is more accurate than Jev. Sixteen configurations on that chart and not a single small model. I did the sums, then ran the missing baseline on gold labels on my own laptop, and found that the most-cited evidence against small encoders is largely a truncation bug.
-
The browser is a peripheral
Claude Code can drive Chrome, and the documentation covers what it can do without saying how. Reading the shipped binary, the extension bundle and the tool server’s own session logs turns up five hops from tool call to page, two transports where I expected one, a screenshot frame that disagrees with its own declared scale, and the part where your page text leaves the machine.
-
The empty classroom
A deep learning professor at IISc put down his prepared lecture and spent the hour asking his students why they still come to class. He is also the one automating the answer away: no research assistants, his own learning moved to an LLM, and a skill on his company’s marketplace built to teach in his voice. The alarm is worth more coming from a builder, not less.
-
The unmapped majority
Most tools for geotagged social data quietly map the 1-2% of posts with exact coordinates and call it “the geography.” Count the coverage first: on a realistic 5,000-post city pull, 84% carry no location, place-resolution recovers 10× more than exact coordinates alone, and the honest move is to report the hole. It is the idea I built GeoSocialX around.
-
Informative but subsumed
Does news text help forecast social unrest? Measured properly (336M events, 55 countries, leakage-controlled out-of-time backtests, a signal ladder up to neural embeddings of 1.37M headlines), the answer is +0.3-0.6 AUPRC points, sourced from the arithmetic of coverage, not its semantics. The meaning of the news is already in the event record.
-
The closed frontier, mid-2026
GPT-5.6, Gemini 3.1 Pro, Claude Opus 4.8 & Fable 5, and Grok 4.5: who actually holds the crown at the closed frontier, and why nobody holds all of it. Adversarially fact-checked: two of five headline claims came back qualified.
-
The open-weights frontier, mid-2026
Inkling vs GLM 5.2, Kimi K2.7, DeepSeek V4, and Nemotron 3 Ultra: a benchmark-checked field guide to who actually wins what, and how far the open tier has closed the gap to the closed frontier.
-
Inkling, up close
A close read of Thinking Machines Lab’s 975B open-weights multimodal MoE: what’s actually new in the architecture, where it really lands on benchmarks, the interaction-models system it was built for, and how I’d fine-tune it on Tinker.