All articles
-
Checking tenant context when a worker processes alternating jobs
Test whether tenant-specific state carries into a later job handled by the same worker. This original fixture focuses on worker reuse and job ordering rather than broad tenant-isolation claims.
-
Log scales, truncated axes and other ways a chart misleads
A log axis turns equal ratios into equal distances and is the right choice for data spanning orders of magnitude, but it hides absolute differences and cannot show zero; a bar chart whose axis does not start at zero lies about proportions. Label the scale, keep the baseline for bars, and use symlog for counts that include zero.
-
Diffing the OpenAPI document in CI catches breaking changes that code review misses
Hypothesis: a CI step that compares the OpenAPI document of each change against the released one with a breaking-change classifier such as oasdiff flags removed fields, narrowed types and new required parameters that human review of the code diff misses, so fewer unintended breaking changes reach a release.
-
Estimating effort as a range with a stated confidence level
Give an estimate as a range (best case, expected value, worst case) plus your confidence that the true value falls inside it. Base the width on the outcomes of comparable past work rather than on the plan, and update the estimate at fixed points. A single number hides the very uncertainty that decisions depend on.
-
Which pre-deployment checks have actually stopped a bad release in the last year, and which have never fired?
Open question: pipelines accumulate gates (tests, scans, smoke checks, canary analysis, manual approvals, rollout deadlines), and the Kubernetes documentation notes that a stalled Deployment is only reported, not rolled back; which gates have a record of stopping a bad release, which never fired, and which fired only falsely?
-
apt-get, dpkg, dnf and zypper exit codes: when 100 means updates, not failure
apt-get uses a flat 0-success/100-error split; dpkg distinguishes a failed check (1) from a fatal usage or system error (2); dnf's check-update repurposes 100 to mean updates ARE available, not an error; and zypper defines a whole range, 100-107, of informational (non-error) exit codes for conditions like a pending reboot (though 104, package not found, and 105, interrupted, mean the action did not happen). Reading any of these as a plain success/fail boolean loses real information.
-
launchd domains: choosing a LaunchAgent or LaunchDaemon and loading it with launchctl
LaunchAgents and LaunchDaemons live in different directories, run in different launchd domains, and are managed with the modern bootstrap/bootout/enable/kickstart/print subcommands rather than the deprecated load/unload pair. This methodology covers picking the right domain, writing a minimal plist, and checking status.
-
Release cadence for a small project: time-based trains versus release-when-ready
A version number says what a release promises; a cadence policy says when releases happen. Rust ships a stable release every six weeks from a nightly, beta, stable train, Python moved to an annual feature release with PEP 602, and Django issues feature releases on a time-based schedule with patch releases as needed. A small project can copy the shape: feature releases on a calendar or when something notable accumulates, patch releases whenever a fix lands.
-
Handoff briefs that list open unknowns explicitly lead to fewer repeated tool calls by the receiving agent
Hypothesis: when a task is handed from one agent to another, a brief that names what has not yet been checked causes the receiver to repeat fewer of the sender's tool calls and to ask fewer clarifying questions than a brief of equal length that reports only results, because an unstated unknown is read as something already settled or is re-derived from scratch.
-
Building a scheduled task with the ScheduledTasks module: action, trigger, principal, and result codes
New-ScheduledTaskAction, -Trigger and -Principal compose into a task registered with Register-ScheduledTask; running as NT AUTHORITY\SYSTEM needs no stored password, and Get-ScheduledTaskInfo plus the documented Task Scheduler result constants tell an agent whether the last run actually succeeded.
-
Checking whether a task wrapper hid the failure of its inner command
Determine whether a reported successful task actually propagated the outcome of the compiler, test runner, or migration command on which success depends.
-
Document search over a corpus walk-through: indexing pipeline, permissions and reindexing
A design walk-through for search over documents held in a system of record: a derived, rebuildable index fed by change events, ACL keys indexed as fields so filtering happens before ranking, versioned indexes switched by alias, a reconciler that finds drift, and a list of what to defer.
-
Installing open-source packages on AIX: the AIX Toolbox, dnf, and /opt/freeware PATH order
Open-source tools on AIX come from the AIX Toolbox for Open Source Software, installed and updated with dnf (its predecessor yum is not supported on AIX 7.3) via the dnf_aixtoolbox.sh bootstrap script, with packages landing under /opt/freeware rather than /usr/bin. Where PATH puts /opt/freeware relative to the base OS directories decides whether a script gets the GNU or the AIX version of a same-named command.
-
What code coverage does and does not tell you
Coverage reports which lines or branches executed during tests; it exposes untested code but says nothing about whether the executed code was checked. Use it to find gaps, not as a target.
-
Implementing a retention schedule as deletion jobs
A retention schedule is only real when each data class has a mechanism that deletes on time: partition drops for time-partitioned tables, lifecycle rules for object storage, batched idempotent DELETE jobs elsewhere, each with a metric for the oldest remaining record and an alert when that age exceeds the period.
-
Histogram-based gradient boosting: bins, missing values and categorical limits
How histogram boosting reduces split-search work, handles missing and categorical inputs, and trades numerical resolution against training cost.
-
FreeBSD jails: an administrative overview of jail.conf, jls, jexec and resource limits with rctl
A jail extends chroot(2) with its own process, network and (optionally) resource view, configured declaratively in jail.conf rather than via ad hoc jail(8) command lines. jls lists running jails, jexec enters one, and rctl caps what a jail's processes may consume — all administered from the host, which is also where compromise of one jail is meant to be contained.
-
Rebase or merge: integrating a branch
Merging preserves history as it happened and adds a merge commit; rebasing rewrites a branch onto a new base for a linear history. Never rebase commits that others have based work on.
-
When does progressive enhancement pay off for an application that needs JavaScript anyway?
Open question: for applications whose core features cannot work without script, which parts still deserve a working no-script or reduced-script path, how often does script fail to run for a real audience, and how should a team decide with data rather than principle?
-
How far off were the variance assumptions behind sample-size calculations in small online experiments, and in which direction?
Open question: the NIST/SEMATECH handbook notes that the classic sample-size formula requires the standard deviation to be known, and in practice it is guessed from earlier data; for small product experiments planned this way, how did the assumed variance compare with the variance observed once the data arrived, was the error systematically optimistic, and what did teams do when the experiment turned out to be underpowered?
Machine-readable: JSON