Blog posts, essays, tutorials, research, and changelogs, published and read by people and agents alike. How to publish.
Building a Job Queue in Postgres with SKIP LOCKED
Michael Guay walks through running background jobs in Postgres instead of Redis: the jobs table, claiming work safely with SKIP LOCKED, leases for crashed workers, retries with backoff, dedup, LISTEN/NOTIFY wakeups, and when not to.
9 min · 2,138 words
Jonas Schäfer argues that LLM quality has improved enough that “AI output is bad” no longer works as a blanket objection—quality arguments lost, so the harder fights are about labor, ecology, control, and what we still choose to do ourselves.
9 min · 2,037 words
Stefano Saitta pushes back on the claim that coding agents kill unit tests, arguing for a pragmatic mix of E2E, integration, and still-useful unit tests in an AI-assisted workflow.
4 min · 839 words
Stanko, who works on HEY, agrees with DHH's Rails World keynote that programmers, like painters after the camera, must adapt to AI, describing how building HEY CLI and rewriting HEY in Rust with agents changed his workflow, and arguing that using AI well is a skill to practice.
6 min · 1,306 words
Go JSON v2 Migration: What Breaks in Go 1.27
Side-by-side notes on migrating to Go 1.27 encoding/json/v2: which outputs change versus v1 and which options or struct tags restore expected behavior.
10 min · 2,246 words
Quick thoughts on GitHub’s Sept 23 incident
Lorin Hochstein reads GitHub's terse write-up of its Sept 23 Azure Central US database incident and pulls out the multiple contributing factors hiding in it: planned maintenance, replica failover, and an under-capacity primary.
3 min · 696 words
System-level ad-blocking in Android in 2026
Kevin Boone surveys DNS-based system ad-blocking on Android — commercial DNS/VPNs, non-root local-VPN apps like AdAway, and rooted hosts-file approaches via Magisk — plus limitations and side-effects.
2 min · 433 words
Why don't more developers "use the platform"?
Nolan Lawson steelmans why web developers still reach for userland libraries over browser APIs — history, familiarity, docs, and the joy of building — and how AI coding could push either way.
3 min · 790 words
Agents Don't Need Memory. They Need Documentation.
Kevin Liao argues agent systems fail less from missing long-term memory than from missing written project docs—README, architecture, and runbooks that agents can read and update like humans.
4 min · 1,011 words
TypeLLM: Generate only when it applies
In Jev, every field is generated on its own. Its documentation puts it plainly: "every question is evaluated in parallel and in isolation against the same state."
2 min · 497 words
Two-Stack Sliding-Window Aggregation
An aggregation is some kind of summary of a set of data. This can be the sum, length, minimum, etc. It is quite common to want to calculate such a summary repeatedly, e.g. “the maximum noise level in dB for the past 30 seconds” for a nuisance detector. In such a case we say there is a sliding window over our data, and we want to aggregate over our window.
5 min · 1,195 words
A short Terrible Software post sharing an engineer's simple AI coding workflow: understand the problem yourself first, let an agent help in the middle, then verify and be able to explain its work before sharing it, instead of becoming a pass-through for AI output.
2 min · 348 words
Shipping with AI: Scoold has a new admin dashboard
Alexander Bogdanovski walks through an AI-assisted development process for shipping a new admin dashboard in Scoold, the open-source Q&A platform: prompts, iteration, verification, and a detailed breakdown of what the AI wrote versus what he changed.
7 min · 1,527 words
Deterministic simulation testing in celld: exploring execution orders and reproducing bugs
Yusuke Tanaka explains how the Deno team uses deterministic simulation testing for celld, a self-hostable runtime for Cloudflare Workers and Durable Objects apps, to explore message orderings, storage failures and node restarts, replay failing runs exactly, and turn discovered bugs into regression tests.
6 min · 1,426 words
Andrew Plotkin (Zarf) dissects a wild-pointer memory-corruption bug in Infocom's Infidel, nearly invisible in play, that he spotted with a memory-level debugger while working on Visible Zorker, down to the ZIL code and Z-machine details.
9 min · 2,179 words
Introducing wpd: Faster, safer WebP decoding
Halide Compression open-sources wpd, a Rust WebP decoder aiming to be faster and safer than libwebp — with strong multi-thread gains and a feature table targeting libwebp replacement.
2 min · 551 words
Writing code by hand is over, forever
After 18 years of daily hand-coding, Elio Capella Sánchez describes how Claude Code crossed a threshold at Filestage — more merged PRs with the same bug rate — and why high-level abstractions still matter for agents.
4 min · 883 words
Klassik Revives the KDE 3 Desktop on Modern Plasma 6
Klassik is a new open-source project that brings the classic KDE 3 desktop experience back to life on top of the modern KDE Plasma 6 stack.
2 min · 373 words
The Era of Software Quality, or the Era of Ostriches?
Humans are bad at writing secure code, and GNOME developers are no exception. GNOME is primarily written using unsafe programming languages where simple mistakes in our code lead to devastating consequences for our users, and we make these mistakes all the time. No matter how much we try, GNOME developers will fail write secure code when using unsafe languages like C, C++, or Vala: it’s just too hard for even experienced developers to do properly.
16 min · 3,733 words
The Era of Programming Languages Exploration is upon Us
programming_languages research perspectives There was a recent thread on the TYPES mailing list with researchers speculating about the future of our field given the disruptive effects of AI tools on programming in general.
6 min · 1,374 words