Innovate, disrupt, code the future. 💻🔐🚀

Prove curl redirect protocol policy before updating a transfer job

A download job can begin at an HTTPS URL and still be redirected somewhere its owner did not intend. The URL in the script tells only part of the story when curl --location follows a server response. The redirect target is another input, and it deserves an explicit protocol policy.

That review is worth doing before updating a transfer dependency. curl 8.22.0 was released on September 2, 2026, and a version update is a useful time to turn an assumed redirect policy into a tested one. The control is --proto-redir: it limits the schemes curl will accept after a redirect. For a job that is meant to retrieve web content, an explicit HTTP-and-HTTPS policy prevents curl from following an FTP or FTPS redirect just because those schemes are in curl’s default redirect allowlist.

2026-09-06

Use repeated Node permission allowlists to restrict a file-reading script

A small Node utility that reads one configuration file can often read every file available to its service account. Containers and Unix permissions still matter, but they do not express the narrower contract: this process needs its own script, one input file, and nothing else. Node’s Permission Model provides a process-level boundary for that contract.

The important detail is how the file-read allowlist is supplied. In a clean test with Node v26.8.1, one --allow-fs-read flag for the script allowed Node to start but denied the separate input file. Repeating --allow-fs-read once for each required path allowed the same program to complete. Treat each path as its own capability rather than composing a comma-separated list into a single flag.

2026-09-06

Fail a stale uv lockfile before a Python deployment

A Python deployment can look reproducible right up to the moment its dependency declaration and lockfile disagree. pyproject.toml may request a different package version while uv.lock still describes the previous resolution. If CI creates an environment without checking that relationship first, the job can spend time building or downloading before it identifies the real problem. Worse, a workflow that updates the lockfile during deployment turns a reviewable source change into an environment-dependent side effect.

2026-09-05

Check CISA KEV catalog additions before prioritizing remediation

A vulnerability queue becomes harder to use when every CVE is presented with the same urgency. CISA’s Known Exploited Vulnerabilities (KEV) catalog provides a useful signal because it records vulnerabilities that CISA says have been exploited in the wild. It is not an asset inventory, a scanner result, or a patch instruction. It is a prioritization input that still has to be matched to the products an organization actually owns.

2026-09-05

Build It Here. Own It Together.

This page publishes the one-page platform document Build It Here. Own It Together. The proposal is titled the Strategic Industries Act and focuses on restoring domestic capacity in defense, essential medicines, information technology, and semiconductors.

Download the original one-page platform PDF.

The document’s argument is that industrial weakness was not an unavoidable result of foreign competition. It describes a deliberate transfer of production and technical knowledge in pursuit of quarterly earnings, then frames the resulting dependence as a national-resilience problem. The platform’s proposed answer is public capital on public terms: when taxpayers finance the rebuilding of a critical industry, they should receive equity, repayment priority, and enforceable conditions on how the money is used.

2026-09-02

Test Go 1.27 generic methods with a compiler boundary

A new Go language feature can be easy to demonstrate and still be awkward to introduce. Generic methods in Go 1.27 are a good example. They let a concrete type declare type parameters on one of its methods, which can move an operation back beside the type it operates on. That is useful for a pipeline, collection, or builder API. It is also a source-level compatibility boundary: the same declaration is rejected by a Go 1.26 compiler.

2026-09-01

Check OpenTofu provider-cache symlinks before running init

An infrastructure repository can look harmless because every .tf file came from version control. That is not the whole execution boundary for tofu init. Before OpenTofu downloads a provider, it examines the local data directory, which is normally .terraform under the root module. If that directory arrived with an untrusted archive, a copied workspace, or a stale CI directory, an existing symlink can redirect writes away from the module tree.

2026-08-31

Test a Hugo 0.165 upgrade in an isolated destination before replacing the site build

A Hugo upgrade is easy to mistake for a binary replacement. The risk is usually not the executable itself. It is the contract between the executable, the site configuration, the theme, asset transforms, and the directory that receives generated files. A build that succeeds in a throwaway directory can expose a compatibility problem without overwriting the deployment artifact or hiding an unrelated generated change.

Hugo v0.165.0 was released on 12 August 2026. Its release notes add css.ChromaStyles and an importContext option for CSS, JavaScript, Sass, and PostCSS transforms. They also remove tailwindcss from the default security.exec.allow list. That last change is a useful reminder that a theme can depend on an external build tool even when the site repository has no obvious application package manifest.

2026-08-30

Gate affected systeminformation versions in package-lock before deployment

A dependency check is most useful when it fails before a deployment. That is especially true for a library used by an inventory agent, monitoring process, diagnostics endpoint, or device-management service. Those programs often collect operating-system information with more privileges than an ordinary web request needs.

CVE-2026-44724 affects the Linux implementation of networkInterfaces() in the npm package systeminformation. GitHub’s advisory says the affected range is 4.17.0 through 5.31.5 and that 5.31.6 is the patched version. On a host using NetworkManager, the vulnerable code can take an active connection profile name from nmcli output and interpolate it into shell commands. The issue is local: an attacker must be able to create or rename an active profile, but the resulting command runs with the privileges of the Node.js process that calls the function.

2026-08-28

Test Go standard-library version boundaries before changing a module

A Go module can compile on a developer workstation and still make a promise it cannot keep. The usual cause is a newer toolchain: an import or API lands in a change while go.mod continues to declare the oldest Go release supported by the project. A CI runner using that older release then fails after the change has already moved through review.

Go 1.27 makes that mistake easier to spot. Its default go test vet set includes stdversion, which reports a standard-library symbol that is newer than the module version in force. This is useful during an upgrade because it turns an implicit compatibility assumption into a check that can run with the ordinary test suite.

2026-08-27