Talks

Ruby After Rails

Ruby After Rails

by Ernie Miller

Ruby After Rails presents an examination of Ruby's future in light of the declining dominance of the Rails framework. Speaker Ernie Miller discusses the historical context of Ruby's rise, largely attributed to Rails, and raises concerns about the implications of Rails potentially falling out of favor.

Key points discussed include:
- Rails' Evolution: The shift from traditional Rails applications focused on server-side rendering to a contemporary landscape where APIs and client-side frameworks dominate.

- Identity Crisis: Miller reflects on his own identity as a Ruby developer and the fear surrounding Ruby’s relevance if Rails were to become obsolete. He suggests that his programming identity cannot be solely tied to a single framework.

- Technology Opinions: The talk touches on the polarization within the programming community regarding tools and languages, contrasting the perspectives of those who champion specific technologies versus those who advocate for technology-agnosticism.

- Flexibility and Readability: Miller expresses his fondness for Ruby due to its flexibility and readability compared to other languages, notably Perl and Python, which cater to different programming philosophies.

- Concurrency Challenges: The speaker highlights Ruby's struggles with concurrency, referencing the insights of Tony Arcieri regarding missing language features necessary for better concurrent programming.

- Community and Growth: He emphasizes the importance of the Ruby community, its encouragement of creativity, and the exploration of new languages by Rubyists as a sign of growth rather than a departure from Ruby.
- Legacy and Future: The concluding thoughts focus on the lasting legacy of Ruby, the continuing influence of its community, and the idea that while frameworks may change, the fundamental relationships and ideas within programming endure.

In summary, Miller advocates for a broader identity as programmers rather than being confined to a single language or framework. He expresses hope for Ruby's future, suggesting that even as technologies evolve, the community and ideologies that surround them contribute to ongoing development and innovation.

