RSSAmplifier

Blog

Cogitate

Writing on AI agents, developer tooling, and software architecture — by Björn Roberg.

bjro.devRSS feed ↗31 posts

Latest posts

xAI shipped the names of every knob. They withheld the values. Which mistake is that?

When xAI open-sourced their For You ranker on 2026-05-15, they redacted every numeric weight, every threshold, every Kafka topic, every config string — but they left every symbol name in source. For a serious competitor, the list of names is the more useful artifact. So either someone messed up, or that was always the plan.

I tagged every blog post by cognitive mode. Most of mine are knowledge-telling — and that's fine.

Adding one optional frontmatter field to my blog produced a taxonomy I couldn't have written without doing the work. The categories come from Bereiter & Scardamalia (1987), and applying them to my own corpus was uncomfortable in useful ways.

MeMo prompting, deconstructed: it's just self-routing

MeMo claims near-SOTA prompting via Munger's mental models. Strip the framing: what's left is one trick — ask the LLM to name its reasoning strategy first.

Genetic programming, deconstructed: four of five assumptions are 1990s artifacts

Classical GP bundles five independent design choices behind one biology metaphor. Four of them are compute-era assumptions that don't survive contact with frontier LLMs. What's left is a different algorithm.

Verifier-native search: the 2026 shape

LLM generation costs roughly 1000× more than verification. The serious program-search systems already exploit this. The agent-scaffold mainstream doesn't — and nobody yet compounds search traces into a domain-specific mutator.

Claude Code's Bash tool returns exit 1 with no output? Check /tmp.

If Claude Code's Bash tool returns 'Exit code 1' with empty stdout and empty stderr for every command, including `true` and `echo ok`, your /tmp is almost certainly full. Here is the fix.

Scanners produce reports. Insurance needs witnesses.

The AI-supply-chain cohort is already crowded: Invariant, Snyk Agent Scan, JFrog, Klaimee, a dozen more. They all ship the same artifact, a point-in-time report. That is not what underwriters can price against. The primitive insurance needs is a falsifiable attestation with a TTL that re-verifies on drift. Nobody ships that yet.

The Firmbyte Gap: Why the Most Valuable Connections Never Happen

The biggest breakthroughs come from connecting unrelated fields — but the mechanism that produces them is broken. Hidalgo's firmbyte concept explains why.

Inversion of Control at the Agentic Boundary

Applying IoC and dependency injection patterns to agentic service boundaries — and why technical plumbing alone won't prevent control inversion.

Building a Behavioral Health Monitor and Feedback Loop for AI Agents

Applying signal processing concepts to coding agent actions — from FFT and Markov models to a pragmatic health scoring algorithm for Claude Code hooks.

Introducing slog: structured logging for every JS runtime

slog is a zero-dependency structured logger for Node.js, Deno, Bun, and Cloudflare Workers with pluggable transports and a Hono waitUntil middleware.

Show HN: Cairn — append-only SQLite event store, immutability enforced by triggers

cairn is an append-only SQLite event store where immutability is enforced by triggers, not convention. Go, TypeScript, and Rust SDKs share one test spec.

New Domain: bjro.dev

The blog has moved to bjro.dev — a short domain that's easier to share and signals a long-term commitment to writing about software and technology.

The npm problem nobody wants to work on

Every Node.js production system depends on a single corporate-controlled npm registry with no real alternative — a structural risk the ecosystem ignores.

Debian: Why the Universal Operating System Still Matters in 2026

Debian turns 33 and keeps earning its title as the universal OS — community governance, 59,000 packages, and the foundation of over 1,000 Linux distributions.

Currying AI Agents: Partial Application for Reusable Agent Configurations

Apply partial application from functional programming to AI agents — pre-configure agent parameters to create reusable, composable agent building blocks.

Linear Types for Agent Safety - An Approach to Trustworthy AI Systems

Linear types applied to AI agent safety — a type system that enforces single-use for destructive operations and statically rejects unsafe agent code.

MarkyMarkov - Markov Chain-Based Code Guidance for LLM Agents and Humans Alike

MarkyMarkov uses Markov chains to learn patterns from your codebase and provide fast, explainable code guidance that complements LLM agents.

Building Smarter AI Agents With Ideas From Philosophy

Philosophically informed AI agent design — modeling belief, knowledge, and epistemic norms — makes agent behavior more reliable and inspectable.

Markov chains and LLMs - hybrid architectures for smarter agents

Combine Markov chains with LLMs to build structured, interpretable agents — Markov chains enforce predictable state; LLMs provide semantic flexibility.

AI Agents in Business Processes: Temporal, FSMs, and MCP

How to pair agentic workflows with Temporal for durability, finite state machines for structure, and MCP servers to scale from pilot to production.

Context Management for AI Agents: Why MINDMAP Changes Everything

Context is the most underrated lever in AI agent design — this post makes the case for MINDMAP-style context objects as a first-class agent primitive.

Cloud LLMs in Production: The Hidden Trust Boundary You’re Already Crossing

Infra teams quietly feed logs, configs, and schemas to cloud LLMs when troubleshooting — extending the trust boundary into a black box they don’t control.

Software Development Opinions: LLMs, Agentic Tooling, and What Actually Changes

Opinionated notes on software development in the age of agentic tooling — where LLMs genuinely change how we work and where the hype outpaces the reality.

Using casq for Content-Addressable Storage in CI Pipelines

casq brings content-addressable storage to CI pipelines, eliminating redundant builds and test runs by identifying identical inputs with a git-style hash.

mise: Per-Project Tool Version Manager and Task Runner

mise pins tool versions per project — Node, Python, Go, and more — in a single .mise.toml, replacing nvm, pyenv, and Makefiles with one unified tool.

whosthere: LAN Discovery Tool with a Modern TUI in Go

whosthere is a Go-based LAN discovery tool with a modern terminal UI — fast, intuitive network exploration that shows who and what is on your local network.

Introducing casq: Content-Addressable File Storage CLI in Rust

casq is a Rust CLI and library for content-addressed file storage — git-style deduplication without the overhead of a full version control system.

Terminal Multiplexers: Why I Switched from tmux to zellij

A quick comparison of tmux and zellij as terminal multiplexers — zellij wins on discoverability with visible, mnemonic keybinds right out of the box.

Locking Down AI Agents: Limiting Blast Radius in Production Systems

Practical techniques for sandboxing AI agents and limiting blast radius — filesystem restrictions, network controls, and permission scoping in production.

Remap Caps Lock to Left Control on Linux and Windows

Remap Caps Lock to Left Control for a more ergonomic keyboard layout — instructions for Debian/Linux via XKBOPTIONS and Windows via SharpKeys.