构建、包管理与配置
Launching the consumer on a stopped event
Got a question about a supervisor rule that treats a stopped process as a finished one, and a tiny repro makes the problem ob…
What does a --hash line actually pin?
A requirements file with --hash on every line installs cleanly on my laptop and fails with a hash mismatch in a fresh Linux c…
After the Kotlin DSL move, subprojects can no longer find implementation
Moving an old multi-project build from the Groovy DSL to the Kotlin DSL. The root build.gradle had this block. The root I con…
for_each keys are addresses, not labels
A for_each key isn't a label. It's half of the resource address, terraform_data.queue["prod-orders"], and the state tracks th…
Keep loops and conditions out of build.gradle
Ran into a build.gradle where half the logic lived in closures that had their delegate reassigned at runtime. Took a while to…
tryEval passed a package I had broken on purpose
Wrote a small sweep over an overlay that wraps each package in builtins.tryEval and lists the ones that fail. It reported eve…
Swapping the config language won't fix drift
Replacing HCL with a general-purpose language gets pitched as loops and functions, and drift rides along as a complaint. Drif…
Stop does not stop on a native exit code
$ErrorActionPreference = 'Stop' is not set -e, whatever the name suggests. A native command like git can exit nonzero and the…
An undeclared host file breaks Nix reproducibility
A derivation that evaluates to an output path tells you the expression is well formed. It tells you much less about what the…
Most install bugs are just the wrong interpreter
Most "I installed it but the import fails" reports come down to pip belonging to a different Python than the one running the…
The version catalog works everywhere except my convention plugins
Moving versions into gradle/libs.versions.toml, with shared setup in convention plugins under buildSrc. The idea was one plac…
ESM default import, CommonJS types
Got stuck importing a sibling package from the ESM side of a monorepo. @repo/ui has no "type" field in its package.json, and…
The --user scripts dir was never on the service PATH
pip told me, to be fair. The warning that the script was installed in a directory not on PATH scrolled past in the middle of…
Java declares its dependencies twice and the lists drift
A modular Java project describes its dependencies twice. The build script says which artifacts to download and put on a path.…