P. Solnica: "I'm excited about Truffle Ruby"

Software engineer with over 10 years of experience, Tech Lead at Icelab, speaker at RailsClub
23 November

Piotr Solnica at RailsClub 2017
Piotr Solnica at RailsClub 2017

A software engineer with over 10 years of experience, working as Tech Lead at Icelab. Active OSS contributor and maintainer of various projects for over 5 years. Former DataMapper core team member, creator of the popular Virtus gem, lead developer of Ruby Object Mapper project, and dryrb core developer.

On the RailsClub 2017, we've managed to talk with Piotr about his work, dry stack and future of IT.

Please, tell me about yourself. Where do you work? What do you do?

I’m a software developer from Poland. I worked mainly with web apps for last 14 years. I’ve graduated as bachelor in computer science. I’ve studied a bunch of languages and found a job as PHP developer, then I’ve switched to Ruby in 2007. That was my life for almost 11 years. Mostly doing Ruby and worked a little bit with functional languages for few months and now I’m back with Ruby as my main language.

Is it your first time in Russia? How do you like it? How do you like RailsClub?

It’s my first time in Russia. I really like Moscow, it’s really nice city. I like that it’s big. There’s a lot of space. I live in Krakow, so, it has crowded, narrow streets, lots of buildings close to each other. We’ve got nice weather in Moscow! And it’s always raining in Krakow. I really like. People are nice, the conference is awesome. I’m really enjoying it. I also like that people have a lot of questions. I’ve been talking for less than three hours with like 20+ people. That’s really encouraging for me.

Can you give us keynotes from your report?

I’ve talked about the project with which I was working since 2011. I’m basically trying to build a new set of tools to work with databases in Ruby. To shift people to alternative approach, not a typical object-oriented approach, when it comes to working with databases. The talk was about upcoming version 3.0, which is expected to be realized in October. The main thing is to show that this library, despite it is much more advanced than existing solutions, it’s finally as easy to use as this existing solutions.

As far as I understand, your library is designed to replace Active Record. What is main advantage and disadvantage of your product?

The main advantage that it is much more flexible than active record because you don’t have to module your app domain in the same way as your module database tables. You can have different sets of attributes for certain modules and certain modules don’t have to be one-to-one mapping between the tables and their representation in Ruby. This means that when your application growing and you starting to see more and more domain specific concepts you will be able to module them just by using API that we have. It’s also easier to make changes in databases because you have chainset API that we introduced recently. We can use it transfer data from representation that your application receives into a structure that is compatible with your database. We don’t have it in Active Record - concept of data transformation. And, second advantage - it’s kinda lightweight, because the data structures that we load, the objects, that we load, they are smaller than Active Record objects. They take less memory and they are faster. As a result , Rom is faster, it can work with different databases. people are using Rom with data that they pull from YAMA files or csv files or HTTP API and then they combine these data and with what they have in their database, maybe store in their database after some transformation. It’s just much more flexible and support.
Disadvantages are mostly related to the fact that it’s still young project. First few years of my work was mostly experimentation and project started at 2013 and 1.0 version was released in November. That’s not a lot for open source project. 3 years for open source is like 3 months in case for a normal project. As a result, we’re lacking the documentation, which is in big priority right now, our community is much smaller, we use less 3rd party tools and extensions than in case of Active Record. We don’t have 3rd party solutions for stuff like file uploads or authorization.  We are on our own in a lot of common cases. That’s the biggest disadvantage. If you don’t feel like build a plugin for a file upload, it’s not gonna be good fit for you.

How do you see the world of programming in 10 and 50 years and will Ruby and Rails have place in it?

I have no idea, really. That’s hard question. I don’t know. I can't see the future. I think Ruby is doing well. I’m excited about alternative Ruby implementations like Truffle Ruby, which is getting more and more attention. I’m also looking forward to Ruby 3. I think it’s gonna be easier to predict the future once Ruby 3 is realized. But I think that we have a strong community. Language is not everything, ecosystem built around language is also important. And I think we have very strong community which is evolving very fast these days. We see more and more new projects. It’s doing well. There are other languages, such as Elixir, which is getting a lot of attention these days. But it’s a young language with very young ecosystem so it’s gonna take a while for younger languages to get where we are already in terms of our experience and our knowledge and how we work together. I think Ruby is doing fine and it’s gonna be quite good for next few years.

In your opinion, what is the hypest technology in programming these days?

I don’t know. To be honest, I’m not really following hype. It’s to distracting. I would like to check out everything. But I think Elixir is a big hype. In a good way.

What advice can you give to “average programmer” to stand out the crowd?

Write and read a lot of code. That’s my advice for many years. I think people spend too much time discussing code and reading books instead of sitting together and coding. You can learn a lot from just this and discussing it afterwards. The more write and read - the better you become. For me, the fact that i’ve started contributing to open source helped me to learn so much. I’m sure that I’ve spend 10 times more if I was just relying on my job. So, contributing to open source is also a great way to learn not just how to write code, but also - how to work with people. You learn how to communicate, you meet a lot of different people, you work how to work in team, it helps you a lot. These two things are very important.

What makes you excited about your daily work?

I really enjoy using things that I’ve written. It’s because it motivates me to continue working on them and improving them and it’s such a joy for me to build them and use in a project as a tool. I also really like just working with people. I hate to be lone wolf, just writing stuff that nobody will see. Writing stuff that other people can use gives me a lot of joy and fun.

