blog
What I've built and what I learned building it.
- 5 minthe skill I made so AI writes the way I dothe first version of humanizar still let AI-sounding text through. what I kept pointing out on my portfolio bio, round after round, became the new version
- 3 minbetter-intl's t broke after an awaitthe error that took down my build, why React's use() goes away after an await, and the PR I sent to better-intl that got merged
- 8 mindemo videos that show the product: the portfolio-demo skillwhy my old portfolio videos didn't work, the skill I wrote so AI plans and reviews demos, and what the frame-by-frame review caught (including a bug in the product itself)
- 5 minmy docs were all dynamic because of a cookiehow a locale cookie in the root layout made every cd/ui page dynamic and uncached, and what changed when the locale became part of the route
- 10 minthe skill I wrote so AI stops overcomplicating my codea SKILL.md with rule priority, a solution ladder, minimal scope (no global-by-default) and a quality gate, so coding agents deliver the smallest correct change
- 7 minhow sentinel-forge finds brute force in a real auth.logfrom the sshd log to an explainable detection - parser, normalized event, the AUTH-001 rule and a sliding window per IP
- 8 minscreenshots that explain: how I made the annotated captures for my portfolioPlaywright driving Edge, an overlay with labels and arrows injected into the real page, a 4K capture, and why the old screenshots looked blurry
- 6 mina 447-byte alias that froze my parserhow a tiny YAML rule took 34 s and 13 GB to decode in sentinel-forge, and how fuzzing found a panic along the way