Rubyland

news, opinion, tutorials, about ruby, aggregated
Sources About
DotRuby - Things we have to say. 

Adding File Validation to Lexxy Editor with Stimulus

A simple Stimulus controller to validate attachments in the Lexxy editor — restricting file types and sizes before they get uploaded.
RoRvsWild's blog 

Personalized application performance discussion

Last year at Friendly.rb, we installed our monitoring gem on our friend Yaro’s SupeRails app, and discussed what he could eventually do to improve its performance. He enjoyed it and suggested we do it for more people. Back from the conference, we started doing it.

We are going to Euruko this year week, and we’ll have a small booth. Let’s do it again!

Attending Euruko?

Exciting right? Here is the plan:

  1. Create an account, install the gem in your application, and deploy it. (Skip to 3 if you did it before the conference)

  2. Watch a talk while the monitoring data is being collected.

  3. Come and see us at our booth, and we’ll review your data together and discuss ways to optimize your app’s…

No Euruko?

You’ll be missing out, but rejoice, you can have almost the same experience when we come back:

Judoscale Dev Blog 

How to Choose a Node.js Framework

Building a Node.js server without a full framework is technically possible, but leaning on a framework will certainly improve your development speed and likely your app’s quality. Frameworks give us reusable tools that help us not have to reinvent the wheel for every little thing. Choosing a Node framework (and picking the right one) will ensure you spend less time on basic functionality and more time on your actual application logic.

Comparing Node.js frameworks

The popularity of JavaScript and Node.js means we get a handful of really incredible frameworks to choose from and plenty of great hosting options. In this article, I’ll explain what makes each framework unique and how you can choose…

Ruby Magic by AppSignal 

Getting Started with Custom Instrumentation in Rails Using AppSignal

Imagine debugging a performance issue in your Rails ecommerce app’s checkout process. The default logs display a vague "slow request," but this is insufficient to determine what's actually happening. You need to pinpoint exactly which database query, external API call, or background job is causing the bottleneck. More importantly, you need to understand the business impact: How many customers are abandoning their carts due to this issue? What's the revenue loss per minute?

Custom instrumentation with AppSignal for Ruby enables you to tag and measure these components in real time, providing both technical insights and business intelligence.

In this tutorial, we'll custom instrument a…

Tenderlove Making 

Apple Photos App Corrupts Images

The Apple Photos app sometimes corrupts images when importing from my camera. I just wanted to make a blog post about it in case anyone else runs into the problem. I’ve seen other references to this online, but most of the people gave up trying to fix it, and none of them went as far as I did to debug the issue.

I’ll try to describe the problem, and the things I’ve tried to do to fix it. But also note that I’ve (sort of) given up on the Photos app too. Since I can’t trust it to import photos from my camera, I switched to a different workflow.

Here is a screenshot of a corrupted image in the Photos app:

screenshot of a corrupt image

How I used to import images

I’ve got an OM System OM-1 camera. I used to shoot in RAW +…

Josh Software 

When Apollo’s Cache Gets Confused: Handling Nested Data Collisions

Imagine having an awesome day as a programmer — coding new features, enjoying your favourite coffee , when suddenly, you got yourself into a situation in your app’s data management. You delete an item, expecting it to vanish neatly, but instead, it disappears everywhere — even places it shouldn’t. Is it magic or something? Nope, it’s a … Continue reading When Apollo’s Cache Gets Confused: Handling Nested Data Collisions
Giant Robots Smashing Into Other Giant Robots 

Superglue 2.0 Alpha: React ♥️ Rails Turbo Streams!

logo

Turbo Streams is pretty awesome.

It’s a great tool to make surgical updates to your pages over websocket/SSE. You can easily build applications that require live updates with the kind of minimal effort that would make the modern Javascript developer blush. And even more impressive, it’s made possible by reusing your existing Rails view partials, giving it essentially 8 new super powers.

It’s a fine tool to have. I must have it.

Earlier this year, we announced Superglue: The Rails Way of building React and Rails applications. In the same spirit, today we’re announcing Superglue 2.0 Alpha and our new tooling: Super Turbo Streams, a port of Turbo Streams made for Superglue.

Why? …

Rails at Scale 

Reworking Memory Management in CRuby

This blog post was adapted from our paper and talk at the International Symposium on Memory Management 2025.

Click here to read the paper

This browser does not support displaying PDFs. Please download the PDF to view it: Download PDF.


We would first like to acknowledge the late Chris Seaton, who initiated our collaboration with the Australian National University on this project. We are thankful for his contribution, vision, and leadership. Without him, none of this would have been possible.

Background

The Australian National University (ANU) and Shopify are collaborating on integrating the Memory Management Toolkit (MMTk) with Ruby. We are…

Peter Zhu 

Reworking Memory Management in CRuby

Shopify sponsors and collaborates with academia to take Ruby to new heights. In this post, we give an overview of what we've built in collaboration with the Australian National University.
Everyday Rails 

Testing with RSpec book updates for September 2025

New content on top-down testing and covering your app's supporting features.
RoRvsWild's blog 

More everyday performance rules for Ruby on Rails developers

Previously, I wrote Everyday Performance Rules for Ruby on Rails Developers. I will try to provide another round of good practices. I hope that will help you speed up your application as well.

Rendering a collection is faster than calling a partial in a loop

<%# Slower %>
<% records.each do |record| %>
  <%= render "partial", record: record %>
<% end %>

<%# Faster %>
<%= render partial: "partial", collection: records, as: :record %>

Because render "partial" lookups for the partial N times and generates N instrumentations.

Whereas, rendering a collection lookups for the partial only once and generates a single instrumentation.

As always, less is faster. Here is a benchmark to…

Tim Riley 

Rodauth, meet Hanami

Practically every web app needs authentication, and you really want to get it right. This is why I’ve long admired Rodauth. It’s a powerful, proven authentication framework, and best of all, it’s lightweight, configurable, and supports Ruby apps of all kinds! Now we’re talking!

My admiration, though, has always been from afar. That was until this week, when I finally found the chance to use it first-hand. I added Rodauth to Decaf Sucks, my open source Hanami app.

Did it live up to my expectations? I won’t hold back: it did! Rodauth is great!  I recommend it to anyone wanting authentication in their Hanami apps.

Sign me up!

If you’re keen to jump straight into a working setup, you can…

Avo's Publication Feed 

Canonical URLs in Rails applications

Let's learn about canonical URLs in Rails apps: how to add them and some things to consider when adding them to our sites.
The Bike Shed 

474: Board games and programming

It’s board game night at the Bike Shed as Joël and Aji crack out the game pieces to assess how their work as programmers influences strategy when playing some of their favourite games.

As they make their way round the board they discuss the cycle of setbacks and iteration, finding the optimal solution to a puzzle, as well as the key skills that best links their programming work to board games.

Check out the upcoming conferences mentioned in this episode - XO Ruby and Rocky Mountain

Your hosts for this episode have been thoughtbot’s own Joël Quenneville and Aji Slater.

If you would like to support the show, head over to our GitHub page, or check out our website.

Got a…

Ruby News 

Ruby 3.4.6 Released

Ruby 3.4.6 has been released.

This is a routine update that includes bug fixes. Please refer to the release notes on GitHub for further details.

Release Schedule

We intend to release the latest stable Ruby version (currently Ruby 3.4) every two months following the most recent release. Ruby 3.4.7 is scheduled for November and 3.4.8 for January.

If a change arises that significantly affects users, a release may occur earlier than planned, and the subsequent schedule may shift accordingly.

Download

justin․searls․co - Digest 

🔗 The Last Days Of Social Media

James O'Sullivan has a banger of an editorial on the "late attention economy", including this bit illustrating the various platforms' pivot from active participation to passive absorption:

While content proliferates, engagement is evaporating. Average interaction rates across major platforms are declining fast: Facebook and X posts now scrape an average 0.15% engagement, while Instagram has dropped 24% year-on-year. Even TikTok has begun to plateau. People aren't connecting or conversing on social media like they used to; they're just wading through slop, that is, low-effort, low-quality content produced at scale, often with AI, for engagement.

