Feeling overwhelmed by AI? Learn the Centaur Mindset. Read More →

Welcome. My work explores a single, critical question: How do we master the tools of a complex digital world?

Whether it’s deploying a Kubernetes cluster, automating a workflow, or, most recently, partnering with artificial intelligence, my goal is the same: to move beyond simply using technology and toward directing it with strategy, wisdom, and insight.

I’ve codified my framework for this new era of work in my book, The Centaur’s Edge: A Practical Guide to Thriving in the Age of AI. It provides the mindset and practical exercises needed to turn AI from a mysterious force into a powerful partner.

This blog is my workshop for that ongoing journey. I’m glad you’ve joined me.

Two terminal panes side by side: a Go program using ygo prints a 96-byte update with sha256 7950d34c2dc30055, and a Node.js script using yjs 13.6.33 prints the same length and hash with identical_to_go=true

Same Bytes, Different Language: Testing ygo's Claim of Byte-for-Byte Yjs Compatibility

Every real-time collaborative editor has the same hard problem underneath it. Two people type into the same paragraph at the same moment, possibly while one of them is offline on a train, and when everything reconnects both screens have to end up showing exactly the same text without anyone’s edit vanishing. The family of data structures built to solve that is called a CRDT (Conflict-free Replicated Data Type): a structure designed so that copies of a document (called replicas) can accept edits independently and always merge to the same result, in any order, with no central referee deciding who wins. ...

October 16, 2026 · 19 min · Scott Algatt
Terminal output from a NEEDLE lab run: a fake agent exits 0 on a bead it lied about, NEEDLE re-runs the definition of done, the verification fails, a false close is detected, and a priority-0 Fix build bead is filed automatically

Boring on Purpose: Wrapping Coding Agents in NEEDLE's State Machine

The Rabbit Hole Generator gave me NEEDLE this week, and it lands right on a question I keep running into: once you let a coding agent run unattended, who decides whether it actually did the job? Most of the excitement around coding agents is about making them smarter. NEEDLE is interested in something much less glamorous. It assumes the agent is unpredictable, wraps it in a loop where every step around the agent is fixed and logged, and then refuses to take the agent’s word that it finished. I didn’t want to point a real AI model with its permission prompts switched off at anything, so I ran the whole thing against a fake agent: a 20-line shell script that succeeds, fails, hangs, and lies on cue. The lying one turned out to be the most interesting part. ...

October 9, 2026 · 35 min · Scott Algatt
Two oci-explorer score cards stacked. The top one is a busybox image with four 20-byte junk files attached and scores 9 out of 10, grade A. The bottom one is oci-explorer's own image, keylessly signed in CI and verified with cosign, and also scores 9 out of 10, grade A.

Grade A, Signed by Nobody: What oci-explorer's Supply Chain Score Actually Measures

Ask most teams what’s attached to the container image running in production and you’ll get an answer about their CI pipeline: “we sign it, we generate an SBOM, we attach provenance.” That’s a statement about what the pipeline tried to do. Whether the registry actually holds those things, linked to the right image, in a form the next tool can find, is a different question, and it’s surprisingly hard to answer in under a minute. ...

October 2, 2026 · 21 min · Scott Algatt
Terminal output from ocsfkit gate showing a failed mapping-quality gate: grade F, average confidence 0.698 below the 0.70 threshold, and 5 unmapped source fields exceeding the max of 2

Your OCSF Pipeline Is Lying to You: Catching Silent Data Loss with ocsfkit

This week’s Rabbit Hole Generator pick was ocsfkit, and it’s aimed at a failure mode that doesn’t look like a failure at all: a security event that parses successfully, lands in your SIEM (Security Information and Event Management platform, the system that ingests and correlates security logs), and gets treated as trustworthy, while a real chunk of what it originally meant never made it through the translation. That translation step is normalization: taking a vendor’s raw event format (AWS GuardDuty’s JSON, Okta’s login logs, whatever a tool emits) and reshaping it into a common schema so different security tools can actually talk about the same event the same way. OCSF (Open Cybersecurity Schema Framework) is the industry’s current attempt at that common schema. The part nobody’s tooling handles well is what happens to the fields that don’t map cleanly. Most pipelines either silently drop them or silently guess, and a downstream analyst has no way to tell the difference between a field that was confidently mapped and one that was quietly invented. ...

September 25, 2026 · 11 min · Scott Algatt
Terminal output from agent-bom scan showing a security posture summary with 2 critical, 21 high, 20 medium, and 5 low findings, a posture grade of F, and a findings table naming a CVE in axios with a blast radius chain ending in a browser session token

The CVE List Isn't the Point: Mapping Blast Radius in AI Infrastructure with agent-bom

The Rabbit Hole Generator gave me agent-bom this week, and it landed on a question I’ve been circling for a while: what does a vulnerability scanner actually owe you once “AI agent” and “MCP server” show up in your stack next to the usual packages and containers? A traditional scanner tells you a package has a CVE. It stops there. It doesn’t know that package sits inside an MCP server (a small local process that gives an AI agent tools like “read this file” or “run this shell command”), and it definitely doesn’t know that server has an AWS_SECRET_ACCESS_KEY sitting in its environment. agent-bom is built specifically to answer the next question a CVE list never does: from this vulnerable package, what can actually be reached? ...

September 18, 2026 · 12 min · Scott Algatt