RailsConf 2014

Closing Keynote

Closing Keynote

by Aaron Patterson

In the closing keynote at RailsConf 2014, Aaron Patterson delivered an engaging and humorous presentation that explored the evolution of Rails as it celebrates its 10th anniversary. He highlighted the significant contributions of the Rails core team in addressing complex computer science problems while also sharing personal anecdotes related to his experiences in the field.

Key Points Discussed:
- Introduction and Personal Backstory: Aaron shared his role in the Rails and Ruby core teams, revealing his quirky interests and social demeanor, aiming to connect with the audience.
- Reflections on Previous Keynote: He recalled his last keynote, mentioning the awkward situations he encountered and highlighting the importance of learning from one’s mistakes.
- Rails Celebrates 10 Years: He focused on Rails’ journey and the significant milestones achieved over the last decade, contrasting its progress with how he perceived it as a child.
- Open Source Contributions: Aaron spoke about his passion for Rails and how he continuously strives to improve it for the benefit of the community and for job creation opportunities in Ruby development.
- Introduction of Adequate Record: He unveiled ‘Adequate Record,’ a fork of Active Record designed with performance improvements. Aaron discussed the rationale behind its name, focusing on humility in software naming conventions.
- Performance Metrics: He presented key performance metrics showing how Adequate Record performs in comparison to older versions of Rails, outlining its benefits, such as fewer object allocations and enhanced caching mechanisms.
- Technical Insights: Aaron shared technical details, such as how caching and static versus dynamic SQL statements can significantly impact performance. He emphasized the importance of minimizing memory usage while optimizing speed in code.
- Live Demonstration: In a lighthearted moment, he attempted a live merge of Adequate Record into the main Rails repository, showcasing real-time collaboration dynamics within the Rails community.

Conclusion and Takeaways:
- Aaron concluded that Rails 4.2 is set to be the fastest version yet, encouraging continued exploration and performance enhancements within the Rails framework. He stressed the essential balance between code complexity and performance, pushing for simplicity in code while maximizing efficiency.
- His charismatic delivery, sprinkled with humor and relatable anecdotes, highlighted the blend of technical prowess and community spirit that characterizes the Rails framework.