I'm grateful to be living a timeline-free…

Ruby on Rails: Compress the complexity of modern web apps 

Rails World 2025 Recap - All talks now online!

The dust has settled on Rails World 2025, and we owe a huge thank-you to everyone who came to Amsterdam and made it unforgettable.

But first and more importantly: All the talks are now online! Catch up on ones you missed on the Rails World 2025 YouTube playlist.

Recap

814 Rails devs from 62 countries gathered in Amsterdam for more than two days of the latest news in Rails, technical talks, networking, and a fantastic closing party.

Here’s a quick run down of the highlights:

Keynotes

DHH opened by challenging tech’s obsession with complexity, announcing Rails 8.1 beta and a wave of new features—including Markdown Rendering, Active Job Continuations, Action Text Lexxy, Beamer, Active…

Evil Martians 

Baking with Rails at scale: recipes in Ruby, cookware from Go, C, and Rust

Authors: Irina Nazarova, CEO, Svyatoslav Kryukov, Backend Engineer, and Travis Turner, Tech EditorTopics: Rails, Go, Rust

Scale your Rails app without rewrites. Learn to keep business logic in Ruby and delegate heavy work to specialized tools, built with Go, C, and Rust, for performance and scalability.

Ruby on Rails excels at business logic, developer happiness, and rapid iteration. Still, when performance bottlenecks emerge, the typical refrain is: "rewrite in Go," "extract to microservices," or "break up the monolith." But there's a better way: scaling your Rails app without breaking the recipe by optimizing your kitchen instead.

Alchemists: Articles 

Git Stashes

Cover
Git Stashes

Git stashes are a lightweight, and fast, way to save the current state of your working directory when you need to temporarily switch contexts without losing your work. This is great for saving experimental code spikes, exploring ideas, and so forth.

In the past, stashes has been private and local to your machine but with the release of Git 2.51.0 that is no longer true. We’ll explore all of this in more detail but, first, let’s get setup so we can explore further.

Setup

For the purposes of discussion, we’ll use a demo project for exploring how stashes work.…

Hotwire Weekly 

Week 37 - Rails World 2025 Recap, Serializing ViewComponent, and more!

Hotwire Weekly Logo

Welcome to Hotwire Weekly!

Welcome to another issue of Hotwire Weekly! Happy reading! 🚀✨


📚 Articles, Tutorials, and Videos

Rails World 2025 Recap - ReActionView, Herb v0.7 and Herb::Engine - Marco Roth published a recap of his Rails World Talk in which he introduced the ReActionView initiative, a new ERB engine compatible with ActionView, together with Herb v0.7, and so much more. All aimed at leveling up Rails’ view layer without having to abandon .html.erb.

Leveraging Hotwire for Dynamic Input Field Label Pluralization - Amanda Klusmeyer shows how to use a Stimulus controller with singular and plural values to update a label like night vs nights based on user input, making forms more…

Walkthrough Video: Opal Stimulus - Joseph…

justin․searls․co - Digest 

📸 A simple calculation

Whenever I need to verify a network connection with a remote LLM, I always ask it 1+1. I'm sure it'll still raise the ocean level by a millimeter, but it seems less bad than a more complex query.

I forgot I had unhidden chain-of-thought reasoning, so I chuckled when I got this:

Sure thing! The task is straightforward: I just need to respond to "1+1" with "2." It's a simple calculation, so I won't overthink it. There's no need to use any tools for this, and I know the guidelines about "Destructive Deletions" and "No Comments by Default" don't really apply here. I'll just keep it short and clear, and the answer will simply be "2."

At least it didn't overthink it.

Posts on Kevin Murphy 

Formatting SQL with anbt-sql-formatter

Seeing SQL 🔗

Have you ever needed to display the SQL query used to generate the data in the report you’re also showing? Me neither.

UNTIL I DID.

And when I did, I wanted it to look nice. Readable. Formatted.

Something that didn’t look like this:

irb(main):001:0> puts "SELECT * from FOOS join bars on foos.id = bars.foo_id WHERE A = true AND B = 'test' OR coalesce(status, 'unknown') <> 'unknown'"SELECT * from FOOS join bars on foos.id = bars.foo_id WHERE A = true AND B = 'test' OR coalesce(status, 'unknown') <> 'unknown'

Reading that, I felt broken. And not in the best possible way. I didn’t feel any positive vibes. Still don’t.

I started thinking about needing to ante up for the standard…

Island94.org 

Serializing ViewComponent for Active Job and Turbo broadcast later

I recently started using ViewComponent. I’ve been gradually removing non-omikase libraries from my Rails applications over the past decade, but ViewComponent is alright. I was strongly motivated by Boring Rails’ “Hotwire components that refresh themselves”, cause matching up all the dom ids and stream targets between views/partials and …. wherever you put your Stream and Broadcast renderers is a pain.

You might be familiar with me as the GoodJob author. So of course I wanted to have my Hotwire components refresh themselves later and move stream broadcast rendering into a background job. I simply call MessagesComponent.add_message(message) and broadcasts an update later

Tim Riley 

Continuations, 2025/37: App land

  • I did something different this week: I shifted back into app land, and created Tim’s First Rodauth Setup! Now we have it powering authentication in Decaf Sucks. Another step forward for my slowly-but-surely hobby/demo app.

    Now I’ve had some hands-on experience with it, let me say this: Rodauth is great! Getting it working in Hanami was pretty straightforward, and once I got the hang of its features, it was a lot of fun to add them one-by-one until I had the authentication experience of my dreams.

    I’m part way through a full blog post about this, which I plan to publish this week. Hopefully it will be a valuable resource for Hanami users wanting a streamlined and powerful authentication…

  • Back in framework land, as of…

Tom Dalling 

Tom's Philosophy Of Project Management For Software Development

Below is an excerpt from Tom’s Expectations For Project Management — a private document written for engineers who report to me and who are running projects in a technical lead role, which lists out a set of project management responsibilities and expectations.

Ruby on Rails: Compress the complexity of modern web apps 

ActiveJob serialize array improvements, rails/info/routes additions and more!

Hi everyone, it’s Vipul. Let’s explore this week’s changes in the Rails codebase!

Do not add seed step to config/ci if active record is skipped
This PR ensures that in CI configuration templates, Rails does not add a db:seed step when Active Record is skipped. This prevents CI failures or unnecessary steps for applications that are database-free or that intentionally disable Active Record.

AJ serialize array
Improves how arrays are handled in ActiveJob argument serialization. Ensures serialized arrays round-trip correctly and fixes inconsistencies/bugs in how arrays were converted or stored.

Restore exact behavior of AJ Arguments.serialize
Brings back previous behavior of the ActiveJob…

Noteflakes 

P2 is the New Papercraft

In the last few months I’ve been busy working on a few different open-source projects. Some of those projects are still at a preliminary stage, and I’m taking my time in continuing to develop them, use them ( on this website for example), but one project I’ve devoting a lot of attention to is P2, a Ruby gem for writing HTML templates in plain Ruby, which I’ve been writing about lately.

P2 has started as an exploration of how to make Papercraft faster. Papercraft, about which I’ve also written, was centered on the idea that HTML templates should be fun to read and write, and fun to compose in various ways, following the idea of promoting developer happiness, a central tenet in the Ruby…

Whil…

SINAPTIA 

Ruby Argentina September meetup

On September 10th, 2025, the Argentina Ruby community gathered once again for another meetup. The event was sponsored by several companies, including SINAPTIA, LeWagon, OmbuLabs, and Rootstrap, who also hosted the event at their office space.

We had a first talk by Fernando, who analyzed the inner workings of AI agents (coding agents in particular), and another by Nicolas that demonstrated a hands-on approach to separating a Rails app into an API and a frontend app using Vite.js.

Something about agents

The first talk was presented by Fernando from SINAPTIA. He told us about his journey in the AI world and AI agents using Ruby. His presentation was guided by these questions:

  • What is…
