Rubyland

news, opinion, tutorials, about ruby, aggregated
Sources About
The Rails Tech Debt Blog 

Extracting Deprecation Warnings from the Rails Source Code

At FastRuby.io, we offer specialized Rails upgrade, maintenance, and technical debt services.

Before doing an upgrade, we strongly recommend doing the Roadmap to Upgrade Rails, a static analysis of your codebase that outlines the action plan to do the upgrade and provides time and investment estimates.

The first step in every Rails upgrade we do is addressing deprecation warnings in the current version. So recently, we set out to extract all deprecation warnings from all versions of Rails starting at Rails 2.3 to help in our static analysis of Rails applications.

In order to extract all deprecation warnings from the Rails source code we first needed to understand how deprecation…

Planet Argon Blog 

Organizing the Chaos: Why Password Managers Make Developer Onboarding Easier

Organizing the Chaos: Why Password Managers Make Developer Onboarding Easier

Simplify dev onboarding, reduce risk, and secure your workflow with credential management strategies using tools like 1Password.

Continue Reading

RubySec 

GHSA-5w6v-399v-w3cc (nokogiri): Nokogiri updates packaged libxml2 to v2.13.8 to resolve CVE-2025-32414 and CVE-2025-32415

## Summary Nokogiri v1.18.8 upgrades its dependency libxml2 to [v2.13.8](https://gitlab.gnome.org/GNOME/libxml2/-/releases/v2.13.8). libxml2 v2.13.8 addresses: - CVE-2025-32414 - described at https://gitlab.gnome.org/GNOME/libxml2/-/issues/889 - CVE-2025-32415 - described at https://gitlab.gnome.org/GNOME/libxml2/-/issues/890 ## Impact ### CVE-2025-32414: No impact In libxml2 before 2.13.8 and 2.14.x before 2.14.2, out-of-bounds memory access can occur in the Python API (Python bindings) because of an incorrect return value. This occurs in xmlPythonFileRead and xmlPythonFileReadRaw because of a difference between bytes and characters. **There is no impact** from this CVE for…
Evil Martians 

Making desktop apps with revved-up potential: Rust + Tauri + sidecar

Authors: Valentin Kiselev, Backend Engineer, and Travis Turner, Tech EditorTopics: Frontend, Backend, Rust, TypeScript

Real experience using the Tauri framework to build a desktop app with a sidecar running in the background; this may be a program written in any language and can be used to surpass the framework possibilities of Tauri!

The Tauri framework provides a very sustainable development flow as it can catch most errors at compile time, allowing us to think less about possible errors and more of what you want to implement. But what if you want to go beyond the basic setup which consists of the web app and the Tauri backend? For example, non-trivial desktop features, like background file…

Avo Blog 

Adding shortcodes to the Marksmith editor

Let's learn how to add short codes—also called callouts—to a Rails application with the Marksmith editor.
The Bike Shed 

460: Programer Productivity with Valerie Burzynski

Start taking notes in this episode as Joël and Valerie discuss the different ways in which they structure their note taking systems to improve their workflows.

Together they cover the best ways to get started with serious note taking, how to best map out your thoughts so they make the most sense when you come back round to them, as well as examining the different use cases they have for them both over the course of a working day.

The Sponsor for this episode has been Judoscale - Autoscale the Right Way. Check out the link for your free gift!

Take notes like a pro with Obsidian and then read what Joël has to say on his own note taking.

Your guest this week has been Valeri…

Josh Software 

Mastering Multi-Tenancy in Rails: Scalable Architecture with ActsAsTenant

Modern web applications often need to support multiple organizations or user groups within a single system. Multi-tenancy makes this possible by allowing different tenants to share the same application and database while keeping their data isolated. This approach improves scalability, reduces infrastructure overhead, and simplifies deployment and maintenance. In one of my projects, we had … Continue reading Mastering Multi-Tenancy in Rails: Scalable Architecture with ActsAsTenant
Giant Robots Smashing Into Other Giant Robots 

Between immutability and memoization, you might have to choose

Immutability with freeze

Since Ruby 2.3 and the magic comment # frozen_string_literal: true we are more used to dealing with frozen objects.

A typical pattern when dealing with POROs such as value objects is immutability. By definition, a value object represents a value and should not change.

class Distance
  def initialize(meters)
    @meters = meters
    freeze
  end

  def update(meters)
    @meters = meters
  end
end

distance = Distance.new(100)
distance.update(50)
# => can't modify frozen Distance (FrozenError)

But what happens if your value object is doing an expensive calculation? What if we need this calculation more than once? One could argue that…

Gusto Engineering - Medium 

The Intern’s Playbook — Key Steps to a Successful Software Engineering Internship

A person in a bright yellow jacket stands at the center of a massive, rusty metal maze viewed from above. The maze floor is dusted with snow towered by the tall rusted metal walls.

The Intern’s Playbook — Key Steps to a Successful Software Engineering Internship

You’re stepping into your first (or next) software engineering internship — and that can be exciting, nerve-wracking, and confusing all at once. As a recent CS grad and former intern (at Gusto and a few other companies), I wrote the guide I wish I had: a clear and honest playbook for how to make the most of your short time as a Software Engineering Intern.

Why this Exists

Wrote this for the intern I once was — someone eager, unsure, and Googling “how to do well in a software engineering internship” the night after deciding where and how I would spend my summer.

Preparing for Day One

Just like college courses,…

Short Ruby Newsletter 

Short Ruby Newsletter - edition 132

The one with several Ruby releases: 3.4.3, 3.5.0-preview1, and JRuby 10, where Marco Roth announces herb tools and Matz suggests that Ruby 4.0 may be released this Christmas.
Weelkly Article – Ruby Stack News 

🚀 Introducing TrixGenius Alpha 0.1.2 – Now with AI-Powered Math Evaluation!

TrixGenius Alpha 0.1.2 April 15, 2025 📢 I just released a new version of my Rails engine and gem: TrixGenius! This gem extends the beloved Trix Editor with some fresh, AI-powered superpowers — all using Hotwire (Turbo + Stimulus). Whether you're building internal tools, CMS interfaces, or AI-enhanced content platforms, TrixGenius gives your rich text … Continue reading 🚀 Introducing TrixGenius Alpha 0.1.2 – Now with AI-Powered Math Evaluation!

justin․searls․co - Digest 

📸 Radioactive Condos

Searching for real estate in Japan has been a humorous lesson in the differences of how we market things here. You’d think of all countries, Japanese developers might be sensitive to promotional images that make their brand-new condo building appear to be radioactive. ☢️

Island94.org 

Recently, April 20, 2025

Angelina caught a cold, so the past week has been largely laying low and sleeping 9+ hours a night trying not to catch it myself. Not the worst life.


Elevating this to top fish recipe: Rockfish, Garlic, Shallots, Tomatoes & and a lotta Herbs.


Using ChatGPT’s Web Search is ok. “Find me articles, marketing posts, and conference talks about [something]”. I have to follow up several times slightly differently (“anything else? What about lightning talks?”) and copy resulting links into a separate doc to organize to have something approaching comprehensive…. But pretty good and better than what I can get out of either Kagi or Google. I ignore the summaries and chatty…

AkitaOnRails.com 

Entendendo o Básico de ComfyUI pra gerar imagens com I.A.

No post anterior expliquei meu projetinho de como subir ComfyUI pré-configurado e pré-carregado automaticamente usando Docker Compose. Assumindo que você já tem tudo de pé, agora é entender essa desgraça do ComfyUI um pouco.

Eu também não sou nenhum especialista, mas achei legal explicar alguns conceitos que muitos ignoram.

Modelos Pré-Treinados

