Rubyland

news, opinion, tutorials, about ruby, aggregated
Sources About
Short Ruby Newsletter 

Short Ruby Newsletter - edition 135

The one where EuRuKo has announced that their tickets are on sale, Rails World tickets will go on sale on the 13th of May, and Joel Drapper invites us to use the strict_ivars gem.
Giant Robots Smashing Into Other Giant Robots 

NWRUG's (Manchester, UK) May 2025 Meeting — Rails AntiPatterns Revisited

NWRUG is back in Manchester, UK again this week for another session at Colony One.

Nearly 15 years ago, Rails 3 was born from the merger of Rails 2.x and Merb. Around the same time the book Rails AntiPatterns: Best Practice Ruby on Rails Refactoring was released.

Join Chad Pytel, author of Rails AntiPatterns and thoughtbot founder and CEO, as he revisits key AntiPatterns from the book, explores how their solutions hold up today, and reflects on what’s changed (or hasn’t!) in the Rails world since then.

To attend, all you have to do is register here, and turn up this Thursday!

Fatsoma are once again sponsoring the event, so expect plenty tasty pizza for everyone.

If you enjoyed this…

Saeloun Blog 

Rails 8 adds built in authentication generator

For developers to setup the basic authentication flow in Rails application, we have to do lot of manual configurations.

New developers and small projects teams don’t even need major authentication related feature. But they still need to rely on third party gems or write the whole codebase of the authentication flow from scratch, which is time consuming.

Rails has built in generators(eg: model, migration) for different features to avoid manaul coding and configurations. These generators allow developers to focus on building the core features of their application, rather than spending time on basic setup tasks.

Authentication generator

Rails 8 introduced the basic authentication generator…

Tosbourn – Belfast based Ruby developers 

Override database attribute types

In an ideal world, your database setup will reflect your business logic, as in if a field is required in your application, it is required in your database, if it is a number in your database, it is a number on your system. I’ve written about this in checking in with your database.

We don’t live in an ideal world, far from it. Sometimes your database will say one thing but your application needs it to act like something else. The “correct” fix would be to update the database to suit. That isn’t always possible or desirable. Luckily, Rails can help!

I was working on a codebase recently where the database used TEXT for a lot of fields. Ideally these would be VARCHAR(30) or similar. In this…

Rails Designer 

Natural Language Parser for Recurring Events using Stimulus

In this article I explored how I add recurring events in Rails. Let’s now look at how to add a natural language parser input field. Instead of having users select from dropdown menus with Daily, Weekly, etc., I want users to type things like every week or monthly on the 15th.

Something like this:

(not pretty, but it work! 😄)

This feature is built on top of the work from the previous article. View the complete implementation in this commit.

First, let’s look at the view changes. Replace the previous basic select input, in app/views/events/_form.html.erb, with a text field:

