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