All articles
-
GOAP: search for an action sequence, then validate its execution
Represent goals and actions explicitly, keep hypothetical effects separate from the live world, and replan when a valid sequence becomes impossible.
-
Network configuration tools compared: nmcli, netplan, systemd-networkd and their Windows and macOS equivalents
Reading the current network configuration, setting a static address, and setting DNS servers — the same three tasks across NetworkManager's nmcli, Ubuntu's netplan, systemd-networkd, Windows PowerShell's networking cmdlets, and macOS's networksetup.
-
Columnar storage basics: how a Parquet file is laid out and why analytical reads touch less data
A Parquet file is a sequence of row groups, each holding one column chunk per column, each chunk split into pages that are the unit of encoding and compression; the metadata sits at the end so that a reader opens the footer, picks only the needed columns and skips row groups and pages by their min/max statistics. Column-wise layout is what makes dictionary and run-length encodings effective.
-
Verify read-after-write using returned revisions
Confirm a write through its stable identifier and revision without mistaking a newer concurrent update for the exact content you submitted.
-
MSAA and Alpha-to-Coverage: Distinguish Coverage From Shading and Opacity
Use multisample coverage for geometric and cutout edges while avoiding accidental double attenuation and unsupported assumptions about sample masks.
-
Database connection pooling and its limits
Each PostgreSQL connection is a process with memory cost; applications should keep a small pool sized to real concurrency, set acquisition timeouts, and never let request handlers open ad hoc connections.
-
Screen-Space Ambient Occlusion: Interpret GTAO as a Visibility Estimate
Integrate ambient occlusion into the intended lighting term and distinguish sampling noise from errors caused by incomplete depth geometry.
-
Default HTTP client timeouts by language and library: none, 5 seconds, or 100 seconds
Python's requests and Go's net/http.Client wait forever unless a timeout is set explicitly, httpx defaults to 5 seconds, .NET's HttpClient defaults to 100 seconds, and axios and curl's total-transfer timeout both default to unlimited — one universal safe default does not exist.
-
Choosing and layering performance profiles with tuned on RHEL
tuned applies a named bundle of kernel and system tunables as one profile switch, and a custom profile can inherit from an existing one and override only what differs. This methodology covers listing, recommending, applying and building on top of profiles.
-
Consistent API error responses with Problem Details
RFC 9457 defines a JSON shape for HTTP error responses (type, title, status, detail, instance) so that clients can handle errors uniformly; any consistent envelope with stable machine-readable codes achieves the same goal.
-
Dependency order with graph traversal: BFS, DFS and topological sort
Model dependencies as a directed graph, use breadth-first or depth-first traversal to find everything affected by a change, and Kahn's algorithm or DFS post-order to produce a build or migration order that reports cycles instead of hiding them; graphlib and tsort implement the sort.
-
Cherry-picking: when it fits and what it costs the history
git cherry-pick replays the change of a commit as a new commit with a different ID; it is the right tool for backporting a fix to a maintenance branch or salvaging one commit from an abandoned branch, but each pick creates a duplicate that merges cannot recognise, so record the origin with -x and merge instead of picking when the whole branch is wanted.
-
Dark mode with prefers-color-scheme, color-scheme and light-dark()
Dark mode has three parts: the prefers-color-scheme media query to detect the user's choice, the color-scheme property (and meta tag) to tell the browser which schemes the page supports so form controls, scrollbars and the canvas follow, and light-dark() or custom properties to swap palette values without duplicating rules.
-
The test-driven development loop
Write a failing test, make it pass with the simplest change, then refactor with the tests green; the loop keeps design decisions small and gives every line a reason to exist.
-
Managing firewalld zones and rules without locking yourself out over SSH
firewalld separates a running configuration from a permanent one, and a plain firewall-cmd change is lost on the next reload unless made permanent. This methodology covers zones, the runtime/permanent split, rich rules, and testing a change before it becomes unrecoverable over a remote SSH session.
-
Scheduled jobs that do not silently fail
A scheduled job needs a lock against overlap, a timeout, explicit logging, an exit status that reflects success, and a monitor that notices when it did not run at all.
-
Alert hygiene for host monitoring: rate over threshold, failed units, and duration windows
A page should mean a human must act now; a host disk approaching full should page on its fill rate, not a fixed percentage that a slow-growing partition can sit near for months, and a threshold crossed for an instant should not page at all. Google's SRE materials on paging discipline and multiwindow alerting give the reasoning; this article applies it to the host signals covered in this series.
-
Designing MCP tools that agents can use safely
Model Context Protocol tools need a narrow purpose, typed input and output schemas, truthful annotations (read-only, destructive), bounded results, and errors that name the cause; descriptions belong in code, not in content that users can edit. The specification also requires that clients treat annotations as untrusted and that a human can reject calls.
-
Threat modelling a feature with STRIDE in one working session
Draw the feature as a data-flow diagram with trust boundaries, walk every element through the six STRIDE categories, decide per threat whether to mitigate, eliminate, transfer or accept, and write the outcome down as testable requirements; the Threat Modeling Manifesto's four questions are the agenda.
-
Checking the identity of a suggested package before adding it to a project
Verify that a package name suggested during coding corresponds to the intended maintained dependency before changing the project’s dependency files or executing installation hooks.
Machine-readable: JSON