The largest official gathering of the year, RubyConf brings together top talent, companies, and project representatives from around the world. Learn and build with the best in sessions, workshops, keynotes and parties.
Ruby 2.7 introduced GC compaction, a way to reduce memory memory usage in your application. Unfortunately the compaction process is completely manual, requiring developers to determine the best time to compact their heap. This talk is about making the compaction process automatic and the challenges in doing so. We'll discuss various implementation techniques including read barriers and running the GC concurrently with the main program. This talk will have read barriers, but it won't have watch barriers, so come watch the talk!
Hashes seem simple. Set a key to a corresponding value, retrieve the value by key. What else is there to know?
A whole lot, it turns out! Ruby makes several surprising choices about how hashes work, which turn hashes into dynamic powerhouses of functionality.
We'll dive into how hashes work, understand how they form the groundwork for some extremely useful standard library utilities, and learn patterns to leverage the unparalleled versatility of the humble hash to write concise, performant, beautiful code.
Expertise is a strange concept, and very hard to quantify at that. It's a state in which you exceed in a given field and can stand as an authority, a wellspring of knowledge and an inspiration to others in that field.
For someone with autism and a particular obsessive streak expertise feels like a natural evolution of their interests into solidified knowledge and pragmatism.
Expertise is also perhaps the most dangerous part of an autists career.
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.
Did you know that Ruby 2.7 introduces a new method for manual memory compaction?
Neither did I.
Then a user reported a bug on a gem I maintain, and well...
In this talk, I’ll tell you a story about how one bug forced me to learn all about memory management in Ruby. By the end of this talk, you should understand how memory is allocated on the heap, how Ruby implements garbage collection, and what memory compaction is all about!
"The future is here, it's just unevenly distributed" is something we say about why people on instant connection devices walk past people sleeping on sidewalks.
Let's talk about how we can provide more power to users to customize, configure, streamline, and understand what they are getting from us. Let's explore some accessibility settings that turn out to be just good universal design.
You're going to leave this talk inspired to build an infrastructure that can support the glorious diversity of the future, instead of assuming that everyone is the same.
White-boarding is not nice. An unpaid take home project is not nice. We decided to apply the Ruby community motto "Matz is nice and so we are nice," to our technical interview process. Come learn what changes we made, how we enlisted support of other rubyists and non-rubyists alike, and how you can too.
What is the sound of a zombie screaming?
Race conditions are a problem that crop up everywhere. This talk will go over what a race condition is, and what it takes for a system to be vulnerable to them. Then we’ll walk through four stories of race conditions in production, including one that we named the “Screaming Zombies” bug.
You’ll leave this talk with a greater appreciation for how to build and analyze concurrent systems, and several fun stories for how things can go amusingly wrong.
And if you were wondering about the question at the top, the answer is: Silence
Have you ever wanted to automate a tedious process? Like, relaying omelette photos straight from your phone to an omelette blog? This talk is for you! Learn how to leverage Ruby within serverless functions to handle everything from machine learning based object detection through event triggers, and static site generation!
As the system for automation is explored, so too are the challenges, or, brick walls, that were hit along the way. In this talk, you'll not only learn about technology, but also about mental models for solving problems and overcoming those inevitable brick walls.
The lights cut out. The crowd roars. It’s time. The band takes the stage. They’ve practiced the songs, particularly the covers. They’ve sound checked the coverage of the speakers. They know the lighting rig has the proper colored gels covering the lamps. They’re nervous, but they’ve got it all covered.
Similarly, code coverage can give you confidence before your app performs on production and also tell you how live code is used (or not used). We’ll cover how to leverage ruby’s different coverage measurement techniques in concert to assist your crew and delight your audience.
Ruby 3 will have a new feature Ractor, an abstraction for thread-safe concurrent/parallel execution. Because most of objects are not shared with multiple Ractors, Ruby programmer can enjoy parallel programming without some kind of difficult thread-safety issues. However, to keep objects isolation, Ractor introduces some limitation for the languages. For example, you can not use global variables on a multi Ractor program. This presentation will introduce about Ractor briefly and show the powers of Ractor and its limitations with interactive demonstration.
When we use the words "coaching" or "mentorship," we tend to picture one-on-one conversations with someone we respect where there are questions asked and advice given. But restricting our vision of mentorship to this type of interaction is extremely limiting!
Every activity during your workday is an opportunity to support your team members' career growth, including writing code, opening pull requests, and estimating tickets. In this talk, we'll identify strategies for coaching in our everyday technical activities and open our minds to look for opportunities in non-traditional places.
When Chuck Yeager broke the sound barrier for the first time, he set off a race around the world to do the same thing with a plane full of paying passengers. The US, Russia, UK, and France all wanted a piece of the inevitable fortune to be made building aircraft to cross oceans faster than sound itself.
In the end, though, only one design flew passengers in significant numbers, the Anglo-French Concorde. Why? Let’s figure out what allowed the British and French to succeed where others failed. Along the way, we’ll learn a little about compromise and constraints and a lot about success itself.
Programmers are not epidemiologists, but epidemiologists have never needed programmers more. Not for our viral opinions but for our ability to retrieve large data sets and make them understandable through expressive code. As the pandemic was silently taking hold in the United States in early 2020, I used simple web and Ruby tools to gather invaluable data from often obscure state data sources in order to understand the extent of the pandemic in my area. I never expected this would lead me to become a contributor to the pirate CDC.
This talk is about the new feature of Ruby 3 for static type checking. The Ruby committer team had a plan to provide an optional static type checker for Ruby 3, but it is changed. Ruby 3 won't ship with a static type checker, but it will provide a feature called RBS to support type checker developments. In this talk, I will explain what RBS is, how the gem helps type tools developments, and what to do to get your gems ready for RBS.
You may not know it, but you use prime numbers every day. They play a major role in internet security in the form of encryption.
In this talk, you will learn the inner workings of how the internet uses prime numbers to keep your data private as it travels over the wire. We will cover topics such as symmetric and asymmetric encryption, and why prime numbers are just so damn hard to crack. By the end, you will understand how to encrypt and decrypt data yourself with just the Ruby standard library.
So come join me as we demystify HTTPS using code, color theory, and only a pinch of math 🤓.