Ruby Deep Dive

Methods of Memory Management in MRI

Let's talk about MRI's GC! In this talk we will cover memory management algorithms in MRI. We will cover how objects are allocated and how they are freed. We will start by looking at Ruby's memory layout, including page allocation and object allocations within those pages. Next we'll cover collection algorithms used by MRI starting with the mark and sweep algorithm, followed by generational collection, and the tri color abstraction. Finally we'll cover experimental developments for the GC like heap splitting. Expect to leave this talk with heaps of pointers to add to your remembered set!

Watch the Video   Slide Deck
Aaron Patterson

Keyboards, Cats, and Code at GitHub.

Ruby for Home-Ec

Come learn how to design your own algorithms and code to solve problems around the house. Trying to use your scrap wood efficiently? Want to sort your pantry to maximize variety? I’ll talk about the problem-solving process, walk through code, and touch on the computer science behind it all.

Watch the Video  
Adam Forsyth

I'm a Software Engineer and Community Lead @ Braintree. At work I do a variety of things from planning events to API development in Ruby to relational database scaling. Outside of work, I'm a Python enthusiast and an organizer of ChiPy. I like to give talks about Python, Ruby, and software development practices.

War Stories

Datacenter Fires and Other "Minor" Disasters

Most of us have a "that day I broke the internet" story. Some are amusing and some are disastrous but all of these stories change how we operate going forward. I'll share the amusing stories behind why I always take a database backup, why feature flags are important, the importance of automation, and how having a team with varied backgrounds can save the day. Along the way I'll talk about a data center fire, deleting a production database, and accidentally setting up a DDOS attack against our own site. I hope that by learning from my mistakes you won't have to make them yourself.

Watch the Video  
Aja Hammerly

Aja lives in Seattle where she is a Developer Advocate at Google and a member of the Seattle Ruby Brigade. Her favorite languages are Ruby and Prolog. She also loves working with large piles of data. In her free time she enjoys skiing, cooking, knitting, and long coding sessions on the beach.

Even the Justice League Works Remotely

"Remote welcome for senior level". This appears in countless job descriptions. Remote work is largely accepted in the developer community, but often only for very experienced developers. This fear is not without cause. Sometimes hiring remote developers at any level doesn’t turn out well but there’s generally a reason for that. Newer developers can also be very successful remote workers. In this talk, you’ll learn what to look for when hiring remote developers at any level and non-senior developers will learn what characteristics to keep in mind in order to have a successful remote experience.

Watch the Video   Slide Deck
Allison McMillan

Allison McMillan is a software developer at Collective Idea. She's been a startup founder, community builder at the University of Michigan, and Managing Director of a national non-profit. Allison got her start at a DC Rails Girls event and is now a chapter organizer. She speaks on a variety of topics including mentorship, remote work, and being a parent and developer. When she's not coding, you can find her encouraging her toddler's climbing skills or pretending she has time to bake.


Just a Ruby Minute

Just a Minute is a game show that's a part of the British national consciousness, delighting audiences across the country for almost half a century. In it, speakers are challenged to speak for one minute without hesitation, repetition or deviation, it's much harder than it sounds. It's fast paced, funny, insightful and you might even learn something.

Watch the Video  
Andrew Faraday

A Ruby developer, presenter, musician and kidney donor working in Surrey, England. His background includes a music degree, 5 years of radio presenting/production and panel game hosting. A long history of combining code and music to explore the artistic capabilities of programming. Professional experience includes a lot of integration with large legacy databases.

From no OSS experience to the core team in 15 minutes a day

Using and contributing to open source has been a cornerstone of the Ruby community for many years. Despite this strong tradition, it’s hard to find anything collecting the likely advantages and costs of working on open source. This talk will introduce open source work, the benefits and costs of doing that work, and then provide a straightforward list of activities that can be done by anyone, no matter their level of experience with programming. Pick a project, schedule at least 15 minutes per day, join the core team. It’s your destiny!

Watch the Video   Slide Deck
André Arko

André Arko is the lead developer of Bundler and RubyGems, works at Cloud City as a software development consultant, and founder of Ruby Together, a non-profit trade association that helps resources like Bundler and to the entire Ruby community.

Building a Better OpenStruct

OpenStruct, part of Ruby's standard library, is prized for its beautiful API. It provides dynamic data objects with automatically generated getters and setters. Unfortunately, OpenStruct also carries a hefty performance penalty.

Luckily, Rubyists have recently improved OpenStruct performance and provided some alternatives. We'll study their approaches, learning to take advantage of the tools in our ecosystem while advancing the state our community.

Sometimes, we can have our cake and eat it too. But it takes creativity, hard work, and willingness to question why things are the way they are.

Watch the Video   Slide Deck
Ariel Caplan

Ariel has been obsessed with OpenStruct ever since - having not yet heard of it - he built a hacky version while learning Ruby at the Flatiron School. More recently, he built two OpenStruct-style gems, PersistentOpenStruct and DynamicClass.

Ariel works as a software engineer at Vitals, trying to bend the curve to achieve both code quality and great performance. In his experience, seeking multiple perspectives is the greatest tool available.


Better Code Through Boring(er) Tests

Your tests are annoying. Whenever you update your application code, you need to change a lot of them. You've built yourself some test macros, and some nice FactoryGirl factories, and installed this really cool matcher gem... and your tests are still annoying. What if you changed your application code instead? In this talk, you'll learn what "listening to your tests" means in the real world: no mysticism, no arrogant TDD purism, just a few practical refactorings you can use tomorrow at work.

Watch the Video   Slide Deck
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.

The long strange trip of a senior developer

Have you ever felt like you are in the passenger seat of your career? By simply looking around and seeing how few 20+ year veterans you work with, you're actually staring our industry's sustainability problem right in the face. But the software industry needs you still contributing 20 years from now! Fret not, we can start fixing these problems, right now, in your own job.

Using in-depth research across companies of all sizes, you'll come away with a plan to start designing a sustainable career track to help you grow in skill, influence, and income now and long into the future.

Watch the Video   Slide Deck
Brandon Hays

