October 7, 2025
From Waiting to Working: Building Responsive AI Features in Rails
A deep dive into architectural patterns using ActiveJob and Redis to solve LLM latency, moving from an 8-second wait to a sub-50ms cached response.
Read article →Long-form writing on software engineering, systems design, and building things.
October 7, 2025
A deep dive into architectural patterns using ActiveJob and Redis to solve LLM latency, moving from an 8-second wait to a sub-50ms cached response.
Read article →Most function calling tutorials show toy examples that break in production. This guide provides the 80% foundation you actually need: a security-hardened, multi-turn agent with complete parameter validation, proper error handling, logging, and timeouts. Copy, customize, and build on it
Read article →October 4, 2025
An advanced guide to building a robust, automated RAG evaluation framework in Rails, with production-minded code for metrics, parallelization, and CI/CD integration.
Read article →September 22, 2025
A user double-clicks "Pay Now." Are they charged twice? In a world of unreliable networks and automatic client retries, idempotency isn't an advanced feature—it's a fundamental requirement for any robust API. This post shows you how to implement it using the Idempotency-Key header pattern in Rails.
Read article →September 21, 2025
A Pull Request is more than a gate; it's a story. It's the most critical piece of documentation your team will ever write about a change. This post breaks down the anatomy of a great PR, transforming it from a chore into a powerful tool for communication, collaboration, and future debugging.
Read article →September 20, 2025
Most teams see feature flags as simple on/off switches. They are so much more. This post explores how to use flags for percentage-based rollouts, targeted betas, and even as operational circuit breakers, transforming them from a developer convenience into a strategic tool for shipping safer, better software.
Read article →September 19, 2025
Everyone wants to break the monolith, but jumping straight to microservices is a fast track to a distributed mess. The Modulith is a more pragmatic step: a single application with strong, enforced internal boundaries. This post explores how to use tools like Packwerk in Rails to achieve modularity without the operational overhead of a distributed system.
Read article →September 18, 2025
How do you guarantee that an event is sent if, and only if, a database transaction succeeds? The dual-write problem plagues distributed systems, leading to inconsistency and bugs. This post dives deep into the Outbox Pattern, a simple yet powerful solution in Rails to ensure atomic, at-least-once delivery for your critical events.
Read article →September 17, 2025
In this final part, we connect the dots. All frontend performance optimizations—caching, SSR, bundle splitting—are ultimately enabled or constrained by the backend. Learn how schema design, API ergonomics, and a full-stack mindset are the true foundation of a high-performance application.
Read article →September 16, 2025
A fast app that crashes is a failed app. This post tackles the unique challenges of GraphQL error handling, from partial data responses to network failures. Learn to build resilient UIs with skeleton loaders, intelligent retry policies, and centralized logging.
Read article →