Talks

Lightning Talks

Lightning Talks

by Ratnadeep Deshmane, Chris Seaton, Nick Quaranto, Keith Bennett, and Max Wofford

The video titled 'Lightning Talks' from RubyConf 2022 features a series of brief presentations focusing on various aspects of Ruby programming and the open-source community. The session begins with Ratnadeep, a traveler and digital nomad, who discusses the importance of understanding Ruby before diving into Rails. He shares insights on his project 'Why I Love Ruby' and introduces the Ruby Warneck project aimed at enhancing inclusivity in coding by allowing users to write in their native languages. Ratnadeep emphasizes that Rails’ complexity can overwhelm newcomers, suggesting a broken-down approach to learning, starting with Ruby itself and gradual exploration of the framework.

Next, Chris presents new research on call sites in Ruby, explaining their significance for performance. He describes the concepts of monomorphic, polymorphic, and megamorphic call sites and introduces Sophie Caliber's technique of 'splitting' methods to improve optimization in Ruby applications, leading to potential efficiency gains without sacrificing usability, although it may increase memory usage.

Nick Carranto shifts the focus to what the open-source community can learn from cooperatives, which emphasize transparency, collaboration, and democratic governance. He highlights the parallels between cooperative principles and open-source values, advocating for shared decision-making and sustainable funding models for open-source projects.

Following this, Jehwa introduces Church numerals, an interesting functional programming concept relevant to Ruby. He provides a straightforward explanation of how Church numerals represent numbers and demonstrate mathematical operations through function applications.

Max Wofford shares his experiences as a junior developer, emphasizing the importance of fostering a supportive environment for new contributors in open-source projects. He recounts his journey from creating personal projects to contributing to public repositories, illustrating the significance of early participation and engagement in developing confidence.

The session concludes with a focus on empowerment and community-building within the Ruby ecosystem, highlighting the need for inclusivity and shared learning. Key takeaways include the value of breaking down complex frameworks for better understanding, the importance of research in language optimization, and the potential benefits of cooperative principles in the open-source community.

