Blog Archive
Building for the AI Web: llms.txt, MCP, and Agent-Friendly Sites
AI agents are the new crawlers. How to signal discoverability with llms.txt, expose capabilities via MCP server cards, control bot access, and make your site readable by machines.
The Cost of JavaScript: Bundle Size Optimization
Why a kilobyte of JavaScript costs more than a kilobyte of anything else, and how tree shaking, code splitting, dependency audits, and CI budgets keep bundles lean.
HTMX and the Return of Server-Rendered HTML
How htmx brings partial-page updates to hypermedia apps — no client-side state, no bundle, no build step. Core attributes, server patterns, and when it beats an SPA.
Building Search UIs with Typesense
How to add instant, typo-tolerant search to your app with Typesense — schema-first indexing, debounced search-as-you-type, highlighting, and faceted filters in minutes.
Serverless Databases: Neon, Turso, and PlanetScale
Neon (serverless Postgres), Turso (edge SQLite), and PlanetScale (MySQL on Vitess): how each works under the hood, when branching and scale-to-zero matter, and how to choose.
Web Accessibility: WCAG 2.2 for Developers
WCAG 2.2 is the accessibility standard your product will be measured against. Practical success criteria, testable checks, and fixes you can ship this sprint.
Building a Design System with Tailwind CSS v4
Tailwind v4 moved configuration into CSS. Learn the CSS-first theme system: design tokens, @theme, variants, and a component layer that scales across products.
Offline-First PWA Patterns That Users Love
Cache-first, network-first, stale-while-revalidate — the service worker strategies that make PWAs work without a network, plus app shell, background sync, and offline UX.
ORMs in 2026: Prisma, Drizzle, and Raw SQL
Type-safe queries, migrations, and the cases where raw SQL still wins. A practical comparison of Prisma, Drizzle, and writing SQL by hand.
Building an AI Chatbot UI with Streaming Responses
Why streaming beats spinners in AI chat UIs, how Server-Sent Events work, and how to build a React chat interface that renders tokens as they arrive without layout thrash.
Type-Safe End-to-End Development with tRPC and Zod
A shared TypeScript API where the client and server can never disagree. How tRPC infers types across the wire and Zod validates at the boundary.
Astro Islands: The Future of Content Sites
Zero JavaScript by default, hydrated islands on demand. How Astro's islands architecture ships fast content sites without sacrificing interactivity.