Today I Learned
The follow-up: Biome shipped, Mago didn't — what the Catroweb migration actually taught me
Three weeks ago I promised real numbers instead of vendor benchmarks. Here they are: Biome replaced ESLint+Prettier and stuck, Mago got screened out before it ever ran, and the thing that ate my afternoon was a supply-chain scanner nobody asked about.
One extension codebase for Chrome and Firefox — signing is the only real fork
The same unpacked MV3 folder loads in both browsers; the divergence is how you get a permanent install, and Firefox's signing story is friendlier than its reputation.
Coding from my phone works because none of it runs on my phone
Claude Code on the web runs each session in a cloud VM, so closing the browser doesn't stop the work — I shipped two small apps from a train with no laptop.
Most reports bury the one line that matters
Why the verdict belongs at the top of a report, and the two honesty habits that let people trust it there.
I told Claude Code to build its own status line
The status line is just a script that gets handed a JSON blob — git branch, files changed, usage limits — so building one is mostly describing what you want.
Agile's feedback loop starts one slice too late
An experiment: before the first real slice, vibe-code a throwaway prototype for a few tokens, let stakeholders click it, and start the agile loop already aimed right.
Trading four linters for two: Biome and Mago vs my Prettier/ESLint/PHPStan/Fixer stack
A theoretical, table-by-table comparison of the Rust linting toolchains Biome and Mago against the Node/PHP incumbents — before I migrate a real project and report the actual numbers.
The Rust SQLite rewrite's real bet isn't Rust — it's how it's tested
Turso is rewriting SQLite in Rust, but the interesting part is deterministic simulation testing — and why that's the only thing that could plausibly match SQLite's reliability.
FIFA shipped a beginner's auth bug
A billion-dollar platform shipped the same access-control bug I catch in first-week code. Budget and brand don't buy you out of it — so look closely.
PHP's array_is_list() is underrated
A tiny 8.1 function that replaces a surprising amount of hand-rolled key checking.
Astro, for people who already know the web
A 5-minute mental model of Astro for experienced devs — server-first rendering, islands, and content collections — without the getting-started fluff.
Why I started a TIL blog
A small daily habit: write down one thing I learned, and keep questioning the stuff I do on autopilot.