$ ls articles/ --sort=date
How to reduce AI coding agent rework by writing clear goal, scope, do-not-change, and verification boundaries before implementation starts.
How to diagnose Windows, OneDrive, Node.js, and Next.js environment-dependent failures before changing application code.
How to write MCP tool descriptions, argument schemas, return notes, and errors so AI agents choose and call tools correctly.
Why custom RSS feeds in static Next.js sites break when titles or descriptions are not XML-escaped, and how to verify feed output.
Why npm install or --save-dev can appear to succeed while devDependencies are missing, and how to recover with NODE_ENV checks and --include=dev.
Why PowerShell commands with Where-Object and $_ break when launched through Bash, and how to avoid cross-shell variable expansion bugs.
Why VS Code TypeScript can report missing Node globals while tsc passes, and how explicit types: node fixes the language server.
How to validate that a user path stays inside a root directory on Windows without being fooled by drive-relative, UNC, case, or traversal paths.
How to avoid Next.js localStorage hydration bugs with usehooks-ts, typed defaults, dependency arrays, and a guard for effects derived from stored values.
Why Windows backslashes can turn into tabs when writing JSON through Git Bash inline commands, and why file-based scripts are safer.
A practical guide to diagnosing missing .next/routes-manifest.json errors caused by concurrent next build processes writing to the same .next directory.
How to keep a Node.js project inside OneDrive while moving node_modules to an external folder with a Windows junction.
Why MCP stdio servers should avoid console.log, keep stdout clean for JSON-RPC, and send diagnostic logs to stderr instead.
Why PowerShell New-Item -ItemType Junction is safer than mklink for node_modules junctions, especially in Unicode Windows paths.
How to design an MCP server for a Markdown knowledge base, why raw Markdown is better than HTML, and how to share one source across clients.
How to distinguish a real Vite build failure from a Windows post-emit crash by cleaning dist and checking fresh generated files.
How to choose between Cloudflare Pages Git integration and Wrangler Direct Upload before project creation, and why the choice affects deployment workflow.
Why next build passes but next dev fails with a CSS parse error in Next.js, how to detect NODE_ENV pollution, and how to fix it for good.
A focused checklist for Claude Code MCP servers that do not appear or do not respond after editing configuration.
Five common gotchas when exporting a Next.js 15 app with output: export — force-static metadata routes, no next/og, trailingSlash, and next/image — with fixes.
How to prevent silent Tauri v2 IPC bugs by making Rust serde names, TypeScript interfaces, optional values, and verification steps explicit.
A practical pattern for Tauri React apps: set UI state before async IPC, split cleanup from action errors, and show recoverable failures clearly.
How to choose between tauri-plugin-sql's JavaScript API and sqlx in Rust commands when building Tauri v2 apps with SQLite.
How to debug Vite env variables that appear stale, why .env changes require restart, and when to clear Vite's module cache.
How to stop Enter, arrow keys, and dropdown shortcuts from firing too early while Japanese IME composition is still active in React.
How to debug browser layout bugs caused by CSS zoom, transform, getBoundingClientRect, min-width:auto, and inline style overrides.
Why SVG foreignObject rasterization can taint a canvas in Chromium, how to detect it, and why Canvas 2D rendering is safer for WebGL textures.
Why Rust stream readers should find byte offsets on raw bytes before using from_utf8_lossy, especially for log tailing and partial UTF-8 chunks.
How to keep Rust notify watchers responsive on Windows by doing bounded work in callbacks and moving heavy parsing out of the event path.
How to avoid false memory-leak diagnoses in WebView2 apps by comparing Task Manager RSS, V8 heap snapshots, and high-frequency state updates.
How to test Tauri-backed Zustand stores in Vitest with jsdom, __TAURI_INTERNALS__ mocks, module reset, fake timers, and parity tests.
Why crypto.randomUUID works on localhost but can fail on LAN HTTP, and how to generate browser UUIDs with a secure getRandomValues fallback.
A testing pattern for runtimes that freeze high-level APIs: confirm descriptors, find the underlying transport, and intercept fetch or messages instead.