Uncategorized

  • ROWS and RANGE differ exactly when there are ties

    ROWS counts physical rows and RANGE counts values, so they are identical until two rows share an ordering value. RANGE is the default when a frame is not…

  • An OIDC trust scoped to one branch

    The token exchange replaces a long-lived key with a short-lived one, and the value is entirely in how narrowly the trust is scoped. Omitting the subject condition means…

  • Structured logs, and the field that must be a field

    A formatted message is a string a machine has to parse back, and every parser is a regular expression somebody will break. The message becomes a stable event…

  • JSON_TABLE turns a document into rows

    A JSON array in a column can be joined against as a table, which is occasionally the right answer and is more often a sign the data wanted…

  • Block deprecations exist because save() is a contract

    A static block’s save output is stored in the post, and changing it invalidates every existing instance unless the old shape is still declared. Without the deprecation the…

  • PHPStan 1.0 promises backward compatibility for the levels

    After five years of 0.x, 1.0 in November is a commitment that a level will not start reporting new errors in a patch release. The practical difference is…

  • Versioning an API in the URL is honest and ugly

    Every API versioning scheme is a trade between visibility and purity, and the URL version is the one nobody can get wrong. The argument against URL versioning is…

  • An InnerBlocks template with allowedBlocks

    A container block can specify what it starts with and what may be added, which is the difference between a layout and a suggestion. allowedBlocks restricts the inserter…

  • Teleport, for the modal that fights a stacking context

    A modal rendered inside a component with overflow: hidden or a transform is clipped by an ancestor no amount of z-index will escape. Keeping the logical position while…

  • PHPStan level 8 is nullability and nothing else

    Level 8 checks calls on values that may be null, and it is the level where most projects discover how much of their code assumes otherwise. The temptation…