Writing.
42 articles · last updated Jul 14, 2026
Turborepo → Vercel: Production Lessons (Prisma, Caching, the .next Trap)
A Next.js and Prisma monorepo on Vercel works beautifully until it does not. These are the specific, hard-won lessons: the Prisma engine trap, why type imports bite too, and the shared .next gotcha.
TypeScript 7 Is Here: The Go-Native Compiler (Project Corsa) in Practice
TypeScript 7.0 replaces the compiler with a from-scratch Go port — same types, roughly 10x the speed. Here is what actually changes in your editor and CI, and how to try it without rewriting anything.
Bun.sql and the Full-Stack Runtime: Do You Still Need a Postgres Client?
Bun ships a built-in Postgres client and a zero-config full-stack dev server. Here is what Bun.sql actually does, how it compares to postgres.js and Drizzle, and when the batteries-included runtime is enough.
CSS Anchor Positioning Is Baseline: Delete Your Tooltip JavaScript
Anchor positioning reached Baseline in 2026, which means tooltips, popovers, and menus can be tethered to their trigger in pure CSS. Here are the three properties that do 80% of the work and the fallback rule for the rest.
Zero 1.0: Local-First Sync That Works With Any Backend
Rocicorp's Zero hit 1.0 in 2026 — a general-purpose sync engine that makes reads instant and local while keeping any backend as the source of truth. Here is how it works and where it fits.
Type-Safe Environment Variables in a TypeScript Monorepo
process.env is a bag of maybe-strings, and non-null assertions just move the crash to production. Here is how to validate configuration at boot with a schema and keep it sane across a monorepo.
Vite 8 and Rolldown: Migrating to the Rust Bundler
Vite 8 replaces Rollup and esbuild with Rolldown, a single Rust bundler from the Oxc toolchain. Real projects are seeing 80%+ build-time cuts. Here is what the migration looks like and where it bites.
React Server Components, One Year On: Patterns That Stuck
After a year of building with React Server Components in the App Router, some patterns held up and some hype did not. Here is what actually stuck, and where I still reach for the client.
TanStack DB: Sub-Millisecond Live Queries in the Browser
TanStack DB adds a reactive client store on top of TanStack Query, using differential dataflow to update query results incrementally. The payoff is live queries that stay fast even over 100k rows.
Postgres 17 in Practice: What Actually Changed for App Developers
Postgres 17 is not a flashy release, and that is the point. Here are the changes that actually matter when you are writing application code: MERGE with RETURNING, JSON_TABLE, and quieter vacuuming.
SvelteKit Remote Functions: A React Dev's Look at Type-Safe Server Calls
SvelteKit's remote functions let you call server code from anywhere in your app with end-to-end type safety and no API layer. From a React and Next.js background, here is what clicks and what is genuinely new.
Building Evaluations for LLM Apps: Beyond Vibes
Shipping an LLM feature on gut feel works until it does not. Here is how to build real evaluations: golden datasets, assertion checks, LLM-as-judge scoring, and running them in CI.
Model Context Protocol in Production: Building & Shipping MCP Servers
A practical guide to building Model Context Protocol servers that survive real use: the anatomy of a server, a minimal TypeScript implementation, and the hardening every production server needs.
GeForge and GDDRHammer: How GPU Rowhammer Attacks Can Now Compromise Your Entire System
Security researchers revealed GeForge and GDDRHammer, two new attacks that exploit Nvidia GPU GDDR6 memory to achieve full system compromise. By inducing bit flips in VRAM, attackers can hijack GPU page tables and escalate to root access on the host CPU.
Anthropic Acquires Bun: What the JavaScript Runtime Deal Means for AI-Powered Development
Anthropic acquired Bun, the fast all-in-one JavaScript runtime, to power Claude Code — which just hit $1B in run-rate revenue. Bun remains open-source. Here is what this means for JavaScript developers and the AI coding landscape.
Milla Jovovich's MemPalace: How a Memory Palace Architecture is Revolutionizing AI Memory
Actress Milla Jovovich and engineer Ben Sigman open-sourced MemPalace, an AI memory system that uses the ancient method of loci to organize LLM conversations. It scored 96.6% on LongMemEval and runs entirely offline with ChromaDB and Llama.
TanStack Start: Full-Stack React Without Next.js
TanStack Start pairs TanStack Router with Vite to give you SSR, server functions, and end-to-end type safety without React Server Components. Here's what it is, how it differs from Next.js, and when to pick it.
Building AI Agents with the Model Context Protocol (MCP)
The Model Context Protocol is becoming the USB-C of AI tool integration. Learn how MCP works, how to build MCP servers, and how it enables AI agents to interact with databases, APIs, and external services through a standardized interface.
Mastering TanStack Query v5: The Complete Guide to Server State in React
A practical deep-dive into TanStack Query v5 covering queries, mutations, optimistic updates, infinite scrolling, and Next.js SSR integration. Includes real-world TypeScript patterns and common mistakes to avoid.
What's New in Claude 4.6 and the Agent SDK
Claude 4.6 brings a 1M-token context window on Opus, faster Haiku, and a proper Agent SDK that handles the loop, tool execution, and memory. A hands-on look at what actually changed and patterns for building production agents.
React 19 Actions: The Complete Guide to Modern Form Handling
React 19 fundamentally changed how we handle forms with Actions, useActionState, useOptimistic, and the form action prop. This guide covers every new pattern with practical TypeScript examples.
Running Untrusted AI Code Safely with Vercel Sandbox
Vercel Sandbox gives you Firecracker microVMs for executing untrusted or AI-generated code — the kind of isolation you need when your agent wants to run arbitrary Python or Node. A hands-on walkthrough with a code-interpreter tool.
Effect: Building Bulletproof TypeScript Applications
An in-depth look at Effect — the TypeScript library that makes errors, dependencies, and async behavior explicit in your type system. Covers the Effect type, typed error handling, dependency injection with Services and Layers, Schema validation, concurrency, and real-world patterns.
Building AI-Powered Apps with Claude and Next.js
Learn how to integrate Anthropic's Claude AI into your Next.js applications using the Vercel AI SDK. This comprehensive guide covers streaming responses, error handling, and production best practices.
Understanding React Server Components in Next.js 15
A deep dive into React Server Components (RSC) in Next.js 15. Learn how they work, when to use them, and best practices for building performant applications.
What's New in Node.js 24: Native TypeScript, Permissions, and Performance
Node.js 24 shipped native TypeScript support, a permissions model for runtime security, npm v11 with 65% faster installs, and V8 engine updates. Here's everything you need to know to upgrade.
Typed Project Config: Migrating vercel.json to vercel.ts
vercel.ts replaces vercel.json with full TypeScript types, dynamic logic, and environment access. A practical migration walkthrough — rewrites, headers, crons, and queues — plus what stays in package.json.
Smart Contract Development with Solidity and Hardhat
Get started with Ethereum smart contract development using Solidity and Hardhat. Learn to write, test, and deploy your first smart contract.
Deploying Next.js Apps to AWS with Docker
A complete guide to containerizing your Next.js application with Docker and deploying it to AWS. Covers multi-stage builds, ECS, and CI/CD with GitHub Actions.
Next.js 16: Cache Components, Turbopack Production, and proxy.ts
Next.js 16 introduced Cache Components for granular caching, Turbopack as the default bundler, proxy.ts for explicit network boundaries, and DevTools MCP for AI-assisted debugging. A deep dive into the upgrade.
Type-Safe Database Queries with Prisma and PostgreSQL
Master Prisma ORM for type-safe database access in TypeScript. Learn schema design, migrations, queries, and production best practices.
Building Agents with the AI SDK v6
AI SDK v6 makes agent loops, multi-step tool calling, and provider-agnostic model routing first-class. A walkthrough of the new patterns — tool(), stopWhen, streamText with UIMessage parts, and generateObject — with working code for a research agent.
The React Compiler: Automatic Memoization and What It Means for Your Code
React Compiler 1.0 is stable, bringing automatic compile-time memoization to React. Meta reports 12% faster initial loads and 2.5x faster interactions. Here's how it works and what it means for useMemo, useCallback, and memo.
Drizzle vs Prisma in 2026: An Honest Comparison
Drizzle and Prisma are both great in 2026, but they make different trade-offs. A side-by-side look at schema, queries, migrations, serverless behavior, and the specific workloads where each one wins.
Building Type-Safe REST APIs with FastAPI and Pydantic v2
FastAPI combines Python's simplicity with automatic validation, OpenAPI documentation, and async support. This guide covers building production-grade APIs with Pydantic v2 models, dependency injection, and proper error handling.
Replacing ESLint + Prettier with Biome
Biome collapses ESLint and Prettier into a single Rust tool that runs 25x faster. A full migration walkthrough — config, rule mapping, pre-commit hooks, and the rough edges worth knowing.
Testing Modern React Applications with Vitest and Testing Library
A practical guide to testing React components, hooks, and async interactions using Vitest and React Testing Library. Covers component tests, user events, mocking, and testing Server Components.
Docker Compose for Full-Stack Developers: A Practical Guide
Stop fighting environment setup. Docker Compose lets you define your entire development stack — database, API, frontend, cache — in one file and start it with a single command. A practical guide with real-world patterns.
Why Fluid Compute Replaced Edge Functions
Vercel Edge Functions are no longer recommended. Fluid Compute runs in the same regions, at the same price, and removes the Web API restrictions that forced awkward workarounds. Here's what actually changed and how to migrate.
Tailwind CSS v4: The Oxide Engine, CSS-First Config, and Container Queries
Tailwind CSS v4 rewrote its engine in Rust (Oxide), dropped the JavaScript config file in favor of CSS-based configuration, and added native container query support. Here's what changed and how to migrate.
Durable Event Streaming with Vercel Queues
Vercel Queues gives you at-least-once delivery, dead-letter queues, and consumer functions built on Fluid Compute — without standing up SQS or Kafka. Here's how to use it for webhook processing, async email, and work offloading.
One API for Every Model: Vercel AI Gateway in Production
The Vercel AI Gateway gives you a single endpoint that proxies every major LLM provider with built-in observability, automatic failover, and zero data retention. A practical guide to adopting it, configuring fallbacks, and when it actually saves you money.