Bazel, Symfony, and Long Migrations
A long migration should be easy to pause and resume. An old PHP-to-Symfony rewrite taught me how to move a large Bazel repository without stopping the release train.
Loading...
Topic
Theory, judgment, design, and reflective notes about building software that survives contact with reality.
A long migration should be easy to pause and resume. An old PHP-to-Symfony rewrite taught me how to move a large Bazel repository without stopping the release train.
Writing code used to build some understanding along the way. AI can now produce the diff without producing that understanding.
A number from agricultural history made the AI analogy click: farming did not vanish when labor shrank, and software may be entering a similar turn.
AI lowered the cost of generating code. The expensive parts moved into understanding, verification, maintenance, and trust.
Ad lazy loading is not just "load when visible". A useful implementation separates layout reservation, bid requests, rendering, and refresh policy, then tunes each step around real latency and viewability goals.
The official Prebid.js bidder adapter path is registerBidder. This article covers the narrower, reverse-engineered path: registering a runtime adapter with registerBidAdapter and returning bid objects that Prebid can actually match to ad units.
A practical TypeScript pattern for chatbot message parsing: small predicates decide when a parser runs, parser functions emit domain events, and the dispatcher stops only when a command asks it to.
Git uses the words ours and theirs from the point of view of the operation it is currently performing. That is why they mean one thing during merge and can feel reversed during rebase.
Well, it's plain and simple to express: Err and err and err again, but less and less and less. - Piet Hein
A historical PHP walkthrough of Universal Analytics Measurement Protocol, preserved with clear guidance to use the current GA4 protocol today.