Some thoughts and feelings on RubyConf 2017

It’s the day after RubyConf 2017, and I’m still a bit raw and porous around the edges. I thought I’d write a few thoughts before I revert to a steady state. Forewarning: this is going to be a lot more about personal feelings than about technology.

First, though, I need to give some thanks. I almost didn’t attend RubyConf. I don’t usually attend conferences I’m not speaking at, simply because I can’t afford to. Going this year (my first time strictly as an attendee) was a late decision, and it was only possible because of the generous support of a number of benefactors. (I will un-redact their names as I receive their permission to credit them publicly)

First, thank you to Jeremy Hinegardner, who donated the frequent flyer miles that took me from Knoxville to New Orleans.

Thank you to Marty Haught for gifting a conference ticket.

Thank you to all of the people who, after I threw a flash sale to cover my hotel expenses, demanded to make a simple donation because they already owned all of my stuff. [pending permission]

And finally, thank you to everyone who took advantage of that sale!

Conferences in general are place-times of high feelings for me, and it’s safe to say RubyConf 2017 was no exception.

I’m going to talk about some of those feelings now. Partly because emotional transparency is important to being myself. Partly because I guess I’m a public figure in this community, and it’s important to me not to contribute to the “self-assured badass” persona that can be so intimidating when thinking about public figures.

I went with the express intent of talking to as many people as possible. I deliberately attended very few of the talks (speakers: I’m sorry! I will catch up on your videos when they come out). I made many new friends, caught up with existing friendships, and deepened some acquaintanceships into friendship.

Deliberate socialization is something learned for me. Like many programmers I know, I’m introverted. One of the reasons I started giving talks at conferences was as a hack to avoid having to initiate conversation. It gave people a reason to come talk to me, and an initial topic to get the conversation started.

These days, I play Ruby conferences on the easiest mode there is. All I need to do is stand still in the hall for a few minutes, and a conversation naturally materializes. This is a privilege, and one I appreciate very much.

I still feel I have conversational dysfunctions. For years I’ve noted that while I’m talking to someone, I’ll keep being distracted by passers-by, wondering: am I missing out on another conversation I could be having? Am I over-monopolizing this person’s time?

This year, I tried to keep two thoughts at the top of my mind at all times. First: the conversation I am having now is the right one, with the right person. And second: what would Jim Weirich do? Everyone who met Jim at a conference remembers how he would give whoever he was talking to his full, undivided, joyful attention. I have been trying to be the Jim I want to see in the world.

I’ve never before spent such a length of time with the sole purpose of talking to people for every waking hour. It was a little overwhelming.

In fact, it was a lot overwhelming. Part of being me at a Ruby conference is having someone come up to me every few minutes to thank me for things that I’ve done. Sometimes, people are actually nervous(!) to meet me. To be clear: I welcome this. I want to talk to you. Yes, you. Please?

But it’s the source of some big feelings. Gratefulness and warmth, of course. But also inadequacy. I honestly don’t understand all the thanks and kindness I receive. I don’t feel that I have done very much at all. Of the things I have accomplished, I feel a lot of angst over how many have been for-profit, out of a need to support myself and my family, instead of free and open to everyone in this community that has given me so much.

Also: when you say to me “thank you for what you have done”, what I hear is “you must do better than ever to be worthy of this praise”. To be clear, this is my problem. It is not your fault.

Thursday night I cried myself to sleep in my hotel room, in part because I can’t see how I can ever be worthy of all the kind things people had said to me. I don’t know how to live up to what people think of me.

I know that I probably take community feedback more seriously or more personally than other public figures. Again, this is my problem. I don’t know if I want to change this about myself, though.

I’ve written before about how I am uncomfortable with the over-use of the term “passion” in the software world. It is true that I am not passionate about Ruby, or programming in general. But if passions are the pursuits and causes that you feel strongly enough about to shed tears, perhaps I am passionate about this community.

In one of the talks that I did catch, Eileen Uchitelle talked about the importance of making open-source contributors feel emotionally safe. Later, Sandi Metz talked about how Google discovered that the sole differentiator of highly effective teams was that members felt strong psychological safety.

During one of the many, many conversations I enjoyed over the past week, something crystalized for me. In the Ruby community we like to say that “Matz is Nice and so We Are Nice” (MINASWAN). But what does it mean to be nice?

I’ve talked to a lot of programmers about how their continued pleasure in coding Ruby, even as they branch out into other languages, feels gut level and irrational. Emotional.

When I think about what makes Ruby nice, and also what makes Matz nice, the quality that springs to mind of both is that they are non-judgmental. Anyone who has spent years watching Matz interact with newbies on the Ruby mailing list knows what I’m talking about. (This may be something that happened more frequently years ago than it does now). Someone would hop into the mailing list and say “Ruby seems great, but it really needs [some feature from another language that would completely change the nature of Ruby]”. And Matz would never judge them or tell them they were wrong for wanting that feature. He would just humbly explain his own reasons for leaving it out of Ruby.

I think that what makes Ruby Ruby is that it is non-judgemental. It is multi-paradigm, for starters. It embraces the influence of many different programming languages, from Lisp to Perl to Smalltalk to Python to Eiffel.

