If David Heinemeier Hansson’s opening keynote at Rails World 2026 felt like “the most confusing funeral I’ve ever experienced,” Aaron Patterson’s closing keynote was the raucous Irish wake that brought the corpse back to life, handed it a pint, and told everyone to get back to their laptops once they’ve sobered up.
The tl;dr table
To appreciate how thoroughly Aaron answered DHH, lI put together a table comparing the two keynotes:
| Metric/stance | DHH opening keynote | Aaron Patterson closing keynote |
| Tone | Aggressive, messianic, defensive, Al Pacino-style lack of “inside voice” | Warm, self-deprecating, deeply technical, hilarious, punctuated often with Aaron’s laughter |
| Mentions of Ruby | 11 times in 63 minutes | The foundational medium of every slide |
| Position on code | “Pencils down.” Hand-writing code is a failure state. | “I’m going to keep reading my code, and I hope that you will too.” |
| Tech stack bet | Discard web apps; vibe-code native apps and black-box Rust. | Invest deeply in Ruby: Ractors, ZJIT, Ractor-local GC in Ruby 4.1. |
| Attitude toward audience | “The black pill is for fucking losers. Don’t be a loser.” | “I do like to spend my weekends counting stack frames. I don’t think that makes me a loser though.” |
| Climactic slide | A warning to take the white pill or get left behind. | Mean Girls meme: “Get in loser, we’re going programming.” |
A tale of two keynotes
“Your AI has not made this promise to you.
There is no ‘As-If Rule’ for your English.
I am not going to concede my destiny to AI.
I’m going to keep reading my code, and I hope that you will too.
Get in loser, we’re going programming.”
— Aaron Patterson (@tenderlove), Rails World 2026 Closing Keynote
The contrast between the two bookends of Rails World 2026 couldn’t have been more stark. It was a clash of two diametrically opposed philosophies.
The opening keynote gave us an embittered, insulated tech executive treating code as disposable corporate slop…

…and for the closing keynote, we got a loveable systems hacker who reminded us why software craftsmanship mattered in the first place:

The Parody: “Aaron XP” and the curse of the slop grenade
Aaron stepped on stage in Austin and wasted zero time skewering DHH’s opening theatrics.
If you watched the video of DHH’s keynote (remember to turn the volume down a little, he’s still deep in his “Al Pacino yelling” phase), you know about breathless obsession with his Linux distro Omarchy, bragging about driving install times down from three minutes to nine seconds, and treating it like the Second Coming of Computing. I half expected him to borrow the line from Deadpool and Wolverine and declare himself Linux Jesus (and hey, it still might happen).
Aaron opened with his own “major announcement”: Not to be outdone, he too had vibe-coded his own Linux distribution, Aaron XP!
“It installs in 100 milliseconds. It’s very important for me to get the install time down because I’m doing that constantly. Wake up in the morning, install my OS. Get some coffee, install my OS. Upgrade Chrome, reinstall the OS… I think it’s ironic to make a joke about the financial crisis and then encourage everybody to generate a whole bunch of Rust code without reading it. I’m going to start selling insurance on technical debt, so come see me afterwards.”
Then came the jab that sent ripples across the room: “slop grenades”.
For anyone tracking the broader industry discourse, the phrase wasn’t just a casual joke; it was a direct nod to Aaron’s ultimate boss (and my former ultimate boss), Shopify CEO Tobi Lütke. A year ago, Lütke made headlines with his sweeping “all-in on AI coding” proclamations, hyping how agentic workflows would supercharge engineering output across Shopify.

Lütke recently took to social media to vent about the grim byproduct of unbridled vibe coding: the “slop grenade”. It’s the result of a developer casually tossing an AI-generated, 2,000-line pull request that took three minutes to generate over the cubicle wall, expecting a human colleague to spend three agonizing hours reviewing it for edge-case horrors.
Aaron leaned right into the irony on stage:
“I know everybody here loves using AI. I do too. I love using AI to make slop grenades, it’s great… But I want to take a poll of the audience here: How many of you like receiving slop grenades?”
In a hall packed with hundreds of engineers, exactly two or three hesitant hands went up in the front row.
The message was undeniable: Generating unchecked tokens is cheap, addictive, and fun for the sender; dealing with the resulting fallout is an asymmetric tax levied on everyone else.
Aaron’s core technical thesis: The “As-If” Rule and why we read code

Where DHH’s talk was a seemingly never-ending, increasingly ranty (and of course, scream-y) collection of Silicon Valley buzzwords, vague analogies about 19th-century Danish portraiture, and unchecked hubris, Aaron gave a masterclass on the mechanics of compilers and runtime semantics.

