October 4, 2025
A Production-Minded Guide to RAG Evaluation in Rails
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 →Long-form writing on software engineering, systems design, and building things.
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 →September 15, 2025
Your app is only as fast as its JavaScript payload. This guide tackles bundle bloat from heavy SDKs and GraphQL clients, teaching practical patterns like dynamic imports and selective client loading to drastically cut down your JS size without hurting developer experience.
Read article →September 14, 2025
Go beyond client-side rendering. This guide demystifies Next.js data fetching: getStaticProps, getServerSideProps, and Incremental Static Regeneration (ISR). Learn how to balance blazing-fast loads and SEO with the hidden costs of server load and hydration.
Read article →