A heredoc expands variables and command substitutions by default, which is convenient for a template and disastrous for anything containing a dollar sign that belongs to another language.…
Lint failures arriving from CI ten minutes after a push are a context switch for something a machine could have fixed before the commit existed — and a…
strpos returns the position of the needle, and position zero is falsy — so the obvious check silently fails for exactly the case where the needle is at…
Hooks are matched to their state by call order, so calling one conditionally shifts every subsequent hook onto the wrong slot — and the failure is data appearing…
A catch that does not use the error still had to name a variable, which every linter then flagged as unused. Small and genuinely useful for feature detection…
PSR-2 predated return types, nullable types, multi-line arguments and trait conflict resolution, so every project had a house rule for each of them. PSR-12 writes them down. The…
The same card markup in nineteen templates, each subtly different. A CSS framework gives you classes, not components — and the gap is a macro per component.
An architectural boundary that exists only in a diagram is a boundary that has already been crossed, and the enforcement is a morning’s work. A violation becomes a…
Hooks are matched to their state by call order and closures capture by value, and both failure modes are silent — which is exactly the shape of problem…