All articles
-
Configuring logrotate: copytruncate, postrotate and dry-run testing
A logrotate rule under /etc/logrotate.d/ decides how a log is rotated, and the choice between copytruncate and a postrotate signal to the writing process determines whether a brief gap in logging or a race on the copy is the risk taken. logrotate -d previews the plan without touching any file.
-
An API reference style guide: one shape for every entry
A reference style guide fixes the order of sections (summary, syntax, parameters, return value, errors, remarks, example), the wording of the first sentence, and how defaults, constraints and deprecations are stated, so that readers and generators can predict where each fact is.
-
Maintaining a project glossary as the shared vocabulary
A glossary gives each domain term one preferred name, one definition, its near-synonyms and their differences, and a status; documents expand abbreviations on first use and link to the entry, and renaming a concept updates the glossary in the same change as the code and docs.
-
Semantic HTML and landmarks
Use header, nav, main, article, section, aside and footer with one h1 per page and a logical heading order; assistive technology, search engines and agents all navigate by these structures.
-
Unreal Niagara: design systems with clear parameters and scalability rules
Organize Niagara systems, emitters and modules around an effect contract, expose deliberate user parameters, and validate shared scalability settings.
-
Handling tool errors and partial results in an agent loop
A tool call can fail at the protocol level, fail inside the tool or succeed partially; return each case to the model as a distinct, structured tool result saying what worked, what did not and what to do next, and cap retries in code so that the agent neither hides failures nor loops on them.
-
Windows boot troubleshooting: WinRE, reagentc and the BCD store
The Windows Recovery Environment provides Startup Repair and a command prompt when Windows fails to boot; reagentc reports and controls whether WinRE is active, and bcdedit reads and edits the Boot Configuration Data store that controls what boots and how — back it up with bcdedit /export before changing it.
-
Terraform state: what it stores, why it is locked and how drift shows up
State maps resource addresses in configuration to real objects and stores attribute values, including secrets, in plain JSON; a remote backend with locking prevents concurrent writes from corrupting it, and drift (changes made outside Terraform) surfaces as unexpected diffs in plan or in a refresh-only run.
-
Handling bounces and complaints: DSNs, enhanced status codes and feedback loops
Bounces arrive as delivery status notifications whose Status field is an enhanced code of the form class.subject.detail: 5.X.X is permanent, 4.X.X persistent transient; complaints arrive as ARF feedback reports. Parse both, suppress addresses on evidence, and keep the raw diagnostics.
-
Image delivery: AVIF and WebP with fallbacks, lazy loading and fetch priority
Serve modern formats through picture sources with a type attribute and a JPEG or PNG img as the fallback (or negotiate on Accept with Vary), lazy-load only images below the first viewport with width and height set, and mark the largest above-the-fold image fetchpriority=high instead of lazy.
-
pytest fixtures, parametrisation and markers: keeping a suite fast and readable
Fixtures inject setup by parameter name, compose, have scopes and tear down after yield; parametrize turns a loop inside a test into independent cases; markers label tests for selection with -m and must be registered, with --strict-markers turning typos into errors.
-
Bound context windows with section-level reads
Agents can keep evidence useful under a context budget by reading a section directory first and fetching only the sections needed for the current question.
-
UUID versions: random, time-ordered and name-based
RFC 9562 defines UUID versions 1–8; version 4 is random, version 7 is time-ordered for database-friendly keys, version 5 derives deterministic ids from a name in a namespace. Choose by whether you need ordering, determinism or unpredictability.
-
Setting Linux kernel parameters with sysctl: runtime changes versus /etc/sysctl.d
sysctl -w changes a kernel parameter until the next reboot; making it persistent means dropping a file into /etc/sysctl.d/ and understanding the load order across /usr/lib, /etc and /run. sysctl --system applies every configured file and reports which one wins on a conflict.
-
Local HTTPS for development: a private CA, trust stores and the localhost exception
Browsers already treat localhost and loopback addresses as potentially trustworthy, so local HTTPS is needed only for TLS-specific behaviour or non-loopback development names; for those, create a private CA per machine with a tool such as mkcert, issue leaf certificates for development names, install the root in the system and per-tool trust stores, and never share the CA key.
-
Sorting stability: what it guarantees and when it matters
A stable sort keeps the input order of elements that compare equal. Python guarantees it, ECMAScript has required it since 2019, Go and GNU sort offer it as an option; it decides whether multi-key sorts, sortable tables and paginated queries behave predictably.
-
Implementing the x402 v2 HTTP exchange: headers, facilitators and settlement
An implementation-focused account of x402 v2: the three HTTP headers, the client and resource-server responsibilities, and the distinction between checking payment authorization and settling a payment.
-
CORS: what the browser blocks and what it does not
Cross-Origin Resource Sharing lets a server declare which web origins may read its responses from scripts; it protects browser users' data, not the server, and preflight requests apply only to non-simple requests.
-
Working with AppArmor profiles on Debian and Ubuntu: status, complain mode and local overrides
AppArmor confines individual programs by profile rather than by user; aa-status shows what is loaded and enforced, aa-complain/aa-enforce switch a profile between logging-only and blocking, and /etc/apparmor.d/local holds site-specific additions that survive package upgrades of the shipped profile.
-
How should a public API allocate write quotas between many small agents and a few large ones?
Open question: fixed per-account quotas favour whoever registers many accounts, while per-network quotas penalise shared networks; which allocation rules have worked in practice for public, agent-facing services?
Machine-readable: JSON