Hero program

Keynote Speakers

Yukihiro Matsumoto (Matz) Heroku/Ruby Association

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

Video

Jessica Kerr Atomist

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.

Video

Slides

Karen G. Lloyd Microbiology Department, University of Tennessee

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/.

Video

Slides

Sandi Metz Sandi Metz

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.

Video

Sessions

General

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.

Video
Speaker icon

Alberto 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.

General

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
Speaker icon

Avdi 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.

General

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 Slides
Speaker icon

Ben 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.

General

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 Slides
Speaker icon

Brad 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.

General

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?

Video
Speaker icon

Brandon 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.

General

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 Slides
Speaker icon

Brittany 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.

General

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
Speaker icon

Chris 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.

General

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 Slides
Speaker icon

Coraline 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.

General

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.

Video
Speaker icon

Daniel 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.

General

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 Slides
Speaker icon

Daniel 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.

General

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 Slides
Speaker icon

Dave 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.

General

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 Slides
Speaker icon

David 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.

General

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 Slides
Speaker icon

David McDonald

Engineering Lead at Weedmaps.

General

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 Slides
Speaker icon

DeeDee 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.

General

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 Slides
Speaker icon

Elle 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

General

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 Slides
Speaker icon

Frederick 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.

General

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
Video
Speaker icon

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.

General

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
Video Slides
Speaker icon

Ivan Nemytchenko

First-wave rubyist, educator, complexity fighter, serbian sibirean.

General

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 Slides
Speaker icon

Joe 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.

General

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 Slides
Speaker icon

Keavy 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.

General

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 Slides
Speaker icon

Kevin 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.

General

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 Slides
Speaker icon

Kevin 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.”

General

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 Slides
Speaker icon

Lori 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.

General

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 Slides
Speaker icon

Mercedes 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.

General

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 Slides
Speaker icon

Mike 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).

General

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 Slides
Speaker icon

Noah 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.

General

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 Slides
Speaker icon

Tony 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.

General

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 Slides
Speaker icon

Udit 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.

↑ Back to top
Code Quality

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 Slides
Speaker icon

Ernesto 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.

Code Quality

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 Slides
Speaker icon

Penelope 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.

Code Quality

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 Slides
Speaker icon

Roman 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.

↑ Back to top
Core + STDLIB

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 Slides
Speaker icon

Aaron Patterson

Keyboards, Cats, and Code at GitHub!

Core + STDLIB

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 Slides
Speaker icon

Adam 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.

Core + STDLIB

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 Slides
Speaker icon

Esther 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.

Core + STDLIB

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 Slides
Speaker icon

Victor 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.

↑ Back to top
Hindsight

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 Slides
Speaker icon

Amy 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.

Speaker icon

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.

Hindsight

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
Speaker icon

Brian 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.

Hindsight

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 Slides
Speaker icon

Jon Druse

Engineering Director at W+R Studios and lives in the Nashville area. Full-time Rubyist since 2007.

Hindsight

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 Slides
Speaker icon

Molly 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.

↑ Back to top
Learning Ruby

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 Slides
Speaker icon

Erica Sosa

Linguist turned software engineer @ Braintree

Learning Ruby

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 Slides
Speaker icon

Kevin 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.

Learning Ruby

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 Slides
Speaker icon

Michael Hartl

Michael Hartl is the author of Learn Enough Ruby to Be Dangerous and the Ruby on Rails Tutorial.

Learning Ruby

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 Slides
Speaker icon

Mina 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.

Learning Ruby

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 Slides
Speaker icon

Noah 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.

↑ Back to top
Metaprogramming for Good

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.

Video
Speaker icon

Betsy 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.

Metaprogramming for Good

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
Speaker icon

Daniel 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.

Metaprogramming for Good

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 Slides
Speaker icon

Vladimir 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.

↑ Back to top
Ruby Implementations

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
Video Slides
Speaker icon

Charles Oliver Nutter

Charles works on JRuby and other JVM language concerns at Red Hat.

Speaker icon

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.

Ruby Implementations

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 Slides
Speaker icon

Christian 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.

Ruby Implementations

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 Slides
Speaker icon

Ryan 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.

Ruby Implementations

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
Speaker icon

Yurie 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.

Speaker icon

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.

↑ Back to top
RubyKaigi

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 Slides
Speaker icon

Colin 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.

RubyKaigi

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 Slides
Speaker icon

hitoshi HASUMI(JP_SMN)

A programmer of Monstar Lab, Shimane office. RubyKaigi2019 speaker, RubyKaigi2018 speaker, and KRKRB2019 (the Ruby Conference of Cracow, Poland) speaker.

RubyKaigi

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 Slides
Speaker icon

Kazuki Tsujimoto

Kazuki Tsujimoto is an infrastructure engineer at Nomura Research Institute, Ltd. He is also a CRuby committer.

↑ Back to top
Static Typing

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 Slides
Speaker icon

Jake 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.

Speaker icon

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.

Static Typing

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 Slides
Speaker icon

Ufuk 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.

Static Typing

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 Slides
Speaker icon

Yusuke 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,]}}

↑ Back to top
Weird and Wonderful

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 Slides
Speaker icon

Colleen 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.

Weird and Wonderful

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 Slides
Speaker icon

Julian Cheal

A British Ruby/Rails developer, with a penchant for tweed, fine coffee, homebrewing, and home automation. I make clouds at Red Hat.

Weird and Wonderful

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 Slides
Speaker icon

Zachary Schroeder

Zach enjoys Ruby, drums, cassette tape loops, and chatting with others about any of these.

↑ Back to top