RubyConf Denver

November 8-10, 2021

Program

The largest official gathering, RubyConf brings together top talent, companies, and project representatives from around the world. Learn and build with the best in sessions, workshops, keynotes and other events.

Workshops

Intentional Team Building

How do you build effective teams? What are the determining factors? In this collaborative workshop we will explore how to identify the values underpinning your team dynamics and explore techniques to cultivate effective teams built around intentional values.

Alex Robinson

Alex is the Director of Backend Engineering at the Turing School of Software and Design. Before joining Turing in 2019, Alex gained experience as both a mechanical engineer and software developer, working with technical teams in a variety of settings. Outside of work, Alex enjoys spending time with her family, hiking, and eating great food.

Will Mitchell

Will is the Director of Front End Engineering at the Turing School of Software and Design. After attending an early iteration of Galvanize’s gSchool program in 2013, Will started a career in software, working as a Rails engineer, iOS developer, JavaScript developer and eventual team lead. Will has been involved with several start-ups in the Boulder/Denver area, and joined Turing as an instructor in 2017. Will currently lives in Denver with his wife Mary, and their dog Apollo.

Soup to Nuts: Build a video game using Ruby!

Have you ever dreamed of building a video game? Well here’s your chance of making that dream come true. During this workshop, we’ll build a 2D platformer like Super Mario Brothers, and A top down RPG like Legend of Zelda: A Link to the Past.

  • No previous game dev experience is required.
  • If you’re new to Ruby, that’s okay too. Building games is a fantastic way to learn a language.
  • You’ll be given a free, unrestricted commercial license of DragonRuby Game Toolkit (this is the game engine we’ll be using during the workshop).

Amir Rajan

Amir Rajan is an indie game dev and compiler hacker who’s constantly trying to improve in his craft. He’s a jack of all trades, being comfortable with a number of platforms and languages. Amir is also the creator of A Dark Room (for iOS, Android, and Nintendo Switch). This RPG took #1 spot in the App Store, #2 spot on Google Play, and ranked in the top 50 RPGs on the Nintendo Switch.

Tackling Technical Debt: An Analytical Approach

Getting out of tech debt can feel like a Sisyphean task. After weeks of work, the success case is for the app to work the same as it used to. Organizations often declare code bankruptcy and rewrite working systems from scratch. How do we end up here? And how do we alleviate, or even better, prevent such a situation?

In this workshop, you will learn how to measure tech debt and address the areas of highest need first. You’ll learn to identify high leverage code changes and separate those from renovations. You’ll also learn about the skills tech teams can use to prevent and reduce tech debt.

Chelsea Troy

Chelsea writes code for Mozilla. She teaches in the Master's Program in Computer Science at the University of Chicago. She works with clients on data-intensive mobile and web apps: clients have included NASA partner researchers, the Zooniverse community science platform, and the Penn State Cancer Institute. Chelsea also writes a blog about tech at chelseatroy.com, and she tweets semi-profusely at @HeyChelseaTroy.

The blog series: https://chelseatroy.com/2021/01/14/quantifying-technical-debt/

Ruby Performance

How to use flamegraphs to find performance problems

Slow Ruby code can be a puzzle, but it doesn’t have to be that way. In this workshop you will see how fun it can be to use flamegraphs to find performance problems. You’ll get the most out of this session if you know you have slow areas in your Ruby application, and would like to learn how to find the code responsible.

Jade Dickinson

Jade Dickinson is a software engineer from London. She studied biology, then worked in science journal publishing while studying computer science. In her spare time, she likes walking her Shiba Inu, climbing and cooking.

Early Career

A Gentle Introduction to Docker for Rubyists

Have you heard about how great Docker supposedly is, but you're not sure exactly what all the fuss is about, or even what Docker is or why people use it? Or maybe you understand what Docker is but you've never worked with it before. In this workshop, you'll learn exactly what Docker is and why you'd want to use it, and you'll come away with your own fully Dockerized Ruby application.

Jason Swett

Jason Swett is the author of The Complete Guide to Rails Testing and the host of the Rails with Jason podcast. He lives in Sand Lake, Michigan.

Clean RSpec: A Workshop on Ruby Testing Craftsmanship

Testing has been a feature of the Ruby community for a long time. Why then are our spec files often so incomprehensible? In this workshop, I will share some ground rules for writing maintainable tests that will ensure that new teammates along with future-you can understand your test suite. We will use the RSpec testing framework to introduce several testing code-smells. For each smell, I will provide a demonstration on how to refactor the test along with time to practice for workshop participants. This workshop is geared towards anyone looking to hone their Ruby testing craft.

Jesse Spevack

