Javascript blog posts
5/6/2026 - 7/24/2026
-
Why I Migrated From Next.js to Express in 2026
The full story behind moving a 100K-visitor site off Next.js to Express and EJS: the bugs that started it, the research that held up, and the tradeoffs.
-
Why Next.js Has 11x More CVEs Than Express
Next.js has 55 known CVEs to Express’s 5, same source, same date. Two are as severe as it gets. Here’s what the gap actually shows, and why it exists.
-
Why Server-Rendered Templates Don’t Need a Build Step
Server-rendered templates compile just-in-time, with no separate build phase. Why EJS never needs a bundler, and when a build step still makes sense.
-
Next.js Hides Its Cache, Redis Doesn’t: The Observability Gap
Redis exposes real hit/miss metrics natively. Next.js’s caching layer doesn’t, for self-hosted deployments. Here’s what that observability gap actually costs.
-
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 to RSC serialization. What actually blocks, and why templating doesn’t.
-
Why Alpine.js Replaced React for Content-Driven Sites
Alpine.js ships at roughly 7kB versus a typical React bundle near 130kB. The scoped case for Alpine.js on content sites, and when a framework still makes sense.
-
Next.js Memory Leak on Self-Hosted Search Routes: A Case Study
A production case study on Next.js memory growth from caching unbounded dynamic search routes, what changed in Next 15/16, and what actually fixed it.
-
Why Instagram, TikTok, Twitter, and Other Social Embeds Break on Next.js Route Changes
Social embeds silently break on Next.js client-side navigation, a documented bug with no built-in fix. Here’s the root cause and a working solution.
-
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.
-
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 inside Alpine directives, hover documentation for every directive and magic property, IntelliSense completions, and snippets across HTML, EJS, PHP, Twig, Nunjucks, and Blade.