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:
Create an account, install the gem in your application, and deploy it. (Skip to 3 if you did it before the conference)
Watch a talk while the monitoring data is being collected.
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:
…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.
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…
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…
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:
How I used to import images
I’ve got an OM System OM-1 camera. I used to shoot in RAW +…
Superglue 2.0 Alpha: React ♥️ Rails Turbo Streams!
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? …
Click here to read the paperThis blog post was adapted from our paper and talk at the International Symposium on Memory Management 2025.
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…
Reworking Memory Management in CRuby
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…
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…
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 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
-
https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.6.tar.gz
SIZE: 23266686 SHA1: f44d45ca26d54ff92ab00a3515335cae755b18ec SHA256:…
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…
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…

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.
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.…

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…
📸 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.
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…
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…
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…
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.
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…
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…
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…
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…
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
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…
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…
A look into Ruby's JIT magic
#766 — September 11, 2025
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

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…
Making myself a reading log
- In the beginning, there was Goodreads
- And then I went off the deep end
- That was a lot of work. Was it worth it?
- OK, but what are the downsides?
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…
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…
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.

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) 🔗

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 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:
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…

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…
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…
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…
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…
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.…
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…
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… …
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…
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:
-
Much of his data basically stops around March–April 2025—the precise window when AI coding tools finally be…

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.

and again in the Rails World keynote...

Secure Contexts
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…
Week 36 - Rails World 2025: Rails 8.1 beta, Lexxy, ReActionView, and more!

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…
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…
RubyMine
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…
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.…
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.…
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.
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.
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…
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…
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…
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.…
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.
#765 — September 4, 2025
Ruby Weekly

The RubyMine IDE Now Free for Non-Commercial Use — RubyMine 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…
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 =…
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…
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…

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 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.
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…
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…
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…
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:
- Why I-4 is the most dangerous highway in America
- The Beak and the Barrel
- Sign up for Fastmail. It is good.
- The Gilroy Order
- Making ChatGPT doubt itself
- Why I wasn't cut out for management
- How to comment on my blog
- Aaron's puns, ranked
- New Xcode beta adds GPT-5, Claude account support
- Apple Responds to Accusations of Jay Blahnik Creating 'Toxic Workplace'
- 4chan Refuses To Pay UK Online Safety Act Fines
- Americans' junk-filled garages are…
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 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…
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…
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! 🥰
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.…
Rails S3 Direct Uploads

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:
- Keynote: Hotwire Native - A Rails Developer's Secret Tool for Building Mobile Apps by Joe Masilotti
- Coming Soon: Offline Mode to Hotwire with Service Workers by Rosa Gutiérrez
- Introducing ReActionView: A new ActionView-Compatible ERB Engine by Marco Roth
- Lessons from Migrating a Legacy Frontend to Hotwire by Radan Skorić
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
…
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
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…
…
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…
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…
CVE-2025-58067 (google_sign_in): Google Sign-In for Rails allowed redirect to protocol-relative URI
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…
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:
- Read a post
- Think, "I want to comment on this"
- Draft a post on your blog
- Add a hyperlink to my post
- Paste an excerpt to which you want to respond
- Write your comment
- 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…
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
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…
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
CVE-2025-57821 (google_sign_in): Google Sign-In for Rails allowed redirects to malformed URLs
JRuby 9.4.14.0 Released
The JRuby community is pleased to announce the release of JRuby 9.4.14.0.
- Homepage: https://www.jruby.org/
- Download: https://www.jruby.org/download
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…
#764 — August 28, 2025
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…
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.
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…
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.
- Do we cache the raw data in Redis or Solid Cache?
- Do we cache entire report payloads?
- Do we lean on CloudFront or Cloudflare to hold onto responses?
All valid. All expensive in their own way.
The Dashboard Problem
Your SaaS app has grown to 2,000 customers, each with…
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…
🎙️ 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…
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…