AMAhmed Mahmoudinengahmed.hashnode.dev·17h ago · 9 min readWhy My LLM Feature Cost More Than It Should: Field Notes on Prompt Caching, Cache Breakpoints, and the Timestamp That Killed Every Hit ae7c4dHeadline: Prompt caching saves money only when the cached prefix is byte-identical across requests, and a single interpolated timestamp in a system prompt is enough to make every call a cache write in00
AMAhmed Mahmoudinengahmed.hashnode.dev·1d ago · 11 min readWhy My TypeScript Typecheck Got Slow: Field Notes on tsgo, Project References, and isolatedDeclarations af131dHeadline: A slow tsc --noEmit is almost never caused by the number of files in a repository; it is caused by how much type instantiation the checker has to do, and --extendedDiagnostics tells you whic00
AMAhmed Mahmoudinengahmed.hashnode.dev·2d ago · 11 min readHow I Test an LLM Feature: Field Notes on Golden Sets, LLM-as-Judge, and Eval Gates in CI f9c9acHeadline: An LLM feature cannot be unit-tested with string equality, because the same prompt returns different text on every call, so I assert on properties of the output instead of the output itself.00
AMAhmed Mahmoudinengahmed.hashnode.dev·3d ago · 6 min readMigrating Off the Vercel Edge Runtime: Field Notes 81edcbHeadline: Vercel's Edge Runtime is deprecated in favor of the default Node.js runtime on Fluid Compute, and removing export const runtime = 'edge' from a Next.js route hands back full Node.js APIs wit00
AMAhmed Mahmoudinengahmed.hashnode.dev·4d ago · 10 min readWhy My Next.js Client Bundle Was Bigger Than I Thought: Barrel Files, optimizePackageImports, and the 'use client' Boundary db866fHeadline: One 'use client' directive pulls that file's entire import graph into the browser bundle, and a barrel index.ts re-exporting two hundred modules is how that graph gets large without anyone n00