Brandon left the world of marketing to find that creating software made him happy. Brandon lives in Austin, TX, where he helps run The Frontside, a UI engineering consultancy. Brandon's lifelong mission to to hug every developer.

The Truth About Mentoring Minorities

In the tech industry, we currently lack the ability to produce mentors who are able to effectively teach and connect with their minority protégés. In this talk, we discuss what changes we can make in the way we mentor to give our minority protégés the best chance to succeed. We will take a look at some of the struggles that I faced throughout my software developer apprenticeship, and pinpoint the sources of my success. In conjunction, we will also look at various case studies of other minority professionals who were both successful and unsuccessful in their attempts to climb the corporate ladder.

Watch the Video   Slide Deck
Byron Woodfork

In the midst of attempting to teach myself software development, one of my friends granted me the opportunity to go through a software developer apprenticeship at 8th Light. Ever since completing my apprenticeship, I wondered, why was I able to break into the tech industry, when so many other minorities aren't given similar opportunities? And why didn't I feel alienated in the process? These questions, helped inspire my search in finding those answers so that I could help others like me.


Ruby versus the Titans of FP

Clojure, Haskell and Javascript reign as the dominant functional languages of our era. But surely anything they can do, Ruby can do better? And what is it that they actually do? Come learn about three core concepts of functional programming, and see how Ruby stacks up against its peers when it comes to making them powerful.

Watch the Video   Slide Deck
Cassandra Cruz

As a software engineer for Mavenlink, I'm new to Ruby but not to programming. My first experience with code was on QBasic 15 years ago, and I haven't put down a keyboard since. Now on my first job as a Rubyist, I've been having fun bringing my deep functional knowledge to my organization, and love teaching anyone that wants to learn.

Weird Ruby

Rhythmic Recursion

One of the best things about multi-disciplinary work is recognizing familiar ideas in a different setting. It’s like running into an old friend while you’re on vacation halfway around the world-- “I had no idea you’d be here! It’s so great to see you!”

In this talk we’ll run into our old friend recursion in the faraway land of minimalist music, by rewriting a piece of rhythmic music in Ruby.

Watch the Video  
Celeen Rusk

Celeen is the proud owner of a bachelor's degree in music. She loves sparkles, vegetables, and optimistic determination. She currently works as a Software Engineer at Braintree.

Grow Your Team In 90 Days

So you want to work with an awesome ruby developer? Great! But finding one is hard. It’s much easier to hire that apprentice or bootcamp grad, but that person is not an awesome developer. How do you help them get there?

You will learn how to build a learning plan and become the best mentor to a budding software developer. You have the opportunity to mold your apprentice’s skill set into exactly what you need, while benefiting from their diverse skills and experiences. We will build an example learning plan of a developer learning Ruby, showing clear and specific choices and likely outcomes.

Watch the Video   Slide Deck
Cheryl Gore Schaefer

After 15 years of experience in music education and performance, Cheryl Schaefer pivoted toward a career in software development. She is a software engineer with LaunchCode, a non-profit organization that helps people build careers through education and job placement in technology. Cheryl works primarily in full stack Ruby on Rails and dabbles in many other subjects. She is a long-standing volunteer mentor with CoderGirl and has served as a speaker for STL Ruby and other local meet ups.

Deletion Driven Development: Code to delete code!

Good news! Ruby is a successful and mature programming language with a wealth of libraries and legacy applications that have been contributed to for many years. The bad news: Those projects might contain a large amount of useless, unused code which adds needless complexity and confuses new developers. In this talk I'll explain how to build a static analysis tool to help you find unused code and remove it - because there's no code that's easier to maintain than no code at all!

Watch the Video   Slide Deck
Chris Arcand

Chris is a Ruby developer at Red Hat on the ManageIQ core team. He enjoys working full time on open source software to manage the mythical Cloud™ and has contributed to various projects in the Ruby ecosystem. Chris hails from Minnesota in the United States and also enjoys ice hockey, hiking, and tasty beers.


Ruby’s C Extension Problem and How We're Solving It

Ruby’s C extensions have so far been the best way to improve the performance of Ruby code. Ironically, they are now holding performance back, because they expose the internals of Ruby and mean we aren’t free to make major changes to how Ruby works.

In JRuby+Truffle we have a radical solution to this problem – we’re going to interpret the source code of your C extensions, like how Ruby interprets Ruby code. Combined with a JIT this lets us optimise Ruby but keep support for C extensions.

Watch the Video   Slide Deck
Chris Seaton

Chris Seaton is a Research Manager at the Virtual Machine Group in Oracle Labs, where he leads the work to implement Ruby using the next generation of JVM technology, and other projects. He recently finished a PhD on raising the performance of Ruby.

Weird Ruby

That Works?! Quines and Other Delightfully Useless Programs

Performance, readability and correctness are fine and dandy, but what happens when we start optimizing for whimsy, illegibility and outright silliness? Self-rewriting programs that also function as ASCII art? Yup. Rewrite any JavaScript program only using six characters? Why not?

Let's take a break from the practical and laugh at some of the most unbelievable code you've ever seen. Then let's pull out the magnifying glass to figure out how it actually works.

Learn how to read the unreadable and how to write code that—to borrow a phrase from the Ig Nobel Awards—makes people laugh, then think.

Watch the Video   Slide Deck
Colin Fulton

Originally coming from the world of theatrical design and installation art, Colin works as a front-end developer for Arbor Networks.

Diving into the Details with DTrace

"Argh, why is this so slow?!" We've all asked questions like this without getting satisfying answers. And so we slog along, finding workarounds and architecting around the slow bits.

But what if we had a friend who could see things we can't? Someone who could say whether our guesses were right, and what to look at next?

DTrace is that friend, and it's here to help! In this talk, I'll show you how DTrace can answer incredibly general and specific questions about systems performance, and help us to generate new ones. Along the way, we'll see that it's easier to use than you might think!

Watch the Video   Slide Deck
Colin Jones

Colin Jones is CTO at 8th Light, where he works with teams to craft reliable, maintainable software. He's into distributed systems, performance, security, and building the right thing.

Ruby and Hardware

Programming in the Small: Kids, Chickens, and Ruby