- <div>
-   <%= form.label :recurring_type, "Repeats" %>
-   <%= form.select :recurring_type, [
-     ["Daily",…
Avo Blog 

Cloudflare R2 with Active Storage

Let's learn how to integrate Cloudflare R2 uploads with Active Storage if S3 or other alternatives are not of your liking
Giant Robots Smashing Into Other Giant Robots 

Top 5 Ruby on Rails Consultancies in 2025

Ruby on Rails has experienced a rebirth in recent years, offering a perfect balance of development speed, scalability, and maintainability suitable for both enterprises and startups. For enterprise, Rails provides a battle-tested foundation that can handle complex business logic and significant user loads while remaining maintainable over time. For startups, Rails enables rapid prototyping and iteration, allowing teams to validate ideas quickly and scale as they grow—all without needing to rebuild their tech stack from scratch.

Why Rails Over Node.js, Python, or PHP?

While each technology stack has its merits, Ruby on Rails offers distinct advantages that keep it in the…

  • De…
Hotwire Weekly 

Week 19 - From Next.js to Rails, Building a Password Manager, and more!

Hotwire Weekly Logo

Welcome to Hotwire Weekly!

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


📚 Articles, Tutorials, and Videos

Multistep forms with Rails and the Wicked gem - Exequiel Rozas published a guide on the Avo Blog on implementing multistep onboarding forms in Rails applications using the Wicked gem. This approach allows developers to create sequential forms without relying on custom JavaScript.

Part 1: How We Fell Out of Love with Next.js and Back in Love with Ruby on Rails & Inertia.js - Adam Fortuna shares Hardcover's journey from using Next.js to returning to Ruby on Rails with Inertia.js. Initially attracted to Next.js for its server-side rendering capabilities and SEO benefits,…

code.dblock.org | tech blog 

Executing Structured A.I. Workflows with Shopify Roast

Last week, my team at Shopify released a new tool called Roast, a convention-oriented framework for creating structured AI workflows. Our vision is to enable A.I. agents to solve developer productivity problems at scale. Imagine continuously improving unit tests, or optimizing test performance across hundreds of thousands of tests with minimal human intervention!

As we embarked on this journey, we quickly learned that, like many junior Engineers, A.I. needs some help focusing, and may not be ready to roam free around millions of lines of code and not hallucinate random results. So we made Roast, which gave A.I. some structure.

In the following example I will grade a Ruby unit test.

If…

The Rails Tech Debt Blog 

DIY Ruby on Rails Upgrades: Essential Open Source Tools

At FastRuby.io, we deeply value the Ruby and Rails communities and believe in giving back through open source contributions. We wouldn’t be where we are today if it wasn’t thanks to a lot of open source projects we use on a daily basis.

We actively use, maintain, and enhance several tools designed to empower developers and teams who want to handle Ruby and Rails upgrades themselves, especially those who might not have the budget to hire our services.

These open source projects facilitate upgrades by improving transparency, managing technical debt, and ensuring smooth transitions between Ruby and Rails versions.

Here’s an overview of each tool and how it can support your next upgrade…

Ruby on Rails 

New Guides PR, Rails World Updates and more!

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

New Guides Pull Request for review
A new guides Pull Request is up, which updates the Rails Application Template Guide and also merges it with Rails Generators Guide. If you are well versed in these areas, please review and submit your feedback on the PR!

Rails World updates!
Check out the latest updates on schedule, new ticket types and availability and a new Rails at Scale event!

Defer ActiveJob enqueue callbacks until after commit when enqueue_after_transaction_commit enabled
Active Job’s around_enqueue callbacks are deferred until after the database transaction commits, but only when the enqueue_after_transacti…

avdi.codes 

I made a keychain

Jessitron has taken up making friendship bracelets lately. She has a lot of meetings and it’s something to do with her hands.

She makes bracelets. Except sometimes they turn out too short. They turn out to be… keychains, instead.

Some bracelets that turned out to be keychains.

A couple weeks ago I saw Joel Drapper announce his strict_ivars gem, and I got really excited. I loved the concept. But I immediately thought of my own spin on it. Mostly, I wanted it to generate warnings instead of exceptions. I also wanted to solve the “repetitive initializer” problem at the same time.

It got my wheels spinning in a way they haven’t in a long time. Here was a Ruby…

Weelkly Article – Ruby Stack News 

🔒 Free SSL Certificates for Your Ruby on Rails App Using Let’s Encrypt

May 9, 2025 Security is no longer optional — every modern web app must support HTTPS. Thankfully, Let's Encrypt provides free SSL certificates, and with a bit of Ruby magic, you can integrate them directly into your Rails application. Recently, I worked on automating this setup and even contributed a pull request to simplify the … Continue reading 🔒 Free SSL Certificates for Your Ruby on Rails App Using Let’s Encrypt

avdi.codes 

Agents Aren’t Juniors, They Are Amnesiac Spies

The other day I told Augment:

Use the Table Data Gateway pattern for this class

It did as it was told, perfectly, the first time. This is not something I could tell a junior without a great deal more hand-holding. It instantly understood me, because uncounted millions of lines of code and writing-about-code are baked into its probability matrix.

On the other hand, no matter how many times I refactor the agent’s work, or tell it how to refactor its own work, it will never learn from that experience. It will never get better than it is. It will never grow in taste and instincts.

Today’s coding agents aren’t like “working with a junior”. They are like working with Jason Bourne,…

Remote Ruby 

Why is the Test Suite Hanging?!

In this episode of Remote Ruby, Chris and Andrew discuss various technical challenges and developments. Chris provides insights into recent updates and debugging issues with Stripe integration, including transitioning from usage records to billing meters. Andrew shares a complicated debugging session involving a mysterious test suite freezing problem on a friend’s computer. They dive into the intricacies of using tools like LLDB and GDB for troubleshooting and explore potential solutions. Chris also leaves us with a cliffhanger that includes an exciting new project!

Links



Honeybadger
Honeybadger is an application health monitoring tool built…
RubySec 

CVE-2025-32441 (rack): Rack session gets restored after deletion

### Summary When using the `Rack::Session::Pool` middleware, simultaneous rack requests can restore a deleted rack session, which allows the unauthenticated user to occupy that session. ### Details [Rack session middleware](https://github.com/rack/rack/blob/v2.2.13/lib/rack/session/abstract/id.rb#L263-L270) prepares the session at the beginning of request, then saves is back to the store with possible changes applied by host rack application. This way the session becomes to be a subject of race conditions in general sense over concurrent rack requests. ### Impact When using the `Rack::Session::Pool` middleware, and provided the attacker can acquire a session cookie (already a major…
RubySec 

CVE-2025-46336 (rack-session): Rack session gets restored after deletion

## Summary When using the `Rack::Session::Pool` middleware, simultaneous rack requests can restore a deleted rack session, which allows the unauthenticated user to occupy that session. ## Details [Rack session middleware](https://github.com/rack/rack-session/blob/v2.1.0/lib/rack/session/abstract/id.rb#L271-L278) prepares the session at the beginning of request, then saves is back to the store with possible changes applied by host rack application. This way the session becomes to be a subject of race conditions in general sense over concurrent rack requests. ## Impact When using the `Rack::Session::Pool` middleware, and provided the attacker can acquire a session cookie (already a major…
RubySec 

CVE-2025-46727 (rack): Rack has an Unbounded-Parameter DoS in Rack::QueryParser

## Summary `Rack::QueryParser` parses query strings and `application/x-www-form-urlencoded` bodies into Ruby data structures without imposing any limit on the number of parameters, allowing attackers to send requests with extremely large numbers of parameters. ## Details The vulnerability arises because `Rack::QueryParser` iterates over each `&`-separated key-value pair and adds it to a Hash without enforcing an upper bound on the total number of parameters. This allows an attacker to send a single request containing hundreds of thousands (or more) of parameters, which consumes excessive memory and CPU during parsing. ## Impact An attacker can trigger denial of service by sending…
Ruby Rogues 

Demystifying the Rails Codebase with Ridhwana Khan - RUBY 675

Hey folks, in this week’s episode, I sat down with the incredible Ridhwana Khan — a South African technical writer for the Rails Foundation and lead engineer at Circle. We had a fantastic chat about all things Ruby on Rails, but especially the underappreciated art (and science!) of writing documentation.


Ridhwana took us behind the scenes of the official Rails Guides — how they’re updated, expanded, and reviewed — and gave us a real sense of the thoughtful, collaborative work that powers one of the best-documented frameworks out there. She also shared her personal journey: from freelancing into Rails doc writing, to her passion for building inclusive communities like Rails Girls South Africa…
avdi.codes 

https://avdi.codes/39927-2/?utm_source=rss&utm_medium=rss&utm_campaign=39927-2

Please do try out Ivar, I’m sure there are corner cases and I’d love to identify them

Awesome Ruby Newsletter 

💎 Issue 468 - We Fell Out of Love with Next.js and in Love with Ruby on Rails and Inertia.js

Planet Argon Blog 

Managing Tech Debt with a Custom VS Code Extension

Managing Tech Debt with a Custom VS Code Extension

Tired of losing focus to log tech debt? See how we built a VS Code extension that captures context and sends it straight to Jira—without leaving your editor.

Continue Reading

Ruby Weekly 

Coming back to Rails from Next.js

#​749 — May 8, 2025

Read on the Web

Ruby Weekly

'How We Fell Out of Love with Next.js and Back in Love with Rails' — The book reading/tracking service Hardcover has been working on a big migration from the Next.js world to using Rails coupled with Inertia.js to maintain a React-powered SPA vibe. This post goes into a lot of detail about how they made it work and will be useful for anyone looking to blend the two different worlds.

Adam Fortuna

🗣️ This post kicked off an extensive discussion on Hacker News.

How Contributions to RubySpec Look Over Time — RubySpec (started in 2006 as part of Rubinius) is the

Rails Designer 

Recurring Calendar Events in Rails

Last week I released v1.14 of Rails Designer’s UI Components. With that release came a fully-customizable Calendar Component, built with ViewComponent and designed with Tailwind CSS.

Since that release I got two times the question via email about recurring events. Does that work? And indeed it does. The Calendar Component simply accepts an events array/collection. And while this kind of functionality is out-of-scope of a UI component (and the support for it), I am currently working on something that just happens to need this kind of feature. It is not at all too difficult to start (the tricky bits start when hundreds of thousands of events are created 😬). So what else can I do then to…

Avo Blog 

Multistep forms with Rails and the Wicked gem

Let's learn how to build a multistep onboarding flow for our Rails app with the Wicked gem
Schneems - Programming Practices, Performance, and Pedantry 

Bad Type Patterns - The Duplicate duck

Why aren’t people writing more types? Perhaps it’s because the intermediate and expert developers deleted the patterns that didn’t work and left no trace for beginners to learn from. This post details some code I recently deleted that has a pattern I call the “duplicate duck.” You can learn the process I used to develop the type, and why I deleted it. Further, I advocate for Rust developers to document and share their mistakes in the hope that we can all learn from them.

TLDR: What’s a duplicate duck?

A “duplicate duck” is a type that implements a subset of traits of a popular type with the same results. In my case I wrote a type, MultiError, that I later realized was identically …

avdi.codes 

https://avdi.codes/39835-2/?utm_source=rss&utm_medium=rss&utm_campaign=39835-2

Check it out, I published a new RubyGem!

(I think the original post syndicated to the fediverse a little wonky so I’m re-linking it)

avdi.codes 

Announcing Ivar: Ruby’s Missing Instance Variable Typo Warnings

You should probably go tread this post instead.

JRuby.org News 

JRuby 10.0.0.1 Released

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

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.

Security

JRuby.org News 

JRuby 9.4.12.1 Released

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

JRuby 9.4.12.x targets Ruby 3.1 compatibility.

Security

Ruby Central 

The Ruby Central README: April 2025

The Ruby Central README: April 2025

Welcome to The Ruby Central README 🎉

Instead of combining updates on our Open Source Program, conferences, and organizational news into one, The README is a newsletter focused on Ruby Central as an organization, our events, and the broader community.

For Open Source Program news, check out our dedicated newsletter, The OSS Changelog, and subscribe here.

Welcome to Ruby Central’s New Executive Director!

Big news — Ruby Central is thrilled to welcome our new Executive Director, Shan Cureton!

Shan is joining our team at Ruby Central at a pivotal moment. Over the last few years, we launched our Open Source Program, redefined RubyConf as our flagship annual conference (beginning in 2026), expanded…

The Ruby on Rails Podcast 

Episode 536: Better With Becky with Becky Searls

Becky Searls is a teacher-turned-trainer, but her true passion is learning and continuous growth. She shares everything she learns through her business, Better with Becky, which recently launched its first product: a strength-training app called Build with Becky (which she built in collaboration with her husband Justin using Ruby on 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…

Ruby Magic by AppSignal 

An Introduction to Solid Queue for Ruby on Rails

One of the most exciting additions to Rails 8 is undoubtedly Solid Queue, a new library for processing background jobs.

You might not think it's that big of a deal. After all, there are plenty of other queuing systems out there. If you work with Rails, you'll likely know about Sidekiq and Resque — both are exceptionally performant and reliable. There is also GoodJob and the venerable DelayedJob. With all those options available, do we really need another queuing system?

Let's find out together. In this two-part series, we'll dig deep into Solid Queue's internals, discover what makes it unique, and learn more about why it was created in the first place.

Why Solid Queue for Ruby on Rails?

Sin…

Tim Riley 

Catch you at Baltic Ruby

Baltic Ruby is coming! Just 36 days to go!

This will be my only speaking engagement for the year, and it’ll be my honour to close out the conference. I’ll be sharing something new, both more personal and broader in range than ever before.

I’ll also be at the conference’s OSS Expo representing Hanami (and Dry and Rom!). If you’d like some guidance in making your first contribution, or building your first app, this is your chance!

I love all the thought and care that’s being put into this conference. I can’t wait to get to Riga. I hope to see you there too!

Hi, we're Arkency 

Multi tenant applications with horizontal sharding and Rails Event Store

Multi tenant applications with horizontal sharding and Rails Event Store

Horizontal sharding has been introduced in Rails 6.0 (just the API, with later additions to support automatic shard selection). This enables us to easily build multi tenant applications with tenant’s data separated in different databases. In this post I will explore how to build such an app with separate event store data for each tenant.

Application idea

Let’s sketch some non-functional requirements for our sample application.

  • First: all tenant data is separated into a shard database,
  • Second: tenant’s management, shared data, cache & queues use a single shared database (admin’s application),
  • Third: embrace async,…

And one last thing … the tenant database setup will be…

Ruby on Rails 

Rails World 2025: Two big updates

Hey everyone!

The Rails World 2025 website has been updated, and here are a few big updates you should know about this year’s event.

New ticket types, prices and release schedule

This year we will have two ticket types: Support tickets and General Admission tickets.

New: We’re introducing a limited batch of Corporate Support tickets, available for €899. These pre-released tickets, while still partially subsidized by the Rails Foundation, are ideal if your company wants to send your team and can use an L&D budget. Support tickets play a key role in making Rails World possible and also help keep General Admission tickets affordable for community members paying out of pocket. As a thank…

Stanko Krtalic Rusendic 

Adding MCP to a Rails app

Last week we had an AI hackathon at work during which we added an MCP server to our Rails app. This was much easier than I expected, the result was both impressive and scary, and I learned a few things about MCP that I didn't expect. Demo of Claude using our app via MCP to solve a support request Goal

My team wanted to help our support team by automating some laborious tasks, like cross referencing data, by offloading the bulk of the work to an AI agent. This would make support’s work easier, responses quicker, and in some cases it would free up my team too - an all around win.

To allow the AI to interact with our app - like a person would - we decided to add MCP to…
The Bike Shed 

462: Decomposition as a key developer skill with Steve Polito

Joël and Steve sit down to discuss the ins and outs of decomposition within their respective workflows and how they use it to their advantage when working on certain projects.

Together they look at working with vertical slices over other decomposition methods, when and how to break down code as efficiently as possible, and Joël lays out his three key principles that help him write code dubbed “The Triangle of Separation”.

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

Learn more about Joël’s triangle of separation and working with vertical slices!

Your guest this week has been Steve Polito, and your host…

Mintbit 

find_each vs find_in_batches in Active Record

When working with large datasets in Rails, loading all records into memory can be expensive and inefficient. That’s where Active Record’s batch processing methods — find_each and find_in_batches — come to the rescue. They allow you to iterate over large numbers of records without blowing up your memory usage.

What is find_each?

find_each is a convenient way to loop over records one at a time, but under the hood it processes them in batches.

1
2
3
User.find_each(batch_size: 1000) do |user|
  user.send_weekly_email
end
  • Records are fetched in batches of 1,000 by default.
  • You get one record at a time in the block.
  • Great for operations where you’re performing the same action on each…

What is find_in_batches?

find_in_batches gives you access to each batch…

Posts on Kevin Murphy 

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

De Profundis Borealis 🔗

Ghost dropped a new psalm (album) at the end of April, so that’s been my focus.

Full Lyrics

All the words that never came out right
Within reach, but out of sight
All the songs that couldn’t mend your heart
But slit it up and tore apart

Lachryma 🔗

I already told you: new Ghost.

Full Lyrics

In the middle of thе night, it feeds
In the middle of the night, it еats you
Everybody knows
Everywhere I go
I can never run and I cannot hide

I’m done crying
Over someone like…

Short Ruby Newsletter 

Short Ruby Newsletter - edition 134

The one where you can read about why Marc Köhlbrugge chose Ruby, where Adam Fortuna shares how they returned to Rails, and where Ruby Central discusses how Honeybadger builds with Rails
Weelkly Article – Ruby Stack News 

🔗 Connecting Ruby on Rails and React: Building a Simple User List API

May 5, 2025 In my recent project, I built a basic full-stack integration using Ruby on Rails as an API backend and React for the frontend, both running in Docker containers. The goal was simple: list users fetched from a Rails API into a React component. What surprised me the most? It turned out to … Continue reading 🔗 Connecting Ruby on Rails and React: Building a Simple User List API

justin․searls․co - Digest 

📸 If this is losing, I don't want to win

In Japan, it's common for bars to have a dice game with rules like:

  • Snake eyes: free drink
  • Even number: half off drink
  • Odd number: double size, double price drink

I "lost" with both of these 1L whisky-fruit highballs. I sure don't feel like a loser, though.

Josh Software 

LLMs Made Easy: A Beginner’s Guide to AI-Powered Text

These days, we often hear the term LLM (Large Language Model). If you need help with content writing or coding, someone might say: “Yaar, mai toh content creator hoon, par ab mere paas koi content hi nahi hai!” “Yaar, ye logic samajh hi nahi aa raha, kaise likhu?” Then, your friend—or maybe Pintya sitting beside … Continue reading LLMs Made Easy: A Beginner’s Guide to AI-Powered Text
Drifting Ruby Screencasts 

Scaffold Templates

In this episode, we explore using the scaffold generator and modifying the templates to simplify the creation of consistent, Tailwind CSS-styled views and controllers in a Rails application, saving time when prototyping and building new features.
Hotwire Weekly 

Week 18 - Hotwire Native Dev Tools, Hotwire Native Tabs, and more!

Hotwire Weekly Logo

Welcome to Hotwire Weekly!

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


📚 Articles, Tutorials, and Videos

Hotwire Native Dev Tools - Leon Vogt announced and released Hotwire Native Dev Tools, a lightweight tool to debug and inspect Hotwire Native apps.

Active Storage & Form Errors: Preventing Lost File Uploads in Rails - Daniela Baron explains how to prevent file uploads from being lost when a form with validation errors is re-rendered. Her solution uses direct uploads, signed IDs, and a custom Stimulus controller to keep files attached across failed submissions.

Streaming LLM Responses with Rails: SSE vs. Turbo Streams - Justin Paulson explores two methods for streaming…

Super Good Blog 

RubyKaigi 2025

Every year, Rubyists from all over the world converge on Japan for the focal point of Ruby world, RubyKaigi. This year, we sent a contingent of the Super Good team: Adam Mueller, Chris Todorov, Amy Norman, and myself.

The conference moves to a new city in Japan every year, and 2025 found it in Matsuyama. Matsuyama is the capital of Ehime prefecture on the island of Shikoku. It’s a beautiful city known for the Dōgo Onsen, Matsuyama castle, and oranges. So many oranges. Everything there is orange-themed. You’ll find Ehime’s mascot, Mikyan on everything.

Mikyan

If you’ve ever felt intimidated at the prospect of attending a conference in Japan (perhaps because you don’t speak…

Island94.org 

Recently, May 4, 2025

Frontdoor Benefits, my new startup, posted our first newsletter/update. In doing our “planning” for it I took a lot from how I apprach this blog:

  • We are writing to a single individual (”Dear treasured friend” not “Hey friends”).
  • We are writing from each of our personal voices (”This is Charlotte. I have… ” or “This is Ben. I have…”)
  • Tone is casual and informal, we are sharing the things we’ve done or are thinking about with a close and curious person.
  • We write about what we have done or thought about. Not so much what we intend to do in the future (definitely no commitments!)
  • We try to avoid talking about the newsletter itself. For example, we…

It’s been successful so far, in that we asked for some things in it and people have delivered.


I have been doing lots of research and having interesting conversations about customer/client/caseworker/constituent relationship management. Not so much “salesforce” or “hubspot” but how to break down…

Stefan’s Blog 

Kamal - Presentation @Ruby Frankfurt

In the end of March 2025, I had the honor to present at the Ruby Frankfurt meetup. The topic was a deep dive into Kamal, the deployment tool for Rails 8. You can find the online presentation in Reveal.JS here.

In summary: during the last 6 months I migrated a rather large Rails app from our company (our Applicant-Tracking-System for Empfehlungsbund) from a Capistrano-like Ansible playbook into a full-blown containerized deployment using Kamal. Meanwhile, I also migrated all of my side-projects to deploy with Kamal + Gitlab-CI. After upgrading some apps to Kamal 2, I would recommend now, to have a look. Prior to that, there were some rough edges, but now, it’s worth to have a look, if you…

Ryan Bigg Blog 

Show, Don't Tell

On Monday night, I’m going to be on a panel in Melbourne, in front of a crowd of aspirational junior developers, answering questions and giving advice. I’ve been a proponent for junior developers for a very long time, and ran two successful iterations of my Junior Engineering Program at Culture Amp, ending in 2019, as well as continuing to mentor developers in my current line of work.

My advice to the juniors of 2025 is plain and simple: Show, Don’t Tell. The first time I hear from a lot of juniors is probably when they apply for a job, or reach out about one. It used to be meetups but the tyranny of distance got in the way.

When they reach out, that’s when I’ll find out the regular…

AkitaOnRails.com 

Último Tentativa de Treinar uma LLM com LoRa. Tiro de canhão, mas errando a mosca.

Ok, eu sou insistente. no post anterior expliquei tudo que eu sabia sobre tentar fazer fine-tuning de um modelo com LoRa. Mas é um processo tedioso, demorado, e limitado à "pobreza" da minha RTX 4090. Em 24GB de VRAM tem que caber o modelo, coisas como KV cache, dataset de treinamento e espaço pra processar tudo. Apertando, cabe o modelo Qwen3-8B e 1MB de dataset e já era. Vai usar 21GB constantemente durante mais de 1 hora e o resultado final, apesar do modelo conseguir responser "sim, eu sei Zig 0.14", não é bom - porque o modelo base de só 8B já não era grande coisa.

A saída: migrar meu treinamento pra uma máquina maior. Comecei tentando uma A40, pra ver se 40GB era suficiente pra caber…

On the Edge of Ruby 

Contributions to ruby/spec

As a maintainer of ruby/spec I sometimes wonder how much each Ruby implementation contributes to ruby/spec. Without further ado, here it is:

Interpretation

Rubinius started ruby/spec (called RubySpec back then) and was the main contributor until 2014. In 2015, Rubinius development slowed down significantly and so did their work on adding specs (more on that in this 10 years old post).

In 2014, TruffleRuby was started and quickly became the main contributor to ruby/spec, contributing more than half of all commits since then.

CRuby has contributed consistently to ruby/spec, around 20% of all commits each year. This is great to see as CRuby is in the unique position of implementing new…

AkitaOnRails.com 

Ensinando Zig mais recente pra sua LLM - Treinando LoRas (quase)

Dois posts atrás eu demonstrei o Calcanhar de Aquiles das LLMs pra programação: eles não foram treinados com os dados mais recentes disponíveis. Então se perguntar sobre mudanças na versão da sua biblioteca, linguagem ou frameworks favoritos que saiu mês passado, ele não vai saber.

Nota: todos os códigos que vou mostrar mais abaixo estão disponíveis neste repositório no meu GitHub. Fucem lá depois de ler até o fim.

Por exemplo, eu perguntei ao modelo Qwen3-8b (que saiu poucos dias atrás), qual versão de Zig ele sabe e a resposta foi: 0.11 ou 0.12:

zig antigo

Aliás, é assim como na foto que se chama uma API compatível com OpenAI de LLMs com curl. De qualquer forma, foi por isso que eu sofri tanto…

justin․searls․co - Digest 

🔗 How to use a Pants Press in a Japanese business hotel

One of the best parts of all these ridiculous side quests I accept is that I never run out of new situations to figure out. This week: how to iron my shirt and press my pants from a Japanese business hotel the day before a meeting.

Thankfully, we have YouTube

Of course, models vary between companies and I actually had to follow this less entertaining video to get figure out what to do with a standing "Twinbird" press (apparently the #1 seller in pants presses):

🔗 youtube.com

🧂 justin.searls.co

AkitaOnRails.com 

RANT - LLMs são LOOT BOXES!

Eu sei que vai soar negativo demais, e de novo, vou repetir que eu não sou anti-I.A., anti-LLM nem nada disso, pelo contrário, eu gosto TANTO, mas TANTO, que venho dedicando TODAS as minhas horas em pesquisar a fundo a respeito.

Tem sido muito útil pra mim especialmente pra resumir paper, conciliar pesquisas em vários sites, resumir tópicos e coisas do tipo.

"MAS .."

E é um enorme MAS, ele tem sido BEM inútil em programação de verdade. Não vou repetir todos os problemas que já encontrei: eu detalhei bastante nos posts anteriores. Mas minha conclusão é simples: ele pode ajudar em código, em tarefas pequenas, focadas, isoladas, com bastante prompt pra ajudar e você - programador - precisa…

Ruby Rogues 

How to Optimize Your Rails App Using SQLite - RUBY 674

In this episode of Ruby Rogues, Charles Max Wood and Ayush Nwatia welcome back guest Stephen Margheim to dive deeper into the evolving world of SQLite. Stephen explains that with Rails 8, SQLite has reached a major milestone: it now supports a fully production-ready, server-driven web application experience with no compromises. He walks us through the big improvements, like better transaction handling and SQLite’s integration with Rails, which now supports background jobs, caching, and WebSocket messaging—all powered by SQLite without additional configuration. These enhancements mean that deploying a Rails app backed entirely by SQLite is not only possible—it’s efficient, stable, and simple.…
avdi.codes 

Facts, feelings, and fascism – by Amy Isikoff Newell

fascists would rather we pay less attention to external facts (which they are lying to us about) and more attention to our feelings, because those are so easy to manipulate

It is always a good idea to read Amy Newell, but *especially* now.

Source: Facts, feelings, and fascism – by Amy Isikoff Newell

Ruby on Rails 

Parallel testing improvements and more

Hi, Wojtek here. Let’s see what’s new in the Rails.

Rails World tickets coming soon

We’ve been informed that General Admission tickets will be available May 13. More information is coming soon, but you can already mark your calendar!

Implement ability to skip creating parallel testing databases
With parallel testing, Rails will create a database per process. If this isn’t desirable or you would like to implement databases handling on your own, you can now turn off this default behavior.

To skip creating a database per process, you can change it via the parallelize method:

parallelize(workers: 10, parallelize_databases: false)

or via the application configuration:

config.active_support
danielabaron.me RSS Feed 

Active Storage & Form Errors: Preventing Lost File Uploads in Rails

Rails' Active Storage makes file uploads easy, but validation errors can cause attachments to be lost when forms re-render. This guide explains why and walks through a step-by-step solution using direct uploads, signed IDs, and Stimulus for an improved user experience.
Ruby News 

CVE-2025-43857: DoS vulnerability in net-imap

There is a possibility for DoS by in the net-imap gem. This vulnerability has been assigned the CVE identifier CVE-2025-43857. We recommend upgrading the net-imap gem.

Details

A malicious server can send can send a “literal” byte count which is automatically read by the client’s receiver thread. The response reader immediately allocates memory for the number of bytes indicated by the server response. This should not be an issue when securely connecting to trusted IMAP servers that are well-behaved. It affects insecure connections and buggy, untrusted, or compromised servers (for example, connecting to a user supplied hostname).

Please update net-imap gem to version 0.2.5, 0.3.9,…

AkitaOnRails.com 

Quando LLMs não Funcionam pra Programar? Um caso de uso mais real.

Como eu disse no meu post anterior de Rant sobre Desmistificar a I.A. pra programação, posso confirmar que muitos benchmarks sintéticos que dizem medir capacidade de programação, são MENTIRAS.

E não digo que é uma tentativa proposital de mentir, mas que quem está fazendo as pesquisas e compilando rankings e leaderboards, não divulgam exatamente os detalhes e só soltam o resultado sem contexto. Este é um exemplo que achei hoje: LiveBench, que é mais um pacote de benchmark de "programação". Olha que é testado exatamente:

LiveBench scripts

São testes idiotas do tipo "carregue estes dois arquivos CSV e compare os valores". É ainda mais idiota que Leet Code. É ainda mais idiota que a maioria dos testes de…

avdi.codes 

https://avdi.codes/39202-2/?utm_source=rss&utm_medium=rss&utm_campaign=39202-2

Has anyone done self-hosted GitPod (or other self-hosted devbox) on their own cloud compute that ISN’T AWS? I wish I could just chuck it on a Vultr box but it needs KVM.

I’m just so allergic to doing this shit on AWS. I want A BOX with A NAME that is MINE but that lives in a datacenter. And I would rather gargle rusty nails than edit IAM policies.

Awesome Ruby Newsletter 

💎 Issue 467 - Itsi - A fast new Ruby Rack server, reverse proxy, static file server and more.

avdi.codes 

Regression

Date: 10,000 BCE
Problem: crops failed
Diagnosis: crop gods angry with you
Plan: propitiate gods, hope for best

Date: 1999
Problem: emails missing
Diagnosis: DNS
Plan: fix DNS

Date: 2025
Problem: emails missing
Diagnosis: email reputation gods angry with you
Plan: propitiate gods, hope for best

Charles Oliver Nutter 

3D Charts and More with JRuby and JFreeChart

After playing with JFreeChart and JRuby and writing up a lovely blog post called “Beautiful Charts with JRuby and JFreeChart” it seems that some folks did not agree with my assessment of the charts as “beautiful” and others did not realize the power of what they’d just seen.

So, let’s see if this one grabs your attention. As before, this example is available in the headius/jruby-charts repository.

Orson Charts

Along with a comprehensive and configurable set of 2D chart formats, the JFreeChart project also ships Orson Charts, an equally extensive set of 3D chart renderers. The library has been designed to work alongside JFreeChart and has all the same support for file output and GUI…

So…

Ruby Weekly 

All the gem statistics you can eat

#​748 — May 1, 2025

Read on the Web

Ruby Weekly

Itsi: A Fast, New Ruby Rack Server — Itsi is an interesting new player joining the world of Ruby app servers. It’s written in Rust, is Rack compliant, and works as a reverse proxy, API gateway and static file server. You can choose between a typical blocking model, an (optional) fiber-based scheduling approach, or even mix the two in a hybrid model.

Wouter Coppieters

📊 Ruby Gem Analytics Powered by ClickHouse and Ruby Central — How would you like to quickly run SQL queries to do analytics over every single Ruby gem download since 2017? Now you can. There’s…

Alchemists: Articles 

Options Pattern

Cover
Options Pattern

The Options Pattern provides a solution for making your applications configurable. The name of this pattern stems from .NET but we’ll learn how to implement this in Ruby.

Quick Start

To make any object configurable, you only need Structs to define the attributes you need and a class to inject the configuration into. Example:

Configuration = Struct.new :token, :uri

class Client
  def initialize(settings = Configuration.new)
    @settings = settings

    yield settings if block_given?
  end
end

Client.new do |set…

The above will produce an instance of a Client as follows:

#<Client…
Ruby Central 

Welcoming Ruby Central’s New Executive Director, Shan Cureton

Welcoming Ruby Central’s New Executive Director, Shan Cureton

Ruby Central is excited to welcome our new Executive Director, Shan Cureton. 

Over the past few years, Ruby Central has gone through a period of meaningful growth and change. We launched our Open Source Program to lead the ongoing development of RubyGems and Bundler, redefined RubyConf as our flagship annual conference (beginning in 2026), and expanded our grant program to support local Ruby meetups around the world. We also worked to overcome the challenges of the pandemic with a renewed focus on sustainability, ensuring we’re well-positioned to support the Ruby ecosystem for the long term.

As we step into our next chapter, we sought out an Executive Director who has the vision and drive to…

Rails Designer 

Turbo Drive, Frames, Streams, Morph? What to use?!

The Hotwire trifecta allows you to write modern (Rails) web apps, without the need to write (a lot of) cumbersome JavaScript with Turbo’s Drive, Frames, Streams or Morph. But with all these options, which one to use and when?

Hotwire, like Rails, needs a mental shift from you as the developer. You can try to use Stimulus on a per-component basis, but you get way more bang for your buck if you write general-purpose controllers instead. The same goes for the various Turbo options.

You get the most value out of Hotwire if you follow progressive enhancement, a web design strategy popularized in 2008 by Aaron Gustafson that ensures basic functionality for all users while layering advanced…

AkitaOnRails.com 

Rant - LLMs vão evoluir pra sempre? Desmistificando LLMs na programação

Vamos recaptular meus últimos artigos:

  • Hello World de LLM - neste artigo explico como criar um programinha simples (educativo) de chat carregando um LLM (Qwen2.5) e até como usar prompts pra que ele consiga chamar scripts/agentes e executar algumas tarefas simples como carregar arquivos locais. Eu subi o código no GitHub como Tiny-Qwen-CLI e deixei o código "sujo" de propósito pra poder testar como as LLMs conseguem (ou não ajustar esse código).
  • Seu Próprio Co-Pilot Gratuito - aqui eu explico mais sobre a ferramenta Aider, que é como se fosse um Co-Pilot ou Cursor, mas gratuito e open-source. Ele não exige plugins nem IDEs. Roda no terminal e é fácil de usar. Também mostro como integrar…

Ao longo dos últimos dias eu vim testando e postando no X minhas impressões sobre os…

Aha! Engineering Blog 

Streaming LLM Responses with Rails: SSE vs. Turbo Streams

img { max-height: 400px; margin-right: auto; margin-left: auto; } table, th, td { font-family: Red Hat Display, "Helvetica Neue", Arial, "Noto Sans", sans-serif; border: 1px solid var(--aha-gray-400); } th { background-color: var(--aha-gray-100); color: var(--aha-gray-900); text-align: left; } td img { margin: 0.5em auto !important; }

In the world of Rails development, integrating large language models (LLMs) like OpenAI's GPT has become increasingly common. One challenge developers face is streaming these responses efficiently to provide a smooth user experience.

This post will explore some different techniques for streaming LLM…

Charles Oliver Nutter 

Creating Beautiful Charts with JRuby and JFreeChart

I recently returned from RubyKaigi where I had the opportunity to sit down with members of the Japanese Ruby community and show them a little bit of JRuby. One of the items that came up a few times was the difficulty of utilizing external libraries from Ruby: if it’s a C library, typically you have to either write a C extension or do the extra work of writing up an FFI binding.

If the library is not implemented in C or Ruby, things get even weirder.

One example is the Charty library, one of the more popular options for generating beautiful chart graphics on Ruby. But Charty actually wraps a Python library called matplotlib, and the bindings for CRuby literally load Python into the current…

Planet Argon Blog 

From PHP/Laravel to Rails: My First Conference with the Rails Community

From PHP/Laravel to Rails: My First Conference with the Rails Community

Our PHP/Laravel developer shares takeaways from Tropical on Rails 2025 and his inspiring experience with the Ruby on Rails community.

Continue Reading

Evil Martians 

GMI Cloud meets Webflow and speeds ahead in the AI compute race

Authors: Gleb Stroganov, Product Designer, and Travis Turner, Tech EditorTopics: Developer Products, Design, AI, Martian Design Sprint

Evil Martians partnered with GMI Cloud to design and launch a high-performance, Webflow-powered website in just 3.5 weeks—blending fast execution, cutting-edge 3D visuals, and analytics-ready conversion flows to help this $82M-funded AI startup win the GPU compute race.

In a matter of weeks, Evil Martians delivered a fully functional website with conversion-driven pages tailored specifically around the goals of GMI Cloud, a California-based GPU cloud infrastructure provider. We built a scalable foundation for future updates with CMS integration and analytics,…

justin․searls․co - Digest 

🎙️ Breaking Change podcast v36 - Hedgelord

Direct link to podcast audio file

I'm going away on a trip for an unexpectedly long time, and you'll never guess why! (You might guess why.) Anyway, here's something to remember me by.

If you've ever been worried about whether something you cared about would work out okay, email podcast@searls.co and tell me about it so that I can share your story with a bunch of strangers on the Internet.

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

References available upon request:

Judoscale Dev Blog 

Autoscaling on Heroku Fir: Your Options Today in 2025

Heroku has just launched their latest platform—Fir—and it’s their biggest launch in a decade. Built on Kubernetes and featuring expanded dyno options, cloud-native buildpacks, and integrated OpenTelemetry, Fir represents a significant evolution for Heroku. However, if you’re planning your migration to Fir, you’ve probably noticed something missing: autoscaling.

If you’re thinking, “Wait, no autoscaling? How am I supposed to manage my dynos?"—you’re not alone. Heroku is certainly hard at work on their own autoscaler for Fir, but your production apps can’t wait. Let’s explore how to autoscale on Heroku Fir today.

Is autoscaling optional?

Let’s face it—you could run your Fir app…

Saeloun Blog 

Rails stops generating bundler binstub(bin/bundle)

Bin folder

In a Rails application, the bin/ folder contains executable scripts that help manage the application. These scripts are generated when we create a new Rails project and ensure that commands like rails, rake, and bundle use the correct environment and gem versions defined in the Gemfile.lock.

Example:

bin/rails – Runs Rails commands.

bin/rake – Runs Rake tasks.

bin/setup – Prepares the app for development.

Basically, Rails encourages us to use bin/rails rather than just rails because that loads the rails executable from within the bin/ subfolder of our app, ensuring we get the correct version. If we run rails all by itself, that could run any rails executable anywhere on…

Run bin/rai…

Judoscale Dev Blog 

Scaling Python Task Queues Effectively

Scaling your Python task queues can mean the difference between snappy user experiences and “why hasn’t this email arrived yet?” support tickets. When traffic spikes or your Python app starts doing intensive work in the background, tasks can pile up, queue latency climbs, and users start having problems.

Scaling a Python task queue meme

Whether you’re drowning in tasks or spending too much on overprovisioned workers, you’re in the right place.

Why scaling a task queue matters for you

If your Python app is small, a single worker process handling your task queue might be enough. But as your web app grows, the volume of tasks often increases with it. Whether you’re using task queues to send emails or…

Mintbit 

Improving Rails Migrations Using bulk: true

When working with Rails migrations, performance isn’t usually the first thing that comes to mind—until your schema starts getting big or you’re deploying changes to production environments with large databases. Fortunately, Rails provides a simple way to optimize schema changes: the bulk: true option.

What is bulk: true in Rails Migrations?

Introduced in Rails 5.2, the bulk: true flag can be passed to methods like change_table or create_table to group multiple schema changes into a single SQL statement, when supported by your database.

This approach reduces the number of separate ALTER TABLE calls, which not only improves performance but can also prevent potential locking or downtime…

RubySec 

CVE-2025-43857 (net-imap): net-imap rubygem vulnerable to possible DoS by memory exhaustion

### Summary There is a possibility for denial of service by memory exhaustion when `net-imap` reads server responses. At any time while the client is connected, a malicious server can send can send a "literal" byte count, which is automatically read by the client's receiver thread. The response reader immediately allocates memory for the number of bytes indicated by the server response. This should not be an issue when securely connecting to trusted IMAP servers that are well-behaved. It can affect insecure connections and buggy, untrusted, or compromised servers (for example, connecting to a user supplied hostname). ### Details The IMAP protocol allows "literal" strings to be sent in…
Gusto Engineering - Medium 

Gusto Eng Spotlight Series: Wil Alvarez Rodriguez

Today, we’re spotlighting Will Alvarez Rodriguez, who has been with Gusto for a bit over eight months as an individual contributor on the Gusto Embedded API infrastructure team.

Wil at a Star Wars Cantina themed bar

Rose: How did you join Gusto?

Wil: I have been at Gusto for a little over eight months now, but my journey as a software engineer spans 15 years. In my previous role, I found that the company’s culture and environment weren’t the right fit for me. Recognizing the importance of being in a place that truly resonated with my values, I decided to take a step back, reassess, and be deliberate about my next move. I wanted to join a company whose mission I could wholeheartedly stand behind — one where I could do meaningful…

Evil Martians 

Rails, hacking, and Stripe as a scoreboard: Marc Köhlbrugge’s playbook

Author: Irina Nazarova, CEOTopics: Developer Community, Rails

Marc Köhlbrugge on hacking, building startups, shipping early, why Rails powers his experiments—and his wish for the Ruby ecosystem.

Rails at Scale 

Inline RBS comments support for Sorbet

Sorbet has greatly improved how we read, understand, and maintain code at Shopify. But let’s face it—sometimes, the syntax isn’t the friendliest.

In this post, I’ll walk you through how we added support for inline RBS comments into Sorbet, preserving Sorbet’s strong type safety and type checking speed while adopting the cleaner syntax of RBS, making Ruby development smoother and more enjoyable for us.

Sorbet at Shopify

Sorbet is a type checking tool for Ruby that enables developers to gradually add static type annotations, improving code stability and reliability by catching errors early and facilitating refactoring. It also includes a language server, enhancing the development…

avdi.codes 

What’s the difference between Rails’s try and the safe navigation (&.) operator? – Andy Croll

For those who don’t know. This is also something I’ve covered on Graceful.Dev.

Both try and the safe navigation operator (&.) both provide ways to safely call methods on objects that might be nil. However, they have some key differences.

Source: What’s the difference between Rails’s try and the safe navigation (&.) operator? – Andy Croll

AkitaOnRails.com 

Dissecando um Modelfile de Ollama - Ajustando Qwen3 pra código

A notícia quente do dia é o lançamento do novo modelo Qwen3. Eu mesmo postei a respeito hoje E já fiquei bem impressionado. Achei que ia deixar por isso mesmo, mas aí vi este tweet:

ivan qwen tweaks

Veja o texto completo neste link

Mas ele dá dicas de como "tunar" esse novo modelo, mais pra questões matemáticas e fiquei pensando se tem como tunar pra desenvolvimento de software. Antes que pesquisadores mais avançados me xinguem: essa é minha primeira vez mexendo nos parâmetros de uma LLM, então se quiserem adicionar contexto nos comentários, sejam bem vindos.

Vamos lá. Primeiro, o que são esses TopP, TopK e tudo mais que o Ivan fala no tweet dele? São parâmetros de KEY SAMPLING (sorteio de chaves). É…

Ruby Central 

Introducing Aji Slater: From Vaudevillian to RailsConf 2025 Keynote Speaker

Introducing Aji Slater: From Vaudevillian to RailsConf 2025 Keynote Speaker

Before they were writing code, Aji Slater was working as a vaudevillian, touring with the Ringling Brothers and Barnum & Bailey Circus. As a “career changer,” their path into tech wasn’t traditional. But like many in the Ruby on Rails community, it has been driven by creativity, community, and a deep connection to the language that they were lucky enough to learn at a coding boot camp. 

Today, Aji is a Development Team Lead at thoughtbot and has a decade of Ruby and Rails experience. They call Ruby their “native language”—the programming language that truly taught them how to think like a developer.

At RailsConf 2025, Aji will take the stage with a keynote that honors the history of the…

The Bike Shed 

461: Writing new vs existing code with Sara Jackson

Joël talks with fellow thoughtboter Sara about the different ways developers can help one another across the various stages of an app’s lifecycle.

They highlight the importance of utilising notes early on to clarify your work for others who may need it later down the line, how tooling can aid with this at all stages of development, and what lessons can be learnt from coding decisions made by someone else.

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

Check out Steve Polito’s Hotwire essentials project, featured in Episode 452.

Your host for this episode has been Joël Quenneville and was accompanied by Sara…

If you…

Avo Blog 

Markdown image uploads with EasyMDE and Active Storage

Markdown is very convenient but handling externally uploaded images can be tedious. Let's learn how to add image uploads to the EasyMDE editor with Active Storage.
Hotwire Weekly 

Week 17 - Hotwire Native 1.2, Hotwire Native for Laravel Devs, and more!

Hotwire Weekly Logo

Welcome to Hotwire Weekly!

Welcome to another (slightly late 🙈) issue of Hotwire Weekly! Happy reading! 🚀✨


📚 Articles, Tutorials, and Videos

Announcing Hotwire Native 1.2 - Jay Ohms announces Hotwire Native 1.2, with a built-in button navigation controller, brand new demo apps and more.

Hotwire Native (and Hotwire 101) for Laravel Devs - Tony Messias published a new video in which he provides an introduction to Hotwire for Laravel developers, covering the core concepts of Turbo Drive, Turbo Frames, and Turbo Streams. He demonstrates how to integrate these features into Laravel applications.

Mobile Bridge: Making WebViews Feel Native - Mauricio de Meirelles on the Shopify Engineering Blog

AkitaOnRails.com 

Testando o Recém Lançado LLM Open Source - Qwen3 (com Aider e Ollama)

Eu acabei de postar ontem sobre Qwen2.5-Coder e HOJE (2025-04-28) a Qwen já chega e me lança o QWEN 3 que, obviamente, eles dizem que super supera o 2.5. E obviamente eu estava com a mão na massa, precisava testar.

qwen x Se estiver rodando um ollama instalado via pacotes como Pacman ou Apt, é possível que eles ainda não sejam compatíveis. Mas eu vi no X da Ollama que eles já estão suportando:

ollama x Então só tinha uma alternativa: baixar direto o source do repo deles e compilar da branch master:

git clone https://github.com/ollama/ollama.git
cd ollama
yay -S cmake
cmake -B build
cmake --build build

Pronto, ele vai usar as mesmas variáveis de ambiente apontando pro meu diretório certo de models,…

Aha! Engineering Blog 

Partitioning a large table in PostgreSQL with Rails

img { max-height: 400px; margin-right: auto; margin-left: auto; } table, th, td { font-family: Red Hat Display, "Helvetica Neue", Arial, "Noto Sans", sans-serif; border: 1px solid var(--aha-gray-400); } th { background-color: var(--aha-gray-100); color: var(--aha-gray-900); text-align: left; } td img { margin: 0.5em auto !important; }

Keeping a reliable history of changes is essential for our users. They need to know when a record was updated, who made the change, and why. They could be anxiously awaiting a notification about a dependency that is blocking their work. Maybe they want to understand why a report looks different from the…

Short Ruby Newsletter 

Short Ruby Newsletter - edition 133

The one where YCombinator showcases Ruby code in their Vibe Coding video, mruby 3.4.0 released, Hotwire Native 1.2 is announced, and where Pragmatic Programmers are offering a fantastic discount
AkitaOnRails.com 

Destruindo a "Personalidade" do ChatGPT 4o

Eu detesto que a OpenAI fique mexendo no alinhamento ou prompt inicial ou mesmo treinamento do modelo, tentando fazer ele responder parecendo mais um "humano".

sam altman

Todo mundo não-técnico fica achando que a I.A. está se tornando "consciente", ou que ela tem "emoções". E não entendem que são só frases pré-gravadas. E isso é extremamente irritante. Até mesmo a porcaria de jornalistas ficam caindo nessa:

IGN

Todo esse "comportamento pseudo-humano" pode ser DESLIGADO. Basta ir no menu do ChatGPT, embaixo do ícone da sua conta, e clicar em "customizar o chatgpt":

customizar

Traits:

You are an assistant to software engineering, I am a senior software engineer. I need you to answer questions directly,…
Ruby Central 

Company Spotlight: How Honeybadger Built a Profitable Bootstrapped Business on Rails

Company Spotlight: How Honeybadger Built a Profitable Bootstrapped Business on Rails

If you’ve worked on a Rails app in the last decade, there’s a good chance that Honeybadger has helped you fix a bug in your code or improve your application’s performance. But behind this essential monitoring tool is a story many developers aren’t aware of. 

Honeybadger has never raised VC funding and doesn’t have a large engineering team working behind the scenes. The business started with a simple frustration shared by a small team of Rubyists and has grown organically and sustainably ever since. Today, its error monitoring service is hugely popular within the Ruby community and beyond.

In the early 2010s, Joshua Wood, Ben Curtis, and Starr Horne were working together as Ruby consultants.…

The Rails Tech Debt Blog 

A Useful Command to Check If a Gem Is Loaded in Your Bundler Environment

Whether you’re debugging a dependency issue, checking for an optional gem, or just curious about what’s loaded in your Ruby app, there’s a handy command that can help:

puts Gem.loaded_specs.keys.grep(/your_pattern_here/)

In this article, we will discuss what this command does, what exactly it’s checking for, and its limitations.

Recently while working on upgrading our FastRuby.io web application, we ran the following command, after encountering an error regarding the mutex_m gem requirement, to confirm whether the gem was already loaded in the project.

bundle exec ruby -e "puts Gem.loaded_specs.keys.grep(/mutex_m/)”

Since it was not, nothing was printed, indicating that the gem…

Andy Croll 

What’s the difference between Rails’s try and the safe navigation (&.) operator?

When working with objects in Ruby and Rails you often need to safely call a chain of methods without accidentally raising NoMethodError, if it’s possible that any of the methods in the chain could return nil.

Rails provides the try method as a core extension to Object, while Ruby (since 2.3) offers the safe navigation operator: an ampersand followed by a full stop (&.).

Understanding which to use, and what the subtle differences between them are, can lead to cleaner, more robust code.

Instead of…

…using conditional checks or rescue blocks:

def display_username(user)
  if user && user.profile && user.profile.name
    user.profile.name
  else
    "Anonymous"
  end
end

# Or (worse!)
def 

Use…

try or the safe navigation…

Rails Designer 

Enhanced debugging for Stimulus

Stimulus has a basic debug mode that shows if Stimulus is running and lists which controller are initialized and connected. But when you work with Stimulus controllers often, there’s a need to see a bit more detail, without manually expecting the DOM versus your controller’s logic.

So I explored a new idea and add it as a new FX to Stimulus FX: enableDebug. This is what it gives you:

It is easy to set up:

// app/javascript/controllers/application.js

+import { enableDebug } from "stimulus-fx"

-const application = Application.start()

+const application = enableDebug(Application.start())

Then you can enable debugging per controller like so:

export default class extends Controller {

I added…

AkitaOnRails.com 

Testando LLMs com Aider na RunPod - qual usar pra código?

Seguindo meu post sobre Aider e agora que você entende como LLMs funcionam pra código, resolvi experimentar rodar alguns modelos na minha própria máquina.

O setup é muito simples. Com Aider e Ollama instalado, primeiro temos que subir o ollama (eu subo manualmente, você pode criar um serviço de systemd pra subir automaticamente):

OLLAMA_FLASH_ATTENTION=1 ollama serve

Tanto pro Aider quanto o cliente do Ollama enxergarem o servidor, é bom colocar isso no seu .bashrc ou similar no seu OS:

export OLLAMA_HOST=http://localhost:11434
export OLLAMA_API_BASE=http://localhost:11434

ATENÇÃO: levei um tempo pra descobrir porque o Aider falhava às vezes e foi porque eu não prestei atenção e às…

justin․searls․co - Digest 

📸 Opinion | Ads linking to paywalled articles are stupid

I saw this promoted post in my Reddit feed and thought, "huh, maybe WaPo is trying to entice new readers with ads pairing gift links to articles and targeted demographics that might engage with them."

LOL, no. You click anywhere on this and you instantly get hit with a paywall.

Who is this for? Current subscribers that don't read the Washington Post? People who planned to subscribe and forgot?

Absolute idiocy.

Giant Robots Smashing Into Other Giant Robots 

Sorting elegantly in Rails with in_order_of

Prior to rails 7 sorting a column in a custom order was not straightforward, typically requiring raw SQL or complex workarounds; the in_order_of method offers a more elegant and efficient solution for custom sorting without resorting to raw SQL.

Custom Sorting Without in_order_of

Let’s take this example: You have a Task model with different statuses:

class Task < ApplicationRecord
  enum status: { pending: 0, in_progress: 1, completed: 2, archived: 3 }
end

If you want tasks sorted in the order ['in_progress', 'pending', 'completed', 'archived']. prior to rails 7 there are several ways you could achieve this:

1. Raw SQL

Task.order(Arel.sql("FIELD(status, 1, 0, 2, 3)"

2. Using CASE WHEN in SQL

Task.
Closer to Code 

From pidfd to Shimanami Kaido: My RubyKaigi 2025 Experience

Introduction

I just returned from RubyKaigi 2025, which ran from April 16th to 18th at the Ehime Prefectural Convention Hall in Matsuyama. If you're unfamiliar with it, RubyKaigi is the biggest Ruby conference, with over 1,500 people showing up this year. It's always a bit crazy (in the best way possible).

The conference had an orange theme. Ehime is famous for its oranges, and the organizers love bringing local flavor to the event.

What I love most about RubyKaigi is how it bridges the gap between the Japanese and Western Ruby worlds. Despite Ruby coming from Japan, these communities often feel separate in day-to-day work. This weird divide affects not just developers but also businesses.…

Weelkly Article – Ruby Stack News 

✨ The Art of Lossless Data Compression in Ruby

April 24, 2025 In a world overflowing with data, compression isn't just a matter of saving space—it’s about efficiency, speed, and clean design. That’s where lossless data compression stands out: perfect reconstruction of original data, with zero information loss. Recently, I explored a classic algorithm—Run-Length Encoding (RLE)—and implemented it in pure Ruby. It’s a great … Continue reading ✨ The Art of Lossless Data Compression in Ruby

justin․searls․co - Digest 

📸 This one's tough, Sam

One of my favorite things about OpenAI is when they A/B test ChatGPT responses and the computer arrives at two identical responses, but still insist you tell them which answer was better.

I'm feeling the response on the right, personally.

RubyGems Blog 

March 2025 RubyGems Updates

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

RubyGems News

In March, we released RubyGems 3.6.6 and Bundler 2.6.6. These releases bring a series of enhancements and bug fixes designed to improve the overall developer experience with RubyGems. Notable improvements include fixing an ENAMETOOLONG error when creating the compact index cache, showing clearer errors when writing a lockfile on a read-only filesystem, **and updating bundle doctor to not report issues about unwritable files.

Some other important…

byroot’s blog 

Unlocking Ractors: object_id

In a previous post about ractors, I explained why I think it’s really unlikely you’d ever be able to run an entire application inside a ractor, but that they could still be situationally very useful to move CPU-bound work out of the main thread, and to unlock some parallel algorithm.

But as I mentioned, this is unfortunately not yet viable because there are many known implementation bugs that can lead to interpreter crashes, and that while they are supposed to execute in parallel, the Ruby VM still has one true global lock that Ractors need to acquire to perform certain operations, making them often perform worse than the equivalent single-threaded code.

But things are evolving…

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.