Uncategorized

  • The grid inspector is the only way to debug this

    Grid places items in tracks that have no representation in the DOM, so a misplaced item cannot be explained by inspecting elements — there is nothing to inspect…

  • void says the return value is not the point

    A method that exists for its effect has always returned null implicitly, which means a caller assigning its result gets something rather than an error. void makes the…

  • A queue is not a database and will not keep your history

    A message is delivered, acknowledged and gone. Treating the queue as a record of what happened means the record disappears as it is processed, and there is nothing…

  • Centralised logging that answers a question

    Four servers, eleven log files, and an incident reconstructed from three of them. Shipping first and parsing second, structured events, and the correlation id that makes it useful.

  • Publisher confirms, or the message was never sent

    basic_publish returns as soon as the message is written to the socket. The broker may not have accepted it, may not have routed it anywhere, and may have…

  • A timeout is not a concurrency limit

    Setting a five-second timeout on a slow dependency feels like protection and is not: with twelve PHP-FPM workers and a dependency taking five seconds, twelve concurrent requests occupy…

  • Every threshold needs a duration

    An alert on an instantaneous value fires on the spike that a deploy, a cron job or a single slow request produces, so the first thing anyone does…

  • Data providers run before setUp, every time

    A provider that builds its cases from something created in setUp() fails with a null, because every provider in the class runs before any test does — including…

  • list() with keys unpacks an associative row

    Destructuring only worked positionally, so a row fetched as an associative array had to be unpacked by hand — three assignments and a typo waiting to happen. A…

  • ignoreErrors is how you adopt this on old code

    Four thousand errors on the first run is a number nobody can act on, and the usual outcome is that the tool is removed. Ignoring the existing ones…