Inside Ruby's VM: The TMI Edition.

This is about Ruby's Virtual Machine. Specifically MRI's Virtual Machine. We will take a dive in to how your Ruby code is compiled in to byte code and how that byte code is executed. Once we get a grip on how the VM works, we'll see how to make it perform tricks the likes of which you've never seen! Ok, maybe you have seen them, just not with MRI's virtual machine.

Aaron Patterson

Aaron Patterson is on the Ruby Core team, and the Rails Core team. He likes puns, cats, programming, and trying to find the intersection of all these interests. Aaron is currently working at Red Hat on a team dedicated to turning clouds in to smiles.


Pluck It

How many times have you written the same bits of code, over and over, and thought, “You know, if only this was big enough to be a gem, I would pluck it out." Often, we think of a RubyGem as a larger library of code that we “bolt on” to an app. And, these smaller code blobs become a hassle to distribute to the multiple apps that use them.

A small micro-library, done the right way, at the right time, can greatly improve an app.

But, when can you benefit from extracting a micro-library? And, how do you build and publish that code into a RubyGem? I'll go through the process, from A to Z.

Adam Cuppy

Full-time husband, rubyist and Master of Smile Generation @CodingZeal a Ruby, EmberJS and iOS consultancy. Part-time stage actor and musical theater enthusiast. Find me at


Moneyball at the keyboard: Lessons on how to Scout Talented Developers

The central premise of Moneyball is that the collected wisdom of baseball insiders is subjective and flawed. Like baseball, the tech industry has a poor history of evaluating talent by favoring biased perspectives over objective analysis. As a baseball scout turned web developer and team lead, I will explore how the lessons I learned in my former career can enable us all to make better decisions on how to grow our teams and surface undervalued skills.

Adam Jonas

Adam Jonas is the Managing Director of engineering at The Flatiron School in NYC. In a former life he worked in scouting in player development in professional baseball.


Tagging your world with RFID

Come learn all the wonderful uses of UHF RFID tags and how Ruby makes it easy to read, write and deploy real time asset tracking systems. RFID tags can be read from 30 or more feet away and easily integrated with a variety of existing systems with a low barrier to entry. By the end of this session, you'll learn how to track your pets, clothes, keys, and even make a tool that assists with your grocery shopping.

Adam Walker

A Rubyist working in Laboratory Information Systems. I wrestle with vials, -80° freezers and keeping aliquots accounted for with RFID.


Keynote: Stupid Ideas For Many Computers

There are plenty of useful things you can do with Ruby and a bunch of servers. This talk isn't about useful things. This talk will show off asinine, amusing, and useless things you can do with Ruby and access to cloud computing.

Sentiment analysis based on emoji? Why not? Hacky performance testing frameworks? Definitely! Multiplayer infinite battleship? Maybe? The world's most inefficient logic puzzle solver? Awesome!

If you are interested in having some fun and laughing at reasonable code for unreasonable problems this talk is for you.

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. In her free time she enjoys skiing, cooking, knitting, and long coding sessions on the beach.


Ruby 2 Methodology

This talk focuses on "Method" in Ruby.

Although Method is the key feature of an OOP language like Ruby, Ruby's Method is still drastically evolving. This session is a quick tour on new features and changes around Method in recent versions of the Ruby language. Not just introducing the APIs, we'll also show you lots of interesting stories behind these features, and real-world code examples. Through this session, you'll probably learn some modern methods of Ruby programming that you did never know.

Akira Matsuda

Rails committer, Ruby committer, Haml committer, creator of widely used Rails plugins such as Kaminari, activedecorator, actionargs, html5validators, i18ngenerators, erd, database_rewinder, etc. Founder of "Asakusa.rb", the most active Ruby community in Japan. RubyKaigi organizer.


Nobody Expects an Inquisition! - A Programmer’s Guide to Asking Questions

What was the last question you asked someone? Did you actually care what the answer was? Did it improve the conversation? Did it start an interesting discussion? Did it start an argument?

Like many programmers, I’ve relied on deductive reasoning to avoid asking questions - fearing that someone would find out I didn't belong. At the start of this year, I made the decision to change all that. This talk will evaluate tools which improved my professional and personal life.

Let’s learn how to rely less on being intuitive and more on being inquisitive.

Amanda Quaranto

Amanda loves being a part of the tech community! She currently works as the Support Team Lead at TravisCI. She is always trying to improve the way she interacts with the people around her. She's also an avid crafter (ask her about her latest project)!


Working Compassionately with Legacy Code

Your code is your partner. It struggles against you, but also alongside you. Your code comes to you as it is, not as you wish it were. Like a real-life partner, it has a history that you’ll never fully know; like a real-life child, it bears your imprint, but it is wild, unruly, and fiercely self-sovereign. You’ll never stop working with code that’s hard to figure out or difficult to change. But this code, this stubborn creature, is entrusted to you. Let go of your anger at the developer who wrote it. Let go of the terror of being blamed for its unforeseeable regressions. Let go--and find joy.

Amar Shah

Amar Shah is a developer at ShareProgress. He enjoys knitting, learning Haskell, and interval training with upcycled gear. Amar has degrees in anthropology and math, coming to software as a refugee from ethnomusicology, the academic study of musical culture. He lives in Louisville, Kentucky with his wife and three-year-old daughter.


How does Bundler work, anyway?

We all use Bundler at some point, and most of us use it every day. But what does it do, exactly? Why do we have to use bundle exec? What's the point of checking in the Gemfile.lock? Why can't we just gem install the gems we need? Join me for a walk through the reasons that Bundler exists, and a guide to what actually happens when you use it. Finally, we'll cover some Bundler "pro tips" that can improve your workflow when developing on multiple applications at once.

