 Thank you for coming. Thank you so much. I want to thank Johnny especially for inviting me. This is so much fun. I have to tell you, I was talking to one of the speakers last night and I was saying that I typically go to big enterprise conferences and the fact, or the opportunity to come to a smaller one, especially based on Elixir, which is my favorite language, kind of makes me really excited. I'm really happy to be here and thanks to Johnny for that. But I did have one condition before I came. The one condition was that I could tell a really bad joke to start everything off because that's what I like to do. And Johnny's like, sure, go ahead. Do what you want. What's it going to be? And he's like, well, I don't know. Give me an idea. And he said, well, how about something with the Olympics? Something like curling. Curling is on all the time. You know, you turn on the Olympics and it's always curling. And I was like, that's a good idea. And he's like, what is, I don't even know what curling is. And I'm like, dude, what kind of programmer are you? Come on. Come on. Nine o'clock on Wednesday. No, but seriously, Johnny was like, you know, that's a dumb joke. Please don't tell that. And I said, no, too bad, too bad. He's like, no, seriously, what is curling? Is it like, you know, is it like shuffle puck? I'm like, dude, seriously, curling is like from Scotland in 1600. Don't you know what curling is? Okay, come on. That was the last bad joke I have, I promise. Okay. For those of you who don't know me or what I do, I have been doing Elixir for the last, I want to say, year and a half, two years, and I am all in on this language. And I remember the first time I ever played around with it. It was with my friend Rob Sullivan. It was about a year and a half, two years ago. And I saw a tweet of his where it said, Phoenix and Elixir went 1.0, fire up your text editors. And I was like, what is this language? What's it all about? This looks like fun. And next thing I know, it is three hours later, we're paracoding and I'm writing queries and I'm freaking out. This is one of the coolest languages I've ever used. And that led me to just doing other things, like experimenting with data access and what you could do with it. So I have an open source project called Mobius. I wrote a little book about all my explorations called Take Off with Elixir. I utterly love this language. The only problem I have is that I was never able to do anything with it. Anything of substance. And as I mentioned, I go to these big enterprise conferences. Usually Microsoft or .NET based kind of things. And I usually get tag teamed by friends of mine that work at Microsoft. I won't mention their names, but Damon Edwards and David Fowler from the ESP.NET team, they sit on either side of me like, so Rob, tell me about Elixir. How's your cute little toy language? Oh my God, oh my God, you guys are the worst. And so I'll answer questions. They're good friends of mine. They like to rib me and also their assholes. But aside from that, Damien always asked me the same question. So tell me what you've done. Just tell me what you've done. Why should I care about Elixir? Of course my head's exploding thinking about Beam and Erlang and all these things. I'm like, oh my God, really? He's like, yeah, yeah, yeah, I know about Erlang and I know about Beam, but why do I care about Elixir specifically? I was like, that is a damn good question. So I started thinking about that. And I'm like, well, it kind of got stumped a little bit. I mean, other than its cool syntax and a few other things, the community's really vibrant, blah, blah, blah. And then he looks at me and he goes, tell me what you've done with it. What client needs have you met with Elixir? I'm like, wow, that's a good question. So we talk about stuff and I thought, you know what? It's time that I switch gears, because I do a lot of writing. I do a lot of video stuff. I still do contracts, but I haven't done anything with Elixir. I'm like, it's time that I do that and switch into contracting for Elixir. So I told my friends on Slack and they were really supportive telling me how well I'd function inside of a modern dev team, which kind of messed me up a little bit. Actually, I handled it really well. That was, again, my friend Rob Sullivan who did not prick my ego at all with his little comment about me being on a modern development team. I was like, dude, come on, it's not been that long. And then I thought about it and I'm like, jeez, you know, I contract a lot still to this day, but I have not been on a development team since 2009. And that was back when I worked at Microsoft. And before that, that's all I did. I worked on huge projects, huge enterprise kinds of things at Microsoft, CTO of two companies, just blah, blah, blah, blah, blah. You know, that's all I did. But I haven't done anything recently, and I wanted to do something with Elixir. So coincidentally, after all this happened, I got a call from someone I've known for years who is now doing a startup, and he's doing an Internet of Things kind of deal. And he called me up and he said, hey, you know Firebase, right? You know Serverless? I'm like, yeah, I'm familiar with it. I played around with it. And he says, well, this is what I'm doing. Could you help me out? And he's like, yeah, I think I can. But then as I'm thinking about it, I'm thinking, hmm, as he's describing what he's doing, I'm thinking this could be a perfect, perfect thing for Phoenix and Elixir. And I got really excited. And as I was doing this slide, I should explain this. As I was doing this slide, my daughter walked in and she's like, what is that? She liked the bird. And I said, it's Phoenix. And she goes, oh, I thought it said Fnithnith. I'm like, that's totally going in the slide. It just has to be in there. So anyway, I'm telling my client all about this. And he's listening. And I said, well, you know, you have high input. You need to do a distributed thing. And it's Internet of Things. So it could really crush your servers if you're not careful. So I'm thinking that this is a perfect fit. You could use Elixir. We could use Phoenix. We could use Ecto, maybe. I like Ecto. No, I don't. Just kidding. And so as we're talking about this, he's getting interested and he's listening more and I'm talking more and he's listening more. And finally, he just asks me this question. I love this question. Are you sure? Are you sure about this, Rob? I'm thinking, wow. You can go off on stuff with your excitement. You can tell people just how great Elixir is. But when they say, are you sure, they're saying, I've got a business. There's money on the line here. And I'm putting everything on your opinion. And I'm sitting there going, whoa. And it took me about a second or so to think about it. And I'm like, yep, Elixir will work. Elixir will work. If my .NET friends were here right now, they would probably be sitting there saying, you're such an Elixir fanboy. I mean, anything to you is just going to be Elixir. And that to me is like, oh boy, here we go again. You know, having that discussion again, where Elixir is just a fad. You know, people just think it's the latest, greatest, fun thing. And they'll do anything, despite logic and reason, to use it. I'm like, that's fairly accurate. So this quote, though, this quote, how does this quote make you guys feel? This is straight off of HN. Elixir is just a fad. And I've had these discussions online so many times. And they're aggravating. But the thing I want to kind of get across is we need to let that go as a community. Because that's what we're going to face with a new thing like Elixir. And it's funny that it's new, but it's also old because of what underlies it. And the common response that I would hear from friends whenever I tell them about these discussions is, haters going to hate, right? Haters going to hate. And I want to challenge you on this. All of us here, I want to challenge you on this. I want to tell you right now that that's bullshit. That reaction when someone tells you that Elixir is a fad and you're like, hey, you're just going to hate, that sucks because it stops the conversation. What happens is it divides people right in half. Where you're not talking, you're not reasoning anymore. You're dividing yourself, you divide in the room and you're saying it's a fad, well, you're a hater. And then where do we get from that? What do we get from that? We get nothing. We get no discussion. We get no back and forth. So let's take this back to my client. And my client says, are you sure? I can't just sit there and rely on my belief. I can't rely on my inspiration like, totally man, it has to be based on something reasonable that I can then tell the client, yes, for these reasons I think Elixir is going to be good for you and your business. I think we should shift perspective on this. That instead of haters going to hate, how about we say peers are going to test what your idea is. That's what we do. That's what we're supposed to do. If we look at this as computer science, what we should do is we should be able to hear critiques. We should be able to hear people say, why is that cute little language of yours something I'm interested in? And we should be able to give them answers instead of just putting up the veil and saying, haters going to hate. Speaking of bullshit. This is David Heinemeyer Hansen, a quote from him that drove me crazy when I first read it. He's talking about Elixir. And he's bastardizing a quote from Martin Fowler, which is, don't distribute your objects. But this quote here is, the first rule of distributed computing is to do distributed computing. And you can read this quote and it's so inflammatory, but that's what DHH does. But I hate to say it, he's also right. But what does he write about? Is he right about, don't do distributed computing? Or is he saying something else? See, if I was to run up the flag like haters going to hate or DHH is going to be a dick, which both are true. Then it's easy for me to just put the blinders on and not know what he's talking about. What I'm saying is, if we put on our business person's hats, can we justify using Elixir or anything distributed from the get-go for a Greenfield project? No, you really can't. There's nothing you can say about that. So as I'm talking to my client and he asks me that question, are you sure about this? I have to think about this. Is this really the right thing for the client? Do we need to start out with this distributed architecture? Do we need to go full guns with one of the fastest, most scalable, most resilient platforms in the world? I have to think about this and I think, you know what? Rails is actually probably better at getting people up to speed than any platform I can think of outside of WordPress. And so I have to tell them that. I have to say that because that's the truth. That is really serving my client. And so I say to him, well, you know, we could use Rails. We could get up to speed and this is literally what he said to me. That's all I got out of my mouth. And I said, what's up with that? You don't like Rails? And he went on to tell me that he has based one business on Rails and one project that he ran at the Glass Company he worked at. And after two years time, they ended up with a big mess and they rewrote it. It almost created his business and he said, I'll never do that again. I've had the same experience. I don't mean to sit here and say, Rails sucks. It's honestly not my point. Rails is great at a bunch of things. You have to be very careful with a long running Rails project. You just do. And he just ran into trouble. And the trouble that he ran into whenever he'd talk about it with people, the typical Rails programmer response was, can you guess? Not haters gonna hate, but bad programmers write bad code. And that drives me absolutely crazy. Like, no, this is a real problem that people have, is long running Rails projects. So now we have two concerns here. We have a business concern, getting people up to speed, but we also have a long running concern. What are we gonna do in the future? How are we gonna keep things up? How are we gonna scale? What are we gonna do about the teams? And all this, the Drabledore spectrum. On one hand, you have Dr. Dre, right? An amazing artist, musician, highly focused on business. The guy knows business and how to make money. And I love this quote from him. He made a million dollars in the bank before he could legally buy alcohol. I mean, he left death row records. He just left and he built his own business again on top of that. I mean, the guy's an amazing businessman versus someone who is completely based on his beliefs and his convictions. Dumbledore, right? And I love this quote as well. We have to choose between what's easy and what's right. Wow, how profound, right? Well, how do we put this in terms of business? Let's take the one perspective. Let's go full business. Let's do what the DHH thing put our businessman's hat on. Tell me why you can't solve my client's problem with WordPress. And you cannot do it in terms of business. In terms of getting up to speed, getting out there. And to put this in perspective, 25% of the internet runs on WordPress. When you take away all your beliefs about every programming language and you just look at what has been done, 25% of the internet runs on WordPress. 50% to 60% runs on PHP. Why aren't we using that? That's an honest question. If I have my businessman's hat on and you have to answer that question, I will say I can't, and I don't think you can either. But this is where we kind of break from reality a little bit, because we don't do business all the time. It's good to have these business perspectives in mind, but we're also scientists. I'm going to claim that we are also computer scientists, and we need to think about what we build for our client later on in the future. This is never an answer, right? Because a lot of people, when they're confronted with these business concerns and why are we using Elixir, sometimes it falls back to this. Just because I want to. You get into these debates, and they usually end up something along this. Right tool for the right job. That is bullshit as well. That just means I don't want to think about what you're saying anymore. Yeah, sure, maybe orms suck. Yeah, sure, maybe this happens. Whatever, right tool for the right job. No. No, there is actually an approach that makes more sense than other approaches depending on where you are in the Drabledore spectrum. Seriously. Are we going business? Are we going computer science? I'm going to claim that all of us are more explorers. All of us in this room are innovators. All of us in this room are scientists. And I think that is a really important thing to keep in mind. As well as the business, we also have to innovate and push things forward. When I was younger, I remember when the pocket calculator came out, I'm not old, and we were not allowed to have him in school because our math teacher said that you will not be able to do math in your head if you have a pocket calculator. Actually he was right, but still. Did we need a pocket calculator? No. In terms of the Drabledore spectrum, if I was to ask Dre, do you need a pocket calculator? He would say, no, you don't need such a thing. You can do it without it. iPhone, the personal computer, did we need these things? No, we did not need them from a pure utilitarian perspective. Did we need to go to the moon? At the time, this is a big controversy, believe it or not, but now we look at the Apollo mission as something so much greater than fire and steel going to the moon. It is the pinnacle of human experience for a lot of people, that's arguable. Even today, a lot of people, of course, don't think we went there, but also would say it was a terrible waste of money. But that is such a utilitarian perspective, right? What about the other thing? What about what it meant to humanity in general? I don't know if you guys saw this the other day, the Falcon Heavy landing, the boosters coming in. How freaky was that? Did we need to do this? No. We did not need to do this, but for me as a child of the 60s and 70s, of the space age, uh-huh, that needed to happen. That was amazing. This, to me, like everybody I know stopped what they were doing to stream this, and they just talked about it for days, and it reset their brains to something different. It pushed their experience outward of what humanity is capable of. I like to think that there is innovation that is just around the corner for the web and for computer science and everything that we do. And I feel like it's right there, it's somewhere. And, you know, I make fun of Rails and DHH, but the truth is, the innovation that came with Web 2.0 happened because of Rails. In fact, I would make this claim too that we wouldn't be here without Rails, without Ruby, without DHH. We are the next level here of that experience. Jose looked at the beauty of Ruby and said, you know what, we can do this with Erlang, and it's awesome. What can we then do with that? Where's the next innovation? What's the big change that's going to happen? I like to think it's out there, although I will admit Web 2.0 is kind of a lame name. This is Marie Curie, one of my favorite scientists and I love this quote because it reminds me so much of why I love programming. It reminds me so much of when I take the businessman's hat off and put it on my scientist's hat or my programmer's hat, what the inspiration is for me sitting down and writing programs. And I love this notion. She got to go down in her basement with her husband, who was also a scientist, and find out all these wonderful things about plutonium and radiation and whatnot. But one of her quotes that I really, really love is this one. Nothing is to be feared if you can understand it. Seek understanding. So it's not enough just to discover. It's not enough just to know, it's like, oh yeah, Elixir's rad. Why is it rad? And then you can explain to other people. You can tell them why it's so cool. You can tell my, I was about to say a really bad word. You can tell my enterprise Microsoft friends why it's so cool without using bad words. The neat thing is there's only one thing that we need to do as fellow scientists when it comes to understanding. One thing. Shout it out if you think you know what it is. Simply to listen. That's a good life goal for anything, but especially the next two days while you're here, while you're sitting in the rooms, you're sitting here listening to the speaker's talk. Clear brain. Empty all your preconceptions. Don't come here loaded with haters going to hate kind of mentality because people are going to come up here and listen to what you think. And if we want to expand computer science and find that next innovation, it's critical that we not just listen but truly listen. Empty the brain. Don't try and explain things to people. Don't think that they don't know what they're talking about just because you have an idea that you think is right. Listen to what everybody's saying because it's so critical. We right now in my mind are at a bit of a renaissance point. That's why I chose this graphic right here where we are literally changing humanity right now just computer science. Over the last 30 years the web has grown to a point where it's redefined a human experience. Not just the web but also mobile. Everything about it. I mean I literally do not recognize this world today from when I was a child with Twitter, Facebook all the things you're capable of doing with that phone in your pocket overthrowing governments, people talking each other, making friendships. There's friends in here that I've met twice in person but I've known them for years and I feel like they're some of my friends. It's really weird. It's important that we recognize that we are at the renaissance and we need to definitely treat it as scientists would. We need to engage in a way that is what's the word I'm looking for? As appealing and open as we possibly can because you don't get anywhere as I keep saying by pounding on each other screaming at people just saying Elixer, Phoenix, Ecto what's wrong with you? Someone made equipped to me the other day like oh what are you about? How much you hate Phoenix? Which is funny. It was a joke but it's like we all have our opinions right? We all have our opinions about what things are and maybe I don't like Phoenix and maybe I shouldn't even say don't like because that's not even true. I have issues with certain frameworks and ways that they do things. Let's talk about that because maybe one I'm misunderstanding something and two maybe you're not seeing something that I'm seeing. Things change and people don't like they're constantly changing and part of this part of growing and changing with it is to be able to speak to each other and understand. I think it's really important to not just stand here and wave my arms and say in the last 30 years that everything has changed it's true. 1990 I think that happened like I don't know maybe before you guys were born. 1990 there was one website and this is it this is the CERN website this is Tim Berners-Lee he made the web this is the very first web page ever made I love this this first link up here what's out there nothing's out there it's just crazy nothing's out there the web did not exist until this page right here which I think is is amazing if you're curious yeah that's the HTML that's what it looked like that's the first thing of course I did view source on that since then since then over 30 years have gone by and this is what the web looks like now it's gigantic as I mentioned it's changed everything about life about humanity over the last 30 years and I don't think people keep that in mind very much I don't think they have that perspective when they engage in a lot of technical discussions or go to conferences or whatever it's early in the morning and you haven't had your coffee and you kind of sitting through this talk where this guy is just waving his arms a lot but I would love it if we could all just sort of think about that have that in the back of our heads that we are here at the tip of the spear literally something brand new hoping that there's more that we can do with it because language shapes things language shapes capabilities of applications you kind of know it when you're looking at a certain type of application built in the language I know it when I'm looking at a .NET website I know it in a minute usually I know it when I'm looking at a crappy node JavaScript website because usually it doesn't work it's true sorry don't be a jerk Rob the web is shaped by the languages we use and if we're going to push this thing forward we really have to rethink what languages we're going to use to do it the capabilities of those languages this is when you put on our scientist hat on our explorers hat and see what's possible and you see something as elegant and wonderful as elixir you would think that we could morph that into what the web looks like I'd like to do that because right now what I see when I look at the web honestly and this is me being a jerk again sorry I see kind of a trash pile I mean what job I'm actually kind of discouraged with how much JavaScript is out there and I say this I try and say this not in a mean way even though it's going to come out this way I've been doing nothing but node over the last six or seven years and I think about this sometimes this language is built over a 10 day period in 1995 because Netscape needed a script it's interface it is widely recognized as one of the worst languages ever created of course now it's being repaired it's being made better from that perspective oh it's so much better these days we're fixing it great good for you let's build more stuff with it and stick it in containers and I think there's such a better way of doing things because right now where we're at is what Herb Sutter calls the free lunch being over this was written back in 2005 but the idea is processors are not getting faster computers are kind of maxing out we need to now go sideways and start doing more concurrency it's 2018 this is just right as elixir and Erlang people we know this of course concurrency was always going to be a thing we've known this since the 90s I think object oriented languages are catching up to this but instead of making their language and their run times concurrent they're using architecture which is fine 0MQ RabbitMQ Microservices Hooray Docker Kubernetes all of these things are interesting and capable but the interesting thing that I always find is that it's reinventing Erlang it's going to sound negative to people that won't know what I mean by that and if I try and explain all of these patterns that are being followed now by object oriented languages we're solved-ish back in the 90s with Erlang I mean it's kind of an amazing thing and I say this and this is about as far as I get I say this as a way of saying that is a foothold for us to then rev on that pattern maybe let's create some new languages or rev Erlang or do something to make this container up in the cloud I wrote a post about this I don't know how to say about a month ago and I had this interaction on Twitter with this person who just immediately thought I was being arrogant because I made the claim I made that claim that we are reinventing Erlang and I said you think I'm just being arrogant I mean let's talk and I really tried to engage this person just absolutely door got slammed and I said do you know anything about Erlang this is how we end the discussion do you know anything about Erlang this is what I put in my post and I could see how this would come off as negative I can see how a lot of the things that I've been saying are negative and again I don't mean to stand up here and like crap all over every other platform even though it's how it's sounding but to see the deficiencies that are out there and how they can be changed by something that you can you can then use a language that you like like Elixir that perspective is gigantic and if we could just get past the hurdle of like you're being a dick Rob okay how about we talk now and I can explain to you why I think Erlang is a better solution than whatever I think about Joe Armstrong looking through his telescope that's not him actually pretty close do you think this is Galileo looking through his telescope at the moons of Jupiter the very first time that the moons of Jupiter are ever seen with a naked eye and I think about what would happen if for some reason we had never seen the moons of Jupiter we'd never seen the rings of Saturn what would happen if that happened today and I think about that a lot like what if it hit hacker news these are actual quotes from Cardinals at his trial Bellarmine has this great one I love it to assert that the earth revolves around the sun is as erroneous as to claim that Jesus was not born of a virgin but to them at the time that was just the way things were their belief shaped everything about their reality and they were just like well there's no way and Galileo was like but you just I have this telescope you can look through it and you can see and like nope that doesn't happen to put this in perspective from modern times this is Jeff Clark I don't know if anybody here is into surfing at all I grew up in Los Angeles I love surfing but this is Jeff Clark and he's taking off on a wave a break called Mavericks has anybody here heard of Mavericks before yay Mavericks is it is consistently rated in the top five waves in the entire world it is one of the most amazing waves out there and it was discovered in 1992 which is crazy it's 30 miles south or excuse me 30 minutes south of San Francisco in Half Moon Bay it's really easy to get to you can see it from the top of a bluff Jeff Clark went to school in Half Moon Bay and he sat on top of this bluff and he looked out at these waves and he said you know what he was like you're crazy this is back in the 80s and so he decided one day after school he was going to paddle out there it's about a half mile paddle out from the bay and you get on these gigantic monster waves and he freaked out so he goes back and he starts trying to tell people and no one believed him and you know why you know why no one believed him this is great I can't believe this happened in like when I was alive because those waves only happen in Hawaii there's no such thing as a 30 foot or 20 foot wave to take pictures to prove it and no one would believe it I didn't believe it like the first time I saw the magazine article I'm like no those waves only happen in Hawaii there's no way that that kind of wave could happen here if he tried to bring it up in conversation people shut him down immediately nope doesn't happen here and if he tried to bring it up he got shouted at and finally this is funny finally Surfer Magazine I remember this I bought this California goes off and this whole pictorial is Mavericks and people are like what is that and next thing you know the Hawaiians come over and they start writing it and they say yes like oh really okay all you had to do was to go out on this bluff got a map here right down there at the bottom which you can't see sorry but right down there is Mavericks right off the tip of the bluff you just had to go 30 minutes south you could park right out there on the tip 20 yards to get to the bluff bring a lunch it's beautiful it's a beautiful drive you can go down there when you're getting your pumpkins because they have pumpkin patches everywhere and you can watch these ways you just had to look but no one believed it this is how I felt when I started learning elixir and then diving into OTP has this really always been here since the 90s why have I not been using this like why are more people using this this is amazing and to me it was like dropping a wave just in my back yard like are you serious I have all this power right now and I want to wind this up by taking it all the way back to my client and are you sure about this Rob and I mean I have this experience now working with a bunch of languages I can use .NET I can use Ruby Node I can use whatever yes I am sure about this not because I think it's amazing and whoa we got to use it but it's stable it's what I call low scale I can use one server probably for most of the duration of your application and then just attach another node and marry them together create a ring we can do all kinds of things that's concurrent you don't have to deal with Kubernetes and Ops which is a big concern these days because a lot of people are more focused on getting Ops people as opposed to as opposed to worrying about the code and revving the code how are we going to stabilize this so what happened with this project well I started out using phoenix and Ecto this is really cool this is one of the neat things that I love about elixir best of both worlds I was able to kick things up get the POC out get the MVP up show them all kinds of things with phoenix and Ecto and then after the thing he said so what are we going to do about this thing you know I don't want a big framework that was literally one of the requirements don't want a big framework and I'm like don't worry about it that's one of the cool things about elixir is that I can just roll my own I can use plug I can use cowboy that's really what you want and I hesitated when I put this slide in here because I figured that it might upset a few people in the room and if it did upset you what I just said about phoenix and Ecto ask yourself why why do you care why are you having this emotional response I actually have a lot of reasons for wanting to roll my own which yes I know sounds kind of crazy but to me I look at in kind of an exciting opportunistic way which is I can I'm not locked into having like bare metal craziness structures inside of elixir that allow me to toss whatever framework I want away I don't like dependencies that's my thing but you know what that's me if you have any questions about why I decided to do that let's talk I'll be here entire couple days come up and I'll be happy to tell you the experiences I've had in my life and same with my clients and why I feel like this is literally we're at the top of the wave we're about to drop in and I'm so excited to keep going with elixir I hope you have fun today and tomorrow be good and please let's listen to each other let's talk to each other let's listen to each other most importantly the experiences that you've had with your jobs I'll tell you the experiences I've had and hopefully we can learn and push this forward thank you