Talks

Keynote: 30 Years of Ruby

A talk from RubyConfTH 2023, held in Bangkok, Thailand on October 6-7, 2023.
Find out more and register for updates for our next conference at https://rubyconfth.com/

RubyConf TH 2023

00:00:07.759 Thank you. As Matz may have introduced me, I started Ruby 30 years ago, in 1993.
00:00:16.960 Yes, 30 years.
00:00:22.439 Today, I am going to share with you lessons from 30 years of Ruby's history.
00:00:29.679 I named Ruby on February 24, 1993.
00:00:35.320 At that time, I was discussing a new project with my friend. I was kind of bored and decided to start my pet project.
00:00:43.960 I will explain the details later, but I needed to create my own programming language.
00:00:51.000 We needed some kind of code name, so I discussed it with my friend. The candidates were Ruby, Corona, and Tish.
00:01:03.960 During our discussion, my colleague proposed naming the new language after the gemstone Ruby.
00:01:10.799 Luckily, Tish was dropped; if I had made a mistake, we might be attending the Tish conference, which would not have been appealing.
00:01:16.280 The remaining candidates were Ruby and Coral.
00:01:21.560 I thought about the names, and Ruby sounded more beautiful, more appealing, and shorter.
00:01:29.200 Thus, I picked the name Ruby, and I believe it was the greatest choice of my life.
00:01:34.520 So, lesson one: choose good names for your projects, companies, services, functions, or variables.
00:01:40.240 Naming is important because software lacks a physical entity; it's a virtual construct.
00:01:48.840 Software represents concepts, so we need to name them properly.
00:01:55.399 We should think in our native languages, whether it's English, Japanese, Thai, or any other language.
00:02:00.680 We need to represent important concepts in clear terms or names.
00:02:07.920 When starting a new project, choosing a good name is crucial.
00:02:17.599 The definition of a good name can vary for different entities.
00:02:23.920 For example, Ruby has nothing to do with programming language terms, but its beauty and appeal contributed to the project's success.
00:02:30.400 You might name your project something fantastical, like Kaminari or Umami in Japanese.
00:02:36.599 Proper naming holds great power. The name can determine the fate of the language, the software, and the project.
00:02:42.239 Thus, the lesson here is that naming is extremely important.
00:02:50.000 I have often been asked why I created Ruby. Initially, it started as a hobby. In high school, I dreamed of creating my own programming language.
00:03:06.879 I began programming at age 15, using Basic, not Visual Basic, but the original Basic.
00:03:12.400 My first computer was the size of a pocket computer, and Basic was quite limited.
00:03:20.280 It only had global variables—no local variables. All variables had a length of one, meaning I only had 26 global variables in the entire program.
00:03:27.360 This limitation was frustrating, and at that point, I thought programming was difficult and challenging.
00:03:36.680 However, I soon discovered more powerful programming languages like C, Pascal, Lisp, and Smalltalk.
00:03:45.560 Using these advanced languages made programming a lot easier and more enjoyable.
00:03:53.919 I became interested in programming languages in general and sought new programming languages and features that assist programmers.
00:04:00.039 Then I realized that every programming language has a creator, unlike natural languages that evolve over time.
00:04:06.720 It struck me, why can't I create my own programming language?
00:04:13.160 At that time, in the early 80s, we didn't have the Internet—only books and magazines supplied information.
00:04:24.480 I obtained a textbook for university called 'Compiler,' but it was too advanced for me.
00:04:30.280 After entering university, I majored in computer science and learned about various programming languages, algorithms, and how to implement programming languages.
00:04:39.079 After graduating, I became a professional programmer, and the internal passion to create Ruby kept me working for it for 30 years.
00:04:46.360 So, lesson two: motivation matters. Your drive should come from your motivation.
00:04:55.120 In 1983, I began creating Ruby during Japan's post-bubble economy, which led to a serious economic depression.
00:05:07.399 I was working as a programmer, but my project got canceled due to the economic climate.
00:05:13.960 Fortunately, I wasn't fired but became a maintainer of existing projects.
00:05:21.440 New development was prohibited, and I often dealt with customer complaints.
00:05:27.120 I would guide them to restart their computers when they faced software issues.
00:05:34.079 Due to the boredom of maintaining old projects, I started working secretly on Ruby using company resources.
00:05:41.679 As Grace Hopper famously said, 'It is easier to ask for forgiveness than permission,' so I ventured into creating Ruby without informing my manager.
00:05:50.920 Eventually, the company I worked for went bankrupt, so I can safely share this story.
00:05:58.560 Lesson three: sometimes you need to take initiative without waiting for permission.
00:06:10.919 About 20 years ago, I was working on Ruby and trying to improve performance by inlining C functions in the abstract syntax tree.
00:06:24.640 Almost one week into the project, my work was lost due to a system crash.
00:06:36.240 Unfortunately, at that time, we didn't have version control systems.
00:06:44.799 This experience taught me the importance of version control and backup.
00:06:54.360 I kept diaries and logs of my daily work on my PC, but when a hard drive crashed, I lost all of that.
00:07:01.800 Thus, lesson four: always keep backups.
00:07:08.080 Now, let's talk about Twitter, which was originally developed with Ruby.
00:07:13.920 Many famous services, like Twitter, moved away from Ruby.
00:07:19.440 Some developers claimed that Ruby was dead because of this.
00:07:25.920 However, I believe each service underwent significant changes and adaptations.
00:07:34.440 Twitter started as a short blogging service, with significant features added later.
00:07:40.760 In the beginning, it was easy to fail and pivot with new ideas.
00:07:47.920 Lesson five is to embrace trial and error.
00:07:54.920 A robust community is essential for the success of Ruby.
00:08:02.080 Ruby is open-source and depends greatly on community efforts.
00:08:09.440 If there were no community members, we wouldn't have Ruby today.
00:08:15.440 Initially, I wrote Ruby, but over time, community contributions evolved and improved it.
00:08:21.120 Ruby on Rails became a major part of Ruby's identity.
00:08:27.200 The community has created numerous supporting tools, libraries, and gems.
00:08:35.120 The success of Ruby is attributed not only to the language but to its supportive community.
00:08:42.960 Thought leaders and innovators from the community created many Ruby tools.
00:08:50.639 Many gems assist with common tasks, allowing developers to create efficiently.
00:08:58.720 We organize conferences globally to foster community engagement.
00:09:06.480 We began with RubyConf in 2001 with just 37 attendees, but now we have grown significantly.
00:09:14.280 Ruby's community consists of individuals who share a mutual interest in the language.
00:09:25.560 There are no formal memberships, and anyone can contribute.
00:09:31.680 Every community member has different reasons for joining.
00:09:38.400 We require a nurturing environment to prevent community members from leaving.
00:09:44.639 Open-source projects may languish if the community fails to flourish.
00:09:57.200 If we stop engaging and providing value, we risk projects becoming abandoned.
00:10:05.360 Keep moving forward; communities must keep swimming to survive.
00:10:12.080 In the past, we've accomplished great things as a community, continuously improving.
00:10:21.680 Ruby's performance has also improved dramatically since the earlier versions.
00:10:28.480 Ruby 3 aims to be three times faster than Ruby 2 in various benchmarks.
00:10:37.680 Technological advancements and community-driven improvements have greatly enhanced Ruby.
00:10:46.680 The introduction of JIT compilers has brought further enhancements to performance.
00:10:55.000 Ruby's speed is vital for real-world applications, which has significantly improved.
00:11:01.720 As a community, we strive to enhance productivity through collaboration and contributions.
00:11:08.560 We are working on improvements for concurrency in Ruby.
00:11:16.240 We aim to provide better tools and libraries that enhance development.
00:11:25.000 It's essential to keep developers engaged and to promote Ruby in the workplace.
00:11:33.760 As more people use Ruby professionally, they contribute back to the community.
00:11:42.160 Volunteering and organizing meetups is essential for nurturing connections.
00:11:50.000 We emphasize kindness within the Ruby community; a positive attitude is key.
00:11:57.680 When providing feedback, it’s important to be constructive.
00:12:06.560 I encourage everyone to attend conferences, form friendships, and collaborate.
00:12:14.200 Remember, every small input can lead to significant change.
00:12:22.720 Together, we will keep forward momentum; the core team will create continuous value.
00:12:31.120 Thank you.