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