RailsConf 2019

Closing Keynote

Closing Keynote

by Aaron Patterson

In the closing keynote at RailsConf 2019, Aaron Patterson humorously navigates a myriad of topics centered around Ruby and Rails, framing his talk through the lens of community, personal anecdotes, and technical insights while emphasizing the importance of context in programming and performance optimization.

Key Points Discussed:

  • Introduction and Humor: Aaron opens with a light-hearted prank on the audience, mentioning an audience member's pet turtle and engaging them in a playful way. He shares his excitement for future RailsConf events in Seattle, his hometown.
  • Personal Journey with Ruby and Rails: Aaron reflects on his long-standing journey within the Ruby community, beginning from when he discovered Ruby in 2005, transitioning from Java programming. He expresses gratitude towards the Ruby community for enabling him to pursue his passion as a software engineer.
  • Experience with GitHub: He discusses his experience at GitHub post-acquisition, humorously noting changes such as a new desktop background and how his relationship with the community remains unchanged despite corporate shifts.
  • Performance Tips: Aaron shifts to practical, technical advice, sharing several performance optimization tips for Rails applications, including:
    • Omitting parentheses for speed.
    • Using single quotes over double quotes for improved performance.
    • Noting changes in Rails 6 that provide better visibility into template memory usage and allocation counts.
  • Template Rendering Details: He elaborates on the rendering process within Rails, detailing how templates are compiled, executed, and the overhead associated with cache key calculations. He contrasts how cached and non-cached templates perform under load.
  • Anecdotes: Throughout the talk, Aaron shares humorous personal stories, including a mishap while writing a Ruby program to purchase movie tickets, emphasizing lessons learned through both mistakes and successes.
  • Community Acknowledgment: He acknowledges the attendees and the broader Ruby community for their role in sustaining Ruby and Rails development, attributing his success to the collective contributions of others.
  • Concluding Insights: Aaron ends by stressing the value of writing context-free and consistent code, advocating for developer practices that emphasize clarity and performance measurement over assumption.

Main Takeaways:

  • The strength of the Ruby community plays a significant role in individual success within it.
  • Performance improvements in Rails can often be achieved by understanding the underlying mechanics of template rendering
  • Engaging with the community and maintaining an emphasis on clear, consistent coding practices can enhance both personal satisfaction and overall project performance.