But more than that, in its strong adherence to dynamic-ness in all of its forms, Ruby doesn’t shame programmers for doing weird stuff. Ruby is a language created in love: love for its linguistic heritage; love for the joy of coding; love for the hackers who write the code; and love for the goofy-ass shit hackers do when they feel trusted and empowered and safe from judgement.

Love and joy, trust and emotional safety: you can argue that these language values influenced the community which formed around Ruby. Or that it has attracted people who already value love and trust and safety. I don’t know which is [more] true.

But it is this environment of trust and safety that has led, I think, to a community that threw conferences featuring talks about empathy, and depression, and burnout, and activism and other squishy-but-scary topics. And that did it long before most of the rest of the software industry got up the nerve to talk about those things in public.

And it’s why I have heard from so many people: “I mostly code in $other_lang, but I come to Ruby events for the community”.

In this century, programmers will build the software that mediates relationships and that shapes humanity’s perceptions of reality. That software could be written from a place of fear and distrust, judgement and contempt. Or it could be written from a place of love and joy, trust and safety.

I am not passionate about Ruby. I am not passionate about programming. But I am passionate about this community. Not the Ruby community specifically. The community of programmers who value love and joy, trust and safety. I hope I am a net-positive contributor to that community. I hope I can be good enough to be worth all the love and joy, trust and safety this community has given to me.

Title photo credit: Alex Wheeler.


  1. Thanks for sharing. I thoroughly enjoyed this post. It helped me to share part of my coding life with my wife, better than I ever have before. She immediately thought of her latest tattoo, “Laughter, Love, and Friendship.” I certainly appreciate your willingness to contribute to this community (warts, love, and all).

  2. We have had an incredibly rough year. I was able to attend Miami and San Diego but not this year. We have had illness, fraud, and have had to face this year with an unexpected last minute move as well. Whatever the last 6 months have brought you I wish you and your family the best.
    I love what you do. I love supporting you to keep doing it.

  3. Thanks Avdi! I can relate to all of this.

    The thought crosses my mind that you (we) shouldn’t think of these things as a matter of worthiness, but of privilege. You’ve been programming and learning about how to program effectively for many years longer than a majority of us have, and your contributions to the community are shaped by all that perspective and experience, which adds a lot of value that’s largely independent of the immediate effort or cost to you to create those contributions. What can we do to make the best use of this kind of privileged position relative to others?

  4. Avdi thank you for writing this post. I certainly related to many of the points and empathized so strongly to the description of Ruby and the community I got teary-eyed. Here’s hoping your next six months are an improvement.

    1. Do you have any insight as to what we as a community could do to make meeting new people less intimidating? I’d be very curious to know.

      1. That’s a good question. A “Free Hugs” t-shirt is probably not the answer, though I’m tempted to wear one myself.

        I’ve seen someone (I know) set up with a sign that says “Pair with me,” which I thought was cool.

        Perhaps a wider audience Slack would be nice. As a speaker, I had access to one, and folks with scholars had access. But it’s easy to miss tweets (often RT’d too late) about hanging out and/or meeting someone. But maybe a wider temporary Slack community where one can declare where they’re chilling.

        It’s tough, because these conferences are often like reunions, and every time I saw Avdi, he was walking to somewhere with someone, and I didn’t want to halt progress or interrupt the conversation.

        At Abstractions in Pittsburgh awhile back, there was a “meet the speakers” thing for about an hour, and I walked in and knew I could just join a circle for chatting. That was cool–to know it was expected to join a circle with one’s must-meet folks.

        I’m not sure there’s ONE answer, but there’s gotta be better ways to meet one another. Heck, there could be an extension of the hallway track–an “I’m happy to chat with strangers” region of the hallway. I mean, I chat with ANYONE who is getting coffee with me at the same time, but I could also plant myself somewhere considered “approachable” and try to “check in” there on the regular.

        I hope we’ll toss some of these ideas around in our feedback to the conferences and ideally, while there’s still time, throw out ideas with the conference organizers before conferences start up. These are good conversations to have!

        I kind of want to have a “Physically appropriate/welcome version of a free hug” t-shirt. Or sign. 🙂 Or something.

  5. Talking to you was wonderful. Thank you for taking the time. I understand the awkwardness – I’ve put a lot of work into conversation as well. I’m not as well-known as you, but my own level of investment in the same conversational hack has been really good too 🙂

    Another theme I noticed at RubyConf: culture as kind of a free-standing entity, apart from its programming language of origin. One thing Chad Fowler didn’t say in his keynote (when you watch it) but could have: the kind of “small, replaceable software parts” architecture he favors may start in Ruby, but there’s zero reason to keep it in any specific language. It becomes its own thing. But I don’t think it’s a coincidence that it started with Ruby folks.

    In that same way, I suspect we’ll see more and more Ruby-culture diaspora. I don’t think Ruby will flame out like Smalltalk because it has a nearly evergreen business niche (Rails, prototyping, small startup-type shops.) Which gives its culture time to mature and to spin off mini-exodus after mini-exodus (Node, Go, Rust, Elixir, Crystal…) bringing Ruby culture to new places without extinguishing that original flame.

Leave a Reply

Your email address will not be published. Required fields are marked *