1 99:59:59,999 --> 99:59:59,999 Good morning .. ahh I'm really excited to 2 99:59:59,999 --> 99:59:59,999 do this talk because it's actually the 3 99:59:59,999 --> 99:59:59,999 first time I can give a talk about Elixir 4 99:59:59,999 --> 99:59:59,999 and assume that the audience knows what 5 99:59:59,999 --> 99:59:59,999 Elixir is, right? 6 99:59:59,999 --> 99:59:59,999 (laughter) 7 99:59:59,999 --> 99:59:59,999 So that's really great, that's really..ah 8 99:59:59,999 --> 99:59:59,999 changing face because usually I'm going 9 99:59:59,999 --> 99:59:59,999 to other conferences and I'm always giving 10 99:59:59,999 --> 99:59:59,999 the introductory talk, right? What Elixir 11 99:59:59,999 --> 99:59:59,999 is about, what are the language goals. 12 99:59:59,999 --> 99:59:59,999 So this talk is not about that okay? 13 99:59:59,999 --> 99:59:59,999 This talk is about Elixir past and future. 14 99:59:59,999 --> 99:59:59,999 I think it's kind of expected to talk 15 99:59:59,999 --> 99:59:59,999 about from where the language came, 16 99:59:59,999 --> 99:59:59,999 because now we are close to reach 1.0. 17 99:59:59,999 --> 99:59:59,999 And I think there are important lessons, 18 99:59:59,999 --> 99:59:59,999 things that happened throughout this 19 99:59:59,999 --> 99:59:59,999 process that we could share, that could 20 99:59:59,999 --> 99:59:59,999 help the community grow.. ah.. together. 21 99:59:59,999 --> 99:59:59,999 So if we want to talk about Elixir past, 22 99:59:59,999 --> 99:59:59,999 one think we could do is that we could go 23 99:59:59,999 --> 99:59:59,999 to the Elixir timeline. So this, I got it 24 99:59:59,999 --> 99:59:59,999 from GitHub. So, the vertical, we got the 25 99:59:59,999 --> 99:59:59,999 number of commits, and I think it's per 26 99:59:59,999 --> 99:59:59,999 week, and we have the whole year of 2011 27 99:59:59,999 --> 99:59:59,999 in there. And the first commit was right 28 99:59:59,999 --> 99:59:59,999 at the beginning of 2011, okay, it was 29 99:59:59,999 --> 99:59:59,999 like 9 January or something like that. But 30 99:59:59,999 --> 99:59:59,999 I actually want to rewind a little bit 31 99:59:59,999 --> 99:59:59,999 more, okay, I want to go a little bit back 32 99:59:59,999 --> 99:59:59,999 before 2011 but not too much.. it's not 33 99:59:59,999 --> 99:59:59,999 about my birth or anything like that. It's 34 99:59:59,999 --> 99:59:59,999 when...I'm going back to 2005 and I choose 35 99:59:59,999 --> 99:59:59,999 this article, The Free Lunch is Over, 36 99:59:59,999 --> 99:59:59,999 because it was about this time that I was 37 99:59:59,999 --> 99:59:59,999 personally starting to get aware of the 38 99:59:59,999 --> 99:59:59,999 changes that are happening. So The Free 39 99:59:59,999 --> 99:59:59,999 Lunch is Over is a paper from Sutter and 40 99:59:59,999 --> 99:59:59,999 basically what he's referring to .. ah .. 41 99:59:59,999 --> 99:59:59,999 the free lunch, it's not about this 42 99:59:59,999 --> 99:59:59,999 conference, you still have free lunch, so 43 99:59:59,999 --> 99:59:59,999 don't worry. But basically, what he was 44 99:59:59,999 --> 99:59:59,999 talking about is that ah throughout the 45 99:59:59,999 --> 99:59:59,999 previous two decades or even more, you 46 99:59:59,999 --> 99:59:59,999 wrote software and then you could just 47 99:59:59,999 --> 99:59:59,999 wait like two years? and your software 48 99:59:59,999 --> 99:59:59,999 will run twice faster, that was amazing 49 99:59:59,999 --> 99:59:59,999 right? You didn't need to do anything just 50 99:59:59,999 --> 99:59:59,999 wait and bam, it's faster. But..and we 51 99:59:59,999 --> 99:59:59,999 heard this story already, a couple of times 52 99:59:59,999 --> 99:59:59,999 now right? It's almost ten years since 53 99:59:59,999 --> 99:59:59,999 that article, that our machines are not 54 99:59:59,999 --> 99:59:59,999 getting any faster now, in terms of we're 55 99:59:59,999 --> 99:59:59,999 not having, we don't have machines with 56 99:59:59,999 --> 99:59:59,999 8 GHz, right, the CPUs. We're starting to 57 99:59:59,999 --> 99:59:59,999 have more and more core, so if we actually 58 99:59:59,999 --> 99:59:59,999 want to leverage all the capacity of the 59 99:59:59,999 --> 99:59:59,999 machine, it's not just waiting anymore, 60 99:59:59,999 --> 99:59:59,999 right, we need to change the way you 61 99:59:59,999 --> 99:59:59,999 write software. So, the free lunch is over 62 99:59:59,999 --> 99:59:59,999 And then, other important things happened 63 99:59:59,999 --> 99:59:59,999 for example in 2007, we had the 64 99:59:59,999 --> 99:59:59,999 Programming Erlang book, published by 65 99:59:59,999 --> 99:59:59,999 Pragmatic Programmers, by Joe Armstrong, 66 99:59:59,999 --> 99:59:59,999 which is one of the creators of the 67 99:59:59,999 --> 99:59:59,999 language. And I have it here because it 68 99:59:59,999 --> 99:59:59,999 was when I first started to hear about 69 99:59:59,999 --> 99:59:59,999 Erlang, right. It brought Erlang into 70 99:59:59,999 --> 99:59:59,999 other communities and in particular 71 99:59:59,999 --> 99:59:59,999 it brought it to communities I was 72 99:59:59,999 --> 99:59:59,999 involving with. And then, another event 73 99:59:59,999 --> 99:59:59,999 that happened in this timelines is that 74 99:59:59,999 --> 99:59:59,999 in 2009, Rails, we had a Rails release, 75 99:59:59,999 --> 99:59:59,999 that said that Rails was "threadsafe". 76 99:59:59,999 --> 99:59:59,999 And the reason why they did that, is the 77 99:59:59,999 --> 99:59:59,999 Rails Core Team, they did that, is because 78 99:59:59,999 --> 99:59:59,999 there was, if you were around the Rails 79 99:59:59,999 --> 99:59:59,999 community around that time, you.. there 80 99:59:59,999 --> 99:59:59,999 was a pressure, at that time right, on the 81 99:59:59,999 --> 99:59:59,999 Rails Core Team, exactly that we need to 82 99:59:59,999 --> 99:59:59,999 make Rails threadsafe, exactly because 83 99:59:59,999 --> 99:59:59,999 Rails developers wanted to leverage the 84 99:59:59,999 --> 99:59:59,999 ability of using all the cores on the 85 99:59:59,999 --> 99:59:59,999 machine, and use the machine efficiently. 86 99:59:59,999 --> 99:59:59,999 And one year later, I joined the Rails 87 99:59:59,999 --> 99:59:59,999 Core Team, and I actually found out ah 88 99:59:59,999 --> 99:59:59,999 that Rails was actually not really 89 99:59:59,999 --> 99:59:59,999 "threadsafe", that's why I put it in 90 99:59:59,999 --> 99:59:59,999 between quotes. Because I was constantly 91 99:59:59,999 --> 99:59:59,999 fixing bugs, and there was actually many 92 99:59:59,999 --> 99:59:59,999 reasons, not going to go into details, 93 99:59:59,999 --> 99:59:59,999 that Rails was not actually threadsafe. So 94 99:59:59,999 --> 99:59:59,999 I was working on fixing those bugs, and it 95 99:59:59,999 --> 99:59:59,999 was kind of frustrating, it was kind of 96 99:59:59,999 --> 99:59:59,999 hard, and it was about that time that I 97 99:59:59,999 --> 99:59:59,999 start to put the pieces together, right? 98 99:59:59,999 --> 99:59:59,999 So if I'm doing this work and it feels 99 99:59:59,999 --> 99:59:59,999 hard, it feels frustrating, but I know 100 99:59:59,999 --> 99:59:59,999 that concurrency is becoming more and 101 99:59:59,999 --> 99:59:59,999 more important, and I know that there 102 99:59:59,999 --> 99:59:59,999 are languages like Erlang and many other 103 99:59:59,999 --> 99:59:59,999 languages, that solve this concurrency 104 99:59:59,999 --> 99:59:59,999 well, okay, um, I need to do something, 105 99:59:59,999 --> 99:59:59,999 right? I don't want to, we need to see 106 99:59:59,999 --> 99:59:59,999 ways, I can make this situation better. 107 99:59:59,999 --> 99:59:59,999 And then I started to study, learn, play 108 99:59:59,999 --> 99:59:59,999 with other languages, and throughout this 109 99:59:59,999 --> 99:59:59,999 process, so I was reading many books, 110 99:59:59,999 --> 99:59:59,999 trying to get ideas from different places. 111 99:59:59,999 --> 99:59:59,999 I found this book, 7 Languges in 7 Weeks 112 99:59:59,999 --> 99:59:59,999 by Bruce who'll be speaking later today. 113 99:59:59,999 --> 99:59:59,999 And I was actually familiar with the 114 99:59:59,999 --> 99:59:59,999 majority of the language in the book, but 115 99:59:59,999 --> 99:59:59,999 the thing that really stood out in that 116 99:59:59,999 --> 99:59:59,999 book is that it got languages like Haskell 117 99:59:59,999 --> 99:59:59,999 Scala, Clojure, Erlang, and a few other 118 99:59:59,999 --> 99:59:59,999 more, and it was talking about those 119 99:59:59,999 --> 99:59:59,999 languages, and also their concurrency 120 99:59:59,999 --> 99:59:59,999 models but it was, to me, the book really 121 99:59:59,999 --> 99:59:59,999 put them, like, in separate places, right, 122 99:59:59,999 --> 99:59:59,999 and okay, this the advantages of the 123 99:59:59,999 --> 99:59:59,999 approach, followed by this language, 124 99:59:59,999 --> 99:59:59,999 here are the advantages, here are the 125 99:59:59,999 --> 99:59:59,999 trade-offs. And after I read the book, 126 99:59:59,999 --> 99:59:59,999 what really stood out, was the Erlang 127 99:59:59,999 --> 99:59:59,999 virtual machine. I was saying, I want to 128 99:59:59,999 --> 99:59:59,999 write software that going to run on this 129 99:59:59,999 --> 99:59:59,999 runtime, on this ecosystem, and so that's 130 99:59:59,999 --> 99:59:59,999 the lesson I got from it. And the way I 131 99:59:59,999 --> 99:59:59,999 like to say is that I like it so I went 132 99:59:59,999 --> 99:59:59,999 and bought more books on Erlang, and I 133 99:59:59,999 --> 99:59:59,999 also actually really like Clojure after I 134 99:59:59,999 --> 99:59:59,999 read the book so I went to study Clojure 135 99:59:59,999 --> 99:59:59,999 too. It kinda shows later in the languages 136 99:59:59,999 --> 99:59:59,999 some of our features. And the way I like 137 99:59:59,999 --> 99:59:59,999 to say about when I was studying Erlang, 138 99:59:59,999 --> 99:59:59,999 writing software in Erlang now, trying to 139 99:59:59,999 --> 99:59:59,999 put some things in production, is that 140 99:59:59,999 --> 99:59:59,999 I like it, everything I saw, but I hated 141 99:59:59,999 --> 99:59:59,999 the things I didn't see. Okay, and at 142 99:59:59,999 --> 99:59:59,999 first, the things I didn't see was a 143 99:59:59,999 --> 99:59:59,999 little bit unclear, but I decided okay, so 144 99:59:59,999 --> 99:59:59,999 I want to try my own language, just for 145 99:59:59,999 --> 99:59:59,999 fun, to see if I could get some of those 146 99:59:59,999 --> 99:59:59,999 ideas, some of those things I'm missing, 147 99:59:59,999 --> 99:59:59,999 if I can get it there, and see how it's 148 99:59:59,999 --> 99:59:59,999 going to play out.