
Keynote Speakers

The creator of Ruby, Matz works for Heroku and the Ruby Assocation to improve everything Ruby.

Jessica Kerr (@jessitron) really believes that software is the most interesting thing in the world. Not code -- languages are fine, frameworks are neat. It's the systems we build -- such complexity! such change! such ... difficulty of change. Best of all, the process of building software is changing us.
Jessica works at Atomist on developer automation tools: systems for developing systems for developing systems.

Karen G. Lloyd applies molecular biological techniques to environmental samples to learn more about microbes that have thus far evaded attempts to be cultured in a laboratory. She has adapted novel techniques to quantify and characterize these mysterious microbes while requiring minimal changes to their natural conditions. Her work centers on deep oceanic subsurface sediments, deep-sea mud volcanoes and cold seeps, terrestrial volcanoes and hot springs, serpentinizing springs, Arctic marine fjord sediments, and ancient permafrost. She is currently an Associate Professor at the University of Tennessee, http://lloydlab.utk.edu/.

Sandi Metz, author of Practical Object-Oriented Design in Ruby and 99 Bottles of OOP, believes in simple code and straightforward explanations. She prefers working software, practical solutions and lengthy bicycle trips (not necessarily in that order) and writes, consults, and teaches about object-oriented design.
Sessions
Using Your Superpowers to Transform People's Lives
Have you ever thought about how government services should actually meet people's expectations? Have you ever considered using your skill sets to transform the way government operates?
Even if you haven't, you have to interact with government in your everyday life. Imagine being able to use your programming and technical superpowers to design a new government. You'll hear about how the U.S. Digital Service (USDS) team at the Small Business Administration redesigned the experience for small business owners. And we used ruby! You'll also learn about the civic tech ecosystem and other organizations from where you can contribute, as well as how USDS keeps transforming people's lives at other agencies.
VideoAlberto Colon Viera
Alberto Colon-Viera is a member of the U.S. Digital Service where he has served as Tech Lead for the HUBZone Map modernization and currently works on the Medicare Payments System Modernization. Prior to joining USDS, he was a member of the teams involved with the Code for America fellowship, the Data.PR.gov portal, and other initiatives at the Office of the CIO in Puerto Rico. He is co-founder of the Code for Puerto Rico Brigade.
No Return: Beyond Transactions in Code and Life
At the root of catastrophes in both code and life lies a pervasive fallacy: the attempt to model processes as if they were transactions. Join me for an honest, sometimes raw retrospective on two decades of building a software development career. We’ll examine how personal philosophy impacts software design—and vice-versa. We’ll encounter the Transactional Fallacy, and how it can hinder our attempts to build resilient systems. And we’ll explore how a narrative-oriented mindset can lead to both better code and a more joyful life.
Video SlidesAvdi Grimm
Avdi Grimm is a father, a Ruby Hero, the head chef at RubyTapas.com, and author of the books Confident Ruby and Exceptional Ruby.
What's Love Got To Do With It? Ruby and Sentiment Analysis
The societies we live in, the companies we work for, the media we consume and much more are all shaped by words. Words can infuriate, enlighten, bring joy or cause great despair. Natural Language Understanding gives us a window into analyzing the words that surround us for sentiment and tone.
How does Natural Language Understanding work? What insights can we glean from the data it provides?
We will take a dive into understanding how this technology works, and apply it in a Ruby app that connects Natural Language Understanding analysis, the daily headlines and social media all in one. Get ready to learn some Ruby, some human language insights and how they all intertwine!
Video SlidesBen Greenberg
Ben is a second career developer who previously spent a decade in the fields of adult education, community organizing, and non-profit management. He works as the Ruby developer advocate for Nexmo, the Vonage API Platform by day and experiments with open source projects at night. He writes regularly on the intersection of community development and tech. Originally from Southern California and a long-time resident of New York City, Ben now resides near Tel Aviv in Israel.
Algorithms: CLRS in Ruby
One of the most celebrated books in Computer Science academia is "Introduction to Algorithms," also known as "CLRS" after its 4 authors. It's the go-to (pun!) textbook for many intermediate college courses, and this talk will introduce some of its many wonderful algorithms in Ruby form, including: various sorting techniques, dynamic programming, and some fun graph techniques. If you want a theory-heavy lecture, this talk is NOT for you!
Video SlidesBrad Grzesiak
Brad Grzesiak is CEO and co-founder of Bendyworks, an application development consultancy in Madison, Wisconsin. He started his career as a mechanical aerospace engineer and has at least one payload in space. He now seeks out better and better ways to write robust yet flexible software for Bendyworks' clients, from Fortune 100 enterprises to brand-new startups.
Tales from the Ruby Grimoire
There are arts best left unspoken, dark magics left forgotten and locked away in the deepest vaults of the Ruby language, lest they be seen by mortal eyes not ready for the horrors inside.
That is, until a particularly curious Lemur named Red happened to open it.
Journey with Red into the Tales of the Ruby Grimoire, through parts of the language not meant for the faint of heart. There is great power here, but that power comes at a cost. Are you willing to pay it?
VideoBrandon Weaver
Brandon is a Ruby Architect at Square working on the Frameworks team, defining standards for Ruby across the company. He's an artist who turned programmer who had a crazy idea to teach programming with cartoon lemurs and whimsy.
Hire Me: I'm Excellent at Quitting
You have the right to be happy at work — why would we want it to be any other way? As our careers as Ruby developers flourish, amazing new opportunities will require you to quit a job that you may love or loathe. It's OK to quit. If you want to learn how to gracefully leave your job with a solid game plan, an educated successor, and without burning bridges, this talk is for you.
Video SlidesBrittany Martin
Brittany Martin is the Lead Web Developer for the Pittsburgh Cultural Trust, where she is part of the team that develops the nonprofit’s ticketing and festival web applications. She is also the host of the Ruby on Rails Podcast on the 5by5 Network. Under her alter ego, Norma Skates, Brittany plays and referees roller derby for the Little Steel Derby Girls. She tweets at @brittjmartin.
Injecting Dependencies for Fun and Profit
Does your codebase not seem as flexible as it used to? Are you missing that bounce in its step? Is your test suite no longer full of vigor? Get Dependency Injection! Dependency Injection soothes testing pains, improves your domain model, and makes your code more maintainable. Pay no mind to the naysayers; Dependency Injection isn’t just for architecture astronauts--it’s truly a technique for the common developer. So step right up! Discover the potential dangers of Globals, learn how to use Dependency Injection to avoid them, and see if it could be a boon to your project!
Video SlidesChris Hoffman
Chris Hoffman is a Senior Developer on the Developer Empowerment team at Optoro. He builds tools and systems that help engineers develop, test, package, and deliver code to production, then understand its behavior once it's there.
Thomas Edison vs Three Teslas in a Trenchcoat
As a company grows, adopting new technologies becomes more complex, costly, and risky. But as developers we want to keep our skills up-to-date and are often drawn to the latest and hottest tools. So how can we effectively experiment with new technologies at work in a responsible way? This talk will recount the famously adversarial relationship between Thomas Edison and Nicola Tesla, and from their story we will learn ways to balance and exploit the tension between the boring and the new, the familiar and the shiny, the safe and the unknown.
Video SlidesCoraline Ada Ehmke
Coraline Ada Ehmke is an international speaker, writer, and developer with over 25 years of experience in software engineering. She was recognized for her work on diversity in open source with a Ruby Hero award in 2016. Coraline is the creator of the Contributor Covenant, the most popular open source code of conduct in the world with over 40,000 adoptions. She is a founding panelist on the Greater than Code podcast. Coraline is also currently writing a book on practicing empathy in engineering.
Statistically Optimal API Timeouts
Have you ever written code that retries an API request? How did you pick the amount of time to wait before retrying? If you resorted to making an 'educated best guess' then this talk is for you.
You will walk away from this talk with: 1. Knowledge of when a timeout is optimal & how important this optimality is! 2. An explanation of the algorithms necessary to calculate optimal timeouts! 3. An overview of a new open source Ruby library to calculate optimal timeouts using an open source CAS!
By the end: you will be equipped to optimize your timeouts, using your favorite language, Ruby.
VideoDaniel Ackerman
Daniel is an autodidactic software engineer from Austin, Texas. By weekday, a coder at Braintree, by night at Project Eulerian. Passionate about mathematics and code quality, Daniel pursues unique optimizations that carry a low cost but make an impact. In his free time he enjoys rucking & hacking keyboards.
Disk is fast, memory is slow. Forget all you think you know
Adding metrics to your code should effectively have no impact on performance.
When we were recently tasked with doing that in multi-process Ruby servers, we ran into an interesting challenge: could we aggregate our numbers across processes without blowing our target of just one microsecond of overhead?
The months of work that followed had us looking into C extensions, segfault dumps, memory maps, syscall timings, and pretty much everything we could think of to try and achieve our objective.
In the process, we found some very counter-intuitive performance results that I'd like to share with you.
Video SlidesDaniel Magliola
Life-long coder, expert procrastinator, and occasional game programmer obsessed with code performance and weird Lego machinery. Also maintainer of a popular Ruby gem, after doing the work I'm covering on this talk.
Kill All Mutants! (Intro to Mutation Testing)
How good are your tests? Would they still pass if the tested code was changed much? If so, you may have a problem!
Mutation testing helps reveal these cases. It runs your unit tests, using many slightly altered versions of each method, called "mutants". If a mutant passes (or "survives") all of the method's tests, that implies certain flaws in your code, your tests, or both!
Come find out how to use this advanced technique to discover problems lurking in your code and/or tests.
Video SlidesDave Aronson
Dave is a software developer with about three and a half decades of experience in a wide variety of languages, techniques, etc., mostly in Ruby lately, and with a strong emphasis on code quality. He is the T. Rex of Codosaurus, LLC (his one-person consulting firm, which explains how he can get such a cool title) in Fairfax, Virginia, USA. On lighter notes, he is married, owned by two cats, and enjoys dark beers and smoky whiskies.
The Fewer the Concepts, the Better the Code
How many people could change the code you wrote yesterday if they had to? I hope to convince you that the larger that number, the better your code, and the key is to manage conceptual overhead. The fewer things someone has to know to read and modify your code, the better for you, your team, your company, your app. We'll see real examples of code that we'll put on a conceptual diet. We'll then talk about what that reduction actually does to code quality.
Video SlidesDavid Copeland
David Copeland is a programmer and author. He's the author of “Agile Web Development with Rails”, "The Senior Software Engineer" and "Build Awesome Command-Line Applications in Ruby". He has over 20 years of professional development experience. Most recently, he took the engineering team at Stitch Fix from 3 to 200 through an IPO and international expansion as Chief Software Architect.
Bursting at the Seams
Our industry remains in its infancy but we've had many important contributions to how we all think and talk about design. In order to tighten the existing gap between where theory and practice meet, we need to continue to add to our shared vocabulary. With this aim, I want to underline one of the more accessible and oft-overlooked concepts from software's past: seams. Seams are easy to identify, and point to crucial incisions in our code. Learning to see code in terms of seams will improve your existing codebases, help you write better tests, and aid as you develop greenfield projects.
Video SlidesDavid McDonald
Engineering Lead at Weedmaps.
How to Become an Encoding Champion
encoding's
Character encoding happens every time we interact with a computer or any digital device. There is no such thing as plain text. Understanding how encoding works, how Ruby handles encoding issues, and how to strategically debug encoding snafus, can be a great asset in your developer toolbox. We will cover a bit of history, dive deep into Ruby's encoding methods, and learn some tricks for managing encoding in your application.
Video SlidesDeeDee Lavinder
DeeDee Lavinder currently works as a Backend Engineer and is a Director with Women Who Code Raleigh/Durham. The juxtaposition of analytical thinking and creative problem solving is where she is happiest and is particularly thrilled about working in that sweet spot while writing code. When something is hard, she goes deep to understand -- ask her about Encryption!! When not coding, you can find her listening to audiobooks, driving small people around town, or coordinating something somewhere.
Story telling with Git rebase
In a successful software development project, a key challenge is to manage complexity because projects get very complex very quickly even within small teams. Version control is the tool for communicating intent in our codebase over the life time of the project. Rebasing allows us to revise our development history before sharing it with the team.
Learn to use Git commit messages to keep track of the intent of your code changes to make it easier to make future changes. Learn how to make using feature branches less painful and more effective. Learn the mechanics of interactive rebasing, how to merge conflicts without losing precious code and how to auto-squash commits. Basically, stop fearing interactive rebasing.
Video SlidesElle Meredith
Elle is a web developer with more than 10 years experience writing Ruby and Rails. Currently at Blackmill, previously she was Development Director at thoughtbot New York. Elle believes in writing clean code, driven by automatic tests, with agile practices, an even work/life balance, and a respectful and inclusive team culture. Recently, she developed and ran an apprenticeship program for Qantas Hotels. When not immersed in the Ruby community, she is probably immersed in water, or lately in flour
Fixing Performance & Memory problems
Performance problems got you down? Do memory leaks strike fear in your heart?
In this session I'll share two real world stories of how you can solve performance problems and plug memory leaks. You'll learn how to use tools such as ruby-prof and stackprof, interpret their output and gain extra insight into how your code is performing.
When dealing with memory leaks, the biggest challenge can be finding them. You'll learn how to use rbtrace and ObjectSpace to identify what objects are being leaked and by which code, so that you can approach leaks with confidence.
Video SlidesFrederick Cheung
I started deep in the bit mines, programming in C, but picked up Ruby in 2006 and haven't looked back since. I'm the CTO at Dressipi where I like to think about recommender systems, infrastructure and web applications.
Technical Background of Interactive CLI of Ruby 2.7
Ruby 2.7 will be released with new multiline IRB that uses a new input library Reline. I'll talk about the technical background of it.
- the history of terminal
- the Morse code
- typewriter
- teletype
- escape sequence
- escape sequence on Unix like OS
- Windows support
- GNU Readline compatible features
- editing modes
- inputrc that is a setting file
- I8n support
- too many character encodings in the world
- Unicode's complex tweaked specifications
- ...it's very difficult to understand for non-CJK people so I'll try to explain it by emoji
ITOYANAGI Sakura
I'm a Ruby committer. I'm the current maintainer of RDoc and the author of Reline. I'm working at Space Pirates, LLC.
Less abstract! Surprising effects of expressing rules of OOP in pictures.
Abstractions are both our blessing and our curse. Because of them, we're so powerful. But also we so often fall into the trap of miscommunication :( Abstract rules, operating with abstract terms, built on top of other abstract ideas. Ugh... In this talk, we're going to build a visual language to make things LESS ABSTRACT. We'll see how it helps in:
- refactoring messy code
- tracking codebase changes
- teaching others
- explaining non-obvious concepts
Ivan Nemytchenko
First-wave rubyist, educator, complexity fighter, serbian sibirean.
The Functional Rubyist
Functional programming’s popularity is on the rise and support for FP is growing in Ruby. But can you really write functional code in Ruby? More importantly, why should you? Learn how Ruby enables functional programming concepts while maintaining highly readable and fun-to-write code.
Video SlidesJoe Leo
I am the CEO and Founder of Def Method, an agile software consultancy with a core competency in Ruby. I also co-authored The Well-Grounded Rubyist, Third Edition with David A. Black. Outside of the office, I've helped to build the NYC developer community as lead organizer of GORUCO, co-organizer of NYC.rb, a member of the Technical Advisory Board of the New York Foundling, and an instructor at General Assembly.
Principles of Awesome APIs and How to Build Them
We know the theory of what makes for a good API: it should be consistent, stable, and well documented. However, when we struggle to put good principles into practice, the API becomes difficult for your teammates and frustrating for your users. So, how do we pragmatically implement APIs in line with good principles? In particular, how do we get a bundle of engineers to do this together?
This is a talk for those curious about designing, building, and maintaining modern APIs. We’ll look at specific tooling and strategies to help improve and maintain the quality, consistency, and stability of your API. You’ll learn how to proactively make improvements to these areas, and how to make it easier to shepherd API development in your company.
Video SlidesKeavy McMinn
Keavy McMinn is a principal engineer at Fastly, leading strategy for the API. Previously, she worked at GitHub building APIs, integrations, and interfaces that solve real problems for real people. A trained sculptor, she's used her skills asking thoughtful questions to help a range of clients and domains in Europe and the United States since 2001. When she's not finishing projects, Keavy trains hard to finish triathlons from her home base in Boulder, CO.
Parallel Ruby: Managing the Memory Monster
At Flexport, we process a lot of data. One sunny day, we decided to switch from a swarm of single-threaded Ruby processes to a wonderful new threadpool. Threads have way less overhead than processes, after all, so we could run far more. Fast forward a couple of hours and everything is on fire. Let’s talk about what went wrong, why it was the Ruby garbage collector's fault, and we did about it.
Video SlidesKevin Miller
Kevin is the tech lead on the infrastructure team at Flexport, a Rails/React startup with 150 engineers, ~800 tables, ~1MM lines of ruby, and many fun challenges. In addition to working on Cloud Infrastructure and Developer Experience, Kevin is responsible for keeping the full stack secure and CTPAT (Customs-Trade Partnership Against Terrorism) compliant.
Don’t Hang Me Out To DRY
Close your eyes and imagine the perfect codebase to work on. I bet you’ll say it has complete test coverage. It’s fully-optimized, both in terms of performance and architectural design. And, of course, it contains only DRY code. Surely we can all agree that this is an aspirational situation. But...do we really want that?
Don’t get me wrong; these qualities are all beneficial. However, if we also think we should value everything in moderation, when should we push back on these ideals? What problems can they introduce? Let’s talk about the exceptions to some of the “rules” we all hold dear.
Video SlidesKevin Murphy
Kevin lives near Boston, where he is a Software Developer at The Gnar Company. Though he believes he holds strong opinions, his most frequent response to a question starts with, “it depends.”
Creating AR Apps with RubyMotion
Augmented Reality (AR) is the new cool. But did you know you could write AR apps (and games!) using Ruby(Motion, that is)? Come and escape normal boring reality with us, as we create a native AR app using RubyMotion.
Video SlidesLori M Olson
Lori is a Ruby, Rails, and RubyMotion developer of many years experience. She has written an iPhone app (WIMBY - http://wimby.ca) in RubyMotion, a book based on her experiences with Core Data while creating WIMBY (Core Data in Motion - http://coredatainmotion.com), and has spoken at RubyMotion #inspect. She has also taught workshops to Ruby and iOS developers at conferences around the world. Now, she's the founder of the WNDX School, an online school for mobile, game, and beginner developers.
Fun, Friendly Computer Science
Computer science concepts like Big O Notation, set theory, data structures, and principles of object-oriented programming sound intimidating, but they don’t have to be! This talk will dive into some fundamental computer science topics and debunk the myth that only ‘real’ programmers know CS.
Whether you are a code school grad, self-taught career switcher, or someone who, like me, didn't pay attention in night class, join me as we explore some computer science theory behind the code we write every day through fun illustrations and real-world examples.
Video SlidesMercedes Bernard
Mercedes Bernard is a senior software engineer and engineering manager with Tandem in Chicago. She has worked with clients in a wide range of industries including healthcare, performing arts, agriculture, hospitality, and government. In her projects, she values technical know-how, non-technical language, and empathy so her clients and team members feel empowered, comfortable, and heard. She's also started a mentorship community in Chicago for those starting their dev careers called Dev Together.
The Singleton Module and Its Pattern In Ruby
The singleton design pattern allows for the creation of an object that is restricted to one single instance. No matter how big or complex your application is, there will only ever be one. This has caused some controversy about the quality and maintainability of code that leverages it. Yet, Ruby’s standard library contains a module that implements this pattern. Let’s take a closer look at this module and the “controversy” around its implemented pattern. Let’s also consider singletons in Ruby and the purpose they serve for the language in general.
Video SlidesMike Calhoun
Originally hailing from Syracuse, NY, Mike now lives in Vancouver, WA where he works remotely as a Senior Developer for Invoca. He has worked in computer programming since 2006 after a brief stint as a librarian. In that time, he has primarily chosen Ruby and Ruby on Rails as his technologies of choice and appreciates the time he gets to spend working with them. When not programming, he spends his time with his wife, son, two cats, and one corgi in the scenic Northwest (or watching basketball).
Digging Up Code Graves in Ruby
As codebases grow, having dead code is a common issue that teams need to tackle. Especially for consumer-facing products that frequently run A/B tests using feature flags, dead code paths can be a significant source of technical debt sneakily piling up. Luckily, the Ruby standard library exposes Coverage -- which is a simple, experimental code coverage measurement tool.
Let's dive into how Coverage and other tools can be used and expanded to track down dead code paths in Ruby.
Video SlidesNoah Matisoff
Noah is an engineering manager and seasoned engineer with many years of experience leading projects in Ruby. He has worked on consumer-facing products for the majority of his career, where moving quickly is important, which usually results in taking out loans in the form of technical debt. He has given numerous talks on the internals of Ruby, and other Ruby projects such as Sidekiq.
Containerizing Local Development... Is It Worth it?
Containers are the current hotness for deployment. But, how about development? They can provide a good way to manage local dependencies even if you're just writing a gem instead of an app. While writing and running code directly on your laptop has its own obstacles, using containers for development is not a silver bullet and brings along its own set of headaches. Which cases do containers make sense and how would they be configured? Containers may not be for you, but we'll go through some example setups. It'll be up to you whether or not you want to change your local setup after this talk.
Video SlidesTony Drake
I'm currently a senior developer with 10+ years of professional development experience (most of those with Ruby). I enjoy working in development teams of all sizes and helping junior developers level up. When I'm not hacking away or being a part-time DevOp, you can find me online kicking butt in Mario Kart.
Speeding up NMatrix by 100x
With the growing need for fast numerical computing tools, there is a need for a library in Ruby which can perform at the level of NumPy in Python and can provide as much rich API. In this talk, we'll explore how NMatrix is being re-implemented to match this need and how it ended up getting renamed as NumRuby. We'll further explore the progress so far on NumRuby and potential future work.
We'll further explore how one can make the best use of Ruby C extensions for fast number crunching and not end up messing things up.
Video SlidesUdit Gulati
Udit is an open-source contributor working mostly on number crunching in modern computers. This summer, he is working on NumRuby as part of Google summer of code program under Ruby Science Foundation (a.k.a. SciRuby) to add functionalities to the NumRuby core. He is a computer science undergraduate student at Indian Institute of Information Technology, Una, India. When not staring at the screen, he can be found listening music, drawing or playing FIFA with friends.
Escaping The Tar Pit
Nobody wants to inherit a project that reeks but here we are: Stuck in the tar pit. How can we get out? Could we have avoided it in the first place?
In this talk you will learn how to use a few, great Ruby gems that will guide you out of that sticky tar you are in. On top of that, you will learn a repeatable way to gradually pay off technical debt.
Video SlidesErnesto Tagwerker
Ernesto is the Founder of Ombu Labs, a small software development company dedicated to building lean code. When he is not obsessively playing table tennis or chess, he likes to maintain a few Ruby gems including database_cleaner and email-spec. He is passionate about writing less code, launching minimal products, coaching entrepreneurs, contributing to open source, and eating empanadas.
Introducing Rubyfmt
Go has gofmt
, Rust: rustfmt, elixir: mix format, so what about Ruby? One response is Rubocop! A sometimes beloved, sometimes maligned formatting and linting tool. A design principle of Rubocop is configurability. So, what if we had a code formatter without configuration options?
In this talk, you’ll learn about my goals for Rubyfmt, my upcoming Ruby formatter. You’ll also get a guided tour through Ruby’s parser, and learn about why I’m rewriting the parser in Rust! This talk will get technical, and you should come if you want to learn more about Ruby’s parser and internals.
Video SlidesPenelope Phippen
Penelope Phippen is a lead maintainer of the RSpec testing framework. She’s been writing Ruby for just about a decade, and still remembers 1.8.6. She’s sad that she can’t hug every cat.
How to write pleasant code
As we grow from beginner to intermediate developers, we tend to learn tools and Best Practices for writing good code. But. The more we learn, the more contradictions show up -- and the murkier it gets to find the right answers. Senior developers sometimes chime in with "it depends!". Which -- while being technically accurate, is also completely unhelpful. What does it depend on? How do we reconcile Best Practices when they conflict with each other? Who is "good" code actually good for? Is perfectly clean code even possible?
We'll learn to find the answers to all of these questions by exploring the discipline of Design (think fancy chairs in museum); and stealing from it shamelessly.
Video SlidesRoman Kofman
Roman is a ballroom dancer turned professional coder through a short stint at a design consulting agency. His goal is to foster healthier conversations around writing good code -- conversations that focus less on "being right"; and more on discovering solutions to problems within a set of constraints (aka: design!). When we leave behind the idea that there is "one right answer", we open ourselves up to more empowering conversations about the myriad ways to solve a given problem.
Compacting Heaps in Ruby 2.7
Ruby 2.7 will feature a manual heap compactor integrated with the GC. In this presentation we'll cover how Ruby's memory is arranged, how compaction can be helpful to your application, as well as algorithms and implementation details of the heap compactor. As a bonus, we'll cover GC debugging techniques as well! This presentation is going to be heaps of fun. Don't turn the page because we're going to scan the stack for some great pointers!
Video SlidesAaron Patterson
Keyboards, Cats, and Code at GitHub!
In the beginning, there was "require"...
Almost every Ruby program begins with the "require" method, but many of us don't pause to think about what it's doing until it fails us.
What happens when we call "require"? How does Ruby find what we're looking for? Is Bundler somehow involved? What about "requirerelative" and "requiredependency", and what the heck is a "binstub"?
This talk will guide beginner and intermediate Rubyists through these foundational concepts that power our Ruby programs, from single-file script to a behemoth Rails 6 app.
Video SlidesAdam McCrea
Adam spends his days in Ohio building the best budgeting software in the world at YNAB (You Need A Budget). On the side he's growing Rails Autoscale, a Heroku add-on that he created in 2016. He also writes Mastering Heroku, a newsletter for Heroku users.
Let's build a simple HTTP server with Ruby
Many developers at some point in their programming career get curious about how HTTP servers work and how to build one from scratch without any external libraries. Well, recently, I got curious about “How do HTTP servers work”? “How are HTTP servers built?” and “Can I build an HTTP server and client with Ruby without using any gems?“ And you know what, the answers are, yes, yes and yes! We’ll explore how to build a simple http server using the Socket class available in the Ruby’s standard library. In the process, we will also get a crash course on how HTTP works.
Video SlidesEsther Olatunde
Esther Olatunde is a Full Stack Software Developer at Lexoo. As a kid, she loved breaking gadgets open to see how they work. She has brought that curiosity into her craft as a developer; always delighted to discuss and explore why things work the way they do. She is currently obsessed with exploring Ruby standard library, Ruby internals, systems performance and optimisation. Esther is a newbie yogi and changes her hairstyles way too often.
Language as a Tool of Thought: Consistency versus Progress
Our programming language is not a mere instrument: it shapes how we think about problems, what we feel right and wrong. But as the Ruby itself changes (and rather quickly, lately), what happens with our understanding and feeling of it? More powerful language is probably good, but how should it stay consistent and true to its spirit without losing the pace of the progress? Let's look closely at some new and upcoming Ruby features, and some missing and rejected ones, and discuss where are we standing currently in regards to consistency and "developer's happiness".
Video SlidesVictor Shepelev
Ukrainian programmer and poet with twenty years of programming experience and fifteen years of Ruby programming. Working at Verbit.ai, mentoring students (including Google Summer of Code-2016-2018, as a mentor for SciRuby organization), developing open source (Ruby Association Grant 2015), participating in Ruby language development and documentation process.
Late, Over Budget, & Happy: Our Service Extraction Story
A 3-month project stretches out to 9 months. It's widely viewed as over-engineered and difficult to work with. But months after deployment, it's considered successful. What happened?
In this talk, a principal engineer and a director of engineering recount the extraction of a social feeds GraphQL service from a decade-old Rails monolith. Along the way, we'll cover topics including selling a big project, complexity in remote work, complexity in deployments, and complexity in emotions. We'll tell you about the scars we acquired and the lessons we learned.
Video SlidesAmy Newell
Amy Newell has been a software engineer since 1999, and has been programming in Ruby since 2007, when she attended her first Ruby meetup with her 3-month-old daughter. She’s currently a Director of Engineering at Wistia. She likes to talk about empathy, authenticity, and managing engineers. She suffers from bipolar disorder. She’s also a poet, mom, food snob, and boot fanatic.
Nat Budin
Nat Budin has been coding in Ruby since 2006. He currently works as a Senior Software Engineer at ActBlue Technical Services. In his free time, Nat writes live action roleplaying games, plays guitar, and thinks about how to make more inclusive software.
Seven Deadly Sins
Software projects accumulate many kinds of debt. Each debt comes in the form of small qualitative shortcomings we (knowingly or unknowingly) choose to ignore in the name of shipping. They cause friction -- and over time they can combine to easily grind momentum to a halt if left unchecked. While these kinds of debt can in fact be useful (if not necessary) to creating software - teams need to understand the nature of their shortcomings to prevent "velocity bankruptcy."
In this talk we'll discuss the nature of process debt by using classical ideas related to "unproductive behavior" as a guide: hitting on shortcomings in culture, empathy, discipline, morale, organization, preparedness, and requirements. We'll discuss examples, tips on identifying the risks in your own projects, and how to decide when to avoid, mitigate, or accept and track these risks.
Video SlidesBrian McElaney
Brian McElaney (or just "Mac") has lead engineering teams building everything from medical device monitoring systems to foreign exchange trading platforms. He currently runs the technology team at Think Company - a user experience design firm in Philadelphia focused on enterprise software, process, and service design. When he's not coding Mac cooks competitively, drinks wine professionally as a Level 3 Somm, pretends to like parades, and feels that brunch should be protected by law.
How to lose 50 Million Records in 5 minutes
Join me in re-living the worst catastrophe of my more than a decade long career as a developer. Enough time has passed that I can laugh about it now and hopefully you will too while being inspired to stop cutting corners.
It’s like a game of Clue and all the different parts of the system are characters. Which one was the killer? Spoiler alert, it was me, in the office with the keyboard.
Video SlidesJon Druse
Engineering Director at W+R Studios and lives in the Nashville area. Full-time Rubyist since 2007.
Elasticsearch 5 or and Bust
Breaking stuff is part of being a developer, but that never makes it any easier when it happens to you. The Elasticsearch outage of 2017 was the biggest outage our company has ever experienced. We drifted between full-blown downtime and degraded service for almost a week. However, it taught us a lot about how we can better prepare and handle upgrades in the future. It also bonded our team together and highlighted the important role teamwork and leadership plays in high-stress situations. The lessons learned are ones that we will not soon forget. In this talk, I will share those lessons and our story in hopes that others can learn from our experiences and be better prepared when they execute their next big upgrade.
Video SlidesMolly Struve
Molly Struve is the Lead Site Reliability Engineer at DEV. During her time working in the software industry, she has had the opportunity to work on some challenging problems. These include scaling Elasticsearch, sharding MySQL databases, and creating an infrastructure that can grow as fast as a booming business. When not making systems run faster, she can be found fulfilling her need for speed by riding and jumping her show horses.
What happens when a linguist learns to code?
When people find out about my former career as a linguist and language teacher, they often ask if my background helped me learn how to code. I started to wonder if there was some overlap between learning a natural language and a programming language. What can we draw from the fields of first and second language acquisition that will help us become better software engineers? How can we apply the principles of language learning and teaching when training new developers? Join me as I discuss my journey from Ruby as a first language to JavaScript as a second, and stay for some code-learning tips from a former language acquisition professional.
Video SlidesErica Sosa
Linguist turned software engineer @ Braintree
Source-Diving for Fun and Profit
Ever spent hours pouring over a gem's documentation trying to figure out how to make it work? Dug through dozens of blog posts trying to understand why a library's not working? Well what if I promised you an end to all that?!
Well, ok, I'd be lying. But maybe I can save you some hair-pulling some of the time! Let me introduce you to the joys of Reading the Code. Maybe it seems obvious to you, but one of the biggest leaps I made as a ruby dev was really getting comfortable jumping into a gem's source as a debugging technique.
In an effort to get you over that hump earlier than I did, let's talk tips and tricks for getting in and out of a library's codebase as efficiently as possible. It won't solve every problem, but sometimes 5 minutes on GitHub will save you hours on StackOverflow.
Video SlidesKevin Kuchta
I'm a generalist software engineer in San Francisco. Because I have the attention span of a startled sparrow, I work on everything from HTML/CSS to JS to Ruby to infrastructure. Recent projects include a browser-tab-driven SQL database, a reddit t-shirt bot, and CSS-only async web chat. Currently learning Typescript.
Learn Enough Ruby
Ruby is a big language, used for lots of different things—so, where to start? This talk discusses the core subjects needed to learn enough Ruby to be productive, focusing both on features it has in common with other languages and the things that make it unique. For those interested in web development, we’ll also talk about the pros and cons of learning Ruby before Rails, as well as whether to learn Rails at all.
Video SlidesMichael Hartl
Michael Hartl is the author of Learn Enough Ruby to Be Dangerous and the Ruby on Rails Tutorial.
Bridging the Knowledge Gap: Debugging
We're usually never get an official lesson in debugging. No one tells us at bootcamp or in online tutorials what to do when our code doesn’t work. It’s one of those learn-it-on-the-job sort of things and comes with experience. As early-career developers, we get a lot of syntax thrown at us when we’re first learning, but in actuality, the majority of our time is spent trying to fix broken code.
But why should we slog through it alone? Let’s explore some Ruby/Rails debugging techniques and tools together!
Video SlidesMina Slater
Mina is a graduate of the Coding Bootcamp at Northwestern University and a Software Engineer at Tandem (formerly DevMynd). Born with the need to know the secret of every magic trick, she finds that coding perfectly satisfies that intense curiosity. She is dedicated to using her new superpowers to connect people and bring them closer together by building mindful software. Button aficionado.
Conscious Coding Practice: The Three Concrete Steps
You feel guilty about not knowing enough "Computer Science." But that isn't what you're still missing in your coding. If you could just pick up any problem and solve it, you wouldn't care if you used a formal-sounding algorithm to do it.
There's a way to get that "fingertip feel" for coding. And it comes from mindful, conscious practice.
Sounds abstract, doesn't it? Instead, it's very simple, specific and concrete. We'll go over the basic steps, the pitfalls, and how to do it. It works whether you're a beginner or an expert. You'll be able to create coding studies for yourself, not just find other people's exercises that are already worked out for you.
This talk is in Ruby. But the technique works with any language, library or paradigm. It's also good for pairing.
Video SlidesNoah Gibbs
Noah is a Ruby Fellow for AppFolio, working on the core Ruby language and related tooling. After over 30 years of communicating with computers, Noah now believes that communicating with humans may not be a passing fad, and he's trying it out.
Investigative Metaprogramming
When was the last time you got an un-Googleable error? The kind that takes you and your lead three days to debug, with weird generic stacktraces deep in framework internals? What if you could approach that bug with something other than trial, error, and tears? Metaprogramming can come to the rescue -- just not the kind you do in production. In this talk, you'll learn strategies for investigative metaprogramming. You'll learn how to insert debugging hooks anywhere and instrument anything. You'll even learn how to turn that information into actionable bugfixes.
VideoBetsy Haibel
Betsy is a DC-based web developer. She writes fiction and nonfiction in English, Ruby, and Javascript, and is a co-organizer of Learn Ruby in DC.
Ruby ate my DSL!
DSLs (Domain-Specific Languages) are fun to design, but it's easy to forget that they are still "Just Ruby." If users of your DSL can mix in Ruby code... any Ruby code... you can bet they will, and it's all too easy for that to go awry. In this session, you'll encounter examples of how seemingly innocuous Ruby code can make a DSL go disastrously wrong, and you’ll learn techniques you can use to harden your DSL against the cleverness of your users. If you’re writing, or even thinking of writing a DSL, this talk is for you.
Video SlidesDaniel Azuma
Daniel Azuma is a senior engineer at Google, where he leads the Ruby and Elixir teams, building libraries and tools to help his favorite language communities use Google Cloud Platform. He lives with his wife in the Seattle area, and loves playing the piano, skiing, and having deep conversations with cats.
Ruby Next: make old Ruby quack like a new one
Ruby 2.7 is just around the corner. It will bring a lot of new features, including new syntax additions: pattern matching, numbered parameters.
That's good news. The bad news is that not many of us will be able to use these goodies right away: the upgrade cost blocks application developers; gem authors have to support older versions.
What if we were able to use Ruby Next features while running Ruby Current? Maybe, we can cast a metaprogramming spell for that? Yes, we can. And I'll show you how.
Video SlidesVladimir Dementyev
Vladimir is a mathematician who found his happiness in programming Ruby and Erlang, contributing to open source and being an Evil Martian. Author of AnyCable, TestProf, ActionPolicy and many yet unknown ukulele melodies.
JRuby: Zero to Scale! 🔥
JRuby is deployed by hundreds of companies, running Rails and other services at higher speeds and with better scalability than any other runtime. With JRuby you get better utilization of system resources, the performance and tooling of the JVM, and a massive collection of libraries to add to your toolbox.
In this talk, we'll cover:
- Getting started on JRuby
- Comparison to CRuby
- Building, migrating, and deploying apps
- Tuning, profiling, and monitoring
- Scaling considerations
Charles Oliver Nutter
Charles works on JRuby and other JVM language concerns at Red Hat.
Thomas E Enebo
Thomas Enebo is co-lead of the JRuby project and an employee of Red Hat. He has been a practitioner of Java since the heady days of the HotJava browser, and he has been happily using Ruby since 2001. When Thomas is not working he enjoys running, anime, and drinking a decent IPA.
Digesting MRI by Studying Alternative Ruby Implementations
Pointers, managing memory and static typing - writing C code is hard! However, most programming languages, including Matz's Ruby Interpreter (MRI), are implemented in a low level programming language. So you think without knowing these concepts, you can not contribute to Ruby? Wrong! Although MRI is implemented in C, fortunately there are Ruby's in Java, Go and even Ruby itself.
If you ever wanted to learn about Ruby internals without being a C expert, this talk is for you. Join me on my journey of re-implementing hash maps in JRuby, breaking bundler and actually learn to write (some) C code.
Video SlidesChristian Bruckmayer
Christian Bruckmayer originally from Nuremberg, Germany, but just recently migrated to the south west of England. In his day job, he makes everyday cooking fun at Cookpad, the best place to find and share home cooked recipes. Since 2014 he is an avid open source contributor hacking for instance on JRuby, openSUSE Linux or various gems.
If he's not hacking Ruby, he's out doing what 'young' people do: traveling the world, skiing in the alps or going to concerts of his favorite band.
Building a Ruby: Artichoke is a Ruby Made with Rust
Artichoke is a new Ruby implementation. Artichoke is written in Rust and aspires to be compatible with MRI Ruby 2.6.3. Artichoke is a platform that allows experimenting with VM implementations while providing a VM-agnostic implementation of Ruby Core and Standard Library. This talk will discuss Artichoke’s history, architecture, goals, and implementation.
Video SlidesRyan Lopopolo
Ryan is the author of Artichoke, a Ruby implementation written in Rust. Ruby is the first programming language Ryan learned and he has been writing Ruby programs for over 15 years. Ryan uses Ruby like a hammer sometimes.
What's happening when initializing mruby?
Like MRI, mruby initializes all classes before execution. This has a negative impact on Ruby's initialization speed and memory. This increase in memory usage is particularly fatal for mruby. We have created a new mrbgem to solve this issue. The key idea is pre-execution; we actually run mruby and do initialization, generate the structures in the form of C source code, and recompile it. In this session, we will look at the initial behavior of the mruby through an introduction to our tools.
Video SlidesYurie Yamane
Team yamanekko: Team Yamanekko is a developer group of Yurie Yamane and Masayoshi Takahashi. We are using mruby for micro controllers, with the slogan "tanoshii mruby(mruby for fun)".
Yurie Yamane: She is a programmer who is interested in embedded systems. She is a member of TOPPERS Project.
Masayoshi Takahashi
He is an old-time Rubyist and the founder of Nihon Ruby no Kai, the non-profit Ruby community in Japan. He is also the founder of Tatsu-Zine Publising, the e-book publisher for IT engineers in Japan.
Coding like it’s 1977: Ruby on the Apple ][
The Apple II had kilobytes of RAM. Its processor ran at a speed of 1 megahertz, only crunching 8-bits at a time. We all know Ruby is too memory intensive and complicated to run on the humble Apple II, right?
Nope!
Come see Ruby running on a machine that first came out when Matz was 12 years old! Learn how programming was done decades ago and how easily you can do it too.
Video SlidesColin Fulton
Proud that their only contribution to Ruby's core is a silly bit of sample code has to be labeled a "BAD EXAMPLE", Colin works as a frontend developer and web accessibility specialist for Duo Security. Before becoming a developer, Colin did design and technical work for theater, music and installation art projects.
mruby/c: Running on Less Than 64KB RAM Microcontroller
I will show you an actual IoT product which uses one-chip-microcontroller-based hardwares for a Japanese Sake Brewery. Brewing Sake requires workers to take temperature of the ingredients very frequently. mruby/c is a small implementation of Ruby and runs on microcontroller which has less than 64KB RAM. You will see a new Ruby World.
Video Slideshitoshi HASUMI(JP_SMN)
A programmer of Monstar Lab, Shimane office. RubyKaigi2019 speaker, RubyKaigi2018 speaker, and KRKRB2019 (the Ruby Conference of Cracow, Poland) speaker.
Pattern Matching - New feature in Ruby 2.7
Ruby core team plans to introduce pattern matching as an experimental feature in Ruby 2.7. In this presentation, we will talk about the current proposed syntax and its design policy.
Video SlidesKazuki Tsujimoto
Kazuki Tsujimoto is an infrastructure engineer at Nomura Research Institute, Ltd. He is also a CRuby committer.
Sorbet: A type checker for Ruby 3 you can use today!
In June we open-sourced Sorbet, a fast, powerful type checker designed for Ruby. In the 6 months since, tons of things have improved! We’ve built quality editor tools like jump-to-def and seen many contributions from a growing community. Within Stripe, we've used Sorbet to drive code quality via measurable, concrete indicators.
We’ll share these improvements and give an update on our collaboration with Matz and the Ruby 3 Types working group. Suitable for anyone using Ruby—no familiarity with Sorbet needed! Come follow in the footsteps of the many companies already using Sorbet.
Video SlidesJake Zimmerman
Jake works on the Sorbet core team at Stripe, where he brings his experience with types and programming languages to make engineers more productive every day. He’s interested in using types to make code faster to write, more understandable, and easier to change.
Dmitry Petrashko
Dmitry works on developer productivity at Stripe, making it easy to confidently write maintainable, fast, and reliable code by improving language, core abstractions, tools and educational materials. Before this, Dmitry has obtained PhD while working on Scala compiler.
Adopting Sorbet at Scale
Shopify is a platform used by 800K merchants generating 12B$ revenue per year, serving 80K requests per second. Our core monolith is a 21K file Ruby on Rails application modified by 800 PRs per day. At this scale, we’re always looking out for tools that improve our confidence in the code that we write and maintain.
In this talk, we’ll explain how we adopted Sorbet to leverage static typing in our Ruby codebase. We’ll talk about our journey, the challenges we faced and how we overcame them. Based on this experience, you’ll get a better understanding of how you can benefit from Sorbet, too.
Video SlidesUfuk Kayserilioglu
Ufuk is a Physics PhD turned polyglot software developer. He is currently working as a Senior Production Engineer on the Rails team at Shopify. He has over 20 years of experience working with statically and dynamically typed languages ranging from low-level communication programming to web development. He brings that experience to Shopify for the adoption of better Ruby tooling and practices. He currently works remotely from Cyprus where he lives with his beloved wife and wonderful daughter.
A Static Type Analyzer of Untyped Ruby Code for Ruby 3
Ruby 3 is planned to provide a toolchain for static analysis: (1) the standard type signature format for Ruby code, (2) a type analyzer to guess a signature of a non-signatured Ruby code, and (3) a type checker (such as Sorbet) to verify a code with its signature. In the talk, we present a candidate of (2), called Type Profiler, which aims to allow you not to write a signature manually. It abstractly runs a non-annotated Ruby code in "type" level, tries to find possible errors, and generates a type signature prototype for the code. We show some demos and development progress.
Video SlidesYusuke Endoh
"A MRI committer. He likes useless programs like this bio \u{1f5ff}".sub(/.$/){eval =%q{puts %{"#$`%c".sub(/.$/){eval _=%%q{%s}}}%[($&.ord+1)&128575,]}}
Rekindling a love of creation with Ruby and Raspberry Pi
Does your life and work as a software developer ever leave you feeling depleted? Have you lost your inspiration to create? Do you want to share your love of software and design with your children but don't know how? Well, fortunately if you already know Ruby it is a short leap to building physical devices with the Raspberry pi! This talk will give a detailed explanation on how to get started on the Pi with Ruby, and outline a few fun projects you can build with your children (or just yourself) to explore your love of software and hardware. This talk will also cover basic electronics (don't be scared of the breadboard), and show you how to build a whoopie cushion prank with some paper plates and your Pi. Leave feeling inspired to create something fun!
Video SlidesColleen Schnettler
Colleen is the owner of Bitmapped Designs, a full-stack web development company specializing in Ruby on Rails. She switches codebases frequently, and has seen all sorts of interesting problems and code styles. She lives at the beach, and tries valiantly to squeeze in time for weightlifting. She used to have a thoughtful and eclectic list of hobbies that made her sound worldly and impressive, but she replaced them with three children.
Cocktail Masterclass with Ruby and Friends.
Welcome to Nashville, Tennessee! Have you ever wanted to try making aTennessee Two Step Cocktail
, an Old Fashioned
, or a Citrus peach cooler
for the non-drinkers? Well now you can!
Introducing Ruby Mixologist
the world's first (probably) Ruby cocktail maker. Ruby Mixologist is a cocktail robot tending to all your drink needs.
In this talk we will discover how you too can build your very own Ruby powered drinks robot.
Video SlidesJulian Cheal
A British Ruby/Rails developer, with a penchant for tweed, fine coffee, homebrewing, and home automation. I make clouds at Red Hat.
lo-fi hip hop ruby - beats to relax/study to
Lo-fi hip hop, or chillhop, is both a successful meme (thanks to some very specifically worded youtube playlists) and a relaxing music genre. It is characterized by loops of quiet, calm music (often jazz), a hip-hop inspired beat, some airy effects, and perhaps some vocal samples. Now, would it amaze you to learn that our best friend Ruby can help us make our own tracks like these? In fact, by using a few gems for audio manipulation, beat making, and UI construction, we’ll construct our own chillhop studio! Thanks Ruby!
Video SlidesZachary Schroeder
Zach enjoys Ruby, drums, cassette tape loops, and chatting with others about any of these.