It's 12:04 pm on a Saturday, and I'm sitting in a sleepy cafe in Asheville, North Carolina—the perfect place to reflect on the past few days of thoughtful presentations, engaging conversations, and delicious meals with my new and old friends at Blue Ridge Ruby.
Blue Ridge Ruby is a two-day single-track conference in Asheville, North Carolina. Asheville is nestled in the Blue Ridge Mountains at the confluence of the Swannanoa and the French Broad rivers, where you can take in the local art scene at the River Arts District, hike in the surrounding mountains, settle down at a local cafe, or enjoy the many bars, concert venues, and other nightlife attractions. Asheville is a town where fireworks erupt at the baseball field on Friday night, and you can grab a slice of pizza with friends after last call.
Hungry caterpillars, career transitions, and more
The conference kicked off on Thursday with Daniel Colson, a Senior Software Engineer on the Ruby Architecture team at GitHub. In his talk, The Very Hungry Transaction, Daniel told the story of Cat the Caterpillar's quest to build BugHub, the first grocery delivery service for bugs. Cat's order fulfillment code grows increasingly complex inside a database transaction, leading to deadlocks, timeouts, and data inconsistencies. Daniel is a former music professor and classical composer, and right from the start, I knew this was someone who could teach. He artfully distilled a complex topic into a delightful and flowing narrative that was easy to follow. It was almost like music.
Next up was Brian Childress, who talked to us about the value of keeping our software systems simple and maintainable by considering the "why" of our technology choices. Do you really need that shiny new database, programming language, or framework? Or are the predictable but "boring" options often a better choice? Brian suggested that when adopting new technologies, you should use the Rule of One—to change one thing at a time. Of course, software engineering is more of a human challenge than a technical one, and our choices are just as important when scaling teams. Consistent documentation, onboarding, tooling, and practices are essential when collaborating on monolithic applications. The goal should be for the code to look like it was written by a single developer, even if it was written by 100.
After a short break, Craig Buchek presented a topic near and dear to my heart: how to handle nil
in Ruby! Craig explored the origins of null references and different approaches and patterns to deal with nil
in unexpected places. As a "Stringly typed" language, it's important to write resilient Ruby code when dealing with unknown data—or don't... as we say at Honeybadger, "nil pays the bills." 🤠
John Paul Ashenfelter then took us down memory lane with his talk, "My Rails App is Old Enough to Drink: Over Two Decades with One App." John's talk was a goldmine of Ruby nostalgia and a tribute to those who helped pave the way for the tooling we enjoy in modern web development with Ruby and Rails. And also throwbacks. So. Many. Throwbacks.
Lauren Auchter's career path took her from public education to edtech as an educator at science museums before she transitioned to Ruby. In her talk "Navigating Career Transitions — Stop Second Guessing and Let Go of Guilt," she shared her journey of becoming a Ruby developer and advice on navigating career changes emotionally and strategically. I appreciated Lauren's emphasis on work-life balance: "Pursue energy, not passion."
Max VelDink wrapped up the first day of talks with an exercise in refactoring—with a throwback to Sandi Metz and Katrina Owen. It's a great feeling to refactor some messy legacy code, but sometimes, the practice of refactoring can help us learn how to avoid writing brittle code in the first place. Max's talk began and concluded with an ASMR soundtrack of typing on a keyboard and computer beeps and bops—a sound almost as satisfying as successfully refactoring your code.
The day concluded with an afterparty at Little Jumbo, an award-winning Asheville cocktail bar owned by a fellow Rubyist, Jay Sanders. Jay also built the ticketing app that the Blue Ridge Ruby organizers used to manage ticket sales!
Writing for humans and computers, the science of happiness, and the future of AI (and us)
On Friday morning, Travis Turner took us on a winding journey into his world of writing (for humans, not computers). Travis is editor in chief at Evil Martians, producing and editing the well-known Martian Chronicles. I could relate as a Ruby developer and editor of the Honeybadger Developer Blog! Packed with quirky wit and humor ("Bashar in VR" — you'll have to watch the video), Travis' writing and editing advice was serious business. It's clear how much the folks of Evil Martians care about sharing what they learn as a team—their writing is "a labor of interest." We should all write more.
In "Glimpses of Humanity: My Game-Building AI Pair," Louis Antonopoulos shared his touching experience while building a text-based adventure game with his AI pair programming partner, Atheniel. No matter our personal feelings about LLMs, everyone appreciated the humanity that Louis brought to his perspective. And no, the talk itself wasn't AI-generated; Louis wanted to save that experience for himself and his fellow conference attendees.
Next up, Rachael Wright-Munn shared her experience adding a new validator to Rails and walked through how to create your own custom validator. I especially appreciated Rachael's deep dive into Rails internals; for example, Rails defines validators (except for a few special cases) in ActiveModel
, not ActiveRecord
. That's why validators don't protect your database—you need database constraints.
Blue Ridge Ruby volunteer and thoughtbotter Daniel Nolan organized the lightning talks this year and kicked off the talks with one of his own: a live demo of a ChatGPT-powered app he built to help him maintain his garden. Christopher Hagmann entertained us with Jurassic Park quotes and examples of what Ruby code not to write. Rafael Floresta shared a testing technique from functional programming called property-based testing—a topic I hadn't heard about in a while! Michael King talked about how to safely use Thread
for concurrency, with a neat benchmark at the end. All of the speakers did a great job.
Following the lightning talks, Dustin Haefele-Tschanz shared the latest research on happiness from positive psychology. My knowledge of this subject was about ten years old; it was enlightening to learn about the latest research. For example, money can increase happiness, even above a certain threshold. Studies still agree that positive social experiences make us happy, so maybe you should plan a trip to an upcoming Ruby conference...
A Rubyist's guide to existential dread
While he didn't organize the conference this year, it was only fitting that Blue Ridge Ruby founder Jeremy Smith gave the final talk. Jeremy addressed our collective fears around AI, tech layoffs, and the uncertainty of change and offered some ideas for navigating the future—whatever it may bring—while highlighting the individuals working to build the Ruby community.
Echoing Irina Nazarova's 2024 RailsConf keynote, Jeremy highlighted the numerous opportunities available to us to build the future we want for Ruby and the industry—if we all put in the work. You should absolutely watch Jeremy's talk when the video is released, but for now, these are the opportunities he suggested:
- Someone should help connect local meetups to devs looking for speaking opportunities.
- Someone should make a Ruby conference geared toward developers with kids.
- Someone should provide training and support for experienced devs transitioning from other languages.
- Someone should catalog tools in the Laravel community and build the missing ones for Rails.
- Someone should find a way to connect outdated Rails apps to available freelancers who can maintain and upgrade them.
- Someone should write an in-depth cookbook for real-world web scraping and HTML parsing using Nokogiri.
- Someone should host a competition to build the same web app in multiple languages and stacks with commentary and judging.
- Someone should make a YouTube show where guests bring a favorite Ruby library and do a guided walkthrough.
- Someone should start a group to support indie Rubyists learning marketing and sales.
The history of Confreaks
The most heartfelt moment (of many) at Blue Ridge Ruby came when Confreaks owner/CEO Cindy Backman—who recorded all the talks—gave an unexpected lightning talk about her experience as a small business owner in the Ruby community. Confreaks began as a side business by Cindy's brother and longtime Rubyist, Coby Randquist. As Coby's responsibilities multiplied, Cindy helped take over the day-to-day work in the business, eventually purchasing Confreaks in 2019—right before the COVID-19 pandemic. You can imagine what happened next: her business dried up as conferences canceled events or moved online.
Cindy's story is a perfect example of why we need to support each other and work to build a resilient Ruby community and ecosystem. While the large companies building with Rails get most of the attention, numerous small businesses depend on Ruby for their livelihoods. From freelancers, solo founders, and small teams to the junior developers entering the industry to the services (like Confreaks) who are here because they love the community, we need to support each other. It was never the technology at stake—it was always the people.
Ruby needs you! (yes, you 🫵)
So, how can you help Cindy and others like her? First, attend local events! I'll say that again. Attend. Local. Events. If you've never experienced it, the Ruby community is something special. Whether you're brand new to Ruby or a seasoned professional, you belong with us.
If you don't have a local event (or you can't get enough Ruby!), consider planning a trip to a regional conference like Blue Ridge Ruby, Madison+ Ruby, Rocky Mountain Ruby, or one of the other Ruby conferences reappearing worldwide. There's also RubyConf in the US, RubyCentral's flagship conference (I highly recommend attending at least once in your career).
Even if you can't attend an event, there are many ways to get involved. Here are a few more ideas:
- Pick one of Jeremy's opportunities and build it
- Support the tools and services that show up for the community
- Publicize your work and the work of others (Ruby needs more promotors and influencers!)
- Contribute to open source
- Volunteer at local events
- Become a Ruby Central sustaining member
- Ask your company to become a Ruby Central sustaining member and even sponsor a Ruby conference!
- Start a meetup or conference of your own. Get in touch with RubyCentral and ask how they can support you, and hire Confreaks to record the talks.
Folks, that's a wrap for Blue Ridge Ruby, but there's work to do. Let's make 2024 the year that Ruby shows the world what we're made of.