00:00:20.869 Hi! Oh hi! Hey, thank you, Marty! I'm so excited that Ruby Central has announced.
00:00:27.599 RailsConf is going to be held in Seattle next year, my hometown, so I don't have to drive the three hours to Portland.
00:00:37.500 Alright, hold on a second. Wyatt, my computer fell asleep.
00:00:43.379 Okay, there we go. So we have... One thing I need to take care of first.
00:00:50.610 There's someone in the audience named Devin who brought his daughter's turtle, and he asked me to take a photo of it in front of all of you.
00:01:09.509 So I'm going to do that now. But I would like you all to clap for the turtle because this is the turtle's biggest audience ever.
00:01:27.409 The next thing is... Oh crap, hold on! I'm using up all my time.
00:01:34.159 Hold on, I gotta get a cell. I'm trying to remember all of these.
00:01:40.789 Okay, okay, now it's my turn! Yay! There's also a bingo card thing going around that I believe is unauthorized.
00:02:02.770 But I'm going to read out a few of them here to see if we can get a bingo going! Let's see..<common backgrounds>.
00:02:10.849 What an ungrateful bunch! I was born into the software community through the grace of open source, a land where milk and honey flow eternal.
00:02:19.370 Any bingos yet? No? Okay! Alright, well I'll continue. I built some more of these into my talk.
00:02:27.799 So hopefully you can get some—thank you for laughing, Evan! I can hear you laughing.
00:02:35.750 Every year, it seems like David gives the very first keynote at RailsConf, and I end up giving the last keynote.
00:02:42.950 Typically, my strategy for this talk is to get on stage and make fun of David and his Danish for Flint.
00:02:55.040 But the problem is, I've been thinking back to myself: I do this every single year, but the issue is it doesn't scale.
00:03:10.750 Any bingos yet? Ah, but I wanted to declare that this year is a jubilee year. This year, I will not make fun of David in my talk.
00:03:19.489 So, I'd like you to forget all the things that I am not doing. Boy, okay?
00:03:25.579 So, this year I decided to do something different. I decided to put all of my thoughts down on paper.
00:03:39.650 Instead of standing around here rambling at you, I thought I'd try to do something a bit more thought-provoking. So, I wrote a script and I'm going to read it to you. Hold on.
00:04:02.390 Shebang, slash user, slash bin, slash Ruby.
00:04:15.170 Def fib parentheses n parentheses. If n is less than three, return one, else return fib open parentheses n minus one close parentheses plus fib open parentheses n minus two.
00:04:21.729 Yes, that was my Ruby script! I actually make fun of David a lot on stage, but I really like him and admire him.
00:04:39.070 The other day, I met with him at the speaker's dinner before the conference.
00:04:41.330 I even got him to sign a copy of his book for me, and this is me getting a signature. I was very excited!
00:04:46.370 Alright, let's actually start the presentation now. I am calling this talk: 'But at what cost?' Thank you, Eileen; she gave me the title.
00:05:02.390 Yes, my name is Aaron Patterson. I'm really, really happy to be here in Minneapolis to give this talk to all of you.
00:05:09.080 You could say that I'm very happy to be presenting to you live from here. I know there are like six people in the audience that get this joke, but they're very important.
00:05:30.139 Anyway, I have a cat! His name is Gorbachev Gorbachev Puff-Puff Thunderhorse the Third.
00:06:00.770 But it means he can't go outside; otherwise, he'll probably die since there's no way he can defend himself.
00:06:09.080 This is my other cat, her name is Ono. She likes to stick her tongue out a lot.
00:06:30.139 This is another photo of her; she sleeps next to me while I’m working.
00:06:58.270 And I was like, how much is she sleeping? How deep is this sleep?
00:07:04.840 So, honestly, it makes me a bit mad because I sit there working and she's just sleeping right next to me.
00:07:17.190 I'm like, why am I working so hard?
00:07:39.960 Anyway, I brought stickers of my cat, both of them!
00:07:46.090 So if you would like a sticker of my cat, come say hello to me afterwards. I like to bring stickers because I know that people are shy and don’t know what to say to me.
00:08:06.090 So you can ask for a sticker if you don't know what to say.
00:08:20.450 Also, I am into Ruby programming. I also like taking selfies, and I’m a member of the Puget Sound Mycological Society.
00:08:39.710 Yes, I am a mushroom hunter; it is true!
00:08:57.889 So anyway, my name online is Tenderlove.
00:09:06.110 If you don’t recognize me in person, this is my avatar. This is what I look like online.
00:09:24.860 I was looking through my Twitter bio for my advertisement information, and one of the sections is: 'What are you known for?'
00:09:51.460 I was very amused at what I'm known for. I’m known for software development and other things.
00:10:10.290 I feel like 'other' maybe means puns, and if that’s the case, then I’ve really nailed the 'other' category.
00:10:21.090 But I'm not totally sure.
00:10:37.199 Speaking of Twitter, I want to tell you a story about how I accidentally made Twitter completely useless for myself.
00:10:49.880 I use Twitter mostly to tell jokes online. I typically tweet tech stuff occasionally, but mostly it's just jokes.
00:11:01.310 But Twitter can only get users to have one of two feelings: either anger or facepalming.
00:11:10.860 I typically like to generate facepalms; that makes me really happy. I tell puns online and like to imagine someone reading it.
00:11:26.830 They just go, 'Ugh...' and I just go, 'Yes!'
00:11:32.350 People started responding to my puns by just saying my name: 'Aaron.' So every time I tweet a pun, this is all of my mentions.
00:11:52.250 It's gotten to the point where if my friends tweet a pun, people will respond to them with just my name.
00:12:05.630 One speaker here made a bot that responds to a certain percentage of my tweets just with 'Aaron.'