---
layout: post
title: "My experience at Rails World 2025"
tags:
 - Ruby
 - Ruby on Rails
 - Conferences
image:
  path: /assets/img/posts/rails-world-2025/37signals-team-picture.jpg
  alt: 37signals @ Rails World 2025 -- Team Picture
---

Last week I had the privilege of attending Rails World 2025 in Amsterdam. I learned a ton! and I met lots of amazing people! Here's my story...

## Wednesday -- Early Arrival + Volunteering

I arrived in Amsterdam on Wednesday around noon and went straight to the event venue, [Beurs van Berlage](https://beursvanberlage.com/). There I volunteered by assembling hundreds of the swag bags to be given to attendee and helping various sponsors set up their booths, including debugging a weird issue where a TV appeared to be going to sleep after ~30 seconds, but it turned out that it was rendering some temporary Mac-generated files as blank images. I even received a fancy "CREW" t-shirt!

## Thursday -- Rails World, Day 1

Day 1 was full of amazing presentations, meeting amazing people, and visiting the hilarious Rails World Embassy.

### David Heinemeier Hansson -- End to End Freedom - Opening Keynote

Thanks to jet lag, I woke up late and rushed to the venue, arriving just in time to find a small spot to stand at the back of a huge auditorium as the emcees introduced David Heinemeier Hansson for his keynote.

The presentation served as a great opening for the conference. It introduced many new features coming in Rails 8.1, each of which had a dedicated presentation elsewhere in the conference agenda. It also included an impressive demo of [Omarchy](https://omarchy.org/), a batteries-included remix of Arch Linux optimized for developer productivity, where DHH went from no OS to building a Ruby blog in just over five minutes.

But most of all, I also appreciated the overarching theme of the talk indicated by the questions on the starting/ending slides: "What do you do with a problem?", "What do you do with a chance?" The message was clearly that individuals, like you and me, have the power to build things to improve the world -- we don't have to wait for someone else to add a feature we want or hope that a large organization will change its ways. Instead, we can choose to put our time and talents into efforts that we believe will be beneficial to those around us.

### Mike Dalessio -- Multi-Tenant Rails: Everybody Gets a Database!

At my previous company we were already provisioning a new database for every customer, and by the time I left we had reduced that work from 1-day of button clicking in AWS down to a pair of scripts that ran in 30-60 minutes. It was really neat to see how Mike has made the same thing possible at a dramatically larger scale in the Rails ecosystem, yet in a way that is almost 100% transparent to the rest of the application logic.

### Kevin McConnell -- SQLite Replication with Beamer

I especially appreciated how Kevin's talk presented the internal workings of SQLite. This was the first time I have felt like database internals are approachable!

### Donal McBreen -- Resumable Jobs with Active Job Continuations

The new API for job continuations is elegant, and it was fun to eavesdrop on the complimentary questions Donal answered after the talk. This type of work was also an area of focus at my last job -- particularly how to avoid redoing work in an iterative job that stops due to a crash or forced reboot.

After the talk I also got to have a short personal chat with Donal, where he showed me a really neat way of solving the Rubik's Cube I had heard of but hadn't seen anyone use before. 

### Miles McGuire -- Taming the Beast: Safely Managing Database Operations in Rails in a Team of 100s

Miles showcased several static-time and run-time checks Intercom has built to detect/prevent database migrations that would likely bring down production. Super interesting to learn more situations to be aware of when writing my own database migrations.

### Joe Masilotti -- Hotwire Native - Closing Keynote

It was neat to see Joe's latest work on a solid set of starting native components for Hotwire. My mobile background is more rooted in the React Native ecosystem, and it is neat to see the Hotwire ecosystem build out more of the tooling that lowers the barrier of entry to newcomers.

### The Ruby Embassy

It felt a bit like the opening of "A Hitchhiker's Guide to the Galaxy" -- to get to the embassy you had to find a partially hidden stair case, climb up and around, follow a hallway, then wrap around a balcony to reach one of the most remote parts of the conference space. Once at the door, embassy "security" checked each person by waved a metal detector which was actually a toy, red lightsaber.

After clearing security, the first order of business was to fill out an application for admittance to the "Rails World". There were multiple variations of the form, each of which was completely full of ridiculous questions like "How many beans are on planet earth (accurate to +- 3)?". While waiting in line to hand your application to a reviewer, I read a poster on the wall enumerating the rules of the embassy, and made particular note of item 5.2, "The term 'Embassy Worker' shall herein refer to any individual who, at any moment, declares themself to be one."

After passing through a photo booth which acted both as a mugshot and a passport photo machine, I had my turn facing the questioning from the application reviewers. After being cross checked against the "no-fun" list and thoroughly questioned about the number of socks on my person, I was approved to continue. But, before leaving the table, I casually noted that this had all been a formality since I was actually embassy staff per rule 5.2. To my surprise, I was immediately offered a chair as an application reviewer where I spent the next 20 minutes doing ridiculous questioning of each visitor based on their ridiculous application answers.

Overall, tremendous fun!

![Joseph working at the application review table after self-declaring himself Embassy Staff](/assets/img/posts/rails-world-2025/joseph-working-at-the-rails-world-embassy.jpeg)


## Friday -- Rails World, Day 2

Friday was also informative and enjoyable. 

### Hiroshi Shibata, Aaron Patterson, Jean Boussier, Robby Russell -- Ruby & Rails - a Chat with Maintainers

Super interesting to listen to this chat about the maintenance of Ruby on Rails. Tons of jokes and also a great place to hear more about the history leading up to the Rails of today. It was especially neat to see Aaron live-translate some of the questions into Japanese to better include Hiroshi in the conversation. That definitely added to the "World" theme of the conference.

### Paweł Strzałkowski -- Make Rails AI-Ready by Design with the Model Context Protocol

Paweł showcased a new set of bin/rails generators that added MCP server support to a Rails app. Super interesting, and after the talk I chatted with a coworker about the presentation and we discussed some potential ways to simplify the approach even further.

### Rosa Gutiérrez -- Bringing Offline Mode to Hotwire with Service Workers

This talk was so fun and informative! Rosa did an amazing job combining technical insights into a humorous, relatable story about the twists and turns of figuring out a frustrating bit of technology #revert-revert-revert. Like Kevin's talk did for databases, this talk made service workers feel approachable for the first time too!

### Jason Meller -- Passkeys Have Problems, but So Will You If You Ignore Them

Jason strongly advocated for phishing resistant authentication like emailed "magic links" and passkeys. The point I found most compelling was the need for authentication methods which can validate the domain -- essentially expanding security from the trio of "what you know, what you have, what you are" to also include "where you are entering that information".

### Andrew Mcnamara, Charlie Lee -- LLM Evaluations & Reinforcement Learning for Shopify Sidekick on Rails

Andrew and Charlie talked about Shopify's approach to designing/evaluating customer-facing LLM tools. I appreciated their systematic approach. The part that stood out the most was how they asked their PMs to annotate good/bad responses, then measured the humans' disagreement to obtain a "theoretical max" for the AI chatbot's performance, which I thought was surprisingly low (60-70% for their use case). It was a refreshingly honest presentation about how to effectively integrated LLMs and ensure that they are meaningful/helpful.

### Aaron Patterson -- Performance Wins in Ruby 3.5 - Closing Keynote

This closing keynote was excellent. The jokes were funny, and the technical deep dives were incredibly insightful. The work he presented about the new ZJIT compiler, specifically optimizations related to eliminating runtime type checks, reminded me of similar work in the Python and JavaScript ecosystems, both of which have been adopting "gradual type hints/annotations" as tools which can help the JIT optimize the code even further.

## Final Thoughts

As I said at the start, this was a fun conference where I learned a ton and met many amazing people. It was an honor to attend and I look forward to growing my involvement in the Ruby and Rails communities!
