Writing

Thoughts on Next.js, TypeScript, Supabase, and lessons from 9+ years of building for the web. I write when I have something worth saying.

What I Learned After 6 Months with the Next.js App Router

The App Router changed everything about how I think about server components and data fetching. Here's what actually clicked for me after months of building real projects.

Row Level Security in Supabase: A Practical Guide

RLS policies can feel cryptic at first. This is the guide I wished I had when I was setting up auth for my first Supabase project.

Tailwind CSS v4: What Actually Changed and Why It Matters

No more tailwind.config.js, a new CSS-first configuration approach, and blazing fast builds. Here's my breakdown of the real-world impact.

5 TypeScript Patterns That Made My Next.js Code Cleaner

From discriminated unions to satisfies and template literal types — these are the patterns I reach for every single project now.

Building Web Apps for NGOs: What I've Learned Over 9 Years

Low budgets, non-technical stakeholders, and critical missions. Building for nonprofits taught me more about product thinking than any corporate project ever has.