The Spectator: Zelensky’s strategy is national suicide - Iuliia Mendel
Author: Iuliia Mendel
Publication: The Spectator
Date: September 15, 2026
Source: The Spectator
The Spectator: Zelensky’s strategy is national suicide - Iuliia Mendel
Author: Iuliia Mendel
Publication: The Spectator
Date: September 15, 2026
Source: The Spectator
Field notes for app developers who want to ship an AirPlay / speaker output picker on macOS. Based on public APIs, Apple/DTS statements, community engineering (WebKit, shairport-sync, Rogue Amoeba, open-source players), and live probes on macOS 26.5.2 (facts verified on hardware are marked 🔬).
Distilled from reading better-result (the reference implementation) and the current tsdown docs. Apply to any library — including result-rpc.
| Tool | Role |
|---|---|
| tsdown 0.22+ | build: ESM and/or CJS, .d.ts generation, minify, sourcemaps — and built-in publint + attw validation that runs on every build |
A driver-agnostic tryDb for better-result 3.0.
Stop hand-writing instanceof/error.code checks — attempt the insert, get a
Result<T, DbError> back, and fold the failure into your domain vocabulary at
the handler boundary.
import { tryDb } from "./db-result.ts";The undocumented behavior that every third-party iOS keyboard has to reimplement — reverse-engineered, with the escape hatches spelled out.
Compiled while building Lyklaborð, a privacy-first Icelandic keyboard. Corrections welcome.
Generated: 2026-06-02T15:52:14.847Z
tour.is_published = true, tour.is_unlisted = false, and tour.dato_id IS NOT NULL.allTours records from the Content Delivery API.customData.layout = "vertical".This prompt is for teams that want to bolt an agent-native sandbox onto an existing monorepo.
The goal is not to create another E2E suite or a prettier docker-compose up. The goal is to give coding agents a disposable, inspectable, worktree-local environment where they can behave more like a careful human doing manual QA: open the app in a browser, click through real flows, inspect logs, read local side effects, check emails, review analytics/error events, adjust seeded scenarios, and produce visual proof without waiting for a human to run the project.
Think of this as giving agents vision and x-ray access to the app. Each agent/worktree should be able to spin up its own realistic runtime, keep working longer, avoid port fights with other agents, and leave behind evidence artifacts that make reviews easier.
The shape you are aiming for is this:
Hot take: TUIs are a phase, and GUIs that basically emulate TUIs are a phase too. We just don't know how the IDE of the future will look like.
He's talking about the arc of dev tools. Terminal, then Notepad++, then richer IDEs, then VSCode. Each phase building on the last, borrowing metaphors, adding chrome. What comes next?
But something about the question stuck with me.
Unix evolved under constraints. Teletypes. Tiny memory. Slow connections. Those limits forced everything through text — and text turned out to be strangely universal. Decades later, everything still speaks it.
Deployment plan: dato_tour → tour rename (PR #1418)
PR #1418 renames dato_tour → tour tables, switches 97 files, and establishes the foundation for admin-first tour creation. Existing tour rows keep DatoCMS IDs as Tour.id; new Tour.datoId column (nullable) links to DatoCMS content. New tours get cuid2 IDs.
Migration strategy: Expand-Contract (zero-downtime reads)
This documents the struggles encountered migrating a Next.js 15 blog (with MDX, Shiki syntax highlighting, and OG image generation) to vinext on Cloudflare Workers.
The showstopper. @mdx-js/mdx's run() internally calls new Function() to evaluate compiled MDX. Workers completely blocks eval and new Function at request time.
EvalError: Code generation from strings disallowed for this context