00:00:18.480 I’m really excited that you all came out. I am a morning person.
00:00:20.439 My name is Ernie. Normally, I’ve been up since like 5:00 a.m. this morning, but mostly it’s because I’m from the future. By the future, of course, I mean the Eastern Time Zone.
00:00:26.519 I’d like to let you all know that in 3 hours, you will all be bright and shiny, happy, and awake as well.
00:00:36.800 I’m from Louisville, Kentucky. I started saying "Louisville" after they corrected me for the first two weeks when I said "Louisville." You may know us as the purveyors of fine fried chicken and also the Kentucky Derby.
00:00:51.640 I have been in Louisville for about 13 years now, and despite that, I guess I’ve never really been properly "louisv alized." The Kentucky Derby has never really been a thing for me. I’ve never gone, and I have no real interest.
00:01:04.559 I think it’s kind of amusing that in NASCAR, we like to tease people for watching cars go around in circles continuously turning left. That’s considered a redneck thing, right? We like to joke about it.
00:01:16.080 And yet if horses continually turn left for some reason, that’s something you should wear fancy hats to and drink mint juleps. I’m not exactly sure about that. So I affectionately call the Kentucky Derby "NASCAR with legs." That’s how "Louisville" I am.
00:01:25.880 So I work for a company called Enisum Security, and I get to work from Louisville remotely. We do application security consulting and produce a screencast called Set Casts. As of last Friday, we just made it free. I found the most cheesy free graphic I could possibly find and would encourage you to check that out.
00:02:06.680 Did you all have a good time last night? Did you go to parties or have a nice dinner? Yeah? Great! I had a good time too. I went with a group of friends to a restaurant called Neighborhood, and it was pretty great.
00:02:28.720 I really enjoyed the time to catch up with friends and just chat about all the Ruby and non-Ruby things in our lives. I ordered a delicious-sounding item from the menu called "The Local Animal." As a carnivore, I hardly approve of a dish with Polish sausage, braised pork, fried eggs, mustard, molasses glaze, and arugula. I mean, what’s not to like?
00:02:55.760 In Sy’s talk this morning, you may have heard her mention that we’re all going to die sometime. Now, I took a bite of the food, and it was delicious for about 5 seconds, and then something happened. Something unpleasant occurred in my mouth.
00:03:10.319 I asked the waitress if there had been an explosion of the dragon population in Poland, and she told me that in the mid-90s, in fact, there was. So if you happen to see the hashtag "Dragon Flesh" around, that’s what that was all about last night. Oh yes, I had to include Dragon Flesh in the talk.
00:03:24.159 Okay, enough screwing around. It’s business time. You may have heard earlier this year that TDD is dead, buried, etc. So I got to thinking earlier this year that while that might be true, maybe Rails is kind of dead these days.
00:03:59.879 I’ve been thinking about this a lot because it scares me. A lot of Ruby’s popularity is owed to Rails, and I think that Rails is slightly dead now in the sense that what we think of as a Rails app these days is rarely this kind of thick server-side rendering stuff. It’s more often the case now that we’re writing APIs to support iOS devices and frameworks for client-side and JavaScript MVC.
00:04:43.240 It seems like we can’t escape writing JavaScript anyway. Obviously, the solution is that we should all move to Node.js. But I don’t want you to do that—that’s a horrible idea. I’m just kidding about that.
00:05:00.840 This is a term we use: "I’m stuck with this language on the browser; I’ve been using it so much that I might as well throw in the towel and use it everywhere." I’ve been talking about some stuff since that Rails is dead slide, and many of you probably started freaking out or tuning me out.
00:05:31.320 The interesting thing about polarizing statements is they tell you less about what the speaker has to say and more about what you all might be already thinking. Does it freak you out to hear me say Rails is dead? Does it make you think, 'That’s insane! I just started learning Rails two weeks ago. If it’s dead, screw you guys, I’m going home.' ? I really got worried about this because I thought, what's going to happen to Ruby? What happens to Ruby if I get into a situation where Rails is no longer the de facto standard for Ruby in the Enterprise?
00:06:01.480 I have a tendency to romanticize things, so there’s part of me that has to check myself regularly to make sure I’m not getting romantically entangled to the point where it becomes a creepy obsession.
00:06:36.360 The opposite of being creepily obsessed with a technology is the technology-agnostic person. You know these people: they say, 'The right tool for the right job.' They think everything has its place. I don’t tend to trust these people because they often just want to say everything is great, and I personally would rather have favorites.
00:06:51.200 It’s okay to have favorites because some tools are not really suitable for any job, and others are downright dangerous to use.
00:07:03.760 If I’m concerned about Ruby and what’s next, I have to start looking at why I chose Ruby. For all of us, that’s a little bit different. In the mid-90s, some of you may have been familiar with Duke, the mascot for Java.
00:07:50.120 Also in the mid-90s, this album came out called Dookie, which had a different name at some point. Many of you spent time writing Java code and listening to Dookie and probably said, 'Java is awesome!' However, after a while, you could have started to feel differently.
00:08:11.640 People got fed up with the ceremony of Java, and as a result, many came to Ruby as Java refugees. Now, I didn’t exactly flee from Java early on. I would like to point out at this point, however, that I was doing Minecraft before it was cool.
00:08:36.360 When I was in junior high, my parents, specifically my father, wanted me to dig out an unfinished basement under the house. He gave me a pickaxe and said get down there and dig it out!
00:08:59.040 However, this equation did not compute because I was not the mining type. A lot of it came down to not really seeing the end result. I spent more energy trying to figure out how to get out of that work than actually doing it.
00:09:17.199 At that time, my father finally acknowledged that it turned out that once he saw me get a job doing programming, it wasn’t that I was lazy, I was just selective. Somewhere in this is that I absolutely hate busy work, and I think most of us do.
00:09:38.360 I gravitated towards a language called Perl, at the time. Perl looks pretty wild; sometimes it is referred to as a write-on language. This is part of one subroutine from a 14,000 line long Perl module, and in this subroutine, we are dealing with one giant regex.
00:10:05.040 There are three virtues of Perl that the creator, Larry Wall, coined: laziness, impatience, and hubris. These all apply to me. I was a young buck who thought he was infallible.
00:10:38.440 The philosophy of Perl is that there’s more than one way to do it, and that for me this leaves the creative process open. Just because one way may be better in certain circumstances doesn’t mean it is the only way.
00:11:03.000 This is in stark contrast to another language: Python. Python has some Easter eggs in its REPL. Two of the core philosophies of Python that starkly contrast those of Perl are: explicit is better than implicit, and there should be one, and preferably only one, obvious way to do it.
00:11:37.760 So after working with Perl for a while, I found Ruby, and I was really happy. Like many of you here, I came to Ruby through Rails, and I fell in love with Ruby for a lot of reasons: firstly its flexibility.
00:12:08.680 Ruby’s flexibility aligns well with the philosophy of having more than one way to do it. It often feels like when you step into a problem using Ruby, you feel like a superhero. You know, if the language doesn't have the feature, you can totally monkey patch it in.
00:12:35.800 Another thing that appealed to me is its readability. I had come from a language that looked like line noise, so being able to have optional parentheses and a lot less noise in the code was huge for me.
00:13:05.160 I found a certain level of expressiveness in Ruby. Steve Yi, who is much smarter than I am, long ago wrote that Mats had stolen all the good things from everywhere and made them all work together so well that you didn’t even know they were there.
00:13:46.760 However, with Ruby, every good side tends to have its bad side. Yes, we have flexibility, but sometimes it leads to shooting yourself in the foot. You might not be as smart or as elegant as you think.
00:14:21.760 There’s a big problem that we’ve faced for a while, which Matt acknowledged yesterday, and that’s about concurrency. Our concurrency story at the moment looks like this.
00:15:00.210 Matt said he’s not the threading guy, and that’s totally fine. He's the creator of a language we love today. However, we do need a concurrency story in today’s age.
00:15:45.560 I'd like to introduce you to Tony Arcieri, who created Celluloid and is very much a threading guy. He mentioned that there are four language features missing from Ruby that would make writing concurrent applications easier.
00:16:30.240 The first feature is deep freeze, allowing the freezing of an entire object graph. Secondly, deep copy would let you duplicate the object graph to prevent issues. Thirdly, ownership transfer would enable one thread to own an object at a time. Finally, we need concurrent data structures.
00:17:25.520 Tony pointed out that he can’t solve these problems without virtual machine-level support.
00:17:50.160 In summary, he feels like trying to build a jet engine out of silly putty becomes a daunting task. Silly putty is awesome and flexible, but it doesn’t work for everything.
00:18:20.080 Consequently, I believe that Ruby may not be dead yet, but what if Rails were? That’s silly; Rails isn’t dead yet. We’re all using Rails today, and realistically, programming languages don’t die; they simply go into stasis.
00:18:41.239 For example, I still know people using RPG. They will tell you it’s not the gameplay, but the creation of it.
00:19:05.000 As I reflect on Ruby and Rails, I find discomfort in contemplating what happens to Ruby if Rails dies. It’s a question of where I derive my identity. If someone says, 'You can write anything, but it can’t be your name,' many will resort to their profession.
00:19:36.960 For the longest time, I saw myself as a Rails coder, but realized that Rails annoyed me a lot. I still love Ruby, and thus I declare, “I’m a Rubyist.” However, that felt narrow as I began exploring other languages.
00:20:09.240 Ultimately, I don’t want to limit myself to being a Rubyist; I want to be simply a programmer. These are all true aspects of my identity, but they don't account for my motivations.
00:20:55.560 My journey into programming started at age five with an Atari 2600 and later a TRS-80 Color Computer 2. I realized I could create games by typing on the computer and fell in love with programming.
00:21:43.360 My passion was not just about programming but about creating things. This realization is what makes Ruby appeal to me, along with the supportive community that nurtures creativity.
00:22:15.480 At conferences like this, we not only meet other Rubyists, but we also share our stories as individuals. The Ruby community is by far its best feature.
00:22:49.920 You will find that Rubyists are generally happy, curious people, constantly surprised by the flexibility and what we can accomplish. We realize we are human beings with stories and connections beyond just cranking out code.
00:23:32.800 We’ve seen a lot of Ruby programmers experimenting with and checking out new languages. For instance, Tony is excited about Rust, while others are exploring Elixir and Go. This exploration is not a departure but rather a growth opportunity.
00:24:07.039 Rubius establish a bar for how far we want to go. We believe the language should serve the programmer, not the other way around.
00:24:36.800 As we spend time in other communities, we return with important ideas, advocating for Ruby to meet our human needs. We don’t perceive languages to die; rather, the ideas and relationships formed endure.
00:25:06.720 Finally, we owe much to the giants before us. What we do now influences future generations of programmers.
00:25:35.120 Thank you for your time, and may Ruby continue to thrive for many years to come.