RubyConf 2021
as the organisers put it
Focused on fostering the Ruby programming language and the robust community that has sprung up around it, RubyConf brings together Rubyists both established and new to discuss emerging ideas, collaborate, and socialize in some of the best locations in the US.
who it's for
Ruby developers, Rails developers, backend engineers, engineering managers, test and QA engineers, tooling and infrastructure engineers
topics
RBS and TypeProf static typing; Ractors isolated parallelism; YJIT and MJIT JITs; TenderJIT native-code JITing; Sorbet with LLVM compilation; method metaprogramming techniques; optimizing Ruby memory layout; parallel testing with Ractors; Rubocop security linting; automated API documentation with Rswag; Docker for Rubyists; debugging and partial backtraces
| title | author | length |
|---|---|---|
| Keynote: Beyond Ruby3.0 | yukihiro Matsumoto 'Matz' | 47m |
Ruby 3.0 ships concrete features not promises: RBS and TypeProf enable static typing via external signatures and abstract interpretation rather than language… | ||
| Some Assembly Required | Aaron Patterson | 36m |
Builds a pure Ruby JIT called TenderJIT that actually emits x86 machine bytes with an assembler library fisk, writes them into executable memory and calls… | ||
| Keynote: Finding Purpose and Cultivating Spirituality | Andrea Guendelman | 46m |
Leaves a legal career after twelve years, builds a 2015 social network for Latinos that lacks a business model, iterates into Wall Breakers and by 2020–2021 it… | ||
| Your Team, as Saga | Betsy Haibel | 29m |
Argues teams reshape behavior by editing the stories they tell, using concrete techniques: MICE system for classifying conflicts, world‑building to expose… | ||
| Delightfully Fashionable Lemurs in Decorating Ruby | Brandon Weaver | 30m |
Explains concrete decorators: builds a caching wrapper by capturing instance_method and the unbound method then using define_method to rebind and store… | ||
| Job Fair Part 1: Weedmaps, MX, and Doximity | Weedmaps, Doximity | 24m |
Three companies state concrete scale and engineering facts so decisions rest on numbers not buzz. mx reports partnerships with over 2,000 banks and credit… | ||
| Job Fair Part 2: Homebot, Vimeo, and Grailed | Homebot, Vimeo, Grailed | 35m |
Three companies state concrete scale and tech: Homebot is a Denver startup claiming to help people build retirement wealth from home equity, runs Ruby on Rails… | ||
| Parsing Ruby | Kevin Newton | 32m |
Builds a simple grammar, implements lexical tokenization and shift/reduce parsing, and shows concrete tradeoffs: the standard-library Ripper hooks scanner and… | ||
| Taking the 737 to the Max | Nickolas Means | 32m |
A detailed timeline ties specific design choices to outcomes: Boeing adds MCAS to mimic older 737 handling, lets it run from a single angle-of-attack sensor… | ||
| Lightning Talks | Evan Phoenix | 42m |
Session runs as many five-minute slots and delivers specific takeaways: a tool called gitlint commit-hook that enforces subject/body rules and shows… | ||
| On Being an Early Career Dev in Your 30s | Ben Greenberg | 31m |
Argues that second‑career devs hit two friction points: hiring filters that label résumés overqualified but underprepared and pay‑cut privilege that narrows… | ||
| Q&A with Matz | Evan Phoenix, yukihiro Matsumoto 'Matz' | 36m |
Announces YJIT in Ruby 3.1 with MJIT kept for non‑x86 and hotspot optimization, runtime choosing JITs by profiling, and a public release target around… | ||
| Keynote: On the Care and Feeding of Feedback Cycles | Elisabeth Hendrickson | 45m |
Argues for shrinking feedback loops with concrete changes: remove Gerrit removed style long PR queues, switch to live on main or pairing so merges happen in… | ||
| Fake Your Test Away: How To Abuse Your Test Doubles | Jenny Shih | 27m |
Claims that overused test doubles make suites brittle and unhelpful and shows concrete fixes in Ruby: a few real examples with ActiveRecord callbacks… | ||
| The Mindset of Debugging | Kyle d'Oliveira | 26m |
Sets a repeatable debugging process: observe, form a hypothesis, run an experiment, analyze, repeat. Walks through a concrete customer bug where contact phone… | ||
| Your First Open-Source Contribution | Rachael Wright Munn | 32m |
Explains step‑by‑step how to find a repo, read contributing.md, fork the repo and reproduce an issue, prefer projects with docker and Codespaces and a familiar… | ||
| I Read It But Don’t Get It, or How to Tackle Technical Texts | Steve Lynch | 32m |
Claim: readers who make thinking visible learn technical books faster by using three focus questions and tracking notes. Concrete tools are index card + sticky… | ||
| The Audacious Array | Ariel Caplan | 38m |
Claim: Ruby arrays serve as randomizer/sample(n), 2D map via transpose.reverse/rotate, stack/queue via push/pop/unshift/shift, and as set-like containers with… | ||
| To mock, or not to mock? | Emily Giurleo | 28m |
Concrete rule set: use mocks when one of three questions is true — the test uses expensive resources, the code is non‑deterministic, or the component’s state… | ||
| Blank Page Panic! Creating Confidence with TDD | Elayne Juten | 21m |
Whiteboard fear becomes a repeatable process: write pseudocode dump then focused specs, drive code with Test-Driven Development and RSpec, follow each failing… | ||
| The art of deleting code | Claudio Baccigalupo | 27m |
Describes a repeatable process that actually removed 50,000 lines of Ruby code at work, using concrete tools: git blame, git log --follow, git bisect to find… | ||
| Learning Ractor with Raft | Micah Gates | 29m |
Builds a simple Raft implementation from scratch inside one Ruby process using Ractor, creating five Ractors that elect a leader, append and replicate an… | ||
| Vertical Assignment in Ruby | Kevin Kuchta | 25m |
Claims a working vertical assignment by adding a vequals operator implemented as a unicode token, and demonstrates it with Ripper and TracePoint plus eval and… | ||
| Keeping Developers Happy with a Fast CI | Christian Bruckmayer | 28m |
Shopify runs ~210,000 Ruby tests (adding ~30,000/year), executes ~1,000 builds/day and ~100M test runs/day, and treats CI as production: Buildkite + Google… | ||
| Schrödinger's Error: Living In the grey area of Exceptions | Sweta Sanghavi | 27m |
Practical process experiments and concrete tooling notes: a rotating triage role with a 15-minute time box, Honeybadger-based tooling nicknamed Badger Judy, an… | ||
| Automating Legacy Desktop Applications with JRuby and Sikuli | Chris Cha | 24m |
Builds a reproducible Windows VM with Vagrant + VirtualBox, maps a network drive via an exported scheduled task XML, and boots a Java 8 environment that… | ||
| Ruby Archaeology | Nick Schwaderer | 30m |
A Vagrant box runs Ruby 1.8.7 via Vagrant box on a modern machine, pointing apt to archived 2008 packages and installing gems by downloading .gem files and… | ||
| Service Objects With Dry.rb: Monads and Transactions | Paul Sadauskas | 30m |
Claims that Dry::Transaction turns chains of service objects into explicit sequential steps with success/failure monads, using dry-monads and dry-validation… | ||
| The Science and Magic of Debugging | Vaidehi Joshi | 31m |
Debugging maps to higher cognitive work: the talk claims bugs are found by iterating a hypothesis cycle that mirrors the scientific method and climbs Bloom's… | ||
| How to Make a Gem of a Gem | Justin Searls | 31m |
Forty‑one personal gems exist, and the workflow shows how to scaffold with bundle gem, run tests and lint, then ship via rake release (versions start at… | ||
| How GitHub uses linters | Joel Hawksley | 31m |
Company-scale linters keep a 1.7+ million‑line Ruby monorepo coherent across 1000+ engineers: examples include about 100 sentinel nudges (regex pull‑request… | ||
| Building Native Extensions. This Could Take A While... | Mike Dalessio | 30m |
Covers the concrete how and why of shipping native Ruby extensions: use mkmf and extconf.rb to compile, use miniporie or bundled tarballs to build upstream… | ||
| Dishonest Software: Fighting Back Against the Industry Norms | Jason Meller | 31m |
Built a network tap pipeline capturing pcapp traffic and inspecting with Wireshark to spot APT exfiltration via chunked RAR over FTP; deleted staged archives… | ||
| Problem Solving Through Pair Programming | Emily Harber | 28m |
Pair programming speeds onboarding, raises code quality through continuous review, and converted a mentee into a permanent hire after regular sessions. Remote… | ||
| Why we worry about all the wrong things | Hilary Stohs-Krause | 25m |
Argument shows concrete numbers and usable tactics: spiders 12 of 40,000 species are venomous (0.0003%), commercial US flights had zero fatalities 2009–2019… | ||
| Reframing Shame & Embracing Mistakes | Jameson Hampton | 28m |
Case study of the GitLab outage details 18 hours of downtime and ~300 GB of irrecoverable data, a public 21‑minute postmortem, and a promotion for the… | ||
| Contractualism + Software Engineering: We're All In This Together | Katya Dreyer Oren | 28m |
Argues that contractualism — judging actions by whether any affected person could reasonably reject them — gives concrete decision rules for engineers… | ||
| The Algorithm Ate My Homework | Yechiel Kalmenson | 26m |
Argues that responsibility hinges on concrete failures not abstract topics and claims current AIs lack moral agency: a video-interview scorer flips rankings… | ||
| Squashing Security Bugs with Rubocop | Omar | 27m |
Betterment uses RuboCop to ship custom RuboCop cops that match AST shapes with node_pattern and flag real issues like unsafe evals and unscoped model.find from… | ||
| Gradual Typing in Ruby - A Three Year... | Ufuk Kayserilioglu, Alexandre Terrasa | 32m |
Shopify reports three years of gradual typing with Sorbet over ~40,000 Ruby files, Sorbet parsing the tree in ~25 seconds and roughly 39,000 files marked typed… | ||
| Acidic Jobs: A Layman's Guide to Job Bliss | Stephen Margheim | 28m |
Argues for making jobs idempotent and transactional by using a job run model that records runs, locks rows, and stores a recovery point so multi-step workflows… | ||
| Joyful Polyglot: Beautiful insights from many languages | Nick Barone | 24m |
Shows four concrete cross-language patterns and working code: curried functions (JavaScript recomposed, ported to Ruby for S3 movers) that yield clear… | ||
| Drones Galore: controlling multiple drones using mruby/ruby | Shashank Daté | 30m |
Explains a concrete workflow: control Tello drones over UDP sockets from ruby and mruby, compile mruby with the socket core gem and run the same code without… | ||
| Mixed Reality Robotics Simulation with Ruby | Kota Weaver | 31m |
A mixed‑reality rig merges live robot sensors with a simple DragonRuby simulation projected onto the floor, using a ZMQ C extension to stream data; it runs on… | ||
| Achieving Fast Method Metaprogramming: Lessons from.. | Jemma Issroff, Jacob Evelyn | 30m |
MemoWise is a memoization gem built with benchmark-driven development using benchmark-ips, deliberate GC control and concrete microbenchmarks; it replaces… | ||
| YJIT - Building a new JIT Compiler inside CRuby | Maxime Chevalier Boisvert | 30m |
YJIT is a new JIT compiled into CRuby at Shopify that uses lazy basic block versioning and runtime value promotion to specialize machine code only for observed… | ||
| Compiling Ruby to Native Code with Sorbet & LLVM | Jake Zimmerman, Trevor Elliott | 30m |
Stripe builds an ahead‑of‑time compiler that takes Sorbet’s type‑checked control‑flow graph and emits LLVM IR to produce shared objects that call the Ruby C… | ||
| Improving CVAR performance in Ruby 3.1 | Eileen M Uchitelle | 28m |
Announces a concrete change: Ruby 3.1 adds a class variable cache implemented as an inline cache stored on the topmost class that tracks global_cvar_state and… | ||
| Optimizing Partial Backtraces in Ruby 3 | Jeremy Evans | 30m |
Backtrace generation in Ruby 3 changes from scanning outward to scanning inward, producing partial backtraces far faster by avoiding work on irrelevant control… | ||
| MX Hacker's Revenge | MX Hacker's Revenge | 25m |
A conference-sized, thumb-editable assembly-style programming competition gets built as a mobile web UI and Rails backend, using Ruby, Sidekick jobs, rbspy… | ||
| A message from Engineyard | Rahul Subramaniam EY | 04m |
Engine Yard says it placed two bets fifteen years ago: Ruby and AWS, and continues building tooling to hide cloud complexity so developers can code. The claim… | ||
| Sorbet at Grailed: Typing a Large Rails Codebase to Ship with... | Jose Rosello | 30m |
Grailed types a 150,000‑line Rails monolith with Sorbet to reduce nil errors and refactor fear, serving over 7 million users. Tooling includes Tapioca for RBI… | ||
| Scaling Happy Engineering Teams | Zaid Zawaideh | 31m |
Concrete team rules and outcomes: start small with feedback loops, prioritize trust first and empower people to decide while holding them accountable, and… | ||
| Cultivating Developer-Centric DSLs | Jake Anderson | 32m |
Weedmaps ships a production Redis-backed limiter and a small DSL that exposes a memoized rate limiter and a clear class-level config (bucket, global and local… | ||
| Rswag: Automated API Documentation | Sarah Reid | 30m |
Shows how rswag plugs into Rails specs and runs specs to generate an OpenAPI schema, then swaggerize writes swagger.yaml that reflects real responses… | ||
| Just-in-Time Compiling Ruby Regexps on TruffleRuby | Benoit Daloze, Josef Haider | 24m |
TruffleRuby uses Truffle Regex to just-in-time compile Ruby regexps to machine code via GraalVM, replacing backtracking engines like onigmo/joni with… | ||
| Virtual Job Fair: Engine Yard, Wrapbook, Shopify | Wrapbook | 19m |
Wrapbook explains a concrete product: a payroll and onboarding platform for entertainment productions that processed $100M gross payroll last year, reports 28%… | ||
| Virtual Job Fair: Kolide, Fullscript, CZI | Kolide, Fullscript, CZI | 32m |
Three mini company dossiers with concrete signals: Collide claims honest security via a Slack app that ships actionable device fixes, runs Rails (migrating to… | ||
| Meet Shopify's Ruby and Rails Infrastructure Team | rafael franza | 33m |
Focus on concrete outcomes: internal tools like Spin (cloud dev environments) and a Visual Studio Code extension that gives inline Sorbet checks and cross-repo… | ||
| Dismantling Dystopian Futures with Humane Factories | Anthony Navarre | 33m |
Claim: make sample data do more than tests by treating factories as shared operational fixtures. Uses FactoryBot linting, attributes_for in seed rake tasks… | ||
| Workshop: Fundamentals of Joint Cognitive Systems | Laura Maguire, John Allspaw | 01h 56m |
Argues that design details decide success: specifies joint cognitive systems as shared human–machine sensemaking, shows disk-alerts from a nagios default… | ||
| Workshop: Intentional Team Building | Alex Robinson, Will Mitchell | 50m |
Workshop shows concrete steps and outcomes: a case study lives on GitHub and Discord, teams introduce an explicit value (professional development) with a… | ||
| Soup to Nuts: Build a video game using Ruby! | Amir Rajan | 01h 42m |
Builds actual games live using the DragonRuby Game Toolkit, hot‑reloads code, records and replays inputs as plain text replay files, and shows a working Flappy… | ||
| Workshop: Run your first game day | Thai Wood | 01h 08m |
Hands-on guide to running tabletop game days that teach incident response: how to set up a two-hour session, write scenarios by pick a trigger, complication… | ||
| Workshop: Tackling Technical Debt: An Analytical Approach | Chelsea Troy | 01h 36m |
Defines technical debt as maintenance load caused by context loss and gives a concrete metric (percent of developer time) plus examples where that number… | ||
| All comments must be haiku! Custom linting with RuboCop | Scott Moore, Kari Silva | 01h 17m |
Workshop builds a custom RuboCop cop that enforces "all comments must be haiku" by checking comment blocks for three lines and a 5‑7‑5 syllable count. It uses… | ||
| Clean RSpec: A Workshop on Ruby Testing Craftsmanship | Jesse Spevack | 01h 04m |
Workshop shows concrete RSpec refactors: it uses the gilded rose kata and live code exercises to rename ambiguous subject, replace hidden setup with let bang… | ||
| Workshop: How to use flamegraphs to find performance problems | Jade Dickinson | 49m |
Workshop shows how to use Rack Mini Profiler to generate flamegraph visuals, how to read patterns (loops, big horizontal chunks, garbage collection, dependency… | ||
| Workshop: A Gentle Introduction to Docker for Rubyists | Jason Swett | 01h 03m |
Workshop demonstrates how Docker actually operates: create a Dockerfile, build an image from a Dockerfile, run that image to get a container, shell into it and… | ||
| Surprise! Inspiring Resilience | Cory Watson | 31m |
A checklist of specifics: a Formula 2 driver survives a fire extinguisher in cockpit while piloting a ~$500k car at speed, the US Navy keeps a plane guard… | ||
| Picoruby and PRK Firmware | Hitoshi Hasumi | 30m |
PicoRuby is an mruby-derived interpreter and compiler that compiles keymap.rb on-device and hot-reloads it into PRK Firmware, a Ruby keyboard framework that… | ||
| Using Monads for Elegant Error Handling | John Gallagher | 27m |
Argues that replacing rescue-and-nil patterns with a dry-monads result type (concrete Success/Failure values) makes error flow explicit, keeps exceptions for… | ||
| Why Did We Rewrite Our Main Product Four Times? | Leon Hu | 18m |
A reminder system that began as 15 lines of code ends up rewrote four times because scaling and edge cases break naive models; the team moves from simple Rails… | ||
| How to stop breaking other people's things | Lisa Karlin Curtis | 28m |
Defines a breaking change as any API change that makes an integrator’s assumption false and gives concrete examples: changing an error response string… | ||
| Harness the power of functions to build composable rack applications | Marc Busqué | 27m |
Explains how web_pipe turns Rack's two-way middleware model into a one-way pipeline of functions that take and return the same connection struct, letting steps… | ||
| Engineering at Root | Maria Moore | 25m |
Claim: a mobile-first insurance product uses smartphone telematics to price drivers by smooth braking and distracted driving instead of demographics. Built… | ||
| Control methods like a pro: A guide to Ruby's awesomeness, a.k.a. metaprogramming | Masafumi Okura | 29m |
Shows that methods are objects and gives exact recipes: list methods, use method/instance_method to fetch Method and UnboundMethod, bind or unbind, inspect… | ||
| Minimize Your Circus Factor: Building resilient teams | Mercedes Bernard | 31m |
Turnover in tech spikes — four million quit in April, resignations up 4.5%, about 700,000 unfilled jobs — so focus on concrete, low-friction actions that let a… | ||
| Managing Out: Strategies for Leveling Up | Mina Slater | 24m |
Team size more than doubles and mid-level engineers end up as de facto leaders; concrete claim: follow three focused practices — set good examples, use Jira… | ||
| Hello, computer. Writing Ruby with voice recognition | Nat Budin | 29m |
A hand injury leads to learning to code by voice and a live demo of Talon showing real Ruby editing: language-aware commands, an alphabet, command history, and… | ||
| Optimizing Ruby's Memory Layout | Peter Zhu, Matt Valentine-House | 27m |
Proposal moves malloced object payloads into the ruby heap by allocating variable-size slots (power-of-two multiples of the 40‑byte rvalue) and per‑size size… | ||
| Beware the Dreaded Dead End!! | Richard Schneeman | 33m |
The dead_end gem uses ripper to lex and parse source, then runs an outside‑in, uniform‑cost–style search over commented‑out blocks to find the true faulty… | ||
| Dungeons and Collaboration | Rolen Le | 21m |
Claims concrete practices that improve distributed teamwork: use session zero to set expectations, run games on Roll20, pick a ruleset like Dungeon World with… | ||
| Perceptual Learning == More Ruby Experts? | Stefanni Brasil | 26m |
Perceptual Learning (PL) claims to speed pattern recognition and fluency so experts pick up relevant relations automatically and novices do not. A fractions… | ||
| The Intro to Abstraction I Wish I'd Received | Stephanie Minn | 25m |
Argues that abstraction is a concrete skill not a buzzword and shows a failing real example: a Rails app that produces an Excel report via a third party like… | ||
| Optimizing Production Performance with MRI JIT | Takashi Kokubun | 29m |
Claims that MRI JIT finally speeds real Rails apps on Ruby 3.0 and gives measurable wins when tuned: use Ruby 3.0.0 (3.0.1 is broken, 3.0.2 differs), increase… | ||
| Parallel testing with Ractors - Putting CPU's to work | Vinicius Stock | 27m |
Builds a mini test framework called Loop that runs examples via Ruby 3 Ractors and via traditional process mode and measures wall time: Ractors beat processes… | ||
| Debugging Product Teams | Amy Newell | 26m |
Claim: debugging a product team uses a systems approach with a repeatable cycle — map systems, observe and ask, hypothesize and intervene — not platitudes… | ||
| This is not a talk about airplane crashes | Andromeda Yelton | 33m |
Investigations show specific failures and concrete fixes: Colgan Air 3407 ends with 50 fatalities after pilots increase angle of attack instead of reducing it… | ||
| Async Ruby | Bruno Sutic | 23m |
Async Ruby claims real concurrency for blocking IO by running tasks run concurrently inside an async block, using an event reactor backed by nio4r + libuv… | ||
| A History of Compiling Ruby | Chris Seaton | 32m |
History catalogs at least sixteen attempts to compile Ruby down to machine code, lists concrete outcomes (JRuby runs in production via JVM bytecode… | ||
| Golf Scripting with Ruby - Helping Santa Schedule Christmas | Ely Alvarado | 26m |
An algorithm that turns a house list of naughty and nice counts into a delivery schedule is implemented in Ruby and verified with test cases, using a… | ||
| Black Swan Events in Open Source: That time... | Julia Ferraioli, Amanda Casari | 22m |
Chronicle of three concrete failures: the Morris worm infects ~10% of the Internet in 1988 and forces a security pivot; Heartbleed in OpenSSL exposes 66% of… | ||
| debug.gem: Ruby's new debug functionality | Koichi Sasada | 23m |
A new debugger gem is built from scratch and already released as a gem and slated to ship with Ruby 3.1; it targets Ruby 2.6+ and uses TracePoint internals to… | ||
| Beyond Blameless | Rein Henrichs | 20m |
Claims that "blameless" postmortems sometimes remove necessary learning by forbidding attribution and instead propose concrete fixes: preserve attribution but… | ||
| The Intentional Plan for Intersectionality | Shailvi Wakhlu | 26m |
Claims a concrete three-step plan — awareness, acknowledgement, action — backed by mixed methods: overlapping-shapes thought experiment, cited statistics and… | ||
| Programming with Something | Tom Stuart | 33m |
Shows how to represent proc-encoded code as an AST from procs by calling procs with variable objects and monkey‑patching [], implements Church-style… | ||
| Enjoy Ruby Programming in IDE and TypeProf | Yusuke Endoh | 22m |
Claims that TypeProf bundled in Ruby 3.0 can provide on‑the‑fly error reporting, completion and go‑to‑definition inside VS Code using a TypeProf for IDE… | ||
| Whimsy: Art, Beats & Code | Rachel Green | 10m |
Demonstrates concrete projects and tools rather than abstract motivation: a JavaScript package fish-draw that procedurally generates detailed fish… | ||
| Whimsy: Babies just want to have fun | Ali Ibrahim | 10m |
Builds a toddler-friendly music box, first with a Raspberry Pi and Python script then with an Adafruit audio board, wired to three buttons, requiring… | ||
| Whimsy: Put That Test Down! You don't know where it's been | Michael Dalessio | 12m |
A failing CSS-sanitization test traces through git to a 2007 inSticky case and propagates 14 years across html5lib luffa and Rails, caused by mixed octal/hex… | ||
| Whimsy: Pry Irresponsibly | Riaz Virani | 11m |
Claim: using pry cuts the write‑run cycle to one step by editing live objects and files while the program runs. It demos pry commands that cd into object… | ||
| nothing matches | ||