Rubyland

news, opinion, tutorials, about ruby, aggregated
Sources About
Ruby on Rails 

Continuously improving the framework

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

Add –reset option to bin/setup
Makes it easier to zero out a database and load seeds during development.

Add assert_in_body/assert_not_in_body
Lets test checking a response body for a piece of text without going through DOM manipulation.

Add a load hook for ActiveRecord::DatabaseConfigurations
Offers a way to use an initializer to register a database config handler before database tasks were defined.

Ensure all railties tests require strict_warnings
Prevents warnings from getting merged without being notified about them.

Sort schema cache columns and indexes per table in the cache file
Completes the…

AkitaOnRails.com 

Seu Próprio Co-Pilot Gratuito Universal que funciona Local: AIDER-OLLAMA-QWEN

No meu post anterior eu mostro como fazer um chat LLM do zero com capacidade pra carregar arquivos de código pra refatoração. Eu demonstro os princípios por trás de ferramentas como Co-Pilot, Cursor ou Windsurf. O resumo é simples:

  • UM BOM PROMPT DE REGRAS
  • SCRIPTS que rodam localmente e adicionam mais contexto na sessão do chat.

É basicamente "só" isso (claro, mesmo o princípio sendo simples, ainda dá bastante trabalho implementar mesmo). E eu não preciso fazer tudo do zero. Já existe uma alternativa open source que faz exatamente tudo isso, a ferramenta que ficou mais popular nos últimos meses pra desenvolvimento de software, o AIDER

O que eu gosto no AIDER:

  • funciona com praticamente…
Ruby Central 

Ruby Central's OSS Changelog: April 2025

Ruby Central's OSS Changelog: April 2025

Hello! Welcome to the April OSS newsletter—now known as Ruby Central’s OSS Changelog.

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

Reminder: New Ruby Central and RubyGems Policies

Reminder that we are still in the review-and-comment period for the new policies for Ruby Central and RubyGems we announced on March 20th. We appreciate the feedback we have received so far and encourage you to voice any concerns (or appreciation). If…

Remote Ruby 

São Paulo to Sin City

In this episode of Remote Ruby, Chris and Andrew catch up on recent events and dive into their experiences with various conferences. They discuss their travels to Brazil, Philly, Chicago, and Vegas, sharing the highlights and challenges of each trip. The conversation then shifts to technical topics, including insights from the Tropical on Rails conference, live translations, the impressive quality of Hotwire's functionality, and the fun time they had reuniting and hanging out with Jason in Vegas. They also tackle complexities and changes in Stripe's API integration, debating the pros and cons of self-hosting versus using hosted services. Hit the download button now to hear more! 

Links

Jake Zimmerman 

Past, Present, and Future of Sorbet Type Syntax

A discussion of how Sorbet's type syntax came to be, the problems it solves, and how it could improve.
All about coding 

Prefer getter methods over instance variables inside Ruby objects

I prefer to use getter methods instead of instance variables inside Ruby classes. I will compare getters to instance variables, focusing mainly on attr_reader.

Note: The code in this article was tested on Ruby 3.4.1

Defining getters to access instance variables

In most codebases that I saw, the primary use of an attr_reader is to provide public access to an instance variable by defining an attr_reader like this:

class Link  attr_reader :url   def initialize(url)    @url = url  end  end

Funny thing you can define getters using string if you want to and Ruby will convert it to symbol and define the same method:

class Link  attr_reader 'url'  def initialize(url)    @url = url  end  endlink =…
AkitaOnRails.com 

Hello World de LLM: criando seu próprio chat de I.A. que roda local

Ando brincando BASTANTE com os diversos derivados de GPT como o próprio ChatGPT, Claude Sonnet, Gemini e depois talvez eu faça um outro post sobre minha experiência, mas hoje eu queria brincar um pouco mais a fundo e fazer um experimento nível "Hello World" pra que vocês, programadores, entendam como que funciona por baixo dos panos.

Eu subi o projeto no GitHub, se chama Tiny Qwen CLI e foi feito somente pra PROPÓSITOS EDUCACIONAIS. Pra uma ferramenta de verdade, pesquise o Aider. Talvez eu fale dele em outro post depois.

O conceito que quero ensinar: GPTs não são mágica.

Conceitos

