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.