Andre Arko

André thinks Ruby is pretty neat. He is Bundler team lead, and provides expert development, architecture, and teaching through Cloud City Development in San Francisco.


Just a Ruby Minute

We're bringing Just a Minute -- the popular British gameshow format -- to RubyConf! The rules of the game are simple, the results are hilarious, and who knows, you might even learn something new! Come join us to see some of your favorite Rubyists be utterly silly... for a minute at a time, at least.

Panelists: Aaron Patterson, Andy Croll, Kinsey Ann Durham, Sam Phippen

Andrew Faraday with panelists: Aaron Patterson, Andy Croll, Kinsey Ann Durham, and Sam Phippen

A Ruby developer, presenter, musicain and kidney donor working in Surrey, England. 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.


Your own 'Images as a Service'

The average web page size is greater than 2MB, and increasing. And great swathes of that are images. Serving the right size of image can vastly improve the experience for your users. But while we're arguing about whether Rails is slow or not we're chucking vast images at peoples phones over EDGE connections.

Serving images should be a 'solved' problem, just like it is for 'hosting' or authentication. However lots of solutions make poor default suggestions. What can we do for our users with 100 lines of code, Sinatra, a single gem and a CDN?

Andy Croll

Designer/Developer, iOS & Ruby on Rails Chap. Conference Organizer. Book writer.

Currently at


s/regex/DSLs/: What Regex Teaches Us About DSL Design

