Bummer! This is just a preview. You need to be signed in with a Pro account to view the entire video.
The Future of Ruby on the Web48:19 with Aaron Patterson
The Web is constantly changing, and technology is constantly evolving. These are facts that everyone knows. With these ideas in mind, let's look at what Ruby and Rails not only can do, but must do in order to push technology forward on the web
It is my pleasure to introduce our first speaker. 0:01 His name is Aaron Patterson who was born and 0:04 raised in the mean streets of Salt Lake City. 0:06 Which, for those of you not around here, are, is feared for its wholesomeness. 0:09 His only hope for survival was to join 0:14 a local gang of undercover street ballet performers. 0:16 Called the tender tights. 0:20 He has learned however to combine the art of street ballet with a craft 0:22 of software engineering and he is now 0:25 currently pirouetting through processing and programming for AT&T. 0:27 So, let's put our hands together for Aaron Patterson. 0:32 [NOISE]. 0:34 Good morning. 0:41 Good morning. 0:43 Yes, Tuesday morning. 0:44 Yeah. 0:47 Just so you now there, I have some spoiler 0:49 alerts or there is a spoiler alert in this talk. 0:51 There some spoilers. 0:54 I hope all of you caught Game of Thrones. 0:55 Sunday, cuz if you didn't I'm gonna totally spoil it. 0:57 so, so, sorry about that in advance. 1:03 But just so everybody knows Dumbledore dies. 1:07 [LAUGH]. 1:11 I'm just kidding, so anyway welcome, welcome to Future Insights live. 1:12 I'm really happy to be here, I'm very honored that 1:17 I can be here speaking in front of you today. 1:19 Thanks to all the staff, thanks to everyone for having me, I'm really excited 1:23 to be in Las Vegas which I'm not sure if you're familiar this is actually 1:27 Spanish for the Vegas, so the first time I came to Las Vegas 1:30 was about, well actually the last time I came to Las Vegas was about ten years ago. 1:37 And I came with a bunch of coworkers. 1:42 And they said, hey, okay, we're gonna go to 1:44 Las Vegas, and let's dress up and go out. 1:46 And I was like, sweet! 1:48 Let's dress up and go out! 1:49 so, we said, okay, we're gonna do that, but they 1:51 never really, like, we never really discussed what that actually meant. 1:55 Like I didn't know, I wasn't, they weren't very specific. 1:58 I was just like alright we'll dress up and go out. 2:02 But the problem was it turns out when they said dress up and go 2:04 out, they were talking about like at the Roxbury dress up and go out. 2:07 And I was thinking more like a fear and loathing in Las Vegas dress up and go out. 2:12 So anyway we all go like, like okay we're gonna go out now. 2:18 So we all go back to our hotels to change. 2:21 And I like, they all come out in you know black what ever dress up stuff 2:24 and I come out in Hawaiian shirt and 2:29 they're like what are you doing, we're dressing up. 2:31 And I was like, I am, dressed up, I don't 2:33 understand Anyway, so [LAUGH], I had to go out like this. 2:37 They went to the Palms thing, Palms Casino club and 2:43 I could not go in, because they had a dress code. 2:47 But that was actually okay, I ended up just 2:50 going and playing blackjack, I won 600 bucks, so, yes. 2:52 But anyway, the point of this is that, I am not always right. 2:58 So we're gonna talk about the future in this talk. 3:02 And I'm not always right so just bear that in mind. 3:04 Actually had a hard time coming up with the content for this talk cause I 3:08 was thinking about the title like the 3:11 name of this conference is future insights live. 3:13 And I assume that we're being recorded, I 3:16 believe that we're being recorded so unfortunately that 3:19 means the people who watch this in the 3:21 future it's not actually gonna be live anymore. 3:23 So, it's just future insights. 3:26 But those people are also in the future so 3:27 I can't really say that its the future either. 3:29 So, I was thinking maybe its just hopefully some insights, just insights. 3:32 And I am really, really hoping i, hopefully, 3:37 I can give you some insights into the future. 3:39 but, I am gonna talk about the future of Ruby. 3:43 Rails and web but I am not a fortune teller so I am actually an agile 3:45 web developer, I just do, I develop web 3:52 applications, I work on software, I work on code, 3:55 but I'm an agile developer so thinking about 3:58 the future is really strange to me because 4:00 I think about, I mainly just think about 4:02 like, Okay, how do I solve this problem immediately. 4:04 Like I need to solve this problem and then we 4:07 move on to the next one, I don't really think. 4:08 Too far in advance. 4:10 This was actually very difficult for me to come up with this stuff. 4:11 And I kept thinking about, Karnak. 4:16 [LAUGH] Karnak from the Johnny Carson show. 4:18 Like trying to tap the, tap the envelope on my forehead. 4:21 So, I'm gonna do a lot of that forehead tapping. 4:24 So I thought about this. 4:28 Like well how can I predict the future and I kept thinking well maybe if we think 4:29 about the future as being in a line, like, 4:34 if we think that progress is a line, right, 4:37 if we look at our past and try to figure 4:41 out how technology has progressed through the past maybe we 4:43 can find out something in common among what has happened 4:46 and say well let's take, let's take that particular trait. 4:49 And apply it to technology and say like, how. 4:52 If we apply that, how will that move our technology forward? 4:55 So what I'm gonna do is I'm gonna take a little, take a look 4:59 at like what we've been doing, or what I've been doing in my career. 5:01 And then try and figure out something that's in common among 5:05 all of that, and apply that to technology in the future. 5:07 So we can kinda figure out where we're goin'. 5:11 So I'm gonna start at the beginning. 5:14 My name is Aaron Patterson. 5:15 If you see me on the internet, this is what I look like. 5:17 My Twitter name is tenderlove. 5:20 I don't dress like that usually. 5:22 [LAUGH] I'm on the rail Ruby Core Team. 5:25 I'm also on the Rails Core Team. 5:29 This doesn't mean that I know what I'm talking 5:31 about, this just means I'm terrible at saying no. 5:33 So I'm actually, I'm actually the top contributor to rails currently. 5:37 I think this is a little bit out of date but I am the top contributor. 5:41 I have tons of internet points there, 5:44 like, look at that, over 4,000 internet points. 5:46 I own a Google Glass. 5:49 How many of you own Google Glass here? 5:51 Anybody? 5:53 No. 5:54 Well I own one, this is what it looks like. 5:54 It works really well. 5:59 I'm not sure what the hype is about. 6:00 Works as well as my other glasses, I don't know. 6:03 I really enjoy pair programming. 6:07 This is me pair programming. 6:09 There's an action shot of me pair programming. 6:11 Actually this is, so I. 6:13 The, the hardest part of pair programming is getting the TTY set up. 6:15 It gets, the bits get really sticky. 6:20 I've also full stack engineer for delicious full stack engineer for AT&T. 6:22 I also own my own consulting company, hold on, where is the mic. 6:29 [MUSIC] 6:36 This is, [LAUGH] This is my consulting company, Adequate Industries. 6:45 We do everything adequately. 6:50 [LAUGH] Just good enough. 6:51 don't, don't ask me to come work for you we already have enough clients. 6:55 [LAUGH] 7:00 Most of our projects come in on time, on budget. 7:03 [LAUGH] It's good enough. 7:08 Anyway I also have two cats, this is one of them. 7:10 His [LAUGH] his name is Grover Trout Puff Puff Thunderhorse 7:13 [LAUGH] I also wanna note this is my other cat. 7:18 Her name is C-Tech, C-Tech Facebook YouTube 7:21 but the name changes depending on the day. 7:24 Anyway this, [LAUGH] so, she actually does most of my programming. 7:27 [LAUGH] [LAUGH] 7:31 And you totally can't see this in the picture 7:35 but I mean there's tons of text on this. 7:37 [LAUGH] 7:40 Anyway, I think this is actually her 7:43 natural habitat is living on, living on laptops. 7:46 anyway. 7:51 So my wife, like, we bought these two cats and 7:51 my wife was like okay, she actually told me this yesterday. 7:53 She's like, the reason we got, we got two cats is 7:56 so that you'll stop looking at pictures of cats on the internet. 7:59 [LAUGH] And I'm like, that's not how it works! 8:02 I don't think you understand. 8:07 We're gonna have cats and I'll look at 8:08 pictures on the, cat pictures on the internet. 8:10 Anyway, I'm. 8:13 I'm also extremely shy, and the reason is 8:14 because I feel like I'm a constant failure. 8:16 Of, [LAUGH] So I told my friend, like a, a very close friend of mine, like, hey Jose, 8:18 I, I feel like, i got ve, really scared of speaking in front of large audiences. 8:25 Like, I'm, I'm scared of speaking in front of people. 8:29 And I'm like, what do i do? 8:31 How do I calm down? 8:32 And he said, Eric. 8:33 Think to yourself just what you need to think 8:35 about, just think about what would Freddie Mercury do. 8:37 So this is what I think about when I'm 8:41 on stage, thinking about exactly what would Freddie Mercury do. 8:43 Also like as I said I'm actually very shy, but I want all of you to come talk to me. 8:47 So talk to me about the, the stuff we are going to talk about today. 8:52 About ruby, rails, anything we can talk about swift too. 8:56 But I am very shy, so I brought a whole bunch of stickers with my cat. 9:00 So if you don't know what to say to me, like say 9:04 hey Eric can I have a sticker then we can talk about technology. 9:07 So, my language background is I wanna talk a little bit about my language background. 9:12 Then we're gonna investigate like some 9:19 of the different attributes about these particular 9:20 languages, and then try to take those attributes and apply them to the future. 9:23 And in school I studied C and C++, so that's basically what my background is. 9:29 I, assume most people my age, probably studied C or C++ in school. 9:33 My first actual development job was in PERL. 9:40 I started my programming career in 1999. 9:44 I got a job, doing programming to pay for school. 9:47 Where I was studying programming, so I, I was programming 9:54 in order to pay for a computer science degree, oh, 9:58 and I promptly dropped out of school in 10:02 order to pursue my career in computer science. 10:04 Anyway my first open source code was in 10:08 2002 on a project called Lingua en name case. 10:11 Which was kind of weird, because at the time, basically, I 10:14 worked at this company that had a large database of people. 10:17 And the people's, for some reason, we stored everybody's, well actually 10:20 know the reason, we stored everybody's name in upper case, always. 10:25 And the reason was because,. 10:31 Oracle could search faster on uppercase names so whenever you like 10:33 put in, you registered on a website we would store your name 10:37 completely in uppercase and as you can imagine like this is probably 10:40 bad, we don't want to display your name always in uppercase, right? 10:43 So we used this processing, this, this module in order to properly case your 10:47 name as we displayed it and as you can imagine this like totally fails. 10:51 As soon as you get people from other 10:57 countries registering for your website it's just broken. 10:59 It can't work, So I submitted patches to this 11:01 to kind of make it work for Spanish names. 11:04 And other names but it's like just don't I mean I feel like 11:07 today as a developer we're smart enough not to do this type of stuff. 11:11 If you need to store in upper case store it twice please [LAUGH]. 11:15 Anyway, at the same job, I started doing, I started doing Java. 11:20 This is in the early 2000s. 11:23 They said, Aaron, you need to learn Java. 11:25 Either that or you need to find a new job. 11:28 And I was like, I will learn Java. 11:30 That sounds what, like what I would do. 11:32 And I didn't really like it too much. 11:36 And mainly, the reason was because I had to 11:38 keep typing like something, something, factory, factory, factory builder. 11:40 And at the end of the day, I just felt 11:44 like, I was just like derr I can't handle this. 11:46 And unfortunately I don't actually have any open source code in Java at all. 11:50 And I think it's because I've never 11:55 actually written Java for fun [LAUGH] .Um, most 11:56 of my stuff is in Ruby, but while I was, while I was a Java developer. 12:00 Started learning Ruby. 12:04 I was there like, during my day, day job like writing in Java, writing in Java 12:07 all day and i'm like man, this sucks, Perl six is gonna be out any day. 12:13 As soon as Perl six is out, boom this java thing is gone. 12:17 [LAUGH] We all know how well that worked out. 12:20 So anyways, A friend of mine said hey Arron. 12:26 You should check out, check out this Ruby programming language, so I did 12:31 I was programming in Ruby and like learning it on the side at work. 12:35 And I was just you know coding in Ruby on the 12:39 side at work and, and I remember very clearly my first. 12:43 Major Ruby program outside of like, hello world. 12:47 And it had to do with Lord of the Rings. 12:53 So basically, back then in 2003, it was, it was my birthday, 12:57 2003 and they were showing, they were going to show all three. 13:01 Movies, it was like trilogy Tuesday is what they called it. 13:06 They were going to show all three movies in one day. 13:09 And they were going to show return of the king a day early. 13:12 So you got to see all three, like 12 hours of movies. 13:14 And then like i've got to see this, I have to see this. 13:17 So I go there, they put their tickets on sale at 10 am. 13:20 Right? 13:26 Of course 10 a.m. 13:26 is like work hours. 13:27 But I want to buy them anyways so I go on the website at work. 13:29 And of course the website is totally 13:32 crashing because we can't scale anything in 2003. 13:34 Of course movie theatres can't. 13:36 So the website is totally crashing, and I'm sitting there like, doing my job. 13:40 I'm like, well, I also have to work, but 13:44 an interesting thing about programming in Java is that 13:46 it took five to ten minutes every ti, to 13:49 recompile every time I needed to make a change. 13:51 So I was like, okay, I got an idea. 13:53 What I'm gonna do is, I'm gonna do a little bit of work. 13:56 And, it'll recompile. 13:59 And, while it's recompiling, I'm gonna write a program to go to 14:00 the movie theater website, and try to by these tickets for me. 14:05 So, as it's recompiling, I do this. 14:09 And, after about two or three recompiles, I finally finish. 14:12 Finish this program and what it does, it 14:15 just goes fills out the form on the website. 14:17 Enters my name, my credit card information, 14:20 and then tries to purchase the tickets, right? 14:23 Now the problem, the problem was, 14:26 Well so, I, I output a bunch of log messages 14:31 and then I got back to work, I just don't forget 14:33 about it, but the problem was that, I dint know 14:36 what the success case was, cuz every time I tried to 14:39 purchase the tickets, it didn't, you know it failed, every 14:42 time, so basically what i do is I just output a 14:45 log message saying Hey, I submitted the forum this is 14:48 what I got to and eventually after a while I noticed. 14:51 In my terminal I'm like oh, the, these log messages look different. 14:54 So I go to the website and I fill out the form and 15:01 it was succeeding and I look at the terminal, I'm like oh shit. 15:04 So I call up, I call the credit 15:09 card company and I'm like, hey, credit card company,. 15:12 How many charges have I made to my credit card today? 15:16 [LAUGH] Which is a funny question to ask, cause shouldn't you know that? 15:20 [LAUGH] They didn't question that at all for some reason. 15:25 Oh, you've made one charge to your credit card today for like 60 bucks. 15:28 And I was like oh, that's great, thank you. 15:31 [LAUGH] So, I called the movie theater company and I'm like hey, 15:33 I, how many tickets have I purchased today? 15:39 Which is another funny question to ask, cause 15:44 should you know how many tickets you've purchased? 15:46 And the person at the movie, the company was 15:48 like, I gave them my information, they look it 15:50 up, and they're like, well, you purchased 2 tickets, 15:53 but it looks like we've tried to charge your card. 15:56 Hundreds of times. 16:00 And I was, like, oh, yeah, you see, I was just clicking Refresh a lot. 16:02 [LAUGH]. 16:08 And of course they believed me fortunately. 16:12 anyway, so the lesson from this is to use somebody else's credit card obviously. 16:15 [LAUGH] anyway from that, from that point on it was at 16:20 that point I was hooked, I was hooked on Ruby programming language. 16:24 I was hooked on it. 16:27 I could get this program done so, so fast I was, I was so happy about it. 16:28 I,I was able to get this program to. 16:34 You know, buy movie tickets for me and I 16:36 could write the program in like 20 minutes or 16:38 so and it just like, besides that little snafu, 16:40 tiny, tiny snafu there at the end, it worked great. 16:43 And I felt great and the reason was because I had 16:47 high productivity with this, I could get, get my work done quickly. 16:49 And I think about like, maybe that same year 16:54 or a year later, Ruby on Rails came out. 16:57 And I watched the, like, I watched the thing, how to 17:00 be a, how to build a blog with Ruby on Rails. 17:04 I got it hooked up to our Ora, Oracle database and 17:07 I was able to reproduce parts of our website using Rails. 17:10 And I was so, like, I had the exactly 17:14 the same experience with this it's just doing Ruby programming. 17:16 Ruby, itself, is that, I was able to build websites so quickly. 17:19 I was able to get my work done so fast. 17:24 And,. 17:28 I was so happy about Ruby, so happy about Rails, I really wanted to work in it. 17:29 And the reason was because it was a high productivity. 17:35 Now, I didn't realize this at the time, I just thought, man, I've got to do this. 17:38 I have to do this. 17:42 I have to be Ruby programmer, but I didn't know why. 17:44 I was like it just feels right. 17:48 So I quit my job there and I entered the start up world. 17:52 We'll actually technically that was a start up 17:58 that previous job was a start up, but 18:01 they had grown to I don't know when I started there they were about 20 people. 18:03 And they grew to about 300 or so. 18:06 By the time that I had quit. 18:09 So I went to another startup that did braille [?] development. 18:11 And it was at this point where my open source software really increased. 18:16 This is when I started doing the majority 18:20 of my open source programming was at this job. 18:22 And I think it was because, oh,. 18:25 Not necessarily because well the reason I was doing a lot of 18:30 open source at this job was because I loved ruby so much. 18:33 It became my hobby. 18:36 I did it in my free time. 18:37 But also like I didn't actually like the job too much. 18:40 It was in online advertising and I'm just not a huge fan. 18:43 Like it's not the most interesting. 18:47 Task in the world so, it was nice to be able to escape from that. 18:50 But finally, like finally after a while working 18:55 at this company I entered the corporate world. 18:58 I went to work for AT&T. 19:01 They hired me. 19:02 And when I, when I started with this company, it blew my mind that. 19:06 We had 50 rails developers, 50 ruby on rails developers. 19:11 And I was like what's going on? 19:15 I didn't even know that 50 people in the world developed rails. 19:16 Let alone 50 people at the same company developing rails. 19:20 Rails applications. 19:25 So I was really surprised when they hired me, or really surprised when I got there. 19:26 And all of these people were using my software already, they were 19:30 all using stuff that I had put out, put out in the wild. 19:33 And the reason that they chosen rails and the reason that they had chosen 19:36 my software to work with was because of the high productivity it gave them. 19:40 They're able to get all their work done 19:46 much, much faster using, using Ruby and using Rails. 19:48 So eventually, like, I noticed this. 19:52 I noticed this. 19:56 I was just doing rails of element work. 19:57 Working on websites for them, but I dint have time to work on open 20:01 source software anymore, so one night I was out, I was out with 20:06 my wife and we were, we were at a bar and it was Friday night. 20:11 And I am sitting there talking to her and we've had a couple of drinks and I am like 20:17 I want to work on Open Source all day and, my wife says to me, you should do that! 20:22 And I was like, okay, what do I, how do I do that? 20:29 And she was like, you should give a presentation to your boss. 20:33 And I was like, I'm gonna give a presentation to my boss. 20:36 So, it's Friday night like 11 p.m. 20:39 So I get on my phone and I text my boss. 20:42 I'm like, we need to talk, send. 20:44 [LAUGH] 20:48 And my boss, who has like, you know, two kid, family, 20:50 two kids, is like, he responds to me, and he's like. 20:54 Okay when? 20:59 And I was like tomorrow morning send. 20:59 And of course, tomorrow morning being Saturday morning. 21:04 I wasn't really thinking, thinking too straight and he's like okay, fine. 21:06 So we go home, go home, I put together a presentation about all this stuff I 21:10 had been working on and how it provided 21:14 our, how it provided our employees with more productivity. 21:16 I said like, well, I made this presentation saying look, 21:20 I've done all this stuff, if I can increase the productivity 21:25 of 50 developers, if I can reduce their work by 21:29 like two minutes per day, I'd easily pay for my salary. 21:31 So, I gave the data, you know, boss calls me up Saturday morning. 21:36 I work from home. 21:41 I work from home and I was working from home then. 21:43 So he calls me up and we get on, I do a little presentation over, I 21:45 don't know, screen share, and I could tell from his face he thought I was gonna quit. 21:48 It was pretty funny anyway, he said, so I give him the presentation, I'm like, I 21:54 wanna be an Open Source developer for AT&T 21:59 I wanna work on Open Source software all day. 22:02 I wanna improve the tools that we use at work. 22:05 And he said okay and I was like, Whoa. 22:08 Alright. 22:13 He's, like, Yep. 22:13 In a month, in a month, you can do, just work 22:14 on these Open-Source tools all day for us, and that's fine. 22:17 So I, after a month, I did that, and now I'm an Open Source developer for AT&T. 22:20 And the reason I do that is specifically to improve the productivity of our team. 22:26 So the, one thing I need to tell you about working for 22:31 a giant corporation is that we have an interesting expense report system. 22:35 I don't know how many of you have interesting expense reporting systems, but 22:39 we have one and what it requires is that every time I send in an expense 22:43 report, or every time I need to charge some stuff, I have to fax a receipt. 22:50 I have to say like, okay, I faxed the receipt, and it goes into the system. 22:55 What's, what actually kind of blows my mind is 23:00 that I fax it and then they scan it 23:02 into a PDF on the other end, and then 23:05 it shows up in the expense reporting system, right? 23:06 Now I don't have a fax machine so what I was doing was, I would go to these, 23:10 there's websites where you can upload a PDF and 23:18 they'll fax it to a phone number for you. 23:20 But unfortunately every one of those websites costs like a dollar or something. 23:23 So then, as soon as I do that I have to expense the fax service too. 23:28 [LAUGH] So, it ends up into basically an expense report infinite 23:35 loop there, cuz I have to keep doing that over and over. 23:39 so, I like, this is, this is ridiculous. 23:42 I can't do this anymore. 23:45 So I sent an email to the accounts payable department, I was like hey, No, 23:47 I need to file expense reports, but I don't own a fax machine. 23:53 How can I get these things into the system without sending a fax? 23:58 And they very kindly replied to me and said like, hey. 24:04 If you send an email to this special email address. 24:06 With your, with your report number in it, it'll go, it'll 24:10 go into the system, and I was, like, sweet, that is awesome. 24:13 So, next time I needed to file an expense report I was really excited. 24:16 I thought, like, I was, like, sweet. 24:20 This is how it'll work. 24:21 We got me concur. 24:23 I'll make a PDF. 24:24 The PDF will somehow make its way into the 24:26 expense reporting system and great, that would be awesome. 24:28 So I sent off the email and maybe 15 minutes later I get a response, I get 24:32 a response that says like "5 pages sent to phone number" and I was like, what? 24:39 are you freaking, kidding me. 24:46 What was actually happening, what was actually 24:48 happening, is that I would make a PDF. 24:51 So I'd make a PDF, I'd send the PDF to this special e-mail address. 24:55 This special e-mail address would then fax 24:59 it to some particular phone number which was 25:01 then converted back into a PDF, and then put it into the expense reporting system. 25:04 [LAUGH] So, I was like why didn't you, 25:09 why didn't, I, why are there two PDFs involved? 25:12 I would have loved to been like a fly on 25:16 the wall in the meeting where they were like, okay. 25:19 Okay people want emailing in PDF's. 25:23 This is what we're gonna do, [LAUGH]. 25:26 We're gonna have an email address that sends a fax. 25:30 [LAUGH] It kills me, it's super awesome. 25:33 Anyway, so, thinking about this, I heard, 25:38 like well is this, so is this hyperactivity. 25:41 I'm not sure. 25:44 I don't think it is. 25:44 So, [LAUGH] 25:46 why would you think its a good idea? 25:52 We'll send a fax from an email, it will be perfect. 25:58 Anyway, so I have to say like, lik, this, maybe this is not hyper activity, but I'm, 26:02 I'm making fun of this but I actually love my job, like I love, I love what I do. 26:09 And we actually don't have to do this system anymore. 26:14 This was like a, in a few months ago we actually got rid of this system. 26:16 So now it's, it's more sane I couldn't call it totally 26:20 sane that would not make sense, but it is more sane. 26:26 Now I love my job but I couldn't see like if you 26:31 work at a you know, if you work at a giant corporation 26:33 you have to deal with stuff like this, I can see why 26:36 people would seek out you know working for a start up company. 26:38 And I think the reason that people do seek out 26:42 a start up company is because people seek out high productivity. 26:44 They wanna work in high productivity environments. 26:48 They wanna get their job done, they wanna do it well, they wanna do it fast. 26:51 I mean, this is why we're at this conference, is to learn 26:55 how we can do our jobs better, this is why we're here. 26:57 We want to be high productivity people. 27:00 So, back to future productions. 27:03 Taps them, tap some envelopes on my head here. 27:06 Let's look at, let's look at the future of programming languages, 27:12 we're gonna look at the future of programming languages then I'm gonna 27:15 take that and I want to apply it to Ruby, then 27:18 we'll apply it to Rails, then we'll apply it to the web. 27:22 So first I wanna start out with machine language. 27:25 First we had machine language, machine code where 27:27 we would actually put in ones and zeros. 27:30 I've never actually has to write this. 27:31 I've only written in machine code for 27:33 like make believe, you know, simulated, simulated computer 27:34 processors, not actually X86 machines, but I do 27:38 have fond memories of my parents bringing home. 27:43 Like punch cards, punched out punch cards. 27:46 I would like to draw on those, it was a 27:48 lot of fun, where they would actually print, like the failed 27:50 programs, they'd come home with stacks of those and be 27:52 like here, play with these and I'm like what are these? 27:54 They're programs. 27:57 Like, what? 27:58 Okay! 27:58 [LAUGH] Anyway, so I have fond memories of that stuff coming back to me. 27:59 We started out, we started out with stuff like this. 28:05 And then we moved onto assembly language. 28:08 This is actually my assembly language well 28:10 it's not we'll it's assembly language I wrote 28:12 for a micro controller that controls my 28:16 meat curing fridge which we can talk about. 28:19 Later when you come talk to me yes I have a meat curing fridge that is computer 28:22 controlled This is assembly language for it, but 28:27 what's cool about it is we don't have to 28:31 think about the binary, the binary representation anymore, 28:34 we actually have a program that reads this and 28:38 turns it into binary and runs it on the CP, put is on the CPU for us. 28:39 So we're now abstracted away from that binary representation of the code. 28:43 This frees us from, this frees us from the 28:48 binary, the binary representation actually gives us higher productivity. 28:51 We can write an assembly line rather than figuring out how to assemble it ourselves. 28:54 Then after that came along C, and this is, this is actually some C code, this is 28:59 More c code for my long fridge that actually writes 29:05 the, this microcontroller monitors, the temperature of the fridge and sends is 29:11 over a TTY, to my laptop so I can actually monitor the temperature in real time. 29:17 But anyway, this is a C program for doing it and what's cool about this is 29:23 we don't have to think about, we don't 29:29 have to think about the assembly language anymore. 29:30 We just think about okay, if some particular condition, then do this. 29:34 We're starting to focus along the logic of our program, not. 29:38 Not the particular registers that are available on the machine. 29:42 There's actually a bug in this code, but it's probably difficult to see. 29:46 You might not, you might not detect it, and we'll talk about it later. 29:51 Well actually, I'll just tell you. 29:54 It's a memory leak. 29:55 You can see it's maloching memory up there but not freeing ever. 29:56 So anyway, this C code freed us from the particular instructions 30:02 for the machine, we don't have to think about assembly language anymore. 30:08 And then after C we had C++, I don't like C++ so we're not gonna talk about that. 30:13 We have Java. 30:19 Java came along next, this is, well I said I don't have any 30:20 Java, open-source Java code, but this is some of my open source java code. 30:26 It's not that somebody donated it to me kindly. 30:31 So I actually maintain this. 30:34 It's part of a Yammel [SP?] Parsing library. 30:36 And this is the jruby report of it. 30:40 So, this is the java code that has bindings to jruby. 30:44 So, don't read it, it's a mess. 30:47 I'm just putting it up here for an example. 30:51 What this actually freed us from is, this gave us nice oo syntax. 30:55 We can think about objects, we can think in terms of objects now. 30:59 But also freed us from memory management. 31:03 We don't have to think about memory management anymore, we have 31:07 garbage collections so that, that previous error that I showed were 31:10 I was mocking memory and not freeing it, we don't even 31:14 have to think about that anymore, we've again increased our productivity. 31:17 So, this is the Ruby version of the exact same code 31:21 of the Java version and actually this is much more readable in 31:24 my opinion and, the reason that, I think this is more readable, 31:26 is because, you'll notice that Ruby 31:30 doesn't actually declare any types anywhere. 31:33 We're not actually seeing any type 31:34 declarations and what's cool about this is, 31:36 now we don't need to sift through, types, to see what our code does. 31:39 We can focus on the algorithm because what we really care 31:42 about as programmers, what we really care about is the algorithm. 31:46 We care about what the code is doing. 31:50 We don't really care how it get done. 31:51 We care about what it's suppose to do. 31:54 So, Ruby freed us from types. 31:58 There's actually, Ruby is actually a very strongly 32:01 typed language but we don't have this type. 32:03 Declarations everywhere, cluttering up our code. 32:05 So, we've eliminated specific machine code. 32:08 We've eliminated particular CPU instructions. 32:14 We've eliminated memory management. 32:17 We've eliminated typing while looking at this noid type clutter in our code. 32:19 So, what's next? 32:24 What could be next? 32:27 We've seen so far that, What could be next? 32:29 I'm gonna tap the tch. 32:32 I will tell you, comes out here. 32:33 The punch line comes out of the, comes out of the envelope. 32:36 what, what's next? 32:40 If we think about this in terms of, 32:42 higher productivity, what could possibly me, be next 32:44 what can we tackle next, and I think 32:47 the next thing that we're gonna tackle is concurrency. 32:48 I think this is the, this is the next thing that 32:50 needs to go away and I don't mean concurrency needs to stop. 32:53 I mean I think we need to stop thinking about it. 32:56 The reason is because, CPUs aren't getting any faster. 33:00 Alright every time a buy a new laptop it doesn't 33:03 have a faster CPU it just has a lot more cores. 33:07 I have no idea how many cores my machine has now like maybe 8 or 16 I have no idea. 33:11 But every time I'm getting more cores whenever I upgrade and 33:16 the thing that sucks is today we have to think about stuff 33:20 like, okay, I have to manipulate some shared data so I've got 33:23 lock and then do lock and then synchronize and do some work. 33:26 We have to think about this stuff. 33:30 Or we might also have to think about 33:32 like, okay, how many CPUs does this machine have? 33:34 I may need to allocate a thread pool to use up all that number of cores. 33:39 And, why, why are we thinking about this stuff? 33:44 I think this is a waste of time, this is wasting our time. 33:47 The machine should figure this out for us. 33:51 I don't wanna, why is this stuff cluttering up our code? 33:54 Dealing with this, these type of concurrency 33:58 issues, in my opinion, is code noise. 34:01 It's just like how we saw the Java example being cluttered up with declaring types. 34:05 Now we're cluttering our code with dealing with concurrency issues. 34:10 This is stuff that the computer should solve for us. 34:15 The computer is here to do work for us, not, not us do work for it. 34:18 It should know how to do this and I think beyond 34:22 that we should also be dealing with distributive systems the same way. 34:26 We shouldn't have to think about 34:31 distributive computing either because really what's 34:32 the difference between doing multi core 34:35 processing and doing multi machine processing. 34:37 I think that concurrency tomorrow will be memory management of today. 34:40 So today when we're writing our programs we never think we don't. 34:46 We rarely think about memory management. 34:49 I mean once in a while like we know it's there it's in the back of our head. 34:51 It's like okay well 34:54 one time we hit some sort of memory issue where maybe 34:57 we need to free up some objects or something like that. 35:00 But we don't really think about it that much, I 35:03 think in the future concurrency will be the same way. 35:05 So let's apply that to Ruby. 35:11 I think in the future well, so let's apply these, these particular thoughts to Ruby. 35:16 How will, how can we apply this concurrency stuff for Ruby. 35:22 I think that Ruby will adapt, adapt 35:25 to this changing landscape of multi-core processing. 35:28 And you might say Aaron, how is Ruby going to adapt to this? 35:33 What is, what is it going to do? 35:37 Well, I will tell you how Ruby will adapt. 35:40 This is the secret sauce here. 35:43 I wanted you all to take this home with you. 35:45 Ruby will adapt by stealing. 35:48 [LAUGH] This is what all of us do, right? 35:51 If we're using libraries every day. 35:54 This is how we improve, this is how we improve our code. 35:56 We steal, we totally steal and the reason i, the reason that 35:58 Ruby is going to steal, or the things that Ruby will [INAUDIBLE]. 36:01 Well excuse me the Ruby will steal is 36:04 because these, these problems are actually already solved. 36:06 They solved in things like closure, Haskel, go. 36:09 These things deal with concurrency much better 36:12 than Ruby does and they're it's more 36:14 of it's built into the language, you don't have to think about it as much. 36:16 You just say like, hey I want this thing in parallel and it just goes. 36:21 Figures it out for you. 36:25 The thing is, these particularly languages aren't. 36:27 I wouldn't call them, they're not mainstream. 36:28 I wouldn't call them mainstream languages. 36:30 You wouldn't say, like, oh well. 36:34 I don't think you would call these particular languages mainstream. 36:38 People know about them but. 36:40 You're not using them in, for example, you know, giant companies 36:42 aren't using them except though, I guess Google is using that. 36:45 But the point here is that, 36:49 let's take a look at, let's take a look at garbage collection. 36:52 So, you know garbage collection was invented in 1959? 36:56 It was invented in 1959. 36:59 1959 for lisp. 37:03 1959, that's insane to me. 37:06 It blows my mind that it was invented so long ago. 37:12 But, when did it really get popular? 37:16 When did it become a thing that, was like 37:17 this make sense, this is something we should do everyday. 37:19 It happened with Java and Java's first release was in 1995. 37:21 I remember when Java came out and people were 37:28 like, oh, garbage collection, I'm not sure about that. 37:30 Doesn't seem, I don't know, might chew up a lot of CPU cycles, 37:34 what are we gonna do and this, it's crazy to me, 1995, 1995. 37:37 36 years. 37:43 Why did it take 36 years for garbage collection to catch on? 37:46 But now it's a thing that all of us today are like yes, it's fine. 37:50 We do this. 37:53 This is an assumption that we make everyday. 37:54 You go look at a new language, you assume it will have garbage collection, right? 37:56 You assume it will have that. 38:01 We can do better than 36 years I think. 38:03 I think we can do much better than 36 years. 38:06 so, 38:10 these particular languages I've already broached on 38:13 solving this, solving this issue and I 38:16 think what we need to do now is we just need to make it popular. 38:19 We need to make concurrency today exactly like garbage collection is today. 38:21 We need to make concurrency like garbage collection, where it's like okay. 38:26 New language deals with concurrency in, in XYZ way, which is actually kind of why 38:30 I was a little bit disappointed with one reason I'm kinda disappointed with SWF. 38:36 I don't see any, there's nothing in the documentation 38:41 for dealing with concurrency that was kinda sad to me. 38:44 Anyways so I think Ruby will adapt and Ruby will change. 38:46 Will steal from these particular languages, steal their, 38:50 steal their solutions for concurrency, apply it to Ruby. 38:54 And then just use it in the future and [UNKNOWN] in 38:57 the future we'll be saying like I, yes of course concurrency. 39:00 But we don't have to bother with synchronizing. 39:04 That type stuff. 39:06 So all right, let's talk about the future of rails now. 39:06 I have to talk about this. 39:10 I'm on the Rails core team, also this is a web development conference. 39:11 We need to talk about the web. 39:15 The web is pretty amazing. 39:18 I love the web. 39:19 It's the most advanced system for animated gift delivery I've ever seen. 39:21 [LAUGH] Nothing can deliver animated gifts faster that the World Wide Web. 39:30 [LAUGH] So all right, let's talk about the freedom of rails. 39:35 So we're looking at different programming languages and 39:41 how they evolved and what they freed us from. 39:43 Like freeing us from memory management, 39:46 freeing us from instructions, CPU instructions. 39:49 Letting us, letting us focus on the algorithm. 39:53 Like, freeing up our mental capacities so we don't have to worry about those things. 39:57 So Rails also gives us some freedom, like for 40:01 example, before Rails came around people would say like well 40:04 where do I, where do I put my model in my project or do I even have a model. 40:08 Like what is, where does this go this go, 40:13 how does it interact with the rest of my system. 40:14 For Rails it's like it goes here this is what it is. 40:16 Now you don't have to think about it anymore, or 40:20 things like how does, how does it talk to the controller? 40:22 How do we get the model data into the controller? 40:25 How does that stuff work? 40:27 Rails says this is how it works. 40:28 This is it. 40:31 What are my table names? 40:32 Like, how do I, how do I name stuff? 40:33 What are the primary keys? 40:36 What are the names of the primary keys I 40:38 remember crazy primary key names in our Oracle database. 40:39 We have all these particular problems that we just don't have to worry about anymore. 40:43 [LAUGH] These are definitely first little problems [LAUGH]. 40:47 So Rails gave us convention over configuration 40:53 I think like this is basically the banner 40:56 that was floating around like saying okay, you 40:58 don't, we just do everything with, by convention. 41:01 This is where everything goes. 41:05 If you follow this particular pattern, then you 41:06 don't have to think about these things anymore. 41:08 And I really think, like, this, I think 41:10 that convention over configuration is very important, but I 41:12 think the, the larger win is that we 41:15 just don't have to think about that stuff anymore. 41:17 We're freed up from that. 41:19 Now we can focus on our application. 41:20 We're free to think about like oh, I dont know, 41:23 how are we going, how are we going to make money. 41:26 [LAUGH] That's a problem I like to think about. 41:30 How do we make money? 41:31 So what this really bought us, this bought us high productivity. 41:32 Right, this bought us high productivity in the same 41:39 way that these programming languages were buying us high productivity. 41:41 This is what we care about. 41:44 So, I would be remiss if I did not talk about this. 41:47 But I think that the web is changing. 41:49 Well, the web has changed. 41:51 The web has changed. 41:54 The web is changing. 41:55 The web is constantly changing. 41:56 But what I really want to say is, like, I believe that the web is changing. 41:58 And I think that the web is changing because computations are changing. 42:02 Cuz in overall, overarching statement, 42:05 as we were talking about earlier, we have to 42:10 do, our computers aren't getting faster, or any faster. 42:13 Servers aren't getting faster, we're just getting more course, and 42:16 I think that this is happening but on a larger scale. 42:19 On a, [LAUGH] on a web scale. 42:21 [LAUGH] Sorry, my puns are just, okay. 42:25 Anyway, so [LAUGH] we have things that are coming out 42:31 like, for example, Ember.js, Angular.js, we're dong a lot more 42:36 work on the client side, and I think this is 42:40 because our client side computers are getting much more powerful. 42:42 We can have more rich apps on the client side and I know there's 42:45 a lot of, there's actually a lot 42:48 of session here about this stuff in particular. 42:50 By the way like Ember.js is way better than the Angular.js. 42:52 [LAUGH] I have no idea what I'm talking about, [LAUGH]. 42:56 So I think that we had this, we have this pendulum swing back and forth. 43:03 So if we think about, we think about distributed computing from the beginning 43:07 like, we've started out with a dumb terminals like, talking to a, mainframe 43:10 server where all the computations were done on the main frame, we were 43:17 just type in some stuff in a dumb terminal, it happens somewhere else. 43:20 But then we started moving, like, we 43:23 started moving as computers got faster, we started 43:25 moving computations to the client side, if 43:28 you think about this, for example, word processors. 43:31 We used to do word processing on a, on a server. 43:34 But now, like, since the PCs got faster, Microsoft developed 43:37 Microsoft Word or what was the other one, Word Perfect. 43:40 Yes, I remember Word Perfect. 43:43 It was awesome, the blue screens, amazing. 43:45 But we started doing word processing on PCs, on the, on the client side basically. 43:49 But then we said like okay, well now the web has come around 43:55 browsers aren't super awesome, well they couldn't 43:59 do the awesome things they do today. 44:02 So we're doing all of our, all of our processing back on the server side. 44:03 So we had this pendulum swinging back and forth but 44:07 now I think it's gone back to the client side. 44:09 The client side is getting much more powerful. 44:12 We have awesome browsers with awesome 44:15 technology where we can build rich applications. 44:17 Now the thing is, I think that the pendulum is done. 44:22 I don't think it's swinging anymore. 44:26 I think that this is following directly with our increase in CPU, CPU speed. 44:27 CPUs aren't getting faster. 44:34 The pendulum is not swinging anymore. 44:36 We're just getting more powerful clients. 44:38 So [SOUND] I have to think, like when I think 44:40 about this stuff, I think like well, okay. 44:46 Think about doing, doing processing on the client side, versus the server side. 44:51 I have to think about well why, like 44:56 why is multi-core computing any different than distributed computing. 44:58 We talked about this a little earlier, like what is, how is it any different? 45:02 I don't think that it should be different. 45:06 Sun used to have their logo that was like 45:09 their slogan that was like the network is the computer. 45:12 Maybe they still have that I don't know. 45:14 But I think, I think this is actually going to come true now since 45:16 we need to distribute computations among CPUs 45:19 why dont' we just distribute it among machines? 45:22 What's the difference? 45:24 I think the same thing, we can 45:26 say the same thing about client server computations. 45:27 Why is computing different, why is 45:31 distributed computing different than client server applications? 45:33 I don't think it should be. 45:35 I think that we'll see all of these things convergent in the future, but I also think 45:38 that I'm talking a little too far out 45:43 in the future, I, remember I'm an agile developer. 45:45 This is getting way too nebulous for me so I want 45:48 to talk about practical terms, like what does this actually mean today. 45:50 Let's bring this back into reality like, you know, 45:54 and the next year or months, or weeks, or something. 45:58 So what does this mean in practical terms. 46:02 As far as Rails is concerned, I think it's better API support. 46:04 I think we need to, we need to support API's much better and the 46:08 reason we need to do this is because of the fat client, fat client applications. 46:11 We go a little bit out to the future I absolutely want that to go away. 46:16 And I don't mean API's go away necessarily, but I 46:21 think we're focusing on API's like we're focusing on concurrency. 46:26 I think we're wasting to much time on it. 46:32 I think it should be just the thing that's done automatically for us. 46:34 Because we don't actually care about the API, 46:37 we care about the work that we're doing. 46:39 We care about the problem that we're solving. 46:42 The API is just a means to solve that problem. 46:44 So, we should have, in a short term, we need to have better API support. 46:48 And I think in the very long term, I think 46:51 that is something that we just shouldn't think about anymore. 46:53 It should just go there, it's 46:56 there automatically like garbage collection is today. 46:57 I think that's our key to high productivity. 47:00 So, let's talk about the future of the web 47:04 which is the world's most advanced animated gift delivery system. 47:07 This is one of my favorite animated gifts. 47:11 [LAUGH] So, let's talk about the future of the web. 47:14 Now the future of the web is here at this 47:22 conference, you will see it at the sessions that you attend. 47:25 You should go to those sessions, I'm not gonna spoil it, even 47:29 though I said at the beginning; there are many spoilers in this talk. 47:31 I'm actually not going to spoil anybody's talks here. 47:34 Go attend those talks, pay attention to what they say 47:37 because this is the future, we are making it now. 47:40 So I think, 47:42 the future favors high productivity. 47:46 If we examine what makes us more productive, and 47:48 follow that, that is what the future will be. 47:51 Higher productivity for programming languages, higher productivity 47:54 for frameworks, and higher productivity for the web. 47:59 So, thank you for having me. 48:03 I really appreciate it, thank you for taking the time to listen to me. 48:04 If you have questions later like, please come find me, I will be around. 48:08 Thank You [APPLAUSE]. 48:12
You need to sign up for Treehouse in order to download course files.Sign up