00:00:11.540 I hope everyone is enjoying the conference. I am certainly enjoying it, dissecting Rails. This is an idea that I want to share with you and see how it feels. My name is Ratnadeep, and I'm rttp on Twitter; you can find me there. I have traveled from Pune, India, for this conference, so I think that by traveling 7,767 miles, I am the one who came from the furthest away.
00:00:44.040 Actually, I will be attending another conference in Houston as well, so I thought maybe I should divide that into two trips, which is still 4,000 miles. So, if anyone is more than 4,000 miles away traveling here, get in touch; let's talk!
00:01:02.640 I am a digital nomad. Apart from being a Ruby developer, what I do as a digital nomad is I travel to some of the Himalayan peaks at 18,000 feet altitude and write some Ruby code, claiming that it's the highest altitude Ruby code. These places where I work offer incredible views.
00:01:24.180 If you are into traveling and digital nomadism, let's talk. Now, I want to talk about a project I built about ten years ago called 'Why I Love Ruby'. You go to this site and share why you love Ruby. The most voted answer there is about the community, and I'm sure everyone here agrees on that.
00:01:52.740 As we are discussing inclusivity, I want to quickly mention another side project. I deeply appreciate that code can sometimes be confusing. What appears on the screen might be working code, but you may not understand it right away. The barrier here isn't Ruby; it's English. The Ruby Warneck project allows you to write code in your mother tongue.
00:02:20.760 Now, if this intrigues you, let's meet and discuss; I have tooling that can help you quickly generate something in your language.
00:02:53.160 Now, coming to the main point, dissecting Rails. The reason I want to do this is that I work with a lot of freshers, and I see that as they learn Rails, it has gotten so large over its 18 years of evolution. The service area is really big, and even if someone is curious and wants to learn Rails, there are numerous places to explore, which can be tiring.
00:03:30.840 Sometimes, what one has to do is just assume that this is a magic part of the framework and that it just works. I aim to address that by creating content that dissects Rails piece by piece. Instead of jumping straight into a hello world application as your first application, let's learn small parts of Rails first.
00:03:49.560 Start with Ruby. Many people jump directly into Rails, which is not a good start. Learn Ruby first, then continue with Bundler, build some gems—even with simple logic. Next, explore using Rake, automating tasks, then Rack for building a simple application, followed by ERB and templating.
00:04:14.580 Learn about DSL aspects, ActiveSupport, and ActiveRecord. I believe ActiveSupport should be learned as a unit instead of with Rails. That's where you truly start to understand the differentiation between Rails and Ruby.
00:04:30.840 I am still working on this. If this is something that interests you, let's discuss it further. Thank you.
00:05:02.580 I'm Chris, a senior staff engineer at Shopify. One of my passions is academic research on the Ruby programming language, and I want to share with you a brand new peer-reviewed academic research paper on Ruby. This research is by Sophie Caliber, a doctoral student at the University of Kent in the UK, and I am sharing this with her permission.
00:05:36.180 Sophie looked into call sites, which are places where you call a method in Ruby. Call sites are everywhere in Ruby. Traditional method calls, like user.send welcome_email, are examples of call sites. Accessing a field on an object or using operators in Ruby are also call sites. Additionally, many hidden call sites exist in Ruby.
00:06:09.480 For example, if you add something to an array that isn't an array, it will silently convert it to an array. Most Ruby code consists of method calls, so understanding call sites is crucial for performance and the way Ruby functions.
00:06:43.320 Call sites can be one of several types: monomorphic, which means only one method is called; polymorphic, where a small number of methods are used; or megamorphic, which could lead to many methods being called. Monomorphic call sites are preferred since they are straightforward and enable optimizations like inlining.
00:07:12.180 Sophie researched a technique called splitting that reduces the level of polymorphism in a program. For instance, if we have a capitalize method that calls a modify method in Ruby, it can work with both strings and symbols, making it polymorphic.
00:07:59.520 The splitting technique creates multiple copies of methods, so we might generate two copies of capitalize—one for strings and one for symbols. Within those, we can generate two copies of modify, simplifying the process. This strategy reduces the number of potential methods called from call sites.
00:08:38.640 Sophie's findings indicated that this approach could completely monomorphize applications, reducing polymorphic calls significantly in various Ruby libraries, such as Rails and Sinatra.
00:09:04.760 Some people say Ruby is slow because any call site can call any method, but Sophie demonstrated that technology exists to achieve complete monomorphization of Ruby applications.
00:09:31.020 However, this may come with increased memory usage and startup time. This research is made possible by Truffle Ruby, a powerful Ruby interpreter created by Oracle and Shopify.
00:10:07.560 Additionally, there's ongoing research into Dispatch Chains, a multidimensional inline cache that shows promise for Ruby optimization. If you are interested in Ruby research, there's a website called the Ruby Bibliography where you can find all available research.
00:10:43.320 Thank you very much.
00:11:01.520 Good morning! Today, I'll be discussing what open-source software can learn from cooperatives. I could talk about this for over 40 minutes. My name is Nick Carranto, and I have been involved in side projects since the mid-2000s. You may have heard of a website for downloading RubyGems that 368 people have contributed to; if you want your code to outlive you, consider contributing to RubyGems.
00:11:43.760 I recently started a community grocery store, and I believe there is a lot to learn from both open-source and cooperative models. Cooperatives are people-centered enterprises that are jointly owned and democratically controlled.
00:12:02.400 How do the principles of cooperatives align with those of open source? Transparency is a crucial component in both realms. Community collaboration is also important here as we release early and often.
00:12:20.100 Inclusivity and meritocracy are other shared values, though I could elaborate more on that in a different talk. Cooperative principles include open membership, where anyone can become a member; democratic member control, which emphasizes voting and democracy; and economic participation, which involves shared profits.
00:12:57.680 Other principles include autonomy and independence, education, cooperation among cooperatives, and concern for community. These values feel very similar to those found in open-source projects.
00:13:30.420 How do these projects fund themselves? In open source, we often rely on donations, crowdfunding, foundations, and grants, while cooperatives see members contributing economically through membership fees.
00:14:06.300 The core difference is that cooperatives can take on debt, making them similar to corporations. While open-source projects generally operate under autocratic leadership, cooperatives follow democratic governance, where each member has equal ownership.
00:14:27.180 Open-source projects can struggle with decision-making during meetings. In cooperatives, establishing effective meeting structures ensures that everyone's voice is heard, and decisions are made collaboratively, contrasting with some open-source projects.
00:15:06.540 Lastly, if you have a teenager interested in getting involved in open source, I encourage you to check out hack Club.
00:15:43.200 Next up, this is not a lightning talk; it's a Lightning song!
00:16:46.119 I've ever seen the language that I love seems like it came from above, coding with Ruby. I’m not timing this; I'm just letting this go. Just me and my computer, keep calm.
00:17:28.440 Thank you! And it was under four minutes. My name is Jehwa, and I’m a junior at Brown. For full disclosure, I learned all I know about Ruby last night.
00:17:49.200 I'm going to talk about Church numerals, a functional way of representing numbers. A lambda represents the number n by taking a function and applying that function n times. For example, we could have zero, which takes in a function and returns the identity.
00:18:29.940 We could have one, which takes in a function f and just returns f. Two could take in a function and return f composed with f.
00:19:00.120 We might want a way to convert these lambdas into numbers. We can apply the adding one function n times to zero, creating 'Church to number' which applies this 'add one' function a number of times.
00:19:31.920 The same principle goes for adding numbers: if you add n and m, you apply f n times and then apply it m times again.
00:20:05.280 We can also perform multiplication by applying a function n times, followed by doing that whole process m times. Finally, we can even raise to a power.
00:20:30.360 This is a bit surprising but turns out to be a very interesting concept. That's all; I think it's really cool.
00:20:50.880 Hale! I was originally going to give a talk about teens building a non-profit with financial transparency, but now I’ll discuss whimsical features and junior developers. My name is Max Wofford, and I lead tech and design at Hack Club Bank.
00:21:27.900 I want to talk about my experience as a junior developer and how it shapes my current team, mostly comprised of high school gap-year and college students. Back in high school, I built my own personal website, which was very basic but mine.
00:21:52.920 I was so over the moon about having built something. After adding basics to my website, I felt empowered to keep building. My website hasn't improved much, but I still have my original feature from that time.
00:22:18.780 If you inspect the page, it has some hidden Easter eggs, one of which I’ll leave as an exercise for you to discover.
00:22:51.780 At that time, I was excited to talk about this with friends. Even though my site had very few views, I was happy to have created something. My next big step was submitting my first PR to a public Slack signup form, which gave me a sense of contribution.
00:23:15.900 I went from being a user to being a contributor, and I think that is vital to providing a similar onboarding experience for new contributors at Hack Club Bank. I want them to feel the same magic I felt.
00:24:00.120 Now, our team has introduced a feature called flavor text in Hack Club Bank. Each time you reload the page, different flavor text appears, creating a fun and engaging experience for users.
00:24:47.400 This creates the expectation for new contributors—that they can make their first pull request within days of joining and get their own 'Hello World' into production.
00:25:16.800 The idea is that as they begin contributing, they feel empowered to add larger features and fixes, building their confidence along the way.
00:25:44.940 If anyone here has a teenager interested in getting involved in open source, I encourage you to check out Hack Club, where many supportive resources are available.
00:26:06.900 Thank you!