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
Skrift: Pure-Ruby TrueType / OpenType glyph rendering
Skrift and its accompanying plugins skrift-color (Emoji rendering), skrift-boxdrawing (“perfect” scaling boxdrawing characters) and skrift-x11 provides a whole eco-system of TrueType / OpenType text rendering to bitmaps or X11 drawables with no external dependencies (no FreeType etc.). [more inside]
🚀 Modernize your Ruby code without rushing your runtime upgrade.
Ruby Next lets you adopt newer Ruby syntax and APIs while keeping compatibility with older versions—making large upgrades far more manageable. Read more 👇 [more inside]
New book: Testing Rails from Scratch
I’ve been working on a thought experiment, using my time-tested approach to TDD with a (mostly) default Rails testing stack. I decided to make a book out of it: Testing Rails from Scratch: A (mostly) out-of-the-box approach to testing Ruby on Rails. First three chapters are available now from Leanpub. [more inside]
The Budget-Friendly Monolith: Rails File Uploads with Cloudflare R2
If you have been using AWS S3 for your Rails file uploads, you know the pain of the monthly bill…. [more inside]
Where Does current_user Actually Live?
𝚌𝚞𝚛𝚛𝚎𝚗𝚝_𝚞𝚜𝚎𝚛 reads like global state, but Rails request identity moves through the session, Warden, Devise helpers, optional 𝙲𝚞𝚛𝚛𝚎𝚗𝚝𝙰𝚝𝚝𝚛𝚒𝚋𝚞𝚝𝚎𝚜, and executor cleanup. This article traces that lifecycle and the production bugs that appear when those boundaries are confused. [more inside]
gem-skill version 0.2.0 adds optional source code verification
The new –verify flag and verify sub-command implement an option pass of the generated SKILL.md file for a Ruby gem against its source code toe detect when the gem’s documentation may be a little outdated. If any issues are found, the SKILL.md file is updated. This version also adds a new global skill “ruby-gem-skills” that is inserted by the command gem skill setup into the claude code, codex and generic agents global skills directories to route requests to the local ~/.gem/skills directory.
Pro File Uploads in Rails 8: Speed and Scalability with Direct Uploads
Imagine a user trying to upload a 100MB video or a high-resolution photo to your app. If you use the… [more inside]
Ruby Stained Glass Notes #02: Ideas are cheap. But glass? Not so much
This is episode #02 of the Ruby Stained Glass Notes, a pop-up newsletter in which I write about the process of building a stained-glass panel celebrating Ruby. Today, we talk about the reasoning behind choosing glass, and how stained glass windows should follow the open-closed principle too.
Rails views may be entering a new era.
Herb brings modern tooling to ERB, while ReActionView explores a smarter rendering architecture for Action View. [more inside]
What SOLID Still Teaches Ruby Programmers
How SOLID changes when you read it through Ruby’s object model, duck typing, and preference for pragmatic design. [more inside]
Zero-JS Search: Building a Live-Filter with Turbo 8 Page Morphing
I’ve lost count of the number of hours I’ve spent in the past building “Live Search” features. In… [more inside]
Ruby 4.0 is here.
So why are AI coding assistants still writing Ruby like it’s 2021? Modern Ruby deserves modern AI. [more inside]
The Trouble with Skills
No matter what kind of developer you are, human or not, you have a problem with skills and you need help. Introducing asgard to help the humans and gem-skill to help the robots. [more inside]
Datastar in Rails 8: Real-Time UI Without the WebSocket Headache
I am a huge fan of Hotwire. It’s what allowed me to stop writing massive React apps and go back to… [more inside]
Camping is joining the Ruby Users Forum
Camping is joining the Ruby Users Forum as its new official discussion home. [more inside]
How to Parallelize Your RSpec Test Suite Locally
Waiting over an hour for a test suite to finish is a productivity killer. [more inside]
Go for Rubyists: A Practical Guide to Learning Golang
I love Ruby. It is the language that made me happy to write code. But as a Rails developer, I… [more inside]
[ANN] httpx 1.8.0 released
httpx 1.8.0 has been released. [more inside]
tarik — Rails 8 + Next.js 16 SaaS boilerplate
I just open-sourced tarik, a Rails 8 + Next.js 16 SaaS boilerplate for developers who want to skip setup and start building. [more inside]
Wait... Ruby Enumerators can receive values too?
Enumerator#feed allows an Enumerator to pause, accept input from the caller, and resume execution. One of those Ruby features that makes you say: “I never knew that existed.” [more inside]
Pure Ruby X11 terminal application
RubyTerm is my xterm / rxvt replacement… It is incomplete. It is slow, but usable. [more inside]
Kino: an experimental, performant Ractor web server for Ruby 4 (Rust, Tokio, Hyper)
Rubyists who experiment with Ractors, put them to work! Meet Kino, an experimental performant Rust/Ruby Ractor web server (with a threading fallback). Note that Ractors are officially experimental in Ruby 4.0, and so is this server. Rails cannot run on Ractors yet, but it will, sometime in the future. [more inside]
Try Matz via SSH
Matz is a statically linked, 3MB terminal binary focused on mruby. He answers questions from the mruby guide repository, indexed mruby source code, and mrbgem metadata. Try Matz via SSH. Free to use. Nothing to download or install: ssh matz@r.uby.dev.
Ruby Stained Glass Notes #01: This idea cost me an ice cream
This is episode #01 of the Ruby Stained Glass Notes, a pop-up newsletter in which I write about the process of building a stained-glass panel celebrating Ruby. In this episode I talk about the importance of materials in the design process, and how I came to find a drawing I like very much.
Deploying Rails in 2026 is no longer just about Heroku.
Railway, Render, Fly.io, DigitalOcean, AWS, and Google Cloud each offer different trade-offs in simplicity, cost, and scalability. [more inside]