Articles

Releases, updates, and thoughts on web application development, with a focus on React, CSS, JavaScript, TypeScript, and Node.js. In chronological order.

A security scan flagged Pillow. I ended up deleting three Pythons.

What started as "just update the vulnerable packages" turned into a full audit of my Mac's Python chaos — Homebrew Pythons installed as dependencies, a forgotten python.org installer, pyenv, Xcode CLT stubs, and per-version user sites. This is the whole journey from findings to purge.

What does T[keyof T] mean?

Indexed access distributes over unions. That single rule turns T[keyof T] from noise into the union of every value type in T.

Native {@link} Stops at Imports — Help Push TypeScript Past It

VS Code already resolves {@link} for symbols the current file imports, and gives up on everything else. Go To Definition for JSDoc closes that gap today — and if enough projects adopt it, that is evidence TypeScript could support it natively.

`disallowed-tools` Isn't a Context Cutter — It's a Choice Budget Lever

Claude Code v2.1.152 quietly added `disallowed-tools` to Skill frontmatter. My first reaction was to file it as a 4th Skills lever for trimming initial context — that turned out to be wrong, but the thing it actually does is more interesting: it spends Claude's reasoning budget more carefully by shrinking the tool selection space.

Cutting Claude Code's Initial Context Bloat — Skills, Plugins, and MCP Tactics

What Claude Code actually loads into context at startup once Tool Search defers MCP and built-in tool definitions on demand — why the live window is far smaller than the raw totals imply, and why Skills (not MCP) is now the biggest line you can cut, plus the plugin and MCP-instruction levers that trim the rest.

OSS Feed: 2026-04-26

Daily OSS activity digest — React, TanStack, Next.js ecosystem

OSS Feed: 2026-04-25

Daily OSS activity digest — React, TanStack, Next.js ecosystem

OSS Feed: 2026-04-24

Daily OSS activity digest — React, TanStack, Next.js ecosystem