2017 Program

Program sidebar

Keynote Speakers

Chad

Chad Fowler

Microsoft

Chad Fowler is a programmer, investor, author, speaker, and musician. He was one of the first few early Ruby fans outside of Japan. He was part of the founding team for RubyConf and RailsConf, co-directing the events for a decade. He co-created RubyGems and a variety of other Ruby libraries. These days he works as a divisional CTO at Microsoft and is a venture partner with Blue Yard Capital, based in Berlin.

Sandi

Sandi Metz

TorqueForge

Sandi Metz, author of Practical Object-Oriented Design in Ruby and 99 Bottles of OOP, believes in simple code and straightforward explanations. She prefers working software, practical solutions and lengthy bicycle trips (not necessarily in that order) and writes, consults, and teaches about object-oriented design.

Matz

Yukihiro Matsumoto (Matz)

Heroku
Ruby Association

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

Andy

Andy Croll

One Ruby Thing

Freelance CTO, Rubyist, Conference Organizer, Author, Speaker & Parent of Twins. I’m tired a lot.

Sessions

Building a Compacting GC for MRI

We will talk about implementing a compacting GC for MRI. This talk will cover compaction algorithms, along with implementation details, and challenges specific to MRI. Well cover low level and high level memory measurement tools, how to use them, and what they're telling us. We'll cover copy-on-write optimizations and how our GC impacts them. After this talk you should have a better understanding of how Ruby's memory management interacts with the system memory, how you can measure it, and how to adjust your application to work in concert with the system's memory.

Aaron Patterson

Keyboards, Cats, and Code. I love MRI and I love playing with the GC.

Yes, and...

A Realm Beyond Ruby

What happens when we drop "No, but..." from our daily interactions or life choices in favor of the #1 rule of improv: Yes, and..?

This talk is not a technical deep dive into the Ruby VM or a walk through of a new gem. I won't touch on testing strategies or war stories as a developer. Instead, I'm going to teach you improv.

We'll call it a social strategy for an awesome life! This talk is for introverts and extroverts alike. You won't be brought onstage (unless you want to be).

Adam Cuppy

Master of Smile Generation. Ambassador of Company Culture. Tech Entreprenur. Speaker/Educator. One-time Professional Actor. Husband. Chief Zealous Officer @CodingZeal

Julia Cuppy

Julia is a multidisciplinary theatre artist, working as the Associate Dir. of Education and Outreach at the Tony Award winning La Jolla Playhouse. She’s a lecturer for San Diego State University. Past times include ruminating on all things art and tech, antiquing, and vinyl record...ing. @jewlea

4 Programming Paradigms in 45 Minutes

One of the most important lessons I've learned is that programming languages are tools and not all tools are good for all jobs. Some tasks are easier to solve functionally. Some are clearly suited for OO. Others get simpler when you use constraint solving or pattern matching.

Let's go on a whirlwind tour of 4 different programming languages emphasizing different programming techniques: OO, functional, logical, and procedural. You'll leave this talk with a better understanding of which languages are best suited to which types of jobs and a list of resources for learning more.

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.

View Slides

Rewriting Rack: A Functional Approach

Comparative Ruby

What if we traded in our classes for procs, our methods for functions, and took advantage of functional programming to rewrite Ruby's Rack? I kept hearing about the benefits of functional programming (simplicity, immutability, thread safety), but it wasn't until I reimplemented familiar Ruby concepts in a functional language that I really got it. In this talk, we'll steal some powerful FP ideas from Clojure and use them to rewrite Rack. You'll come out of it understanding how to write functional Ruby code that is simpler to reason about, less likely to break, and dead simple to debug.

Alex Wheeler

Software developer at VTS. I enjoy taking inspiration from all things computing. If you can't find me at the computer, I've probably gone surfing! :wq

A History of Bundles: 2010 to 2017

When Bundler 1.0 came out in 2010, it did something really great: installed all of your gems and let you use them in your app. Today, Bundler does something really great: it installs all your gems and lets you use them. So, given that, why has Bundler needed thousands upon thousands of hours of development work? What exactly has changed since then? Prepare to find out. We’ll cover performance improvements, server response optimizations, adapting to new versions of Ruby, and adding features to support new usecases. Learn the tricks of Bundler power users, and find out how to optimize your gem workfl

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 RubyGems.org to the entire Ruby community.

Just A Ruby Minute

Renowned game show Just a Minute has delighted audiences across the world for almost half a century, becoming part of the British national consciousness. Speakers are challenged to speak on an unseen (Rubyesque!) topic for one minute without hesitation, repetition, or deviation. It’s fast-paced, funny, insightful, and much harder than it sounds… and you might even learn something!

Andrew Faraday

Andrew is an experienced full-stack Ruby on Rails developer, specialising in the efficient integration of web applications with large legacy databases. He relaxes by swimming outdoors and playing the mandolin, although usually not simultaneously. As a former radio presenter, he generally manages to keep the contestants on track in this technology themed panel game, but maybe this will be the time they go off the rails. Andrew is confident that Just a Ruby Minute is just the ticket!

View Slides

How to load 1m lines of Ruby in 5s

Applications written in Ruby, Python and several other popular dynamic languages become very slow to boot as they grow to millions of lines of code. Waiting to reload code in development becomes a major frustration and drain on productivity. This talk will discuss how we reduced the time to boot a service at Stripe from 35s to 5s and the static analysis tools we built along the way.

Andrew Metcalf

Andrew Metcalf is an engineer at Stripe, where he works on making large Ruby codebases fast, safe, and predictable to work with. In his spare time, Andrew tries to find things to build (or break) with a hammer instead of a keyboard.

Lending Privilege

Human Factors

Diversity and inclusion have become hot topics in technology, but you may not know how you can make a difference. However, this talk will help you understand that, no matter your background, you have privilege and can lend it to marginalized groups in tech.

