Blog

128 articles · 29 featured

March 20, 2026·3 min
Decision

Why Gradient Boosting Over Deep Learning for NBA Predictions

Alvin Quach
March 18, 2026·3 min
Build

Feature Engineering for Sports ML: From Raw Stats to Injury Predictions

Alvin Quach
March 15, 2026·3 min
Build

Building Zero-Knowledge Encryption for a Web App

Alvin Quach
March 12, 2026·3 min
Deep Dive

Anti-Hallucination Architecture: Grounding AI in Real Data

Alvin Quach
March 8, 2026·3 min
Deep Dive

PostgreSQL Advisory Locks: Preventing Double-Bookings

Alvin Quach
March 5, 2026·3 min
Deep Dive

Webhook Processing: Never Process Inline

Alvin Quach
March 2, 2026·3 min
Build

Building Context-Aware SQL Autocompletion with CodeMirror 6

Alvin Quach
February 28, 2026·3 min
Decision

Server Actions vs REST: A Decision Framework for Next.js

Alvin Quach
February 25, 2026·3 min
Concept

Defense in Depth: Three Layers of Authorization

Alvin Quach
February 22, 2026·3 min
Concept

Four-Layer Testing Strategy: Unit to Production

Alvin Quach
January 24, 2026·3 min
Build

Building SculptQL: A Local-First SQL IDE with CodeMirror

Alvin Quach
January 24, 2026·3 min
Decision

Building a Custom Syntax Highlighter for My Portfolio's Code Editor

Alvin Quach
January 24, 2026·3 min
Decision

Why I Chose Sanity for My Portfolio

Alvin Quach
January 24, 2026·3 min
Tutorial

Pages Router to App Router: The Complete Migration Cheatsheet

Alvin Quach
January 15, 2026·3 min
Build

Building a Real-Time Draft System

Alvin Quach
January 12, 2026·3 min
Tutorial

CI/CD for Next.js App Router: My GitHub Actions Pipeline

Alvin Quach
January 10, 2026·3 min
Decision

Why GraphQL Over REST for This Portfolio

Alvin Quach
January 8, 2026·3 min
Bug

Debugging N+1 Queries in Player Stats

Alvin Quach
January 5, 2026·3 min
Concept

Server State vs Client State in React

Alvin Quach
January 1, 2026·3 min
Chart

Tech Stack Usage Across Projects

Alvin Quach
December 28, 2025·3 min
Tutorial

Accessibility in Next.js App Router: Patterns That Pass Audits

Alvin Quach
December 15, 2025·3 min
Tutorial

Testing Next.js App Router: Real Patterns from My Projects

Alvin Quach
December 2, 2025·3 min
Tutorial

Next.js App Router Performance: What Actually Moved the Needle

Alvin Quach
November 18, 2025·3 min
Tutorial

Next.js Route Handlers: Building APIs with the App Router

Alvin Quach
November 5, 2025·3 min
Tutorial

Next.js SEO: robots.ts, sitemap.ts, and Metadata API Patterns

Alvin Quach
October 22, 2025·3 min
Deep Dive

Next.js App Router Caching Deep Dive: cache(), revalidateTag, and ISR in Production

Alvin Quach
October 15, 2025·3 min
Decision

Why I Chose Sanity + GROQ for Bring The Shreds

Alvin Quach
October 8, 2025·3 min
Tutorial

Next.js generateStaticParams and generateMetadata: Dynamic Routes Done Right

Alvin Quach
September 24, 2025·3 min
Tutorial

Server Actions in Next.js: When to Use Them Over API Routes

Alvin Quach
September 10, 2025·3 min
Tutorial

Next.js Navigation Functions: redirect, notFound, useRouter, and URL State Management

Alvin Quach
August 27, 2025·3 min
Tutorial

Next.js Dynamic Imports: Code Splitting and Lazy Loading Components

Alvin Quach
August 25, 2025·3 min
Concept

Incremental Static Regeneration Explained

Alvin Quach
August 23, 2025·3 min
Tutorial

Content Security Policy for Modern Web Apps

Alvin Quach
August 19, 2025·3 min
Concept

Streaming HTML with React Suspense

Alvin Quach
August 17, 2025·3 min
Tutorial

Building Accessible UI Components with Radix

Alvin Quach
August 15, 2025·3 min
Build

GraphQL Query Complexity Analysis

Alvin Quach
August 13, 2025·3 min
Tutorial

Error Boundaries in React: Patterns for Production

Alvin Quach
August 13, 2025·3 min
Decision

Route Handlers vs Server Actions: When to Use Each in Next.js App Router

Alvin Quach
August 11, 2025·3 min
Decision

Image Optimization: Next.js Image vs Sanity CDN

Alvin Quach
August 9, 2025·3 min
Concept

Tailwind CSS: Organizing Styles at Scale

Alvin Quach
August 7, 2025·3 min
Build

OpenAI API Integration: Rate Limits and Fallbacks

Alvin Quach
August 5, 2025·3 min
Concept

