Submit a post
Post Preview
Note: Only the first pargraph is shown on the front page and overly long paragraphs may be broken up.
Today
Render has the pieces, not the workflow
We migrated our ~2,800 RPS app from Heroku to Render. The migration was seamless, but the overall deployment experience just doesn’t hold up. Here’s what we learned.
Idempotent Background Workers for LLM Calls in Rails
A practical guide to making AI-powered Rails background workers safe to retry. The article covers Sidekiq’s at-least-once execution model, LLM non-determinism, completion gates, structured output validation, and audit trails. [more inside]
Doctors Gallery
Doctors Gallery provides trusted health articles, medical guides, wellness tips, and healthcare information to support better everyday health. [more inside]
Doctor You Need
Doctor You Need is a healthcare information platform providing trusted medical guides, wellness tips, health resources, and expert insights to help people make informed health decisions. [more inside]
Best VPS Hosting
BDWebIT provides fast, secure, and reliable VPS hosting solutions for businesses, developers, and growing websites. With high-performance SSD storage, KVM virtualization, multiple operating system support, instant deployment, and 24/7 technical support, BDWebIT VPS hosting delivers the performance and flexibility needed for modern applications and websites. [more inside]
Mistri: a zero-dependency agent harness for Ruby
Agent tooling today is either TypeScript or Python, so I wrote an agent harness for Ruby. Mistri has zero dependencies and stays out of your app’s way: resumable sessions stored as append-only entries, steering a run while it is still running, sub-agents, tool approvals, and one interface for Anthropic, OpenAI and Gemini. It runs a production assistant today. Docs and recipes at https://mistri.sh, source at https://github.com/mcheemaa/mistri. Feedback welcome, especially on the session model.
Factory Method Pattern
Creating objects is a responsibility too. What problem a factory actually solves, how the Simple Factory differs from the GoF’s Factory Method, and how Ruby simplifies both because classes are objects. [more inside]
[Screencast] Claude Skills
In this episode, we look at creating Claude slash commands. These can be useful when dealing with a complicated task or trying to extract certain information from the application.
Audit a Rails Project with the Thoughtbot Audit Skill
Ran the Thoughtbot Rails audit skill with Claude Code on a 5-year-old side project: wrote up some findings and the workflow I used to turn the report into a labelled GitHub backlog
An Active Record Object Is a Snapshot, Not the Row
Two Active Record objects can represent the same row, compare as equal, and still carry different attribute values. This RailsRevelry article explains model object snapshots, reload, lifecycle predicates, and the debugging difference between object state and database truth. [more inside]
Ozymandias on Rails. Cartography of a Ruin
When everything is on fire, nothing is on fire. Where do you start when every problem seems intractable? By drawing a map. [more inside]
Payload → Transformation → Ready for your business logic.
Discover modern patterns for building secure and maintainable transformation pipelines in Ruby & Ruby on Rails. [more inside]
Dependabot has resolved the remaining Bundler 4 compatibility issues.
Dependabot has resolved the remaining Bundler 4 compatibility issues. Cleaner Gemfile.lock updates, fewer CI surprises, and more predictable dependency PRs. 🚀 [more inside]
Sidekiq & Rails Compatibility Table
This article shows the compatibility between Sidekiq and Rails across different versions. [more inside]
Hanami 3.0: In full bloom
Hanami 3.0 is here and in full bloom 🌸 — this is our most complete release yet: mailers, i18n, and Minitest now built in, your apps faster by default, and plenty more! [more inside]
llm.rb v12.0.0 released
llm.rb is an advanced runtime for building highly capable AI applications on CRuby. This release is packed with new features, bug fixes, & other improvements.
Start With Ugly Code
Faced with a new problem, the elegant solution is almost always premature. Why simple code that passes the tests is the best starting point, and how to get there with TDD. [more inside]
Deploying Rails 8 with Kamal on a Single Server
A single server will take a Rails 8 app a long way. One reasonably-sized VPS, a few dedicated vCPUs and 8–16 GB of RAM from any commodity host, comfortably runs the web app, a background worker, Postgres, and Redis for a product doing real revenue. [more inside]
Can a coding agent navigate Chatwoot, or just write Ruby?
A real chore on Chatwoot: find every dependent of the Inbox model before changing how it’s torn down. Cold, the agent found 2 of 11 and called it done. With a map of the repo, all 11. The map’s from Sense, a tool I build, so don’t take my word for it, it’s all public. [more inside]
Gemini API in Ruby: Building AI Agents Without an SDK
Build Gemini AI agents in Ruby or Rails without an official SDK: Interactions API, Faraday, function calling, server-side state, and production guardrails. [more inside]
Ozymandias on Rails: The Pedestal Inscription
Shelley wrote about a king whose monument outlived everything it was built on. I’ve spent 15 years inside Rails monoliths that did the same thing. This is the first post about what to do when you’re standing in the ruins. [more inside]
Classic design patterns don't disappear in Ruby they become simpler.
Discover how Factory, Builder, Adapter, Decorator, Proxy, and Facade are implemented the Ruby way in Part 2 of our series. [more inside]
When Does an Active Record Query Actually Run?
An ActiveRecord::Relation is deferred query intent, not loaded data. This article traces when Rails query methods build relations, when methods like present?, count, size, length, and exists? execute SQL, and how to debug the line that turns query intent into database work. [more inside]
Ruby Memes 2026-06-26: The Ruby Clown
Ruby Memes 2026-06-26: The Ruby Clown
llm_cost_tracker 0.13.0 — self-hosted LLM cost tracking for Rails
0.13.0 leans on accounting-grade accuracy: track now rejects unrecognized token keys instead of silently undercounting (breaking — see changelog), async ingestion no longer loses cost data on transient DB errors, OpenAI tool calls are priced correctly, and non-USD costs render in their own currency. [more inside]