Thoughts
on building software, reasoning about systems, and the occasional philosophical detour. Written to think out loud. RSS Feed
Featured
-
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.
-
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.
-
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
Updated:Philosophically informed AI agent design — modeling belief, knowledge, and epistemic norms — makes agent behavior more reliable and inspectable.
-
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.
-
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.
Recent Posts
-
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.
-
Introducing cairn: append-only event storage with SQLite
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.
-
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.
-
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.