Rubyland

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

Short Ruby Newsletter - edition 144

The one where Ruby Conf Austria is announced, Alexandru Golovatenco launches railsblocks.com with over 175 UI components, and Oskars Ezerins creates a website for Ruby LLM benchmarks.
Gusto Engineering - Medium 

From Practice to Pitch: A Tech Intern’s Guide to Interviewing

Graduating with a CS and Math degree from college was tough — but juggling that with collegiate soccer took it to another level. On top of that, the pressure to find the perfect internship and prepare for interviews made it an even greater challenge. I think a lot of students can relate.

When I first started interviewing, I felt like I needed to have it all: the perfect resume, flawless technical skills, and zero nerves. But over time, I realized interviewing is a lot like soccer. It’s not about being perfect — it’s about showing up prepared, staying confident under pressure, and performing when it counts.

My soccer career has taught me that there’s nothing more rewarding than showing up to a…

Avo's Publication Feed 

Building a Superglue App in Rails

Let's learn how to build a project tracking application for freelancers using Superglue and Vite.
Write Software, Well 

Create a Staging Environment in Rails and Deploy with Kamal

Create a Staging Environment in Rails and Deploy with Kamal

This is the third post in my series on building this blog from scratch with Ruby on Rails. Check out all the posts in the series here: Rails in Practice

I’m Rebuilding Write Software, Well Blog in Ruby on Rails
After three years on Ghost, I’m rebuilding this blog from scratch with Ruby on Rails. In a new series, I’ll document the journey of building a production Rails application, from development to deployment. Follow along as I build the new home for Write Software, Well.
Create a Staging Environment in Rails and Deploy with Kamal

Now that we've provisioned the app and database servers, the next step is to create a staging environment in our Rails application so we can deploy and test the blog in a safe place before we…

In this post, we'll…

justin․searls․co - Digest 

📄 "There Will Come Soft Rains" a year from today

Easily my all-time favorite short story is "There Will Come Soft Rains" by Ray Bradbury. (If you haven't read it, just Google it and you'll find a PDF—seemingly half the schools on earth assign it.)

The story takes place exactly a year from now, on August 4th, 2026. In just a few pages, Bradbury recounts the events of the final day of a fully-automated home that somehow survives an apocalyptic nuclear blast, only to continue operating without any surviving inhabitants. Apart from being a cautionary tale, it's genuinely remarkable that—despite being written 75 years ago—it so closely captures many of the aspects of the modern smarthome. When sci-fi authors nail a prediction at any point in…

RubyMine : Intelligent Ruby and Rails IDE | The JetBrains Blog 

RubyMine 2025.2: Junie and AI Assistant Upgrades, Faster Rails Project Startup, Enhanced Bundler Management, and More

RubyMine 2025.2 is out!

In this blog post, we briefly go over the highlights of this release. For a detailed description, check out our What’s New page. 

You can get the new build from our website or via the free Toolbox App.

AI Assistant

JetBrains AI Assistant has received a major upgrade, offering smarter code completion, greater project awareness, and more control over AI in your IDE. Below is an overview of the main improvements. Read the full article here.

Code completion for ERB

Cloud-based code completion for ERB has been expanded to work directly within ERB tags like <% <caret> -%> and <%= <caret> %>. This feature builds on RubyMine’s existing AI-based code…

RichStone Input Output 

[3/4] Code with LLM teams

[3/4] Code with LLM teams

Your LLM agent will launch subagents to perform the tasks you give it in teams.

Remember in [1/4] Code with LLMs and a PLAN I talked about how I tweaked an effectively working prompt to skip the step of asking the LLM to first add what it will do to the existing PLAN.md? And in [2/4] Code with LLMs and default instructions how does CLAUDE.md help your agent get the right setup for each conversation? Subagents execute the tasks you assign them in a well-prepared manner, well-equipped for each step with the proper context.

The Claude On Rails gem automates the setup of these subagents by creating an .md file for each subagent specialist tailored to Rails. For example, if views need to be made…

Hotwire Weekly 

Week 31 - AnyCable for Laravel, How Hotwire Native works, and more!

Hotwire Weekly Logo

Welcome to Hotwire Weekly!

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


📚 Articles, Tutorials, and Videos

Add Konami Codes with Stimulus - Rails Designer demonstrates how to implement the classic Konami cheat code using a reusable Stimulus controller. It captures key sequences, compares them against the defined pattern, and dispatches a custom sequence:matched event.

AnyCable for Laravel: reliable WebSocket infrastructure - Vladimir Dementyev introduces AnyCable for Laravel, a Go‑powered, production‑grade WebSocket server that integrates with Laravel events and Echo for at‑least‑once delivery, automatic reconnection, and fallback transports.

Simplicity, vanished?!…

justin․searls․co - Digest 

🎙️ Breaking Change podcast v41 - Liquid Glasshole

Direct link to podcast audio file

I've made it! I'm over the hump! I'm actually writing* my language-learning app in Swift!

Send an email expressing how proud you are of me to podcast@searls.co. Or if there's any news worth following that isn't about AI. Too much AI stuff lately.

*And by "I'm writing", I admit Claude Code is doing a lot of the heavy lifting here.

Hyperlinks:

Drifting Ruby Screencasts 

Model Context Protocol

Model Context Protocol (MCP) is an API interface for your applications that are formatted in a way that machine learning platforms can interact with them. They can be used to generate AI insights, perform tasks based on user input or other things.
code.dblock.org | tech blog 

How to Disagree and Commit like Switzerland

The most abused principle in dysfunctional organizations is “Disagree and Commit”. In Don’t Tell Engineers What to Do I said that “telling people what to do, especially if they are in your direct reporting chain, must not be mistaken for “Disagree and Commit”.

So, what is a healthy “Disagree and Commit”?

The best example I know is the Swiss government. Even when individual members of the Federal Council personally oppose a popular initiative, they publicly defend and implement it once it’s approved, acting as a unified body. This approach ensures stable governance and respect for democratic decisions, as officials set aside personal views to uphold the collective will and present a united…

justin․searls․co - Digest 

🔗 There is no 'AI' in 'Team'

Scott Werner, who is frustratingly good at writing what I'm thinking about LLMs, has a new post out where he compares being an "agentic" coder to being an octopus, with each arm being a separate instance of Claude Code independently thinking and acting on its own. It's a good post and you should read it.

In the middle, he said the thing that was what first came to mind when I saw the image of the octopus in this context:

Here's the thing about teams now:

