Tooling
-
Ansible at scale: where it breaks for us
Ansible got us from 10 to 200 managed hosts, but somewhere between 500 and 1000 it started to grind, and here are the specific pain points
-
fzf --preview as a whole-project find-TODO tool
Piping ripgrep into fzf with bat as a preview, narrowing interactively, and jumping straight into the editor at the right line.
-
TIL: just has variadic positional arguments
The +args and *args syntax in just is the thing I've been wanting.
-
TIL: fzf's --preview can run arbitrary shell commands
The --preview flag is way more flexible than I realized.
-
TIL: direnv layout_python just works
No more activating venvs manually. layout python in .envrc handles it.
-
Linking errors on Linux: an afternoon with ld
Undefined symbols, multiple definitions, and the weekend I finally understood how --as-needed and --no-undefined interact
-
Build tags are the quiet power tool of Go
Conditional compilation in Go via build tags is simpler than most preprocessor systems and I use it more than I expected
-
TIL: strace -k gives you syscall backtraces
strace -k shows the stack that led to each syscall, not just the syscall itself.
-
The day I learned Mach-O segments matter
Shipping a Go binary that loaded fine on Linux but segfaulted on macOS led me down a rabbit hole of executable file formats
-
go.sum conflicts during merges are always my fault
A short operational guide to resolving go.mod and go.sum conflicts without making the problem worse
-
TIL: jq's recurse operator finds things in arbitrarily-nested JSON
Turns out .. is jq's recursive descent, like XPath's //. Wish I'd known this years ago.
-
Cargo workspaces saved our monorepo
We were on the verge of splitting our Rust monorepo into separate git repos when workspace inheritance landed and changed the cost calculation
-
TIL: sqlite3 CLI has a .mode box
No more squinting at column output — box mode gives you pretty ASCII tables.