6 Ruby questions to Aaron Cruz

Why did you choose to present “Ruby Alternatives” talk?

My talk is entitled "Ruby Alternatives" and it is about some other interesting technologies that have come up in the last few years that may be a better fit in your stack than Ruby. Ruby's parallelism story is particularly weak and languages like Go and Elixir have really put these concepts first. And you can see that the ideas from some of these languages are making it into Ruby, slowly but surely. Matz is even talking about possibly using the Actor pattern (first class in Elixir) to make Ruby elegantly parallel in v3. The more we look at other languages and tools, the better we get with our own.

Ruby is thought to be a language which allows writing code fast. What contributes to this peculiarity of it?

To answer a different question, the things that make Ruby wonderful to pick up and start writing code fast are also the things that make it unsafe and easy to write crap code that shoots us in the foot and is riddled with a rat's nest of unit tests.

I am looking for a language that allows me as expressive when I want and overly safe when I need to be. This is why the Crystal programming language is very interesting to me (and Matz too :) ). It is statically typed but one of the goals is to hide a bunch of this but make it available when you want it. So you get speed of code writing and the compiler can catch a ton of bugs that you would normally need tons of lines of unit tests for (e.g. technical debt). And you can compile some Ruby code directly to Crystal byte code, that's how close the syntax is!

What kinds of applications Ruby suites best for?

I have mostly moved to golang for command line tools and have half way moved to golang for "microservices". I still use ruby a lot for "microservices" (Sinatra) and any time I need to render HTML I reach for Rails as my tool of choice. But I would say, if you like writing Ruby and it doesn't need to be "blazingly fast," it can be used for almost anything. Learn different tools and use the one that suits you best for the current problem. Ruby is just a tool.

What are the main differences in creating mobile app on Ruby for iOS and Android?

Not a lot if you're using RubyMotion. Otherwise, Swift is really interesting. After learning a tiny bit about Rust and Haskell, I see a lot of similarities in Swift. I am starting to really like it after spending a few months writing it full time. Optionals are super strange at first but I have started to really like them. And with some of the new features of Swift 2, they aren't so in your face. Coming from dynamic languages, a lot of the concepts took a while to really sink in for me but I must say, it is a super cool language. Then there's Java... not as horrible as I imagined. Better than PHP :P

What blog/book/article is a “Must Read” for you?

POODR will help you write better, more maintainable code, especially for an intermediate programmer. You should watch Sandi's talks too. If you want to get to know Ruby better, Paolo Perrotta's Metaprogramming Ruby II is fantastic. Seven Languages in Seven Weeks is a contemporary classic and will make your JavaScript better (via Io) and teach you some of the wonder of logic and functional programming.

Can you make a forecast for the next Ruby year?

Rails 5 will have more loud people complaining about ActionCable. The Ruby team might be better able to explain to us what will happen with parallelism in Ruby 3 and the GIL. tenderlove will make lots of puns.