Articles
Notes from the trenches.
42 articles about web development, React, Next.js, TypeScript and more. RSS
- 1 min
Nx and Turborepo: choosing a task runner for monorepos
Computation caching vs content hashing, project graphs, generators, migration cost, and using both tools together when it pays.
- Monorepo
- Tooling
- DX
- 4 min
Streaming and Suspense in the Next.js App Router
A deep dive into HTML streaming, Suspense boundaries, loading.tsx, caching semantics, and how to compose fast perceived performance without sacrificing correctness.
- Next.js
- React
- Performance
- 1 min
Content-Security-Policy nonces in Next.js
Why nonces beat unsafe-inline, generating per-request nonces in middleware, passing to Script components, and strict-dynamic tradeoffs.
- Next.js
- Security
- 1 min
Rate limiting serverless APIs with Upstash Redis
Token bucket vs sliding window, keys by IP or user id, @upstash/ratelimit in Vercel Edge, and false positives behind NAT.
- Redis
- Serverless
- Security
- 2 min
Multi-stage Docker builds for Next.js
Standalone output, layer caching with BuildKit, non-root users, distroless or Alpine runtimes, and image size tradeoffs.
- Docker
- Next.js
- DevOps
- 1 min
Biome as a single linter and formatter
Speed vs ESLint ecosystem parity, migration path, CI integration, and when you still need TypeScript-aware ESLint rules.
- Tooling
- JavaScript
- DX
- 1 min
tRPC: end-to-end types without GraphQL
Procedures, routers, context, Zod input validation, React Query integration, and boundaries between BFF tRPC and public REST.
- TypeScript
- API
- React
- 2 min
HTTP caching: browser, CDN, and origin
Cache-Control directives, stale-while-revalidate, ETag vs Last-Modified, CDN cache keys, and busting strategies for HTML vs assets.
- Web
- Performance
- Architecture
- 4 min
TypeScript utility types I use every day
From Pick and Omit to satisfies, mapped types, and when to reach for conditional types—patterns for APIs, forms, and component libraries without drowning in generics.
- TypeScript
- Frontend