All articles
-
Keep transaction boundaries visible
Document which state changes commit together and what can happen between database transactions and external calls.
-
Morph Targets: Combine Vertex Deltas Without Losing the Base Shape
Build predictable facial and corrective deformation by preserving vertex correspondence, additive weight semantics and the order of morphing and skinning.
-
Choosing permission checkpoints for queued jobs after access is revoked
Make the timing of authorization explicit when a request schedules work that runs later. The proposed exercise separates permission to enqueue work from permission to execute it and retrieve its output.
-
Checking placeholder contracts when an agent adds translated interface text
Preserve the runtime meaning of placeholders and message variants while translating interface text, so fluent prose does not introduce broken substitutions or missing cases.
-
Python 3.10 after end of life: finding runtimes and rebuilding environments
Python's upstream lifecycle table records 1 October 2026 as Python 3.10's end of life. Inventory the interpreters actually used by services, virtual environments and images, then rebuild and test each application on a supported branch.
-
Pipeline, fan-out, orchestrator and critic panel: which multi-agent pattern fits which task
A pipeline fits tasks with a fixed sequence of transformations; parallel fan-out fits independent sub-questions or repeated attempts to vote on; an orchestrator with workers fits tasks whose decomposition is only known at run time; a critic panel fits outputs that need review against several criteria; each multiplies token cost and adds a coordination layer that can fail on its own.
-
Changing a DNS record with a rollback path: TTL lowering, cutover and verification
A DNS change reaches users only as fast as the old TTL expires in caches, so lower the TTL one full old-TTL period before the change, keep the old target serving until the new one is confirmed everywhere, and account for resolvers that serve stale data when authoritative servers are unreachable, as RFC 8767 allows.
-
Base64 variants: standard vs URL-safe alphabets, padding rules and decoder strictness
RFC 4648 defines both the standard and URL-safe base64 alphabets and requires padding by default, but JWTs explicitly omit it, MIME wraps lines at 76 characters while GNU base64 needs -w0 to stop doing the same, and decoders from Python to the browser disagree on whether stray characters and missing padding are errors.
-
PowerShell error handling for admin scripts: terminating errors, $ErrorActionPreference and $LASTEXITCODE
PowerShell has two error classes that behave differently in a script: terminating errors that try/catch can stop, and non-terminating errors that only $ErrorActionPreference or -ErrorAction can turn into a stop. A third class, failures from native executables, follows neither path unless $PSNativeCommandUseErrorActionPreference is set (PowerShell 7.4+, experimental in 7.3).
-
Using HTTP status codes correctly: the client's first branching point
Clients, caches and agents decide on the status code alone whether to retry, reload or give up: 201/204 for success with and without a body, 401 versus 403 for missing authentication versus missing permission, 409/412/428 for conflicts and preconditions, 429 and 503 with Retry-After for "later". A 200 with an error object misleads all of them.
-
Monitoring TLS certificate expiry on every endpoint, not only the main website
An expired certificate is an outage with an exactly predictable time; probe the notAfter date of every certificate actually served (web, API, mail, internal panels, load balancers) from outside, alert with a lead time long enough to renew by hand, and check the intermediates as well as the leaf.
-
Managing ZFS boot environments with beadm and rolling back a failed update
beadm list/create/activate/destroy manage the ZFS boot environments that pkg update creates automatically when an update requires a reboot. Activating the previous boot environment and rebooting is the supported rollback for a failed update, with no need to reinstall packages by hand.
-
Print stylesheets: making a web page usable on paper and as PDF
A print stylesheet hides navigation and controls, expands collapsed content, prints link targets after the link text, sets page size and margins with @page, prevents tables and figures from splitting with break-inside: avoid, and asks the browser to keep essential background colours. Test with the browser's print preview, not only on screen.
-
Continuous profiling in production: always-on sampling profiles and what they answer
Continuous profiling takes CPU and memory profiles systematically over time and stores them as labelled series, so a team can ask which function consumed the most CPU across the fleet yesterday or what changed between two versions; sampling profilers make it cheap enough to leave on, and runtime endpoints such as Go's /debug/pprof/ or eBPF agents supply the profiles.
-
ripgrep's default filtering shortens agent code searches compared with grep -r
Hypothesis: coding agents that search repositories with ripgrep's default ignore rules (git-ignored, hidden and binary files skipped) need fewer search calls and read less irrelevant output per task than agents using grep -r without exclusions, because hits in build output and dependencies are absent; no measurement is reported.
-
Summarizing time in system calls with strace -c, its overhead, and perf trace as an alternative
strace -c counts time, calls and errors per system call instead of printing every call, but strace's own manual warns that a traced process runs more slowly than an untraced one; perf trace, described as a strace-inspired tool built on perf_events rather than ptrace, is the lower-ceremony alternative when that overhead matters.
-
A scheduled documentation day brings in more first-time contributors than a standing call for documentation help
Hypothesis: a project that announces a single day with a curated list of small documentation issues, maintainers available for same-day review and a good-first-issue label on each task receives more merged documentation changes from people who had never contributed than the same list left open all year; a proposed comparison on one project's own history.
-
Designing a Python command-line tool: argparse, main() and exit codes
Put the interface in a main(argv) -> int function registered as a console script, validate with argparse type and choices, follow the exit-code convention (0 success, 2 usage error, 1 other failure, sysexits codes only if documented), keep results on stdout and diagnostics on stderr, and handle SIGINT and broken pipes.
-
Writing a portable POSIX sh script across Linux, BSD, macOS and AIX
A script meant to run unchanged on Debian's dash, a Linux box's bash-as-sh, FreeBSD, macOS and AIX has to stay inside the POSIX Shell Command Language and avoid GNU-only tool flags; checkbashisms and a short list of GNU-versus-BSD command differences catch most of what breaks.
-
Upgrading Debian and Ubuntu to the next major release without losing a rollback path
Ubuntu's do-release-upgrade and Debian's manual sources-list-then-upgrade procedure both assume a full backup and a console fallback in case the SSH session drops mid-upgrade; Debian's own release notes recommend a minimal upgrade pass before the full one.
Machine-readable: JSON