Uncategorized

  • Compose file v3 dropped volumes_from

    A version 2 file could share a container’s volumes with volumes_from, which is how the data-container pattern worked. Version 3 removes it, because a scheduler placing containers on…

  • A systemd unit that waits for the network to be actually up

    After=network.target means the networking stack has been configured, not that an interface has an address — so a service binding to a specific IP fails at boot and…

  • webpack 3 scope hoisting, and what it actually saves

    webpack wraps every module in a function, which costs a closure per module at parse and at runtime. Scope hoisting concatenates modules that can safely share a scope…

  • Aggregate boundaries are transaction boundaries

    The rule that makes aggregates useful is that one transaction touches one aggregate. Everything else follows: what belongs inside, what is referenced by id, and where consistency is…

  • Negative string offsets read from the end

    Reading the last character of a string has been $s[strlen($s) – 1] for two decades, which computes the length to throw it away and reads badly next to…

  • React 16 error boundaries stop one component killing the page

    Before 16, an exception during render left React in an inconsistent state and the usual advice was to let it crash. 16 unmounts the whole tree by default,…

  • A filter context does not score, and is cached

    Every clause in a query context computes a relevance score, including the ones that are yes-or-no questions — in stock, in this category, under this price. Scoring them…

  • An async function always returns a promise

    Marking a function async changes its return value regardless of what the body does, which is obvious stated plainly and is the source of most confusion about them.…

  • The distributed monolith is the usual first result

    Six services that must be released together, share a database and call each other synchronously have every cost of distribution and none of the benefit. It is the…

  • Static analysis on a codebase that has never had any

    Four thousand errors on the first run is a number nobody can act on. Starting at level 0, ignoring by pattern, and raising the floor one level at…