Recent Blog Posts
Insights on AI Agents, Modern Web, and the Future of Engineering.
Building a Mobile AI Chat App End-to-End
From backend proxy to streaming UI: the full architecture for a production Flutter AI chat app — API key security, token streaming, state management, and cost control.
On-Device AI in Flutter with Gemini Nano and GenKit
How to run Gemini Nano on-device inside a Flutter app — via ML Kit GenAI and the AICore system service — with capability gating, model fallback, and a hybrid local/cloud strategy.
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.