Assistam a minha playlist de I.A. pra entender como um GPT funciona. Depois de assistido vamos entender.

E…

Giant Robots Smashing Into Other Giant Robots 

Don't Steal a Penguin -- A Guide to Rails Flashes

Flash messages are one of the most convenient ways to share transient messages with a user. They might be informative (“You have landed in Antarctica”) or they might offer a warning (“Hands off the penguins!”).

If you are not familiar with them, an ActionDispatch::Flash

provides a way to pass temporary primitive-types (String, Array, Hash) between actions. Anything you place in the flash will be exposed to the very next action and then cleared out. This is a great way of doing notices and alerts, such as a create action that sets flash[:notice] = “Post successfully created” before redirecting to a display action that can then expose the flash to its template.

A screenshot of a portion of a sample profile page with a circular Penguin avatar and a name of Beak Fisher.
A green-tinted flash rectangle at the top says "Success" and "Penguin was successfully updated."

It’s always surprised me…

Awesome Ruby Newsletter 

💎 Issue 466 - Understanding Ruby’s `tap` — A Powerful Debugging and Configuration Tool

Matt Stuchlik 

[WIP] Low Overhead Tracing Profiler for Ruby

Note: this is a work-in-progress post, RSS betrayed me and let it out into the world before its time :)

Profiler Overview

I’ve built what I think is a pretty neat Ruby tracing profiler. It captures four event streams: Ruby function calls, system calls, thread-state changes, and garbage-collection activity, while adding less than 100 ns1 of overhead per Ruby function call, low enough for continuous use in large-scale production systems.

As far as I know, no other Ruby tracer offers this mix of signals at this cost. If you’re aware of one, please let me know and I’ll add a note here! If you’d would like to try the profiler yourself, feel free to reach out!

Why Trace in Production

In a word: outliers.…

Ruby Weekly 

Releases, releases, and more releases

#​747 — April 24, 2025

Read on the Web

👋 If you missed us last week, never fear, we took a week off for Easter, but now we're back. And just in time, too, as there are a ton of fantastic releases to cover.. :-)
__
Peter Cooper, your editor

Ruby Weekly

Ruby 3.5.0 Preview 1 Released — Christmas Day may be eight months away, but it’s time to start counting the days to Ruby 3.5’s eventual release with this initial preview version. The updates are far less significant than for 3.4 so far, but if you’re a library developer, it’s worth putting it through its paces early.

Yui Naruse

🤔 Over on X, Matz made an April…

Matt Stuchlik 

[WIP] Low Overhead Ruby Tracing Profiler

Profiler Overview

I’ve built what I think is a pretty neat Ruby tracing profiler. It captures four event streams: Ruby function calls, system calls, thread-state changes, and garbage-collection activity while adding less than 100 ns1 of overhead per Ruby function call, low enough for continuous use in large-scale production systems.

As far as I know, no other Ruby tracer offers this mix of signals at this cost, but if you’re aware of one, let me know and I’ll add a note here! If you aren’t and would like to try this profiler yourself, reach out!

Why Trace in Production

In a word: outliers. Sampling profilers show where a program spends its time on average. However, problems such as high tail latency are…

Rails Designer 

Sanitize your strings in JavaScript like a Rails developer

This article is extracted from the book JavaScript for Rails Developers. Get your copy today. ✌️


Ruby (and Rails) are known for great Developer Experience. Not in the least because of the many little helpers available. JavaScript doesn’t have most of these unfortunately, but luckily, as a developer, many are easily replicated. Let’s look at the API I am looking for:

class Editor {
  async #update(content) {
    const sanitizedContent = sanitize(content, { trimTrailingWhitespace: true })

    const response = await fetch(
      this.updateUrlValue,
      {
        // …

        body: JSON.stringify({
          content: sanitizedContent
        })
      }
    )

    // …
  }
}