Prisma ORM: Tips After 2 Years of Production Use

Alvin Quach
August 3, 2025·3 min
Decision

PostgreSQL vs Redis: Choosing the Right Data Store

Alvin Quach
August 1, 2025·3 min
Bug

Three.js in Next.js: SSR Challenges and Solutions

Alvin Quach
August 1, 2025·3 min
Tutorial

Next.js Error Handling: error.tsx, not-found.tsx, and Error Boundaries

Alvin Quach
July 30, 2025·3 min
Tutorial

GSAP ScrollTrigger with React: Performance Patterns

Alvin Quach
July 30, 2025·3 min
Tutorial

Next.js Middleware: Authentication, Redirects, and Edge Logic

Alvin Quach
July 28, 2025·3 min
Decision

Tina CMS vs Sanity: When to Choose Each

Alvin Quach
July 26, 2025·3 min
Tutorial

D3.js Force-Directed Graphs in React

Alvin Quach
July 24, 2025·3 min
Concept

Optimistic UI Updates in Real-time Applications

Alvin Quach
July 22, 2025·3 min
Bug

WebSocket Reconnection: Handling Network Instability

Alvin Quach
July 20, 2025·3 min
Tutorial

TypeScript Generics for GraphQL Operations

Alvin Quach
July 18, 2025·3 min
Tutorial

Sanity Schema Design: Lessons from Building a Portfolio CMS

Alvin Quach
July 16, 2025·3 min
Build

Building a GraphQL API Over Sanity CMS

Alvin Quach
July 16, 2025·3 min
Tutorial

Next.js Loading States: Streaming, Suspense, and Skeleton UI Patterns

Alvin Quach
July 14, 2025·3 min
Concept

React Server Components: The Mental Model That Finally Clicked

Alvin Quach
July 12, 2025·3 min
Decision

Why I Chose Next.js App Router Over Pages Router

Alvin Quach
July 12, 2025·3 min
Tutorial

Next.js Layouts and Route Groups: Nested UI Architecture

Alvin Quach
December 28, 2024·3 min
Build

Three.js in React: 3D Knowledge Graph Visualization

Alvin Quach
December 22, 2024·3 min
Tutorial

GraphQL Code Generation: End-to-End Type Safety

Alvin Quach
December 20, 2024·3 min
Lesson

Next.js App Router: Lessons After 6 Months

Alvin Quach
December 18, 2024·3 min
Decision

Infinite Scroll vs Pagination: UX Tradeoffs

Alvin Quach
December 15, 2024·3 min
Build

CodeMirror SQL Autocomplete: Building Smart Query Suggestions

Alvin Quach
December 12, 2024·3 min
Tutorial

Error Boundaries in Production: Patterns That Work

Alvin Quach
December 10, 2024·3 min
Build

D3.js Schema Visualization: Interactive Database Diagrams

Alvin Quach
December 8, 2024·3 min
Decision

Local-First Architecture: Why SculptQL Never Sends Your Data

Alvin Quach
December 5, 2024·3 min
Decision

Animation Libraries Compared: Framer Motion vs GSAP

Alvin Quach
December 1, 2024·3 min
Tutorial

Image Optimization in Next.js: Beyond the Basics

Alvin Quach
December 1, 2024·3 min
Chart

Workout Completion Rates by Day of Week

Alvin Quach
November 30, 2024·3 min
Tutorial

Zod Schema Validation: Full-Stack Type Safety

Alvin Quach
November 28, 2024·3 min
Decision

react-big-calendar vs FullCalendar: A Practical Comparison

Alvin Quach
November 25, 2024·3 min
Decision

Drag and Drop Libraries Compared: dnd-kit vs react-beautiful-dnd vs @hello-pangea/dnd

Alvin Quach
November 22, 2024·3 min
Decision

Radix UI: Building a Component Library Foundation

Alvin Quach
November 20, 2024·3 min
Chart

Decision Model Risk Distribution

Alvin Quach
November 20, 2024·3 min
Build

Building ML Player Predictions with Python and XGBoost

Alvin Quach
November 18, 2024·3 min
Build

pgvector Semantic Search: Finding Similar Players

Alvin Quach
November 18, 2024·3 min
Concept

CSS Container Queries: Component-Level Responsiveness

Alvin Quach
November 15, 2024·3 min
Build

Building Real-Time Workout Feedback with WebSockets

Alvin Quach
November 15, 2024·3 min
Build

WebSocket Draft Rooms: Real-Time Multiplayer Architecture

Alvin Quach
November 12, 2024·3 min
Decision

FastAPI + Next.js: Bridging Python ML with TypeScript Frontend

Alvin Quach
November 10, 2024·3 min
Bug

Debugging WebSocket Reconnection Issues

Alvin Quach
November 8, 2024·3 min
Decision

Drizzle ORM: Why I Switched from Prisma

Alvin Quach
November 2, 2024·3 min
Tutorial

Dark Mode Implementation: System + Manual Toggle

Alvin Quach
October 30, 2024·3 min
Concept