Anjuan Simmons

Anjuan operates at the intersection of business and technology by relentlessly focusing on delivering delight to customers while effectively using engineering resources. He’s currently a Technical Program Manager at Questback. When leading projects, he prefers Agile practices but will choose the right approach for the conditions on the ground. Anjuan works primarily in web application development and contributes to open source projects as often as possible.

View Slides

Git Driven Refactoring

Often we know that our code needs refactoring, but we have no idea where to start. Maybe we studied some common code smells and learned about the things that we should be avoiding, but memorizing the rules doesn’t automatically lead to fixing all problems. In this talk, we explore how you can use Git to recognize and address violations to each of the SOLID principles. Using diffs, commit history and pull requests you can learn to recognize patterns in code that point to problems. These same tools can help you correct those issues and write more maintainable code.

Ashley Ellis Pierce

Ashley lives in Durham, NC and is an Application Engineer at GitHub. She enjoys helping others learn to code and is the lead organizer for RailsBridge Triangle and a mentor for Code the Dream, an organization that helps minority and immigrant youth break into tech. Her favorite programming languages are Ruby and Elixir. In her free time she enjoys cycling, amateur furniture building, and photography.

View Slides

Set Design: Putting the "Art" in "Architecture"

I thought of software architects as petty waterfall dictators. Then I became one. My theater background saved me. In this talk, we’ll look at set design — an ongoing, collaborative process — as a model for a more agile kind of “architecture” than building metaphors allow us. You’ll learn about the most important part of any architecture (hint: people), about using architecture to foster team creativity, and about the agile-architecture superpowers that Ruby gives us. No matter your title, you too can architect!

Betsy Haibel

Before Betsy Haibel called herself a "CTO" or a "Principal Architect" or any of those other fancy software titles, she worked as a scene painter, set designer, and general backstage type in the DC area. Some of her favorite productions included Priscilla Dreams the Answer (Nu Sass), Romeo and Juliet (Synetic), and In on It (Theater Alliance). As co-founder of Cohere, she helps startups find human-centric software architectures.

Finding Responsibility

Human Factors

In 2011, with a team of interns at a Department of Defense contractor, I created a Wi-Fi geolocation app to locate hotspots. It could find the location in 3D space of every hotspot near you in seconds. We made formulas to model signal strength and probable distances. We used machine learning to optimize completion time and accuracy.

I was so caught up in the details that it took me months to see it would be used to kill people. What do we do when we discover that we're building something immoral or unethical? How can we think through the uses of our software to avoid this problem entirely?

Caleb Thompson

Caleb is a dreamer, speaker, and computer whisperer. He organizes the Keep Ruby Weird conference, which of course you’ve heard of and are very impressed by. When he’s not painting miniatures or climbing cliffs to jump off into the water, he works for Heroku and codes in Ruby and Go. He walked barefoot from the wintry tundra of Alaska to the harsh deserts of Arizona. Okay, that’s not true, but he did live in those places. He currently hails from Austin, TX—the taco capital of the United States.

View Slides

Getting Unstuck: Using the Scientific Method for Debugging

Have you ever gotten really stuck while trying to understand the cause of a bug? Thinking of your debugging session as a science experiment, and using the scientific method can help you make progress again. Come and learn how to adapt the scientific method (the process used for scientific research) to get past that stuck place and find the cause of bugs or production incidents. You’ll walk away with a great new tool to keep you calm and focused in the face of inevitable bugs.

Caroline Taymor

Caroline Taymor is a software engineer with a passion for making operations less painful. Previously, Caroline was lead developer on a team building a Ruby on Rails app for deploying Pivotal Cloudfoundry to many different IaaSes. Caroline first developed the tool of using the scientific method for debugging while adding support for for GCP and Azure to their deployer, requiring significant exploration of differences between IaaSes.

Mozart Could’ve Been an Engineer - Music + Code

A Realm Beyond Ruby

Would you hire a musician to build a web app? After this talk, you might not think it’s such a crazy idea. Transitioning from opera singer to software engineer, I was blown away by the parallels between music and code. During this talk, we’ll study these similarities: how we break down elements to learn, use patterns to build, problem solve with creativity, and succeed through persistence and flexibility. We’ll compare “Mary Had a Little Lamb” to a Ruby method and see how Puccini might have coded a Todo app. Warning: parts of this talk may be sung. Yes, you may bring your own instruments.

Catherine Meyers

Catherine Meyers is an opera singer turned software engineer who works at Mavenlink building project management software with Ruby on Rails and React. Prior, she worked at Red Antler, a Brooklyn branding agency, where she built super cool and fully responsive websites. She enjoys speaking at conferences, co-organizing Women Level Up, a San Francisco Meetup for female coders, and co-leading the Mavenlink diversity group. She’s proud to be a career changer and graduate of the Flatiron School.

View Slides

Just when you thought you couldn’t refactor any more…

Ruby's philosophy is to provide more than one way to do the same thing. Faced with choice, we are left wondering which methods to use.

In this talk, we will travel together on a refactoring journey. We will start from code that is easy to write but hard to read, and gradually advance to a level where the 4 C's of good code are satisfied: Correctness, Completeness, Clearness, and Compactness.

