Rubyland

news, opinion, tutorials, about ruby, aggregated
Sources About
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…

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

RailsCarma – Ruby on Rails Development Company specializing in Offshore Development 

Enterprise AI Integration with Ruby on Rails: What You Need to Know

In the constantly evolving world of enterprise technology, AI takes the center stage for enabling business innovation, efficiency, and competitive advantage. By 2025, most companies will have adopted AI as an integral part of their business operations, using it to automate tasks and decision-making, and to personalize user experiences. Strange as it may seem, the lightweight and productivity-friendly Ruby on Rails (RoR) web component framework becomes a powerful solution when it comes to integrating with AI. Although languages such as Python are often seen as the dominant languages of AI, RoR’s convention over configuration approach makes it…

Judoscale Dev Blog 

Where to Host a Python Web App

Building a production-ready Python web app is kind of pointless if you don’t ship it. Still, many developers struggle to choose where to host their Python applications. There’s a rich ecosystem of hosting options for Python apps, from classic platforms like Heroku to modern container-based services like Fly.io and AWS ECS. Whether you’re using Django, Flask, FastAPI, or some other Python framework, you have options.

In this guide, I’ll walk you through the most popular options, comparing developer experience, scalability, performance, and cost. Let’s jump in!

Using Docker makes a difference

One of the first considerations for your Python deployment is usually whether you want to…

Evil Martians 

The scenic route: lessons building an IntelliJ IDEA plugin for Luau

Authors: Aleksandr Slepchenkov, Frontend Engineer, and Travis Turner, Tech EditorTopics: Developer Products, SDKs, extensions & plugins

This post covers the complex (but rewarding) process of building native language support for JetBrains from scratch. From crafting lexers and parsers to wrestling with soft keywords, PSI trees, and error recovery, this guide walks through the real stuff.

I've been a JetBrains die-hard my whole life, someone who recoils at even the slight thought of using VSCode, and I've even been called a "JetBrains junkie". So, when I learned their IDEs didn't support Luau, I ventured on a quest to build a plugin for it. No matter your language, this post will guide you…

Rails at Scale 

Friendship Ended with Rack::BodyProxy

Now rack.response_finished is my best friend.

Rack is deeper than you thought

If you’ve heard of Rack, you’ve probably seen an example like this:

# config.ru

class Application
  def call(env)
    [200, {}, ["Hello Rack"]]
  end
end

run Application.new

The application responds to #call with a single argument, the environment, and returns an array of status, headers, body. All of the concepts seem straightforward, right? The status is an Integer, the environment and response headers are Hashes, and the body is an Array of Strings.

While this is a valid Rack application, that’s not really the end of the story. For the whole picture, we have to read the Rack SPEC.

For this post, let’s…

Island94.org 

Building deterministic, reproducible assets with Sprockets

This is a story that begins with airplane wifi, and ends with the recognition that everything is related in web development.

While on slow airplane wifi, I was syncing this blog’s git repo, and it was taking forever. That was surprising because this blog is mostly text, which I expected shouldn’t require many bits to transfer for Git. Looking more deeply into it (I had a 4-hour flight), I discovered that the vast majority of the bits were in the git branch of built assets that gets deployed to GitHub Pages (gh-pages) when I build my Rails app into a static site with Parklife. And the bits in that branch were assets (css, javascript, and a few icons and fonts) built by…

DotRuby - Things we have to say. 

Migrating a legacy database into an existing Rails app

Learn a simple ActiveRecord and Rake-task driven approach to migrate data from a legacy database into your existing Rails app.
RubyMine : Intelligent Ruby and Rails IDE | The JetBrains Blog 

Unveiling Ruby Debuggers: byebug, debug gem, and the Power of RubyMine

Hello, Ruby developers!

Whether you are a seasoned Ruby developer or just getting started, mastering the debugger will save you time and frustration when tracking down bugs. At RubyMine, we’ve spent years building debugging tools for Ruby. In this blog series, we’re sharing some of the insights we’ve gained along the way.

In this post, we’ll take a closer look at the internal workings of byebug and the debug gem, comparing their unique approaches, strengths, and limitations. We’ll also break down the architecture of the RubyMine debugger to see how it works. Finally, we’ll conduct an experiment to test the performance of these debuggers and find out which one comes out on top.

Thi…

André Arko 

rv, a new kind of Ruby management tool

For the last ten years or so of working on Bundler, I’ve had a wish rattling around: I want a better dependency manager. It doesn’t just manage your gems, it manages your ruby versions, too. It doesn’t just manage your ruby versions, it installs pre-compiled rubies so you don’t have to wait for ruby to compile from source every time. And more than all of that, it makes it completely trivial to run any script or tool written in ruby, even if that script or tool needs a different ruby than your application does.

During all those years of daydreaming, I’ve been hoping someone else would build this tool and I could just use it. Then I discovered that someone did build it… but for Python. It’s…

The Bike Shed 

471: New Hosts Join the Show

Joël is joined by some familiar faces in today’s episode of the Bike Shed to help reveal some exciting changes to the show as he asks his new co-hosts, what’s new in your world?

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

Joining Joël Quenneville as your new co-hosts are Aji Slater and Sally Hall.

Get to know your hosts a little better by checking out Sally’s recent episode on timezones or Aji’s RailsConf Keynote and handy list of previous keynotes.

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

Got a question or comment about the…

Ruby Central 

Inspired By RailsConf: The Ruby Friends App

Inspired By RailsConf: The Ruby Friends App

When Joe Masilotti attended RailsConf 2025 in July, he noticed something small but interesting: the QR codes on everyone’s badges. Scanning one pulled up a contact card with the person's phone number and email address. While useful, this felt a little too personal for someone you might have met less than five minutes prior.

But it gave Joe an idea.

What if there was a simpler, more intentional way for conference attendees to share the information they want and, in turn, more easily remember who they connected with?

Less than a month later, this idea became the Ruby Friends app.

Building With Hotwire Native

Joe’s journey with Rails started over ten years ago. At the time, he was an iOS developer…

Short Ruby Newsletter 

Short Ruby Newsletter - edition 147

The one where 37Signals launched Active Push, Avo writes about how to use Apple Wallet Passes in Rails apps and Evil Martians writes about The Rails Renaissance
Gusto Engineering - Medium 

Celebrating Impact: Voices of Long-Tenured Gusties

“Live with Gusto” in neon lights, as seen in Gusto’s San Francisco homebase.

Some of our best stories come from the people who’ve been here long enough to see Gusto grow and change — and who’ve grown and changed right alongside it.

We sat down with a few Gusties who’ve been part of our journey for 5–10 years, to hear what that’s really looked like. Their stories get to the heart of what makes Gusto so special.

Matan Zruya, Lisa Barcelo, Shaun Katona (Left to Right)Ryan Newton, Achint Goel (Left to Right)

What brought you to Gusto originally, and what’s kept you here?

Shaun Katona
I’m still here because I get to solve hard problems every day. Payroll and HR might sound mundane, but the challenges…

RubyGems Blog 

How RubyGems.org Protects Our Community’s Critical OSS Infrastructure

Recently, Socket.dev published research highlighting malicious gems designed to steal social media credentials. We wanted to use this as an opportunity to share more about how RubyGems.org security operates, how we proactively handled this incident (and others), and the work our team is doing each day to keep the ecosystem safe.

How We Detect Malicious Gems

RubyGems.org security uses a proactive and multi-layered approach:

1. Automated detection: Every gem upload is analyzed using both static and dynamic code analysis, including behavioral checks and metadata review. Much of this capability comes from Mend.io’s supply chain security tooling (originally built by our own Maciej Mensfeld, a…

RubyGems Blog 

How RubyGems.org Protects Our Community’s Critical OSS Infrastructure

Recently, Socket.dev published research highlighting malicious gems designed to steal social media credentials. We wanted to use this as an opportunity to share more about how RubyGems.org security operates, how we proactively handled this incident (and others), and the work our team is doing each day to keep the ecosystem safe.

How We Detect Malicious Gems

RubyGems.org security uses a proactive and multi-layered approach:

  1. Automated detection: Every gem upload is analyzed using both static and dynamic code analysis, including behavioral checks and metadata review. Much of this capability comes from Mend.io’s supply chain security tooling (originally built by our own…

37signals Dev 

Running our Docker registry on-prem with Harbor

As of early 2025, we’re deploying all of our applications with Kamal using Docker as our containerization platform. The container registry that holds our app images is one of the most integral pieces of our deployment pipeline.

Like many organizations, we’d been using external container registries for years. Our ecosystem was tightly coupled to both Dockerhub and Amazon’s Elastic Container Registry.

However, as part of our cloud exit and kamalization journey, several issues started emerging:

  • Cost: Not only does the paid license for Dockerhub produce a considerable invoice — pulling and pushing our images over the internet dozens of times a day caused us to hit the contracted bandwidth…
Ruby on Rails: Compress the complexity of modern web apps 

Meet the Rails World 2025 Sponsors

Rails World is next week and we’d love to share with you all of the sponsors who are contributing to making this year’s edition a memorable event for the community.

But first, some frequently asked questions: Will there be a livestream? Will the talks be recorded? When will the talks be online and where can I find them?

The answer to all of those questions: We will not offer a livestream for Rails World this year. Instead, we post the Opening Keynote quickly within 24 hours, and all of the other talks as they are ready over the following 2 weeks, You can find them all soon on the Rails official YouTube channel.

Now on to the sponsors:

Platinum Sponsor: AppSignal

For the third year in a…

DotRuby - Things we have to say. 

Easy Redesign in Rails: Run Old and New Side by Side with :variants

Rails variants are usually used to serve different views for devices — but you can use them for much more, like running a redesign side by side.
Josh Software 

JavaScript Type Coercion Made Simple: A Beginner’s Guide

JavaScript can do some surprising things behind the scenes, like turning numbers into strings or treating an empty array as true. This magic is called Type Coercion, and understanding it will help you write better, bug-free code. In this blog, we’ll walk through this concept step-by-step, using clear examples and plain language so that even if you’re … Continue reading JavaScript Type Coercion Made Simple: A Beginner’s Guide
Hotwire Weekly 

Week 34 - Action Native Push, User-Specific Turbo Stream Partials, and more!

Hotwire Weekly Logo

Welcome to Hotwire Weekly!

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


📚 Articles, Tutorials, and Videos

Introducing Action Native Push - Jacopo Beschi on the 37signals blog announces that they released a new Rails gem called Action Native Push, enabling direct push notifications to Apple and Google without relying on AWS SNS or Pinpoint. It likely fulfills part of the vision discussed in Rails Issue #50454 about integrated push notification support.

TailwindCSS v4+ Custom Theme Styling - Amanda Klusmeyer on the Flagrant Blog explains how Tailwind v4 moves to a CSS-first config using the @theme directive for design tokens and @custom-variant for flexible theming,…

User-Specific Content in Turbo Stream Partials - Rails Designer

Ruby on Rails: Compress the complexity of modern web apps 

Updated Plugins Guide, current_page? with any HTTP method and more!

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

Rails Plugin documentation update
As part of improving the documentation of the framework, The Rails Plugins Guide has been updated.

Fix consistency of generated structure.sql for latest PostgreSQL versions which include \restrict
This pull request fixes the removal of pg_dump’s versioning comments by also removing the new \restrict lines. By removing all these lines, the generated structure.sql can again be consistent between runs of rails db:schema:dump on the latest versions of PostgreSQL.

Allow current_page? to match against specific HTTP method(s) with a method: option
Before this chage, the current_page? helper…

justin․searls․co - Digest 

🔗 Why I wasn't cut out for management

Perhaps the most important ingredient in my career's success is my seemingly infinite capacity for self-criticism.

I constantly inspect my work, effortlessly identify ways it could be better, and never tire of making improvements. And because the time it takes to finish a task can always be improved, this tendency rarely veers into unproductive perfectionism. On the rare occasion I feel like I really nail something, I strive to nail it even faster next time. At the same time (and as anyone who listens to Breaking Change knows), I have a very healthy ego. I genuinely believe I am good enough, despite simultaneously knowing my work never is.

The trouble is, while this disposition might be…

Ruby Central 

Ruby Central's OSS Changelog: August 2025

Ruby Central's OSS Changelog: August 2025

Hello, and welcome to the August newsletter. Read on for announcements about our Open Source Program and a report of the OSS work we’ve done over the past month!

As mentioned in our previous newsletters, we will now be sending out separate updates for the Open Source Program and general Ruby Central organization and community news.

You can expect our general Ruby Central newsletter (the Ruby Central README) in your inbox later this month.

Open Source Program Announcements

New ways to support RubyGems.org: A note from Marty

After giving my keynote at Baltic Ruby on sustainable open source, I was approached by several people who wanted to know about how the RubyGems service was funded. This led me…

Julik Tarkhanov 

Turning your Apple Calendar into a time tracker

In the brave new world of self-employment one thing I found very important is getting a grip on time. In general, this turns out to be the biggest challenge for me personally - not having kids and no longer living with a partner I have way more free time than is customary for a 40+ year old, and it shows. And it is becoming more important to get a good understanding of both where the time gets spent, and how much of that time is billable.

In the past I used to use Noko for time tracking, but I found myself cooling down on it. I didn’t really enjoy having a subscription, the jobs I had to do were very sporadic and I no longer enjoyed using it. I’ve looked at a few time tracking packages but…

SINAPTIA 

Improving a similarity search with AI

One of our clients operates a large boat marketplace with thousands of listings. One of the most common features in marketplaces is showing similar items: when users find a boat they like, they want to explore similar options. But our client’s similarity search was not providing useful listings.

The problem

The existing solution was based on range queries in Elasticsearch. Boats’ specs were indexed, and a query compared boats across multiple dimensions, for example:

  • Year (±5 years)
  • Length (±2 meters)
  • Categories and specifications
  • Price ranges

The logic made perfect sense: if you’re looking at a 12-meter sailboat from 2018, the similarity search would show you other 10-14 meter…

justin․searls․co - Digest 

📄 Sprinkling Self-Doubt on ChatGPT

I replaced my ChatGPT personalization settings with this prompt a few weeks ago and promptly forgot about it:

  • Be extraordinarily skeptical of your own correctness or stated assumptions. You aren't a cynic, you are a highly critical thinker and this is tempered by your self-doubt: you absolutely hate being wrong but you live in constant fear of it
  • When appropriate, broaden the scope of inquiry beyond the stated assumptions to think through unconvenitional opportunities, risks, and pattern-matching to widen the aperture of solutions
  • Before calling anything "done" or "working", take a second look at it ("red team" it) to critically analyze that you really are done or it really is working

I…

Remote Ruby 

Sabbaticals and a Week of Wins

In this episode, Andrew and Chris discuss their recent week, including Andrew's upcoming sabbatical beginning on Monday and wrapping up his tasks at Podia. They talk about the Battlefield 6 Beta and its large download size and touch on internet services, including their experiences with Google Fiber and Cox. The conversation shifts to the future of technology, such as Apple's new iOS beta and potential new hardware releases. They also delve into programming topics like pagination gems and streaming controllers, as well as ongoing projects like the Learn Hotwire course and upcoming content for OneMonth.com. The episode wraps up with personal updates including Chris preparing for Rails World…

Tim Riley 

Continuations, 2025/34: Tangible reminders

  • I’ve been writing about my open source work on this blog for quite a while. I liked how it made our projects more accessible, and how it left me tangible reminders of my progress, to buoy me at the times when it felt it was eluding me.

    I did my updates on a monthly basis, but after a few years, it dropped off. I think it was that a month would sometimes feel just a bit too much to digest.

    All this while, each week I would look forward to reading Tom Stuart’s weeknotes (it was an especial treat when he wrote them early enough for me to catch them before my antipodean Sunday bedtime). I found the weeknotes format so appealing that I even adopted it for status updates in my jobby job.

    Why did…

Giant Robots Smashing Into Other Giant Robots 

Introducing Top Secret

We’ve written about how to prevent logging sensitive information when making network requests, but that approach only works if you’re dealing with parameters.

What happens when you’re dealing with free text? Filtering the entire string may not be an option if an external API needs to process the value. Think chatbots or LLMs.

You could use a regex to filter sensitive information (such as credit card numbers or emails), but that won’t capture everything, since not all sensitive information can be captured with a regex.

Fortunately, named-entity recognition (NER) can be used to identify and classify real-world objects, such as a person, or location. Tools like MITIE Ruby make interfacing…

By using…

Awesome Ruby Newsletter 

💎 Issue 483 - We still build with Ruby in 2025

Ruby Weekly 

Fixing a 10 year old mistake in Rails

#​763 — August 21, 2025

Read on the Web

Ruby Weekly

Circuit Breakers and Ruby in 2025 — An introduction to the circuit breaker pattern for preventing cascading failures when external services misbehave or fall over. George shows a simple implementation before highlighting Stoplight as a more elegant solution, complete with monitoring and real-time controls.

George Asfour

Unlocking Ractors: Generic Instance Variables — A look at work taking place on edge Ruby where instance variable access on core types is being streamlined, including removing a global lock, cutting overhead in Rails hot paths, and…

RubyGems Blog 

July 2025 RubyGems Updates

Welcome to the RubyGems monthly update! As part of our efforts at Ruby Central, we publish a recap of the work that we’ve done the previous month. Read on to find out what updates were made to RubyGems and RubyGems.org in July.

RubyGems News

In July, we shipped Bundler 2.7.0 and RubyGems 3.7.0, marking a major milestone in our roadmap toward Bundler 4. These releases introduce the new simulate_version setting, making it easier for developers to test breaking changes early and share feedback. We also continued work on long-requested improvements across RubyGems and Bundler, including experimental support for prebuilt binaries.

Bundler 2.7.0 and RubyGems 3.7.0 are out!

  • This release…
Rails Designer 

User-Specific Content in Turbo Stream Partials

How would you conditionally show or hide user-specific content in a partial sent over Turbo Stream? Think scenarios like showing edit actions only for messages authored by the current user or displaying admin controls based on user permissions.

This is particularly tricky when dealing with Turbo Streams, where the same partial might be rendered for different users with different permissions. Let’s look at a common scenario: displaying edit and delete actions only for messages authored by the current user.

This is a case I recently had to tackle with Rails Designers (soon available to use/host yourself too! 🤫).

Initially, you might handle this with standard Rails conditionals in your view:

Josh Software 

From Monolith to Modules: Scaling Rails with Packwerk the Right Way

Modularizing a Rails App with Packwerk — The Real-World Lessons I Learned The Unexpected Discovery Inside a Rails Monolith In the very early days of my internship, I started using Ruby on Rails — fast, intuitive, and opinionated in all the best ways. I was hooked. As I started working with the codebases of larger … Continue reading From Monolith to Modules: Scaling Rails with Packwerk the Right Way
RailsCarma – Ruby on Rails Development Company specializing in Offshore Development 

5 Core Ruby on Rails Mental Models for Ruby Enumerators

Ruby on Rails, built on the Ruby programming language, is renowned for its developer-friendly syntax and powerful abstractions. Among Ruby’s most elegant features is its Enumerable module, which powers the manipulation of collections through enumerators. Enumerators are objects that encapsulate iteration logic, enabling developers to chain, customize, and optimize operations on collections like arrays, hashes, and ActiveRecord relations in Rails. Understanding enumerators through clear mental models is crucial for writing idiomatic, efficient, and maintainable Rails code.

This article explores five core mental models for working with Ruby…

Greg Molnar 

Rails CVE-2025-55193 and CVE-2025-24293

We had two news Rails CVE published recently and both of them looks interesting from an exploitation stand point so I wanted to explore what could be achieved with them.

justin․searls․co - Digest 

📄 What's the Hotfix?

I recently started an interview series on the Breaking Change feed called Hotfix. Whereas each episode of Breaking Change is a major release full of never-before-seen tech news, life updates, and programming war stories, Hotfix. It's versioned as a patch release on the feed, because each show serves only to answer the question, "what's the hotfix?"

Because I've had to explain the concept over and over again to every potential guest, I sat down to write a list of what they'd be getting themselves into by agreeing to come on the show. (Can't say I didn't warn them!)

Here's the rider I send prospective guests:

  • Each Hotfix episode exists to address some problem. Unlike a typical interview show…
justin․searls․co - Digest 

📄 Which of your colleagues are screwed?

I've been writing about how AI is likely to affect white-collar (or no-collar or hoodie-wearing) computer programmers for a while now, and one thing is clear: whether someone feels wildly optimistic or utterly hopeless about AI says more about their priors than their prospects. In particular, many of the people I already consider borderline unemployable managed to read Full-breadth Developers and take away that they actually have nothing to worry about.

So instead of directing the following statements at you, let's target our judgment toward your colleagues. Think about a random colleague you don't feel particularly strongly about as you read the following pithy and reductive bullet points.…

Planet Argon Blog 

Ruby (on Rails) Slipper: How a Digital Marketing Intern Fits In

Ruby (on Rails) Slipper: How a Digital Marketing Intern Fits In

This summer's Digital Marketing Intern and journalism student, Filipe Castro, finds his perfect fit at Planet Argon.

Continue Reading

Avo's Publication Feed 

Apple Wallet Passes in Rails Apps

Let's learn how to add Apple Wallet Pass generation to a Rails app using the Passkit gem.
OmbuLabs Blog 

Takeaways from NERCOMP 2025 with a focus on AI in Higher Ed (Part 1)

A few months ago I attended NERCOMP for the first time and I got to connect with IT professionals in the higher ed space. This is the first article in a series collecting my takeaways from some of the most interesting AI-related sessions at the conference.

I tried to focus on real-world examples of how higher ed professionals are thinking through and applying AI and ML, with all their limitations, in day-to-day academic life.

Keep Your Data Close and Your AI Closer: Local AI in the Academy

In their presentation, Gerol Petruzella & Trevor Murphy (Williams College) presented 3 case studies that leveraged AI to solve real scenarios at their institution.

These were 3 privacy-first,…

The Bike Shed 

470: All about queues with Adam McCrea

Joël talks with Adam McCrea, founder of Judoscale, about the best ways to manage your queues and autoscaling.

Adam discusses some tough lessons he learnt recently during a technical outage at Judoscale, what exactly autoscaling is and how it works, the best signals to assess when working with an autoscaler, and provides some simple tips to better organise your own queues.

You can connect with Adam via LinkedIn or check out the work he does with Judoscale, who have also sponsored this episode of The Bike Shed. Be sure to claim your free gift if you haven’t already!

Thanks to the second sponsor of this episode Scout Monitoring.

Your host for this episode has been…

Short Ruby Newsletter 

Short Ruby Newsletter - edition 146

The one where Andrea Fomera launches her new app FileKeep, new Ruby on Rails versions are announced, and we get the latest news on upcoming conferences like Friendly.rb and Kaigi On Rails
justin․searls․co - Digest 

📄 Star Wars: The Gilroy Order

UPDATE: To my surprise and delight, Rod saw this post and endorsed this watch order.

I remember back when Rod Hilton suggested The Machete Order for introducing others to the Star Wars films and struggling to find fault with it. Well, since then there have been 5 theatrical releases and a glut of streaming series. And tonight, as credits rolled on Return of the Jedi, I had the thought that an even better watch order has emerged for those just now being exposed to the franchise.

Becky and I first started dating somewhere between the release of Attack of the Clones and Revenge of the Sith and—no small measure of her devotion—she's humored me by seeing each subsequent Star Wars movie in…

Jardo.dev: Blog 

Do you guys really do TDD?

I was browsing Reddit yesterday (big mistake) and stumbled across a post asking how many people are doing test-driven development in their work. OP had experience at both software agencies and startups and felt that even though management recognized the value of writing tests, in his experience it was always treated as a burden.

Reddit - The heart of the internet

I always find these conversations interesting. When coaching teams and individuals on how to make the most of testing (test-first or otherwise), there’s always a few critical things that I focus on.

  1. The failure case is the most important. You should be writing tests that fail in ways that are useful to the person that seems…
Closer to Code 

Past, Present, Future, and Brotherly Love: My Final RailsConf Journey

A few weeks have passed since RailsConf 2025, which was running from July 8th to 10th in Philadelphia, PA, and I've had time to process what was my first (and last) RailsConf experience. It wasn't just any RailsConf – it was the final edition after nearly 20 years of bringing together the Rails community. There's something poignant about attending what the organizers called "the last celebration" of Rails' longest-running conference.

After attending RubyKaigi 2025 in Matsuyama this past April, I was eager to compare it with RailsConf. RubyKaigi emphasizes Ruby internals and provides a unique bridge between Japanese and Western cultures, while RailsConf focuses on the Rails ecosystem and its…

naildrivin5.com - David Bryant Copeland's Website 

Confirmation Dialog with BrutRB, Web Components, and no JS

I created a short (8 minute) screencast on adding a confirmation dialog to form submissions using BrutRB’s bundled Web Components. You don’t have to write any JavaScript, and you can completely control the look and feel with CSS.

There’s also a tutorial that does the same thing or, if you are super pressed for time:

<form>
  <brut-confirm-submit message="Are you sure?">
    <button>Save</button>
  </brut-confirm-submit>
</form>

<brut-confirmation-dialog>
  <dialog>
    <h1></h1>
    <button value="ok"></button>
    <button value="cancel">Nevermind</button>
  </dialog>
</brut-confirmation-dialog>

Progressive enhancement, and no magic attributes on existing elements.

Evil Martians 

The Long Game: why Rails survived the hype cycle and what it means for your startup

Author: Irina Nazarova, CEOTopics: Rails, Developer Community

Rails isn’t dead, it’s thriving. Learn how Ruby on Rails survived the hype cycle, why startups like Chime and Figma still bet on it, and what it means for your next project.

Last month I stood on the stage of RailsConf 2025, the audience cheering along as I shared news from Rails startups: Chime’s IPO, the explosive growth of Bolt.new and Whop, a $150M deal by Uscreen, RubyLLM on the front page of HN and Rails starring in YC’s Vibe Coding Playbook–and all during the last couple months. The energy was electric …but it wasn't always this way.

37signals Dev 

Introducing Action Push Native

Note: shortly after releasing this gem, we renamed it from Action Native Push to Action Push Native, in case you arrived here looking for the gem of the former name. More details here.


We’ve open-sourced Action Push Native, a Rails gem for sending push notifications to mobile platforms. It supports both Apple and Google push notification services.


Why did we build it?

We created it to migrate off Amazon SNS and Pinpoint, as part of our broader cloud exit. We’re using it in Basecamp and HEY to send more than 10 million push notifications per day without a hitch.

Action Push Native relies on HTTP/2 persistent connections to the Apple Push Notification service, which significantly…

Hotwire Weekly 

Week 33 - Turbo Offline Support, CSS `@functions`, and more!

Hotwire Weekly Logo

Welcome to Hotwire Weekly!

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


📚 Articles, Tutorials, and Videos

Turbo PR #1427: Add support for (basic, cached on-visit) offline access using service workers - Rosa Gutiérrez opened a pull request for Turbo to include a new offline bundle (@hotwired/turbo/offline) with configurable caching strategies (networkFirst, cacheFirst, staleWhileRevalidate). This rollout gears up for Rosa's upcoming "Coming Soon: Offline Mode to Hotwire with Service Workers" talk at Rails World 2025.

Hotwire Native: Building Bridges - Dane Wilson demonstrates how to enhance your Hotwire Native iOS & Android apps by using Bridge…

André Arko 

In-memory Filesystems in Rust

I’ve been working on a CLI tool recently, and one of the things it does is manage files on disk. I have written a lot of file management tests for Bundler, and the two biggest reasons that the Bundler test suite is slow are exec and fstat. Knowing that, I thought I would try to get out ahead of the slow file stat problem by using an in-memory filesystem for testing.

A collaborator mentioned being happy with the Go package named Afero for this purpose, and so I set off to look for a Rust equivalent to Afero. Conceptually, I was hoping to be able to replace std::fs:: with mycli::fs:: and swap out the backend in tests for something that’s completely in-memory so I don’t have to spend time…

Unfortu…

RailsCarma – Ruby on Rails Development Company specializing in Offshore Development 

What is the Ruby Ternary Operator (?:) and How it Works

The Ruby programming language is renowned for its elegance, simplicity, and developer-friendly syntax. One of the features that contributes to Ruby’s concise and expressive nature is the ternary operator (?:). If you’ve ever wanted to write compact conditional logic in Ruby, the ternary operator is a tool you’ll want to master. In this article, we’ll dive deep into what the Ruby ternary operator is, how it works, when to use it, and how to avoid common pitfalls. By the end, you’ll have a solid understanding of this powerful feature and be ready to use it effectively in your Ruby projects.

What is the Ruby Ternary Operator?

The ternary operator (

justin․searls․co - Digest 

📄 How to generate dynamic data structures with Apple Foundation Models

Over the past few days, I got really hung up in my attempts generate data structures using Apple Foundation Models for which the exact shape of that data wasn't known until runtime. The new APIs actually provide for this capability via DynamicGenerationSchema, but the WWDC sessions and sample code were too simple to follow this thread end-to-end:

  1. Start with a struct representing a PromptSet: a variable set of prompts that will either map onto or be used to define the ultimate response data structure 🔽
  2. Instantiate a PromptSet with—what else?—a set of prompts to get the model to generate the sort of data we want 🔽
  3. Build out a DynamicGenerationSchema based on the contents of a given PromptSet
  4. Create a struct that…
37signals Dev 

Introducing Action Push Native

Note: Shortly after releasing this gem, we renamed it from Action Native Push to Action Push Native, in case you arrived here looking for the gem of the former name. More details here.


We’ve open-sourced Action Push Native, a Rails gem for sending push notifications to mobile platforms. It supports both Apple and Google push notification services.


Why did we build it?

We created it to migrate off Amazon SNS and Pinpoint, as part of our broader cloud exit. We’re using it in Basecamp and HEY to send more than 10 million push notifications per day without a hitch.

Action Push Native relies on HTTP/2 persistent connections to the Apple Push Notification service, which significantly…

RichStone Input Output 

[4/4] Code with LLMs in parallel

[4/4] Code with LLMs in parallel

I have the strong feeling that this is one of the core skills to develop in the next couple of years as an engineer. The tooling is not great yet, but by the time you read this, it might be, so take this more as a primer and look under the hood of how future tools will and current tools already work to run agents in parallel.

I tried four methods of running agents in parallel, and I will explain why I currently prefer custom scripts or manual management over existing GUI/TUI tools.

If you haven't delved into planning and swarms extensively, you may not have encountered the scenario where you need parallel workers. But once your agents start to take on bigger tasks, you might start thinking…

justin․searls․co - Digest 

🎙️ Breaking Change podcast v42 - Free as in Remodel

Direct link to podcast audio file

Thanks for writing so many lovely emails to podcast@searls.co. Hell, thanks even for the unlovely ones.

Be sure to look out for me showing up on Dead Code at some point after it records next Tuesday. I'm realizing not all podcasts have a 1-hour-or-less turnaround time like this one does.

As promised, some URLs follow:

Ruby on Rails: Compress the complexity of modern web apps 

Structured Event Reporting lands in Rails!

Hi! Emmanuel Hayford here with some Rails codebase updates for you!

Add #assert_events_reported test helper
Rails added a new test helper that lets you assert multiple events were reported within a block— order-agnostic , with support for payload and tag matching, and it ignores extra events. Handy for workflows that emit several instrumentation events in one go.

assert_events_reported([
  { name: "user.created", payload: { id: 123 } },
  { name: "email.sent",   payload: { to: "user@example.com" } }
]) do
  create_user_and_send_welcome_email
end

Add deliver_all_later to enqueue multiple emails at once
You can now enqueue many emails in one go—reducing round trips to your queue backend.…

Alchemists: Articles 

Git Rebase Drop

Cover
Git Rebase Drop

Dropping a commit, when rebasing, can seem as mundane as when you use Git Rebase Pick but, like picking a commit, dropping a commit has a slight super power too. Not quite as a fancy but powerful (more on this shortly).

Let’s say, when using Git Rebase, you want to drop a commit. Dropping a commit is effectively the same as deleting the commit from your commit history. Extremely useful when composing commits that are highly atomic that adhere to a strong Git Commit Anatomy.

While working in your feature branch, you might want to perform an interactive rebase as follows:

git rebase --interactive

The above might yield the following in your text editor:

p…
Remote Ruby 

The Road To Rails 8

In this episode, Chris and Andrew discuss the recent release of Rails 8 and the improvements in upgrading processes compared to previous versions. They dive into specific technical challenges, such as handling open redirects and integrating configuration options, and chat about Chris's recent experience with Tailwind’s new Elements library, Bundler updates, and JSON gem changes.  They also touch on Heroku's evolving infrastructure and the potential benefits of using PlanetScale's new Postgres offerings. The episode concludes with a discussion about life without internet and Andrew’s countdown to his upcoming sabbatical.  Hit download now! 

Links

Awesome Ruby Newsletter 

💎 Issue 482 - Mouthguards that flash red with head impacts to be used at Rugby World Cup

RubySec 

CVE-2025-55193 (activerecord): Active Record logging vulnerable to ANSI escape injection

This vulnerability has been assigned the CVE identifier CVE-2025-55193 ### Impact The ID passed to `find` or similar methods may be logged without escaping. If this is directly to the terminal, it may include unescaped ANSI sequences. ### Releases The fixed releases are available at the normal locations. ### Credits Thanks to [lio346](https://hackerone.com/lio346) for reporting this vulnerability.
RubySec 

CVE-2025-24293 (activestorage): Active Storage allowed transformation methods that were potentially unsafe

Active Storage attempts to prevent the use of potentially unsafe image transformation methods and parameters by default. The default allowed list contains three methods allowing for the circumvention of the safe defaults which enables potential command injection vulnerabilities in cases where arbitrary user supplied input is accepted as valid transformation methods or parameters. This has been assigned the CVE identifier CVE-2025-24293. Versions Affected: >= 5.2.0 Not affected: < 5.2.0 Fixed Versions: 7.1.5.2, 7.2.2.2, 8.0.2.1 ## Impact This vulnerability impacts applications that use Active Storage with the image_processing processing gem in addition to mini_magick as the…
Rails Designer 

String Inflectors: bring a bit of Rails into JavaScript

The code from this article was taken from the book JavaScript for Rails Developers. Get your copy today! 🧑‍💻


Ruby developers working with JavaScript often miss the convenience of Ruby’s string manipulation methods. While Ruby (Rails) spoils us with elegant transformations like "user_name".camelize, JavaScript requires you to roll our own helpers or reach for external dependencies.

This article explores creating a lightweight collection of JavaScript string helpers, inspired by Rails’ ActiveSupport inflectors, instead of adding yet another package to your project. Let’s look at how to add these helpers in JavaScript and use them in your Rails app.

From snake_case to camelCase

In Rails,…

Ruby on Rails: Compress the complexity of modern web apps 

Rails Versions 7.1.5.2, 7.2.2.2, and 8.0.2.1 have been released!

Hi friends!

Rails Versions 7.1.5.2, 7.2.2.2, and 8.0.2.1 have been released!

These are security patches addressing two security issues:

  • An issue in Active Storage where transformation methods could potentially be unsafe, allowing for command injection vulnerabilities in image processing.
  • An ANSI escape injection vulnerability in Active Record logging that could affect log output.

The Active Storage vulnerability is not exploitable under the default configuration, and under most terminals the ANSI escape injection will have minimal impact. However we recommend upgrading as soon as possible.

Older versions of Rails are unsupported, and users are recommended to upgrade to at least…

Jardo.dev: Blog 

Undervalued: The Most Useful Design Pattern

On the ten year anniversary of my first RailsConf, I had the privilege to speak at RailsConf 2024 alongside two other Normans: my little brother, Alistair, and friend, Cody. The talk explores how we can use value objects and data objects (also called data transfer objects) alongside the factory pattern to write decoupled, easily-testable software.

The Problem: An XML Product Feed

Let’s examine some code. This code is production-like. It’s code that was taken from a real Solidus app and modified to fit in on my slides. We’re going to explore an approach to refactoring this code.

Nokogiri::XML::Builder.new(encoding: "UTF-8") do |xml|
  xml.rss(base_xml_params) do
   …
SINAPTIA 

Upscaling images with AI

In the world of online boat marketplaces, the user experience can make or break a sale. A beautiful yacht with poor quality photos might sit unsold, while an average boat with stunning visuals attracts multiple buyers. At SINAPTIA, we recently tackled this exact challenge for a leading boat marketplace, transforming thousands of low-quality images using AI-powered upscaling technology.

The problem

The marketplace we work with faces a common issue in the industry: image quality varies dramatically across listings. While some boat owners upload high-resolution, professional photos, many images come from third-party sources or older listings with significantly lower quality. The platform…

Evil Martians 

Circuit breakers and Ruby in 2025: don't break your launch

Authors: George Asfour, Backend Engineer, and Travis Turner, Tech EditorTopics: Open Source, Ruby

Take a deep dive into what circuit breakers are, why you might need them, and the options you have in Ruby.

It's 4 AM. Your team calls …the app is down. Time to wake up, grab a coffee, and investigate. You uncover a trail of fails: the payment processor you integrate with started responding slowly → your checkout requests began timing out → users started frantically refreshing → and now your entire Rails app is unresponsive. This is a cascading failure, something more common than you might think. In this post, we'll explore circuit breakers in Ruby, how they can prevent these cascading failures,…

DotRuby - Things we have to say. 

Organizing Mailer Templates with prepend_view_path in Rails

Tired of hunting for email templates scattered across your Rails app? If your mailer views are spread throughout `app/views` like confetti, there's a simple solution you might not know about. Learn how `prepend_view_path` can help you organize all your email templates in one clean, centralized location – and why your future self (and your team) will thank you for it.
Ruby Magic by AppSignal 

Extend ActiveStorage for Ruby on Rails with Custom Previewers

In part one of this series, we looked at how to extend the ActiveStorage ingest process with custom analyzers.

In this post, we will reverse the procedure and explore how to utilize ActiveStorage previewers to display data.

What Are ActiveStorage Previewers for Ruby on Rails?

Not every uploaded blob is an image. Nonetheless, some non-image blobs can be converted into an image preview. ActiveStorage itself provides built-in previewers for videos and PDFs (via MuPDF or Poppler).

Displaying a preview in your ERB template works exactly the same as creating variants of an image:

<%= image_tag song.recording.preview(resize_to_fill: [640, 160]) %>

Here, we lazily create and display a song…

Avo's Publication Feed 

Referral System in Rails applications

Let's learn how to add a Referral System to a Rails application with the Refer gem and how to make it work for your application.
Josh Software 

Containerization Made Simple: Dockerize Your Rails App Today

Tired of Development Setup Headaches? Reclaim Your Coding Time with Docker! As software developers, we pour our energy into crafting new features daily. But what about the hidden time sink before you even write a line of code: setting up your machine to run existing legacy applications or sharing your new rails application with other … Continue reading Containerization Made Simple: Dockerize Your Rails App Today
Ruby on Rails: Compress the complexity of modern web apps 

Upgrading the Rails World App for 2025

Last year, we launched the official Rails World conference app, an open-source event app built in collaboration with Telos Labs to help attendees connect and up to date. (You can read more about the original build here and here.)

From the beginning, this was a project for the community, not just Rails World. So it’s been fun to see Tropical on Rails and Baltic Ruby also use the app for their events this year. That’s exactly what we hoped for when we made it open source. ❤️

This year, we asked Bram Janssen, a junior developer in the community, to take the lead on upgrading the app in collaboration with Telos Labs, getting it production-ready for this year’s event.

Under the hood, the…

Mintbit 

Chaining Transformations with .then in Ruby

Have you ever found yourself writing a series of operations in Ruby that felt a bit too verbose? The then method, introduced in Ruby 2.6, is a clean and elegant way to chain transformations on a value, avoiding intermediate variables and improving code clarity.

In this post, we’ll understand how then works using a simple and practical example: formatting a blog post title.

Scenario

Imagine you’re working with a blog post title that comes in messy. You want to:

  1. Remove extra whitespace;
  2. Convert everything to lowercase;
  3. Capitalize the first letter of each word.

Traditional code (without .then)

1
2
3
4
5
6
7
title = "   rUBY is     AWESOME   "
trimmed = title.strip
downcased = tri…
The Bike Shed 

469: How are we using AI? with Jimmy Thigpen

Joël and fellow thoughtbotter Jimmy Thigpen assess their AI workflows and question whether LLM partners really are as helpful as they claim to be.

Joël points out the blindspots AI can have when processing certain requests, they each share the ways they utilise AI into their workflow and pros and cons of doing so, as well as looking at some of the areas of improvement they would each like to see made to various AI agents in the future.

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

Your host for this episode has been thoughtbot’s own Joël Quenneville, and you can connect with this week’s…

Short Ruby Newsletter 

Short Ruby Newsletter - edition 145

The one where Vladimir Dementyev launched Redprints CFP, JRuby 10.0.2.0 was released and where Nate Berkopec launched their new gem sidekiq-memory_logger
byroot’s blog 

Unlocking Ractors: generic instance variables

In two previous posts, I explained that one of the big blockers for Ractors’ viability is that while they’re supposed to run fully in parallel, in many cases, they’d perform worse than a single thread because there were numerous codepaths in the Ruby virtual machine and runtime that were still protected by the global VM lock.

I also explained how I removed two of these contention points, the object_id method, and class instance variables.

Since then, the situation has improved quite drastically, as numerous other contentious points have been either eliminated or reduced by me and my former teammates. I’m not going to make a post for each of them, as in most cases it boils down to the same …

Jardo.dev: Blog 

The “Git” “Hub” Part Is No Longer the Product

I woke up this morning to the news that the CEO of GitHub was stepping down. GitHub hosts (what I assume is) the vast majority of open-source projects, so the company has a tremendous amount of power to shape the average developer’s interactions with the open-source world.

GitHub just got less independent at Microsoft after CEO resignation

I wouldn’t be writing about it if this was just a leadership change. The detail that prompted me to comment on the news was that GitHub is being stripped of its independence.

Microsoft isn’t replacing Dohmke’s CEO position, and the rest of GitHub’s leadership team will now report more directly to Microsoft’s CoreAI team.

It seems that GitHub will…

Max Chernyak 

Failover to Human Intelligence

There’s no denying that AI is getting very capable, but one thing keeps bothering me: what happens if something goes wrong?

Right now, self-driving cars still require human monitoring and intervention (outside of specially-designated areas). Isn’t this also true of a sufficiently complex system where you might need to intervene quickly in case AI fails to resolve an issue? Worth considering, right?

You might say — so what? AI-written code is arguably better (or will eventually be better), often with more comments and docs, humans would understand it faster anyway. And that may be true, but with human-written code you can usually find a human who wrote it and ask them questions. If AI

Hotwire Weekly 

Week 32 - Hotwire Native Modals, Drupal gets Turbo support, and more!

Hotwire Weekly Logo

Welcome to Hotwire Weekly!

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


📚 Articles, Tutorials, and Videos

Create a macOS-inspired stack UI with Stimulus and Tailwind CSS - Rails Designer shows how to create a macOS-inspired dock-style stack UI using Tailwind CSS and a lightweight Stimulus controller. The effect relies on CSS transforms and grouped data-state variants, with a simple whenOutside action used to toggle the stack’s open/closed state.

Hotwire Native Modals - Joe Masilotti demonstrates using a Rails helper to show Bootstrap modals on the web and native modals in iOS/Android Hotwire apps via path configuration.

Coordinating Rails and JavaScript with Custom…

justin․searls․co - Digest 

📸 Shout for DANGER

Free idea for anyone who wants it.

I've been juggling so many LLM-based editors and CLI tools that I've started collecting them into meta scripts like this shell-completion-aware edit dingus that I use for launching into my projects each day.

Because many of these CLIs have separate "safe" and "for real though" modes, I've picked up the convention of giving the editor name in ALL CAPS to mean "give me dangerous mode, please."

So:

$ edit -e claude posse_party

Will open Claude Code in ~/code/searls/posse_party in normal mode.

And:

$ edit -e CLAUDE posse_party

Will do the same, while also passing the --dangerously-skip-permissions flag, which I refuse to type.

Posts on Kevin Murphy 

Frequently Played August 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.

This Is The Killer Speaking 🔗

I pre-ordered the new The Last Dinner Party album right away. Yes, I buy music.I’m old. I’ll be receiving a “compact disc” when it’s released.

Full Lyrics

If only you’d been honest, could have spared this bloodshed
Now I’m wanted ‘cross several county lines
When your hand is bigger than my heart
You can crush it, just the way I like
You got a whole lotta’ nerve and a whole lotta’ spite
When you leave, don’t look me in the eye

As Alive As You Need Me To…

justin․searls․co - Digest 

🔗 Is a Technical Debt ZIRP a good thing?

A few days back, I linked to Scott Werner's clever insight that—rather than fear the mess created by AI codegen—we should think through the flip side: an army of robots working tirelessly to clean up our code has the potential to bring the carrying cost of technical debt way down, akin to the previous decade's zero-interest rate phenomenon (ZIRP). Scott was inspired by Orta Therox's retrospective on six weeks of Claude Code at Puzzmo, which Orta himself wrote after reading my own Full-breadth Developers post.

Blogging is so back!

If you aren't familiar with Brian Marick, he's a whip-smart thinker with a frustrating knack for making contrarian points that are hard to disagree with. He saw my…

Jardo.dev: Blog 

How to Tame Your Mastodon Feed

Mastodon is a platform where you get out what you put in. The lack of recommendations make it hard to onboard. There's no algorithmic feeds of posts to browse or "who to follow" algorithms pushing you to start following immediately. This is definitely one of the many things that platforms like Bluesky do much better than Mastodon, helping drive their adoption.

I'm not here to critique Mastodon, though. My feed is plenty busy, in fact too busy. Fortunately, Mastodon's lists make it really easy to get to the content I care about, and provide me with something to look at when I just want to scroll.

In the web interface, lists are accessed on the right of the feed. Clicking on "Lists" there…

Jardo.dev: Blog 

Generating Custom Open Graph Images

Open Graph images are the images that you see when you share a page on social media. The goal of the Open Graph Protocol is to expose information about web pages so that they can "become a rich object in a social graph". I don't know how much that goal is achieved by the protocol, but I like when my posts have nice preview images. It helps them stand out.

There are a ton of different ways to use these images. Some bloggers have a big banner image for each post and use that for the social image. Some blogs just pull the first image in the post as the social sharing image. Others do what I do, render a custom image that contains the logo for my site, the title of the post, and a little…

Island94.org 

Everything I know about AI, I learned by reading the AWS Bedrock Client Ruby SDK code

This essay is a little bit about me and how I solve problems, and a little bit about AI from the perspective of a software developer building AI-powered features into their product.

The past week at my startup has been a little different. I spent the week writing a grant application for “non-dilutive funding to accelerate AI-enabled solutions that help governments respond to recent federal policy changes and funding constraints in safety net programs.” It wasn’t particurly difficult, as we’re already deep into doing the work 💅 …but it was an interesting experience breaking that work down into discrete 250-word responses, all 17 (!) of them on the grant application.

O…

Julik Tarkhanov 

If you need subdomains: just use subdomains

Eelco recently wrote about using subdomains in Rails, outlining a seemingly neat idea about having them as subdomains in production but using paths in development. It is clever and looks very usable at first sight. It’s also a very bad idea that is likely to get you side effects you really won’t be happy about. I normally don’t do “rebuttal” posts, but in this case — since I have dealt with that problem before — it feels warranted. Without being too lyrical about it, I want to outline why you don’t want to use that approach and propose a couple of alternatives.

So, the proposition is this. In production, your tenants/sites are on subdomains called something like site1.product.com, site2.pr…

Ruby on Rails: Compress the complexity of modern web apps 

Support for rack.response_finished callbacks in executor

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

Add support for “rack.response_finished” callbacks in Action Dispatch’s Executor
The executor middleware now supports deferring completion callbacks to later in the request lifecycle by utilizing Rack’s rack.response_finished mechanism, when available. This enables applications to define callbacks that may rely on state that would be cleaned up by the executor’s completion callbacks.

Enable configuring Action View’s render tracker
You can opt-in to the new parser with config.action_view.render_tracker = :ruby or load_defaults(8.1). This new render tracking implementation was added in Rails 7.2, the RubyTracker.

Add…

RubyGems Blog 

Update on Malicious Gems Removal

We are aware of a recent report about malicious gems that were targeting social media credentials. Our team first detected this activity on July 20th and began removing the affected gems immediately through our regular security processes.

We want to reassure the Ruby community that this issue has already been taken care of and is no longer an active threat. It involved a small number of gems from bad actors and does not impact widely used or trusted packages.

Security is part of our daily operations. We remove suspicious gems regularly, typically before issues are reported by third parties (our systems detect 70-80% of the gems we ultimately remove). While we don’t announce every action…

RubySec 

CVE-2025-54887 (jwe): JWE is missing AES-GCM authentication tag validation in encrypted JWE

### Overview The authentication tag of encrypted JWEs can be brute forced, which may result in loss of confidentiality for those JWEs and provide ways to craft arbitrary JWEs. ### Impact - JWEs can be modified to decrypt to an arbitrary value - JWEs can be decrypted by observing parsing differences - The GCM internal [GHASH key](https://en.wikipedia.org/wiki/Galois/Counter_Mode) can be recovered ### Am I Affected? You are affected by this vulnerability even if you do not use an `AES-GCM` encryption algorithm for your JWEs. ### Patches The version 1.1.1 fixes the issue by adding the tag length check for the `AES-GCM` algorithm. **Important:** As the [GHASH…
Remote Ruby 

Herb with Marco Roth

In this episode of Remote Ruby, Andrew and Chris chat with guest, Marco Roth, to discuss the challenges of working with ERB templates in Ruby on Rails, and Marco's ongoing project, Herb. They dive into Marco's inspiration from tools like Stimulus Reflex and Hotwire, and the broader vision for 'Herb' which includes syntax linting, formatting, enhanced error detection, and a future where React components can be seamlessly integrated with ERB templates. They also touch on the potential of using 'Herb' to make local development smoother via hot reloading, and the importance of community feedback and collaboration. Additionally, Marco shares his experiences speaking at various Ruby conferences…

Judoscale Dev Blog 

Post-mortem: No upscaling for 12 hours

It’s an embarrasing day for Judoscale. Last night through this morning we had our longest and most severe production incident in history, and we didn’t know anything was wrong for almost 12 hours. It was caused by some unexpected data and a line of code that never should have been written.

In this post I’ll air our dirty laundry and tell you exactly what happened, where we screwed up, and how we’re fixing it.

The timeline

  • 00:25 UTC: Upscaling stopped working for most Judoscale customers. We were not aware of this at the time.
  • 12:00 UTC: Carlos begins his day and opens our support queue to find 30 new messages (1-2 is typical). He updates our status page and begins investigating.
Awesome Ruby Newsletter 

💎 Issue 481 - The /o in Ruby regex stands for "oh the humanity "

Planet Argon Blog 

Solving Workflow Chaos with Dia Browser

Solving Workflow Chaos with Dia Browser

Mornings used to mean tab overload and tool chaos. Now, thanks to Dia, it starts with one script, one summary, and a clear head.

Continue Reading

JRuby.org News 

JRuby 10.0.2.0 Released

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

JRuby 10.0.2.x targets Ruby 3.4 compatibility.

Thank you to our contributors this release, you help keep JRuby moving forward!

7 Issues and PRs resolved for 10.0.2.0

Ruby Weekly 

Fixing the `json` gem's API

#​762 — August 7, 2025

Read on the Web

Ruby Weekly

What’s Wrong with the JSON Gem API? — Fed up with json’s unsafe defaults? Following on from his fantastic deep dive into json’s performance, Jean is back with thoughts on json’s API, changes he’s making, forthcoming deprecations, and why shedding global state is a worthwhile trade-off.

Jean Boussier

Wat?! Why Is Literally Everything Broken? — TFW you scale super fast: nothing works, everyone is frustrated with everything, and you don’t know what to fix or where to start. Our pragmatic assessments uncover root causes and prioritize real fixes we can help…

Te…

Rails Designer 

Create a macOS-inspired stack UI with Stimulus and Tailwind CSS

The other day I accidentally enabled the “fan” option in my dock’s application folder (I have it normally set to just “list”). But this incident inspired me to recreate the effect in Rails with a simple Stimulus controller and lots of Tailwind CSS goodies.

(side-note: an early reader of this article mentioned that Hey uses a similar effect for their “trays”)

It made for a good case to show how much can be done with (Tailwind-flavored) CSS. And while this article uses Tailwind CSS, it can be easily replicated with just CSS. 💡

This is the component I am aiming for:

What will be covered in this article:

  • Tailwind CSS grouping;
  • Data variants with group modifiers;
  • Using Stimulus FX…

As often the code…

Ruby Central 

Reflections on RailsConf 2025 From Shan Cureton, Executive Director of Ruby Central

Reflections on RailsConf 2025 From Shan Cureton, Executive Director of Ruby Central

This was my first time at RailsConf and my first time attending a Ruby Central-powered conference as Executive Director.

Going in, I had heard there was something magical about the Ruby community, but I didn’t yet understand what that meant. Throughout the conference, in small micro-conversations, I started to feel it.

By the end, it hit me a hundred times over.

Reflections on RailsConf 2025 From Shan Cureton, Executive Director of Ruby CentralShan Cureton, Executive Director of Ruby Central, at RailsConf 2025

There was something deeply meaningful about hearing from attendees about why they come to this conference, and how this year felt uniquely different from years past. That kind of feedback matters, especially as Ruby Central is asking big questions about what comes…

I sat across tables from passionate local meetup organizers who shared about their attendees and how they hope to work with us in the future. I could feel how…

naildrivin5.com - David Bryant Copeland's Website 

Please Create Debuggable Systems

When a system isn’t working, it’s far easier to debug the problem when that system produces good error messages as well as useful diagnostics. Silent failures are sadly the norm, because they are just easier to implement. Systems based on conventions or automatic configuration exacerbate this problem, as they tend to just do nothing and produce no error message. Let’s see how to fix this.

Rails popularized “convention over configuration”, but it often fails to help when conventions aren’t aligned, often silently failing with no help for debugging. This cultural norm has proliferated to many Ruby tools, like Shopify’s ruby-lsp, and pretty much all of Apple’s software design.

  • I asked…
Evil Martians 

Redprints CFP: an open source CFP management app built with Rails + Inertia.js

Authors: Vladimir Dementyev, Principal Backend Engineer, and Travis Turner, Tech EditorTopics: Open Source, Developer Community, Rails, JavaScript, Tailwind CSS, Vibe coding

Introducing Redprints CFP, an open source CFP management application built for the SF Ruby Conference with Rails and Inertia.js.

At Evil Martians, when it comes to writing custom software, we have a strong open-source-first culture. This means we're always thinking about which parts of our projects we can open-source as libraries or tools to share with the community. Our portfolio is massive and very diverse, but it's missing one particular "species" of open source: full-featured applications. But that changes today!…

Ruby on Rails: Compress the complexity of modern web apps 

Fullscript joins the Rails Foundation

The Rails Foundation is happy to welcome Fullscript our newest Contributing member.

Fullscript is a leading healthcare platform powering whole person care, helping over 100,000 providers and 10 million patients with seamless access to high-quality supplements, industry-leading labs, and smart adherence tools via a full suite of clinical tools built on Rails.

Fullscript launched on Rails 3.2 in 2011, and that original Rails monolith now runs on Rails 7.2 (with Rails 8 on the horizon), has over 1.6 million lines of Ruby, and leverages the new SolidQueue for background jobs. It serves both an internal GraphQL API for their React MPA, and an external REST API, and connects to 3 separate…

Matzにっき 

BenQ ScreenBar Halo 2商品レビュー

BenQ ScreenBar Halo 2商品レビュー

BenQさまからモニター用にScreenBar Halo 2をご提供いただきました。実は前作 ScreenBar Halo も頂いておりありがたい限りです。今回は前作との比較も含めてレビューします。

まず、設置はとてもかんたんで、ケーブルをつないで、モニターの上に乗せるだけです。前作でもかんたんでしたが、バネ部がよりソフトになったりいろいろと改良が加えられているようです。あと、接続ケーブルが独立したUSB-Cケーブルになったのは長さ調整の点からは嬉しいかな。

モニターランプとしては、前作よりもさらに広い範囲で手元が明るくなります。より手元が見やすくて嬉しいです。前作同様モニターへの映り込みもほとんどありません。より正確には、照らされて明るくなった手元が暗い画面だと少々映り込みますが、あまり気になりませんでした。

数字が見えるワイヤレスリモコン

今回、もっとも改善された点はこのリモコンでしょう。前作のリモコンは乾電池駆動でしたが、今回は充電式になっています。前作で時々取れやすかった電池蓋問題がないのはいいですね。バッテリーはずいぶん長持ちするようで、しばらく使っていますが数週間程度ではなくならないようです。他に改善点として、現在の明るさレベル、色温度などがデジタル表示されるようになりました。もちろん、明るさも色温度もランプを見ればわかることではあるのですが、デジタル表示はガジェット感が向上していますね。もうちょっと暖かみがほしいとか、クールな方が良いとか自由自在です。

センサー付きの賢いライト

センサーがついていて、オートモ…

Josh Software 

When Urgent Fixes Can’t Wait: How to Patch Packages in Production

There’s a special kind of panic that hits developers right before a big release.You’ve checked everything, your tests are passing, the staging environment is stable, and the business team is counting on you to go live today. Then, at the last minute, you discover something you didn’t expect: a bug, a missing feature, or an … Continue reading When Urgent Fixes Can’t Wait: How to Patch Packages in Production
Evil Martians 

What we learned from creating PostCSS

Authors: Andrey Sitnik, Author of PostCSS and Autoprefixer, Principal Frontend Engineer, and Travis Turner, Tech EditorTopics: Open Source, Accessibility, CSS, JavaScript

We share what have we learned creating PostCSS and the huge ecosystem around it. Get 8 key lessons from Andrey Sitnik, creator of PostCSS.

12 years ago, we created PostCSS, a CSS automation tool with 400M monthly downloads which is used by Google, Wikipedia, Tailwind, and 38% of developers. In this post, we share what we learned during this long journey maintaining such a popular open source project.

The Rails Tech Debt Blog 

Is It Ruby or Rails? Introducing Our New Discord Bot

At FastRuby.io, we spend our days deep in Rails codebases, upgrading, refactoring, and occasionally wondering, “Wait… is this method from Ruby or Rails?”.

Now, we’re turning that moment of confusion into a game. We’re excited to introduce Is It Ruby or Rails?, a brand new Discord bot that delivers daily puzzles to challenge your Ruby knowledge and fuel a little friendly competition.

You can install it using the Discord install link and start playing right away!

How It Works

Every day, the bot will share a new puzzle in the channel of choice.

Puzzle Example

The task is to correctly identify if what’s being shown comes from Ruby or Rails. Upon answering, the bot will provide immediate feedback.

Answer Feedback

justin․searls․co - Digest 

📄 Letting go of autonomy

I recently wrote I'm inspecting everything I thought I knew about software. In this new era of coding agents, what have I held firm that's no longer relevant? Here's one area where I've completely changed my mind.

I've long been an advocate for promoting individual autonomy on software teams. At Test Double, we founded the company on the belief that greatness depended on trusting the people closest to the work to decide how best to do the work. We'd seen what happens when the managerial class has the hubris to assume they know better than someone who has all the facts on the ground.

This led to me very often showing up at clients and pushing back on practices like:

  • Top-down mandates…