Two developers on one codebase is like two octopuses sharing one coral reef. Technically possible. Practically ridiculous. Everybody's arms getting tangled. Ink everywhere. The coral is screaming (coral doesn't scream, but work with me…

RichStone Input Output 

[2/4] Code with LLMs and default instructions

[2/4] Code with LLMs and default instructions

This will be a quick one, and if you get this one right, your coding buddies will run more smoothly on average because they will get stuck less and have clearer directions for each conversation session.

I guess for the Cursor and Co. people, it will be something like the cursor/rules file. For the state-of-the-art models like Codex, Claude Code, and Amp you'll have something like a CLAUDE.md file. This piece of information is typically ingested as context on the start-up of the conversation.

This is where you give the LLM a basic overview of your codebase and project. When you set up Claude Code for a project, there is an /init option that makes Claude analyze your project and fill the CLAUDE…

byroot’s blog 

What’s wrong with the JSON gem API?

As I mentioned at the start of my Optimizing Ruby’s JSON series of posts, performance isn’t why I candidated to be the new gem’s maintainer.

The actual reason is that the gem has many APIs that I think aren’t very good, and some that are outright dangerous.

As a gem user, it’s easy to be annoyed at deprecations and breaking changes. It’s noisy and creates extra work, so I entirely understand that people may suffer from deprecation fatigue. But while it occasionally happens to run into mostly cosmetic deprecations that aren’t really worth the churn they cause (and that annoys me a lot too), most of the time there’s a good reason for them, it just is very rarely conveyed to the users, and…

Jardo.dev: Blog 

Let's Get Baked

I just made the same mistake I always make; I named a file containing some Rake tasks with the wrong file extension, .rb instead of .rake. This is made all the more embarassing because I'm not working on a Rails app. This is the Ruby/Rack app we're building at Super Good and I'd just written the code that grabbed all the lib/tasks/*.rake files and loaded them. Old habits die hard.

When I posted about it, Sean Collins pointed me towards Bake, an alternative to Rake created by Samuel Williams. (That sentence had too many links.) There's nothing wrong with Rake, but the Bake README explains that it improves on Rake in four main ways:

  • On demand loading of files following a standard…
RubySec 

CVE-2025-54572 (ruby-saml): Ruby SAML DOS vulnerability with large SAML response

### Summary A denial-of-service vulnerability exists in ruby-saml even with the message_max_bytesize setting configured. The vulnerability occurs because the SAML response is validated for Base64 format prior to checking the message size, leading to potential resource exhaustion. ### Details `ruby-saml` includes a `message_max_bytesize` setting intended to prevent DOS attacks and decompression bombs. However, this protection is ineffective in some cases due to the order of operations in the code: https://github.com/SAML-Toolkits/ruby-saml/blob/fbbedc978300deb9355a8e505849666974ef2e67/lib/onelogin/ruby-saml/saml_message.rb ```ruby def decode_raw_saml(saml, settings = nil) …
Ruby Central 

RubyGems.org Funding Model & A New Path For Community-Led Growth

RubyGems.org Funding Model & A New Path For Community-Led Growth

TL;DR: Today, we’re launching a sustainable and community-driven funding model for RubyGems.org infrastructure, maintenance, and security.

If you build with Ruby, join us in keeping RubyGems.org, RubyGems, and Bundler secure and sustainable for years to come. Contribute here or share this with your company leadership.


At Baltic Ruby in June, I delivered a keynote on building sustainable open source through the lens of RubyGems.org.

What struck me most was how many attendees didn’t realize that Ruby Central, a nonprofit dedicated to supporting the Ruby ecosystem, is responsible for maintaining RubyGems.

RubyGems.org powers over 1,500 gem requests per second, supports billions of downloads per…

Alchemists: Articles 

Ghosting

Cover
Ghosting

Ghosting is the loathsome act of cutting off all communication with someone without explanation, warning, or any sense of closure. The person being ghosted is left with no response to any form of communication which creates a sudden and absolute silence. This is akin to how a "ghost" might disappear without a trace.

Typically, ghosting occurs in interpersonal relationships: romantic, platonic, or professional. All are concerning, especially the latter, because professional conduct and reputation is important (maybe more than ever). What’s disturbing is the increase in the lack of responses when communicating with others.

