RSSAmplifier

Blog

Roland Rodriguez

Developer tools, product design, and building software that feels right

rodriguez.todayRSS feed ↗11 posts

Latest posts

Signalbox: Structural Trust for AI Development Workflows

Prompt-driven development workflows ask models to enforce rules they can also forget, reinterpret, or talk around. The usual response is to add more instructions: remember the review verdict, stop after four rounds, never merge an unapproved change, wait for every parallel worker. Each sentence describes behavior I want, but none of them makes the unwanted behavior impossible. I built signalbox…

How to Tell Whether Source Code Was Copied

Most copying claims start with two codebases that look alike. Generative AI has made that resemblance cheaper to manufacture and harder to read, which makes the underlying forensics matter more, not less. Two codebases that look alike is the weakest place a copying case can start, and usually where the weak ones end. Resemblance only tells you something when it shows up in the parts of the code…

The Pattern That Came Back: Adaptive Object Model in an Agent-Iterated World

I am watching an AI agent rewrite my database schema in real time. It types a description into the tool loop. "Add a phone field to Contact, indexed, optional." A second later it has emitted a block of DSL. The validator rejects it. Strict-mode Cedar finds an authorization policy that referenced the old shape and now points at a field that does not exist. The agent reads the error, edits its…

Accounting for Agents

Every piece of accounting software I've used was built in a world where the person writing the ledger was also the person who would notice if something went wrong. That world is ending. For the past year I've been using AI assistants to help run the books for my consulting business—categorizing expenses, reconciling imports, flagging anomalies. The AI part works. What doesn't work is the software…

What Happens When You Constrain an Event-Driven System to Three Primitives

The conventional wisdom in event-driven systems is that more capability means more power. Give every component the ability to publish, subscribe, transform, and route, and developers can build anything. This is true. It is also the source of most complexity in event-driven architectures: when everything can do everything, nothing about the system is predictable from its structure alone. You must…

Stable Agent Identity Without Centralized Control

Last month I was debugging a multi-agent system I'd built on acton-reactive when a deployment migration broke everything. I'd moved an approval agent from one cloud provider to another—different endpoint URL, different API gateway. Workflows that referenced the old URL started failing. Cached references in other agents? Stale. Audit logs? Now ambiguous about which agent they referred to. The agent…

When Users Route Around Your Constraints

My daughter plays Warrior Cats: Ultimate Edition on Roblox. It's a roleplaying game where players coordinate hunts, assign clan roles, and narrate collaborative stories. Communication is the game. On January 7, 2026, Roblox deployed global age verification that gates chat access behind facial age estimation. My daughter, like most players under 13, couldn't verify. Chat disappeared. Within 48…

Treating UI Regions as Independent Actors Makes Terminal State Manageable

Terminal UIs feel stuck because we think about them wrong. We treat the screen as a canvas to paint on, managing coordinates and redraw logic ourselves. Web frameworks showed us a better way for browser UIs: compose independent components that own their state and coordinate through messages. But there is an even older set of ideas that maps surprisingly well to terminal interfaces: the actor…

Why Multi-Agent Systems Don't Need Managers: Lessons from Ant Colonies

Multi-agent AI systems face a coordination problem. As frameworks scale from a handful of agents to dozens, orchestration overhead dominates actual work. Current approaches (AutoGen's conversation managers, MetaGPT's role hierarchies, CrewAI's explicit backstories) all import human organizational patterns that create bottlenecks. But nature solved this problem millions of years ago. Ant colonies…

Designing APIs for the Pit of Success

In 2019, when I set out to build rusty_paseto , a Rust implementation of the PASETO token specification, I wasn't just thinking about correctness. I was thinking about the developer who would use it at 2am during an incident, the one copy-pasting from Stack Overflow, the one who just wants tokens to work without becoming a cryptography expert. The question that drove every design decision: How do…

Constraints as Design

Most Rust actor frameworks prioritize flexibility. They let you send any message to any actor, handle errors however you want, and change system behavior at runtime. I built acton-reactive around the opposite principle: intentional constraints serve users better. By encoding invariants in the type system (actors can't start without handlers, read-only operations are distinct from mutations,…