On the way, we will learn new Ruby 2.4 methods (String#match?, MatchData#named_captures) and review old methods (Enumerable#find, Regexp#===) that are more powerful than they seem at a first glance.

Claudio B.

Claudio is a member of the Rails Issues team, a frequent contributor to the Rails source code (over 200 commits), the organizer of the L.A. Ruby/Rails meetup and one of the authors of the weekly newsletter "This week in Rails".

View Slides

Buuuuugs iiiiin Spaaaaace!

Bug Report

Space is really cool. From precision electronics, to giant rockets, spacecraft can represent the best of engineering. But sometimes things go wrong. Terribly wrong.

  • What do exploding Soviet rockets have to do with Agile development?
  • How did LISP and Forth hacking save part of the Galileo probe?
  • What about that time astronauts added life-saving monkey patches... while orbiting the moon!
  • Exactly how much damage can a little dead code do? (Hint: a lot!)

This talk is for anyone whose love of a good space story is rivaled only by their passion for incredibly resilient software.

Colin Fulton

A frontend developer, theater designer and someone who wants to say hello to every dog they run into.

When Colin isn't writing useful code for work—or amusingly useless code for fun—they are making art and dreaming about being an engineer on the USS Enterprise.

View Slides

Dispelling the dark magic: Inside a Ruby debugger

Debuggers can seem like dark magic—stopping a running program, tinkering with the program state, casting strange spells on VM internals. I spent much of my career diagnosing problems using “puts” because debuggers intimidated me. If you can relate, this is the talk for you! We’ll use Ruby's powerful TracePoint API to implement a simple but fully featured debugger for Ruby programs. We’ll also explore a few of the advanced techniques behind a "live" production debugger, and discuss some of the debugging features and limitations of the Ruby VM itself.

Daniel Azuma

Daniel Azuma founded and currently leads the Ruby-Cloud engineering team at Google, providing libraries and support for Ruby developers using Google Cloud Platform. He has been a Ruby developer for twelve years, and is also known as a pioneer in geospatial support for Ruby. He lives with his wife in the Seattle area, and blogs at daniel-azuma.com.

What does GIL really guarantee you?

You probably heard that Global Interpreter Lock (GIL) in Ruby "allows only one thread to run at a time", while technically it is correct it does not mean what you probably think it means. After this talk you will know why your code can be not thread safe even if GIL is enabled and how even a subtle change in your code can make GIL fail to protect you from race conditions. This talk is junior-friendly, but even experienced Ruby devs most probably will learn something new and important about GIL in Ruby.

Daniel Vartanov

I write in Ruby since 2008 and I still do it every day

How to Build a World-Class Rock Paper Scissors Bot

This talk will teach you how to play rock-paper-scissors (no really, it’s more complicated than you might think) plus a little bit about AI history. It will also make you laugh — at least a little. You'll also learn some game theory, some mind games, and finally, how to build a world champion bot in the universe of Rock Paper Scissors.

This talk is aimed at all levels of Ruby programmers - beginner or advanced. All the examples in the talk and are explained step by step, and many of them relatively basic.

Dorothy Jane Wingrove

Dorothy is a Senior Developer at HappyBear Software. For talks she enjoys exploring and deconstructing off-beat topics and making them accessible and fun to a wider audience. Prior student of maths, current student of german, lover of all things crafty. Has a super flooffy dog, will happily show photos.

The Unbearable Vulnerability of Open Source

Human Factors

If contributing to open source was only about writing code, it would be easy. In reality open source exposes our insecurities and makes us feel vulnerable. Vulnerability can inspire change, but can also paralyze us for fear of not being good enough. In this talk we'll look at how vulnerability affects open source contributors and explore how maintainers can foster a welcoming community. Contributors will learn how to identify projects with empathetic leaders who value GitHub’s community standards. Cultivating a better environment for contributing makes open source more sustainable for all.

Eileen M. Uchitelle

Eileen Uchitelle is an Senior Systems Engineer on the Platform Systems Team at GitHub and a member of the Rails Core team. She's an avid contributor to open source focusing on the Ruby on Rails framework and it's dependencies. Eileen is passionate about security, performance, and making open source communities more sustainable and welcoming.

View Slides

What If... ?: Ruby 3

The Future of Ruby

What if Professor X and Magneto formed the X-Men together? What if Jessica Jones had joined the Avengers? What if Tony Stark wrote Ruby? (Okay, I made that last one up, but we'd probably all read it.) This talk, in the mode of Marvel's What if... ? comics, explores what Ruby 3 might look like if key decisions in its history had been (or might be) made differently. We'll look at three "what if"s in particular: "what if Ruby had a static type system?", "what if Ruby ran in the browser?", and "what if Ruby didn't have a global interpreter lock?"

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.

View Slides

That time I used Ruby to crack my Reddit password

I lost my password. So I used Ruby it crack it, kinda. I will re-enact the story live in front of a group of strangers.

I'm going to be honest, this is a weird and fairly embarrassing story. You probably shouldn't come see it.

You know what, forget I even said anything.

Haseeb Qureshi

Haseeb is a software engineer and ardent Rubyist. Previously he worked on payments fraud at Airbnb, and before that he was a lead instructor at App Academy, a top Rails bootcamp. He blogs actively and Tweets lazily.

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.

View Slides

Leadership starts with Listening: Amplify your Impact

Human Factors

Listening is power. By “tuning in” and applying self management and directed curiosity you can help others thrive and solve their own problems. Doing this not only leads to greater ownership, but also more leaders in your organization instead of “order takers”. In this interactive talk I’ll teach you practical communication skills so you can become a more available and empowering coworker, friend and leader.

Heidi Helfand

Heidi Helfand is Director of Engineering Excellence at Procore Technologies, creators of cloud-based construction software. Prior to that she was an early employee at two highly successful startups- ExpertCity, Inc. (acquired by Citrix) where she was on the original development team that invented GoToMyPC, GoToMeeting and GoToWebinar and AppFolio, Inc., a SAAS workflow software company that went public in 2015.

Y2K and Other Disappointing Disasters: How To Create Fizzle

Risk Reduction is trying to make sure bad things happen as rarely as possible. It's anti-lock brakes and vaccinations and irons that turn off by themselves and all sorts of things that we think of as safety modifications in our life.

Harm Mitigation is what we do so that when bad things do happen, they are less catastrophic. Building fire sprinklers and seatbelts and needle exchanges are all about making the consequences of something bad less terrible.

This talk is focused on understanding where we can prevent problems and where we can just make them less bad.

Heidi Waterhouse

Dynamic speaker, sideways thinker, and developer advocate for LaunchDarkly.

Heidi is passionate about documentation, devops, and deployments, in approximately that order. She spoke at a previous RubyConf and hopes to repeat the experience.

View Slides

Code Reviews: Honesty, Kindness, Inspiration: Pick Three

The attitude among many developers seems to be that code reviews can be either honest or nice but not both. I see this as a false dichotomy; while code reviews should be both honest and kind, they should be focused on inspiring creators to go back to their work, excited to make it better.

This talk will introduce the Liz Lerman Critical Response process, a framework for giving feedback on anything creative. You'll leave this talk with tips on how to improve your code reviews by putting the creator in the driver's seat and inspiring everyone on the team to make the product even better.

Jacob Stoebel

Jacob Stoebel is a software developer, dad and xkcd forwarder currently living Berea, KY. Previously a theatre artist and teacher, Jacob is interested in innovating the processes developers use to communicate by optimizing for programmer happiness.

View Slides

Ten Unicode Characters You Should Know About as a Programmer

There are a lot of things that can go wrong when working with Unicode data. Some examples of unmeant behavior:

  • You try to downcase "I" to "i", but your Turkish friends want it to be a dotless "ı"
  • Your UI is broken, because people use empty usernames, despite the String#blank? check
  • You think "C" is the same letter as "С", but your system does not think so and crashes

Using ten characters as representatives, I will highlight some Unicode characteristics which require a programmer's attention and demonstrate how Ruby's solid Unicode support can be of useful assistance!

Jan Lelis

Jan Lelis is a full stack web developer and he is ruining his Ruby style since late 2009. Back then, he was very unhappy with the IRB command-line experience. That is why he ended up writing the Irbtools gem which makes using IRB more enjoyable. He likes to build tiny Ruby gems that do one thing well and also loves to document the obscure parts of Ruby over at the Idiosyncratic Ruby blog.

View Slides

Saving Ruby from the Apocalypse

The Future of Ruby

You've just woken from a coma to find out that Ruby has fallen victim to the programming apocalypse. Walkers have taken over the programming world looking to infect any developers they can find. Posing even more of a threat are the other survivor camps such as Java and PHP all fighting to survive by any means necessary.

After reuniting with the Ruby Community, it's time to fight for survival. Ruby developers who remained safe in the post-apocalyptic Ruby community need a leader to keep the community together and keep the language thriving. Are you willing to step up to keep Ruby alive?

Jason Charnes

Jason is a Ruby developer from Memphis, TN. He still can't seem to shake his Ruby addiction and is very passionate about the Ruby community. Outside of development, Jason enjoys whiskey, Memphis, fatherhood and misses sleep.

A New Pair of Shoes!

While web applications dominate much of the computing landscape, sometimes you just want to open a window on your desktop.

Enter Shoes! With a long history in the Ruby community, Shoes is an easy to learn, fun to use framework for writing and packaging GUI apps. It's ideal for kids, beginners, and anyone look for a simple way to build apps that run on Windows, Mac, and Linux.

After many years of development, a release candidate for the new version (4.0) of Shoes is ready! Come learn how to get Shoes, how it builds on the cross-platform power of JRuby, and how you can get involved in the project.

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.

View Slides

Voice Controlled Home Automation in Ruby

Ruby on the Fringe

Have you ever wanted to change the channel on your TV but the remote was missing? Wouldn't it be great to tell your TV to change the channel by speaking to it? In this talk, you will learn how to control your TV with nothing but your voice. Using Ruby you can connect your TV and cable box with the Amazon Echo, AWS Lambda, and a Raspberry Pi. Once you learn how easy this is to setup, you'll never look for that missing remote again.

Jeff Sacks

Jeff programs mostly in Ruby, JavaScript, and Clojure as a Senior Software Engineer at DRW in Chicago, IL. Outside the office he can be found on the tennis courts at his local gym.

View Slides

Hello Gmom!: Addressing loneliness in end-of-life care

After suffering a debilitating stroke, Barbara, my significant other's grandmother, was left disabled, bed-bound, and mostly non-verbal. We visited often, and were with her when she passed earlier this year. For Christmas, I built her a web application to be a window into the life of her granddaughter.

Now that she’s passed, I’m hoping that the project can be a foundation or inspiration for others to build tools that bring them closer to the people they love. This small project--a $5 computer and some “off-the-shelf” technology--increased the quality of life for all of us.

Jeremy Flores

With a philosophy that eyes technology as the means rather than the end, Jeremy takes a human-centric approach to software development. He utilizes technology as a medium for human expression, building real-world communities, and solving real problems.

He specializes in open-source development using languages like Ruby, JavaScript, and Elixir. Jeremy is also a conference organizer, community advocate, teacher, and world-class hugger.

The Good Bad Bug: Fail Your Way to Better Code

Human Factors

Programming history is filled with bugs that turned out to be features and limitations that pushed developers to make even more interesting products. We’ll journey through code that was so ‘bad’ it was actually good. Along the way we'll look at the important role failure plays in learning. Then we’ll tame our inner perfectionists and tackle an approach to writing code that will help us fail spectacularly on our way to coding success.

Jessica Rudder

Jessica Rudder is an software engineer on the Experience team at GitHub. She has a passion for clean code and the Kansas City Royals. She once ran 70 miles through the Santa Monica Mountains "just for fun". When she's not writing code, she can be found running aimlessly through city streets training for her next ultra or creating code-related videos on YouTube for CompChomp. She is an avid squirrel photographer and loves the color green.

View Slides

Steal This Talk: The Best Features Ruby Doesn't Have (Yet)

Comparative Ruby

One of Ruby's greatest strengths is its burning desire to make writing software enjoyable for humans. Newer languages, perhaps taking some inspiration from Ruby, have recognized the practical value of doing this. What can Rubyists learn from these new ideas, and what can be adapted from them to improve Ruby?

In this talk, we'll discuss a few of the most interesting Ruby-like features that aren't really in Ruby yet. We'll also show how you can get these features (or an approximation to them) with Ruby today. By the end of the talk, you should feel empowered to try them out yourself!

John Feminella

John Feminella is an avid technologist, occasional public speaker, and curiosity advocate. He serves as an advisor with Pivotal, where he works on helping enterprises transform the way they write, operate, and deploy software. He's also the cofounder of a tiny analytics monitoring and reporting startup named UpHex.

John lives in Charlottesville, VA and likes meta-jokes, milkshakes, and referring to himself in the third person in speaker bios.

There's Nothing.new under the sun

The Future of Ruby

Quick: say something about Ruby that hasn't already been said.

Not easy, right? This community is prolific. In thousands of talks, Ruby's story has been told and retold. We heralded programmer happiness, path of least surprise, and confident code. We unleashed metaprogramming (until we tamed our DSLs). We built apps, tested them to death, and then legacy-rescued them.

What's left to say? We could tell the same stories again, but that wouldn't be very DRY. What we need to hear was often said years ago, so this talk will help us rediscover timeless lessons from our community's greatest hits.

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 everything that's broken about software.

Josh Greenwood

Josh is a habitual learner and teacher. He works at Test Double, where he writes a whole lot of Ruby and tries to leave each project better than he found it. He lives in Louisville, Kentucky where he drinks bourbon and binge watches Netflix with his fiancée and puppy.

View Slides

Augmenting Human Decision Making with Data Science

Humans and data science are flawed on their own. Humans lack the ability to process large volumes of information. Machines lack intuition, empathy and nuance. You’ll learn how to guide users of expert-use systems by applying data science to their user experience. Layering data science within our systems allows us to take advantage of the human-touch while leveraging our large data sets. In this talk, you’ll learn the process for sprinkling data science into your applications, the challenges we have faced along the way, and how to measure the business impact.

Kelsey Pedersen

Kelsey Pedersen is a software engineer at Stitch Fix on the styling engineering team. She builds internal software used by our stylists to curate clothes for our clients. She works cross-functionally with our styling community and data science team to build new features to better assist our stylists. She had a past life in sales and as a Division I rower at UC Berkeley.

View Slides

Using Ruby in data science

RubyKaigi

I will talk about the current situation and the future of Ruby in the field of data science.

Currently, Ruby can be used practically in data science. In the first half of this talk, I will perform some demonstrations to prove this. You will see that pandas, matplotlib, scikit-learn, and several deep learning frameworks are available from Ruby scripts in these demos.

In the future, in order for Ruby to continue to be used in data science, we need to continue some efforts. In the latter half of this talk, we will introduce Red Data Tools project that plays an important role in this context.

Kenta Murata

A Ruby committer and a researcher at Speee Inc. I'm currently focusing on making Ruby a data-science-ready programming language.

Compiling Ruby

Since Ruby 2.3 and the introduction of RubyVM::InstructionSequence::load_iseq, we've been able to programmatically load ruby bytecode. By divorcing the process of running YARV byte code from the process of compiling ruby code, we can take advantage of the strengths of the ruby virtual machine while simultaneously reaping the benefits of a compiler such as macros, type checking, and instruction sequence optimizations. This can make our ruby faster and more readable! This talk demonstrates how to integrate this into your own workflows and the exciting possibilities this enables.

Kevin Deisz

Kevin is a software developer living in Boston. He is currently serving as the CTO of CultureHQ, a startup in Boston based on making workplace community better. In his spare time he plays music, breaks the Ruby virtual machine, and drinks good New England beer.

View Slides

Improving TruffleRuby’s Startup Time with the SubstrateVM

Ruby applications can be broadly split into two categories: those that run for a short period and those that stick around for a while. Optimizing performance for one often comes at the expense of the other. Over the years, alternative Ruby implementations have demonstrated remarkable performance gains for long-lived applications -- so-called peak performance -- but often lose out to MRI for short-lived applications.

In this talk, I'll introduce the SubstrateVM and show how we use it to massively improve TruffleRuby's startup time with minimal impact on peak performance.

Kevin Menard

Kevin is a researcher at Oracle Labs where he works as part of a team developing a high performance Ruby implementation called TruffleRuby. He’s been involved with the Ruby community since 2008 and has been doing open source in some capacity since 1999. In his spare time he’s a father of two and enjoys playing drums.

Great Expectations: Power-Charging Apprenticeship Programs

Apprenticeships are a great way to ramp up a newbie, but these programs are much tougher to successfully implement than many organizations expect. It is a surprisingly large investment to guide someone through the ups and downs of their first gig as a developer, and if you aren't prepared it can be a bad experience for everyone involved.

Let's dig into what makes a robust and empowering apprenticeship, from full team buy-in to setting clear learning goals to providing a clear path to the optimum final outcome: a new full time junior developer and a team dedicated to investing in education.

Louisa Barrett

Louisa is the Director of the Front End Engineering program at the Turing School of Software and Design. She is the former director of Colorado for Women Who Code and past chapter leader for Girl Develop It Denver/Boulder. She began her career as an illustrator and graphic designer, and a passion for understanding people lead her to programming. She has a soft spot for UX, typography, and correcting students when they refer to an assignment operator as an ‘equals sign’.

Prototyping with Paper: How Board Games Become Reality

A Realm Beyond Ruby

Much like developing any feature in your app, the best developers start with an idea and then refine it through rapid testing, much of which requires very few technical skills--but does take focus, observation and patience. In this talk we'll discuss the process of developing and playtesting a board game and what we as software developers can learn from it to improve the features and apps we create. If you like board games or just want to create better experiences for your users, then this talk is for you!

Mark Simoneau

Based in Austin, TX, Mark has 15 years of full time development experience, 9 of which have been in Ruby and Rails. He's been at Upworthy and Stitch Fix in recent years, as a lead in both engineering organizations. Mark has a passion for connecting with people, BBQ, board games, woodworking and simple solutions to problems.

There are no rules in Ruby

Comparative Ruby

Programming requires developing ideas about How Things Work that we internalize and rely on in our day-to-day programming life: when I write a class, I can use it like this; all strings have that method; I'm allowed to use private methods in these contexts. We start to rely on them. But which are rules, and which are more like norms? Turns out that with as dynamic a language as Ruby, a lot of rules are made to be broken. Let's take a look at what we can assume to be true in our Ruby programs and what we can't.

Max Jacobson

Max Jacobson fell in love with Ruby four years ago while attending a coding immersive program. Lately he's been dabbling in Rust, and it's changed the way he sees Ruby. He works as a software engineer at Code Climate in New York.

View Slides

Finding Beauty in the Mundane

Amongst the exciting challenges of making software, there are some tasks we go out of our way to avoid: linting files, updating dependencies, writing documentation. But even the "boring" parts of the job are opportunities to make big changes for the better, little by little. In this talk, you'll learn how to make even the most mundane development tasks exciting in order to better your applications and become your team's hero in the process.

Megan Tiu

Megan Tiu is a Senior Software Engineer at CallRail that loves making software and solving problems with Ruby. She aims to make technology more accessible to women and people of underrepresented groups in any way she can, including through her position on the Rails Girls Atlanta board.

View Slides

Packing your Ruby application into a single executable

Recent languages like Go compiles a project into a nice executable, why can't good ol' Ruby? We have built an packer for Ruby to do just that. It is 100% open-source, and can produce executables for Windows, macOS and Linux individually. By packing, distributing Ruby apps are made extremely easy, additionally with intellectual property protection. Auto-updating is also made easy, in that the executable only needs to download and replace itself. So, how we did it? How to use it? What goes under the hood? What future will this bring to Ruby? That's what will be unraveled in this talk!

Minqi Pan

Minqi Pan considers himself a hacker since 2003. He is a heavy user of Ruby and C++ and is an active contributor of the open source community. He is one of the collaborators of Node.js and also a speaker of RailsConf 2016. In his spare time, he likes to go mountain climbing and swimming, especially on days when the infamous haze is gone since he lives in Beijing :P

Orbital Rocket Guidance with Ruby

Ruby on the Fringe

Using the popular space simulator Kerbal Space Program and some remote procedure calls, we're going to use Ruby to launch (simulated) rockets into space! We'll discuss the history of computing in the space program, real-life algorithms for getting rockets into orbit like the Space Shuttle's Powered Explicit Guidance Ascent System, and the software architecture of historic space computers like the Apollo Guidance Computer. Finally, we'll build our own orbital rocket, controlled by a Ruby program that emulates space computers of the past.

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 nateberkopec.com. 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.

View Slides

High Cost Tests and High Value Tests

Testing

There is a value in writing tests and there is also a cost. The currency is time. The trade-offs are difficult to evaluate because the cost and value are often seen by different people. The writer of the test bears much of the short term cost while long term benefits and cost are borne by the rest of the team. By planning around both the the cost and value of your tests, you’ll improve your tests and your code. How much do slow tests cost? When is it worth it to test an edge case? How can you tell if testing is helping? Here are some strategies to improve your tests and code.

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 http://www.noelrappin.com.

View Slides

Human Errors

Runtime errors can sometimes turn into dark and unpleasant journeys which lead you to question the nature of reality. Thankfully, Ruby often provides friendly feedback for understanding the cause and remedy for exceptions. Yet, there are situations in which programmers don't receive clear enough context for what really caused an exception and how to address it. We'll look at Ruby's error feedback mechanisms and search for constructive ways in which they can be made more helpful to humans.

Olivier Lacan

Olivier likes to use computers to help people and not the other way around. He's worked on Code School for the past five years, created Shields.io and Keep a Changelog to try and make open source project more accessible to humans. More importantly, he's the kind person who stops in the middle of a book to figure out the etymology of a cool new word.

High Performance GPU computing with Ruby

ArrayFire gem a General Purpose GPU computing library can be used for high performance computing in Ruby be it statistical analysis of big data, image processing, linear algebra, machine learning.

ArrayFire has an outstanding performance considering other existing Ruby libraries that run on CPU. ArrayFire gem can also be run on clusters and handle real world problems by crunching huge datasets. The ease of using ArrayFire gem makes Ruby a viable choice for high performance scientific computing.

Prasun Anand

Prasun is a student at BITS Pilani KK Birla Goa Campus, Goa, India pursuing a dual degree in M.Sc. in Biological Sciences and B.E. in Chemical Engineering. He is involved with different open-source projects aimed at super fast Scientific Computing on Ruby and D. He worked with SciRuby as a GSoC student in 2016, 2017. He worked on JRuby port of NMatrix and is currently work on creating GPGPU libraries for D and Ruby. One such effort is ArrayFire gem which has an outstanding performance.

Live Coding Music with Sonic Pi

Sonic Pi is a Ruby DSL & IDE for live coding music with a specific focus on education. In this demo-heavy talk, we’ll cover its history - why it was created, how it evolved and what it can do today. We’ll also take a quick technical nosedive into some of the more interesting linguistic innovations that were necessary to perform live with code. For example, we’ll see how we can rhythmically sync multiple threads, use lexical blocks to close over time, accurately sleep without drifting and deterministically manipulate global state concurrently. Expect noise!

Sam Aaron

Sam Aaron is a live coder, educator and researcher. He was the lead developer of Overtone and Quil - Clojure-based projects for the expression of sound and image. More recently he has created Sonic Pi - a Ruby-based live programming environment for creating music from code with a strong focus on education. By day he’s a researcher within the University of Cambridge Computer Laboratory, by night he can be found coding beats in nightclubs.

"RSpec no longer works with ActiveRecord"

Bug Report

Sometimes an email appears in front of you in your inbox that immediately grabs your attention. For me, this was the case with a particularly scarily titled RSpec Mocks bug.

In this talk, you'll hear a story of investigation and fixing of what could have been a day ruining bug for all RSpec users. You'll come away with some deeper knowledge about RSpec's mocking library. You'll learn some protips on good practise when making an open source bug report. If you've ever used with RSpec's mocking library and would like to learn more about deep Ruby metaprogramming this talk is for you.

Sam Phippen

Sam Phippen sometimes uses computers. He comes to the table with enthusiasm, and a great deal of love for the Ruby community. He fights for the forces of justice as a member of the RSpec core team. He's sad that he can't hug every cat.

The overnight failure

Bug Report

Close your eyes and imagine what is the worst thing that could happen to you at work. For me, that was charging users thousands of times the amount they should have been charged. In this talk we will find out what caused this particular bug and what we learnt from dealing with the whole situation.

Did someone get fired? Did the company survive the bug? Come to the talk and you will learn the answers, but more importantly a thing or two about how to go through tough times at work.

Sebastian Sogamoso

Sebastián likes burritos, pair programming and teaching. He codes mostly in Ruby, works at Cookpad and organizes RubyConf Colombia.

Gemification for Ruby 2.5/3.0

Ruby have many libraries named standard library, extension and default-gems, bundled-gems. These are some differences under the bundler and rails application.

default-gems and bundled-gems are introduced to resolve dependency problem and development ecosystem around the ruby core. We have the plan to promote default/bundled gems from standard libraries. It says “Gemification” projects.

What Gemification changes in Ruby ecosystem? In this presentation, I will explain details of Gemification and future things of Ruby language.

SHIBATA Hiroshi

A member of Ruby core team. Rake, rdoc, psych, ruby-build, etc. and He is an administrator of ruby-lang.org and supports to develop the environment of Ruby language.

He is also Executive Officer in GMO Pepabo, Inc. His most interest things are “Productivity” He believes, there's business value in fun. The team member happiness can make valuable products. So his mainly concerns are how to solve pains like legacy code, slow tests and communication conflicts in team members.

Types and Ruby Programming Language

Types have been a big interest for Rubyists for more than ten years. Even before Ruby3, some researchers have tried to type check Ruby programs. All of them had failed. No one in the world has successfully implemented practical type checker for Ruby programs yet.

Why is it difficult? How have we tried? What do we want exactly? Can we find any solution?

Soutaro Matsumoto

Soutaro is a software engineer working for SideCI, a code review automation service. He is interested in program analysis including type systems and develops some tools for Ruby and other web languages.

Rubyik's Cube

The Rubik's Cube is one of the world's most recognizable puzzles. Knowing how to solve a scrambled cube can almost be called a badge of honor. While there are a multitude of books, articles, and apps on how to solve a cube as a human, what does it take to have a computer solve the problem? This talk will dive into exactly that question. We'll start with an overview of Rubik's Cube algorithms, move onto the logistics of implementing these algorithms, and finish up with some real examples of using Ruby to solve a Rubik's Cube!

Stafford Brunk

Stafford Brunk is a full-stack software engineer who loves to build and try new things. He loves to take on new hobbies and learn all he can in the process. He currently works at Guild Education in Denver, CO where he helps bring the idea of Education as a Benefit to companies across the US.

LLVM-based JIT compiler for MRI

RubyKaigi

JIT compiler is considered a promising approach to achieve Ruby 3x3 goal these days. But the direction of its implementation is not fixed yet. What will be the ideal approach to achieve that goal?

In this talk, seeing my experiment to implement LLVM-based JIT compiler, you'll know how native code can be compiled from YARV ISeq, what makes it fast in LLVM, what are the difficulties underlying in it and how to solve them. I hope a discussion in this talk will help Ruby 3 to be great.

Takashi Kokubun

A Ruby committer working at Treasure Data, who is maintaining ERB, Haml and Hamlit.

View Slides

Rub[berDuck]yConf, I :mustache: you a question

I :mustache: you a question.

That's what I send via Slack to folks I'm reaching out to when I'm stuck. Over these first few years of my career, the reach outs are fewer and the problems more specific and/or challenging. Now? I often get that inquiry in a DM. What I'm discovering more and more: That whole rubber duck thing is no joke—moreover, it's often the unofficial mentoring of our industry. What do our own questions teach us? What do they teach others? How can you be a great rubber duck? Beyond that moment, what can the rubber duck do for your career--the easy way?

Tara Scherner de la Fuente

Tara is a Ruby/Rails developer at Allovue. She has had other 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.

View Slides

JRuby: What Why How ... Do it Now!

Do you know JRuby? Built on the JVM platform, JRuby has been actively developed for over 17 years. But why would you choose JRuby? What benefits does it offer?

In this talk, we will introduce you to the wonderful world of JRuby. After basic setup, we'll show how JRuby's concurrency model and GC can help boost performance. We'll walk through deploying and scaling apps and services on JRuby. We'll demonstrate JRuby's powerful integration with other JVM languages. And we'll talk about how to start migrating to or building new apps on JRuby. Join us and learn what JRuby can do for you!

Thomas E Enebo

Thomas Enebo is co-lead of the JRuby project and an employee of Red Hat. He has been a practitioner of Java since the heady days of the HotJava browser, and he has been happily using Ruby since 2001. When Thomas is not working he enjoys running, anime, and drinking a decent IPA.

Charles Oliver Nutter

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

Writing Inclusively about Technology Topics

Human Factors

Whether you're writing documentation, a talk for a technical conference, or a blog post on your work, identity can impact how your audience perceives and uses both written material and code repositories. If you want your work to be accessible to a wide audience, you need to write about it in an inclusive way. This talk will give you hands-on examples and resources to do just that!

Thursday Bram

Thursday Bram is the editor of The Responsible Communication Style Guide. She enjoys writing about programming, obscure cryptocurrencies, graphing calculators, and feminist technology. Thursday lives in Portland, OR, where she is managed by two cats.

Deterministic Solutions to Intermittent Failures

Testing

Monday mornings are bad when the coffee runs out, but they’re even worse when all of your impossible to reproduce, “flaky” tests decide to detonate at the same time.

Join us to learn a systematic, proven workflow for expertly debugging any test failure including consistent, order-related, and non-deterministic failures. We’ll discuss the importance of fixing intermittent failures before they reach critical mass and why you should eradicate the term “flaky tests” from your vocabulary.

Don’t wait for an emergency to prioritize fixing the ticking time bomb of intermittent test failure.

Tim Mertens

Tim has been working in software testing and development for 10 years. As Test Engineering Manager at Avant, he spent the last three years keeping the thousands of tests supporting Avant’s software fast and reliable. He develops innovative solutions for complex testing problems and educates developers on how to write better tests. When he’s not felling trees with his testing prowess, Tim enjoys camping and biking, and sometimes both at the same time.

Reimagining 2D graphics and game development with Ruby

Ruby on the Fringe

Playing games and interacting with graphics, media, and devices is fun, but programming them rarely is. Even the simplest things can seem overwhelmingly complex and unnecessarily difficult, but it doesn't have to be that way! Let's explore how Ruby can help us design a more natural and expressive experience by leveraging MRI, mruby, and Opal, opening up possibilities natively and on the web. We'll poke under the hood of a cross-platform 2D engine designed to be scripted with Ruby. Many opportunities lie ahead in game development, education, and creative coding, so let's seize them — join us!

Tom Black

Tom Black is a public technologist, product strategist, and developer. He is the author of Ruby 2D, a gem to make cross-platform 2D applications in Ruby, an other open source tools for graphics and game development. Learn more about his work at blacktm.com.

Get Off the Tightrope

Do you feel stressed when you’re trying to hold a big problem in your head? Do you get frustrated when someone interrupts you and you have to start all over again? Those emotions are inevitable if you’re in the common habit of treating each programming task as a long, precarious, all-or-nothing tightrope walk. But it doesn’t have to be that way! In this talk I’ll explain why the tightrope walk is so harmful and show you some practical techniques for avoiding it.

Tom Stuart

Tom is a computer scientist and programmer. He’s the CTO of FutureLearn, an online learning company.

He has lectured on optimising compilers at the University of Cambridge and written about technology for the Guardian. He co-organises the Ruby Manor conference, the London Ruby User Group and London Computation Club. His book, “Understanding Computation”, was published by O’Reilly in 2013.

How I Learned to Stop Worrying and Love Unit Testing

Testing

We all know that testing is important. But it's also hard to get right. We'll talk about how to write effective tests that not only protect against defects in our code, but encourage us to write better quality code to begin with. You'll leave this talk with ideas on the philosophies that should inform your tests, and a good idea of what makes a good test suite.

Valerie Woolard Srinivasan

Valerie is a software engineer at Panoply, where she builds tools for podcasters in Ruby on Rails, and a lead for Women Who Code DC. She is always happy to exchange podcast recommendations, vegetarian recipes, and running routes. She lives in DC with her husband, who is also her best editor and advocate.

View Slides

make mruby more portable: Why and How

Physical computing is very fascinating and fun, but there are also difficulties that were not found in normal Ruby programming. One of the issues is its low portability. Unlike PC, some computer boards that directly uses the devices use only small microcomputer whose memory is less than 1 MB. So most of the applications work only on specific boards. If we found an interesting project, we could not try it unless I had a target board. To solve it, I propose a plan of mruby platform, consisting of a group of mrbgems that absorb incompatibilities. I talk about the project and current progress.

Yurie Yamane

Team yamanekko: Team Yamanekko is a developer group of Yurie Yamane and Masayoshi Takahashi. We are using mruby for micro controllers, with the slogan "tanoshii mruby(mruby for fun)".

Yurie Yamane: She is a programmer who is interested in embedded systems. She is a member of TOPPERS Project.

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.

Esoteric, Obfuscated, Artistic Programming in Ruby

RubyKaigi

Ruby has a rich and flexible syntax. It allows us to write not only an easy-to-read program, but also an "hard-to-read" one. This talk will show its unlimited power. We present and demonstrate some esoteric, obfuscated, and even artistic programs that we have ever created, including a program that contains a spinning globe, a robust program that can have any single character removed and still works, a program that consists only of alphabetical letters, and so on. We will also review the implementation techniques.

Yusuke Endoh

~~~~ 'A MRI committer. He is an advocate of "transcendental programming" that creates a useless program like this bio :-)'.sub(?)){eval =%q{puts"'#$`-)'.sub(?)){eval _=%q{#{}}}"}} ~~~~

View Slides

RubyCard: HyperCard, in Ruby

Ruby on the Fringe

HyperCard was a visionary application that gave users the ability to create, share, and browse text content years before the Internet became commonplace. We will discuss its key features and explore recreating them in our own Ruby desktop app: RubyCard.

Zachary Schroeder

Zach enjoys writing Ruby code, watching videos about old computers and software, and messing with cassette tapes.