Tech blog posts
5/6/2026 - 7/24/2026
-
Why Server-Rendered Templates Don’t Need a Build Step
Server-rendered templates compile just-in-time, no separate build phase. How EJS caching works, what it costs, and when a build step still earns its place.
-
Next.js Hides Its Cache, Redis Doesn’t: The Observability Gap
Redis reports hit rate, misses and evictions in one command. Self-hosted Next.js gives you a per-response header and leaves the aggregation to you.
-
Why React SSR Blocks Node’s Event Loop (SSR via Templating Doesn’t)
React’s SSR APIs run synchronous CPU work on Node’s single thread, from renderToString through RSC serialization. What blocks, and what streaming fixes.
-
Why Alpine.js Replaced React for Content-Driven Sites
Measured from the shipped files: Alpine’s CDN build is 16.7kB gzipped against 47kB for React plus React DOM. Where that gap matters, and where it does not.
-
Next.js Memory Leak on Self-Hosted Search Routes: A Case Study
A production case study on memory growth from caching unbounded dynamic search routes in self-hosted Next.js, what changed in 15 and 16, and what fixed it.
-
Why Instagram, TikTok, Twitter, and Other Social Embeds Break on Next.js Route Changes
Embeds render on refresh but vanish on client-side navigation. The spec-level cause, the fix platforms document, and why server-rendered pages don’t break.
-
Alpine.js Highlighting and Completion for Neovim
Tree-sitter and legacy syntax highlighting for Alpine.js directives in Neovim, plus nvim-cmp completion and snippets across HTML, EJS, Blade, Twig, Liquid, and more.
-
EJS Template Support for Neovim
Tree-sitter syntax highlighting, LSP attachment, and LuaSnip snippets for EJS templates in Neovim. ejs.nvim wires up the embedded_template parser with language injection for accurate HTML and JavaScript colorization.
-
Two Ways to Build With AI: Runtime Dependency vs. Build Tool
“Built with AI” can mean two very different things. One results in software that depends on AI to run, with ongoing costs and unpredictable output. The other uses AI to build software that runs fine without it.
-
Mainframe: Headless WordPress Theme
WordPress theme built for headless setups. Full dashboard, full REST API, minimal public face. No plugins required.
-
Express Map: Visual Route and Middleware Navigation for VS Code
VS Code extension that provides visual route, middleware, and template navigation for Express.js apps. No running server required.
-
Alpine.js Tools: IntelliSense and Syntax Highlighting for VS Code
JavaScript syntax highlighting, workspace-aware IntelliSense, diagnostics with quick fixes, and Go to Definition for Alpine.js, across HTML, EJS, PHP, Twig, Nunjucks, Blade, Liquid, and Jinja2.