Many Ruby domain-specific languages go for beauty over usability - and it shows, when you try to use them. But one of programming's oldest, most common DSLs - regular expressions - is both as ugly and as persistent as a cockroach. What makes regexes tick? By breaking down their design, we'll learn concrete principles that go deeper than "Englishy:" principles like "composability" and "deep domain integration." We'll learn how to get precise about the API design and boundaries of our DSLs. We'll write a micro-DSL that is usable without monkeypatching.`

Betsy Haibel

Betsy Haibel is a senior developer at Optoro, one-half of the Irregular Gentlewomen, and a co-organizer of Learn Ruby in DC.


Changing the Unchangeable: The Hows and Whys of Immutable Data Structures

Immutable data structures give us peace of mind, but using them is challenging. How do you build an immutable list? Why would you use one? Join us and learn what makes a data structure "persistent", the holy grail combination of immutability and performance. We'll see not just how to use them, but also why they're a good idea and how they work. Most importantly, we'll see how these data structures are useful in real-life programming scenarios. Master this cornerstone of functional programming and learn the answer to the ultimate riddle: how do you change a list while leaving it unchanged?

Brad Urani

Brad Urani loves talking, tweeting and blogging about software almost as much as he loves creating it. He's a veteran of 5 startups and a frequent conference and meetup speaker. He lives in Santa Barbara, California where he's trying to bridge the gap between functional and object-oriented Ruby as principal web architect at Procore.


Hacking Spacetime for a Successful Career

We talk a lot about building well-crafted software. But what about a well-crafted career in software? Who is making sure you’re on track for the life you want five, ten, thirty years from now?

We’ll build a time machine and follow a typical development career through various tracks, and see how a few basic principles can radically alter your career’s trajectory over time.

If you’ve ever felt the existential dread of “climbing the walls” at your job, you’re not alone. We’ll explore why and share some concrete steps you can take now to create a long, happy, rewarding career.

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 Rails and Ember.js consultancy. Brandon's lifelong mission to to hug every developer.


The Joy of Miniature Painting

As developers, we often stare at a computer screen all day only to come home and stare at more glowing boxes all night. Having a productive, nontechnical hobby can really help to keep us sharp for our day jobs.

You'll watch me live-paint a small model for a game called Warmachine while I describe some of the techniques I use. You'll hear about how painting has helped me to clear my mind after work, keeping me away from burnout I might encounter if I wasn't exercising a different brain lobe.

Afterward, I'd love to chat about painting and playing games.

Caleb Thompson

Caleb has braved the winters of Alaska and the deserts of Arizona. He has fired a Mosin-Nagant without blinking, fought the Red Menace, built Battleship Couch, and killed a bear and wore its pelt.

He enjoys fine wines, craft beers, and punching comets.


Keynote: Consequences of an Insightful Algorithm

Coders have ethical responsibilities. We can extract remarkably precise intuitions about people. Do we have a right to know what they didn't consent to share, even when they shared data leading us there? Balancing human needs and business specs can be tough. How do we mitigate against unintended outcomes? In this talk, we look at examples of uncritical programming, & painful results of using insightful data in ways that were benignly intended. You'll learn practices for examining how code might harm individuals. We’ll look at how to flip the paradigm, for consequences that are better for all.

Carina C. Zona

Carina is a developer, advocate, dev evangelist, and educator who is passionate about getting people to examine our many preconceptions that underly everyday programming. She is also the founder of CallbackWomen, and a certified sex educator.


JRuby 9000 Is Out; Now What?

JRuby 9000 is here! After years of work, JRuby now supports Ruby 2.2 and ships with a redesigned optimizing runtime. The first update release improved performance and compatibility, and we've only just begun. In this talk we'll show you where we stand today and cover upcoming work that will keep JRuby moving forward: profiling, inlining, unboxing...oh my!

Charles Oliver Nutter, Thomas Enebo

Charles works to better humanity with OSS at Red Hat.

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. Thomas has spoken at numerous Java and Ruby conferences, co-authored "Using JRuby", won the Ruby Hero award, and was awarded the "Rock Star" award at JavaOne. When Thomas is not working he enjoys biking, anime, and drinking a decent IPA.


The Art of Ruby Technical Interviews

So, you want to be a Ruby developer? You've attended a bootcamp, read the books, and completed online courses. You're ready to start building great things. But the technical interview process can be a challenge for new Ruby developers. I'll teach you how to prepare, practice and give you techniques to answer tough questions.

Chris Mar

I've been conducting technical interviews for over 15 years. Let me help you. I'm a Senior Engineer at CustomInk and a host for the Ruby5 podcast. I also help organize the RubyLoCo meetup group.


Hardware Hacking: You can be a Maker

There is something fundamentally satisfying about building things that bridge the gap between your code and the physical world. This father/daughter duo will show you how they've bridge that gap.

I frequently find Rubyists that are interested in tinkering with hardware but are often intimidated by the idea. Turns out, it is so easy even a grown-up can do it. In fact it is easier than it has ever been. And the best part is, you can use little Ruby.

Christopher Sexton, Leah Sexton

Christopher is the Director of Engineering at Radius Networks, where he builds mobile proximity tools and services. He cofounded the Arlington Ruby group, and helps organize both Ruby Retrocession and Ruby for Good events.

Leah is a 4th Grader who has a knack for fixing things and has started tinkering with coding through tools like While she likes to help her dad in his workshop, her favorite activity is Gymnastics. She wants to be a teacher when she grows up.


String Theory and Time Travel: the humble text editor

Did you know that the time machine in your text editor is probably broken? Better yet, have you considered that your text editor has a time machine?

The majority of our day is spent in a text editor, but most never think about how they really work. There is a lot more to an editor than saving a few keystrokes or the rivalry between Vim and Emacs; they can teach us about data structures, IO, design, and the dangers of time travel.

Let's take a closer look at some of the most enduring applications, and see what we can learn by trying to build a better editor using Ruby.

Colin Fulton

Originally coming from the world of design, fine art and theater technology, Colin now specializes in interface development and web accessibility. Currently they work as an front-end architect and accessibility specialist for the University of Michigan Library.


Ruby Preserves

How simple can we make an Object-Relational Mapper (ORM) that's still useful? What if we just used SQL, instead of trying to hide it from developers?

I decided to find out.

In this presentation, we'll explore a simple ORM that uses the Repository and Data Mapper patterns. We'll also see how using these patterns enables us to write simpler model code.

Craig Buchek

Craig is an independent consultant specializing in Ruby, Rails, Rails rescue projects, DevOps, and Agile techniques. Craig started using Rails in late 2005, and found a home in the framework, the language, and the community.

When he's not coding, reading about coding, or thinking about coding, Craig enjoys canoeing, attending concerts, and traveling.


A Muggle's Guide to Tail Call Optimization in Ruby

Submitted for your approval: a circle of torment unchronicled by the poets of old, a terror at the heart of many a horror story: SystemStackError: stack level too deep

Tremble no more! Conquer the well of eternity!

Behold the secrets of tail recursion and tail call optimization in Ruby! Witness the metamorphosis of a simple function as we explore the hidden power of tail call optimization buried deep within the Ruby VM! Follow the transformation to the revelation of tail call optimization's most ghastly secret: in many ways it's really just a special type of loop construct! The horror!

Danny Guinther

Danny is a senior software engineer at Datto in Boston where he leads the platform team against the ever looming threat of technical debt and decay. With more than 5 years of experience with Ruby, Rails, and related technologies, Danny possesses an enthusiasm for the web and open source software. A self-proclaimed Ruby champion and developer advocate, when Danny's not coding, he can be found scheming of ways he could be coding or trying to convince himself that "hobbies" are a good idea.


Learn to Make Music. With Ruby.

If you can write code, you can make music. And in this talk, and you'll see exactly how.

We'll take a look at Sonic Pi, a powerful, multi-platform app that uses a Ruby DSL to create just about any kind of music you can think of.

And if you've never made a note of music in your life, fear not: you'll also get a crash course in music composition and learn how the elements of rhythm, melody, and harmony work together to make a cohesive whole.

Bring your laptop and headphones: this will be very hands-on, and you'll be making your first track before we even get to questions!

Darin Wilson

Darin Wilson has been coding professionally since the days when you got help for coding problems by posting on a CompuServe forum. Before that we was a professional musician, and a university instructor in music theory and music history. He is currently a web and mobile developer for InfiniteRed, specializing in Rails and RubyMotion.


The Math Behind Mandelbrot

One day in my high school classroom I heard a student ask "What is 'i' good for anyway? I mean, is it a concept that's useful in the real world?" I jumped at the chance to explain the Mandelbrot set. Come with me on a journey to understand how infinite complexity can arise from a few simple rules. Infinity will fit inside your head, and you'll feel like you just learned one of the Great Secrets of the Universe. If you can multiply, you'll understand all the math in this talk.

David Bock

David is the Director of Engineering Education and Development at LivingSocial, where his job is to help make people smarter at their jobs. After a decade in Pascal and C followed by a decade in Java, he's spent a decade in Ruby and it's still his daily go-to tool for getting things done. He also helps organize the RubyNation conference, and speaks regularly at Ruby user groups in the mid-Atlantic region.


Storytelling via the Psychology of Professional Wrestling

Great storytelling feels almost impossible at times, yet week in and week out, for over 30 years, the jacked-up men & women of World Wrestling Entertainment have been doing it, five minutes at a time.

No back-story, little dialog, and a live crowd that knows it's all scripted. Yet, they get the audience invested in the outcomes almost every time.

Sound impossible? Pro-wrestlers know the essence of great storytelling—called “ring psychology”—and have used it for decades.

David Copeland

I'm a programmer and author. I wrote "The Senior Software Engineer" and "Build Awesome Command-Line Applications in Ruby", and have over 18 years of professional development experience. I've managed high-performance, high-traffic systems at LivingSocial, helped build the engineering team at Opower, and worked consulting gigs both large and small. Currently, I'm Director of Engineering at fashion start-up Stitch Fix, building a platform that will change the retail shopping experience.


How to Performance

Understanding performance output can feel like reading tea leaves. It makes sense to a few people, but many of us are left in the dark; overwhelmed and frustrated by the data. Additionally there are a ton of performance tools to choose from; StackProf, RubyProf, AllocationTracer. Where do you even start?

In this talk we will not only look at how to read performance output, but when and how to use the right profilers for the job. We'll discuss a variety of methods and techniques for benchmarking and profiling so you can get the most out of each performance tool.

Eileen M. Uchitelle

Eileen M. Uchitelle spends her days working on performance and security at Basecamp; or as you probably know it better, the place Ruby on Rails was born. She accidentally started contributing to open source after giving a talk on some problems with Active Record. Aaron Patterson was there and told her “fix it yourself” (not really). When she’s not making your life easier by improving Active Record, Eileen enjoys craft beer and hiking in the Hudson Valley with her husband and their dog.


The Hitchhiker's Guide to Ruby GC

When Ruby programs slow down, the usual culprits—database queries, superlinear time complexity—aren't always the real problem. Ruby's object space and garbage collection are a surprisingly rich and oft-misunderstood area of the language, and one where performance issues can easily hide. This talk is a brief but deep dive into the history and details of garbage collection in Ruby, including its evolution, parameter tuning, and a case study using the Unicorn web server.

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, JavaScript, and Swift.


Bikeshed! Live!

Everyone loves live coding! What's not to love about watching someone struggle through some trivial code while the audience corrects their every syntax error?

This session takes that to the next level by adding literal play-by-play commentary to a live coding session. Come and join us for what is sure to be a hilarious (and hopefully informational) trainwreck.

Evan Phoenix, Adam Keys

Evan Phoenix was a skinny kid from Montana with a big heart. After 4 startups, he's now a grizzly veteran.

Adam Keys was a redshirt freshman in the absolutely unstoried Comp. Sci program of Southern Methodist University. He has gone on to campaigns at startups you may or may not have heard of and is still trying to come back after those Rails MVC videos.


Mo Money Mo Problems (with Ruby)

Are you thinking or starting to build an app that deals with money? Come to this talk to learn the best practices of handling money transactions. In my 2+ years working in a startup based on payments, I have been able to compile do's and don'ts of handling money.

Federico Soria

Application Developer, internet entrepreneur, technology aficionado. Working with different technologies, starting from a hardware background and eventually moved to web development such as Ruby on Rails. Currently CTO at Pay By Group.



Our stated beliefs are often built on lower-level beliefs that we haven't examined consciously. We'll dissect several claims about programming and find these unknown beliefs underlying each: tests and type systems, functional programming, NULL, and others. Internet arguments will suddenly make more sense and maybe a few will be prevented.

Gary Bernhardt

Gary Bernhardt is a creator and destroyer of software compelled to understand both sides of heated software debates: Vim and Emacs; Python and Ruby; Git and Mercurial. He runs Destroy All Software, which publishes advanced screencasts for serious developers covering Unix, OO design, TDD, and dynamic languages.


The Seven Righteous Fights

There are seven fights that I have over and over again, whenever I start at a company. I'm here to convince you that it's valuable for everyone to have these things in mind from the inception of a project.

Having these fights early prevents you from doing the software equivalent of poking chocolate chips into an already-baked cookie

Heidi Waterhouse

Heidi is a technical communicator with interests in security, universal design, and using obscure literary characters as placeholder names. She currently works as a mercenary technical writer, designing and building the first generation of documentation for new companies.


Time flies like an arrow; Fruit flies like a banana: Parsers for Great Good

When you type print "Hello, world!", how does your computer know what to do? Humans are able to naturally parse spoken language by analyzing the role and meaning of each word in context of its sentence, but we usually take for granted the way computers make sense of the code we write.

By exploring the way our brains construct grammars to parse sentences, we can better understand how parsers are used for computering -- whether it be in the way Ruby and other languages are implemented or in webserver routing -- and recognize when they may be the right tool to use in our own code.

Hsing-Hui Hsu

Hsing-Hui Hsu is a graduate of the first cohort of Ada Developers Academy. She enjoys learning languages (both computer and human), playing ultimate frisbee, and rabbit-hole spelunking. She currently works as a full-stack developer at CareZone in Seattle, WA.


Stately State Machines with Ragel

State machines are an important tool in computer programming, and Ragel is a wonderful tool for creating them. Come learn how to use Ragel to compose simple state machines into much more complicated versions useful for parsing and processing all manner of input. We'll progress simple regex-like machines to full-blown context-sensitive scanners capable of ripping-fast processing of protocols and language grammars.

Ian Duggan

Software engineer at Twitch and recovering technology entrepreneur. I have been using Ruby since the 1.6 days and still enjoy the language immensely. I play guitar and ukelele, and am learning the banjo, mandolin, fiddle, and how to fly a Cessna 120. I'm also an avid ice hockey player, playing several times a week as time allows.


Ruby's Environment Variable API

You use tools like Bundler, RVM, rbenv, or chruby every day. But what are these tools actually doing behind the scenes?

Let's take a closer look at how tools like these alter Ruby's behavior by tweaking the environment it runs in. We'll take the mystery out of load paths and gems sets. You'll come away with a better understanding of how tools like RVM work, and a better idea of where to look when they don't do what you expected.

Jack Danger Canty

I'm Jack Danger; let's be friends! I've written Ruby apps (& 36 gems) since way back when. I was part of the team that upgraded Square's gigantic Rails app from Rails 2.x to 4.x. I don't really understand how computers go but whenever I learn another piece of how they work I love to teach it.


Why is nobody using Refinements?

Refinements have been a feature in Ruby for several years now, added as a more structured alternative to the "scourge" of monkey patching, but it seems like almost nobody is using them. My question is this: why not? Are they a bad idea? Are they broken? Or do we just not understand them?

Let's figure out once and for all what refinements are good for, and what their limitations might be, so that future generations can either use them for glory, or rightfully ignore them forevermore.

James Adam

James has been working with Ruby since he fell in love with its elegance and charm in 2002. He's a co-founder of the London Ruby User Group and co-organiser of Ruby Manor. He invented Rails Engines, which, at the time, was a lot like saying "I invented the piano key neck tie!", but eventually even DHH came around, so it's not all bad.


GDB: A Gentle Intro

We love Ruby’s elegance, simplicity, and flexibility. But our favorite language perches atop a world of native code. When that other world intrudes on your peaceful Ruby, GDB, the venerable GNU debugger, is the tool to turn to.

We’ll examine setting up Ruby to work with GDB. We’ll learn the fundamental commands, and soon you’ll be debugging with ease. We’ll even peer deep into Ruby object internals and face down crashes, deadlocks, and bugs.

Whether you’re writing a native gem, hacking the Ruby VM, or just want a glimpse of the layers below, this talk is for you!

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


Messenger: The (Complete) Story of Method Lookup

You call a method on an object, and it invokes the instance method defined on the class. Simple. Except when the method isn't on the class itself, because it's inherited from a superclass. Or a singleton class, mixin, or refinement. Actually, this is kind of complicated!

In this talk, we'll take an inside look at Ruby method lookup. We'll start with the basics, like inherited methods, and work our way up to the cutting-edge stuff, like refinements and prepending mixins. You'll leave with a clear understanding of how it all works, and maybe with some better ideas for structuring your code!

Jay McGavren

Author of Head First Ruby (2015, O'Reilly Media). Rubyist since 2007. Working in online developer training since 2011.


Keynote: Leagues of Sea and Sky

In this keynote, Jeff tells three stories of inventions for nautical and aeronautical exploration to reveal how partnership has shaped the greatest journeys in history and how it should shape your own. From the sextant to holographic mixed reality, Jeff shares meticulously researched history along with some of the projects he's led in space exploration via a unique medium that he created just for this presentation.

Jeff Norris

Jeff builds tools to control space robots for NASA. He was responsible for much of the software that operates the Spirit, Opportunity, and Curiosity Mars Rover missions. He’s especially passionate about using virtual and mixed reality to transform human exploration. And eggs benedict.


Everything You Know About the GIL is Wrong

When a Rubyist hears "concurrency" they usually Google Elixir, Go, or even Node.js. Turns out, Ruby can be great for concurrency! The Global Interpreter Lock (GIL) does NOT prevent Ruby programs from performing concurrently. In this presentation we'll discuss the true meaning of concurrency, explore the inner-workings of the GIL, and gain a deeper understanding of how the GIL effects concurrent programs. Along the way we'll write a bunch of concurrent Ruby code, run it on multiple interpreters, and compare the results.

Jerry D'Antonio

Jerry has been a professional programmer for two decades. When not attending heavy metal concerts or studying programming languages he work on the concurrent-ruby gem, which he created. Jerry has worked professionally with numerous languages and has built software for a diverse set of industries. His current languages of choice are Ruby, Go, and Erlang. Jerry is a software developer for Test Double and proudly lives in Akron, Ohio.


Manage Your Energy, Not Your Time

High-tech culture is obsessed with managing time. In fact, if there’s one thing that we spend as much time on as actual work, it’s getting the most out of that work time. But here, like elsewhere, choosing the wrong optimization does more harm than good. Wringing every minute out of your day is more likely to burn you out than to turn you into a code-producing machine. Instead, we need to get better at managing our energy. Put down the kitchen timer, because in this talk you’ll learn about better research-driven approaches to get more out of work and life.

Joe Mastey

Joe Mastey is a software engineer of over twelve years, mostly in ruby for the web. He's been spending his time lately teaching organizations to build fantastic internal education programs. He also digs rock climbing and kayaking, despite being based in Chicago.


Softly, softly typing

The ruby community is large and varied but, for the most part, we haven't rushed to engage with type theory. Static typing - whatever that is - is for the slow moving world of Java developers. Type theory is for Haskell weirdos.

All that could be about to change.

In his keynote at Rubyconf 2014 Matz spoke about some ideas for Ruby 3, including the idea of adding static typing - or more specifically soft typing - to the language. So what is soft typing? How do we understand more about it? And what does it mean for us mere developers?

John Cinnamond

Philosophical Rubyist and Beard Grower


Communicating Intent Through Git

Git is a distributed version control system for our source code. It provides the technical mechanism to answer the who, what, when, and where of every decision made. However, Git never requires us to answer why.

Software is the result of thousands of decisions. Add this feature; clarify this method; change this behavior. Every team should be able to know why a decision was made.

Creating software is a journey—let Git be your travel journal.

Josh Freeman

Josh Freeman is a software developer at Grok Interactive in San Antonio, Texas. Better software through empathy and tacos.


How to Stop Hating your Test Suite

Your app is a unique snowflake. Your tests are too… but they shouldn't be!

Years helping teams write better tests has taught me one thing: consistency is crucial. Inconsistent tests slow teams down, wasting time to understand how each test works. Deciding on conventions—even arbitrary ones—can prevent tremendous pain later.

This talk will introduce a ready-to-fork Test Style Guide of carefully-considered rules and templates for Rubyists. You can customize it to fit your preferred tools, too. Soon, you'll be on your way to having more consistent tests that are much more fun to maintain!

Justin Searls

Justin Searls has two professional passions: writing great software and sharing what he’s learned to help others write even greater software. He helped start a software agency called Test Double, whose crack team of double agents solve complex problems with clean and simple solutions.


Code, Culture and the Pursuit of Happiness

Life’s good. People who never thought they could code are becoming developers. Outreach programs are getting people in, but we’re facing an even bigger problem. Getting them to stay there. 57% of women alone leave the tech industry. The root cause of people leaving, and not just people from underrepresented backgrounds, points to company culture. Let’s build company cultures the way we build products, applying scrum principles we use everyday. This talk dives into the reasons why people are leaving the industry in droves, and what unexpected, actionable steps we can take to solve this problem.

Kinsey Ann Durham

Kinsey is a software engineer at GoSpotCheck in Denver, Colorado. She is the co-founder of Kubmo, board member for BridgeFoundry and active organizer for Railsbridge. She is passionate about diversity efforts in the tech industry and spending time doing agility with her dog.


The Not So Rational Programmer

Cognitive biases are heuristics that the brain uses to process information and quickly come up with decisions. They are generally pretty useful, but they aren’t perfect processes and can often lead to suboptimal decisions or behaviors.

This talk will help you to recognize their patterns in your thinking and behavior and (since we unfortunately can’t quite de-bug our own brains yet) to monkey-patch them - in order to become a more efficient, more cooperative and ultimately more successful developer.

Laura Eck

Laura is a web developer living in Tokyo and working for Berlin. One of her favorite pastimes is learning something new, be it a technology, a language or anything else. When she’s not busy coding, you can usually find her reading things, making things, climbing on or jumping over things, or trying out another martial art.


Botany with Bytes

Plants are tiny computers. As they grow, the sprouts are computing from first principles how to be a plant. We’ll see how they do it!

This talk uses Ruby and the ‘graphics’ gem to build models of all kinds of plants, from algae blooms to juniper branches. We’ll touch on rewriting systems, formal grammars, and Alan Turing’s contributions to botany. We’ll look at the shapes of euphorbia, artichoke, and oregon grape, and how these come from plants’ love of sunlight and greedy desire for growth. By the end, we'll have a series of great visual metaphors for fundamental computer science concepts!

Lito Nicolai

Lito is a programmer and illustrator from Seattle, Washington. He started programming to better understand jellyfish, but currently works as a server-side developer. He likes getting slowly better at difficult things. You can probably find him hanging around Seattle.rb. Come say hi!


Design Thinking for Rubyists

Everyone has the power to be creative, and design thinking is about shifting your mindset to fully embrace your ability to generate new ideas. Let's explore how to flex those creative muscles -- because while technology needs change, the ability to generate great ideas that resonate with users will never lose value.

Louisa Barrett

A developer and designer, Louisa has a soft spot for user experience and loves soaking up everything she can about back and front end technologies. She writes code and pushes pixels at Haught Codeworks in Colorado. She shares her home with a toothless, tail-less cat, two dogs, and her partner, Anthony.


Seven Habits of Highly Effective Gems

These days, publishing a Ruby Gem is incredibly easy—but publishing a good one isn’t. By following a few best practices when you release your code to the open source community, you can make your library stand out from the crowd. We’ll lay out some basic principles, touching on both code design and build tooling, that will have other programmers clamoring to use and contribute to your project, guaranteeing that you will become a code celebrity practically overnight.

Mat Brown

Mat Brown has been building Ruby applications since 2008, currently at Genius. Mat is the author of Sunspot, Cequel, and Elastictastic. One of Mat’s colleagues once remarked that he is very handy with Vim.


Keynote and Q&A: Matz

The closing keynote.


Not so Neo In the Matrix

Matrices are powerful data structures that are used for all sorts of interesting problems- from 3d graphics, to image processing, and cryptography. However, the mighty matrix can be used to solve more mundane problems as well. This talk attempts to demystify the matrix and offer real life examples for using this powerful but understandable data structure.

Micah Adams

I am a Software Engineer with nearly a decade of experience. Most recently, I worked for Ello, a social network with millions of users and immediate scalability challenges. Currently I work for Mode Set, a software consultancy in Denver who built the Ello platform.


Mind Over Error

Industries like aviation and power plants have improved their safety mechanisms using our growing understanding of the nature of human error, but have we kept up? How do we incorporate the ideas from Human Error, The Design of Everyday Things, and other great resources into what we build? I want to show you how to improve the safety of our systems by reducing their complexity and generating accurate mental models.

Michel Martens

Michel Martens is the founder of openredis and tynd, where he provides Redis hosting and consulting. Since 2003, when he started programming in Ruby, he has released many small libraries like Ohm, Cuba, MicroMachine and Mote. He's an advocate of simplicity in software, and has given presentations on this topic in several Ruby conferences in South America.


A Guided Read of Minitest

Minitest is a testing library of just 1,500 lines of Ruby code. By comparison, Rspec clocks in at nearly 15,000! Why is Minitest so small? I'd like to investigate by doing a guided read of Minitest's source code.

Nate Berkopec

Nate Berkopec is a Rails developer of three years. He's worked at several startups over the years, and now consults to growing companies that want to rapidly iterate and test new product ideas.


How to Crash an Airplane

On July 19, 1989, United Airlines Flight 232 was en route to Chicago when a mechanical failure caused the plane to become all but uncontrollable. In this unsurvivable situation, the flight crew saved more than half of those onboard. How did they do it?

Flight crews and software teams actually have a lot in common, and there's much we can learn from how the best crews do their jobs. What can we learn from the story of United 232? While this talk won't earn you your pilot's license, you'll definitely come away with some fresh ideas on how to make your team even more amazing.

Nickolas Means

Nick hails from Austin, TX, the Taco Capital of the World. When he's not busy eating tacos, he's the VP of Engineering at Wellmatch Health, working with an incredibly talented team of engineers to bring transparency to healthcare pricing. He's a huge believer that software engineering is mostly human interaction and that empathy is the key to building great software.


Making it on your own and the pitfalls of gem dependencies

Putting "require '[gem name]'" at the top of your Ruby file and running 'gem install' or 'bundle install' can be an easy way to solve a difficult problem. But you could be potentially adding hundreds of lines of code you didn't write or read, for only half a of a fix. Did the gem actually solve your problem or is it just an approximate solution? How much research did you do on that gem first? Are there hidden security risks in it? In this talk, you will learn how to evaluate gems for fit, figure out when it makes more sense to write your own, and how to go about writing your own.

Nikki Murray, Maggie Epps

Nikki is entirely owned and operated by her cats. She is an intersectional feminist and software engineer. In her previous professional life, she provided case management to people seeking abortion care, and connected them with quality abortion providers. She enjoys exploring new Ruby frameworks, and creating Twitter bots.

Maggie spent three years studying and practicing social work until she fell in love with coding. After completing a boot camp in Mountain View, she supported non-profits with the open source software CiviCRM. She has built a career supporting clients with difficult data quandaries. In her current role, she builds client applications and debugs Ruby, Javascript, and PHP, while coaching clients to improve their data workflows.


I Estimate this Talk will be 20 Minutes Long, Give or Take 10 Minutes

Estimates are like weather forecasts. Getting them right is hard, and everybody complains when you are wrong. Estimating projects is often critically important to the people who pay us to develop software.

We can do better. We can focus our estimates on the parts we do well, like estimating complexity. We can present estimates without falsely inflating them, and we can be transparent during the development process. The humble point estimate can help you, if you understand its limitations.

Better estimates and communication of estimates will make your projects run more smoothly.

Noel Rappin

Noel Rappin is the Director of Talent at Table XI. Noel has authored multiple technical books, including "Rails 4 Test Prescriptions" and "Master Space and Time With JavaScript."


Writing concurrent libraries for all Ruby runtimes

Have you ever wondered how to use all of your cores?

The talk will take you on a path of writing a simple concurrent class. We'll start with a basic implementation and gradually improve it based on presented problems and newly learned facts. Our final solution will behave well in the face of concurrency and execute consistently on all Ruby implementations.

We’ll investigate various Ruby runtime differences that we’ve abstracted away with the synchronization layer of the concurrent-ruby gem. We'll go down to JRuby extensions, even volatile fields and compare-and-swap operations.

Petr Chalupa

Petr is member of a team working on JRuby+Truffle at Oracle Labs. He is the author of multiple gems, including concurrent-ruby, dynflow, and algebrick. In his free time he enjoys nature.


Shall We Play A Game?

Teaching computers to play games has been a pursuit and passion for many programmers. Game playing has led to many advances in computing over the years, and the best computerized game players have gained a lot of attention from the general public (think Deep Blue and Watson).

Using the Ricochet Robots board game as an example, let's talk about what's involved in teaching a computer to play games. Along the way, we'll touch on graph search techniques, data representation, algorithms, heuristics, pruning, and optimization.

Randy Coulman

Randy Coulman is a Senior Software Engineer at Zeal (@CodingZeal), an agile web development consultancy in Oregon. He's been developing software for nearly 25 years, mainly in Ruby, Smalltalk, Javascript, Swift, and C++. He writes about software on his Courageous Software blog at


A Tale of Two Feature Flags

It was the best of times, it was the worst of times. Feature flags are a quick win for development teams seeking a way to more rapidly release software but can create unexpected technical complexity.

Join us for a comparison of the life-cycles of two seemingly similar feature flags. We'll discuss the challenges teams often face when implementing them, as well as strategies to avoid these issues and deliver software quickly and reliably.

Rebecca Sliter

Rebecca Sliter is a lead software engineer at Kickstarter. From startups to global banks, she has worked on software teams around the world as a consultant and permanent employee. These experiences have culminated in a passion for writing maintainable, extensible code.


Cucumbers Have Layers: A Love Story

Cucumber sucks. Features are hard to write and constantly break when the UI changes. Step definitions are annoying to create and a freaking nightmare to maintain. And Cucumber suites take for-EVER to run, because you have to wait for a web browser.

Except... [almost] none of that is actually true.

After years of making awful messes with Cucumber, I finally found a way to use it that worked well, and a project I couldn't have done without it. I'd like to show you one way to use Cucumber that can be elegant, powerful, expressive, and—believe it or not—fast.

Sam Livingston-Gray

A developer from sunny* Portland, Oregon, Sam's been working in code for long enough to not remember how long it's been. He likes TDD/BDD/TATFT, pair programming, and refactoring—but finds that long walks on the beach tend to result in sandy keyboards.



Extremely Defensive Coding

Defensive programming is one of those abstract ideas that seems great but is often unclear in practice.

In this talk we'll look at some of the extremely defensive patterns that have been driven out in RSpec through the years. We'll look at building Ruby that works across a range of interpreters (including 1.8.7!). We'll investigate how you can write code that defends against objects that redefine methods like send, method and is_a?.

You should come to this talk if you want to learn about method resolution in Ruby, and cross interpreter design patterns.

Sam Phippen

Sam Phippen is a swashbuckling hacker from London, UK. He fixes every size of data problem at Fun and Plausible Solutions. He helps fight for the forces of justice as a member of the RSpec core team. He's sad that he can't hug every cat.


Ruby in 79 AD (Open Sourcing my Role as Indiana Jones)

I'll demonstrate a practical guide on how you can get involved with neat projects by partnering with academics to build open source tools. We all have the ability to be Indiana Jones and I'll show you how through my experience. Come learn the unforeseen benefits of contributing to open source. My contributions to open source garnered the attention of an archaeological team doing research in Pompeii. Before I knew it I had been granted archaeologist credentials and was on my way to Italy as part of the research team collecting data in Pompeii.

Sean Marcia

I am Sean Marcia. I work at George Mason University where I work tirelessly to try to bring sanity to higher education. I also cofounded the Arlington Ruby group and help organize Ruby Retrocession and Ruby for Good conferences. I'm working on saving the bees.


RuntimeError: can't save WORLD

Rumor has it that software engineers hold the power to build the things of our future. Now, the world is filling up with technologies and devices – who knows what all of them are for? With power comes responsibility, or in this case the chance to build and write better things.

Here is where strategies and concepts from the social design practice apply. They offer ideas for a holistic approach to programming, while yielding the prospect to establish a connection with your work that goes beyond the purely technical side of things.

Sonja Heinen

Sonja is a semi-nomadic visual designer interested in the space where technology, art and society collide. In October 2014 she earned a Master‘s in Sustainable Design from Kingston University in London and relocated to Chunky Bac... Berlin. She currently works as a creative coder on a variety of projects and roams through the open source community.


Building CLI Apps for Everyone

Many projects rely on command-line tools to provide an efficient and powerful interface to work.

Building tools for everyone can be difficult, because of conflicting environment or OS.

How can we build command-line apps that work for everyone and still write Ruby?

This talk will discuss how to use mruby-cli to build cross-platform apps in Ruby.

Our goal will be to build a CLI app using mruby and produce a self-contained binary that can be shipped to end users.

Since mruby is designed to be embedded and statically compiled, it's also really good at packaging ruby code.

Terence Lee

Terence leads Heroku’s Ruby Task Force curating the Ruby experience on the platform. He's worked on some OSS projects such as Ruby (the language), mruby, Bundler, Resque as well as helping with the Rails Girls movement. When he’s not going to an awesome Heroku or Ruby event, he lives in Austin, TX, the taco capital of America. Terence loves Friday hugs, EVERY DAY OF THE WEEK! Give him a big one when you see him! In addition to hugs, he believes in getting people together for #rubykaraoke.


Beating Go thanks to the power of randomness

Go is a board game that is more than 2,500 years old (yes, this is not about the programming language!) and it is fascinating from multiple viewpoints. For instance, go bots still can’t beat professional players, unlike in chess.

This talk will show you what is so special about Go that computers still can’t beat humans. We will take a look at the most popular underlying algorithm and show you how the Monte Carlo method, basically random simulation, plays a vital role in conquering Go's complexity and creating the strong Go bots of today.

Tobias Pfeiffer

Tobi is a clean coder, Rubyist, learner, teacher and agile craftsman by passion. He organizes the Ruby User Group Berlin, maintains shoes and contributes to a variety of projects while thinking about new ideas to put into code and push boundaries. He loves collaboratively creating just about anything people enjoy. Currently he's flying in the bitcrowd airship creating wonderful web applications.


Using Ruby In Security Critical Applications

We’ve worked to improve security in MRI for a variety of security critical applications, and will describe some of our successes and failures in terms of real-world applications and their various runtime environments. We will describe some of the security principles that guide our work, and how they fit in with the ruby culture. We will also introduce some objectives we have moving forward to improve ruby’s security, and ways we’d like to engage the community to help.

Tom Macklin

Tom Macklin works for the US Naval Research Laboratory (NRL) in the Center for High Assurance Computer Systems (CHACS). He has been driving innovation in high assurance software for over 10 years, and has been the lead developer for several security-critical software systems. He's been a strong advocate for Agile Software, ruby, and TDD in the public sector since 2004.


Domo Arigato mruby Roboto

Let's make a self-balancing robot with mruby!

We show inverted pendulum robots using mruby. Inverted pendulum robot is two-wheeled, self-balancing robot like Segway. A self-balancing robot usually uses C or C++ because of real time responsibility, but we try to use mruby. We show you two robots, LEGO Mindstorms EV3 version and Raspberry Pi DIY version, and describe how to make them.

Yurie Yamane, Masayoshi Takahashi

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.

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.