Judoscale Dev Blog 

Autoscaling Insights: What Nearly A Decade Of Autoscaling Your Apps Has Revealed To Us

We’ve been autoscaling apps for a long time — almost a decade! That’s long enough to see patterns repeat across Rails, Node, and Python; Redis and Postgres; Heroku, AWS, Render, and more. From these experiences and insights we wanted to put together a compendium of mistakes, misconceptions, less-intuitive ideas, and “oh wow that does matter” moments as best we could.

We’ll organize this like a listicle, but we’ll connect the dots as we go so it reads like one story: what queue time really tells you, why shared hardware is noisy, how scheduling fits in, and how to keep your scaler from thrashing.

1) Shared hardware is noisy

Multi-tenant machines are cheaper because they’re…

Remote Ruby 

SF Ruby with Irina and Vladimir

In this episode of Remote Ruby, Chris and Andrew chat with returning guests Irina Nazarova and Vladimir Dementyev to discuss the upcoming SF Ruby Conference, a vibrant event taking place in San Francisco on November 19-20, 2025. They delve into the significance of the conference for startups and the Ruby community, highlighting the venue, keynote speakers, workshops, and fun activities planned. Additional topics include experiences with AI, productivity tools for developers, and running Rails in the browser. Hit download now and then go buy your tickets to this amazing conference! 

Links

Saeloun Blog 

Rails Decouples Trix From Action Text Into action_text-trix gem

Action Text is a power-packed tool designed to build WYSIWYG editors for our Rails applications easily. Action Text brings rich text content and editing to Rails.

Trix

Trix is developed by Basecamp.

According to its official website:

Trix is an editor for writing messages, comments, articles, and lists—the simple documents most web apps are made of. It features a sophisticated document model, support for embedded attachments, and outputs terse and consistent HTML.

We can read more about Trix, all the features it offers, and what are its advantages over most other WYSIWYG editors over here.

Before

Historically, Trix was bundled directly with Action Text in Rails, meaning that…

Rémi Mercier 

Finally learning a new language

For years, people around me have been telling me to learn new programming languages—that I shouldn’t corner myself with Ruby (and Rails). And for years, I couldn’t muster the mental energy to do it.

But lo and behold, the breakthrough happened!

Will it be Rust? Will it be JavaScript?

None of the above, my good sir! It’ll be Logo, a procedural language designed to teach children the basics of programming.

Why, though? Well, last week, my child’s new teacher told us he intended to introduce programming to the class. And I thought: “Ooooh, I might finally be able to explain to my children what I do for a living.”

So, I got very excited about it and down the rabbit hole I fell.

To make it…

Awesome Ruby Newsletter 

💎 Issue 486 - Rails World 2025 Opening Keynote - David Heinemeier Hansson

Ruby Weekly 

A look into Ruby's JIT magic

#​766 — September 11, 2025

Read on the Web

I've put together a timestamped summary of the main points from DHH's Rails World keynote at the end of this issue as I know not everyone has an hour free to watch it :-)
__
Your editor, Peter Cooper

Ruby Weekly

How Ruby Executes JIT Code: The Hidden Mechanics Behind the Magic — Stan Lo works in the depths of Ruby’s tooling (most notably on IRB and ruby/debug) but still felt detached from how Ruby’s JIT compilers (like YJIT and ZJIT) actually work. This is his attempt at shining some light on the topic and might clarify your thinking too.

Stan Lo

📍Your…

André Arko 

Rails on SQLite: exciting new ways to cause outages

This post was originally given as a talk for Friendly.rb. The slides are also available.

Between Litestack and the Rails 8 trifecta of Solid Cable, Solid Cache, and Solid Queue, it’s easier than ever to spin up a Rails app that doesn’t need a database service, or a redis service, or a file storage service. It’s great to simplify things, but even after 20 years of deploying Rails apps I was still caught out by some of the ways things are different.

Based on what happened when I built a new side project in Rails on SQLite, we’ll cover what’s different, what’s new, and several ways that you can knock your site offline or even destroy your entire production database. As we go, we’ll also talk…

Felipe Vogel 

Making myself a reading log

Have you ever wanted to track your reading in an excruciatingly-detailed plain text file that is programmatically parsed, queried, and visualized in charts?

I did, and you can see the result on my site’s Reading and Reading Stats pages.

This isn’t a new project: it’s been two years since I seriously worked on it. Nor is it popular, judging by its single-digit GitHub stars.

But I want to reflect on it as a tool that I shaped for myself, and which ended up reshaping how I read.

In the beginning, there was Goodreads

I used to track my…

Rails Designer 

Typography for Rails developers

Using professional typography in your Rails app makes the difference between something looking okay to really professional. There is lots of info about this topic around, but less so specifically for Rails developers building apps or Rails-based SSG.

But first: while most people say “fonts”, the correct term is actually “typeface”. A typeface is the design (like Inter or Helvetica), while a font is a specific implementation (like Inter Bold 16px).

Difference between font and typeface

A typeface is the overall design of a set of characters, like a family name. Examples include: Helvetica, Inter and San Francisco.

A font is a specific implementation or variation of a typeface, like size…

Posts on Kevin Murphy 

New Wall Art

Glitch on Plaster 🔗

I recently received some new prints that immediately went into frames and made their way on to my wall. They’re all from Rob Sheridan. I first learned about Rob from his time as the Creative Director of Nine InchNails, and I’ve enjoyed following his work since then.

Three prints of Rob Sheridan's work framed on the wall: 'Precipice', 'Reach', and 'Turbulence' from left to right

These are all poorly-taken phone camera pictures of high-quality prints from within frames. Trust that the quality of images you see in front of you do not do justice to their true representation.

Precipice (second edition) 🔗

A print of Rob Sheridan's 'Precipice' in a frame

Rob provides some context about this piece:

The allure and fear of the unknown; the double-edged sword of feeling like anything is possible, for better or worse. The warm glow of possibility…

The Rails Tech Debt Blog 

The Automated Roadmap to Upgrade Rails

The Roadmap to Upgrade Rails is FastRuby.io’s discovery product that helps teams plan and execute their Rails upgrade projects.

We’re happy to introduce an Automated Version of the Roadmap, powered by an AI agent, available completely for free!

Check it out on the Automated Roadmap to Upgrade Rails page and keep reading to learn more about how it works.

How It Works

The Automated Roadmap to Upgrade Rails offers two routes to get your upgrade plan:

Automated Roadmap Form

Generic Roadmap:

You’ll only need to provide your current and target Rails versions, along with your current Ruby version. We’ll generate a generic upgrade plan based solely on the versions, meaning it will include every deprecation…

Evil Martians 

Exploring Active Agent, or can we build AI features the Rails way?

Authors: Vladimir Dementyev, Principal Backend Engineer, and Travis Turner, Tech EditorTopics: AI, Rails, Open Source, AI integration, LLMs

Explore how the Active Agent library brings Rails conventions to AI development, with real-world examples from Evil Martians' early adoption experience

In a fast-paced world with AI oozing out of every pore, frameworks and ecosystems must adjust quickly to rapidly evolving business demands. Everyone needs smart features in their apps. The easier it is to add AI-driven features to the project built with Some Framework, the more likely it will be the tool of choice. Let's assume that "Some Framework" is "Ruby on Rails" and explore this ecosystem's AI…

Radan Skorić's website 

Rails World 2025 from a first time speaker perspective

Last time I was in Amsterdam I was 17 and it was a different kind of trip. This time I was speaking at RailsWorld 2025. My first time giving a talk at an event of this magnitude. I’ve given many meetup talks but this is different. Also, the last time I talked in front of a few hundred people was before Covid, and that was in my home town. This is a long way of saying that this was a very, very...
DotRuby - Things we have to say. 

Rails Without Ruby

Yes, you can run Rails without installing Ruby. With VS Code devcontainers, your whole Rails setup lives inside Docker — no version managers, no system dependencies, just rails new and go.
RoRvsWild's blog 