After several years of programming in Ruby using Shoes, my daughter and I were hunting for a new project. Something more useful than a game. Something with a real-world connection. Then it struck us: Chickens!

Join us as we show you how we built our coop monitoring system. It’ll be a wild ride of hardware hacking, weather-proofing, and father-daughter bonding, with Ruby sprinkled throughout. You’ll learn how to modernize your surroundings, and about engaging the young people in your life in technology along the way.

Watch the Video   Slide Deck
Coraline Clark

I am an 8 year-old girl who loves to move and dance! When I was 5, I learned to program with Ruby, Hackety-Hack, and Shoes. At first I thought it was boring, but then I got really into it and fell in love with computering. I even named my guinea pig Ruby! I showed my Star Wars program at a conference in Portland, and I'm excited to visit another city and speak about Ruby. Mi familia hablamos engles y espanol. I go to a Spanish school, and I even have homework in Spanish.

Jason R. Clark

I fell in love with programming as a young boy watching my dad work in Clipper and dBase III (no, really). The obsession sparked there continues to this day. I work for New Relic, and in my spare time contribute to the Shoes project. When not at work, I enjoy cycling, homebrewing, and hanging out with my family.

Attention Rubyists: you can write video games

Ruby may seem like a humdrum language best suited for writing web apps, but underneath that cool exterior lies plenty of power -- power we can harness for making our own games!

In this talk, we'll introduce Gosu, a sweet little game library. We'll talk about how games are structured in pretty much every language and framework ever, where to get ideas for things to make, and ways you can share your game with your friends and the world.

Watch the Video  
Cory Chamblin

Cory Chamblin is a software engineer at PagerDuty by day, and a secret game programmer by night.

Ruby Deep Dive

A Look at Hooks

Ruby has several methods that are invoked implicitly under certain circumstances. These methods are called "hooks", and they provide points to extend behavior. While hooks might seem like "spooky action at a distance", they can be really powerful. In fact, hooks are one of the primary ways that Ruby provides for meta-programming.

Unfortunately, Ruby's hooks are not all documented very well. We'll take a look at what hooks are available and how to use them. We'll also talk about when to avoid using hooks and provide some tips on how to troubleshoot when hooks are involved.

Watch the Video  
Craig Buchek

Craig is an independent consultant specializing in helping teams improve the way they work — both their processes and their technical practices. He works as an Agile player/coach on Rails rescue projects, DevOps automation, and anything else he finds interesting.

Craig started using Ruby and Rails in late 2005, and found a home in the framework, the language, and the community.

When he's not coding, Craig enjoys canoeing, attending concerts, traveling, and beekeeping.

Implementing Virtual Machines in Ruby (and C)

Most of us who've played games or worked in any one of a number of popular programming languages will have used virtual machines but unless we've taken a course in programming language design we probably have only a loose idea of what these are and how they work.

In this talk I'll look at the various parts necessary to model a computer-like machine in code, borrowing ideas as I go from real-world hardware design. We'll use a mixture of C and Ruby as our modelling languages: C is the lingua franca of the VM world whilst Ruby is the language which brought us monkey-patching...

Watch the Video   Slide Deck
Eleanor McHugh

London-based hacker Ellie has a passion for the esoteric corners of programming stretching back to her misspent teenage years. During the course of her career she's worked on mission critical systems ranging from avionics to banking security and digital trust arbitration. Ellie's the author of A Go Developer's Notebook and talks on low-level, network and security programming in Ruby & Go.

As a responsible parent Ellie enjoys polyhedral dice, home brewing and gothic music.

The Neuroscience and Psychology of Open Source Communities

Because people are complex, diverse creatures, ensuring that your open source community is healthy, vibrant, and welcoming can be challenging. The good news is, science can help you understand human thoughts and behaviors, and the complexities of interacting in a collaborative way online. We'll discuss cognitive biases, the SCARF collaboration model, the online community life cycle, and how these things interact. You'll come away from this talk with a deeper understanding of yourself, your fellow humans, & the knowledge to improve personal interactions and the open source communities you belong to.

Watch the Video  
Elizabeth Barron

Elizabeth is an author, speaker, mentor, and former developer. She currently works as the Patchwork Community Manager at GitHub, and she's all about looking at new ways to solve old problems, especially related to human behavior in open source communities. She lives in Cincinnati, Ohio with her husband, their 3 children, and their dogs Raisin and Lucy.

Comparative Ruby

Building maintainable command-line tools with MRuby

mruby and mruby-cli makes it possible to ship single binary command-line tools that can be used without setup effort, but how difficult is development in MRuby?

In this talk we'll explore how to work with MRuby and mruby-cli. We'll cover the differences in development patterns when using MRuby, the maturity of the MRuby ecosystem, and development patterns when using mruby-cli to build a command-line tool.

Watch the Video  
Eric Hodel

Eric Hodel is a ruby committer and maintainer of many gems. He works at Fastly on the API features team maintaining and building ruby services that customers use to configure their CDN services.

Dōmo arigatō, Mr. Roboto: Machine Learning with Ruby

Machine learning is a popular and rapidly growing field these days, but you don't usually hear it mentioned in the same breath as Ruby. Many developers assume that if you want to do machine learning or computer vision, you've got to do it in Python or Java. Not so! In this talk, we'll walk through training a neural network written in Ruby on the MNIST dataset, then develop an application to use that network to classify handwritten numbers.

Watch the Video   Slide Deck
Eric Weinstein

Eric Weinstein is the author of Ruby Wizardry (No Starch Press), an illustrated guide to the language for children. He enjoys writing Ruby, Clojure, Elixir, Idris, and Swift.


All abstractions are lies, if they are abstractions at all, and as developers, we live our lives surrounded by them. What makes a some abstractions better than others? This will be an opinionated and empowering look at the value and nature of abstractions, with a jaunt through quantum mechanics and the nature of reality.

You know, just your average, light discussion.

Watch the Video   Slide Deck
Ernie Miller

Ernie's been programming since he was 6, and professionally for a couple of decades or so. He's encouraged by the idea that there is probably one version of him out there, according to the many-worlds interpretation of quantum mechanics, that isn't a huge dork. The version you're entangled with isn't that one, though. Sorry.