Git Workflow for Solo Developers

Alvin Quach
October 28, 2024·3 min
Decision

React Query vs SWR: Data Fetching Libraries Compared

Alvin Quach
October 25, 2024·3 min
Bug

Memory Leak in D3.js React Integration

Alvin Quach
October 22, 2024·3 min
Tutorial

OpenAI Embeddings for Semantic Search

Alvin Quach
October 20, 2024·3 min
Decision

React State Management in 2024: Redux vs Zustand vs Jotai vs Alternatives

Alvin Quach
October 18, 2024·3 min
Build

Mapbox GL JS in React: Interactive Maps Done Right

Alvin Quach
October 15, 2024·3 min
Tutorial

Environment Variables: Local, Preview, Production

Alvin Quach
October 15, 2024·3 min
Chart

API Response Time Optimization Journey

Alvin Quach
October 12, 2024·3 min
Build

AI-Powered Maintenance Diagnosis: The OpportunIQ Approach

Alvin Quach
October 8, 2024·3 min
Build

OpportunIQ Architecture: Full-Stack AI Platform Design

Alvin Quach
October 5, 2024·3 min
Decision

Form Libraries Compared: React Hook Form vs Formik

Alvin Quach
October 1, 2024·3 min
Build

Building Decision Trees with D3.js in OpportunIQ

Alvin Quach
September 30, 2024·3 min
Bug

PostgreSQL Connection Pool Exhaustion

Alvin Quach
September 28, 2024·3 min
Tutorial

PostgreSQL Query Optimization with EXPLAIN ANALYZE

Alvin Quach
September 28, 2024·3 min
Build

Migrating Wix to Next.js: Lessons from Hoparc

Alvin Quach
September 25, 2024·3 min
Build

Drizzle ORM Schema Design for OpportunIQ

Alvin Quach
September 20, 2024·3 min
Tutorial

Sanity GROQ: Advanced Query Patterns

Alvin Quach
September 18, 2024·3 min
Tutorial

Geospatial Queries with PostGIS and Drizzle

Alvin Quach
September 15, 2024·3 min
Tutorial

Playwright E2E Testing: Real-World Patterns

Alvin Quach
September 12, 2024·3 min
Tutorial

Prompt Engineering for Maintenance Diagnosis

Alvin Quach
September 8, 2024·3 min
Decision

Storyblok vs Sanity: CMS Comparison from Experience

Alvin Quach
September 5, 2024·3 min
Build

React Query Patterns in OpportunIQ

Alvin Quach
September 5, 2024·3 min
Bug

Hydration Mismatch Bug in Next.js with Dynamic Imports

Alvin Quach
September 2, 2024·3 min
Concept

TypeScript Generics: Practical Patterns

Alvin Quach
August 30, 2024·3 min
Bug

N+1 Query Bug in GraphQL Resolvers

Alvin Quach
August 28, 2024·3 min
Build

Lacoda Capital: Building an AI Investment Platform

Alvin Quach
August 25, 2024·3 min
Tutorial

SEO Preservation During Site Migration

Alvin Quach
August 22, 2024·3 min
Decision

Dual CMS Strategy: Using Sanity and Storyblok Together

Alvin Quach
August 20, 2024·3 min
Concept

React useCallback and useMemo: When to Actually Use Them

Alvin Quach
August 18, 2024·3 min
Lesson

Client Communication: Working with Non-Technical Stakeholders

Alvin Quach
August 15, 2024·3 min
Build

OpenAI Automation Workflows in Lacoda Capital

Alvin Quach
August 12, 2024·3 min
Concept

Understanding React Server Components

Alvin Quach
August 12, 2024·3 min
Concept

Building Accessible UI Components

Alvin Quach
August 8, 2024·3 min
Build

Mapbox for Investment Property Visualization

Alvin Quach
August 5, 2024·3 min
Build

WordPress to Next.js: Kevin Lam Portfolio Migration

Alvin Quach
August 2, 2024·3 min
Decision

Tina CMS: Git-Based Content Management

Alvin Quach
August 1, 2024·3 min
Build

Hoop Almanac: Full-Stack Fantasy Basketball Platform

Alvin Quach
July 30, 2024·3 min
Tutorial

Tailwind CSS: Patterns That Scale

Alvin Quach
July 28, 2024·3 min
Build

Feature Engineering for Fantasy Basketball Predictions

Alvin Quach
July 24, 2024·3 min
Tutorial

Jupyter Notebooks in Production: My Workflow

Alvin Quach
July 22, 2024·3 min
Tutorial

Building Interactive Charts with D3.js and React

Alvin Quach
July 20, 2024·3 min
Tutorial

NumPy and Pandas Performance Optimization

Alvin Quach
July 16, 2024·3 min
Decision

scikit-learn Model Selection for Sports Predictions

Alvin Quach
July 12, 2024·3 min
Decision

Starting My Technical Blog: Why and How

Alvin Quach
January 15, 2024·3 min
Build

Building a Personal Knowledge Graph

Alvin Quach