Fibonacci Funhouse: Exploring Ruby Algorithms for Fibonacci Numbers

This article is a deep dive into the world of Fibonacci numbers to show some really neat tools that Ruby provides. Some may not be used very often, but it is always good to have them in your toolbox.

So using Ruby, what is the largest Fibonacci number we can calculate quickly?

Understanding the Fibonacci Sequence

In case you are not familiar, the Fibonacci sequence is a classic mathematical progression where each number is the sum of the previous two. Starting with 0 and 1, the sequence looks like this:

$$0, 1, 1, 2, 3, 5, 8, 13, 21, 34, …$$

Basic Recursive Fibonacci Algorithm and Its Limitations

The most straightforward method to compute Fibonacci numbers is a simple recursive…

Tenderlove Making 

File preallocation on macOS in Ruby

I haven’t blogged in a while, so I figured I should do that. Jet lag has blessed me with some free time this morning, so I figured I would make some content in order to feed the AI bots.

I’ve been messing around with pre-allocating files on the file system on macOS. This is useful in cases where you have a large file you need to copy, and you want to copy it quickly. For example, a tar implementation where the tar file might contain large files you need to copy.

Here is the code:

require "fcntl"

# typedef struct fstore {
#     u_int32_t fst_flags;      /* IN: flags word */
#     int       fst_posmode;    /* IN: indicates offset field */
#     off_t     fst_offset;     /* IN: start of the…
Rails at Scale 

How Ruby Executes JIT Code: The Hidden Mechanics Behind the Magic

Ever since YJIT’s introduction, I’ve felt simultaneously close to and distant from Ruby’s JIT compiler. I know how to enable it in my Ruby programs. I know it makes my Ruby programs run faster by compiling some of them into machine code. But my understanding around YJIT, or JIT compilers in Ruby in general, seems to end here.

A few months ago, my colleague Max Bernstein wrote ZJIT has been merged into Ruby to explain how ZJIT compiles Ruby’s bytecode to HIR, LIR, and then to native code. It sheds some light on how JIT compilers can compile our program, which is why I started to contribute to ZJIT in July. But I still had many questions unanswered before digging into the source code and…

So I want to…

justin․searls․co - Digest 

🎙️ Breaking Change podcast v43.1 - iPhone 17 Event Review

Direct link to podcast audio file

It's an emergency bonus edition of Breaking Change as I take the covers off yet another show-within-a-show. I call it Feature Release, and its job is to fill in that middle number in our semantically versioned series of conversations together. No pun, no news, just some timely content wrapped up in a name, logo, and jingle package that still has that new podcast smell.

It's a 1-hour review of the Airpods, Apple Watch, and iPhone updates Apple announced today. You can see the full event video on YouTube. The Verge has a 17 minute abridged version if you just want the synopsis.

Please enjoy this episode of Feature Release! It may be the only one.…

Ruby Rogues 

Distributing Your CLI with Homebrew: Tips from Mike McQuaid - RUBY 678

In this episode of Ruby Rogues, I sit down with Mike McQuaid, lead maintainer of Homebrew, to talk all about building and distributing CLIs. We dig into the practical steps for turning small scripts into reliable command-line tools, why Ruby is a great starting point, and when you might want to reach for Go or Rust instead.

We also explore the challenges of distributing CLIs across macOS, Linux, and Windows, why Homebrew remains one of the easiest ways to ship software, and the importance of testing CLIs from the outside in. Plus, Mike and I discuss how AI is transforming the developer workflow—from Copilot PR reviews to agent-based coding—and what that means for both seniors and juniors in…
RubyGems Blog 

3.7.2 Released

RubyGems 3.7.2 includes enhancements and bug fixes.

To update to the latest RubyGems you can run:

gem update --system

To install RubyGems by hand see the Download RubyGems page.

### Enhancements:

  • gem sources --prepend and --append allow finer grained control of sources. Pull request #8901 by martinemde
  • Improve gem sources --remove output. Pull request #8909 by deivid-rodriguez
  • Make gem sources output more clear. Pull request #8938 by deivid-rodriguez
  • Use IMDSv2 for S3 instance credentials. Pull request #7709 by folbricht-stripe
  • Installs bundler 2.7.2 as a default gem.

### Bug fixes:

  • Fix “did you mean” suggestions for unknown commands. Pull request #8948
The Bike Shed 

473: Mental models for browsers

Joël prepares to write his new book by asking Sally some fundamental questions about Web browsers.

Together they look to answer the deceptively simple question of what is a browser, examining what they are at their core, what they’re capable of beyond basic functions, the nuances of programming for the web across different systems and devices on the front and back end, as well as unpacking the surprising benefits of different forms of browsers like the terminal text based platform Lynx.

Thanks to our sponsors for this episode Judoscale - Autoscale the Right Way (check the link for your free gift!), and Scout Monitoring.

Your hosts for this episode have been thoughtbot’s…

Short Ruby Newsletter 

Short Ruby Newsletter - edition 149

The one that sums up Rails World, where the next stop from Ruby Triathlon is Friendly.rb, where Rails 8.1 beta1 is released and RubyMine is free for non-commercial use.
justin․searls․co - Digest 

🔗 I've got your shovelware right here

Mike Judge thinks developers may be deluding themselves into thinking AI coding tools are making them more productive:

My argument: If so many developers are so extraordinarily productive using these tools, where is the flood of shovelware? We should be seeing apps of all shapes and sizes, video games, new websites, mobile apps, software-as-a-service apps — we should be drowning in choice. We should be in the middle of an indie software revolution. We should be seeing 10,000 Tetris clones on Steam.

If you read the post, he's got data to this effect.

I've got two problems with this:

  1. Much of his data basically stops around March–April 2025—the precise window when AI coding tools finally be…

Write Software, Well 

Rails on Localhost: Secure Context and Local HTTPS with Caddy

Rails on Localhost: Secure Context and Local HTTPS with Caddy

TL;DR: You can and should use localhost in development. Browsers give a special treatment to the http://localhost domain. Even though it's on HTTP, most of the time it will be treated as HTTPS. So any browser APIs that need HTTPS, will continue working even if you're using localhost. When you do need HTTPS locally, use Caddy.

Also, localhost can have subdomains. So you can just prefix the URL with your app name, and suffix it with the port to separate multiple apps, like http://{subdomain}.localhost:{port}. I had no idea about this until I saw this tweet from DHH.

Rails on Localhost: Secure Context and Local HTTPS with Caddy

and again in the Rails World keynote...

Rails on Localhost: Secure Context and Local HTTPS with CaddyRails World Keynote

Secure Contexts

💡
A potentially trustworthy origin is one that the browser…
Julik Tarkhanov 

Illegible perception

Good ideas are worth disagreeing with. Sean Goedecke posits that organizations implement process to have legibility – a very interesting idea. However, I see it differently.

It is not about legibility but it is about perception of legibility. Does the CEO look at burndown charts in your project management tool? Maybe, but highly unlikely. Does the head of product look at the key user flows that are getting implemented? Maybe. Does the EM look at the backlog of technical debt and prioritize items out of that backlog? Maybe, but if the organization is small enough and the EM is hands-on and smart - they “just go and do things”.

In nearly all the situations I’ve seen, the implementation of…

Hotwire Weekly 

Week 36 - Rails World 2025: Rails 8.1 beta, Lexxy, ReActionView, and more!

Hotwire Weekly Logo

Welcome to Hotwire Weekly!

Welcome to another, slightly delayed, issue of Hotwire Weekly! Happy reading! 🚀✨

Rails World also marks the two-year anniversary of Hotwire Weekly! 🎉


📚 Articles, Tutorials, and Videos

Lexxy: A new rich text editor for Rails - Jorge Manrubia published a new blog post and video on the 37 singals blog about their new rich text editor built on Lexical.

Modern CSS organization (in Rails) - Rails Designer explores how modern CSS features, like native nesting and custom properties, enable cleaner, component-focused styling in Rails apps without preprocessors like Sass.