sanitize(…

Stanko Krtalic Rusendic 

Building Simpl息

This week I went for a coffee with a friend. As we talked the topic of hobbies came up. I mentioned that I was having a lot of fun working on a toy project over the past week, and then I showed it to him.
Demo Him: So you are dabbling in React?
Me: No, this is just Rails.
Him: Which libraries did you use?
Me: None, this is as vanilla as it gets.
Him: What!?

Backstory

For the past 12 months, each month I built an app within a strict time-box of 12 hours.

If the project went overtime, and wasn’t at most 4 hours away from completion, I’d abandon it. If a project failed, and a lot of them did in the beginning, I’d reflect what led to that and tried to fix it in the next one.

AkitaOnRails.com 

Acessando seu NAS usando iSCSI em vez de SMB

Se você tem um NAS ou qualquer tipo de servidor de arquivos na rede, provavelmente o padrão é criar uma pasta compartilhada e depois montar no seu sistema operacional, seja Windows, Mac ou Linux usando o velho, e cansado, protocolo SMB (Samba).

Em Linux, isso é um enorme pé no saco, porque o protocolo SMB (feito pra Windows), não trás direito conceitos como ownership (chown) ou permissões (chmod). Ele não entende coisas como permissão de execução (tudo é executável). Pra coisas simples como diretório de Downloads, Videos, Fotos, meio que não importa.

Mas digamos que queira editar código fonte em projetos com Git. Vai ser um pesadelo, porque o SMB sobrescreve as permissões, independente do…

37signals Dev 

Announcing Hotwire Native 1.2

We’ve just launched Hotwire Native v1.2 and it’s the biggest update since the initial launch last year. The update has several key improvements, bug fixes, and more API consistency between platforms. And we’ve created all new iOS and Android demo apps to show it off!

Hotwire Native
A web-first framework for building native mobile apps

Improvements

There are a few significant changes in v1.2 that are worth specifically highlighting.

Route decision handlers

Hotwire Native apps route internal urls to screens in your app, and route external…

AkitaOnRails.com 

Mudando roupas usando I.A. (ComfyUI)

No post anterior mostrei como gerar character sheets pra desenvolvimento de games. Mas alguns me perguntaram "e se eu quiser roupas específicas?".

Hold my Beer

Tem como, é um workflow separado que depois dá pra adicionar ao workflow anterior se quiser (fica de lição de casa). Basta pegar o personagem gerado no primeiro grupo de nodes e passar por este outro workflow que troca roupas. (ou fazer o trabalhinho extra de gerar loras e ativar com palavras-chave no prompt também, não existe só um jeito).

Diferente do workflow do Mick - que é pago - este outro é aberto, peguei em algum Reddit e coloquei na pasta de workflows do meu projeto de Docker como "garmente-replacement-idm-vton.json", só…

AkitaOnRails.com 

Usando I.A (ComfyUI) pra gerar NPCs em desenvolvimento de games

Eu andei atualizando BASTANTE meu projetinho de Comfyui com Docker Compose. Eu acho que é o setup mais completo e testado de todos, com a vantagem de ser em Docker, então é repetitível com zero setup. Leia meu post pra mais detalhes sobre como ele funciona.

Resolvi documentar neste post sobre um dos workflow mais complexos que eu testei que funciona nesse meu setup: como desenvolver Character Sheets de personagens aleatórios, em qualquer estilo, seja realista, seja estilo pixar, seja estilo cartoon, o que você quiser. O resultado é um sheet como no exemplo abaixo. Em várias poses, várias iluminações, várias expressões de emoção, com índice de cor, tudo gerado do absoluto zero pela "I.A.".…

The Ruby on Rails Podcast 

Episode 535: Judoscale with Adam McCrea

Today we’re continuing our series of highlighting startups building with Rails. Every app eventually runs into scaling requirements. Whether that’s from a spike in traffic or persistent growth. That’s why we have autoscaling. Judoscale is a tool to make autoscaling easy. Adam joins us to talk about building Judoscale 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…

Evil Martians 

UI for Quotient AI: the developer tool for prompt engineers

Authors: Yaroslav Lozhkin, Product Designer, and Travis Turner, Tech EditorTopics: Design, Martian Design Sprint, Figma, LLMs

We designed a playground for prompt engineers—and this is how we helped Quotient AI build this developer-first interface for evaluating LLMs. We implemented a complete and structured platform built from scratch, with a clear user flow and intuitive experience.

Evil Martians built a strong foundation for Quotient AI's product launch by making it intuitive and user-friendly. We designed and implemented a complete and structured platform from scratch, with a clear user flow and intuitive experience: a playground for prompt engineers—a product which would come to be known…

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 productive development flow as it can catch many errors at compile time, allowing us to think less about possible errors and more of what we 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. For the last ~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,…

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…