Ruby After Rails
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Title of Series | ||
Number of Parts | 65 | |
Author | ||
License | CC Attribution - ShareAlike 3.0 Unported: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this | |
Identifiers | 10.5446/37632 (DOI) | |
Publisher | ||
Release Date | ||
Language | ||
Producer |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
Ruby Conference 201419 / 65
2
3
4
6
9
11
14
17
18
19
20
25
27
29
30
32
34
35
39
40
46
47
50
53
55
56
58
61
63
00:00
Cone penetration testComputer animation
00:37
Time zoneLocal ringComputer animation
01:01
Right angleCircleComputer animation
01:25
CircleComputer animation
01:53
Information securityCartesian coordinate systemComputer clusterTouchscreenInformation technology consultingGroup actionRemote procedure callOnline chatMultiplication signMereologyNeighbourhood (graph theory)Goodness of fit
02:35
Menu (computing)OvalNeighbourhood (graph theory)Multiplication signMereologyOnline chatMenu (computing)Local ringProof theoryMeeting/InterviewComputer animation
03:16
Open setMIDI2 (number)Computer clusterSocial classInclusion mapComputer animation
03:46
Multiplication signComputer animation
04:17
Computer animation
04:41
Windows PhoneSoftware frameworkoutputWritingCASE <Informatik>Mobile appClient (computing)Scripting languageProcess (computing)Server (computing)Computer animation
05:10
QuicksortRight angleTerm (mathematics)Computer animationLecture/Conference
05:41
Polarization (waves)Statement (computer science)Web browserQuicksortFormal languageStatement (computer science)Slide ruleTouchscreenDisk read-and-write headComputer animationXMLUML
06:09
CASE <Informatik>Right angleEnterprise architectureComputer animation
06:42
Point (geometry)QuicksortMereologyProcess (computing)Right angleOffice suiteComputer animation
07:28
Bookmark (World Wide Web)Right angleProcess (computing)Bookmark (World Wide Web)Computer animation
07:52
Process (computing)MIDIDifferent (Kate Ryan album)BitXMLComputer animation
08:18
Point (geometry)Multiplication signCodeProcess (computing)Position operatorJava appletQuicksortComputer animation
08:59
QuicksortJava appletPoint (geometry)Process (computing)Inheritance (object-oriented programming)AreaComputer animation
09:30
AreaInformation privacyCausalityComputer animation
10:10
AreaFood energyType theoryData miningNichtlineares GleichungssystemMoment (mathematics)Multiplication sign
10:43
CurvatureInferenceError messageSpacetimeRing (mathematics)Process (computing)Computer programmingFormal languageMultiplication signComputer animation
11:13
Programmer (hardware)Computer programmingMultiplication signRegulärer Ausdruck <Textverarbeitung>Module (mathematics)Formal languageLine (geometry)Point (geometry)Endliche Modelltheorie
12:03
Contrast (vision)Process (computing)Formal languageOpen setEaster egg <Programm>Core dumpData miningXMLComputer animation
12:30
InformationComplex (psychology)Sparse matrixPopulation densityPersonal digital assistantRule of inferenceBeat (acoustics)Error messageDefault (computer science)CurvatureImplementationCore dumpExploit (computer security)Computer animation
12:57
Formal languageLine (geometry)Computer animationLecture/Conference
13:24
Line (geometry)Right anglePatch (Unix)Formal languageReal numberNoise (electronics)Inheritance (object-oriented programming)Computer configurationCodeFocus (optics)ExpressionLevel (video gaming)Matching (graph theory)Computer animation
14:09
Computer animation
14:38
Expected valueInheritance (object-oriented programming)Concurrency (computer science)Programmer (hardware)Data storage deviceComputer programmingMatching (graph theory)Multiplication signComputer animation
15:05
Concurrency (computer science)Concurrency (computer science)Moment (mathematics)Formal languageComputer animationMeeting/Interview
15:27
Concurrency (computer science)Formal languagePoint (geometry)Multiplication signRight angleComputer animation
15:53
Concurrency (computer science)FreezingObject-oriented programmingSet (mathematics)Point (geometry)Entire functionCartesian coordinate systemFormal languageVideo gameThread (computing)Library (computing)
16:20
Heat transferObject-oriented programmingPoint (geometry)Graph (mathematics)Multiplication signThread (computing)Entire functionConcurrency (computer science)Endliche ModelltheorieSemiconductor memoryConsistencyData structureComputer animation
17:02
Data structureSynchronizationComputer programCore dumpObject-oriented programmingMessage passingConcurrency (computer science)Data structureThread (computing)Primitive (album)Type theoryDifferent (Kate Ryan album)Java appletEndliche ModelltheorieConcurrency (computer science)Semiconductor memoryConsistencyLevel (video gaming)Product (business)Process (computing)CASE <Informatik>Computer animation
17:31
Concurrency (computer science)Goodness of fitRight angleComputer animation
17:55
Right angleProgramming languageGoodness of fitHand fanComputer animationLecture/Conference
18:20
Computer fileData miningHash functionIdentity managementComputer animation
18:50
Computer virusCodeMultiplication signRight angleWritingQuicksortProgramming languageState of matterComputer programmingProgrammer (hardware)Computer animation
20:02
Cursor (computers)NeuroinformatikGraph coloringVideo game
20:29
Grand Unified TheoryLetterpress printingElectronic mailing listGame theoryLibrary (computing)Computer programmingPower (physics)Cursor (computers)Point (geometry)NeuroinformatikCodeLie groupType theoryMultiplication signMilitary baseSocial classComputer animation
21:40
Computer programSocial classLine (geometry)Right angleComputer clusterProgrammer (hardware)Game theoryNumberMultiplication signComputer animation
22:14
Programmer (hardware)Game theoryCloningComputer animation
22:43
Computer virusExpressionFormal languageComputer programmingProgramming languagePower (physics)Computer programmingMatching (graph theory)Right angleSystem callFormal languageProgramming languageGame theoryPoint (geometry)Channel capacityFocus (optics)TelecommunicationComputer animationXML
24:09
Formal languageMereologyComputer animation
24:32
Formal languageGoodness of fitCore dumpCategory of beingComputer animation
24:56
Computer virusCategory of beingProgrammer (hardware)Programming languageComputer animation
25:38
SoftwareProgrammer (hardware)Programming language
26:11
Formal languageComputer programmingSurfaceProcess (computing)Right angleComputer animation
26:53
Formal languageDifferential (mechanical device)Multiplication signFormal languageProgrammer (hardware)Electric generatorLogical constantMathematicsComputer animation
27:36
MathematicsProgrammer (hardware)CodeProgramming languageMultiplication signFreeware
28:21
SoftwareEvent horizonVideoconferencingMultiplication sign
Transcript: English(auto-generated)
00:18
So I'm really excited that you all came out.
00:21
I, uh, I am a morning person. My name is Ernie. I am a morning person. And, um, I'd like to say that, you know, it's all just because of the way that I am normally. I've been up since, like, 5 a.m. this morning. But mostly it's because I'm from the future. And by the future, of course, I mean the Eastern time zone.
00:43
And I'd like to let you all know that in three hours you will all be bright and shiny and happy and awake as well. Uh, so I'm from Louisville, Kentucky. I started saying Louisville after they corrected me for the first two weeks when I said Louisville. And, uh, you may know us as the purveyors of fine fried chicken and also the Kentucky Derby.
01:03
I have been in Louisville for about 13 years now. And, uh, despite that, I guess I've never really properly been kind of Louisville-ized because the Kentucky Derby has never really been a thing for me. I've never gone. I've got no interests, really.
01:20
Uh, for me, I think it's kind of amusing that, uh, you know, in NASCAR, we like to tease people. We like to tease people for watching cars go around in circles continuously turning left. That's like, oh, such a redneck thing, right? We like to joke about that. And yet, if horses continually turn left,
01:41
um, for some reason, that's something you should wear fancy hats to and, uh, drink mint juleps and the like. So I'm not exactly sure about that. Uh, so I affectionately call the Kentucky Derby a NASCAR with legs. And that's, that's, uh,
02:01
that's how Louisville I am. Okay, so I work for a company called Invisium Security. And, uh, I get to work from Louisville remotely. We do application security consulting, uh, and we produce a screencast called SetCasts that, as of last Friday, we just made free. I found the most cheesy free graphic I possibly could.
02:22
I would encourage you to, uh, to check that out. So did you all, uh, have a good time last night? Did you go to parties, have a nice dinner, et cetera? Yeah? Yeah? Great. So I had a good time, too. I went with a group of friends to a restaurant called Neighborhood. It was pretty great.
02:41
I... I really enjoyed the time that... I-I really love this part about conferences in general, but I really enjoyed the time to kind of catch up with friends and just kind of chat about all the Ruby-ish and non-Ruby-ish things in our lives. I ordered a, uh, delicious-sounding item from the menu, uh, called the local animal. As a carnivore, I heartily approve of the local animal.
03:02
Um, Polish sausage, braised pork, fried eggs, mustard, molasses glaze, arugula. I'm thinking, what's not to like, right? So, uh, in Sandy's talk this morning, you may have heard her mention that we're all going to die sometime.
03:20
Now, I took a bite. It was delicious for about five seconds. And then suddenly something happened. Uh, something ignited inside my mouth. Uh, it was... it was somewhat unpleasant. Um, I asked the waitress if, in fact, there was an explosion of the dragon population in Poland.
03:41
She told me that in the mid-'90s, in fact, there was. So, um, if you happen to see the hashtag dragonflesh around, that's what that was all about last night. So, oh, yes, yes, that's right. On a bet, I had to include dragonflesh in the talk, so that's that. Okay, enough screwing around. Um, so it's business time.
04:01
You may... you may have heard... you may have heard, um, earlier this year that TDD is dead. In the ground, buried, et cetera. So I got to thinking... I got to thinking earlier this year. Uh, well, that's great, but maybe Rails is getting kind of dead these days.
04:22
And... oh, hey, I didn't expect that. So... so I've been thinking about this a lot, because it scares me, because I think, um, you know, a lot of Ruby's popularity, obviously, is owed to Rails. Wow, there are so many of you. I love this. Hi, everybody. Um, so...
04:41
I think that Rails is slightly dead, though, in the sense that what we think of as a Rails app these days is very rarely this kind of thick kind of server-side rendering stuff. It's more often the case now that we're writing APIs to support iOS devices. We're writing for JavaScript MVC frameworks. We're writing all kinds of client-side MVC,
05:00
and we're writing stuff to support that. And so I think that it's interesting, because it seems like we're all not able to escape writing JavaScript anyway. So obviously, I mean, the solution is that we should all move to Node.js, so that's what I'm here to talk to you about today.
05:21
Um... I don't want you to do that. That's a horrible idea. Uh, in fact... In fact... Oh, I'm not done trolling. Um, in fact... Um, there's this, uh, this thing, this term, right,
05:42
that we use, and it's sort of like, hey, so I'm stuck with this language on the browser. I've been using it so much. Yeah, why not just throw in the towel? Let's just use it everywhere. So anyway, the fact is, I've been talking about some stuff since that Rails is a dead slide, but a lot of you probably started kind of freaking out or tuning me out.
06:00
The interesting thing about, um, polarizing statements is that oftentimes they tell you less about what the speaker has to say than they do about, you know, what you all, you all kind of are already thinking. You know, what do you have in your head? Like, does it freak you out to hear me say Rails is dead? Does it make you go like, that's insane.
06:20
Like, I just started learning Rails two weeks ago. If it's dead, like, screw you guys, I'm going home. Um, and I really got worried about this, because I'm like, what's gonna happen to Ruby? Like, what is gonna happen to Ruby if I get into a situation where Rails is no longer, you know, the de facto standard for, like, the case for Ruby in the enterprise, right? Um,
06:41
and I can tend to romanticize things, and so, so there's, there's part of me that really sort of has to kind of check myself regularly to make sure that I'm not just kind of getting romantically entangled to the point where it becomes this, uh, this sort of creepy obsession, where it's like,
07:00
like a little intense, maybe a little too, a little too much, oh geez, I shouldn't have looked. Um, so, so there's, there's the opposite of sorry, okay, so there's the opposite of this, it keeps going, um, okay,
07:23
so the opposite of this, the opposite of this, like, where you're, like, creepily obsessed with the technology is the technology agnostic person, right? You know these people, they're all like, the right tool for the right job, right, and everything has its place, and et cetera, and I don't tend to trust these people, because usually they're just afraid to give an opinion,
07:42
like, they want to just kind of say, like, everything's right. I personally would rather have a favorite. I think it's okay. It's fine to have favorites. Um, because there are some tools that are not really suitable for any job, and there are some tools that are downright dangerous to use.
08:03
So then, so then if I'm, if I'm concerned about Ruby, if I'm concerned about what's next, then I have to start looking at, you know, why did I choose Ruby, right? And for for all of us that's a little bit different, um, in the mid-90s some of you all may have been familiar with this guy, his name is Duke,
08:22
he showed up, he is the mascot for Java, um, also in the mid-90s, this album showed up, it's called Dukey. Dukey, had a different name, as well, at some point. Um, a lot of you, uh, spent time writing Java code, and listening to Dukey,
08:41
and saying, this is awesome! Java and Dukey, forever. And then after a while, you started figuring out that maybe you weren't thinking quite such positive thoughts about Java anymore, and maybe it was like Dukey. Um, people got really fed up with the ceremony of Java.
09:01
And so a lot of people, um, came from Java to Ruby as sort of Java refugees, right? Now, I didn't really, you know, I fled from Java pretty early on, whenever I saw it, so I didn't really come as a Java refugee. Um, I would like to point out at this point, however, that, um, I was doing
09:21
Minecraft before it was cool. Um, my, so when I was in junior, early senior high, my parents, uh, wanted me, and specifically my father, wanted me to dig out an unfinished basement under the house. This is an actual shot that I asked him to send me in a hurry last week, of the area that is still not dug out underneath
09:41
the house. I think you see where I'm going with this. He gave me a pickaxe. Unfortunately, this pickaxe did not exist when I was a teenager. This pickaxe did, however. He gave me a pickaxe, and said, get down there and dig out the, underneath the house, and we're gonna make a finished basement down there, and it's gonna be great. I mean, you could have your room down there, it would be some privacy for you. He had this big
10:01
grand plan, cause he had built my house with his bare hands. And so he kind of knew a thing, or two about this. This, on the other hand, was me in junior high. I would like to say that it looked differently in senior high, but not too much. The mullet came, the mullet went, you know, not too much
10:20
better. And this, this equation really did not compute. I was not, I was not the mining type. And a lot of it came down to me not really seeing the end result, right? I spent more energy trying to figure out how to get out of that work, or kind of explain, oh yes, I totally did dig, don't you see that area over there?
10:41
Than I did actually doing the work. My father, some time ago, finally acknowledged that it turned out that once he saw me get a job doing programming, that it wasn't that I was lazy, I was just selective. I'm going somewhere with this, and it is that I hate busy work, and I think most of us do. I hate busy work even if it has an agile button.
11:01
And, and so, so because of this, I gravitated towards a language called Perl at the time. Now, Perl looks really pretty, right? It doesn't look that pretty, not at all. This is Perl,
11:20
sometimes referred to as a write-only language. This is all one subroutine from a 14,000 line long Perl module. I'd like to point out that in this subroutine, we are actually dealing with one giant regex. This is the search. This is the replace.
11:41
Yeah, right? So, one of the virtues, actually there are three virtues of Perl that the creator of Perl, Larry Wall, had coined. Laziness, impatience, and hubris. These all applied to me. Again, I was a young buck who knew lots of things and thought he was infallible.
12:01
It got out of the way, and the philosophy of Perl is there's more than one way to do it, right? And the idea is that, you know, this gives, like for me anyway, this leaves the creative process open. It's like the idea that like, you know, just because this one way is maybe better in certain circumstances, it doesn't mean it is the way to do things.
12:22
This is in stark contrast to another language called Python. Python, if you don't know, has a few little Easter eggs in its REPL. One of them is this little zen of Python thing you can get up by saying import this in the REPL. In particular, two of the core philosophies of Python that are very starkly
12:42
contrasted with those of Perl, and certainly of mine, is explicit is better than implicit, and there should be one and preferably only one obvious way to do it, which Python then helpfully goes on to show you exactly how much they mean it when you try to quit the REPL. So
13:04
that's fun. So then I found after, after, after working with Perl for a while, I found Ruby. And I was really happy. And like many of you here, I came to Ruby through Rails and I fell in love with Ruby for a lot of
13:22
reasons, but firstly, it's flexibility. It was very much in line with the there's more than one way to do it philosophy. It oftentimes feels like when you step into a problem and you're using Ruby, you know, you feel like a superhero. You feel like there's nothing you can't possibly accomplish, because if the language doesn't have the feature, you can totally monkey patch it in anyway, right.
13:44
And there's this other thing, readability, that was huge for me for Ruby. I had come from a language which you saw earlier looked like line noise. So being able to have like stuff like optional parens around things and just kind of a lot of, a lot of like a lot less noise
14:00
in the code. A real focus on readability was huge for me. And I found a lot of joy in that. I found a certain level of expressiveness. In fact Steve Yeaggy, because he's way smarter than me, long ago wrote that somehow Matz had stolen basically all the good things from everywhere and made them all work together so well that you, you didn't
14:21
even know that it was all there. And so these things all really appealed to me, and they definitely rung true for me. But, you know, it's not always, always good. Every good side tends to have a bad side, and certainly with Ruby we have flexibility, which is great, but sometimes in practice
14:41
looks a little more like this. It's really easy to shoot yourself in the foot. Not nearly as smart or elegant as you think you are most of the time. And then there's, there's the other big problem that we've had for a while, which Matz acknowledged yesterday,
15:00
which is the story that every programmer parent likes to tell their programmer children before going to bed. The concurrency story. Our concurrency story at the moment looks a little like this. So, this is another one I can't look at
15:21
because I just lose it. And, you know, a couple of years ago, a couple of years ago Matz had said that he's not the threading guy. That's cool. He doesn't have to be. He's like so many other things that aren't threading guy, and we owe the language that we use today and love today to him, so that's totally cool. But at the same time,
15:41
we need a concurrency story in today's day and age. So, you guys are thinking at this point, well, he's obviously never heard about JRuby and Celluloid. Like, clearly we have a concurrency story, right. But, I'd like to introduce you to this guy, Tony Arcieri, who happens to have created Celluloid, and
16:00
also happens to be what I would call a threading guy. And, he's actually said, actually after RubyConf in 2012, he actually said that there were four language features basically missing for him, from Ruby, that would have made his life writing concurrent applications and writing any kind of concurrency library better.
16:20
First being deep freeze, the idea of being able to freeze an entire object graph ensuring that it's immutable from that point on. That makes concurrency a lot easier to manage. Another being deep copy, giving a giving a whole set of of the object graph a new duplicate copy to ensure that you're not going to have any kind of a problem there.
16:43
Do we have a do we have a problem back there? We good? Alright. Another being ownership transfer, the idea of being able to actually take a thread that has ownership over an object graph and saying, okay this other thread owns it now, so that only one thread is able to mutate something at a given time.
17:02
And the last being concurrent data structures. You need a consistent memory model to be able to accomplish this, but the idea being that much like Java has different types of primitives and structures that you can use that are guaranteed thread safe, we'd like to be able to provide that stuff in the Ruby land as well. So he went on to finish up by
17:21
basically saying that he can't solve these problems without VM level support for these kinds of features. And I had checked up with him on IRC a while back to verify that's the case and he kind of summed it up this way. Eventually you're in a place where you're trying to build a jet engine out of Silly Putty. And Silly Putty's awesome. Silly Putty's really cool because it's super flexible and you can make
17:41
copies of the comic strip and all kinds of neat things like that. Stick things to walls, whatever, right. But this worried me because I feel like more and more I'm running up against situations where I do need a good concurrency story and so what if Rails is dead? And of course that's silly, right. Rails isn't quite dead yet. OK. We're all using Rails today,
18:01
probably. And realistically, yeah, Monty Python fans in the house. Good. But not only that, programming languages don't really die so much as just go into stasis. I mean, I still know people
18:20
today that are using RPG that are friends of mine, strangely enough. And it's not this kind of RPG. It actually looks like this. This is RPG. And it was invented in 1959. People still write it today. See, they were doing hash tagging before it was cool in RPG. And so really it came down to this.
18:42
I think some of the discomfort that I personally found whenever I was thinking about, you know, what happens to Ruby if Rails dies is that it's a question of, you know, where do I actually get my identity? If you put people to it, and you say, give them a tag like this, and you say, you can write anything on this, but it can't be your name.
19:03
They'll eventually, push comes to shove, write something in. It might be like, don't make me do this. But oftentimes, oftentimes it's gonna be, at least in the US, it's gonna be their profession, right. And so for the longest time I had seen myself as a Rails coder. And then I realized Rails was annoying me a lot.
19:22
And I really liked Ruby still. And so I was like, well no, I'm a Rubyist. That's what I am. I'm a Rubyist. And then that seemed to, that seemed to kind of narrow, because I was starting to experiment with other languages again, and finding some of them
19:41
were really interesting too. I don't want to be a Rubyist. I'm a programmer. Right. That's what I am. I'm a programmer. And these are all, I mean, these are all true things about me. They're not necessarily the truest thing about me. They aren't something that covers sort of the motivation for why I do things.
20:01
And so to explain where I'm going with this, I kind of have to back up and explain how I got into programming. So when I was five, we got an Atari 2600. This dates me, I realize. I am old. And I thought it was amazing. I love to play video games, and then
20:21
a year later we got a Cocoa 2, a TRS-80 color computer 2. And if any of you had this, you're going to find this next screen, especially nostalgia-inducing. Check out that cursor. That cursor says there ain't no party like a Tandy Soft party.
20:40
If we get somebody in the back, I'm like, woo woo! So I found out that like, oh my gosh, these games that I love so much, I could totally write these. That's within my power. I could make games just by typing things into the computer. And so like most of you, I started off with a very simple
21:01
program. Any of you familiar with BASIC? Probably did something like this. I was very excited to find out that I could make the computer lie to me. This was something that was very exciting for me. So when I discovered that I could tell the computer to lie to me, I was hooked at this point. I loved programming from that point on. OK. We're totally live coding this, by the way.
21:20
Can you tell? And so, so I really loved experimenting with all of the various various code that I could find. I would go to the school library. I would check out books and type in the stuff. And it would have an appendix like, yeah, it's great, right? So much cool. So anyway, I spent a lot of time writing BASIC. And that was the only computer
21:40
I had for years and years and years. And eventually in my CS classes at high school, they moved us on to Pascal. And my CS teacher was awesome. He told us at the time, we'll get, I'm gonna give you the entire coursework for the whole year. You can do it. However quickly you can do it. And then you can move on and do whatever you want to do.
22:02
So I blew through the book in like a month, because I wanted to get back to doing fun stuff, and I wasn't finding Pascal fun. It's like, where are the line numbers? I'm so confused right now. What happens? And immediately, immediately I went back to writing some games. Which was the whole reason I wanted to be a programmer to begin with. So I wrote a poker game
22:20
and I wrote a pong game. You know, simple little clones of stuff. I wrote a breakout clone. It wasn't that, oh, it was this one. And I realized, you know, it was just like this year that I really grasped this, because I'm slow sometimes. But like, it's not so much that I love to be a programmer,
22:43
but I love to create things. That's what I love to do. I like to build things. I like to see them work and see other people enjoy them. And that was a big wake-up call for me. And it, it explained a lot of what about Ruby specifically, specifically appeals to us
23:00
as Rubyists, right. Matt's got so much right in that the focus on, on the language was that people wanted to express themselves. And I always feel like programming is a written communication. And that it's about how it feels and that you should enjoy it and embrace that fun and creative side of programming. And that's what makes it so much fun to me personally.
23:22
Is that creative side. And I've gotten to the point where I now look at the creative capacity of a new language as the thing that makes me excited. Not just language features, right. Language features are great and all but the thing about language features is unless they're enabling you to think
23:41
about a problem in a new way or create something new and impressive that you weren't able to do before, then they're, they're not really buying you too much. Now that does not mean stay like me with BASIC for years and years and just, you know, write little simple games. There's a lot of value in checking out new languages because they help you
24:01
think about problems differently. And, but I want to talk about the really, the most important language feature that, that Ruby has in my opinion. And that's the people. And that's what I love about RubyConf and that's what I love about Ruby conferences in general. Is that you get a chance to meet other Rubyists.
24:21
The Ruby community is by far, far and away, Ruby's best language feature. And I love all you guys. You're awesome. And I'm so thankful to be part of this community. And you find that Rubyists are, are in generally pretty happy people. They're, they're innately curious people. And, and
24:41
we like to be, you know, and we're constantly being surprised, usually in good ways, by how, by how flexible the language is and by how much we can accomplish with it. But the really important thing in the core in all of this is that I think that in the Ruby community we get better than many other communities that in reality we're all human beings and we have stories
25:01
and, and we relate to one another as individuals a lot more than just people that crank out code. And that's why I've come to kind of, you may have noticed a lot of people going out and kind of checking out new languages, new technologies. It's pretty common now. I know Tony's pretty excited about Rust these days.
25:21
And I know that we have Matt Emanetti is very into Go. We have people checking out Elixir and in fact one of our own, Jose in fact, created the language. And I got a little worried like everybody was going elsewhere seeking new and exciting things and what'll happen to Ruby. But I've come to realize that that diaspora of Ruby programmers
25:41
turns out to be a good thing. But while we're on the topic of diaspora, I don't mean, I don't mean this, this goofy social networking thing that probably nobody uses. Do you think it really makes any sense to trust any kind of software whose logo is an asterisk? Like, it feels like it's hiding something. It feels like it's hiding something from you.
26:04
So. But, so we have this diaspora that we're seeing and I think it's okay. You know, Rubyists are going out and they're checking out Scala and they're checking out Haskell and they're checking out Elixir. And it's okay because when we go out to
26:20
these different languages, you know, we're bringing a... You noticed. Okay. Alright. So, and maybe, maybe a few of us, maybe a few of us... Go ahead.
26:41
You can do it. There we go. So maybe a few of us are even going back to Java. But, wherever we go, we're bringing this notion that, you know, the language should serve the programmer. The programmer shouldn't serve the language. And that, believe it or not, in a lot of communities
27:01
feels kind of foreign. Like, well, what do you mean this is unwieldy? But we have a really high bar as Rubyists for how far we want the language to come to be human. To meet us where we are. And I think that's a really important differentiator. And more importantly than that, as we go out and as
27:20
we spend time in these other communities, we come back with important ideas. We come back sometimes with people. They're like, I gotta check this Ruby thing out, because these guys are all deliriously happy, like, all the time. What's going on with that? And so, it's really important to remember that, you know, we don't, like Sandy said this morning,
27:41
change is constant. What we're doing, what we're doing is going to impact future generations of programmers. And we owe a lot of what we have now, because we're standing on the shoulders of giants, people that have created languages before. And so, it's really important to realize that these languages don't die. The ideas and the people
28:01
and the community, that's, that's what endures. These relationships that we make at conferences like this, that's what endures. And these ideas that we bring, we need to carry along with us, so that Ruby, whether we all write Ruby code ten, twenty years from now, Ruby will still be alive and well in the philosophy that we carry with us today.
28:21
That's, that's really all I've got. Thanks so much for your time.