Talks

Nobody Knows Nobu

Nobody Knows Nobu

by Zachary Scott

In the video titled "Nobody Knows Nobu," presented by Zachary Scott at RubyConf 2014, the focus is on Nobuyoshi Nakada, famously known as "the Patch Monster" due to his unparalleled contributions to the Ruby programming language. The session highlights Nobu's journey as the most prolific contributor to the CRuby source code, emphasizing his 10,000-plus commits and his significant impact on the Ruby community.

Key points discussed in the video include:

- Nobu’s Background: The introduction of Nobu begins with light-hearted anecdotes and a brief fictional tale about his origins. It's noted that he grew up near Mount Fuji and developed an interest in mathematics and computer science through unique experiences, such as joining a hot-air balloon club.

- Commit Data: Zach presents compelling commit statistics, illustrating Nobu's commitment to Ruby. It’s highlighted that Nobu doubles the contribution rate of the next leading committer. Relevant graphs and comparisons to other committers, such as Martin Durst, help contextualize Nobu’s remarkable activity.

- Working Style: Nobu's development environment is described, detailing his usage of a MacBook Pro, Emacs, and his self-taught skills in programming. Examples of his unique coding methods, such as using scripts to clean up code, epitomize his contributions.

- Noteworthy Contributions: Several specific examples of Nobu’s patches are shared, including those that fix bugs and improve functionality, showing his technical acumen. Notable mentions include his contributions related to leak checking in Ruby, and various patches with titles such as 'Removed Trailing Spaces,' showcasing the breadth of his work.

- Collaboration and Recognition: The talk emphasizes that Nobu collaborates with others and is respected within the community. His humble nature and dedication to helping others within Ruby core are celebrated throughout the presentation.

In conclusion, Zach Scott not only provides insights into Nobu's professional life but also illustrates the spirit of collaboration and dedication within the open-source community. Nobu is portrayed as a hardworking and humble individual, whose extensive contributions serve as a model for aspiring contributors in the Ruby ecosystem.