I am a staff engineer at Ibotta, a cash back for shopping mobile app. Before getting into the tech world, I worked in public K-12 education for 11 years. I transitioned from education into technology by way of the Turing School of Software Design, a Denver based code school with a Ruby-centric curriculum.

Functional Ruby

Using Monads for elegant error handling

Your app blows up in production. It's an outage and you're under pressure. You read the code. "How does this work? Why is this exception being caught here?" And so begins a long, stressful journey to understand how to fix your code.

Rescuing exceptions is normalised in Ruby, but it's a clumsy way of reacting to error conditions and causes your code to be difficult to reason about.

You'll refactor an existing app to use a functional style and see first hand how easy monads are to use and how they can make your code incredibly clean and expressive.

John Gallagher

John is a Senior Engineer at Simply Business and runs a startup. He's obsessed with functional programming in Ruby, delivering massive value to users and he loves teaching all things programming.

"mruby/c" - Ruby for a small microcontroller

mruby/c is a compact implementation of mruby. In this workshop, I'm planning to prepare a mruby/c ready microcontroller board and have hands-on programming. Start from a very simple LED-blinking program, and finally try to implement sensor handling and multi-programming by Ruby language.

Kazuaki Tanaka

Associate professor, Kyushu Institute of Technology Ph.D. in computer science

mruby and mruby/c committer

Director of Ruby Association, Director of NPO mruby forum

Complex Sociotechnical Systems

Fundamentals of Joint Cognitive Systems

If we take the wayback machine to the time before there was Resilience Engineering, we find Cognitive Systems Engineering. Central to CSE is the concept of Joint Cognitive Systems - human/machine teaming based on principles of shared cognitive efforts, not simply dividing the work to be done across humans and machines. This thought-provoking and interactive workshop will give you a whole new lens to think about your work and the problems you face working on and with highly automated systems using a combination of lecture, discussion and hands on exercises.

Laura Maguire, PhD

Laura is a Cognitive Systems Engineer & researcher producing human-centered design guidance at Jeli.io. Her doctoral work under Dr. David Woods focused on distributed incident response practices in DevOps teams responsible for critical digital services. She was a researcher with the SNAFU Catchers Consortium from 2017-2020. Laura has a Master’s degree in Human Factors & Systems Safety and a PhD in Integrated Systems Engineering.

John Allspaw

John Allspaw has worked in software systems engineering and operations for over twenty years in many different environments. John’s publications include the books The Art of Capacity Planning (2009) and Web Operations (2010) as well as the forward to “The DevOps Handbook.” His 2009 Velocity talk with Paul Hammond, “10+ Deploys Per Day: Dev and Ops Cooperation” helped start the DevOps movement. John served as CTO at Etsy, and holds an MSc in Human Factors and Systems Safety from Lund University.

Mutants in the loop / Mutation Testing for code review.

Workshop to teach meaningful semantic code coverage in action, via the mutant tool.

The workshop attendees will be walked through applied mutation testing of increasing complexity code:

  • Mini presentation (5min).
  • Simple ~4 line ruby functions returning bools, authorization methods.
  • Data parsing (JSON to domain objects)
  • Database writes from domain objects.

While being put in the position of a developer being tasked to either write code for existing tests, or write code and tests, all guarded by the mutation testing engine.

Markus Schirp

Master of Disaster. Development tools maker/user. Commercial mutation testing tool author. Dynlang Exorcist. Expat German. Creative consistent typos.

Early Career

All comments must be haiku! Custom linting with RuboCop

RuboCop is great for keeping code quality high by enforcing community-driven Ruby standards in our codebases. But RuboCop can also be easily customized to enforce standards that are unique to our codebase, automatically checking for the things that are most important to us.

In this workshop we'll customize RuboCop to enforce our most important style rule: all comments must be in the form of a haiku! Along the way we'll learn:

  • the basics of linting and RuboCop itself
  • a little about abstract syntax trees
  • how to build powerful custom tooling to enforce almost any standard we can think of!

Scott Moore

I'm a software engineer with experience in full-stack web development, management, developer tooling, and test automation. I like teaching and I like automated code quality tooling.

Complex Sociotechnical Systems

Run your first game day

Want to get better and incident response without waiting for actual incidents? Learn how to use table top exercises to practice your incident response framework, develop common ground, and improve communication during an incident.

You'll learn how to run table top game days, including how to set them up, how to design scenarios and how to encourage participation, all with techniques supported by real word experience and supported by research.

Thai Wood

Thai helps teams build better systems and improve their ability to effectively respond to incidents. A former EMT, he applies his experience managing emergency situations to the software industry. He writes about resilience engineering at ResilienceRoundup.com