Upcoming Talks
Get in touch at eileencodes@gmail.com if you’d like me to speak at your upcoming conference. I’m only interested in in-person live events at this time.
Past Talks
The Myth of the Modular Monolith
As Rails applications grow over time and turn into a so-called “ball of mud”, organizations ask themselves what’s next? Should we stay the course with a monolith or migrate to microservices? At Shopify we went down the path of modularizing our monolith and since then GitHub, Gusto, and others have followed our lead. But after 6 years it’s time to ask ourselves: “Did we fix what we set out to fix? Is this better than before?”
Rails Wolrd Day 2 Opening Keynote | Toronto, CA | September 27, 2024
Slides | Video
The Magic of Rails
Today we’re going to explore the magic of Rails. We’ll look at the philosophy behind the framework as well as the overall structure of the components. We’ll explore some of the common patterns that Rails uses to build agnostic and beautiful interfaces, and the techniques it implements to hide complexity so you can focus building your application. By the end of this talk you’ll feel more confident navigating the Rails codebase and better understand the patterns it uses to create the framework we all know and love. But Rails is so much more than its design and architecture. We’ll dive into my motivations for working on the framework and why the community is so important to the long term success of Rails.
RailsConf Opening Keynote | Atlanta, GA | April 24, 2023
Slides | Video
Brighton Ruby Opening Keynote | Brighton, UK | June 30, 2023
Slides
Rails World Day 1 Closing Keynote | Amsterdam, NE | October 5, 2023
Slides | Video
Exit(ing) through the YJIT
When optimizing code for the YJIT compiler it can be difficult to figure out what code is exiting and why. While working on tracing exits in a Ruby codebase, I found myself wishing we had a tool to reveal the exact line that was causing exits to occur. We set to work on building that functionality into Ruby and now we are able to see every side-exit and why. In this talk we’ll learn about side-exits and how we built a tracer for them. We’ll explore the original implementation, how we rewrote it in Rust, and lastly why it’s so important to always ask “can I make what I built even better?”
RubyConf | Houston, TX | December 1, 2022
Slides | Video
The Success of Ruby on Rails: Ensuring Growth for the Next 100 Years
As a member of the Rails Core Team and someone who has made working on the framework, not only a passion but also a career, I spend a lot of time thinking about how to ensure Rails is not simply sustainable for the next 100 years but a growing, thriving, framework and community.
I’ve been mulling over the topic of this talk for a few years now and it was born out of a growing frustration that companies don’t see the value in contributing to Rails. Leaders I’ve talked to don’t think open source contributions are essential or an investment they should make. At best they see contributing to Rails as something they let employees to do occasionally on open source Fridays or as part of a hackweek. At worst they see it as not their concern, they think it’s someone else’s responsibility to make Rails better for them.
The truth is that Rails as a framework isn’t going anywhere. It will continue to evolve and grow. But is that really what Rails needs? How much better could Rails be if more of companies were contributing?
In this talk we’ll dive into the history of Rails from version 0 to today. We’ll look at how Shopify became a contributor on day one and why we continue investing in the framework today. In order to break down the mystery around contributing, we’ll learn about the Rails governance structure and our guidelines for how to contribute.
Lastly we’ll look at why leaders think contributing to open source is risky and how we can dismantle those beliefs and build a stronger community around Rails. Throughout this talk I’ll help you develop the tools and ideas we need to ensure Rails’ success and growth for the next 100 years.
RailsConf Keynote | Portland, OR | May 18, 2022
Slides | Video
Improving CVAR Performance in Ruby 3.1
Have you ever wondered how class variables (CVARs) in Ruby work? Would you be surprised to learn that their performance becomes increasingly worse as the inheritance chain grows? I’m excited to share that in Ruby 3.1 we fixed the performance of CVARs.
In this talk we’ll look at the language design of class variables, learn about how they work, and, deep dive into how we improved their performance in Ruby 3.1 by adding a cache! We’ll look at the cache design and real-world benchmarks showing how much faster they are regardless of the size of the inheritance chain.
RubyConf | Denver, CO | November 11, 2021
Slides | Video
#30minutestomerge | Remote/Virtual | November 22, 2021
Slides | Video
All the Things I Thought I Couldn’t Do
RailsConf Keynote | Remote / Virtual | April 14, 2021
Video
Upgrading GitHub to Ruby 2.7
It’s no secret that the upgrade to Ruby 2.7 is difficult — fixing the keyword argument, URI, and other deprecation warnings can feel overwhelming, tedious, and never ending. We experienced this first-hand at GitHub; we fixed over 11k+ warnings, sent patches to 15+ gems, upgraded 30+ gems, and replaced abandoned gems. In this talk we’ll look at our custom monkey patch for capturing warnings, how we divided work among teams, and the keys to a successful Ruby 2.7 upgrade. We’ll explore why upgrading is important and take a dive into Ruby 2.7’s notable performance improvements.
RubyConf | Remote / Virtual | November 19, 2020
Video | Slides
Technically, a Talk
Peer deep into Rails’ database handling and you may find the code overly complex, hard to follow, and full of technical debt. On the surface you’re right - it is complex, but that complexity represents the strong foundation that keeps your applications simple and focused on your product code. In this talk we’ll look at how to use multiple databases, the beauty (and horror) of Rails connection management, and why we built this feature for you.
Ruby Day Italy Keynote | Remote / Virtual | September 16, 2020
Video | Slides
Brighton Ruby Keynote | Remote / Virtual | July 3, 2020
Video | Slides
RailsConf Keynote | Remote / Virtual | May 5, 2020
Video | Slides
The Past, Present, and Future of Rails at GitHub
On August 15, 2018 GitHub was deployed to production running Rails 5.2. This was a historic event; for years GitHub had been behind Rails and dependent on a custom fork of Rails 2.3. This talk will visit GitHub’s past, including our tumultuous relationship with the Rails framework, and the grueling effort it took to get our application on the latest version. You’ll learn what mistakes to avoid and the reasons why such a difficult upgrade was worth it. We’ll explore what tracking master means for the future and establish that GitHub and Rails are in it together for the long haul.
DevOps Enterprise Summit | Remote / Virtual | October 15, 2020
Video
RubyConf Colombia | Medellin, Colombia | Sept 20, 2019
Slides
EuRuKo | Rotterdam, Netherlands | June 22, 2019
Video | Slides
Balkan Ruby | Sofia, Bulgaria | May 17, 2019
Slides
RailsConf | Minneapolis, MN | May 1, 2019
Video | Slides
Ruby on Ice | Tegernsee, Germany | February 22, 2019
Video | Slides
The Future of Rails 6: Scalable by Default
We’ve all heard the phrase “Rails doesn’t scale”. Long running test suites and no standard for implementing multiple databases makes it hard scale monolithic Rails applications. Rails 6 will start making Rails scalable by default with parallel testing and improved support for using multiple databases. You’ll no longer be forced to reinvent the wheel and create your own solution to these problems. In this talk we’ll take a look why these improvements are important, how they work, and ways in which small ideas can quickly snowball into major changes. This is just the beginning of Rails 6.
Amsterdam Ruby Meetup | Amsterdam, Netherlands | October 16, 2018
Slides
Paris Ruby Conference | Paris, France | June 28, 2018
Slides
RailsConf Keynote | Pittsburgh, PA | April 18, 2018
Video | Slides
The Unbearable Vulnerability of Open Source
If contributing to open source was only about writing code, it would be easy. In reality open source exposes our insecurities and makes us feel vulnerable. Vulnerability can inspire change, but can also paralyze us for fear of not being good enough. In this talk we’ll look at how vulnerability affects open source contributors and explore how maintainers can foster a welcoming community. Contributors will learn how to identify projects with empathetic leaders who value GitHub’s community standards. Cultivating a better environment for contributing makes open source more sustainable for all.
WeAreDevelopers | Vienna, Austria | May 16, 2018
Slides
Ruby Conf | New Orleans, LA | November 16, 2017
Video | Slides
GitHub Universe | San Francisco, CA | October 12, 2017
Video | Slides
Building Rails ActionDispatch::SystemTestCase Framework
At the 2014 RailsConf DHH declared system testing would be added to Rails. Three years later, Rails 5.1 makes good on that promise by introducing a new testing framework: ActionDispatch::SystemTestCase. The feature brings system testing to Rails with zero application configuration by adding Capybara integration. After a demonstration of the new framework, we’ll walk through what’s uniquely involved with building OSS features & how the architecture follows the Rails Doctrine. We’ll take a rare look at what it takes to build a major feature for Rails, including goals, design decisions, & roadblocks.
Day 1 Closing Keynote Speaker at RubyConf Colombia | Medellín, Colombia | September 8, 2017
Slides
Keynote Speaker at RubyNation | Washington, DC | June 16, 2017
Slides
RailsConf | Phoenix, AZ | April 25, 2017
Video | Slides
Security is Broken: Understanding Common Vulnerabilities
The Internet is built on technology that was never meant to work together. Basic features in seemingly simple and innocuous technologies, such as XML, resulted in these technologies being insecure. In this session we’ll talk about how attackers exploit well known vulnerabilities like XSS, XXE, and CSRF and how to make more secure software by avoiding similar decisions that resulted in these exploits.
Abstractions | Pittsburgh, PA | August 19, 2016
Slides
Brighton Ruby | Brighton, UK | July 8, 2016
Video | Slides
Twilio SignalConf | San Francisco, CA | May 24-25, 2016
Slides
Mountain West Ruby Conference | Salt Lak City, UT | March 21-22, 2016
Video | Slides
How to Performance
Understanding performance output can feel like reading tea leaves. It makes sense to a few people, but many of us are left in the dark; overwhelmed and frustrated by the data. On top of that there are a ton of performance tools to choose from; StackProf, RubyProf, AllocationTracer. Where do you even start?
While working on speeding up integration tests in Rails source, I learned that the key to improving the performance of Ruby code is having a baseline, not relying on one profiler and understanding the advantages and limitations of your tools. By utilizing these methods, integration tests are now 3 times faster than they were in Rails 4.2.0, with more improvements being made every day.
In this talk we will not only look at how to read performance output, but when and how to use the right profilers for the job. We’ll discuss a variety of methods and techniques for benchmarking and profiling so you can get the most out of any performance tool.
RubyConf | San Antonio, TX | November 15-17, 2015
Video | Slides
WindyCityRails | Chicago, IL | September 18, 2015
Video | Slides
FullStackFest | Barcelona, Spain | September 1, 2015
Video | Slides
Burlington Ruby | Burlington, VT | August 1, 2015
Slides
GORUCO | New York, NY | June 20, 2015
Video | Slides
Breaking Down the Barrier: Demystifying Contributing to Rails
Contributing to Rails for the first time can be terrifying. In this lab I’ll make contributing to Rails more approachable by going over the contributing guidelines and technical details you need to know. We’ll walk through traversing the source code with tools such as CTags, source_location and TracePoint. Additionally, we’ll create reproduction scripts for reporting issues and learn advanced git commands like bisect and squash. At the end of this session you’ll have the confidence to fix bugs and add features to Ruby on Rails.
RailsConf | Atlanta, GA | April 23, 2015
Video | Slides | Workshop Repo
CRUD! Dear Active Record, It’s Not You, It’s Me
The magic of ActiveRecord database interactions is easy to rely on and allows us assume it knows best. Without a solid understanding of how ActiveRecord translates into MySQL, however, significant issues can arise. This is particularly true with large data sets and complex model relationships. My talk explores an example for each CRUD function and shows how these queries can result in MySQL timeouts, memory issues or stack level too deep errors. The examples will examine the consequences of chaining large datasets, uses for Arel, and how to avoid encountering major problems and most importantly, how these queries can be rewritten to run more efficiently.
RubyNation | Washington, DC | June 6, 2014
Slides
Mountain West Ruby | Salt Lake City, UT | March 21, 2014
Video | Slides
Big Ruby | Dallas, TX | February, 2014
Workshop Repo
Podcasts
Remote Ruby Podcast | January 25, 2019
#25: Upgrading GitHub and the Future of Rails
Hanselminutes Podcast | November 8, 2018
#657: Upgrading GitHub and Improving Rails
5by5 Podcast | November 5, 2018
#249: Upgrading GitHub from Rails 3.2 to 5.2
Tech Done Right | March 29, 2017
#007: Software, Open Source, and Rails with Eileen Uchitelle and Andrew Horner
Developer on Fire | January 21, 2016
Episode 092 - Eileen Uchitelle - Facing Fear
The Changelog | May 16, 2015
#154: All Things Ruby with 2015’s Ruby Heroes
The Bike Shed | July 7, 2015
#22: No Capes! (Eileen Uchitelle)
RubyRogues | September 10, 2014
#173: RR ActiveRecord CRUD with Eileen Uchitelle