Do you have any plans to write a book?

I have a plan to write a book about my project - rom rb. This will be not too detailed book. It will explain rom rb in very basic way. Short introduction without going too much in the details because it’s big project. I don’t have time to write a big book and I want people to be able to quickly learn the basics and understand how it works. The cool part is it is possible to understand how rom works. It’s good to understand how tools that you use works.

Do you have nightmares related to your job?

I don’t remember any nightmares related to my work. I’m a happy man!

R. Schneeman: "Threads aren’t evil"

Speaker at RailsClub, 2016 Ruby Hero. Top 50 Rails contributors. Maintainer of Sprockets, Heroku
15 November

Richard Schneeman at RailsClub2017
Richard Schneeman at RailsClub2017

Speaker at RailsClub, 2016 Ruby Hero. Top 50 Rails contributors. Maintainer of Sprockets, Heroku. 

On the RailsClub 2017, we’ve managed to talk with Richard about his report, his job and the future of Ruby and Rails.

Hi! How have you been? How’s Moscow?

Hi, Moscow has been great, I got here, I guess, two nights ago, and yesterday we did some tourism with the other speakers.

It’s cold, isn’t it?

Oh my gosh, it’s freezing! I’m from Texas, so I brought extra jackets, extra shirts. It’s so cold!

Well, hope you won’t fall sick. How’s the conference going? Has it met your expectations so far?

Yeah, somebody has just handed me a giant thing of cotton candy and I wasn’t expecting it, so that’s exceeding expectations. Immediately after my talk people asked questions and, at most conferences, the questions they ask are awful, while here the questions, I think, were really good and they actually added on to what I was trying to say. I really appreciated that. A lot of the developers came up to me and had good questions after the conversation.

Moving to your report. What about threads?

Well, threads aren’t evil. That was it, end of talk. [laughing] I think Ruby developers are very afraid of threads, and they don’t understand what a thread is. So, I wanted to explain the background of threads and show some cases where we can use threads. And it’s not that scary.

Is it possible to make the usage of threads easier?

The best way that I’ve seen to make it easier is through patterns. Threads are so simple, if you do too much on top of the thread and it’s no longer a thread. For example, the guilds is being proposed and that is supposed to be easier. *Cuich* is very interested in making a very easy-to-use case, but, unfortunately, if you are going to use threads, it’s going to be difficult. So, they’re not evil, but they’re hard.

What about the programming world in the future? How do you see it in 10 or 50 years?

Brain implants, I think. And we just think of what we want to happen and then it just works.

Is there a place for Ruby?

This is a very difficult question. I’ve been programming in Ruby for 10 years and when I first started, Rails had just come out and it was Rails 0.9. Everybody was so excited. I think Rails now is very immature, and to me it’s really good. To me, this means that I can be productive, and when people add new features, it’s not a big new feature, but it’s a useful new feature, and I’m really excited about that. So, I think Ruby is a really good intersection of usability and it’s getting faster. I think this is the number one goal of the core team.

So you’ve got the positive outlook, haven’t you?

Yes, I have.

Nowadays, the job of the coder is becoming more and more popular. There are plenty of coders out there. What is your advice to stand out from the crowd?

If you want to stand out from the crown, wear a big hat! [laughing] I’ve always tried to have a large impact, so I picked up maintainership of Sprockets, because a lot of people were using it and there was a need in the community. That’s what I’ve been mostly interested in. I also think, that making sure to get out will help: speak to people, go to conferences. I’ve got a tremendous amount of good feedback writing a blogpost. I’m trying to write a blogpost once a week, which is not happening this week, I’m sorry, I’m in Russia, I’m enjoying the sites.

Talking about feedback, a lot of people do their job and get a great satisfaction from it, e.g. building a useful thing, such as an aircraft or a ship,  that serves people and they thank you. Do you happen to get this feedback or is it just like a task and money?

Oh no, no, no. Well, I like getting money, I like being paid. However, I don’t have any ads on my blog or anything like that. I like sharing what I’ve learned. I learned how to program from so many different people and they were just sharing what they knew. Now I want to share what I know and it actually ends up paying back to me, because sometimes I post and I say: “Hey! Here’s how I did something”, and people reach out to me and say: “Oh, I’ve got a better way”. So, my job is very rewarding for me in this way.

Have you ever thought about writing a book? What would it be about? What would be the name of the book?

Hmm, “Programming isn’t evil”, maybe? Actually, I co-authored O'Reilly's book about Heroku. So, I guess, I can say that I’ve written a half of a book. Talking about my own book, I’d like to, but I don’t necessarily know what people want to hear about. Some of my most popular blog posts are about the service I run called “codetriage.com” and people are very interested in things like how the does the service work, how is it run, how do I get new users. They are also interested in technical problems, like “I did this, and it was wrong. Here’s how you can learn from me”, and I think this is really interesting. It could be a need to package all of it up in a book, as it is half technical, half non-technical.

It is believed, that a person of each profession has its own professional nightmares connected to their job. Do you have yours?

I don’t know. Probably, the worst that could happen is that I was just very adamant about a certain change, and I ignored some good feedback from someone else. What I mean, is I don’t mind being wrong, but I would be very hurt if someone had been trying to warn me to do the right thing and I just didn’t listen to them at all.

Oh, that’s very it's very sentimental of you. Thank you for joining us, it’s been a pleasure to talk to you!

Thanks for having me!