Blog
Thoughts on distributed systems, cloud architecture, and the craft of building software.
Cells, Not Harnesses: A Different Direction for AI Agents
Every AI agent framework right now converges on the same shape: a bigger, more instrumented harness. A different lineage (artificial life, evolutionary computation) asks a different question. Here's the direction I want to explore next.
Read article →The Anatomy of an AI Chief of Staff: 17 Entities Before You Write a Single Prompt
A reference map of the building blocks behind a multi-domain AI Chief of Staff system (structure, memory, governance, learning, and efficiency) for anyone trying to configure their own version instead of a single-agent inbox bot.
Read article →Building an AI Chief of Staff: Agents, RAG, and a Routing Graph That Knows When to Ask
AI Chief of Staff tools are a known category now: mostly single-agent, professional-only, closed. Here's the architecture pattern behind a different version: domain agents, a hybrid RAG memory layer, and an explicit graph that decides when the system can act alone vs. when it must stop and ask.
Read article →Team Topologies and Platform Engineering: How You Organize Determines What You Build
Conway's Law is not a suggestion. The way your teams are structured will determine your architecture, intentionally or not. Here's how to use Team Topologies and platform thinking to make that work for you.
Read article →Observability for Event-Driven Systems: The Metrics That Actually Matter
Logs and dashboards are necessary but not sufficient. Here's how to build meaningful observability for event-driven systems, from SLO design to correlating events with business outcomes.
Read article →From Monolith to Event-Driven: A Migration Playbook
Migrating from a monolith to event-driven microservices without a big-bang rewrite. The Strangler Fig pattern in practice, with incremental steps and real decision criteria.
Read article →Securing Your Event Bus: Encryption, Signing, and Audit Trails in Kafka
Most Kafka setups focus on throughput and miss the security fundamentals. Here's how to apply encryption, message signing, and audit trails to an event-driven system in production.
Read article →SOLID in Distributed Systems: Beyond the Textbook
SOLID principles don't disappear when your classes become microservices. They scale up. Here's how SRP, OCP, LSP, ISP, and DIP re-apply when your unit of deployment is a service.
Read article →Building a Kafka Stream Processing Pipeline from Scratch
A complete archetype for real-time analytics with Kafka Streams: windowed aggregations, stream-to-stream joins, state stores, and exactly-once processing in Java.
Read article →Why Your Microservices Are Still Coupled (And How to Fix It)
Most microservice migrations trade one monolith for another: just distributed. Here's how to identify the hidden coupling patterns and eliminate them for good.
Read article →Event-Driven Architecture: The Four Patterns You Actually Need in Production
A deep dive into Event Sourcing, Pub/Sub, CQRS, and secure event design, with real Java/Spring Boot code for financial-grade systems.
Read article →