An Out of Body Experience with Turbo - Miles Woodroffe explains how third-party messenger widgets…

Closer to Code 

WaterDrop Meets Ruby’s Async Ecosystem: Lightweight Concurrency Done Right

Ruby developers have faced an uncomfortable truth for years: when you need to talk to external systems like Kafka, you're going to block. Sure, you could reach for heavyweight solutions like EventMachine, Celluloid, or spawn additional threads, but each comes with its own complexity tax.

EventMachine forces you into callback hell. Threading introduces race conditions and memory overhead. Meanwhile, other ecosystems had elegant solutions: Go's goroutines, Node.js's event loops, and Python's asyncio.

Ruby felt clunky for high-performance I/O-bound applications.

Enter the Async Gem

Samuel Williams' async gem brought something revolutionary to Ruby: lightweight concurrency that actually feels…

Drifting Ruby Screencasts 

RubyMine

I haven't used RubyMine in several years, but a recent announcement from JetBrains have now opened up access for free with non-commercial products. In this episode, I'm taking a fresh look at RubyMine after years of not using it.
a-chacon 

I Migrated My Blog from GitHub Pages to Codeberg Pages. And This Is Just the Beginning.

This will be a short post. As the title says, you’ll already be seeing this article from my site hosted on Codeberg.

I’m slowly migrating to Codeberg because there’s a feature of Forgejo (the software that powers Codeberg) that really catches my attention - the possibility that ForgeFed will be implemented and code repository hosting can be decentralized.

This is how collaboration between repositories and open source projects should have been from the beginning. Being able to interact between instances rather than having a single entity control the destiny of open source. Let alone them forcing the adoption of technologies (AIAIAIA) that instead of increasing productivity, are generating…

There are also ethical concerns…

Andy Croll 

Rails World 2025

Off I went to Amsterdam via—so incredibly civilized—Eurostar from St Pancras wearing my favourite Ruby T-shirts.

Had a day mostly to myself in Amsterdam on Wednesday, drinking coffee, eating chocolates, meeting friends, visiting the Anne Frank House and generally enjoying the vibe of the city while avoiding its insalubrious corners.

I even mananged a run around the city before the conference.

David kicked off with a typical combative mixture of what’s new in Rails, his current enthusiasms and accidental set ups for Aaron’s punchlines in the closing keynote.