During the latter part of the pandemic (roughly…

Ruby on Rails: Compress the complexity of modern web apps 

relative_time_in_words, current transaction’s isolation level and more!

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

New written & video tutorials for beginners
The Rails Foundation has launched a few more learning resources for beginners, in partnership with Chris Oliver and the team behind Typecraft - Chris Power and Robert Beene.

Log when rescue_from handles an exception
This pull request adds a log message indicating when an exception was raised in before_action callbacks.

Allow hosts redirects from hosts Rails configuration
With this change, it is possible to allow hosts redirects from the Rails configuration:

    config.action_controller.allowed_redirect_hosts << "example.com"

rate_limit notification instrumentation to…

Hi, we're Arkency 

Watch out for this one deprecation warning when upgrading from Rails 7.1 to 7.2 on Heroku

Watch out for this one deprecation warning when upgrading from Rails 7.1 to 7.2 on Heroku

We recently upgraded Rails from 7.0 to 7.1 for one of our clients. It went smoothly. When Rails 7.1 went live, we were pleased to see a new set of deprecation warnings. To avoid being overwhelmed by them, we decided to address the issue right away. However, we ran into a nasty issue…

The one with nasty issue

The application didn’t crash.

The server wasn’t throwing 500s like a crazy Viking throwing axes.

Either of those would have been better. The worst that can happen is silence.

The deprecation warning was:

[DEPRECATION] DEPRECATION WARNING: `Rails.application.secrets` is deprecated 
in favor of `R…

We moved all…

danielabaron.me RSS Feed 

Off the Chart: Candid Conversations in Health Care

A reflection on navigating the Canadian health care system during a loved one's medical crisis, and a proposal for a convention to foster more honest, human conversations between patients and clinicians.
Remote Ruby 

Rolling Out Features and Rails 8 Insights

Chris and Andrew catch up on their week, discussing Andrew’s recent successful feature launch, their love for South Park, and the recent news about a $1.5 billion deal with Paramount. They go back-and-forth on upgrades to Bundler 2.7 and the intricacies of emoji reactions in their app. Debugging, code refactoring, and the importance of testing are discussed, with mentions of pairing with coworkers and using WebSockets for real-time updates. They dive into technical discussions about Ruby, Rails updates, and their use of Flipper for feature toggles. They also talk about the new Rails tutorial, the implications of ongoing sanitization and upgrades, and the anticipation for upcoming Ruby…

Avo's Publication Feed 

Visual breakpoint debugging for responsive Rails applications with TailwindCSS

A development-only Rails ERB snippet that displays the current Tailwind CSS breakpoint in a fixed overlay, helping developers debug responsive layouts by showing which breakpoint is active.
RichStone Input Output 

[1/4] Code with LLMs and a PLAN

[1/4] Code with LLMs and a PLAN

I'm fortunate enough to work every day with the state-of-the-art coding agents, most recently Claude Code, and I've also explored various resources from developers who push the boundaries and produce significant work with top-tier agents. We all need to level up together in this wild west of AI coding and share the good, the bad, and the ugly along the way. So, I'll be flooding everyone's inboxes with four articles on my most recent experiences and learnings in the space over the next few days.

Your very fundamental first step to get right when coding with LLM agents is your process. It's actual teamwork. On the highest level, it should look like this:

🤖
1. Make the LLM agent create a PLAN.md…
Awesome Ruby Newsletter 

💎 Issue 480 - Announcing Passive Queue: The Rails Background Job System That Transcends Processing

Ruby on Rails: Compress the complexity of modern web apps 

New written & video tutorials for beginners

The Rails Foundation has launched a few more learning resources for beginners, in partnership with Chris Oliver and the team behind Typecraft - Chris Power and Robert Beene.

Here’s what they are and where you can find them:

New tutorial: Sign Up & Settings

When we updated the Getting Started tutorial last year, we designed it to be the foundation for a series of follow‑up tutorials that add real features to the e‑commerce app you build, helping you grow your Rails skills step by step.

This is also why we changed the app in the Getting Started tutorial from a blog to an e‑commerce shop. A shop offers more opportunity to add meaningful features (features that you might also add to a real…

Today, we’re…

Ruby Weekly 

Implementing code reloading for Rack apps

#​761 — July 31, 2025

Read on the Web

Ruby Weekly

Code Reloading for Rack Apps — If you’re working with Rack-backed apps that aren’t Rails apps, you might miss some of Rails’ niceties like code reloading. Jared shows how to use Zeitwerk, Listen and Concurrent Ruby to recreate the experience, whatever you’re using.

Jared Norman

💡 On the topic of Rack, Rack 3.2.0 has just been released.

🧰 Small Team? Big Rails App? Bonsai Can Bridge the Gap — Are you a team of one (or a few) juggling too much tech debt? Bonsai helps you stay productive by handling upgrades, dependency management, security patches, and…

Bons…

Judoscale Dev Blog 

How Judoscale's Utilization-Based Autoscaling Works

A few weeks ago we announced that we’d been cooking up a brand new way of autoscaling — a proactive scaling approach based on maintaining a preferred level of server ‘utilization’. That announcement and post served to explain how this new form of scaling works at a high level and what you should expect from it, but we’d like to pull back the curtain and give you some insight into the gritty details. What is “utilization”? What does it have to do with computers and servers? How are processes and threads involved here? Strap on your deep-dive snorkel, we’re going in!

On ‘Utilization’

One of the most difficult components of software development is naming. Determining the best…

Rails Designer 

Add Konami Codes with Stimulus

In almost every (SaaS) app (and marketing sites) I built, I added (at some point), a little Easter egg. Small, little things, tweaks or jokes to the UI I would tell no one about, but that would certainly put a smile on their face.

One way I have done this is by using a Konami code. The Konami code (↑ ↑ ↓ ↓ ← → ← → B A) originated in Japan in the 1980s as a cheat code for Konami video games. The code became legendary when it was included in Contra (1987), where it gave players 30 extra lives. Since then, it has appeared in hundreds of games and websites as a cultural Easter egg.

Today I like to show how to add this in a reusable way by using Stimulus’ Values API and using (dispatching) a…

Josh Software 

All Superheroes Don’t Wear Capes

We had the opportunity to visit the Pra Foundation, a safe home for children with special needs including those with Cerebral Palsy with the Josh team over the weekend. This was a pre planned one day road trip and just like myself the others on the team had an intent to help the institution and … Continue reading All Superheroes Don’t Wear Capes
Blogs on Noel Rappin Writes Here 

Programming Proverbs in 1975 and 2025

As developers, we tend to think that our best practices are universal laws that we’ve discovered and which get refined over time. That’s true to an extent, but I think we underrate the ways our environment and technology shape what a best practice even is or what the best way to use a developers time might be. Looking at the past can help us calibrate what is and is not part of our environment.

Recently, I was at a used book sale and I came across this:

The cover of Programming Proverbs by Henry F. Ledgard, from 1975

It’s a book called Programming Proverbs by Henry F. Ledgard and it was published in 1975, and apparently written even earlier than that. Naturally, I was intrigued, especially given the price (effectively zero, the sale was $1 for all the…

Planet Argon Blog 

Nostalgia Meets New Ideas at RailsConf 2025

Nostalgia Meets New Ideas at RailsConf 2025

RailsConf 2025 marked the end of an era and the start of new possibilities. From nostalgic reflections to fresh ideas and tools, here are the key takeaways and inspirations one of our developers brought back to Planet Argon.

Continue Reading

Evil Martians 

Simplicity, vanished?! Solving the mystery with Inertia.js + Rails

Authors: Svyatoslav Kryukov, Backend Engineer, and Travis Turner, Tech EditorTopics: Rails, React

Has simplicity gone missing in web development? This investigative piece uncovers how Inertia.js + Rails defy JavaScript bloat and reclaim developer sanity.

The front-end development racket has been running the same con for years now. Walk into any dev shop and you'll see the same sorry picture: smart developers drowning in tooling they don't need, solving problems that didn't exist until someone sold them the solution.

Write Software, Well 

Let's Configure a PostgreSQL Database Server for the Blog

This is the second post in my series on building this blog with Ruby on Rails. You can read the following post for more context, and here’s the full list of posts in the series.
I’m Rebuilding Write Software, Well Blog in Ruby on Rails
After three years on Ghost, I’m rebuilding this blog from scratch with Ruby on Rails. In a new series, I’ll document the journey of building a production Rails application, from development to deployment. Follow along as I build the new home for Write Software, Well.
Let's Configure a PostgreSQL Database Server for the Blog
Let's Configure a PostgreSQL Database Server for the Blog

In the previous post, I created a new Rails application for my blog. In this post and the next one, I will deploy the app to a staging environment.

Personally, I prefer…

code.dblock.org | tech blog 

Don't Tell Engineers What to Do

A famous example where telling Engineers what to do backfired was the Space Shuttle Challenger disaster in 1986. Engineers at Morton Thiokol, the contractor responsible for the shuttle’s solid rocket boosters, warned NASA management that the O-rings in the boosters could fail in cold weather. The night before launch, engineers strongly recommended delaying the launch due to unusually low temperatures. Management, under pressure to proceed, overruled the engineers’ concerns and told them to “make a recommendation based on data, not emotion.” Eventually, management told the engineers to sign off on the launch, despite their objections. The shuttle launched in cold weather, the O-rings failed,…

Radan Skorić's website 

Turbo adapter: Hotwire Native's backdoor entrance

Understanding exactly how Hotwire Native integrates with the web app can be very helpful both in debugging issues and deciding if Hotwire Native is the right choice in the first place. In particular, it’s useful to understand how it takes over web navigation so it can make it feel native. This is exactly what this article explains. First, a Haiku version: A native embrace, The blossom of ...
code.dblock.org | tech blog 

Using Claude Code with Google Sheets

Let’s get Claude Code to connect to Google Sheets. We’ll use this Google Sample Spreadsheet.

Go to the Google Cloud Console, create a new project, and enable the Google Sheets API on it.

Install the Google Cloud CLI.

brew install google-cloud-sdk

Choose the newly created project on the command line.

~$ gcloud config set project gsheetscli

Updated property [core/project].

Login again, but this time enable Google Drive access.

gcloud auth login --enable-gdrive-access

You can now access the spreadsheet with curl.

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://sheets.googleapis.com/v4/spreadsheets/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/values…
{
  "range": 
Ruby Magic by AppSignal 

Build Custom ActiveStorage Analyzers for Ruby on Rails

In this series, we will take a close look at the architecture of ActiveStorage for Rails.

In this first part, we will examine how ActiveStorage treats uploaded data and how to extend this process. The second part will explore how to augment the presentation of uploaded assets.

But first, let's quickly define what ActiveStorage does.

What Is ActiveStorage for Ruby on Rails?

Without recounting the entire ActiveStorage documentation, in a nutshell, ActiveStorage is an adapter to various forms of storing (mostly) user-generated files in your Ruby on Rails application in a straightforward way. The available storage backends can be divided into:

  • Local disk storage
  • Diverse flavors of cloud…
justin․searls․co - Digest 

🔗 Upside-Down Development

Consider this one of a thousand signposts I'll erect for the sake of anyone on the journey to becoming a full-breadth developer. What's discussed below is exactly the sort of thing that will separate the people who successfully wrangle coding agents from the people doomed to be replaced by them.

This post by Jared Norman about the order in which we design computer programs got stuck in my craw as I was reading it:

When you build anything with code, you start somewhere. Knowing where you should start can be hard. This problem contributes to the difficulty of teaching programming. Many programmers can't even tell you how they decide where they start. It turns out that thinking of somewhere…

Evil Martians 

AnyCable for Laravel: reliable WebSocket infrastructure

Authors: Vladimir Dementyev, Principal Backend Engineer, and Irina Nazarova, CEOTopics: Real-time, Open Source, DX, Real-time features

We built AnyCable for Rails seven years ago. Now it's Laravel's turn.

SINAPTIA 

Scaling image classification with AI

At SINAPTIA, we’re always looking for innovative ways to leverage AI to solve real-world problems. Recently, we had the opportunity to work with Rightboat, a leading boat marketplace, to tackle a massive image classification challenge that was impacting both user experience and internal operations.

The Problem

Rightboat’s platform hosts thousands of boats. Some of them have more than 200 images. However, these images lacked any descriptive information or categorization. Some boats are manually loaded into the system. Their images are curated and sorted by the customer success team, so related images are next to each other. But the great majority of the loading work is automated. This…

katafrakt’s garden 

Micro-slices in Hanami

Slices are my favourite architectural feature in Hanami. They allude to the vertical slices architecture and let you host cross-functional “mini-apps” within your main Hanami projectThe feature itself is present from early days of Hanami, perhaps from the times when it was still called Lotus. Back then it was called apps..

A typical slice file structure (generated by Hanami slice generator) would look like this:

slices
└── admin
    ├── action.rb
    ├── actions
    ├── assets
    │   ├── css
    │   │   └── app.css
    │   ├── images
    │   │   └── favicon.ico
    │   └── js
    │       └── app.js
    ├── db
    │   ├── relation.rb
    │   ├── repo.rb
    │   └── struct.rb
    ├──…
Avo's Publication Feed 

Adding an MCP server to a Rails app

Let's learn how to add an MCP Server to a Rails application to better integrate our app with LLMs and achieve more things with AI.
Short Ruby Newsletter 

Short Ruby Newsletter - edition 143

The one where RubyCentral released all the videos from the final Rails Conf, a lot of new products built with Ruby or for Ruby launched and tickets for SF Ruby Conference are on sale
Jardo.dev: Blog 

Order-Driven Development

The other day, I posted about an article title Use Your Type System. Despite firmly believing that most Ruby applications do not need and should not adopt the static type systems on offer, I'm not anti-static types. I really like static types.

Ismael Celis pointed out that the article has some similarities to the idea of Parse, Don't Validate. That article links to another similar one, called Type Safety Back and Forth. That article got me thinking about how the direction from which we attack a problem affects our solution.

Type Safety Back and Forth

Type Design

The article isn't about outside-in versus inside-out design, so much as it is about the directions which developers do (or…

OmbuLabs Blog 

AI Agents: Implementing the ReAct Pattern in Ruby

AI Agents are everywhere. Every day, tools, libraries, new use cases, and new products come out using and leveraging AI Agents. Several frameworks have been developed to make them easy to build, but what happens under the hood?

A very popular pattern for building AI Agents is the ReAct pattern, meaning Reasoning and Acting. The idea is to get large language models (LLMs) to reason about a problem in a manner analogous to how humans do, by breaking down the problem into smaller steps, reasoning about each step, using tools, and then acting on the results.

Let’s walk through the ReAct pattern and how we can use it to build a simple AI Agent that writes blog posts in Ruby.

The ReAct…

Benoit Tigeot's blog 

Measuring SELECT ... FOR UPDATE Latency in PostgreSQL

At Lifen, we love digging into database performance issues. Recently, while monitoring one of our Rails applications using PgAnalyze and specific logging, we noticed something concerning: around 13–16% of a basic but frequently run query was taking more than 100ms to complete… and sometimes up to 1500ms. The culprit? SELECT ... FOR UPDATE queries that were experiencing intermittent slowdowns. The average time was normally 6ms.

Slow lock acquisition ? #

SELECT ... FOR UPDATE is used to acquire a lock on row during a transaction. We use it to prevent concurrent async tasks from modifying the same row. This can happen, for example, when consuming lots of events from a queue system with an “at…

The obvious…

Sam Saffron's Blog - Latest posts 

Discourse in a Docker container

Probably best ask on meta.discourse.org, our official docker installation support all sort of workflows

Sam Saffron's Blog - Latest posts 

Discourse in a Docker container

HI Sam
Need some suggestions on discourse local development
using vscode devcontianer for local discourse development

Can we run local development with https, for this we need to install ngnix ?
Can we run local development without any port(4200 is default) ?

For local we use discourse.git
For Production we need to use discourse_docker, if yes, after adding custom plugins, themes, using gitlab actions how we can push code to production

if we change any settings of theme, admin,navigation how we can export those to Production without manully adding again in Production site

if possible could you guide how you are manaing the blog for local and how code deploying to produciton

Hotwire Weekly 

Week 30 - RailsConf 2025 talks, Tailwind Primitives for HTML and Vanilla JS, and more!

Hotwire Weekly Logo

Welcome to Hotwire Weekly!

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


📚 Articles, Tutorials, and Videos

RailsConf 2025 Recordings published - The talk and workshop recordings of RailsConf 2025 were just published. You can check all recordings on RubyEvents or on YouTube. Here's a list of the Hotwire-adjecent talks:

RichStone Input Output 

Asking good questions for your product development

Asking good questions for your product development

Have you ever wanted to start a start-up, only to realize that you already run one? Or two?

As part of the Rails Builders group, I aimed to validate a new product idea for Rails shops that already have or want to implement a public API. My first baby step was to reach out to 20 people whom I can learn from about the idea.

But I couldn't. Primarily, I struggled with the topic I would be discussing during my customer conversations. It was challenging to come up with good questions and establish a red line for the upcoming conversation. The product was called unapi.dev, and its subheading contained all the directions it could go:

Asking good questions for your product developmentThe UnAPI team's bold promises.

So, I spent enough time thinking…

Julik Tarkhanov 

Hexatetrahedral Rails

Software is a creative endeavor and a craft. And like any creative endeavor and any craft, it is subject to fashions. About a decade ago, one of those fashions was Hexagonal Rails largely inspired by the DDD book, but also by the original Hexagonal Architecture work by Dr. Cockburn.

Some of these applications are now up for their Rails upgrade and an “oil change,” and it’s interesting to see them in the wild and how they get perceived through the lens of the years that have gone by since then. I call them “hexatetrahedral Rails applications” - in jest, of course - because they often end up presenting complexities that go beyond the intended benefits, sometimes becoming what I’d describe as …

justin․searls․co - Digest 

📄 I made Xcode's tests 60 times faster

Time is our most precious resource, as both humans and programmers.

An 8-hour workday contains 480 minutes. Out of the box, running a new iOS app's test suite from the terminal using xcodebuild test takes over 25 seconds on my M4 MacBook Pro. After extracting my application code into a Swift package—such that the application project itself contains virtually no code at all—running swift test against the same test suite now takes as little as 0.4 seconds. That's over 60 times faster.

Given 480 minutes, that's the difference between having a theoretical upper bound of 1152 potential actions per day and having 72,000.

If that number doesn't immediately mean anything to you, you're not alone.…

Closer to Code 

Announcing Passive Queue: The Rails Background Job System That Transcends Processing

0ms processing time. Infinite scalability. 100% success rate. Zero failures.

GitHub stars ← Give it a star if you enjoyed this zen approach!

The Moment of Zen Clarity

It was Day Two of RailsConf 2025 in sweltering Philadelphia when the idea crystallized. My friend Justin and I were discussing the endless cycle of Rails optimization - everyone building faster queues, better job processors, more efficient background systems.

That's when Justin sparked the initial concept: What if we built a "Passive Job" library?

The idea was brilliant, but as I thought it through, I realized it should align with the existing ecosystem. We weren't replacing ActiveJob itself - we were creating a queue backend.

The Problem…

Ruby on Rails: Compress the complexity of modern web apps 

PostgreSQL 18 warnings, secure password improvements and more!

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

Avoid dynamic encrypting in generated fixtures
Fixtures for passwords now generate a static hash. Previously, fixtures with password digest attributes regenerated the hash on each test run.

Don’t add bundler platforms for JRuby
Fixes Rails Apps on JRuby by not adding extra platforms that cause problems when installing gems.

Make ActiveSupport::Gzip.compress deterministic
ActiveSupport::Gzip.compress now produces consistent output by always setting the gzip timestamp to zero, which eliminates flaky tests while comparing compressed data.

Fix HashWithIndifferentAccess#transform_keys! to avoid collisions
Fixes a bug…

Write Software, Well 

Let's Create a New Rails Application for the Blog

This is the first post in the series on building this blog in Ruby on Rails. Check out the introduction to learn more.
I’m Rebuilding Write Software, Well Blog in Ruby on Rails
After three years on Ghost, I’m rebuilding this blog from scratch with Ruby on Rails. In a new series, I’ll document the journey of building a production Rails application, from development to deployment. Follow along as I build the new home for Write Software, Well.
Let's Create a New Rails Application for the Blog
Let's Create a New Rails Application for the Blog

In this post, we'll create a new Rails project for my blog. I'm assuming you already have the latest versions of Ruby and Rails installed on your machine, along with the PostgreSQL database. To learn how to install Ruby and…

Island94.org 

Consider Thruster with Puma on Heroku

To briefly catch you up to speed if you haven’t been minutely tracking Ruby on Rails performance errata: the Puma webserver has some mildly surprising behavior with the order in which it processes and prioritizes requests that are pipelined through keepalive connections; under load, it can lead to unexpected latency.

Heroku wrote ~3,000 words about this Puma thing, and very smart people are working on it. All of this became mildly important because: Heroku upgraded their network router (“Router 2.0”), which does support connection keepalive, which has the potential to reduce a little bit of latency by reducing the number of TCP handshakes going over Heroku’s internal…

Remote Ruby 

RailsConf 2025 Recap

In this episode of Remote Ruby, Chris and Andrew reflect on their experiences at the final RailsConf in Philly. They discuss their interactions, keynotes, the vibe of community, and favorite talks that stood out. Highlights include reminiscing about Aaron Patterson and Aji Slater's keynotes and their entertaining reflections on 20 years of RailsConf history. They also explore the recent updates and adjustments to technical practices, such as the FerrumPdf gem, handling Turbo Frames requests, and the excitement surrounding the emerging Hotwire Dev Tools extension. Hit the download button now! 

Links

Avo's Publication Feed 

Rails Engine Assets: Making Your Gem Work with Sprockets AND Propshaft

The golden rule for libraries is to support integration with as many parent apps as possible because you want to cover as much as you can of the full spectrum of customers.
Posts on Kevin Murphy 

RailsConf 2025 Video

The videos for RailsConf 2025 have been posted to Ruby Central’s YouTubechannel, and that includes my session.If you weren’t able to join us, I hope you’ll check it out.

Awesome Ruby Newsletter 

💎 Issue 479 - The 60-Second Wait: How I Spent Months Solving the Ruby’s Most Annoying Gem Installation Problem

Ruby Weekly 

Rails first released 21 years ago today

#​760 — July 24, 2025

Read on the Web

Ruby Weekly

🤖 Red Candle: Run LLMs Directly from Ruby — An interesting new library that uses some Rust under the hood, but with no need for Python or third party LLM APIs: just interact with the LLM right from Ruby. Supports Gemma, Llama 3, and Mistral models for now. It worked on my Mac (though the TinyLlama model in the examples is of questionable utility!) but your mileage may vary. GitHub repo.

Scientist / Christopher Petersen

▶  Rails New: A Fantastic Set of Official Rails Tutorial Videos — It’s aimed at beginners or anyone who wants to refresh their modern…

Hanami 

The look of things to come

It’s week 6 of our sponsorship drive!

Let’s make sure you’re all caught up. So far, we have:

There’s a lot of words across those posts. So today I want to share something different, something visual. Behold, cuteness!

A preview of our new logos

Here you have your very own preview of the new faces we’re creating for Hanami, Dry and Rom.

I’m so excited for this. These logos will unify our projects while allowing each to maintain its own identity. They’re also the visual representation of the culture we’re building, of kindness, curiosity and care — and…

Ruby News 

Ruby 3.3.9 Released

Ruby 3.3.9 has been released.

This release includes the following security fix of default gems:

and the following fixes for build issues:

  • GCC 15.1
  • Visual Studio 2022 Version 17.14

Please see the GitHub releases for further details.

Download

Rails Designer 

Add a multi-step form/wizard to your Rails app

Over the years there have been many an article that suggest shorter forms have a positive impact on user experience (UX). Aside from a better experience, having shorter forms also means collecting less data on your users. Good for your users, good for you.

Rails has had the wicked gem for a long time that helps set this up. But to me, this kind of feature is not something I would outsource to a gem. More importantly it is really not that difficult to build and by fully owning the code, you are free to tweak it to make it fit your app.

In this article I am laying out how I would go about a multi-step form used for onboarding new users to my app. Something like this:

You can see each…

Ruby News 

Ruby 3.2.9 Released

Ruby 3.2.9 has been released.

This release includes the following security fixes:

and the following fixes for build issues:

  • GCC 15.1
  • Visual Studio 2022 Version 17.14

Please see the GitHub releases for further details.

Download

  • https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.9.tar.gz

    SIZE: 20560944
    SHA1: 174f37666192a3fdc9cf24e5eddc0cf4d5de0b1e
    SHA256: abbad98db9aeb152773b0d35868e50003b8c467f3d06152577c4dfed9d88ed2a
    SHA512: d3fc84ee71a85f5a9bc75d7354508adf197238ee6fa0f83d72bb7659aaf9d4294ae577d64f4a937b511abf241d44d190643227577dcd9cd04dc0553375913975
    
Julik Tarkhanov 

Why can’t we just… send an HTML email

A few months ago my partner-in-love-and-in-crime came with a seemingly innocuous request, which went as follows:

We have an event coming up, and I need to send out a press release via email. It’s simple enough - just a couple of images and a few blurbs of text. I can’t seem to be able to make it look good in Gmail nor in Apple Mail. How does one do such a thing?

Now, we computer-savvy household members know darn well that HTML email is, on the list of terrible IT things we have to help others with, right below the “can we get this printer to work?”. It can get… challenging. And yet, given that I have done this “HTML email” thing for a while – this piqued my curiosity.

How hard can it…

Write Software, Well 

I am Rebuilding this Blog with Rails

I am Rebuilding this Blog with Rails

For a while now, I've wanted to build my own Rails app from scratch, that's running in production, and is used by real users. I’ve explored several ideas and even built a few prototypes, but none of them felt substantial or meaningful enough to sustain long-term development.

After many such attempts, I realized that the application I was looking for was right in front of me.

For the last three years and over 200 posts, the Write Software, Well blog has been hosted on Ghost. It's a truly wonderful platform that has served this website well, and I recommend it to anyone starting a new blog. I'm sure it will serve me well for the next 1000 posts and more.

This blog averages 15-20 thousand monthly…

justin․searls․co - Digest 

📄 Adding swift-format to your Xcode build

Xcode 16 and later come with swift-format baked in. Unfortunately, Xcode doesn't hook it up for you: aside from a one-off "Format File" menu item, you get no automatic formatting or linting on local builds—and zero guidance for Xcode Cloud.

Beginning with the end in mind, here's what I ended up adding or changing:

.
├── ci_scripts
│   ├── ci_pre_xcodebuild.sh
│   ├── format
│   └── lint
├── MyApp.xcodeproj
│   └── project.pbxproj
└── script -> ci_scripts/

Configuring swift-format

Since I'm new around here, I'm basically sticking with the defaults. The only rule I customized in my project's .swift-format file was to set indents to 2 spaces. Personally, I rock massive fonts and zoom…

Jardo.dev: Blog 

Code Reloading for Rack Apps

I work almost exclusively on Ruby on Rails applications. The product we're building at Super Good isn't a Rails app, though; it's a Ruby application built directly on top of Rack. While this means the application is very stripped down and fast, which is great for the end product, it also means we don't get a lot of things for free from our framework.

Code reloading is one of those things. Modern Rails is integrated with Zeitwerk, a general purpose code loader for Ruby that supports reloading. Zeitwerk works great as a loader on its own, but it doesn't do everything you need for reloading a web applications.

Zeitwerk will reload code when you tell it to, but you need to decide when to tell…

naildrivin5.com - David Bryant Copeland's Website 

Build a blog in 15ish Minutes with BrutRB

This is a whirlwind tour of the basics of Brut, where I build a blog from scratch in a bit over 15 minutes. The app is fully tested and even has basic observability as a bonus. The only software you need to install is Docker.

Evil Martians 

API contracts and everything I wish I knew: a frontend survival guide

Authors: Yuri Mikhin, Frontend Engineer, and Travis Turner, Tech EditorTopics: DX, TypeScript

A letter from the future about the 3-week endpoint waits, 2 AM staging environment debugging sessions, and why contract-first development changes everything. The hard-won wisdom of API development that nobody tells you until it's too late.

As a frontend engineer, this is the first part of a series that I wish someone had sent me years ago, preferably before I found myself debugging an API while (I assume) backend was absorbed in sweet slumber. If you’ve ever waited three weeks for an endpoint, rewritten your code after a "surprise" update, or wondered why an API returns 100 fields when you only need…

RubyGems Blog 

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

RubyGems News

In June, we introduced a new Bundler 4 mode for early feedback and continued work on the upcoming Bundler 2.7.0 and RubyGems 3.7.0 releases. These changes reflect our ongoing focus on flexibility, modernization, and improving developer workflows.

Bundler 4 mode is now available

  • We’ve launched a user-facing simulation mode that lets you preview Bundler 4 behavior before its final release. This feature allows developers to test upcoming breaking…
RubySec 

CVE-2025-54314 (thor): Thor can construct an unsafe shell command from library input.

Thor before 1.4.0 can construct an unsafe shell command from library input.
RubySec 

GHSA-353f-x4gh-cqq8 (nokogiri): Nokogiri patches vendored libxml2 to resolve multiple CVEs

## Summary Nokogiri v1.18.9 patches the vendored libxml2 to address CVE-2025-6021, CVE-2025-6170, CVE-2025-49794, CVE-2025-49795, and CVE-2025-49796. ## Impact and severity ### CVE-2025-6021 A flaw was found in libxml2's xmlBuildQName function, where integer overflows in buffer size calculations can lead to a stack-based buffer overflow. This issue can result in memory corruption or a denial of service when processing crafted input. NVD claims a severity of 7.5 High (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) Fixed by applying https://gitlab.gnome.org/GNOME/libxml2/-/commit/17d950ae ### CVE-2025-6170 A flaw was found in the interactive shell of the xmllint command-line tool, used…
Dhaval Singh's Blog 

Counting tokens at scale using tiktoken

Tiktoken is one of the most popular tokenizers out there. This is a really nice and simple cookbook that shows how to use it.

Recently I was optimizing our token counting function that is often used to chunk data to send to embedding models(need precise count), cut-off older text(needs approx count),etc. But one problem I ran into was, for large strings like 10MB, the memory can spike a lot. For 4o, the peak memory can go upto ~80MB and CPU wall time upto ~1.3s! This can be a potential problem when scale is high for your services.

There are 2 major ways you can deal with it.

1. Use approximations wherever possible

For most Gpt models, dividing the length of text by 4 is good enough. In Claude…

Rails at Scale 

AI Coding Agents Are Removing Programming Language Barriers

For a decade (2014-2024), I was a Ruby-only developer. I worked across the Ruby ecosystem—from Rails development to Ruby’s core tooling like IRB, RDoc, and the debug gem. But while I moved around the stack, I stayed within Ruby’s boundaries. Ruby wasn’t just my primary language; it was essentially my only language.

That changed in 2025.

This year, I’ve contributed to Sorbet (C++), worked on RBS’s parser (C), and am now diving into ZJIT (Rust). A combination of factors enabled this shift—something I’d always dreamed of but was terrified to attempt. But AI coding tools like Cursor and Claude Code—both encouraged at Shopify—have been absolutely career-changing.

The Perfect Storm of…

The Bike Shed 

468: RailsConf Recap with Tess Griffin

Joël sits down with Tess Griffin as they take a moment to recap the very last RailsConf together.

The pair discuss their favourite moments from final conference, how their love of D&D has crossed over to shape their experiences attending RailsConf, and the future of the show as a whole.

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

Your guest this week was Tess Griffin and your host for this episode has been thoughtbot’s Joël Quenneville.

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 show? Why not…

Gusto Engineering - Medium 

Building Strong Teams: Lessons from Beavers for Tech Leads

A beaver watching over a riverA beaver contemplating their next move

I once believed that writing the most code would make me the best engineer. After all, I’m a software engineer, and software is built by writing code. While coding is obviously part of the job, it’s typically neither the hardest nor the most important. Engineers are valued for their intellect, not their keystrokes; more specifically, they are valued for their ability to use their brains to solve problems that provide business value. Thankfully, this aligns perfectly with why many enter this industry. Ask a random sample of engineers why they chose this path, and some variation of “I love solving difficult problems” will likely be a top answer.

But here’s…

RubyGems Blog 

3.7.1 Released

RubyGems 3.7.1 includes enhancements and documentation.

To update to the latest RubyGems you can run:

gem update --system

To install RubyGems by hand see the Download RubyGems page.

### Enhancements:

  • Fix regression in presence of RVM gems. Pull request #8854 by deivid-rodriguez
  • Restore parsing “–” as an unknown platform rather than crashing. Pull request #8846 by deivid-rodriguez
  • Installs bundler 2.7.1 as a default gem.

### Documentation:

  • Use mailto link in Code of Conduct. Pull request #8849 by deivid-rodriguez
  • Update Code of Conduct email to conduct@rubygems.org. Pull request #8848 by indirect

SHA256 Checksums:

  • rubygems-3.7.1.tgz
    750c8c771180d41ed2358344e5461ede…
Avo's Publication Feed 

OTP Input field with StimulusJS

Let's learn how to build an OTP input field, aka code verification, using StimulusJS and improve your token auth flows.
Weelkly Article – Ruby Stack News 

🔍 Understanding Ruby’s .. Range Operator in ActiveRecord Queries

July 21, 2025 When working with date ranges or numeric intervals in Ruby on Rails, writing clear and idiomatic code can be the difference between “just working” and being truly expressive. One tool that helps achieve this is Ruby’s inclusive range operator .. — and yes, it works beautifully with ActiveRecord too. 🔍 Understanding Ruby’s … Continue reading 🔍 Understanding Ruby’s .. Range Operator in ActiveRecord Queries

Josh Software 

Fantastic Bugs and Where To Find Them

By A Frustrated Flutter Dev Who’s Seen Too Much There I was. 2 AM. Tea cup in one hand, stack trace in the other. The app crashes only when the moon is in the sky and the user taps “Cancel” three times. My juniors call it a “weird bug.” I call it: another Tuesday. Over … Continue reading Fantastic Bugs and Where To Find Them
Tom Dalling 

Leprechauns, Root Causes, And Other Fairy Tales

This is a short talk I gave a while ago about how complex systems fail, and root cause analysis. Transcript is below.

Hotwire Weekly 

Week 29 - Ruby Friends Hotwire Native apps, Herb Linter & Formatter, and more!

Hotwire Weekly Logo

Welcome to Hotwire Weekly!

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


📚 Articles, Tutorials, and Videos

Hotwire Native Live: Starting a New App, Ruby Friends - In this episode of Hotwire Native Live Joe Masilotti begins building the RubyFriends iOS and Android apps with Hotwire Native. He walks through project setup, integration with the existing Rails backend, and adapting authentication via path configuration.

Remote Ruby: Soham Parekh, Turbo Frames and AI Antics - Chris Oliver and Andrew Mason focus on how Turbo Frames power real-time emoji reactions in Rails apps, and more!

Click to reveal feature with Tailwind CSS - Rails Designer shares a…

justin․searls․co - Digest 

🎙️ Breaking Change podcast v40 - Go home Claude, you're drunk

Direct link to podcast audio file

Finally, a recommendation-heavy, full-mailbag show. Been a while.

New to the pod are achievements—watch your BreakingScore™ increase each time you write in to podcast@searls.co. The winner will receive nothing, probably.

Lynx:

Ruby Central 

Ruby Central's OSS Changelog: July 2025

Ruby Central's OSS Changelog: July 2025

Hello, and welcome to the July 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

Ruby Central at Open Source Summit North America

At Open Source Summit North America, our lead security engineer, Samuel Giddins, continued discussions on supply chain security and creating a binary transparency scheme that will…

Ruby on Rails: Compress the complexity of modern web apps 

A new touch option, accessing the editor from the error page and better migration logs

Hi, it’s Claudio Baccigalupo. So many great changes to the Rails codebase this week. Let’s check them out.

Add touch option to update_column(s)
Particularly useful for ETL processes that rely on the updated_at timestamps instead of copying the whole table. Previously, to keep timestamps current, the touch method had to be called after using update_column.

Add support to open files in the code editor from the crash page
All the most common editors are supported, from Atom to Zed.

Fix errors when query string keys have invalid encoding
Bots hitting your Rails app with malformed requests could generate noisy 500 Server Errors. After this PR the requests won’t be reported as an app exception.

Remote Ruby 

Ruby Podcast Panel at RailsConf 2025

In this special episode of Remote Ruby, ‘AI Andrew’ introduces a panel discussion recorded at RailsConf in Philadelphia. Hosted by David Hill (Ode to Rails Conf, Ruby Gems Podcast), the panel features Drew Bragg (Code and the Coding Coders who Code it), Stephanie Minn (The Bike Shed), and Chris Oliver (Remote Ruby), who take the stage to share their experiences, insights, and memories from the Ruby and Rails community. They discuss how to improve social interactions at conferences, the pros and cons of having podcast guests, how to attract new programmers to Ruby and Rails, and their favorite RailsConf memories. The panel also dives into valuable tips for creating compelling podcast content…

Awesome Ruby Newsletter 

💎 Issue 478 - Hanami and the elephant in the room

JRuby.org News 

JRuby 10.0.1.0 Released

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

JRuby 10.0.1.x targets Ruby 3.4 compatibility.

Thank you to our contributors this release, you help keep JRuby moving forward! @PChambino, @kares, @Earlopain

Compatibility

Libraries

  • The net-imap library is updated from 0.5.4 to 0.5.8 (#8826, #8828)

62 Issues and PRs resolved for 10.0.1.0

Ruby Weekly 

It's time to get ready for Bundler v4

#​759 — July 17, 2025

Read on the Web

Ruby Weekly

How I Spent Months Solving Ruby's Most Annoying Gem Installation Problem — If you’ve sat waiting for bundle install to finish for ages, you’ll have felt Maciej's pain. He set out to see why his gem (rdkafka) took so long to install and if it’s possible to improve: the answer is yes, he took it from taking sixty seconds to install to just three! One for all the gem maintainers!

Maciej Mensfeld

Ruby 3.4.5 Released — A scheduled maintenance update that includes bug fixes and adds GCC 15 support. The next release, 3.4.6, is due in September.

Takashi…

Rails Designer 

Rails Designers: private community for Rails UI Engineers

Over the period that I ran Rails Designer, and many years before that, I have been in touch with many other Rails UI engineers or product designers. Initially through my SaaS businesses where I got questions on how I tackled certain UI issues in the Rails/Hotwire way, and later through the Rails Designer work (components, articles and UI consultancy).

These conversations were all (short), siloed conversations, that often could also helped other UI engineers. Also with AI (LLM) rising, many functionalities and features are often one prompt away. But it often is still lacking in best practices, clean, nicely written code and general good taste.

AI is lacking best practices, clean written…

Closer to Code 

The 60-Second Wait: How I Spent Months Solving the Ruby’s Most Annoying Gem Installation Problem

Notice: While native extensions for rdkafka have been extensively tested and are no longer experimental, they may not work in all environments or configurations. If you find any issues with the precompiled extensions, please report them immediately and they will be resolved.

Every Ruby developer knows this excruciating feeling: you're setting up a project, running bundle install, and then... you wait. And wait. And wait some more as rdkafka compiles for what feels like eternity. Sixty to ninety seconds of pure frustration, staring at a seemingly frozen terminal that gives no indication of progress while your coffee is getting cold.

I've been there countless times. As the maintainer of the …

Bundler Blog 

Bundler v2.7: last release before Bundler 4

A major release of Bundler is finally happening, consolidating unreleased major changes that had been pending for a decade. It will be named Bundler 4 (skipping Bundler 3), so that we can release it in lockstep with RubyGems 4, making the version number of Bundler & RubyGems in sync from now on.

Final Bundler 4 release will happen at the end of 2025, but for now we’re presenting Bundler 2.7 as the last big step towards this major release.

Bundler 2.7 features a simulate_version configuration that will allow users to configure Bundler to behave exactly as Bundler 4 will behave, with all major breaking changes enabled by default. We encourage all users to enable this setting, experiment…