The previous post argued that inputs must be declared, not inferred. Declared inputs have a weakness of their own: they can be wrong, and a task that reads a file its inputs never named produces a cache entry that…
I keep a small fixtures page for a football club I follow, and for a long time the kick-off times were stored as plain strings like "15:30". That works until someone in another country opens the page, or until the data…
Ask around about any monorepo tool and you will hear the same story: a vite still holding port 5173 after the run was cancelled, a tsc -w from last Tuesday, a CI job whose cancellation left a database container running…
Picking Chart libraries compatible with React and Angular can be a make-or-break moment for your project. The sheer mountain of data we shove into browsers can quickly snowball, and if your rendering engine chokes, your…
A few weeks ago I wrote about keeping the league table readable when the signal at the ground disappears. The fixtures list had the same problem, plus one of its own: people only ever want the next game, and they want…
Some tasks do not finish. A dev server, a watcher, a database for the integration tests. Most runners either refuse to model them or model them as "run this and never wait," which leaves the interesting problem to a…
Deno's entire team is joining Cloudflare. If you host an application on Deno Deploy, the announcement gives you a six-month operating window before the service shuts down. Cloudflare Workers is the destination named in…
Building professional React financial charts is about much more than putting a candlestick chart on a screen. Whether you're building a crypto exchange, a stock trading app or an institutional terminal, you need to…
vx watch test --all runs test in every project, then re-runs it on every change. The interesting design decisions are in what it refuses to do. No per-event glob matching The tempting design is to compare each…
A structured-output hiring packet should pass only when a deterministic checker accepts valid tool calls and rejects truncated or over-broad payloads. Model confidence, a successful local demo, and a polished…
A cache key is one opaque hash. When it changes, knowing that it changed is nearly useless. You need to know which of its parts moved. Most tools do not keep that information; they compute the hash, compare it, and…
Every calorie app I tried had the same problem: it let you set a target of 1,200 calories or lower and called it a plan. Some went lower. That's how people end up in the binge-starve cycle — you eat 800, your body…
Here's a pattern almost every product with invoicing eventually hits: revenue is up, the growth chart looks fantastic, and yet the bank balance is oddly thin. The founder asks, "Where's the money?" and somebody opens a…
Notifio is a £20 one-time purchase. Not £20 in the UK and something else elsewhere: every Checkout Session is created in GBP pence, the webhook records GBP, the licence is GBP. There is exactly one currency in this…
Every monorepo tool eventually describes itself with a paragraph of nouns: caching, task graph, remote execution, affected detection, generators, a dashboard, a cloud. vx's description is one sentence. vx runs and…
vx runs and caches a task graph, correctly, and stops there. It is a task runner and a content-addressed cache for JavaScript monorepos, built on Bun, with nothing hidden behind a paid cloud. One run, then the same run…
If you've ever shipped an invoicing feature, a wallet, a marketplace payout flow, or even a "simple" subscription billing page, you've written code that touches money. And if you've written code that touches money,…
Why DXF Is Not Just a 'Text Version of DWG': Floating-Point Roundoff and Entity Drops Engineers often assume that saving a CAD model as DXF (Drawing Interchange Format) is simply exporting an ASCII equivalent of native…
If you're beginning your journey into web development, you've probably encountered two words almost immediately: HTML and CSS. You may have seen developers writing HTML elements, CSS rules, classes, selectors,…
Declarative vs Imperative Animation in React: Where Each Model Wins A menu opens because isOpen became true. A notification leaves because React removed it from the tree. A card changes visual state when it receives…