Omarchy seems very appealing and I do have an urge to buy a Framework machine. The independence from exploitative gatekeepers (e.g.…

Andy Croll 

Rails World 2025

Off I went to Amsterdam via—so incredibly civilized—Eurostar from St Pancras wearing my favourite Ruby T-shirts.

Had a day mostly to myself in Amsterdam on Wednesday, drinking coffee, eating chocolates, meeting friends, visiting the Anne Frank House and generally enjoying the vibe of the city while avoiding its insalubrious corners.

I even mananged a run around the city before the conference.

David kicked off with a typical combative mixture of what’s new in Rails, his current enthusiasms and accidental set ups for Aaron’s punchlines in the closing keynote.

Omarchy seems very appealing and I do have an urge to buy a Framework machine. The independence from exploitative gatekeepers (e.g.…

Posts on Kevin Murphy 

Frequently Played Sept 2025

Frequently Played 🔗

I tend to listen to the same songs or albums on repeat that are evocative of how I’m feeling or what’s going on with me. Here is what I’m currently listening to over, and over, and over, and over, again.

The Blues, Mary 🔗

This song is a precursor, a warning, a premonition.

Full Lyrics

I learned how to cry
In them lonesome September nights
I learned to get by
With the dogs and the dirt and the charm of the street
I fell asleep most nights
With your pictures right behind my eyes, your eyes

And All That Could Have Been 🔗

I started this series one year ago. I think it’d be a funny bit to just repeatthe same songs year after year. But this isn’t a bit. I’m just in the same spot.

Full…

justin․searls․co - Digest 

📄 Distributing your own scripts via Homebrew

I use Homebrew all the time. Whenever I see a new CLI that offers an npm or uv install path alongside a brew one, I choose brew every single time.

And yet, when it comes time to publish a CLI of my own, I usually just ship it as a Ruby gem or an npm package, because I had (and have!) no fucking clue how Homebrew works. I'm not enough of a neckbeard to peer behind the curtain as soon as root directories like /usr and /opt are involved, so I never bothered before today.

But it's 2025 and we can consult LLMs to conjure whatever arcane incantations we need. And because he listens to the cast, I can always fall back on texting Mike McQuaid when his docs suck.

So, because I'll never remember any…

Julik Tarkhanov 

Drive manually

On the 30th of August, 2000, a train flew out of the tunnel at a station in Paris, and, without stopping, rolled on through into the tunnel. It was clear that the train was speeding, and speeding severely. Inside the tunnel, the train has derailed with the front cab car turning over. Luckily, there were no fatalities. 24 people were injured.

The investigation was able to establish that the train’s speed was above the maximum permitted on that section of track by 20 km/h, if not more. How could this happen, given that the Paris Metro has been equipped with automatic speed control since the early 70s?


For the first time in years I am available for contract engagements!
Want to benefit from…

Tim Riley 

Continuations, 2025/36: Tone and tenor

  • Quite a good week of Hanami progress, I think. Partly because I ended up having several nights across the week to get stuff done.

  • On the code side, I merged a fix that ensures the app inflector is used for all CLI inflections. Also Reviewed Krzysztof’s progress on the db rollback command, which is looking great.

  • Today (on my #HanamiFriday) I addressed the last remaining Rack v3 compatibility issues in Hanami Controller! This is huge, because it unlocks a Hanami 2.3.0 beta for us. Time to start planning for that!

  • In the background, Adam continues to bring Dry repos across to our new repo-sync. This week: auto_injector, cli, inflector, configurable, monads, and matcher. Bit by bit, things…

Remote Ruby 

XO Ruby with Jim Remsik

In this episode, Chris chats with guest Jim Remsik, Founder of Flagrant, on the significance of Ruby and Rails conferences. They discuss the nuances of organizing and attending such events, including the challenges and rewards of emceeing, the importance of community guidelines, and the value of having diverse participation. Jim shares insights into the upcoming XO Ruby Conference Series, their strategy behind choosing cities, and ensuring meaningful, smaller-scale interactions among attendees. They also touch on the intersection between design and development, the role of junior developers in the evolving tech landscape, and the importance of building relationships within the community.…

Ruby on Rails: Compress the complexity of modern web apps 

Rendering Markdown is real, plus new database connection pool options

Hi, it’s zzak. Let’s explore this week’s changes in the Rails codebase.

Rails 8.1 Beta 1 lands
The first beta release was cut for Rails 8.1, see the post for full details.

Rails World 2025 Opening Keynote
Part of the newsletter team is enjoying Rails World in Amsterdam, say hi to them if you attend. If you (like me) couldn’t go, the first keynote is already up!

Introduce new database configuration options for managing connection pools
This PR adds keepalive, max_age, and min_connections – and renames pool to max_connections to match. There are no changes to default behavior, but these allow for more specific control over pool behavior.

Move “LIMIT” validation from query generation to…

Awesome Ruby Newsletter 

💎 Issue 485 - RubyMine is now free for non-commercial use

Ruby Weekly 

37signals unveils its new rich text editor

#​765 — September 4, 2025

Read on the Web

Ruby Weekly

The RubyMine IDE Now Free for Non-Commercial UseRubyMine is a popular commercial IDE for Ruby with a rich set of features like RBS support and debugger integration, so it’s neat to see it switch to a new licensing model. “Non-commercial” has a liberal definition here (including ‘any form of content creation’) so read their FAQs to see if it would be a fit for you.

Iryna Pisklyarova (JetBrains)

Rails 8.1 Beta 1 Released — In sync with his Rails World keynote (more on that below), DHH has pushed out the first beta of Rails 8.1 which introduces…

Ruby on Rails: Compress the complexity of modern web apps 

Rails 8.1 Beta 1: Job continuations, structured events, local CI

Rails 8.1 represents the work of over 500 contributors across 2500 commits in the last ten months since our last major release, and we’re thrilled to time the first beta release with the first day of Rails World. Here are a few of the highlights:

Active Job Continuations

Long-running jobs can now be broken into discrete steps that allow execution to continue from the last completed step rather than the beginning after a restart. This is especially helpful when doing deploys with Kamal, which will only give job-running containers thirty seconds to shut down by default.

Example:

class ProcessImportJob < ApplicationJob
  include ActiveJob::Continuable

  def perform(import_id)
    @import =
37signals Dev 

Lexxy: A new rich text editor for Rails

Today, we are introducing Lexxy, a new rich text editor for Action Text. It’s based on Lexical — Meta’s text editing framework — and it brings a much better text editing experience to Rails:

  • Good HTML semantics. Paragraphs are real <p> tags, as they should be.
  • Markdown support: shortcuts, auto-formatting on paste.
  • Real-time code syntax highlighting.
  • Create links by pasting URLs on selected text.
  • Configurable prompts. Support for mentions and other interactive prompts with multiple loading and filtering strategies.
  • Preview attachments like PDFs and Videos in the editor.
  • Works seamlessly with Action Text and Active Storage.

We created Lexxy because Trix…

Rails Designer 

Modern CSS organization (in Rails)

I recently launched Rails Designers. The underlying platform, Forge, will soon be available for sale. I wanted to highlight some modern CSS techniques I used in Forge as CSS has changed massively and added so much good stuff the last years. I wanted to quickly go over some of the techniques used. Make sure to also check out the article on modern CSS features.

Most of what is covered here works in any app using CSS, but the Propshaft bits are Rails-specific. By default new Rails apps add this in your <head>:

<%= stylesheet_link_tag :app, "data-turbo-track": "reload" %>

This results in something like this:

<link rel="stylesheet" href="/assets/animations-098cfc69.css" data-turbo-track="relo…
Planet Argon Blog 

Measuring the Real Impact of AI Coding Tools on Developer Productivity

Measuring the Real Impact of AI Coding Tools on Developer Productivity

A look at how to measure the impact of AI tools by focusing on developer experience, maintainability, and measurable productivity.

Continue Reading

Planet Argon Blog 

Want to Take a Week Off? Build Systems That Make It Possible

Want to Take a Week Off? Build Systems That Make It Possible

It’s possible to unplug and not return to chaos. The key is creating systems that keep the team (and the work!) moving while you're away.

Continue Reading

justin․searls․co - Digest 

📸 You won't believe this Codex fork

Reddit turned me onto this just-every/code fork of OpenAI's Codex CLI last night. Since it uses the binary name coder to differentiate it from code and codex, I guess we should just call this thing Coder.

In addition to everything you get with Codex:

  • A built-in diff viewer (Ctrl+D). If you're like me, you often have Claude Code or Codex open in one window and your preferred Git UI (I use Fork) in a second window, so having it integrated is wonderful. Moreover, while viewing a diff, you can press e to request an explanation of the specific change you're looking at
  • Built-in browser support with ASCII previews (Ctrl+B) Like Playwright, it automates browsers over the very fast CDP, and it…

Coder also has a themeable, more stable curses-like UI (as opposed to top-level terminal scrollback). It's the rare case of…

Evil Martians 

The Whop chop: how we cut a Rails test suite and CI time in half

Authors: Igor Platonov, Backend Engineer, and Travis Turner, Tech EditorTopics: Developer Community, Rails

Evil Martians cut Whop’s Rails test suite and CI time in half using profiling, factory optimizations, and parallelization. Learn how we speed up tests and boost reliability.

Evil Martians sliced our client Whop's entire suite runtime in half. This post walks through profiling to find hidden loggers, taming factory overhead, switching to smarter parallelization, and fixing the flaky tests that surfaced along the way.

justin․searls․co - Digest 

🔗 What They Don't Tell You About Winning Film Awards

From my friend Anthony Salamon on what it's like to win an award in the film industry:

The psychology of winning is also more complex than anyone admits. There's an immediate high, followed by a weird emptiness. You've achieved something you've been working toward, and suddenly you need new goals. Some winners describe a mild depression that follows major recognition, the "What now?" syndrome that comes when you realize that achieving your dreams doesn't fundamentally change who you are or solve your deeper creative challenges.

In my experience this phenomenon extends to any achievement or event that redounds to a significant moment of extrinsic validation in one's career. Anthony's…

justin․searls․co - Digest 

🔗 Bootloading > Sideloading

An insightful take from Hugo Tunius that makes a distinction between sideloading apps and controlling what software runs on "hardware you own":

When Google restricts your ability to install certain applications they aren't constraining what you can do with the hardware you own, they are constraining what you can do using the software they provide with said hardware.

To wit, if you own your iPhone outright, it's completely reasonable to demand that you be able to boot an alternative operating system and, to whatever extent regulatory action against the platform holders is warranted, it should be targeting this layer of the software stack as opposed to mandating how specific features of the…

SINAPTIA 

MCP on Rails

This year, we started deep diving into AI, specifically focusing on two aspects. First, what tools can we use to be even more productive? There are a lot of models, coding agents, and editor combinations to try, and a lot of new ones coming every day. Second, how can we use AI to improve the apps we’re working on?

On the first aspect, there’s not much we can say yet. Like I said, there are many options, and more keep appearing every day. Too soon to jump to conclusions.

On the second aspect, we already wrote a few articles about it: We scaled image classification with AI, upscaled images with AI, and improved a similarity search with AI. And we’re looking forward to building more…

There is a third aspect that we haven’t tried yet until now: how…

justin․searls․co - Digest 

🎙️ Breaking Change podcast v43 - The Slop Economy

Direct link to podcast audio file

Remember it is your civic duty to e-mail me at podcast@searls.co. As of this episode, that address is monitored by Fastmail, so there's a higher probability I'll actually get your e-mail!

Some links you won't click:

RubyMine : Intelligent Ruby and Rails IDE | The JetBrains Blog 

RubyMine Is Now Free for Non-Commercial Use

Hold on to your helper methods – RubyMine is now FREE for non-commercial use! Whether you’re learning Ruby and Rails, pushing open-source forward, creating dev content, or building your passion project, we want to make sure you have the tools to enjoy what you do even more… for free.

Another chapter in the story

We recently introduced a new licensing model for WebStorm, RustRover, Rider, and CLion – making them free for non-commercial use. RubyMine is now joining the party! For commercial use, our existing licensing model still applies.

Hanami 

Hanami adopts Contributor Covenant 3.0

Our community is the most precious part of Hanami. When you pick up Hanami, we want to make sure you have a great time. This is why we place our community values front and centre on our home page:

We want the Hanami community to be a welcoming place for people who bring kindness, curiosity, and care. A place where people of all backgrounds and experience levels can feel respected, and can share and grow. A place for people to be proud of, and feel safe within.

It’s also why we govern our community spaces under the Contributor Covenant code of conduct. This is the gold standard for community codes of conduct, and it’s served us well for over ten years.

Today we’re delighted to adopt the…

The Bike Shed 

472: What is the skill in software development?

Sally and Joël kick off a new season of the Bike Shed by asking the question, what exactly is it that we as developers even do around here?

Together they discuss their roles as developers, how their workflows and skills have changed over time, the value of context and experience when evaluating different solutions to a problem, why so much of their work revolves around googling error codes, and giving some advice to aspiring junior developers.

Thanks to our sponsors for this episode Judoscale - Autoscale the Right Way (check the link for your free gift!), and Scout Monitoring.

Your hosts for this episode have been thoughtbot’s own Joël Quenneville and Sally Hall.

If you…

Tim Riley 

Join me at thoughtbot’s Open Summit!

I’m delighted to be joining the thoughtbot Open Summit on 31st October this year!

What is Open Summit? From the announcement: “a live, interactive, hands-on day of pairing and solving open source issues in real time. It offers community members the opportunity to contribute, ask questions, and get direct access to project maintainers.”

So, wherever or whenever you are (it’ll be late evening for me!), if you’re interested in our work on Hanami, Dry and Rom, and what it means to be in Ruby open source today, then this free online event is for you! What a cool opportunity. I hope to see you there.

Thank you thoughtbot for putting this on, and for the invitation! 🥰

Alchemists: Articles 

Hanami Actions

Cover
Hanami Actions

Hanami Actions are what you use to process HTTP requests and responses. You implement an action for each HTTP verb which encourages clean separation of concerns by default. This article assume you have familiarity with Hanami and want to delve deeper into actions as powered by the Hanami Controller gem. Let’s get started as there’s a lot of ground to cover.

Overview

At a high level, actions are commands (i.e. Command Pattern) which process HTTP requests and responses.…

RailsCarma – Ruby on Rails Development Company specializing in Offshore Development 

Ruby Array Methods: A Comprehensive Guide

Ruby, the elegant and developer-friendly programming language created by Yukihiro Matsumoto (often called Matz), has long been celebrated for its simplicity and productivity. At the heart of Ruby’s data manipulation capabilities lies the Array class, a dynamic, ordered collection that can hold any number of objects of virtually any type. Whether you’re a beginner dipping your toes into Ruby’s waters or a seasoned developer optimizing code for performance, understanding Ruby’s array methods is essential. These methods allow you to create, access, modify, iterate over, and transform arrays with minimal effort, embodying Ruby’s philosophy of…

Avo's Publication Feed 

Rails S3 Direct Uploads

Let's learn how to add S3 direct uploads to any Rails application using Active Storage
Hotwire Weekly 

Week 35 - Shift+Click in Stimulus, Easy Redesign in Rails, and more!

Hotwire Weekly Logo

Welcome to Hotwire Weekly!

Welcome to another, issue of Hotwire Weekly!

Rails World 2025 is happening next week in Amsterdam and there are some Hotwire-adjecent talks scheduled:

Happy reading! 🚀✨


📚 Articles, Tutorials, and Videos

Turning URLs into User Friendly Links with Stimulus in Rails - Nicolás Galdámez shows how a Stimulus controller watching the trix-paste

danielabaron.me RSS Feed 

Rails Console-like Environment for a Plain Ruby Project

If you're working on a plain Ruby project and need an interactive console for debugging and exploration, this post covers how to set one up. A console allows quick experimentation with project classes, making it easier to test calculations, inspect data, and validate logic without writing temporary scripts. The setup is simple and provides a Rails-like experience for loading and interacting with the code.
justin․searls․co - Digest 

✂️ Cinder block developers

Your browser does not support the video tag.

What Scott means when he says he's a cinder block developer. Clipped from Hotfix v42.0.1.

Oh, and here's that episode of The Secret Life of Machines on washing machines

Tim Riley 

Continuations, 2025/35: Long game

  • My usual #HanamiFriday was waylaid by unexpected personal things, but I managed to catch up with a #HanamiSunday. Not every week goes to plan. I feel some pressure with Fridays being this new dedicated OSS day, but I need to remember that I’m playing the long game.

  • Published the wrap-up post for our sponsorship drive.

  • Reviewed the first repo Adam is switching to our repo-sync technology. Adam is now off to the races, working through the list of repos without needing me for anything.

  • Helped get Krzysztof’s CLI PR to automatically detect the slice for generate commands across the line. In sorting this out, I realised the in-memory filesystem adapter we use for a bunch of our CLI command…

Dhaval Singh's Blog 

Some notes on Agentic search & Turbopuffer

Search systems are always broken. Mend them with care, and like Kintsugi, they become more beautiful.

Recently Ive been diving deep in improving search & retrieval for Littlebird and here are some notes worth sharing.

Turbopuffer

Tpuf is an amazing search system built on top of object storage. Biggest plus points for using tpuf was multi tenancy, low latency, fast and support for BM25 & Semantic search. Their support is also amazing. We have a shared slack channel with them and the folks there are extremely helpful and prompt in answering all kinds of questions, including a lot of stupid ones i bug them about frequently!

On top of that their docs & APIs are a pleasure to work with. Plus small…

code.dblock.org | tech blog 

Using AI to Reduce the Burden of Status Reporting

One of the negative side effects of having any top-down command structure is that every additional layer risks introducing a new level of bureaucracy, which then actively subtracts value. Consider the Politburo of the USSR with dozens of offices of skilled bureaucrats. Because most produced no actual value, the best apparatchiks spent their entire time managing up to remain in control. Individuals who tried to upend the system either became exhausted and gave up, or were deported to Siberia.

The Soviet example also applies to software development. Consider a typical CEO → CTO → VP of Engineering → Director → Manager → Technical Lead → IC command structure. Each project team consists of a…

RubySec 

CVE-2025-58067 (google_sign_in): Google Sign-In for Rails allowed redirect to protocol-relative URI

## Summary It is possible to redirect a user to another origin if the "proceed_to" value in the session store is set to a protocol-relative URL. ## Details The google_sign_in gem persists an optional URL for redirection after authentication. If this URL is set to a protocol-relative URL, it improperly passes the "same origin" check, and it's possible for the user to be redirected to another origin after authentication, possibly resulting in exposure of authentication information if this attack is chained with other attacks. Normally the value of this URL is only written and read by the library or the calling application. However, it may be possible to set this session value from a…
SINAPTIA 

AI4Devs August meetup

On August 28th, 2025, we sponsored and attended the 3rd AI4Devs meetup of the year. It was an amazing event, fully packed:

  • almost one hundred attendees ranging from young students, university professors, and developers of every seniority
  • 3 interesting talks and speakers
  • and, as the icing on the cake, hosted on a venue called “Sobre Rieles” (Coincidence? I don’t think so!)

RAG applications on local infrastructure

The meetup kicked off with Gustavo Archuby and Pablo Musa from the Facultad de Humanidades, UNLP. They talked about their experience in building a complete RAG system for an academic document base for research and preservation. They built it exclusively with open source…

justin․searls․co - Digest 

📄 This blog has a comment system

The day before we recorded our episode of Hotfix, Scott Werner asked a fair question: "so, if you're off social media and your blog doesn't have a comment system, how do you want people to respond to your posts? Just email?"

I answered, "actually my blog does have a comment system."

Here's how to leave a comment on this web site:

  1. Read a post
  2. Think, "I want to comment on this"
  3. Draft a post on your blog
  4. Add a hyperlink to my post
  5. Paste an excerpt to which you want to respond
  6. Write your comment
  7. Hit publish

I admit, it's quaint. It involves a number of invisible steps, like 2.1 where you start a blog (which is actually pretty easy but not free of friction). You should try it.

It is 2025 and…

Remote Ruby 

Tidewave with José Valim

In this episode of Remote Ruby, Chris and Andrew welcome guest José Valim back on the show to talk about Tidewave, a new web development tool integrated with Phoenix and Rails frameworks. The conversation covers the tool's functionality, its ability to inspect and manipulate web elements directly from the browser, and its feature of automatically testing implemented changes. They also discuss coding habits and the integration of AI in programming, touching upon the challenges and solutions for maintaining context in large projects. Also, José shares his experiences with Tidewave's development and its impact on productivity in coding. Hit download now to hear more! 

Links

Josh Software 

Code Less, Query More: GraphQL Power in Rails APIs

Simpler requests, smarter responses, and happier devs! Ever tried building something that seems simple — like showing a user’s profile with posts and likes — and suddenly you’re juggling 5 API calls, 3 loading spinners, and a me breathing down your brain asking: “Why is it still loading?” Yeah… same, If you’ve ever felt that pain, you’re … Continue reading Code Less, Query More: GraphQL Power in Rails APIs
Ruby on Rails: Compress the complexity of modern web apps 

Dark mode on welcome page and more

Hi, Wojtek here. Part of our newsletter team - Claudio, Greg, Vipul, and me will be at the Rails World next week. Greg and Claudio will also be MCing the Lightning Track. Come say hi and grab some stickers with newsletter logo!

Now let’s take a look at this week’s changes.

Dark mode support in the app welcome page
Made by the first time Rails contributor. Welcome to the committers community!

Slightly speed up Active Job enqueueing with hashes/keyword arguments
The splat in the case/when is not great since it allocates an array each time it is encountered. This avoids the allocation, uses a set for the reserved keys, and avoids string allocations for symbol keys. About 18% faster when the…

Make local cache middleware updatable
If…

The Code Gardener 

Think big. Start small.

# My new favorite strategy for getting things done.

def actualize(vision)
 think_big
 start_small
 deliver_value
 earn_trust
 grow_influence
end

vision = 1
do
 actualize(vision)
 vision += 1
end
RubySec 

CVE-2025-57821 (google_sign_in): Google Sign-In for Rails allowed redirects to malformed URLs

### Summary It is possible to craft a malformed URL that passes the "same origin" check, resulting in the user being redirected to another origin. ### Details The google_sign_in gem persists an optional URL for redirection after authentication. If this URL is malformed, it's possible for the user to be redirected to another origin after authentication, possibly resulting in exposure of authentication information such as the token. Normally the value of this URL is only written and read by the library. If applications are configured to store session information in a database, there is no known vector to exploit this vulnerability. However, applications may be configured to store this…
Planet Argon Blog 

Measuring AI Tools by Their Impact on Developer Experience

Measuring AI Tools by Their Impact on Developer Experience

A look at how to measure the impact of AI tools by focusing on developer experience, maintainability, and measurable productivity.

Continue Reading

Awesome Ruby Newsletter 

💎 Issue 484 - rv, a new kind of Ruby management tool

JRuby.org News 

JRuby 9.4.14.0 Released

The JRuby community is pleased to announce the release of JRuby 9.4.14.0.

JRuby 9.4.14.x targets Ruby 3.1 compatibility.

Thank you to our contributors this release, you help keep JRuby moving forward! @matthias-fratz-bsz, @ikaronen-relex, @ylecuyer

Compatibility

  • Ruby version is now 3.1.7. (#8966)

Libraries

  • strscan is updated to 3.1.5. (#8897)
  • cgi is updated to 0.3.7 to resolve CVE-2025-27220 and CVE-2025-27219 (#8954, #8966)
  • uri is updated to 0.12.4. (#8966)
  • net-smtp is updated to 0.3.1.1. (#8966)
  • rss is updated to 0.3.1. (#8966)
  • Non-gem stdlib has been updated to Ruby 3.1.7 sources. (#89…

Build

  • jruby-maven-plugins is updated to 3.0.6 to resolve issues with garbled gem poms. (#8898)
  • The stdlib build scripts have been modified to work with latest polyglot-ruby. (#8634, #8963)

Usability

  • bin/ru…
Ruby Weekly 

Bye Rack::BodyProxy, hi `rack.response_finished`

#​764 — August 28, 2025

Read on the Web

Ruby Weekly

How RubyGems.org Protects Our Community’s Critical OSS Infrastructure — A look behind the curtain at how security operates at RubyGems.org, sharing a look at how they proactively handle incidents (such as this recent incident), and the day-to-day work undertaken to keep the broader ecosystem safe.

Marty Haught (RubyGems)

Friendship Ended with Rack::BodyProxy — A look into a subtle but important shift in how Rack middleware can hook into the end of a request/response lifecycle, thanks to the response_finished feature, now standardized in Rack 3.

Hartl…

justin․searls․co - Digest 

✂️ AI is exposing order-takers

Your browser does not support the video tag.

One thing few people are talking about is how it's not as simple as people being sticks in the mud with respect to the adoption of AI tools, it's that once they get their hands on this tremendously capable set of tools, they lack the imagination to find any use for it. "They've been given this rocket ship and they've got no fucking clue where to fly it."

Clipped from the back half of my discussion with Scott Werner on Hotfix.

Rails Designer 

Shift+Click Selection for Bulk Actions with Stimulus

Ever needed a “bulk actions” on a list of resources in your Rails app? It is a very common pattern/feature for SaaS apps where users can add many resources (like in admins, CMS’, etc.).

Something like this:

This code is based on Rails Designer’s Bulk Actions Component. 👀

Let’s start with the HTML structure for our selectable list: create a list of items that can be selected with a Shift+Click:

<ul data-controller="select" class="list">
  <% @posts.each do |post| %>
    <li data-action="click->select#toggle" class="item">
      <%= check_box_tag "post_ids[]", post.id, false, hidden: :hidden %>
      <%= link_to post.title, post.href %>
    </li>
  <% end %>
</ul>

Notice each item has a…

RailsCarma – Ruby on Rails Development Company specializing in Offshore Development 

How Ruby on Rails Accelerates MVP Development for Startups

Moving quickly, being efficient, and being able to adapt are obviously needed to succeed in any start-up with high stakes. The best way to decrease risk and increase learning is to launch a minimum viable product (MVP) – a lightweight product designed to test core hypotheses and learn what users want. Ruby on Rails (RoR), the powerful web framework over Ruby programming, has gained its popularity among early-stage businesses after its initial release.

Famous for its convection over configuration and don’t repeat yourself (DRY) concepts, RoR allows you to develop fast and is perfect for creating an MVP. This blog investigates how RoR speeds up…

Robby on Rails 

When Your Cache Has a Bigger Carbon Footprint Than Your Users

Caching in Rails is like duct tape. Sometimes it saves the day. Sometimes it just makes a sticky mess you’ll regret later.

Nowhere is this more true than in data-heavy apps… like a custom CRM analytics tool that glues together a few systems. You know the type: dashboards full of metrics, funnel charts, KPIs, and reports that customers swear they need “real-time.”

And that’s where the caching debates begin.

All valid. All expensive in their own way.


The Dashboard Problem

Your SaaS app has grown to 2,000 customers, each with…

Ruby Central 

Company Spotlight: Buzzsprout and the Lasting Power of "Vanilla" Ruby on Rails

Company Spotlight: Buzzsprout and the Lasting Power of "Vanilla" Ruby on Rails

Back in 2007, Higher Pixels was a Rails-powered product company with two core offerings: Tick for time tracking, and M Sites for helping small nonprofits create websites. 

Around this time, many of M Site’s customers were local churches across the U.S. When church leaders started asking Tom Rossi and his co-founder how they could publish their sermons online, it sparked an idea that would evolve into something much bigger than they could have imagined.

The solution became Buzzsprout, which is now one of the world’s leading podcast hosting platforms. 

Launched in 2008, Buzzsprout has helped over 400,000 podcasters get their shows online. It is particularly loved by podcasters in the Ruby and…

[…

justin․searls․co - Digest 

🎙️ Breaking Change podcast v42.0.1 - Ignore all previous instructions

Direct link to podcast audio file

🔥Hotfix🔥 is back with a new guest! Scott Werner is the CEO of Sublayer, helps organize the Artificial Ruby meetup in NYC, and is the author of the extremely well-named (and well-written) Substack, Works on my Machine.

In this conversation, we jointly grapple with WTF is happening to programming as a career. Did the unprecedented peacetime the software industry experienced from 2005-2022 make us all soft? Is the era of code-writing agents fundamentally changing the nature of the job? Should we be less like DHH/Matz and more like why the lucky stiff?

We'd love to get your feedback to podcast@searls.co — I'll read it all and flag relevant questions and…

Hanami 

Wrapping up our sponsorship drive

After six posts (the announcement, our founding patrons, a field report, meeting Tim and Sean, the Rails elephant in the room, and a cuteness preview), it’s time to wrap up our sponsorship drive for 2025.

How’d we go?

Thanks to your support, we’ve entered a whole new era for Hanami, Dry and Rom. For the first time ever, Ruby has a second framework backed by funding!

Granted, we’re at only 0.2 of a full-time role, but a start is a start! We’re here for the long haul, and going from 0 to something is one of the most important jumps we will make.

We have you—the Ruby community—to thank for this.

Thank you especially to Mike Perham and Sidekiq, Brandon Weaver