00:00:17.199 Our final presenter deserves more than just the title of speaker. He hardly needs an introduction. In addition to being a Rails Core team member, he is an avid beer brewer and a connoisseur of fine meats, as well as a fashion hoarder. I actually have a slip of paper that states he is here with permission from Gorby Puff; I had to ensure that was okay. With that, I'd like to welcome Aaron Patterson to the stage.
00:01:14.200 I am very excited to be here today. May I be the first to welcome you to RailsC! If you notice any typos in my slides, please let me know by tweeting at me. I want to start my talk with a couple of quotes. The first one is, "My mom has the Ferrari of sewing machines," from Kate Hudson. We were talking about her awesomely embroidered jacket last night—she is someone you should follow. The other quote is 'Dad gummit!' by Bill Dance, which is actually why I have this hat, as I am a fan of his.
00:02:02.079 My name is Aaron Patterson. If you don't recognize me, this might help. That's what I look like on the internet. I learned from the sketchnote talk that I should put my Twitter handle there, so hopefully, you can remember it. I have a cat; in fact, that's him from a different angle. If you like this talk or anything, you should give it the Tender Love seal of approval.
00:02:43.239 I am on the Rails or Ruby Core team, and I think I am the only one on both teams who doesn’t know what I'm talking about. It just means I'm really terrible at saying no. I work for a very tiny startup based in Dallas, Texas—AT&T. I have to thank them for employing me to do nothing all day, basically. I’m an open-source developer for AT&T, and we'll be discussing some of the things I do.
00:03:27.640 In 2011, my job title was Cory Haynes. In 2012, I was the senior Facebook integration engineer-elect, but I lost that election. Eventually, I became a senior software architect, which was cool, as I got a drafting table and all that stuff. This year, my title is a thought leader in training—so I want to get out of development, and I heard that thinking is on the rise. There's certainly a market for individuals who can lead those thoughts.
00:04:00.360 I noticed that some folks here are wearing Google Glass—that's pretty exciting. I have a pair as well, though I didn’t bring mine. I saw a talk about someone doing 27 million hours of pair programming or something similarly ambitious, and I thought that was impressive. I also do pair programming, but not for as long, as my pair goes bad after a couple of days. I want to show you a couple of action shots of me pair programming!
00:04:44.199 This is a close-up shot of me in action. As for my cats, we call our lesser-known cat Choo Cho, short for CAC YouTube Facebook Instagram. Then there’s Gorby Puff Puff Thunderhorse II, whose Twitter handle is @GorbyPuff. You can follow him for sketch noting. Here’s me with my cat; I love them.
00:05:32.960 As I mentioned, online I go by Tender Love. I write a lot of puns on my Twitter and I also give people hugs, not because I’m supposed to, but because I can get kind of lonely working from home. That’s why we did that thing, though I’m extremely shy, so I wouldn’t make you all do that. Now, regarding my tweets, they comprise 90% puns, puns, cat photos, and once in a while, useful text.
00:06:06.400 I brought a bunch of stickers that look like my cat. However, it has come to my attention that people might know who I am, and this concerns me. I am very introverted and really shy, so despite standing here speaking in front of many people, I’m incredibly scared and using that fear to speak. Also, my outfit is so ridiculous that if I mess up, people might get distracted.
00:06:31.680 Some people have said to me, 'Aaron, you’re very famous. I’m afraid to talk to you.' I want you to know that I carry around stickers because I'm also afraid to talk to you.
00:07:20.440 Let's now talk about some specific things here in Chicago. People have told me to connect with you all, the audience, which I noticed hasn't been done much in many of the presentations, but now I'm going to do it. So, let’s connect with some Chicago references—the Bears, the Bulls.
00:07:49.520 Last year, during my keynote, I introduced my consulting company, Adequate Industries. I did the same joke last year, but I figured it was amusing enough to share again. I also dropped several f-bombs, which was fun. Before my keynote last year, I did what I usually do and went to the bathroom. Unfortunately, I was so nervous that I walked into the women's bathroom, which was empty at the time. I thought, 'Wow, there are a lot of stalls.' I used one, then came out and realized there was a woman janitor cleaning the restroom. I was totally fine with that, but I noticed another woman washing her hands, making it quite awkward.
00:09:31.279 The last time I was in Chicago, about ten years ago, I ended up at a party at Cynthia Plaster Caster's house. If you'd like, you can Google her, but please only click on the Wikipedia link! I was staying with some friends, and didn’t want to seem uncool, so I went along. It turns out she’s famous for making plaster casts of rock stars' anatomy! At the party, they discussed an adult film featuring Jimi Hendrix, questioning whether it was actually him. Cynthia, as an expert witness, was there to validate it, and throughout the evening, I kept asking myself, 'Why am I here?'
00:11:59.279 On the topic of Rails being ten years old, I contemplated what I looked like at age ten. That's why I’m dressed like this today. The shirt reads: 'If you can’t surf with the big dogs, stay off the net.' It encapsulates how, in the early 90s, many of us envisioned the internet.
00:13:20.399 Over the past decade, the Rails Community has successfully tackled challenging computer science problems. Just ten years ago, we found solutions to problems like naming conventions and creating new models—all super exciting! Additionally, during last year's RailsConf, we tackled caching with Russian doll caching and solved complex dependency issues, although I have to ask: what about RubyGems? Why haven't we solved those issues yet? This leads me to ask: what’s left in computer science? I’m here to tell you: P equals NP! I can solve it right now: just divide both sides by P.
00:15:15.519 So let’s talk about the topics I learnt at RailsConf. Yehuda taught me that it's nearly 5 p.m. on a Friday after a long conference, so your cognitive batteries are probably low, which means that I’m your default. Science is good, and Test-Driven Development (TDD) is great! Baratunde taught me a crucial lesson: I am white! I learned that I have to code hard and fast, so tonight, I’m going to troll quickly.
00:16:27.600 DHH put on a magnificent show, offering me quite an eye workout. On the topic of testing, I wanted to address some incorrect testing techniques that need to change. For instance, when testing something, it’s not just about passing values but ensuring consistent return types. I can demonstrate some peculiar bugs resulting from these mutable state issues—a real headache to tackle. The first issue often seen is inconsistent return values.
00:18:44.880 The two calls should ideally return the same types, but instead, they don’t, due to the relation object having a mutable state. In additional instances, memory leaks can cause unforeseen complications with parameter hashing in controllers, leading to more unpredictable results. Suffice to say, mutable state can cause unintended consequences!
00:19:15.760 I don’t believe I need to express how frustrating these issues can be—from inconsistent return values to memory leaks in controllers. The takeaway here, however, is to be cautious with whatever dependencies you implement; our core systems can grow complex, even with consistent iterations. Watching for these mutable states will ease the burden.
00:20:17.280 Transitioning to the next segment, the underlying idea of adequate record I’ve been working on revolves around great performance improvements in the active record database model, which has been a complicated topic. If you've ever done any work with Ruby gems, you'll understand where I'm coming from; performance is crucial. So, if we simply compare the performance of standard active record processes versus this proposed adequate record optimization, we'll see much to consider.
00:21:25.200 The idea behind adequate record is to provide a simpler way to generate queries and cache them for efficiency. After three years of tinkering and understanding how both standard and tailored records operate, I believe this can lead to reliable, more efficient translations of common tasks, ultimately heading into an environment where Ruby continues to thrive. Thank you all for your time as I begin to implement these practices!
00:23:59.279 Let’s take a moment to look at adequacies of caching in our datasets as they become more versatile with the introduction of sufficient tools that solve these problems ahead of time. So, please bear with me as we go through a few potential solutions and statistics surrounding sufficient methodologies for frameworks!
00:24:41.600 Turning our attention to the performance metrics, I want to address some tools for benchmarking and measuring the impact of these changes. Benchmark IPS is an invaluable tool for reporting how our methods perform over time. It allows for the measurement of iterations per second, making sure we know the tests are accurate and honest. Once you start measuring, the insights can help adjust developmental processes to engage higher efficiency with each passing day.
00:26:45.800 So, measuring performance can vary by database type. Some may function better with MySQL, while others will perform more generously with SQLite. Each test is crucial for knowing how we should move forward as developers.
00:27:01.200 Now, as we prepare to move into our final segments on adequate record, I have extremely exciting news: we're rolling out performance boosts that can be quantified into major improvements. Programming by itself doesn’t foster efficiency unless we spend ample time analyzing how we can create a solution that’s adaptable alongside user needs.
00:28:12.760 When we embrace these suggestions into action, thanks to user input and community features, a fantastic relationship can form. Our developers should have summarized instructions outlined clearly with examples that allow everyone to get on board quickly. Even visual reports—including flow charts—make the information accessible and align priorities clearly.
00:29:21.560 Ultimately, we hope to introduce an API that simplifies data definitions while still keeping efficiency in mind. That clarity promotes both efficiency and creativity in developing databases and methods that block groups of developers from feeling overwhelmed.
00:29:54.280 In closing, our ultimate goal is to foster a seamless interaction interface usable by both novices and experts alike, while also ensuring all changes remain functional. As we gear our way to creating unified communication tools rooted in data science, I believe we can achieve a robust foundation of development!
00:30:20.440 Thank you for your attention! We will continue into our panel discussions shortly.