Problem Solved! Using Logic Programming to Find Answers.

We love Ruby's object orientation, and you might have heard functional programming is the new hotness. But don't leave home without one more paradigm! Logic programs express relations and constraints, allowing us to work with incomplete information, build knowledge systems, and find outputs of a system given whatever inputs are available.

You'll see examples of logic programs using Ruby, learn about an algorithm that searches for a solution in a finite problem space, and explore potential applications for logic programming approaches, both in practical areas and for your mental models.

Watch the Video   Slide Deck
Gavin McGimpsey

At age twelve, Gavin read the Pickaxe book cover-to-cover. (He didn't know any better.) Since then, he has explored a variety of programming interests, always coming home to Ruby. Gavin teaches people to think better in preparation for the Law School Admissions Test, and was the 2012 Rookie of the Year for contract bridge. Yes, the game your grandma plays!

Ruby and Hardware

How I Taught My Dog To Text Selfies

This talk is for the Rubyist who wants to get into hardware hacking but feels intimidated or unsure of where to start. The Arduino Yun is wifi-enabled and runs a stripped-down version of Linux. That means that you can build hardware hacks that execute Ruby scripts and interact with web APIs. In this talk, we'll start from scratch and live code a hardware hack that my dog uses to text me selfies using a webcam, Twilio, and a big red button.

Watch the Video  
Greg Baugues

Greg lives in Brooklyn and serves on the developer evangelism team for Twilio.

Ruby Deep Dive

Keyword Args — the killer Ruby feature you aren't using

Write clearer code more easily. Write functions that are more composable and flexible.

Ruby 2.0's KWArgs feature isn't just an easier way to write functions that take keyword arguments; KWArgs turn Ruby into a lean, mean Hash processing machine.

In this talk, you'll learn the details of how to write the next generation of Ruby code. Code that is easier to read, easier to write, more flexible and easier to change, all based on this one simple Ruby feature.

Watch the Video   Slide Deck
Guyren G Howe

Rails Developer since about 2006. Taught two classes at San Diego's LEARN Rails bootcamp. Frequent presenter at local Ruby groups.

Degrees in Computer Science, Math, Economics and Philosophy. Published book about OOP.

Examples of my past presentations:

Ruby Deep Dive

Lies, Damned Lies, and Substrings

Generate all of the substrings of a string—a classic coding problem. But what's its time complexity? In many languages this is a pretty straightforward question, but in Ruby it turns out, it depends.

Follow me into the matrix as I explore copy-on-write optimization, how substrings are created in MRI, and eventually create a custom build of Ruby to try to speed up this classic coding problem. This talk will be a mix of computer science and a deep dive into how Ruby strings work in MRI.

Watch the Video   Slide Deck
Haseeb Qureshi

Haseeb is a software engineer at Airbnb and ardent Rubyist. Before Airbnb, he was a lead instructor at App Academy, a top Rails bootcamp. He recently gained national media attention after sharing his story of attending a coding bootcamp to landing his first job as a software engineer.

Before moving to California to break into the tech industry, Haseeb was a professional poker player and author. He spends way too much time choreographing impromptu fight scenes in his head.

Comparative Ruby

Why recursion matters

In modern programming, recursion is so common that we take it for granted. We work with recursive processes and structures every day, and it's easy to forget that recursion was once a highly contentious issue in programming language design.

But there's more to recursion than meets the eye. In this talk I'll discuss how it is fundamental to computing; how it can prove programs are correct, make them run faster, and even let you run programs backwards! Along the way we'll meet maths, Haskell, Bash, JavaScript, and our old friend Ruby doing some very surprising things.

Watch the Video  
James Coglan

I've been working with Ruby, JavaScript and the web for almost a decade. As an open source developer I created the Faye messaging system and the WebSocket libraries that now power ActionCable.

I've also worked on various toy programming languages, including a PEG compiler, some Lisps, and a proof assistant for number theory, and I've written about use of functional ideas in concurrent programming.

Comparative Ruby


Our work as programmers consists largely of problem decomposition and solution recomposition. This talk is interested in how we cobble small units together into cohesive solutions. We'll examine and compare both object and functional composition, using a Haskell-inspired, functional style of Ruby. Along the way, we'll see how good functional principles can improve our object-oriented design, and vice versa.

Watch the Video   Slide Deck
James Dabbs

James is a reformed topologist, now vowing to use his math for good. He teaches Ruby and complains about mutable state at The Iron Yard in DC. In those rare instances when he's not hacking or teaching or evangelizing category theory, he also enjoys drumming - mostly math rock, natch.


Computer Science: The Good Parts

You don't need a 4-year degree to learn the best parts of computer science. Maybe you've seen jargon like "Big O Notation," "binary trees", "graph theory", "map-reduce", or the "Turing test", but have been afraid to ask. But did you know that that these concepts are responsible for Mars rovers, self-driving cars, mobile databases, our air traffic control system, and and even how we elect presidents? In this beginner-focused talk, I will present some simple and very practical ways apply the "good parts" of computer science to your next app.

Watch the Video   Slide Deck
Jeffrey Cohen

Jeffrey Cohen is an independent consultant and entrepreneur. He holds an appointment as Adjunct Assistant Professor in the Masters Program in Computer Science at the University of Chicago. A longtime Ruby developer, he has specialized in healthcare and retail industries, building both small and large-scale systems. Jeffrey co-authored the book "Ruby on Rails for .NET Developers" (Pragmatic Press, 2008) and has worked with object-oriented architectures for 20 years.

Lessons Learned

My Meta Moments

Meta-programming is alluring. To write code that writes more code sounds like the peak of efficiency, but learning it is filled with infinite loops and confusing stack traces. It is a place with lots of hair pulling and endless puts debugging.

Meta-programming in ruby can be intimidating. Yet, even with all that, it is fun. It is learnable. It is quintessentially ruby. If you’re interested in getting your feet wet, come share my journey of learning things like method dispatch, BasicObject, class ancestry, and the joy of things you should think twice about before doing in production code.

Watch the Video   Slide Deck
John DeWyze

John is a developer at Braintree in Chicago and has been in the field for two years. He can’t sing, draw, or sculpt, but after learning to code sees the keyboard as a tool for creating. He has a passion for learning and spends his time reading programming books, philosophical blog posts, and BuzzFeed articles on “The 17 ways to know your patronus is a dog.” He hopes to contribute to open source projects and in the meantime practices his ruby-foo, plays lots of games, and loves a good story.

Ruby and Hardware

Building HAL: Running Ruby with Your Voice

We’ve been living in the future for a full 15 years already and developers are still using antiquated technology like “keyboards” and “mice” to run their applications.

We’re going to learn to use voice recognition to run our Ruby code so we won’t need to depend on archaic plastic input methods to live our megalomaniacal dreams.

I think we can all agree that the world needs more robots listening to our every word, let’s build an army of them and arm them with Ruby!

Watch the Video  
Jonan Scheffler

Jonan is a developer at Heroku and an aspiring astronaut. He believes in you and your potential and wants to help you build beautiful things. He loves robots, games, LEGOs and Magic: The Gathering. If you like any of those things or are willing to pretend you should go and introduce yourself. Other good conversation starters: anything you’re passionate about, your life story, what you want to be when you grow up and how you became so fabulous.

Ruby and Hardware

It's More Fun to Compute

Come with us now on a journey through time and space. As we explore the world of analog/digital synthesis. From computer generated music to physical synthesisers and everything in between.

So you want to write music with code, but don’t know the difference between an LFO, ADSR, LMFAO, etc. Or a Sine wave, Saw wave, Google wave. We’ll explore what these mean, and how Ruby can be used to make awesome sounds. Ever wondered what Fizz Buzz sounds like, or which sounds better bubble sort or quick sort? So hey Ruby, let’s make music!

Watch the Video  
Julian Cheal

A British Ruby/Rails developer, with a penchant for tweed, fine coffee, and homebrewing. When not working for clients, I help organise fun events around the world that teach people to program flying robots. I also occasionally speak at international conferences on the intersection of programming and robotics.


Surgically Refactoring Ruby with Suture

The next feature means changing legacy code. The estimate just says "PAIN" in red ink. Your hands tremble as you claim the card from the wall.

For all of Ruby's breakthroughs, refactoring is as painful as 2004, when Feathers' book released. It's time we Make Refactors Great Again.

That's why I wrote Suture, a gem to help at every step:

  • In development, new code is verified against recorded calls
  • In staging, old & new code is ensured side-by-side
  • In production, unexpected errors fall back to the old code

With renewed confidence and without fear, you grab the card. You've got this.

Watch the Video  
Justin Searls

Nobody knows bad code like Justin Searls—he writes bad code effortlessly. And it's given him the chance to study why the industry has gotten so good at making bad software. He co-founded Test Double, an agency focused on fixing what's broken in software.

Weird Ruby

Metaprogramming? Not good enough!

If you know how to metaprogram in Ruby, you can create methods and objects on the fly, build Domain Specific Languages, or just save yourself a lot of typing. But can you change how methods are dispatched? Can you decide that the normal inheritance rules don't apply to some object?

In order to change those core parts of the language, there can't be much difference between how a language is implemented and how it's used. In this talk, you'll make that difference smaller, building a totally extensible object model on top of Ruby, using less than a dozen new classes and methods.

Watch the Video   Slide Deck
Justin Weiss

Justin Weiss leads the development team at, the best place to find legal help on the web. He's the author of Practicing Rails, a book about learning Rails without being overwhelmed. On his website,, Justin writes clear, simple tutorials to help Rails developers write fast, clean, well-tested apps.

Learning and Teaching

Continuing Education at Work

The list of things we want to learn is infinite. How many of us have marked items to read/watch, yet never go back to them? Despite the best of intentions, I often only learn what I directly need. It wasn’t until I started running a couple lightweight continuing education programs at work that I followed through on my goals. We’ll discuss strategies for making these programs low maintenance and long-lived, as well as flexible enough to help both more and less experienced folks. If you’ve been looking for a more effective approach to learning, but still outside classrooms, this talk is for you!

Watch the Video   Slide Deck
Katherine Wu

KWu is a Ruby Agent software engineer at New Relic. Before that, she was in tech support and product operations at Google. She likes to "strategically maximize learning efficiency," aka only work a little to learn a lot. When not at a computer, she makes pickles, knits, and lifts weights.

Learning and Teaching

“Am I senior yet?” Grow your career by teaching your peers.

“How do I become a senior engineer?” It’s a question every bootcamp grad will ask. Most engineers look at advancement through a lens of increasing technical skill. More than ever, though, being “senior” means more than just parsing Ruby in your sleep. As our companies grow and as our industry grows, seniority means helping new teammates and colleagues advance their own skills. It means knowing how to teach.

You don’t need Matz-level knowledge to be a great teacher. With social awareness, a dash of psychology, and some proven approaches, by helping others learn, you’ll earn senior-level respect.

Watch the Video  
Katlyn Parvin

Katlyn is the Director of Engineering at Mavenlink. She loves the ruby community. When she is not reading or thinking about coding, she enjoys hiking, traveling and taking care of furry little creatures.

Life Beyond Bootcamps

Becoming a Mid: Two Perspectives on Leveling Up

What does becoming a mid-level developer mean? How can a junior set goals and make steps to achieve this? It's difficult to shed the title of 'junior', not only in your own mind, but in the minds of others. It is important to keep progressing in your career as a developer to be able to level up and no longer be seen as the junior on the team. Kim and Kinsey will provide two perspectives to enable you to leave this talk with tangible action items. They will also dive into what employers can do to help build frameworks to allow for this transition.

Watch the Video   Slide Deck
Kimberly D. Barnes

Kim is a software engineer and team lead at GoSpotCheck. As a kid, her dad introduced her to programming by assigning Basic programs as chores. Since then, she has had a variety of experiences with different technologies, processes, and teams. Kim is passionate about TDD, pair programming, and enjoys mentoring other passionate developers.

Kinsey Ann Durham

Kinsey is a software engineer at GoSpotCheck in Denver, Colorado. She is the co-founder of Kubmo, a non-profit dedicated to building and teaching technology curriculum to young women around the world. She is the chair of the BridgeFoundry board and is a mentor for Bloc. She is also obsessed with dogs, dancing ballet, and fly fishing in the Colorado outdoors. She is passionate about making the world a better place through the lens of software development.


Ruby 3 Concurrency

Learn from Koichi about the work he's doing to bring a new concurrency model to Ruby 3!

Watch the Video   Slide Deck
Koichi Sasada

Koichi works at Heroku as a Ruby Core developer.

Ruby and Hardware

Running Global Manufacturing on Ruby (among other things)

A few miles from this convention center, Teespring prints millions of short-run custom products every year from modern direct-to-garment printers and ships them all over the world. Like most companies, Teespring's architecture is polyglot, but the core business logic is in Ruby. We'll discuss how we use large at-scale manufacturing and production systems to help anyone, anywhere turn their ideas into reality.

Watch the Video   Slide Deck
Lee Edwards

Lee is the VP of Engineering at Teespring, a marketplace where anyone can turn their ideas into a successful business, and buyers can find designs that are made for them. Lee lives in San Francisco (but is a New Yorker at heart) and loves cocktails and running. He has been working with Ruby since 2009, but started his career doing mechanical design for iRobot's Government & Industrial Division. Now his Twitter account probably disqualifies him from working with the government ever again.

Rainbows! Color Theory for Computers

We often use color as a way to add information, whether in design, in UX, or for visualizations. When we visualize information, what's the best possible color scheme to use? How can we display the most possible information?

The only way to know is to explore the nature of color! We'll build up to the color-handling code that exists in 'graphics.rb', a Ruby-language visualizations library. For free, we'll end up with intuitive models of computer color spaces and tricks for how to think about common color concepts like gradients and paint mixing.

Watch the Video  
Lito Nicolai

Lito is a programmer and illustrator from Seattle, Washington. He likes getting slowly better at difficult things.

Tools and Toys

C Ruby? C Ruby Go! Go Ruby Go!

Ever wanted to rewrite performance sensitive code as a native Ruby extension, but got stuck trying to navigate the depths of Ruby’s C API before you could get anything done? Or maybe you’re just not comfortable with C and want an easier path.

Do you know any Go? Well, if you do, you’re in luck! Join us for this talk about a tool named gorb that will quickly and easily let you generate native Ruby extension wrappers for your Go programs. And if you don’t know Go, come anyway, it’s really easy to learn! We’ll have you writing blazing fast code that you can use right from Ruby, in no time at all.

Watch the Video  
Loren Segal

I am an experimenter of programming languages and attempter at crazy ideas. I love to play with new technologies, languages, and dig into what makes them tick. I also like to build tools and plug weird things into each other to see how they work, and also how they break! I've written a bunch of tools in Ruby (YARD, AWS SDK for Ruby) and Go (AWS SDK for Go), and want to share my knowledge of both languages.

Ruby Deep Dive

Seeing Metaprogramming and Lambda Function Patterns in Ruby

Metaprogramming and lambda functions in Ruby should be explained within their rightful place: living examples. You may have read tutorials on what these concepts are, but still do not understand when or why to use them. I dredged through over 50 prominent Open Source Ruby projects to bring you ten successful patterns that are used time and time again to create some of the most expressive and popular Ruby DSLs. Join me as we cover these patterns so that you can immediately begin using them in your own code to implement powerful DSLs. No vacuum-living, esoteric concepts here.

Watch the Video  
Lukas Nimmo

First and foremost, I love Ruby (and think everyone else should as well). When I'm not programming I'm either running, trying to find the meaning of life, or thinking about programming. Oh, and this is my first time at Rubyconf! So feel free to strike up a conversation!

Learning and Teaching

Bootcamp Grads Have Feelings, Too

You’re a bootcamp student. You’re so excited to become a developer! Amidst your excitement about this new industry, you hear everyone say that bootcamps are a blemish on the community, that they’re a waste of time and money. “Maybe I’ve made a huge mistake,” you think. “I don’t know how I’ll fit in here."

But you can make this community better! In this session, you’ll learn about the varied experiences of bootcamp students and grads, how exclusionary behavior can end up stunting our community as a whole, and what you can to do make a more inclusive environment for everyone of all skill levels.

Watch the Video   Slide Deck
Megan Tiu

Megan Tiu is a proud bootcamp grad. After earning a film/television degree and working as a cook, she switched careers and graduated from Tech Talent South in the summer of 2015. She now works as a Software Engineer at CallRail and loves writing and maintaining Ruby code. She aims to make technology more accessible to women and underrepresented groups in any way she can, including through her position on the Rails Girls Atlanta board.

Life Beyond Bootcamps

You graduated from bootcamp, now what?

Throughout bootcamp, your biggest worry was finding a job. Now that you’ve found one and you’ve started your career as a developer, what comes next? In this talk, we’ll explore what the career of a bootcamp graduate looks like a few years after the program. We’ll talk about the good and not-so-good parts of being a newly-minted developer. We’ll come away with actionable steps we can take to continue to grow as developers post-bootcamp and be happy and successful, even when we don’t have the mythical perfect job.

Watch the Video   Slide Deck
Melanie Gilman

Melanie discovered her love of programming when she took a course in C. Once she wrote her first for loop, there was no looking back. When she started programming in Ruby, she was delighted to learn that she'd never need to write a for loop again. Melanie is a graduate of Hungry Academy. When she's not working, you might find her knitting or solving a crossword puzzle.

War Stories

How I Corrupted Survey Results and (Maybe) Ruined a Business

It was the perfect storm of events and circumstances: a first job, naïveté of inexperience, a fear of getting fired, and a loud boss prone to yelling. One morning, I realized that the first web “project” of my first job in my new career had gone horribly off track. What came to pass in the following weeks was the most involved and tense coverup I’ve undertaken in my life. This experience can tell us all about how we communicate with each other. How we can create environments where people can ask for help and how an atmosphere of pressure and tension can ruin a business.

Watch the Video   Slide Deck
Mike Calhoun

Hi I’m Mike! I started writing software after earning a Master’s of Library Science from St. John’s University in Queens, NY. Initially, I wrote a lot of PHP, but after wearing out the ‘$’ on my keyboard, I developed a love for writing Ruby. I've been either good enough or lucky enough to now be CTO of in Philadelphia, PA. When not slinging code, I spend my time with my wife and two cats at our home in Vancouver, WA.


Halve Your Memory Usage With These 12 Weird Tricks

Heroku and AWS hate him! Want to reduce your server bills by running more processes per server but running out of RAM? Ever wonder why that poor Ruby application of yours is using hundreds of megabytes of memory anyway? Not sure if your application has a memory leak or just bloat? Don't even know the difference? We'll talk about what causes memory usage, how to debug bloated memory and memory leaks, and how to write faster Ruby programs by decreasing the amount of memory they need.

Watch the Video   Slide Deck
Nate Berkopec

Nate is a freelancer and consultant that focuses on Ruby web application performance. Author of The Complete Guide to Rails Performance and blogger at He appeared on Shark Tank, ABC's primetime entrepreneurship show, when he was nineteen years old. Nate recently moved to Taos, New Mexico after eight years in New York City.

War Stories

The Building Built on Stilts

In the summer of 1978, structural engineer William LeMessurier got a phone call that terrified him. An undergraduate student claimed that LeMessurier's acclaimed 59-story Citicorp Center in Manhattan, just completed the year prior, was dangerously unstable under certain wind conditions. The student was right, and it was almost hurricane season.

The key to building a culture of innovation in your team is learning how to respond when mistakes inevitably happen. Let's let Bill LeMessurier teach us how to respond when it all goes wrong so that our creations can thrive despite our mistakes.

Watch the Video  
Nickolas Means

In addition to being a breakfast taco connoisseur, Nickolas Means is also a connoisseur of disaster stories. He loves seeing how the absolute worst thing that could possibly happen sometimes brings out the absolute best in the people it happens to. When he's not studying the macabre, Nick is VP of Engineering at Muve Health, building a team to change how healthcare gets paid for in the US.


Test Doubles are Not To Be Mocked

Test doubles (which you may know under the alias “mock objects”) are the most misunderstood and misused testing tools we've got. Starting with the fact that nobody can agree on what to call them. Contrary to what you may have heard, test doubles do not inherently lead to fragile tests. What they do is hold up a harsh mirror to the assumptions in our code. They are the light saber of testing tools: a more elegant weapon for a more civilized age. But be careful not to cut your code in half, so to speak. Herein: a guide to using test doubles without losing your sanity.

Watch the Video   Slide Deck
Noel Rappin

Noel Rappin is the Director of Development at Table XI. Noel has authored multiple technical books, including "Rails 4 Test Prescriptions", "Trust-Driven Development", and the forthcoming "Take My Money: Accepting Payments on the Web". Follow Noel on Twitter @noelrap, and online at

Lessons Learned

Finding your edge through a culture of feedback

Have you ever wished for more feedback from colleagues to help you get better at your job? When’s the last time you offered helpful feedback to someone else? Imagine an entire company fluent in the daily practice of giving and receiving constructive feedback. Would your experience improve? What does a team lose when feedback doesn’t flow?

Feedback conversations can be difficult. But giving and receiving feedback pushes us to the edge of our growth potential, where the biggest payoffs occur. Join this session to grow your career by learning how to get real.

Watch the Video   Slide Deck
Paulette Luftig

Paulette Luftig is a software engineer at Mavenlink, where she coaches colleagues and leads the effort to develop a culture of feedback. A certified Integral Coach™ and former yoga studio owner-instructor, Paulette appreciates how human dynamics create strong teams and strong code. She’s passionate about improving organizational performance through effective communication and courageous conversation.

Comparative Ruby

To Clojure and back: writing and rewriting in Ruby

Act 1 - State of Grace

After many years of Ruby, we built our app in Clojure, why not. Clojure is a breath of fresh air. Learn a lisp today!

Act 2 - The Fall

It's harder to succeed when you're in a new and different ecosystem. How Clojure contrasts with Ruby.

Act 3 - The Wilderness

Rewriting your app is a bad idea but we did it anyways. How we came to that decision.

Act 4 - Reconciliation

How I write Ruby has changed: a discussion.

Watch the Video  
Phill MV

Perfect and upright, eschews evil.

Phill co-founded Rubysec and Appcanary. He runs xvzf, a regularly occurring story telling night aimed at Toronto computer workers.

Lessons Learned

Why Is Open Source So Closed?

Why is Open Source So Closed? With the rapidly increasing amount of students coming out of bootcamp schools we have now created a gap within our communities of the "haves", and the "Looking for job"s. Being the organizer of New York City's 4,500+ member Ruby community with NYC.rb I have discovered ways we can ensure the generations of rubyists after us have a path paved before them. "Cyclical Mentorship" is the answer. Best part is we will know individually how we can immediately begin the feedback loop of not computers, but people!

Watch the Video  
Ra'Shaun Stovall

NYC.rb - Organizer of NYC.rb community of nearly 5,000 rubyists in New York City

Adjunct professor - New York University teaching Ruby & Javascript to students, post graduates, and individuals with no degree who just need a change of career within their life.

Chief Technology Officer - Mindful Investing Community Organizer


Slo Mo

No one wants to be stuck in the slow lane, especially Rubyists. In this talk we'll look at the slow process of writing fast code. We'll look at several real world performance optimizations that may surprise you. We'll then rewind to see how these slow spots were found and fixed. Come to this talk and we will "C" how fast your Ruby can "Go".

Watch the Video  
Richard Schneeman

Richard "Ruby Hero" Schneems writes Ruby at Heroku, maintains, and co-organizes Keep Ruby Weird. He is in the top 50 Rails contributors and is an accidental maintainer of Sprockets. When he isn't obsessively compulsively woodworking he writes such gems as Wicked, and derailed_benchmarks. Schneems wants you to have a nice day.

Tools and Toys

Improving Coverage Analysis

If you follow modern practices, test coverage analysis is a lie, plain and simple. What it reports is a false positive and leaves you with a false sense of security, vulnerable to regression, and unaware that this is even the case. Come figure out how this happens, why it isn’t your fault, and how coverage analysis can be improved.

Watch the Video   Slide Deck
Ryan Davis

Ryan Davis has been using Ruby since 2000 and is a founding member of the Seattle Ruby Brigade, the first and foremost ruby brigade in the world. He's an independent consultant and his background includes QA, automation, language and tool development, object databases, and smalltalk. In ruby/rails, he has focused on developer productivity, code/process/people optimization, and test automation tools such as heckle, hoe, ruby_parser, ruby2c, ruby2ruby, RubyInline, ZenTest, minitest, and more.

Life Beyond Bootcamps

Learning Fluency

All languages work in formulaic ways. Cracking these formulas takes discipline, time, creativity, trial and error. But is there an overarching formula to crack these formulas? Is there a designated set of steps we can take to guarantee fluency?

In this talk, you will learn about the methods people use to learn both foreign languages and programming languages. As developers, we often just jump in and start building. Why is this? Does full immersion work best always and for everyone? What is fluency, and is it ever something we can achieve in Ruby? Let’s explore.

Watch the Video   Slide Deck
Sara Simon

With an art school degree and an English major under her belt, Sara started a communications position at a software consultancy in Minneapolis. There, her team set her up with a Ruby environment, sent her to a RailsBridge, and encouraged her to ask questions. She's now a proud graduate of the Turing School and the web developer at Vermont Public Radio, where her job is to build tools that help to find and tell stories.

Ruby, Red Pandas, and You

Red pandas are adorable, playful, curious, and super cute. Unfortunately, they are in serious trouble. Over 50% of red panda newborns born in captivity do not survive long enough to leave their den and no one knows why. Come find out why red pandas are so amazing, how I met a Smithsonian Zoo researcher studying this and how we’re solving this important problem using Ruby and machine learning. You will also leave this talk knowing how you can get involved (no matter your skill level) with great projects like this.

Watch the Video   Slide Deck
Sean Marcia

Sean is a tireless do-gooder. He created and organizes Ruby for Good and spends his day job working to make government more sane. He loves the programming community and can't believe he is paid to have this much fun. When not programming he loves being outdoors (especially national parks), drinking coffee from Portland, eating dried seaweed and playing with dogs.

Ruby and Hardware

(m)Ruby on small devices

mruby is the lightweight implementation of the Ruby language for linking and embedding within your applications. This talk will show how it can be used on small resource constrained devices like Raspberry Pi Zero and exploring some techniques of memory and run-time optimizations.

Watch the Video   Slide Deck
Shashank Daté

Shashank Daté has been programming in Ruby professionally since 2002. He has contributed to the very early versions of Ruby One Click installer on Windows and win32utils - a set of Ruby libraries for Windows. He is technical editor of The Ruby Way (2nd. ed) by Hal Fulton. He has been instrumental in making Ruby popular in his hometowns (KC, USA & Pune, India). He co-founded Kansas City Ruby User Group. In 2011/12, he was on the organizing committee of Ruby Midwest regional conferences.

Ruby Deep Dive

Optimizing ruby core

I made ruby interpreter 10 times faster. Let me show you how.

Watch the Video   Slide Deck
Shyouhei Urabe

Shyouhei is a long time ruby-core contributor. He was the branch mentor of 1.8.x in 1.8 era. He also introduced the ruby/ruby github repo back then. Today he is a full-timer to develop ruby interpreter at a fintech startup called Money Forward, inc. based in Japan.

The Little Server That Could

Have you ever wondered what dark magic happens when you start up your Ruby server? Let’s explore the mysteries of the web universe by writing a tiny web server in Ruby! Writing a web server lets you dig deeper into the Ruby Standard Library and the Rack interface. You’ll get friendlier with I/O, signal trapping, file handles, and threading. You’ll also explore dangers first hand that can be lurking inside your production code- like blocking web requests and shared state with concurrency.

Watch the Video   Slide Deck
Stella Cotton

Stella Cotton is a Tools engineer at Heroku and co-founder of SF.rb and AndConf. She loves the World Wide Web Consortium, good abstractions, and boring technology.

Tools and Toys

Evaluate Ruby Without Ruby

Have you ever wanted to implement a tool that can be configured by Ruby code? You may think such tools require MRI, JRuby or Rubinius to evaluate the configuration. But that's not true! Let's see how we can build a tool that evaluates Ruby without dependency on Ruby interpreter using mruby.

Watch the Video   Slide Deck
Takashi Kokubun

A software engineer working to improve developer's productivity at Cookpad Inc. He built itamae-mruby (, which is created to bootstrap development environment at Cookpad.


You Have the Empathy of a Goat: Documenting for the User

Are you the sort of developer who makes the user want to headbutt the computer or hop happily sideways? Documentation is often one of the least favorite activities of a developer, and it’s probably always going to suck for some people. But it doesn’t have to give you the bleat-down. We’ll cover: how to discover what the user wants, how to convey what the user needs, what we’re doing wrong, and then we’ll outline the winning formula. If things go really well with your empathetic documentation, you can reduce costs, justify a salary increase, and even become famous. No, really. I’m not KIDding.

Watch the Video   Slide Deck
Tara Scherner de la Fuente

Tara is a Ruby/Rails developer who codes at Roostify. Previously at LivingSocial, she has had careers in academia, human resources, and private investigation. She has an expansive t-shirt collection and masquerades as a goat for @GoatUserStories. She purr programs with her cat Lulu via a remote/distributed/caffeinated living room office in Portland, Oregon.

JRuby Everywhere! Server, Client, and Embedded

Ruby has seen its heaviest on servers; Client-side Ruby has been limited to experiments and toys, and Ruby C extensions complicate embedded use. But there's a better way: JRuby. Using frameworks like JRubyFX and Shoes 4, among many GUI and graphics libraries, JRuby makes client-side development fast and powerful. With an embedded JVM, JRuby runs your app on mid-level embedded devices without compiling a line of code. And JRuby is still the best way to power up your Rails 5 app. Come learn how to use JRuby everwhere!

Watch the Video  
Thomas E Enebo

Charles Oliver Nutter

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

Yukihiro Matsumoto (Matz)


Matz Q&A

Part of our annual tradition, Matz answers questions from Evan as well as the audience

Watch the Video  
Yukihiro Matsumoto (Matz)