Daily Digest
Why TDD and AI coding tools exploit the same psychological flaws
Drew DeVault draws a provocative parallel between Test-Driven Development cults and GenAI adoption, arguing both exploit developers' psychological need to feel competent while potentially undermining actual code quality.
- TDD's hidden influence on architecture: While ensuring test coverage, TDD shapes codebases to be "testable" rather than well-designed, and provides no guarantee that passing tests verify the right behavior for actual user needs.
- The dopamine trap of development metrics: Both TDD's green test suites and AI's rapid output create addictive feedback loops through coverage percentages, CI badges, and productivity metrics that make developers feel competent regardless of actual code quality.
- AI coding agents as the new performance theater: GenAI tools let mediocre programmers experience the rush of 10x developer productivity, building "cathedrals" quickly that have beautiful test coverage but rotten foundations underneath.
- The psychological cost of shortcuts: Developers chase these tools despite knowing the externalities (environmental costs, job displacement) because the feeling of finally being "great" at programming overrides long-term concerns.
Latest Articles - Page 10
Fragments: May 5
Over the last couple of months Rahul Garg published a series of posts here on how to reduce the friction in AI-assisted programming. To make it easier to put these ideas into practice he’s now built a
Bliki: Mythical Man Month
In the early 1960s, Fred Brooks managed the development of IBM's System/360 computer systems. After it was done he penned his thoughts in the book The Mythical Man-Month which became one of the mo
Redis array type: short story of a long development
I started working on the new Array data type for Redis in the first days of January. The PR landed the repository only now, so this code was cooked for four months. I worked at the implementation kind
Content for Content’s Sake
Language is constantly evolving, particularly in some communities. Not everybody is ready for it at all times. I, for instance, cannot stand that my community is now constantly “cooking” or “cooked”
Links to CSS colour palettes
A while back I decided to stop using Tailwind for new projects and to just write vanilla CSS instead. But one thing I missed about Tailwind was the colour palette (here as CSS). If I wanted a light bl
Life During Class Wartime
War is bad. Don’t start one. But we’re already in a class war and we’re losing. Where by “we” I mean most people; the winning side comprises, roughly, the richest 0.1% of the population, who a
Minimal Viable Zig Error Contexts
Minimal Viable Zig Error Contexts May 3, 2026 fn process_file(io: Io, path: []const u8) !void { errdefer log.err("path={s}", .{path}); const fd = try Io.Dir.cwd().openFile(io, path, .{})
Scaling, stretching and shifting sinusoids
This is a brief and simple [1] explanation of how to adjust the standard sinusoid sin(x) to change its amplitude, frequency and phase shift. More precisely, given the general function: \[s(x)=A\cdot s