00:00:18 It's great to see everyone here! So many good faces. Thank you for coming. It's been a while since I've seen most of you. For some of you, it's been only a few hours since we last tweeted. So, I just want to start by saying I'm back. My name's Zach, and I work at a company called Shutterfly. I'm supposed to tell you this is in San Francisco, where we are number one in first-world problems, but the talk isn't going to be about me.
00:00:30 We're here for this guy, and I'm not just going to show you a bunch of pictures of my cat. I don't have any time for that. If he was going to present this talk, maybe he'd start with this slide. I'm supposed to have his kanji, but I forgot it. Some of you here probably know Nobu, and you've probably seen him around at various conferences or different places. Or maybe you've just seen that guy who says, 'Who is this guy?' You might even start looking at his GitHub profile.
00:01:06 He's contributed quite a lot to many projects, being the number one committer of all time to Ruby. His number of commits far surpasses everyone else. If we look at commits per day, we can see that he doubles everyone else's number of commits each day. Since January, it's amazing. When I saw this graph, I couldn't help but notice the name on here, so I decided to include a section called 'Random Committer Spotlight.'
00:01:32 I was looking at this graph and I noticed the name Martin Durst. If you don't know Martin, he’s a committer who lives in Japan. He has a master's degree from Zurich in computer science and a PhD from Todai. When I saw his name on this list, I couldn't help but think that growing up with that last name must have been quite difficult. But Nobu is very special to me; he’s someone I try to imitate in my work and is the one who coined the phrase 'Zee Zack shaving.'
00:02:03 He is someone I see in myself. If we go way back, I don't know if I completely trust Nobu. I saw this tweet last year and when I looked at the picture, I couldn't help but notice that’s my phone! Who is this guy? I wanted to get to know Nobu better, so I asked his coworkers. First, I asked Keiko, and she said, 'Oh, Chao, I have no idea who that is.'
00:02:34 I asked Kochi, but it was in Japanese, and I can't really read that, so I decided to ask Terrance. He just tried to get me to help him fix Make Snapshots. So then, I asked a complete stranger, and he said that guy's drunk. So, I did what any reasonable person would do and asked the Internet, where I found a video from Fabio Keita about three years ago. It included an interview with Nobuyoshi Nakada, better known as the Patch Monster.
00:03:04 I'm going to show you the first few minutes of this video so that you can get to know Nobu a little better. I'll interview Mr. Nobuyoshi Nakada, who is a Ruby committer and has been involved for a very long time. Together with me is Akira Matsuda, a real evangelist who will help me translate from Japanese to English back and forth.
00:03:30 So, as the first question, which is always the first question, I asked, 'How did you get involved in Ruby development? How did you first meet Ruby and decide that you wanted to contribute?' If you want to do that video, it's great, but I have no idea what he's saying. The whole thing's in Japanese, and Akira is there to translate; he doesn’t say a word the whole time.
00:04:02 I really like his Led Zeppelin T-shirt. I kept searching and found this PDF file, which is pretty cool. Actually, I'll be honest: I made this. I'm also a little bit drunk and still a lot bored. It turns out that I don’t know Nobu that well, so let’s just keep this civil. Nobody knows Nobu. This starts out about 100 kilometers southwest of Tokyo in the heart of Honshu Island, where Nobu was forged deep in the fires below Mount Fuji.
00:04:21 After his creation, baby Nobu crawled his way down the mountain. I heard he made his first friend, a large cat; he wasn’t sure at first who this guy was until Nobu let out a loud roar. The cat was convinced that this guy was probably pretty cool, and they took off down the mountain together. However, it wasn't long before baby Nobu got hungry and started crying, needing something to eat.
00:04:48 You could actually hear his wails in the distance. Not far from there, a young couple was studying together in the forests around Mount Fuji. The young woman was out studying bugs for her graduate studies in entomology, in the company of none other than Professor Oak. They quickly ran to help young baby Nobu. The cat, however, just took off, like, 'I'm done with this guy.'
00:05:13 They tried to make him feel better, but all they had was beer. They went through that pretty fast, but you could tell this baby was special. So, they decided to keep him and took him back to their home in Tochigi, northern Japan, where they continued to teach Nobu everything they knew about math and science. It wasn't until he joined the physics club in high school that he really started to excel.
00:05:38 His love for math and knowledge kept growing until one summer afternoon just before going to university, they were out for a picnic. His friends seemed preoccupied with the food, but Nobu was just astounded by these floating balls in the air and wanted to find out what they were. This is really where his initial love for hot air ballooning began.
00:06:00 During his university years, he joined the hot air balloon club and got his first taste of computer science, where he taught himself to architect hot-air balloons using the computer, learning C programs. He spent many nights perfecting his programming skills to build the best hot-air balloon he could create so that one day he could fly off into the distance and leave all of his troubles behind to return to Mount Fuji where he belongs.
00:06:25 However, not all was well for Nobu. He spent so much time hot-air ballooning that he actually flunked out of university, which led to him needing to get a job. This is where his skills from hot-air ballooning came in handy. He lived at home with his family, which included three daughters, allowing him to work on Ruby full-time for Heroku. And that is the true story.
00:06:48 I wasn't kidding when I said I would tell you who this guy is; we can actually learn a lot from him, specifically about how Nobu works. I’m surprised he’s not here hacking right now. To be honest, he works on a MacBook Pro 13-inch from 2013, and he uses Emacs from MacPorts. Apparently, Homebrew doesn't work on this computer.
00:07:12 His favorite beer is Ever Sue, and he also has a pretty sweet prompt. I don’t understand what it says, but it looks cool. He also occupies the patch booth from time to time and practices BDD. Nobu knows a lot of crazy tricks. I saw a tweet from Aaron asking how to run Ruby’s tests without going through Make tests, and Nobu replied, 'Use the test runner.'
00:07:43 We actually have a runner in there, and I tried it out on D Ruby, and it worked quite well. I imagine that Nobu must have known about the ticket to remove DL somehow. He just seems to have magical powers, using git SVM, because we're still on Subversion. Apparently, that’s the best way to do it.
00:08:11 He uses GitHub sometimes, and I thought this was interesting. I went there and looked up how many times he submitted pull requests. There are almost 30 as of now. Mostly, I think he's just using them to run my Travis tests and keep a patch ready. You can see some of those are features that he was implementing, and some are bugs he likes to work on.
00:08:31 I started looking at the commit log to find out what he actually commits to so that I could have something to talk about while up here. I found this commit that seems pretty important: zero changed files, zero additions, zero deletions. Such a patch! I did a search for all these types of commits and found many; it just keeps going. There are currently exactly two hundred and thirteen of them—almost more patches than me!
00:08:57 He also has this 'Removed Trailing Spaces' patch, where he has 107 of those. Basically, how this works is he has a script that runs, and it just has this key so he can push or whatever, but it goes through, starting with the Makefile and the README, and it grabs all these other source files. Starting with the changelog, it goes through and fixes any encoding issues, then strips the whitespace from the rest of the files and commits them.
00:09:25 He’s done this over 300 times, which is amazing. I also found another commit that I found interesting. If you read it, it says, 'Should not require other files when dump option is given.' So I looked at the Ruby C file, which is the executable to run Ruby programs. Basically, when you give it this flag, you shouldn’t see the run part looking at the tests he committed.
00:09:50 I couldn't help but think of the command; this is all I thought of: well, I have to keep looking. I kept searching for more patches and found that within a short time period, there were all these similar commits like fixing leaks. Apparently, Nobu patches a lot of leaks. One such example would be moving the temp file link into the ensure block to ensure it gets collected.
00:10:14 I reverted this commit to run the tasks to see what he was working with, and you can see right in the test suite when we run the tasks that it shows if there’s a leak thread or a leak temp file. This is built into Ruby's test runner; it basically goes through all the assertions and uses this leak checker, passing the test name in class into the leak checker.
00:10:37 The leak checker is pretty cool; it does all kinds of stuff with file descriptors, temp files, and threads. First, when it's initialized, it checks what's already on the stack. For temp files, it uses the check time file method. If we look at that, we can see it checks the initial temp files and then calls find temp files to find the difference.
00:11:02 Looking at the find temp files method, you can see the initial counter class, which does this: it looks at object space and finds any instances of temp files and returns them as an array. If there are any temp files left, it prints a message that’s kind of neat and really helpful. I think Nobu has had a bunch of patches fixing those so that our tests can run better.
00:11:22 Another bug that I found interesting was this flip flop test failure on Windows. If you don’t know what flip flop is, just Google it. I'm kidding, I’ll tell you. So, as an example, we're taking this data and going through each line, and once we hit start, the bit flips; when we hit end, the bit flops until it reaches another end—it's flipped.
00:11:46 You can see here when we parse that text; there’s also some pretty good docs on it in Ruby. If you use the command, you can see other control expressions related to it. In looking at this ticket, there was a test failure reported that said the flip flop bit should be separated per thread, and it came with this test.
00:12:03 It turned out that it actually had nothing to do with flip flop; it was a threading bug. When Win32 saw the issue and Nobu sent an email, he explained that it was probably not a bug. Interestingly, less than five minutes later, he committed this patch saying, 'Oh sorry, it wasn't a bug, but guess what? I fixed it. I rewrote it using trace point instead of a thread and just flipped the table!'
00:12:25 However, Nobu doesn't just work on patches; he also works on a bunch of other features. I showed his GitHub earlier, where he has contributions such as object itself, super method, and definitely constant, which I don't think has been merged yet but he already has a patch for it. You can often find that, for example, in Olivier's talk yesterday, he mentioned that he came up with the idea for hash contains, and Nobu created a patch like instantly.
00:12:58 Basically, he works on whatever the heck he wants, and that's pretty cool. We can learn a lot from Nobu. To sum up how I feel about him, I think he works really hard and is a very humble person, humble enough to be sleeping on stage while there's a talk being given about him. He's always patching and enjoying his life, and I think that's genuinely noble. Thank you!
00:19:02 Thank you!