He grounded his talk in a foundational concept from systems architecture: the “As-If” Rule. In C++ and language runtimes, a compiler is permitted to make any transformation, inline any method, eliminate allocations, or reorder execution, provided that the observable behavior remains strictly identical to the code the programmer wrote.
Aaron walked the audience through the real work being done by the Ruby core and infrastructure teams:
- Parallel execution with ractors: How Ractor-local garbage collection in Ruby 4.1 eliminates singleton GC bottlenecks by giving each Ractor its own isolated heap.
- Interpreter inlining: How Ruby 4.0 inlines method initializations into call sites, stripping stack frames to make object allocations 70% faster without even touching a JIT.
- ZJIT and abstract interpretation: How ZJIT’s high-level intermediate representation (HIR) simulates execution, using algebraic substitution and dead-code elimination to turn a 1,000-allocation Rack loop into just 8 allocations.
Why did this matter? Because of the punchline Aaron delivered at the one-hour mark.
Proponents of vibe coding argue that AI agents are “just another compiler”, and that since you don’t inspect the assembly generated by LLVM or GCC, you shouldn’t care about inspecting the Rust or TypeScript spit out by Claude or GPT.
Aaron obliterated that comparison in two sentences:
“The compiler made a promise to you: the As-If Rule. Whatever it does, the behavior that you can observe matches the code that you wrote. And everything that I showed you in this presentation shows you what it costs to keep that promise.
Your AI has not made this promise to you. There is no As-If Rule for your English.”
There’s no contract when you write ambiguous English prompts into a model, nor is there any mathematical proof of correctness. There’s no guarantee of invariant preservation.
Simply put: Treating code as an opaque black box isn’t high-level visionary leadership; it is reckless abdication.
The real world: When the bots turn against you
Aaron then delivered an astonishing, previously undisclosed case study: the May 2026 RubyGems exploit.
He detailed how automated, AI-driven bots executing the “gem stuffer” attack discovered a Rube Goldberg chain of zero-day vulnerabilities:
- RubyGems webhooked to
rubydoc.info. rubydoc.infoprocessed YARD documentation inside a networked Docker container.- YARD executed arbitrary
.yardoptsconfigurations, invoking malicious scripts. - When the RubyGems team began revoking credentials, the bots independently leveraged a 6-year-old cached HTTP authorization vulnerability behind Fastly to sniff valid maintainer keys.
It was a chilling counterweight to DHH’s utopian fantasy. While DHH urged everyone to blindly delegate business infrastructure to autonomous agents, the security engineers at RubyGems were in the trenches defending against autonomous agent swarms exploiting undocumented edge cases.
And who saved the ecosystem? Not English prompts. Human engineers reading raw code, dissecting diffs, and understanding HTTP packet headers.
Reclaiming MINASWAN: Community over ego
Beyond the technical fireworks, Aaron’s keynote reminded everyone why the Ruby community existed long before DHH’s latest crusade.
Earlier in the conference, DHH talked extensively about himself, his great-great-grandfather, his 20-year-old talks, and his personal productivity stats. His talk had a lot of “Me, me, me”. (It made me wonder if he had a obsessed “human printer” assistant like a certain world leader we all know.)
Aaron used his stage time to bring up Mike Dalessio, a quiet, tireless open-source contributor who has maintained Nokogiri, SQLite3, and Ruby security for two decades. He announced Dalessio’s appointment as the newest member of the Rails Core Team.
It was an intentional, emotional tribute to the values of MINASWAN (“Matz is nice and so we are nice”). It centered the workers, the maintainers, and the collaborative joy of open source.
Early reactions in the comments
As I write this article (Sunday, September 27, 2026, 11:34 p.m. EDT), the video has been up only 4 hours.
The overwhelming sentiment in the comments was one of profound relief mixed with lingering exasperation over the conference’s rocky start.
My favorite was one commenter wry sobriquet for Aaron’s keynote, “Damage control: the talk”.
Another vented about the financial reality of attending: “Ah, good to see a technical talk about Rails in the last day, in the last keynote of this $700 USD event.”
Longtime fans who felt burned by Thursday morning’s eulogy found their footing again, with viewers praising Aaron for actually delivering on the conference’s namesake: “If I want to see talks about AI, I’ll watch talks about AI. I watched Rails World, expecting talks about Rails and its future.”
A few lone voices dismissed Aaron’s plea to keep reading code as an unsustainable luxury that businesses will soon steamroll in pursuit of pure feature velocity. Others immediately countered with the hard reality of accumulated tech debt: companies can afford not to care about code quality until the unreadable slop starts breaking production and costing them customers.
For a community nursing collective whiplash, Aaron’s keynote proved that the heart of Rails is still very much beating, even if its original architect was eager to call time of death.
The verdict: Don’t concede your destiny
DHH opened Rails World 2026 by declaring that the era of human programmers writing code is dead, telling an anxious room of working engineers that caution is for “fucking losers.”
Aaron Patterson closed Rails World 2026 by showing that the people actually building Ruby’s compilers, runtime, and security infrastructure haven’t quit. They’re making the language faster, safer, and more concurrent than it has ever been.
You don’t have to swallow the black pill of defeatist obsolescence, nor do you have to swallow DHH’s white pill of corporate gaslighting and throwaway slop.
As Aaron proved, there is a third way: Remain curious, keep mastering your tools, understand the abstractions beneath your feet, and refuse to surrender your agency.
Get in, loser. We’re going programming.