Humble Pi: a short story of evented failure, by Valentino Stoll


Wanting to learn more about embedded systems, I splurged on a small kit packed full of electrical components for a Raspberry Pi. With it came a tiny book of sample projects written in Python and C; and I thought, "how hard could it be to write these in Ruby?". Two years later, I stood neck-deep in a muddy pit of poorly written C while fighting my way out of a GVL mess. This is my story of failure, and the Ruby Heroes that saved the day. There will be laughs, there will be tears (mine), and there will be joyous cheers for the Ruby community.


This talk is intended for those curious and creative hearts out there. It's a story of a desire to build, a failure to implement, and the true joy that is shared when it all comes together. I set out on a journey to build a machine that helps me learn morse code. Having a need for an evented mechanism for the Raspberry Pi and coming up short, I set out on a journey to add it as a feature to an existing OSS project. My failure prompted an unexpected response from the community, and a solution arose better than I could have imagined.

  • The Origin Story: A quest to build a thing.
  • The Recipe: Navigating the current Ruby landscape for controlling the Raspberry Pi(s?).
  • Preparation: Getting the latest Ruby in the Pi
  • First Bake: Containing the filling (trapping signals) and balancing flavors (figuring out UX)
  • Getting Creative: Experimentation leads to an open Pull Request
  • Now I'm A Baker: Small wins lead to some fun small projects
  • Fire in the Kitchen: How a seemingly small challenge chased me down a rabbit hole of Ruby internals and GVL issues.
  • Heroes to the Rescue: Ruby heroes come to the rescue, revive an old OSS issue, and a four year old feature request comes to a close
  • OK, I'm No Baker, But I Can Bake: Using this new feature, I create something fun and challenge you to too.
  • The Perfect Pi: A brief look at how mRuby can be a viable option for making products


I'm an embedded systems enthusiast, and would rather write Ruby so much so that I'd spend two years poking myself in the foot with a hot iron of C. This talk is intended in part to make embedded systems more approachable, but also to make OSS contributions more approachable. The story is about making things that don't exist, pushing the boundaries of what we know, and challenging ourselves so that we may make things better for all. I'm a long time Rubyist, but embedded systems novice. This is a snapshot of my journey and the fun things I've learned and made along the way.

Edit proposal


RubyConf 2020 - Waitlisted [Edit]

Add submission