Todo GPT da vida, ou Stable Diffusion ou outros carregam um banco de dados vetorial na memória da GPU, na VRAM, pra processar. São modelos GRANDES, chamados de 7B, 70B, 100B, etc. "B" de "Bilhões de Parâmetros". Parâmetros não tem definição usável fora da matemática, são simples números. Esses números representam "alguma coisa" dentro milhões de…

Hotwire Weekly 

Week 16 - Introducing Herb, JSX over the Wire, and more!

Hotwire Weekly Logo

Welcome to Hotwire Weekly!

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


📚 Articles, Tutorials, and Videos

Introducing Herb: A new HTML-Aware ERB Parser for smarter developer tooling - Marco Roth published a new blog post announcing Herb, a new HTML-Aware ERB Parser for smarter developer tooling. This release opens a lot of doors for tooling developers to build more accurate developer tooling, including more accurate tooling for Hotwire.

HTML Gardening with Herb - Philip Poots wrote two articles - "HTML Gardening with Herb" and "HTML Parsley with Herb" - looking into the details of the Herb Syntax Tree and talks about the possibilities and use cases this parser could…

Slides: Empowering Developers with HTML-Aware ERB Tooling - Marco Roth published…

AkitaOnRails.com 

Gerando Imagens com I.A - até estilo Ghibli 😂 - com Docker e CUDA

Este tema vai ser dividido em dois posts. Neste é só técnico de como fazer rodar, no outro vou explicar o que diabos é um ComfyUI e mais ou menos como usar.

Mais de ano atrás, quando fiz meus últimos videos sobre I.A. e nos podcasts eu sempre falava que rodava tudo na minha máquina. Mas nunca detahei como. Então hoje consertei isso com vários posts de blog e projetinhos no GitHub com Dockerfiles pra você mesmo rodar na sua própria máquina, sem configurar nada difícil.

Finalmente fiz um Dockerfile pra ComfyUI, que é a melhor interface gráfica pra edição de workflows de geração de imagens. Se você já trabalhou com Davinci Resolve Fusion ou Blender Geometry Nodes da vida, workflows são…

justin․searls․co - Digest 

🎙️ Breaking Change podcast v35 - GPT Casserole

Direct link to podcast audio file

Your favorite podcast about nothing continues to find things to talk about.

Whatever you do, DO NOT e-mail me at podcast@searls.co or else I will read it on air and tell everyone how smart you sound and how good you look.

Video of this edition of the show is up on YouTube.

Links to follow:

Rails Designer 

JavaScript for Rails Developers is out now

Ruby is Red, JavaScript is yellow,

Two languages every Rails dev should know.

JavaScript for Rails Developers in orange glow,

The book that makes your full-stack skills grow.


I am super excited (and having a bad case of impostor syndrome 😬) to finally announce that JavaScript for Rails Developers is out now!

Get your copy right here: javascriptforrails.com.

If you have pre-ordered, you should have received an email with the download (if not, let me know).

og-image.jpg

It is a short and focused book at ~31,000 words (~7 hours of reading!). So a great way to spend your time this long-weekend. 🤓 It will help you become more comfortable writing JavaScript (and understand that of others).

“Fi…

AkitaOnRails.com 

Gerando Videos de até 2 min a partir de uma Foto com I.A.

Fácil o melhor canal de tutoriais de ferramentas open source pra I.A. é o Aitrepreneur. E nesse link ele apresenta uma nova ferramenta chamada FramePack, que usa o famoso modelo HunyuanVideo da Tencent pra pegar uma única imagem, uma foto, e conseguir gerar videos de excelente qualidade de até 2 minutos de duração. É realmente impressionante! Assistam o video, mas eis aqui embaixo um video gerado de 10 segundos de uma foto que eu tirei de uma das action figures da minha coleção.

