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.