[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Good morning .. ahh I'm really excited to Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,do this talk because it's actually the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,first time I can give a talk about Elixir Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,and assume that the audience knows what Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Elixir is, right? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,(laughter) Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So that's really great, that's really..ah Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,changing face because usually I'm going Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,to other conferences and I'm always giving Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,the introductory talk, right? What Elixir Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,is about, what are the language goals. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So this talk is not about that okay? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,This talk is about Elixir past and future. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I think it's kind of expected to talk Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,about from where the language came, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,because now we are close to reach 1.0. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,And I think there are important lessons, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,things that happened throughout this Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,process that we could share, that could Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,help the community grow.. ah.. together. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So if we want to talk about Elixir past, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,one think we could do is that we could go Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,to the Elixir timeline. So this, I got it Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,from GitHub. So, the vertical, we got the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,number of commits, and I think it's per Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,week, and we have the whole year of 2011 Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,in there. And the first commit was right Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,at the beginning of 2011, okay, it was Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,like 9 January or something like that. But Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I actually want to rewind a little bit Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,more, okay, I want to go a little bit back Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,before 2011 but not too much.. it's not Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,about my birth or anything like that. It's Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,when...I'm going back to 2005 and I choose Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,this article, The Free Lunch is Over, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,because it was about this time that I was Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,personally starting to get aware of the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,changes that are happening. So The Free Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Lunch is Over is a paper from Sutter and Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,basically what he's referring to .. ah .. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,the free lunch, it's not about this Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,conference, you still have free lunch, so Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,don't worry. But basically, what he was Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,talking about is that ah throughout the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,previous two decades or even more, you Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,wrote software and then you could just Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,wait like two years? and your software Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,will run twice faster, that was amazing Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,right? You didn't need to do anything just Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,wait and bam, it's faster. But..and we Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,heard this story already, a couple of times Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,now right? It's almost ten years since Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,that article, that our machines are not Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,getting any faster now, in terms of we're Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,not having, we don't have machines with Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,8 GHz, right, the CPUs. We're starting to Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,have more and more core, so if we actually Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,want to leverage all the capacity of the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,machine, it's not just waiting anymore, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,right, we need to change the way you Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,write software. So, the free lunch is over Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,And then, other important things happened Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,for example in 2007, we had the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Programming Erlang book, published by Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Pragmatic Programmers, by Joe Armstrong, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,which is one of the creators of the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,language. And I have it here because it Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,was when I first started to hear about Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Erlang, right. It brought Erlang into Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,other communities and in particular Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,it brought it to communities I was Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,involving with. And then, another event Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,that happened in this timelines is that Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,in 2009, Rails, we had a Rails release, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,that said that Rails was "threadsafe". Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,And the reason why they did that, is the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Rails Core Team, they did that, is because Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,there was, if you were around the Rails Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,community around that time, you.. there Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,was a pressure, at that time right, on the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Rails Core Team, exactly that we need to Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,make Rails threadsafe, exactly because Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Rails developers wanted to leverage the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,ability of using all the cores on the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,machine, and use the machine efficiently. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,And one year later, I joined the Rails Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Core Team, and I actually found out ah Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,that Rails was actually not really Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,"threadsafe", that's why I put it in Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,between quotes. Because I was constantly Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,fixing bugs, and there was actually many Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,reasons, not going to go into details, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,that Rails was not actually threadsafe. So Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I was working on fixing those bugs, and it Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,was kind of frustrating, it was kind of Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,hard, and it was about that time that I Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,start to put the pieces together, right? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So if I'm doing this work and it feels Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,hard, it feels frustrating, but I know Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,that concurrency is becoming more and Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,more important, and I know that there Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,are languages like Erlang and many other Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,languages, that solve this concurrency Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,well, okay, um, I need to do something, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,right? I don't want to, we need to see Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,ways, I can make this situation better. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,And then I started to study, learn, play Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,with other languages, and throughout this Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,process, so I was reading many books, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,trying to get ideas from different places. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I found this book, 7 Languges in 7 Weeks Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,by Bruce who'll be speaking later today. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,And I was actually familiar with the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,majority of the language in the book, but Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,the thing that really stood out in that Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,book is that it got languages like Haskell Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Scala, Clojure, Erlang, and a few other Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,more, and it was talking about those Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,languages, and also their concurrency Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,models but it was, to me, the book really Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,put them, like, in separate places, right, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,and okay, this the advantages of the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,approach, followed by this language, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,here are the advantages, here are the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,trade-offs. And after I read the book, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,what really stood out, was the Erlang Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,virtual machine. I was saying, I want to Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,write software that going to run on this Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,runtime, on this ecosystem, and so that's Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,the lesson I got from it. And the way I Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,like to say is that I like it so I went Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,and bought more books on Erlang, and I Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,also actually really like Clojure after I Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,read the book so I went to study Clojure Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,too. It kinda shows later in the languages Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,some of our features. And the way I like Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,to say about when I was studying Erlang, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,writing software in Erlang now, trying to Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,put some things in production, is that Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I like it, everything I saw, but I hated Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,the things I didn't see. Okay, and at Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,first, the things I didn't see was a Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,little bit unclear, but I decided okay, so Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I want to try my own language, just for Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,fun, to see if I could get some of those Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,ideas, some of those things I'm missing, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,if I can get it there, and see how it's Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,going to play out.