#devops
CI/CD, infrastructure, deployment, containers
Writing
- Three Things That Bite You When You Ship gRPC to Production
Three things about gRPC that look fine in tutorials and bite you in production: load balancer imbalance, browser incompatibility, and silent schema corruption.
- Efficiently Managing Mass URL Redirects with Nginx
Manage URL redirects with Nginx's map directive and a separate configuration file
TIL notes
- Jul 18, 2026
Lobste.rs moved to SQLite, and the HN thread had sharper lessons than the post itself:
- WAL checkpoints only run during “reader gaps.” Keep reads/writes continuously overlapping and the WAL file grows unbounded, a DoS vector kgeist reproduced with short-lived reads/writes, not just long-lived readers as the docs imply.
- Writes are fully serialized, one fsync each, yet app-layer batching still gets 100k+ writes/sec.
- Plain rsync on a live .db file can silently corrupt it since it doesn’t understand SQLite transactions. Use sqlite3_rsync instead.
- The real weak point is schema migrations: treat SQLite like a KV store, or reach for CQRS, to keep the churn low.
- Jul 15, 2026
SecretSpec declares secrets once in
secretspec.toml(names + descriptions, never values) and resolves them from any of 11 backends: keyring, 1Password, Vault, AWS, GCP, .env. Same command everywhere:secretspec run --profile production -- npm start. Per-secret fallback chains (providers = ["vault", "keyring", "env"]) and aref = { item, field }form points at a secret you already have elsewhere, no renaming. Sharpest bit: agents get held to a stricter bar by default.require_reason = "agents"forcessecretspec run --reason "..."before an AI agent can read a secret, appended to a local audit log; humans running interactively are unaffected. Rust core, SDKs for Python/Go/Node/Ruby/PHP/Haskell. Worth piloting on a project drowning in.envsprawl. - May 29, 2026
Dynamic workflows in Claude Code. Claude dynamically writes orchestration scripts that spawn tens to hundreds of parallel subagents. It plans, decomposes into subtasks, fans out agents, and checks results before returning a coordinated answer. Adversarial agents try to refute findings, iterating until convergence. Enable via
ultracodesetting or ask Claude to “create a workflow”. Notable: Jarred Sumner used it to port Bun from Zig to Rust (~750K lines, 11 days). Available on Max, Team, Enterprise plans. Consumes significantly more tokens than typical sessions. - Apr 4, 2026
mise let’s you manage dependencies at OS level and project level. Thinking to manage my dev machine. The hard part is documenting what I have installed.
- Feb 10, 2026
Hono based on web standards is a great option for js runtimes esp. if you plan to deploy your code to cloudflare workers, bun or deno. You get faster startup time and cross-platform compatibility.
- Jan 12, 2026
The free-threaded version of python can be added to uv and github actions with
tsuffix. e.g.3.14tand3.13tsource - Dec 20, 2025
New tools:
- gh-actions-lockfile to generate and verify lockfiles for gh-actions
- Proxyman is more user-friendly http debugging proxy than Charles Proxy on MacOS
- Dec 10, 2024
actions/checkoutsaves the workflow token (GITHUB_TOKENor a custom one) in the checked-out repo’s.git/configby default. Workflows that upload the repo as an artifact leak it, and Unit 42 found many projects doing this. GitHub calls it intended behaviour. Turn it off, and scan workflows with zizmor, which would have caught the Ultralytics injection.- uses: actions/checkout@v4 with: persist-credentials: false