Let’s work through todays items one by one because they’re each worth your full attention.
Sebastian Bergmann’s Data Provider or Properties? is the clearest explanation I’ve seen of how these two PHPUnit strategies actually differ at the execution level. Data providers freeze known scenarios with full PHPUnit isolation, setUp() runs fresh for every dataset. Property-based testing with Eris generates hundreds of inputs, but from PHPUnit’s perspective it’s one test, so setUp() runs only once across all those iterations. That isolation difference is easy to miss and genuinely bites people. Bergmann’s bottom line: use both, intentionally, for different purposes.
George Guimarães’ Your Agent Framework Is Just a Bad Clone of Elixir makes a strong case that every pattern the Python AI ecosystem is reinventing, isolated agent state, message passing, supervision trees, fault recovery, was solved by Erlang’s BEAM virtual machine in 1986. LangGraph, AutoGen, and CrewAI are all independently converging on the actor model. The practical point isn’t “rewrite everything in Elixir” but rather: understand what you’re building against. The BEAM’s “let it crash” philosophy handles non-deterministic LLM failures more gracefully than defensive try/catch in Python ever will. A genuinely eye-opening read even if you never write a line of Elixir.
Birgitta Böckeler’s Context Engineering for Coding Agents on Martin Fowler’s blog is the best structured primer I’ve found on this topic. She breaks down Claude Code’s context features, CLAUDE.md, rules, skills, subagents, hooks, MCP servers, along the two axes that actually matter: what kind of content they carry (instructions vs. guidance) and who decides to load them (the LLM, a human, or the agent software itself). The “illusion of control” section is the part to share with anyone who’s overclaiming what a good CLAUDE.md can guarantee.
Tyler Hillery’s Subtle SQLite Mistake is a short, sharp post about SQLite’s type affinity system catching someone off guard. Unlike PostgreSQL’s strict typing, SQLite stores values based on declared affinity rather than enforcing them,which means a column you intend to hold integers can silently accept strings, breaking comparisons in ways that are genuinely hard to debug. Good to bookmark if you’re using SQLite in any production capacity.
PHP Reads is a weekly curation project from Stefan Priebsch and Sebastian Bergmann of thePHP.cc, three hand-picked PHP articles per issue, each with a personal note explaining why they chose it. No buzzwords, no ads, no filler. Issue #7 featured the “What Color Is Your Function?” async essay alongside a PHPStan codebase analysis piece and the Tideways OPcache tuning guide. If you want to stay sharp on PHP writing worth reading, subscribe to the RSS feed and stop searching.