Lars Kanis Interview

host Yukihiro Matsumoto

まつもとゆきひろ委員長

So let’s start the interview. Congratulations for the nomination as a final nominee for Ruby Prize.

RubyPrize2022 Final Nominees Lars Kanis

Thank you very much.

まつもとゆきひろ委員長

So let me ask you a few questions about yourself and your activities. So the first of all, how did you get involved in programming? How did you start?

RubyPrize2022 Final Nominees Lars Kanis

Oh, that was very early, I must say. It was a Commodore 64. So I wrote BASIC programs at first, but it didn’t take very long to come to assembly. Because, yes, you couldn’t do that much in BASIC at that time on that computer. To really use the hardware, you had to write assembly and that is what I did then. I was really surprised how fast this computer was when I used Assembly in comparison to BASIC. So yeah, that was my introduction. In 1992, maybe? When I was 13.

まつもとゆきひろ委員長

What did you write in assembly at that time?

RubyPrize2022 Final Nominees Lars Kanis

Games. At least I tried to write games, but I didn’t finish the games. Actually, I wrote frameworks to write games at that time. Not really usable. But I had a friend, and he made use of these frameworks later on. He reached the final step to make a real game based on it. That was an interesting thing.

まつもとゆきひろ委員長

The good programmers write down something abstract like the framework, the language, or maybe some operating systems. There you have the very good aspect.

まつもとゆきひろ委員長

So you start programming in Commodore 64 in Assembly but how did you get involved in Ruby?

RubyPrize2022 Final Nominees Lars Kanis

That was later of course. In 1992, there was no Ruby available. Switched the personal computer to x86 later on. First, I learned C++ and it had a lot of complexity. But it was fast. That was a really steep introduction for me into object orientated programming and these things. Then in 2005, I read about Ruby in a computer magazine and I thought I should try this. I wrote some first programs、actually, in web application. Everything of Ruby was into the standard library then. So there was no gem infrastructure at that time. But the CGI module was in the standard library, and that’s where I started and took half a year. Then I noticed that in the new company where I was an employee at that time, did a lot of text processing. They used Pascal for that. I found it too much too complicated. So I introduced Ruby in the company, and they said, “Oh, no, no, no. What additional language….it’s not what we are looking for”… But all the text processing features that Ruby has had a wonderful completion. And so, not only did I fall in love with Ruby, but also my coworkers. That was the introduction of Ruby in my company and we use it as our main language until today. I’m the only one who does open source contributions, in nature at least.

まつもとゆきひろ委員長

I appreciate that. Many consider RubyInstaller as your masterpiece. How did you start that project?

RubyPrize2022 Final Nominees Lars Kanis

I’m the Linux guy in my company. It is a difficult combination. And when I started to introduce Ruby to the company, it was a very important thing to have language that is working properly on Windows. So I took the RubyInstaller, and used it in my company. So if there wouldn’t have been a RubyInstaller, I wouldn’t have come to Ruby in that nature. But, yeah, it was difficult to use it on Windows. Something that really helped me at that time was the PostgreSQL adapter. It also difficult to install it on Windows. I had a long procedure as to how to do this and we repeated this procedure on every new Windows computer. I always thought that must be improved. But I was not in Ruby or in open source development at all at that time. But sometimes I started some fast patches to Postgres which was a gem at that time, to improve the situation on Windows and I started with cross compiling, because Linux was my system, which I was familiar with. I used the cross compiler to compile for Windows and it worked. Later on, Luis Lavina who was the former maintainer of RubyInstaller, decided to leave that area, because he didn’t use Windows any longer. So it took some time and, and about not too long after, he wrote that we need a new maintainer. I first had a look at his code that he left, but it took it because it was all based on an old MCS and I saw that as a promising new system that it’s called MCS 2. And I thought I should try this. So I wrote it from the scratch Ruby installer based on MCs two. It was a great success. I completely renewed the web page for RubyInstaller. It’s the same design, but it’s a completely different engine and took over everything.

まつもとゆきひろ委員長

I’m a Unix guy and most of the core developers, Ruby’s core developers are Unix guys as well, so that we tend to leave Windows behind sometimes. But in contrast, many Ruby users, especially the beginners use Windows. So you know, we need Windows to fill the gap. So the existence of the RubyInstaller help us, the Ruby community alot. We appreciate you and your work and that’s the reason we nominated you for the Ruby Prize. So, you expressed the difficulty of the RubyInstaller but do you have any challenges in the implementation of the RubyInstaller?

RubyPrize2022 Final Nominees Lars Kanis

A general view for me, it works pretty well. One major point where there have been different opinions at times was about shall we include the dev kit into the Ruby package or not. Most of our developers thought ‘No, don’t introduce it’. It makes really fat installer. But in fact, that’s the one that almost everyone downloads. So there are 10 times as much downloads as without the dev kit, and I think it has lowered the efforts for the end user a lot by integrating everything into one package. So I’m quite satisfied with that. Where I’m not satisfied yet is, how everything is so slow on Windows. The situation may be a little bit better when using Visual Studio, the compile times are around three thirds of mean GW compile times, and but it’s also not too much. Compilation runs much faster on Linux. So I’m happy I have a fast computer at home. When I work on Windows, I use another computer and I can have some speed with development. From point of technology, there are a lot of challenges on the Windows side. I didn’t do that much to the Ruby Core. Until now, lots of simple patches so far, but most of the Windows port was done by Nobumasa-san. And I have a great respect for him.

まつもとゆきひろ委員長

Especially IO mechanism behind the scene is totally different from Windows and that that’s one of the reasons of the slowdown, the performance digression. So yeah, we have to work on it to improve the performance. But we probably lack the knowledge and experience.

RubyPrize2022 Final Nominees Lars Kanis

But I think the Windows implementation as was already in a good stage. We have a lot of data, also a lot of deep knowledge inside. Maybe it has a good impact on performance. If this switching between file descriptors of lib C to handled of the native Windows API. Maybe that makes it a little bit faster, I could imagine. That’s why I would like to work on this. There are, I think, quite clean structure there. But it is complicated. It’s still complicated, because the interfaces are very different.

まつもとゆきひろ委員長

Well, maybe we got into the little bit too much technical detail. Anyway, thank you. And the last question is, what is your plan for the future regarding or not regarding the Ruby Installer?

RubyPrize2022 Final Nominees Lars Kanis

I don’t have big plans, other than… just keep going. Yeah, that’s for sure. I will keep going on and work on it and ensure that the CI is running in the green every day and that integration into GitHub actions. So everyone can run overnight compiled Ruby on Windows. MSP Crike, is one other guy who’s working on Windows, and he already has done a very good job. I’m happy to have some company on my side. I can ask some questions. He’s has not the deep knowledge of the Windows system, but he’s a guy I can rely on.

まつもとゆきひろ委員長

So, again, we really, really appreciate your work and you know, we expect your contribution further in the future. Thank you again. Have a good, safe trip back home.

RubyPrize2022 Final Nominees Lars Kanis

Thank you very much. Yes, it will take many hours to get back to Germany.