Field notes
Notes fromthe workshop.
Writing on engineering, product, and the small decisions that compound.
Post-mortem: a malicious npm package hijacked our AI coding agent
How a malicious npm package — part of the DPRK-linked PolinRider campaign — used prompt injection to hijack an AI coding agent, spread eval payloads across 8+ projects, and how we cleaned it up.
Read the latest- 02 · Jun 2, 2026
Tailwind v4 shipped. Here are the renames that will bite you.
The Oxide engine and CSS-first config are a real upgrade, but the shadow, border, and ring renames will shift your UI without telling you. A migration field report.
Read - 03 · May 31, 2026
React 19 Actions, useOptimistic, and the ref change nobody mentions
The client-side parts of React 19 we actually use every day, plus the one TypeScript change to refs that broke our build the first afternoon.
Read - 04 · May 30, 2026
Why we reach for Drizzle, and the one query pattern that pays off
Schema as plain TypeScript, two query styles, and the single-statement relational reads that sold us. Plus the honest 2026 caveat now that Prisma 7 went pure TypeScript.
Read - 05 · May 28, 2026
SQLite at the edge with Turso: when local reads beat Postgres
This site runs on SQLite through Turso. Embedded replicas, the single-primary constraint, the read-your-writes gotcha, and exactly when this beats a managed Postgres.
Read - 06 · May 25, 2026
Shipping an AI chat feature without blowing the budget
Streaming a model response with the Vercel AI SDK is one line. The engineering is in the rate limits, output caps, and step limits that keep a public chat bubble from costing a fortune.
Read - 07 · May 6, 2026
Next.js 16 Best Practices for 2026: A Senior Engineer's Playbook
15 production-tested Next.js 16 patterns: Partial Prerendering, Server Actions, explicit caching, streaming, and the architecture calls that ship.
Read - 08 · May 4, 2026

How to make Flatlist faster
React Native’s FlatList is a powerful component for rendering large lists efficiently, but poor optimization can still cause lag, slow scrolling, and unnecessary re-renders. In this blog, I’ll share practical ways to improve FlatList performance and create smoother user experiences.
Read