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.
"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.
We spend much of our lives chasing happiness. We change where we live, where we work, who we hang out with, who we date, all in search of the ever-elusive feeling of satisfaction and joy. What if it’s our focus on being happy that’s the problem in the first place?
Let’s spend some time together digging into what actually makes humans happy. We’ll focus on how it applies to navigating our careers, and I’ll share some hard lessons I’ve learned along the way. You’ll walk away with some practical strategies for finding happiness right where you are and for knowing when you really do need a change.
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.
Rubyfmt is an upcoming Ruby autoformatter. It's designed to live in your text editor and format your code as fast as you can react. Imagine never having to have an argument about your code's layout ever again.
In this talk you'll learn about how the goals of the Rubyfmt project, how it's different to Rubocop, and some of the deep implementation details of Ruby that we had to understand to make this possible. This talk will get pretty technical, but doesn't assume much more than a working knowledge of Ruby so do please come along :)
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 🤓.