Your browser does not support the video tag. [Direct Link](https://akitaonrails-videos.s3.us-east-2.amazonaws.com/link-animado.mp4)

Já que estava no embalo de empacotar esse tipo de…

justin․searls․co - Digest 

📺 Putting GitHub Copilot's GPT 4.1 Agent to the Test!

As an angry old man, I'm always eager to shit on whatever "the kids" are excited about, and this month that's been the phrase "vibe coding". But today I was feeling a vibe myself, and decided to delay recording of v35 of Breaking Change and just do my first-ever vibe coding session on camera instead.

The only rule: AI only. I didn't touch a line of code in the editor window. That's right, after over 2 years of using GitHub Copilot, I got to be copilot for once. 😎

Stuff you'll learn in this 90-minute video:

  • How Japanese real estate listings work
  • That a "mansion" in Japan is anything BUT a house
  • How well GitHub Copilot's new agent mode performs with GPT 4.1
  • How amazed I am by a computer…
AkitaOnRails.com 

Aumentando Resolução de Anime velho pra 4K com I.A.

Mais de um ano atrás eu estava brincando com ErsGAN, redes adversariais generativas pra tarefa de fazer "upscaling" (aumentar resolução) de arquivos de animes velhos que eu tenho.

Pra quem coleciona, o problema é que muito anime dos anos 90 pra trás nunca saíram e nem nunca vão sair em Blu-Ray (1080p) nem UHD (4K). Só os mais famosos recebem tratamento de "remaster" (pegar as fitas master originais e recapturar em mais resolução). Então muito anime velho está preso na era de DVD (480p) ou VHS (480i).

Nem todo anime velho dá pra aumentar resolução, pode ficar "lavado" demais. Quem baixa torrent já deve ter visto upscalings mal feitos. Mas eu queria poder testar isso eu mesmo, na minha…

AkitaOnRails.com 

Colorindo Imagens Preto e Branco com I.A.

Minha namorada me deu um desafio hoje: ela tinha fotos preto e branco antigas e queria saber se eu conseguia colorizar elas. Se sair procurando na Web esbarra em alguns sites pra isso, como esse: Palette. Mas é pago, não é barato e acho que ele não consegue uma coisa que ela queria: usar uma outra imagem colorida como referência pra tirar as cores em vez de tentar colorizar por chute do modelo.

Saí fuçando GitHub e tem uma página Awesome Image Colorization com vários papers de pesquisa. Muito útil pra quem for pesquisador mas totalmente inútil pra mim que não vou fazer um do zero kkkk. Tinha links pra alguns projetos como ChromaGAN, mas que está descontinuado faz uns 5 anos. E vários…

Ruby on Rails 

Improved leap year counting performance and more!

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

Action Cable: Allow setting nil as subscription connection identifier for Redis
If you use Google Cloud Memorystore or another platform that blocks the command CLIENT SETNAME in Redis, previously you needed to overwrite the Redis connection factory. With this change, you can set the id of the connection to nil in the configuration.

Improve leap years counting performance in distance_of_time_in_words
Before this change, the distance_of_time_in_words method could’ve lead to a denial of service if the given from_time and to_time arguments are far apart. This pull request replaced the concerning code with a constant…

Allow to configure maximum cache key sizes
This pull request adds the possibility to configure the…

AkitaOnRails.com 

Configurando meu NAS Synology com NFS no Linux

3 posts no mesmo dia, mas é que tirei o dia pra resolver meus problemas de Linux hoje, então segue mais uma anotação pra mim mesmo do futuro.

Todos que me acompanham, em particular no Instagram, sabem da minha saga com NAS. Em particular meu novo Synology DS1821+ com mais de 100TB (4 HDs de 12TB e 4 HDs de 20TB e já tenho 4 outros HDs de 20TB pra atualizar no futuro quando precisar). Uso pra muita coisa, em particular meu Netflix Pessoal que expliquei nesse outro post como eu configurei com Docker.

Synology DSM

Nos destaques e post sobre isso no Insta já discuti detalhes desse NAS mas resumindo:

  • prefiro Synology porque no fundo ele é um Linux com filesystem BTRFS (que eu gosto), que é quase tão…
Ruby News 

Ruby 3.5.0 preview1 Released

We are pleased to announce the release of Ruby 3.5.0-preview1. Ruby 3.5 updates its Unicode version to 15.1.0, and so on.

Language changes

  • *nil no longer calls nil.to_a, similar to how **nil does not call nil.to_hash. [Feature #21047]

Core classes updates

Note: We’re only listing notable updates of Core class.

  • Binding

    • Binding#local_variables does no longer include numbered parameters. Also, Binding#local_variable_get and Binding#local_variable_set reject to handle numbered parameters. [Bug #21049]
  • IO

    • IO.select accepts +Float::INFINITY+ as a timeout argument. [Feature #20610]
  • String

    • Update Unicode to Version…

Standard Library updates

Note: We’re only listing notable updates of Standard librarires.

  • ostruct 0.6.1
  • pstore 0.2.0
  • benchmark 0.4.0
  • logger 1.7.0
  • rdoc 6.13.1
  • win32ole 1.9.2
  • irb 1.15.2
  • reline 0.6.1
  • readline 0.0.4
  • fid…

Compatibility issues

Note: Excluding feature bug fixes.

Standard library compatibility issues

C…

AkitaOnRails.com 

NVIDIA e Wayland - Problemas pra PCI Passthrough em VMs

Mais um artigo que é mais pra eu não me esquecer e servir de anotação pra mim.

Em Fevereiro de 2023 eu fiz um longo video sobre como eu configurei Windows pra rodar emulado em VM de QEMU/Libvirt e conseguindo passar minha 2a GPU, que é a RTX 4090 pra dentro da VM, possibilitando rodar jogos pesados mesmo emulando o Windows. Se não assistiu, está neste link.

Em resumo, eu tenho uma máquina parruda, um Ryzen 9 7950X3D com 96GB de RAM. Essa CPU tem uma iGPU, uma GPU integrada fraquinha da AMD. Fraquinha mas mais do que suficiente pra rodar GNOME em dois monitores, com suporte a HDR e em 4K sem engasgar nem nada. Pra uso do dia a dia que é mais abrir navegador, é mais que suficiente.

Essa GPU…

AkitaOnRails.com 

Configuração da BIOS do meu PC - X670E Aorus Xtreme

Esta é uma anotação pra mim mesmo, pra eu não esquecer e talvez ajude alguém.

Eu sei que toda placa-mãe vem pré-configurada em "defaults" seguros e conservadores, o mais estável e não o mais performático. Então se não entrar na BIOS pra mexer, vai estar deixando performance na mesa.

Eu tenho uma CPU AMD Ryzen 9 7950X3D. O processador é um pacote com um pacote que funciona do dois "dies", não sei se é "chip" um jeito de visualizar. Cada um deles tem 8 cores, totalizando os 16 cores e cada core com 2 threads, então 32 threads possíveis em paralelo.

Mas tem uma diferença, cada die tem caches L3 diferentes. Um dos dies tem só 32MB e o outro tem 96MB, então programas mais pesados se beneficiam…

Awesome Ruby Newsletter 

💎 Issue 465 - Kotlin, Swift, and Ruby losing popularity

The Rails Tech Debt Blog 

Setting Up Rails with Dev Containers

Having reproducible development environments is one of the best ways to guarantee ease of application setup and code sharing in teams. Dev containers are a way to achieve this.

In this article we’ll try to give you a small introduction to what dev containers are at their core and provide a minimal example on how to set up a Rails application to use dev containers.

For new applications using Rails 8+, the app can be generated for you with a minimal setup. For detailed instructions, you can check out their official guide on this, so our guide won’t be covering the case of new rails apps. We’re more interested in tackling the problem of when you already have an application that has been…

avdi.codes 

How to Understand a New Codebase Quickly

In the course of my career, I’ve jumped in headfirst to dozens of projects. There was a period of time when people would hire me for 2 hour slots, and in that time I would have to learn enough about their project and their code to not just understand it, but offer useful insights. And as a consultant, I’ve often needed to quickly come up to speed and be able to make useful changes to a codebase within days.

What not to do

Here’s what I can tell you about what not to do:

Don’t start with code reading. You can get a lot of goofy unvalidated ideas about a codebase when you just start reading code. Usually you’ll miss the most important files, which are in a subdirectory of lib, in a…

Rails Designer 

JavaScript for Rails Developers is out now

Ruby is Red, JavaScript is yellow,

Two languages every Rails dev should know.

JavaScript for Rails Developers in orange glow,

The book that makes your full-stack skills grow.


I am super excited (and having a bad case of impostor syndrome 😬) to finally announce that JavaScript for Rails Developers is out now!

Get your copy right here: javascriptforrails.com.

If you have pre-ordered, you should have received an email with the download (if not, let me know).

og-image.jpg

It is a short and focused book at ~31,000 words (~7 hours of reading!). So a great way to spend your time this long-weekend. 🤓 It will help you become more comfortable writing JavaScript (and understand that of others).

“Fi…

SINAPTIA 

Smart augmentation: it’s not always about scaling the team

One of our core services is Staff Augmentation. Potential clients come to us with multiple reasons to scale their teams:

  • to increase their productivity
  • to meet tight deadlines
  • to add experienced devs to their team
  • to diagnose/advise about performance issues

The story I’m about to tell has a bit of everything.

The initial picture

Last year we were approached by a well-established company in the printed advertisement industry. They have a 10-year-old rails application that serves as the foundation for their business: they use it as a back-office for admin tasks, as a hub for their franchisees to collect information, and even assemble and design the printed materials.

They came…

Planet Argon Blog 

Rails Connections - Tropical on Rails 2025 Highlights

Rails Connections -  Tropical on Rails 2025 Highlights

Rails developer Jaison Coelho shares his Tropical on Rails 2025 highlights, including real-world Rails insights, Hotwire tips, and the power of community.

Continue Reading

RubyMine : Intelligent Ruby and Rails IDE | The JetBrains Blog 

RubyMine 2025.1: Major AI Assistant Upgrade, Cloud-Based Code Completion for RBS, More Ruby 3.4 Support, Kamal Schema Updates, Enhanced RemDev, and More

RubyMine 2025.1 introduces a massively upgraded AI Assistant (code completion for RBS, offline mode, more models available, and other features), support for the latest Kamal version, debugging for multi-module projects, and significantly improved remote development.

Below is a brief overview of the most notable features. For a detailed description of this update, please visit our What’s New page.

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

AI Assistant

The new RubyMine release comes with all JetBrains AI features accessible for free, with unlimited use for some, such as unlimited code completion and local model support, and limited credit-based…

Write Software, Well 

Fix N+1 Queries Without Eager Loading Using SQL Subqueries

I’ll start with a confession: I’m still quite new to the world of performance analysis and optimization.

Monitoring how Rails apps behave in the real world, especially when it comes to database queries and SQL performance is something I’ve only recently started paying attention to after a deep dive on a recent client project, and I’ve been really enjoying it so far. But it’s a rabbit hole I’ve just begun to explore, and the deeper I go, the more I realize how much I don’t know.

If you spot any gaps in my understanding or obvious mistakes in how I’ve profiled or interpreted the data, I’d really appreciate your feedback. I’m sharing this as someone who’s learning in public, hoping to get…
Fix N+1 Queries Without Eager Loading Using SQL Subqueries

Fetching a single record from a has_many association is a…

Ruby Magic by AppSignal 

Pre-build a Secure Authentication Layer with Authentication Zero for Ruby on Rails

Authentication is a critical element of any web application. The Ruby on Rails ecosystem has no shortage of solutions for this topic, as no authentication layer has been backed into the framework yet.

Devise is a crowd favorite. Although it has ended up as the de-facto standard and sports many built-in features and great plugins (such as integrations with NoSQL databases, encryption, roles, and UID support), it works as a separate entity from your application.

Some have devised a different solution: a configurable generator that equips your app with an authentication scaffold. We'll dive into that option in this post.

But first, let's examine the uses of Authentication Zero.

The Purpose of…

Josh Software 

Speed Up Queries with Nested Scopes in Rails

In my recent project, I was working with scopes across various models, and I needed to apply a nested scope for more advanced querying. To achieve this with performant query I used different concepts, this blog is about the same!! Lets revise the basics!Firstly, lets start with what is query optimisation ? Optimising queries is key … Continue reading Speed Up Queries with Nested Scopes in Rails
Tejas' Blog 

Adding IP restriction to Rack app for specific accounts

Exploring an interesting requirement of adding IP restrictions on a Rails app.

Everyday Rails 

Old Ruby and Rails on new hardware with dev containers

How do you get an ancient Rails application running on newer hardware? Dev containers to the rescue!
Gusto Engineering - Medium 

The Engineering Behind Payroll Spreadsheet

There’s some popular advice in software engineering that rewriting the core of your product from scratch is a ‘thing you should never do’. This is a story about ignoring that advice and getting away with it.

This past summer, Gusto announced the Payroll Spreadsheet tool, a new way for customers to run payroll. We introduced an easy, intuitive spreadsheet that allows you to see all of your payroll data in one screen while also reducing the steps needed to run payroll.

What wasn’t announced was that the Payroll Spreadsheet was a complete rewrite of Gusto’s Run Payroll flow. This represented a huge amount of work, eliminating over ten years of tech debt along the way in the very core of Gusto’s…

John Nunemaker 

Rails Business Podcast

I had a nice chat with Brendan and Ryan on the Rails Business podcast a few weeks ago and now its live! Search for "Rails Business" in your favorite podcast app or you can listen at the following link:

John Nunemaker - Rails Business
In this episode, Brendan and Ryan welcome John Nunemaker.  John is a prominent figure in the Ruby community and, shares his journey into Ruby on Rails, his career evolution, and his unique approach to managing multiple projects simultaneously…

If you want the tldr, we cover:

  • my journey into Ruby and Rails
  • my current projects and Ruby usage
  • the role of AI in my dev process
  • how to balance multiple projects
  • time tracking and productivity
  • consistency across…
Judoscale Dev Blog 

Choosing The Right Python Task Queue

Python task queues are an essential piece of building scalable Python apps. Whether you’re using Django, Flask, FastAPI, or something else, task queues are an essential way to offload work that could block web requests.

Choosing a task queue isn’t trival. In this article, I’ll dig into task queues, contrasting some of the best options. I’ll focus primarily on Celery and RQ, but l also touch on some lesser-known alternatives. First, let’s dig into what a task queue actually is.

Why would a Python app need a task queue?

Web apps often have tasks that either don’t come as a result of an HTTP request or take too long to handle before responding. For example, might need to generate…

Alchemists: Articles 

Git Rebase Squash

Cover
Git Rebase Squash

Squashing commits is one of the most misused features of Git Rebase because it’s the root of so many bad practices in Git. Doesn’t help that GitHub promotes these bad practices by default. Here’s a few reasons why squashing should be used with great care (and this is by no means exhaustive):

  • Degrades the readability of your Git history.

  • Reduces the searchability of your Git logs via git log --grep and/or git log -S.

  • Turns git bisect and git revert into a total nightmare when unwinding entangled changes.

You might be thinking that you should never squash and you’d be partially correct. The truth is that squashing commits should be used sparingly and, if…

lucas.dohmen.io 

Rhythm of the Linux Desktop

With the release of Gnome 48, I asked myself the question: When will it be available in which distro? And this led me into a tiny rabbit hole that revealed a certain rhythm in the way desktop distros are released that I wanted to share here.

GNOME has a pretty fixed release schedule, with a new version every March and September1. The two most used desktop distros (citation needed, but if you include their downstreams, I would say this is true) are Ubuntu and Fedora. Ubuntu has GNOME as its default desktop environment. In Fedora, GNOME has the flagship status (called “workstation”). With the release of Fedora 42, KDE will have the same status. Both distros decided to match their release…

The Bike Shed 

459: Paper Data Structures with Sally Hall

Joël and thoughtbot colleague Sally Hall set out to find an answer to the question, what exactly are the differences between paper data structures and digitals ones?

They compare the different ways humans store and access data, from rolodexs to the dewey decimal system, browsing a system vs searching it, and how the digital age has changed the way we assess and look at data stored in those systems.

Change your organisational workflow and get yourself a Rolodex!

Find out more about the Dewey Decimal System.

Your guest this week has been [Sally Hall](linkedin.com/in/sallyannahall), and your host for this episode has been thoughtbot’s own Joël Quenneville.

If you would like…

Island94.org 

Recently, April 14, 2025

Last week I tried out a lot of coworking spaces: Canopy, Tandem, Temescal Works. We’re trying to find a space between Oakland and SF with nice outdoor walks.


I’m having a great time being a technical cofounder to my (everything else!) cofounder. It’s fun explaining what I am doing. And we have fun shouting “Monolith!” and “Skateboard [MVP]” all day long.

An example of an explanation I gave: one of our client advocate tools is a Twilio-powered Voice Conference Bridge where we can dial in any number of participants which helps shadow and assist our clients in their welfare application journey. We wanted to add DTMF tones for dialing extensions and navigating IVR…

justin․searls․co - Digest 

🔗 The Best Programmers

Matthias Endler wrote up a list of traits he sees in great developers, which I read because Jerod linked to it in Changelog's newsletter. In his blurb, Jerod called back to the conversation he had with yours truly on a recent podcast episode, which is also the first thing I thought of when I read the post.

As lists go, these traits are all great things to look for in developers, even if a lot of it is advice you've seen repeated countless times before. This one on bugs stands out:

Most developers blame the software, other people, their dog, or the weather for flaky, seemingly “random” bugs.

The best devs don’t.

No matter how erratic or mischievous the behavior of a computer seems, there is…

Jake Zimmerman 

Typing instance variables in mixins

Sorbet does not (yet?) have "abstract instance variables" for use inside abstract modules, but abstract methods are a close approximation.
JRuby.org News 

JRuby 10.0.0.0 Released

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

JRuby 10 is finally here! We’ve jumped to Ruby 3.4 compatibility and Java 21 minimum to bring you the best Ruby on JVM experience possible. We are confident this is the most compatible and stable major release we’ve ever had.

Our blog post on JRuby 10 provides a high-level overview of the major changes, with some additional details below. We will update the blog post with additional detailed articles over the coming weeks: https://blog.jruby.org/2025/04/jruby-10-part-1-whats-new

As with any “dot zero” release, we are planning a series…

Mike Perham 

Sidekiq 8.0: Profiling

Sidekiq is the most popular background job framework for Ruby applications and over the last 13 years, it has reached maturity in its feature set. It has filled out much of its original design so adding a major new feature is a comparatively rare event these days.

For years I’ve wanted Ruby to support thread-safe profiling. Historically Ruby’s profiling APIs were process-global. Data is collected for everything running in the process, making job profiling within a running Sidekiq process noisy and harder to read than ideal.

Short Ruby Newsletter 

Short Ruby Newsletter - edition 131

The one where Ruby 3.3.8 is released, where Charles Nutter shares about what's new in JRuby 10 and where we find out that Ex-CEO and Buildkite’s cofounder started streaming Ruby coding on Twitch
Ruby News 

Ruby 3.4.3 Released

Ruby 3.4.3 has been released.

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

Release Schedule

We intend to release the latest stable Ruby version (currently Ruby 3.4) every 2 months. Ruby 3.4.4 will be released in June, 3.4.5 in August, 3.4.6 in October, and 3.4.7 in December.

If there’s any change that affects a considerable amount of people, those versions may be released earlier than expected.

Download

Avo Blog 

Adding Structured Data to a Rails application

Learn how to add Structured Data to a Rails application and improve your SEO results without much effort
justin․searls․co - Digest 

📸 How to make incredible HomeKit backgrounds with ChatGPT

Okay, so there's a great meme going around the /r/HomeKit subreddit right now, where folks are using ChatGPT to generate illustrations for each of their rooms in the Home app. Finally got around to joining in the fun.

Here's how I did it:

  1. Take a vertical photo of each of the rooms in your home that you've configured in HomeKit
  2. Start a conversation with GPT-4o and describe that you want vertical (9:16) illustrations for the Home app based on your photos, and any style preferences (I'll share my prompt below)
  3. One at a time, feed it your photos, and offer feedback until it gets it right
  4. Save each photo to a new album in Photos so you can reference it from the…
Hotwire Weekly 

Week 15 - CodeMirror with ImportMaps, Resize Observer with Stimulus, and more!

Hotwire Weekly Logo

Welcome to Hotwire Weekly!

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

RubyKaigi 2025 takes place in Matsuyama, Japan next week and there are a few Hotwire-adjecent talks:


📚 Articles, Tutorials, and Videos

Rails 8 Assets: Adding a bundled package alongside vanilla setup - Radan Skorić demonstrates how to integrate complex npm packages requiring bundling, like Tom Select, into a Rails 8 application using the default Propshaft + importmap-rails setup. The article also covers handling…

RubyGems Blog 

3.6.8 Released

RubyGems 3.6.8 includes enhancements.

To update to the latest RubyGems you can run:

gem update --system

To install RubyGems by hand see the Download RubyGems page.

## Enhancements:

  • Installs bundler 2.6.8 as a default gem.

SHA256 Checksums:

  • rubygems-3.6.8.tgz
    da5340b42ba3ddc5ede4a6b948ffa5b409d48cb119e2937e27e4c0b13bf9c390
  • rubygems-3.6.8.zip
    4de1a7664390de3d4b35e3180671d664081b2534467c128ac169ef1437be61c4
  • rubygems-update-3.6.8.gem
    9fce1aa05ac09f5945cf1bfb00b6f6c5a468b5296226151e639f6e22f1efef50
Ruby on Rails 

Refactoring Active Record Signed ID verifiers

Hi, it’s zzak. Hopefully everyone got their Rails World CFPs in on time! Let’s explore this week’s changes in the Rails codebase.

Allow allocated Active Records to lookup associations
Previously, the association cache isn’t setup on allocated record objects, so association lookups will crash. Test frameworks like mocha use allocate to check for stubbable instance methods, which can trigger an association lookup.

ActiveRecord Signed ID with global Rails.application.message_verifiers
This change ensures a unified configuration for all message verifiers, making it easier to rotate secrets and upgrade signing algorithms. See message_verifiers for more details.

Allow enabling unencrypted…

justin․searls․co - Digest 

📸 First impressions of GitHub Copilot's Agent mode

tl;dr it works. You should try it.

I finally got around to trying the new Agent functionality in GitHub Copilot.

You gotta really know when to ask an LLM for help, though. (I wrote last year how I decide whether to reach for an AI assistant, if you're interested.)

My experience and recent research both indicate that AI works best for creating new stuff from scratch, especially when that code is perfunctory and typical and conventional. That's the reason there's such a divide between people who've had terrific experiences with "vibe coding" and others—like me—for whom all the hours fucking with AI to make it do my job for me have mostly been a waste of my time. Every other time…

Weelkly Article – Ruby Stack News 

🚀 Finally! The Alpha Version of TrixGenius Has Arrived — Supercharge Your Trix Editing Experience with AI! 🧠

April 10, 2025 After many late-night commits, experiments, and way too much mate ☕ — I’m incredibly excited to introduce the alpha release of a gem I’ve been crafting with love: TrixGenius — A smart extension for Trix + ActionText + Hotwire. 🚀 Supercharge Your Trix Editor with DeepSeek AI in Ruby on Rails Discover … Continue reading 🚀 Finally! The Alpha Version of TrixGenius Has Arrived — Supercharge Your Trix Editing Experience with AI! 🧠

avdi.codes 

Alternatives to Alexa/Google/Siri?

Are there any viable alternatives to Hey Google / Siri / Alexa for coordinated home voice assistant? Having Google Home devices dotted around the house has been a big help to this solo dad – especially being able to say “Hey Google, set a 10 minute timer” and “Hey Google, add onions to the grocery list” while my hands are full. And “Hey Google, play some music” has been a nontrivial boost to my mental health.

But the way things are going I’m getting nervous about having Big Evil around the house; and anyway Google’s assistant ecosystem is practically abandonware at this point.

I don’t actually care that much about “home automation”; although I do like being able to turn off the…

Remote Ruby 

More Listener Questions

This episode of Remote Ruby starts with Andrew and Chris discussing how busy they are this month and how they're managing new feature releases, travel, and bulk recording episodes. They continue answering listener questions from Episode 300, covering key improvements they wish to see in Rails, best practices for hybrid remote work, and methods to inspire teams about Object-Oriented Programming (OOP) and Test-Driven Development (TDD). They share advice on attending Ruby conferences, including how to justify the cost to employers and the immense networking benefits. Lastly, they tackle how freshers can secure remote Ruby jobs and provide tips on writing blog posts to enhance learning and…

Tim Riley 

Recently on Hanami, April 2025: One hojillion emails

Let me catch you up on everything I’ve been working on in Hanami.

Over the first three months of this year, I’ve been pushing in three main areas:

  • Building a new unified website for Hanami, Dry RB and ROM

  • Developing new unified branding

  • Preparing for our sponsorship drive

Things have gone well on all fronts!

I built the site earlier this year. It’s functionally complete, though some docs and guides need still need to be ported over. The code is at hanami/site, and you can even click around a live preview (warning: no styles for now!). The fun part: our new site is a Hanami app! It was a real treat for me to be able to spend some time using Hanami when I put it together. There’s quite…

Giant Robots Smashing Into Other Giant Robots 

Ruby Strings: DnD Alignment chart

You’re working on a project with a Ruby style guide that says:

Prefer single quoted strings. Reserve double quoted strings for situations when you need interpolation.

You come across a situation where you need to represent the contracted English word “doesn’t” which contains a single quote. How do you resolve the conundrum? Ruby has lots of ways of handling this. Here are a variety of solutions on a DnD Alignment chart.

I’ve interpreted the Lawful <-> Chaotic axis as strictly following the guidelines versus creative or over-engineered solutions. I’ve interpreted the Good <-> Evil axis as emphasizing readability vs actively making code more confusing. Lawful Neutral Chaotic Good
Posts on Kevin Murphy 

Speaking at RailsConf 2025

RailsConf 2025 🔗

I’m honored to be speaking at the final RailsConf this July in Philadelphia.I’ll be speaking on Thursday, July 10 at 10:15am on the Main Stage in theLiberty room.

Kevin lives near Boston, Massachusetts, US where he is a Software Developer at Pubmark. He's attended 7 RailsConfs in some capacity. He wishes that number was higher.

How 10 years of RailsConfs can inform the next 10 years of your career 🔗

RailsConf has played an important role in my professional and personal life. I’ve learned about technology in ways I wouldn’t have otherwise at RailsConf. I’ve learned about myself in ways I wouldn’t have otherwise thanks to RailsConf. I’ve met people that changed the course of my career thanks to RailsConf. I’ve met others who have become dear friends thanks to RailsConf. I’ve done things I’ve never done before thanks to RailsConf.

The same may…

Awesome Ruby Newsletter 

💎 Issue 464 - Shopify CEO says no new hires without proof AI can’t do the job

Planet Argon Blog 

Simple Network Diagrams: Communicating Your App’s Structure Clearly

Simple Network Diagrams: Communicating Your App’s Structure Clearly

Learn the simplest, most effective way to describe the elements of your application using simple network diagrams.

Continue Reading

Ruby Weekly 

JRuby 10 begins to appear

#​746 — April 10, 2025

Read on the Web

🐣 We're taking next week off due to the Easter break and will be back in your inbox on Thursday, April 24. Catch you then!
__
Peter Cooper, your editor

Ruby Weekly

JRuby 10: 'Our Most Important Release Ever' — I think it’s easy to argue the JVM-based JRuby is the second most important Ruby implementation behind CRuby, so it’s exciting to see it take a huge step forward with Ruby 3.4 compatibility, Java 21 support, and more optimizations enabled by default. v10 is ready to use now, though it’s not formally released till next week. Charles does a good job of explaining both the…

Charles Oliver Nutter

RoR in 2025: Outdated or…

Rails Designer 

Console Utilities You (Didn’t) Know

This article was taken, but adapted for the web, from the book JavaScript for Rails Developers that was recently released.


In this article I am going beyond console/log, like various other levels (warn and error), console.trace and console.group. What? 🤯

You most likely know console.log already. console is a global variable, and all global variables are properties of the ⁠window object. This means ⁠window.console.log and ⁠console.log are effectively the same thing. It is still a great debugging tool today, but it has quite a few more tricks up its sleeve than just printing some text.

Before exploring those, let’s add a little helper to make us, lazy developers, a little bit more…

Radan Skorić's website 

Rails 8 Assets: Adding a bundled package alongside vanilla setup

This post is part of a mini series on Rails 8 asset pipeline. Each builds on the previous one: Break down of how Propshaft and importmap-rails work together Deep dive into Propshaft Example: Combining importmaps Example: Adding a bundled package alongside vanilla setup Propshaft + importmap-rails works great but can’t cover all possible cases. When you start reaching for...
The JRuby Blog 

JRuby 10, Part 1: What's New

I am very excited to introduce you to JRuby 10, our biggest leap forward since “JRuby 9000” was released almost a decade ago.

With up-to-date Ruby compatibility, support for modern JVM features, and a big cleanup of internal code and external APIs, we believe this is our most important release ever. This article will provide a first look at these improvements and help you get started on your JRuby 10 journey.

Moving Forward

With such a long time since our last major release, we decided JRuby 10 had to make some big moves. As a result, this is the most up-to-date and powerful JRuby release we’ve ever put together. Here’s a few of the major upgrades you’ll see when you move to JRuby 10.

C…

Weelkly Article – Ruby Stack News 

🔧 Making Ruby on Rails Integration Easier with trix-genius Generators

April 9, 2025 I recently added a Rails Generator to the trix-genius gem — a small improvement that aims to make integration smoother and faster for developers using Trix with Rails and Stimulus. 👉 TL;DR: rails generate trix_genius:install now does the setup for you. 💬 Need a Custom Ruby Gem for Your App? If you're … Continue reading 🔧 Making Ruby on Rails Integration Easier with trix-genius Generators

Charles Oliver Nutter 

JRuby 10, Part 1: What’s New

I am very excited to introduce you to JRuby 10, our biggest leap forward since “JRuby 9000” was released almost a decade ago.

With up-to-date Ruby compatibility, support for modern JVM features, and a big cleanup of internal code and external APIs, we believe this is our most important release ever. This article will provide a first look at these improvements and help you get started on your JRuby 10 journey.

Moving Forward

With such a long time since our last major release, we decided JRuby 10 had to make some big moves. As a result, this is the most up-to-date and powerful JRuby release we’ve ever put together. Here’s a few of the major upgrades you’ll see when you move to JRuby 10.

C…

The Ruby on Rails Podcast 

Episode 534: Good Enough with James Adam and Cade Truitt

Good Enough is a company that makes Rails apps. They have quite a few products and all of them are built on Rails. Today James and Cade join the show to tell us about building a small software company with Rails.

Show Notes

Sponsors
Hosting for The Ruby on Rails Podcast is provided by Fireside.fm. If you want to start a podcast and are looking for hosting, visit fireside.fm/rails to get started.

Alright, let’s talk about deploying code without having a full-blown panic attack. You ever push something live and immediately regret it? Like, ‘Oh no, I just nuked the homepage’? Well, guess what—Flipper’s got your back. Ship your code…

Ruby News 

Ruby 3.3.8 Released

Ruby 3.3.8 has been released.

Please see the GitHub releases for further details.

Download

a-chacon 

Automatic API Documentation for Rails with OasRails and AI: Fast and Easy

A few days ago, I released a new version of OasRails, and along with that, I moved the documentation from the README to an mdbook (Great tool!) where I also took the opportunity to convert it to the llms.txt format.

/llms.txt is defined as:

A proposal to standardize using an /llms.txt file to provide information to help LLMs use a website at inference time.

With this, I thought it would be interesting to provide more context to our editors so that the process of documenting an API is quick and doesn’t require much effort, plus it helps avoid typos. And let’s be honest, nobody likes documenting, hehe. So, it’s a good task to delegate to these language models.

And what is…

Evil Martians 

Let there be docs! Generating an OpenAPI schema across the Rails stack

Authors: Andrey Novikov, Backend Engineer, and Travis Turner, Tech EditorTopics: Backend, Rails, Ruby

When can an implementation-first approach to documentation be preferred over documentation-first? Find the answer, and see how to do it with an existing application by leveraging some tools in some unexpected ways (including Martian ones!) Plus, AI-assisted migration tips.

When can an implementation-first approach to documentation be preferred over documentation-first? Then, read how to do it with an existing application by leveraging some tools in some unexpected ways (including Martian ones!) Plus, AI-assisted migration tips.

Heroku 

Migrating Your Ruby Apps to the Latest Stack

Do you run Rails or pure Ruby applications on Heroku? If so, it's important to be aware of upcoming end-of-life (EOL) dates for both your stack and your Ruby version. The Heroku-20 stack, built on Ubuntu 20.04 LTS, will reach EOL for standard support in April 2025. Ruby 2.7 has already passed its EOL, meaning it's no longer receiving critical security updates. Continuing to run your app with either an outdated Ruby version or an unsupported Heroku stack exposes your application to increasing security and stability risks.

In this article, we’ll cover:

What the Heroku-20 EOL means for your application. Risks of continuing with Ruby 2.7, especially in combination with…

Super Good Blog 

Solidus Permissions

Permissions ensure users can access the features they need, and are denied access to features they shouldn’t be using. They keep systems safe from any malicious or accidental actions such as data loss, or leakage to people who shouldn’t have access. Lucky for us, Solidus provides a robust, flexible system for permission management that can support the many different setups stores might require.

Permissions are important

It is important for permissions to be easy to use and manage. If they are too difficult, administrators will not require them and users will not use them, which can lead to security vulnerabilities. This is a huge liability, which we saw with Equifax in the Fall of 2017.…

The Bike Shed 

458: Learning Typescript with Aji Slater

Joël and fellow thoughtboter Aji Slater examine the unfamiliar world of Typescript and various ways of working within it’s system.

They lay out the pros and cons of Typescript over other environments such as Ruby and Elm and discuss their experience of adopting LLM partners to assist in their workflows. Using ChatGPT and Claude to verify code and trim down syntax, all while trying to appease the type checker.

Discover the little tips, tricks and bad habits they picked up along the way while working with their LLM buddies in an effort to improve efficiency.

Check out Ruby2D for all your 2D app needs!

You can connect with Aji via LinkedIn, or check out some of the topics…

Island94.org 

Recently, April 7, 2025

  • I had my last day at old job. I got locked out of all my GitHub accounts at noon on Friday. At 2pm I did a tour of a coworking space for my new job. We’re looking at several spaces between where I live (SF) and my cofounder (Oakland). Both of us are looking forward to regularly being in the same space with a big whiteboard adjacent to somehere nice to walk around outside.
  • I helped publish the monthly April Newsletter for the Alliance of Civic Technologists. I’ve stepped back mostly to focus on website tasks, though I’m proud that the comms stuff I previously pushed on (“what if we just regularly re-published stuff from the network without committing to a lot of…
Posts on Kevin Murphy 

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

Racing In The Street 🔗

This musical outro is transcendent.

Full Lyrics

She sits on the porch of her daddy’s house
But all her pretty dreams are torn
She stares off alone into the night
With the eyes of one who hates for just being born

Snuff 🔗

I’m not super familiar with Slipknot, but I know others are. Jim Root seemslike a really cool, down-to-Earth guitar playing person. At the time of thisperformance, that’s Jay Weinberg playing drums, son of Max, the drummer of the EStreet…

Evil Martians 

Let there be docs! Generating an OpenAPI schema across the Rails stack

Authors: Andrey Novikov, Backend Engineer, and Travis Turner, Tech EditorTopics: Backend, Rails, Ruby

When can an implementation-first approach to documentation be preferred over documentation-first? Find the answer, and see how to do it with an existing application by leveraging some tools in some unexpected ways (including Martian ones!)

avdi.codes 

Good Vibes

Not usually a fad guy but I’m pretty stoked about “vibe coding”.

A photo of a "magic wand" personal vibrator next to a laptop
Short Ruby Newsletter 

Short Ruby Newsletter - edition 130

The one where Marco Roth launched RubyEvents website and mobile app and where the Ruby and AI scene is heating up with more gems
Hi, we're Arkency 

Rails: when "nothing changed" is the best feature

Rails: when “nothing changed” is the best feature

Recently, I had a chat with a friend of mine, who used to do Rails back in the days. Since ~10 years he’s focused on mobile development. I was curious what are his observations and asked if he’s happy with his decision or maybe he actually misses web development.

He replied:

I miss doing backend, but I’m disgusted with web development. I’m too old to chase every new framework to do the same thing in every new ES flavor of JS… Jumping around npm, yarn, pnpm, bun or whatever is cool this quarter…

But then he followed:

Recently I had to implement a tiny backend app. I dusted off Rails and everything was the same. Same commands, same…

Hi, we're Arkency 

Installing Precompiled Native Gems with bundle lock --add-platform

Installing Precompiled Native Gems with bundle lock –add-platform

There’s a great chance that your Ruby app occasionally explodes during bundle install because of native extensions. There’s an even greater chance that it happens with nokogiri, ffi or some other notorious gem with C extensions. The problem gets worse when you’re working across different operating systems or upgrading Ruby versions. Let’s fix this once and for all.

My problem with native gems

As we perform a ton of Ruby and Rails upgrades across different projects at arkency, we were struck by those issues many times.

My main concern with native gems is that they create unnecessary friction in your development and…

Avo Blog 

Resize Observer API with Stimulus

Let's learn how to use the Resize Observer API together with Stimulus by building a resizable audio player
Drifting Ruby Screencasts 

Boolean vs Datetime

In this episode, we look at refactoring an existing application where it uses a boolean to determine if a post is published or unpublished. However, this feature has its limitations, so we change the functionality to work off of a datetime column instead.
Giant Robots Smashing Into Other Giant Robots 

Avoiding N+1 queries the Railsy way with strict loading

When working with Rails, one of the easiest ways to improve performance is to avoid N+1 queries as much as possible.

But what is an N+1 query? Here’s a quick example: let’s say you are rendering a list of 20 books, and you want to show author details on each line. If you don’t preload the authors, accessing book.author.favorite_ice_cream will trigger one additional query per book, making a total of 21 queries.

Strict loading is a Rails feature that allows avoiding N+1 queries without adding any extra dependencies to the project.

How does strict loading help avoid N+1 queries?

Rails lazy loads resources by default, which means that when accessing a resource that hasn’t been…

RichStone Input Output 

Thoughtful side project pivoting

Do you ever switch from one project to another spontaneously? It often happens when something new comes along, and you snag the chance to leave this thing alone that you were excited about just recently but came to view as a burden as time passed. It has a sour aftertaste of having left things undone that probably still had potential.

I think what I have here is an example of a more thoughtful pivot that is not switching to something entirely new but continuing the core of the thing and switching the theme. At least, I don't feel the aftertaste, and I imagine you could benefit from my thought process to decide for your next pivot.

I started building socialgames.cc a few months ago for the…

Hotwire Weekly 

Week 14 - Hotwire Starter Kit for Laravel, new Hotwire Native App, and more!

Hotwire Weekly Logo

Welcome to Hotwire Weekly!

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

Tropical on Rails just wrapped in São Paulo and there were a few Hotwire-adjecent talks:


📚 Articles, Tutorials, and Videos

Hotwire Starter Kit for Laravel - Tony Messias announced a Hotwire Starter Kit for Laravel and published a YouTub…

justin․searls․co - Digest 

🎙️ Breaking Change podcast v34 - Bait and Switch 2

Direct link to podcast audio file

Nothing like a peaceful Sunday morning at the end of an exhausting, historically-volatile week to pour a hot cup of coffee and spew absolutely scalding takes in all directions. If you get burned, don't say I didn't warn you. Read the message on the lid.

We've done 34 of these now and my mailbag is getting full of old e-mails that don't make sense anymore. Please email new stuff to me at podcast@searls.co and we, like civilization, will start fresh next time!

Video of this edition of the show is up on YouTube.

You can read more about things on other websites below:

Write Software, Well 

Reduce Memory Usage by Selecting Specific Columns

We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%.

- Donald Knuth
Reduce Memory Usage by Selecting Specific Columns

In this post, we're going to explore how to reduce memory used by your Rails applications by only querying the data you actually need from the database.

Early in a project, it's common (and practical) to fetch the whole records, including all the columns using Model.all or Model.where query methods. At this stage, it doesn't even matter. Most models don't have that many columns, and the data isn't large.

However, as the application grows, tables grow, new columns are added (some holding large blobs…

Everyday Rails 

Testing with RSpec book updates for April 2025

Fresh takes on all things mocking!
code.dblock.org | tech blog 

Apologizing for My Obsessiveness Over Punctuation

You may have landed here because I had just apologized for my obsessiveness over punctuation in a GitHub comment and requested changes to your pull request, or you noticed me adding periods to a sentence in the otherwise excellent document you have authored. This is not the first time, and my condition manifests itself in some interesting ways.

Consider the following, seemingly well-formed sentence.

This is what I actually see.

This must be, obviously, a you problem! How can you fix it? Add a period to this complete sentence.

Quite seriously, the gist of the issue is that I am simply not capable of reading text that is not properly punctuated. It’s not you, it’s me. Please add a…

code.dblock.org | tech blog 

Apologizing for My Punctuation OCD

You may have landed here because I had just apologized for my obsessive-compulsive disorder (OCD) over punctuation in a GitHub comment and requested changes to your pull request, or you noticed me adding periods to a sentence in the otherwise excellent document you have authored. This is not the first time, and my condition manifests itself in some interesting ways.

Consider the following, seemingly well-formed sentence.

This is what I actually see.

This must be, obviously, a you problem! How can you fix it? Add a period to this complete sentence.

Quite seriously, the gist of the issue is that I am simply not capable of reading text that is not properly punctuated. It’s not you,…

Passenger - Phusion Blog 

Passenger 6.0.27

Passenger 6.0.27

Version 6.0.27 of the Passenger application server has been released. This release removes the admin panel (Fuse), and fixes an issue where Passenger could freeze while connecting to application processes. Packages for Ubuntu 25.04 "Plucky Puffin" were also added.

Passenger 6 introduced Generic Language Support, or: the ability to support any and all arbitrary apps.

Admin Panel (Fuse) removal

Due to lack of interest the admin panel feature is being removed from Passenger to simplify the codebase.

Event Loop Blocking

Passenger 6.0.27 includes a fix for an issue where Passenger could freeze up while waiting for a connection to an application process.

This change also adds a configurable…

avdi.codes 

Reblog of Russ Olsen:

This is huge news – one of my favorite books on Ruby style, updated by two of my favorite Ruby writers.

Reblog via Russ Olsen

I’m thrilled to announce that @baweaver and I have just kicked off work on a second edition of Eloquent Ruby, to be published by our friends at @pragprog .

The idea is to keep the basic structure of the book the same while updating it to Ruby as it is used today.

While we are all excited, let me repeat
something that Brandon and I tell each other every day: This is a big project and we want to do it right. So while the second edition is on its way, it is going to take time, time measured in months.

But Eloquent Ruby, Second Edition is on its way.

Judoscale Dev Blog 

Heroku SSL Revisited (2025 Edition)

Last year we published Cloudflare + Heroku SSL / Certificates Explained, in which Jon Sully masterfully walked through exactly how SSL works when using reverse-proxy CDN like Cloudflare, and how to set it up correctly with Heroku.

Jon’s (and my) advice at the time was:

  1. Add your domain to Cloudflare, enable proxying (orange cloud).
  2. Generate an Origin Certificate for your app in Cloudflare’s dashboard.
  3. Add that origin cert to the Heroku app as “Custom SSL”.
  4. Set your Cloudflare SSL to “Full (strict)”.

This setup still—without a doubt—works great.

But something kept nagging at me. Heroku provides automatic SSL management (via Let’s Encrypt) for free, and I feel like there should…

danielabaron.me RSS Feed 

Reject Nested Attributes in Rails

Learn how to use Rails accepts_nested_attributes_for and reject_if options to create flexible forms that handle nested models with optional associations.
Ruby on Rails 

must-understand, with_default_isolation_level, Rails World CFP and more!

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

Last Week for Rails World 2025 Call for Papers
This is the last week for The CFP for Rails World 2025!

Submit your talk until April 10th.

Add must-understand directive according to RFC 9111
The must-understand directive indicates that a cache must understand the semantics of the response status code, or discard the response. This directive is enforced to be used only with no-store to ensure proper cache behavior.

class ArticlesController < ApplicationController
  def show
    @article = Article.find(params[:id])
    if @article.special_format?
      must_understand
      render status: 203 # Non-Authoritative…

Use UNLINK for RedisCacheStore in ActiveSupport
The RedisCacheStore now uses…

Remote Ruby 

Turning The Big 30-Oh

In their milestone 300th episode of Remote Ruby, Andrew and Chris celebrate six years of podcasting, reflecting on the journey since their first episode in June 2018. They discuss how the show has evolved, highlight memorable moments, and dive into listener submitted questions about Rails, Ruby, podcasting, and more. Hit that download button now! 

Links

First Remote Ruby Podcast (YouTube)

Saeloun Blog

Reddit-r/rails 

debug.rb

Ruby, Ractors, and Lock-Free Data Structures

Judoscale- Remote Ruby listener gift

Honeybadger
Honeybadger is an application health monitoring tool built by developers for developers.

BuzzSprout
Podcast Hosting Made Easy.

Disclaimer: This post contains affiliate links. If you make…
Ruby Rogues 

Why Change Feels Scary—And How to Make It Work for You - RUBY 673

In this episode, we dove into a topic that’s been on our minds — how to navigate change with purpose instead of fear. Whether it's personal transformation, career pivots, or unexpected life shifts, we talked about what it takes to stay grounded and aligned during times of transition.

We opened up about our own experiences with change — the messy middle, the doubts, the resistance — and how we’ve learned to see it as a creative force rather than something to avoid. A big takeaway? Growth doesn’t always look graceful, but it’s often where the magic happens.

One of the key points we emphasized was the importance of self-trust. It’s easy to look outside ourselves for permission or validation, but…
Ryan Bigg Blog 

Cursor-based querying with Rails

It’s a well known issue that LIMIT + OFFSET pagination in any SQL server will lead to performance problems once the value of OFFSET reaches a high enough value. This is because the database has to scan through the first [OFFSET amount] of records that match the query before it can start returning an amount of records up to the LIMIT.

This sort of addition of a LIMIT + OFFSET to a slow query is commonly also used as a stop-gap for expensive queries. Perhaps before adding this, you have a query that’s building up a long list of transactions for another business to consume, and then one of your customers has a particularly impressive day and then your database has a particularly…

Giant Robots Smashing Into Other Giant Robots 

Rails 8’s Propshaft, A Sprockets’ quiet replacement?

With the release of Rails 8, asset management in Rails got faster and simpler with the new asset pipeline, Propshaft, which is not only simpler but also more aligned with modern Rails development needs compared to its predecessor, Sprockets.

How does Propshaft compare to Sprockets, and more importantly, should you make the switch? Before we dive into the news, Propshaft, let’s recap the existing Sprocket’s features.

How Sprockets Works

Sprockets is a powerful asset pipeline that has been a core part of Rails for years. It processes and serves static assets efficiently by:

  • Preprocessing Assets: Sprockets compiles assets written in preprocessors like Sass, CoffeeScript, and…
Awesome Ruby Newsletter 

💎 Issue 463 - Your Product Should Be Shiny. Your Stack Should Be Boring.

Planet Argon Blog 

How to Demo Your Application to a New Development Team: A Helpful Guide

How to Demo Your Application to a New Development Team: A Helpful Guide

Onboarding a new dev team? Learn how to walk them through your app for a seamless transition and collaboration.

Continue Reading

Ruby Weekly 

RubyUI 1.0

#​745 — April 3, 2025

Read on the Web

Ruby Weekly

RubyUI 1.0: Reusable Copy-and-Paste Components for Rails Apps — Formerly known as PhlexUI, RubyUI is a collection of reusable Phlex-powered components you can generate or copy and paste into your apps. There’s full documentation, as well as a page for each of the 43 components on offer, covering things like badges, checkboxes, cards, sheets, and tables. GitHub repo.

RubyUI Team

How Ruby Makes Advanced CLI Options Easy — Ruby’s OptionParser standard library offers a straightforward way to work with command line options without pulling in any dependencies.

Dom Christie 

Component Partials in Rails

I presented some thoughts about Rails partials at April’s Brighton Ruby meetup.

The first half discussed various ways to render partials and collections of objects, including using to_partial_path. An example might be rendering a dynamic navigation bar where the navigation items differ depending on the user’s role, e.g. if they’re logged in, or paid, etc. We can create a plain old Ruby object with a to_partial_path method that returns the path of the partial to render. That class can include all the necessary logic, keeping the partial relatively clean:

# app/helpers/navigations_helper.rb
module NavigationsHelper
  def navigation(user)
    Navigation.new(user)
  end

  class Navigation
    
RubyGems Blog 

3.6.7 Released

RubyGems 3.6.7 includes enhancements and performance.

To update to the latest RubyGems you can run:

gem update --system

To install RubyGems by hand see the Download RubyGems page.

## Enhancements:

  • Sorting files in metadata for build reproducibility. Pull request #8569 by giacomobenedetti
  • Default to a SOURCE_DATE_EPOCH of 315619200, to simplify reproducible builds. Pull request #8568 by duckinator
  • Let gem exec raise an error in ambiguous cases. Pull request #8573 by deivid-rodriguez
  • Installs bundler 2.6.7 as a default gem.

## Performance:

  • Speed up Version#<=> ~20-50% when lengths differ. Pull request #8565 by skipkayhil

SHA256 Checksums:

  • rubygems-3.6.7.tgz
    d23cfe27…