 So a couple of things before we get started was anybody weirded out by the chicken fried chicken the name of that So who's not from Austin and kind of wants the rundown? Yeah, a couple of you so we're from Texas, and you know, we're not always the deepest thinkers So somebody said hey, we ought to fry that chicken. It'd be better fried And then somebody else said hey, we need we need to we need to put steak in that chicken fried wrapper So we're gonna make chicken fried steak and then time passes and then somebody said hey We should put chicken in there. So then you have chicken fried chicken. So that's basically what happened Don't look at your program and if you do look at your program you'll notice that I've changed the title of this presentation and I also changed a couple of the Well, I changed it all it's a different presentation after talking to some of you and talking to Talking to Jim and the team we decided that one of the things that was really needed Was a language adoption talk where we could where you could basically go home and talk about some of the reasons that I believe that things are changing fundamentally on the language adoption side and The platform that I'd like to use to talk about this topic is the idea of fear and its role in language evolution For those of you who don't know me. My name is Bruce Tate. I'm from Austin if you've been near Lake Travis earlier this year I went on a kayaking expedition where we went down all 64 miles well at least the 42 miles that are that still have water in them and I had a lot of time to talk or to think about fear It was going to be a two-day trip and about halfway through the first day It was apparent that we would have to choose our camping site at night And if you're from the north or some place that doesn't have poisonous snakes and scorpions You might think this is not a huge deal For me it was a very big deal because I don't like either one of those things and My light setup wasn't that great. So I was kind of writing the talk of my head during this trip Then I thought fear is an amazing thing because it has the power to shape places to shape geographies You can even see the results of fear from space. There's the wall of China right there and if you think about the wall of fear in You know in the world in the shape of the world in the way that we That we draw the lines between our nations Fear has an amazing role. In fact, you have to overcome a Huge amount of fear to do any kind of real discovery So I thought I would talk about fear and language creation And then Jose did his part of the talk and he talked about his pit of despair and talked About exactly this so I thought you know fear plays a big role almost always in the creation process, but You know, you can even find books on writer's block and basically writer's block for artists as well But since Jose has already talked about this I don't want to do that I Basically want to talk about fear in the role of language adopters Let's face it everybody in this room we're language adopters right now And we need to be thinking about whether this thing that this marvelous thing that Jose has built is Going to work for us and whether it's going to ever achieve the critical mass to get off the ground And so this talk is about the role of fear in that The opposing fear that's going to keep that from happening and the motivating fear that's going to kick us in the butt and actually Move us to the point where where we'll reach a critical mass and there was a book that was written and Just after 1990 1991 by a guy named Jeffrey Moore. How many of you seen crossing the chasm before? So this is often a popular talk at at language workshop So I'm not going to rehash all of this, but I do want to put this in context of Technology adoption and and really language adoption, but Jeffrey More are you that there are five groups of people that there are early adopters? There are their innovators and early adopters the early and late majority and then the laggards and and Squirrely between the early adopters and the early majority there is a chasm But in fact you see this kind of adoption curve in many times in our industry You see it every time a new language is adopted And in fact these waves these adoption waves are Very irregular when you talk about them between languages you can probably think about some languages that were adopted very quickly and Some that were gone just as quickly and others that took a while to adapt or lasted longer Longer than you might think and the things that are important when you're adopting a language when it's a small step Are things like syntax and types and libraries? This is why you often see Comments about elixir syntax first that you see this is kind of like coffee script for JavaScript It's not really the same thing, but this is why you get that kind of You get that kind of perception that kind of misconception a misread of what the elixir language is all about in Reality what we are doing is not just changing a programming language We are changing programming paradigms. We're going from object-oriented languages to Functional programming and we're also making a move from a single process language or even a multi-threaded language which That puts all of the burden of concurrency management on a single developer To a multi-process system and the way that you think about it the mental model is Dramatically different so in this case the waves are much bigger. There's much more space between them It's harder to push those waves through but when they come the inertia is that much greater? And so I want to talk about that during the course of this talk and The idea that the mental model is really the thing that we are overcoming right now It's not just syntax. It's not just a set of libraries It's not even going from static to dynamic typing as many of the Ruby people In this room were used to from from the last So let's go back to Jeffrey Moore Let's think about the chasm The chasm is between the people that have the ecosystem on the right-hand side and The sad people on the left-hand side And the things on the right-hand side are the things that the people on the left-hand side want they want the tools the community All these things that make us more productive, you know, we're here at a conference and you can get training for Java today you can find Ruby frameworks like Ruby on Rails you can get jobs in these spaces But the most important thing is the beer, right? So if you think hey, we have enough community We have everything we need, you know, I think we want to be on the we want to be on the other side with the beer right But this is about as far as I'm going to take Jeffrey Moore So everything from here forward is Bruce Tate not proven. This is hypothesis. This is based on observation So it stands to reason to me that fear can work in both directions, right? There's initially you think about The paralyzing fear that's going to make the chasm wider If you think about it, this is the the main Thing that you have to overcome when you're writing a new language when you're trying to get that language adopted Right, these are the things like can I afford it is this thing going to be abandoned? Do I have to retool? Can I afford it? Can what will it cost me, right? Is this going to break? Is it going to be too difficult for people to learn? These are the typical Fear-based issues that are going to get that are going to turn a small chasm Into a very big one especially when I'm moving between not just languages but programming paradigms This is the middle model that Francesco was talking about earlier today And the hard part in moving from a traditional language. This is the new language graveyard This is where languages go to die so What we have here what winds up happening is Based on the paralyzing fear even if there are new languages that are being developed in and And pushed and hyped There can be some very big languages parked on the right-hand side for a very long time Right, but when you're talking about new paradigms these cycles get even longer The problems become much more pronounced and the paralyzing fear Gets to be almost too much to manage because not only do we have to retool our own company But the industry has to retool right now the way that we think about Concurrency the way that most of us were taught in college is that you manage current concurrency with threads and locks And that's not going to cut it for the next generation right so Yeah, so you have longer cycles that means bigger chasms and and The motivating fear is in the middle of all that so What I'd like to talk about is The last time that we crossed the chasm we had a language on on the left-hand side was Java We had a language on the right-hand side with C++ Now it might look in this in this on this chart like we weren't changing paradigms at the time But how many of you were around for this transition? Okay, how many of you were using C++ at the time? Okay, how many of those people were using C++ in an object oriented way? One or two I Don't believe you but you know maybe you were So maybe I found the two people on the floor. Okay, you know we're getting a little bit more honest here So it's always been my contention that C++ had all the object oriented features You didn't have to use them. So it was more of its C++ minus minus, right? This was a procedural language right and what we had was was Really Java and a lot of other players that were trying to break across this chasm And this chasm was there because the industry the programming industry was facing a lot of challenges at the time like How do I like how do I distribute my applications? Not just across two tiers, but three tiers right IBM had this sales pitch called the interior architecture, right? And we were all talking about this thing. We were talking about how to do windowing systems. So now Screen sizes weren't 80 by 60 or whatever They were they became you know 300 by 600 So so the resolutions mean a minute that we had to basically manipulate more bytes on the screen We had to send data across the wire performance was a big deal, right? So some of the paralyzing fears Will that there was going to be too much to learn for object oriented? Technology, there's also the idea that when you bought a C++ system You were also buying a vendor and you were joined at the hip for life right and When you were on a single vendor system Basically at that time unless you were talking about the client You were probably joined at the hip for life to your hardware vendor, too This was a much bigger commitment then Back then to to C++ so over time the paralyzing fear Was mitigated a little bit you didn't have to learn quite as much because Some of this was a syntax deal, right? Some of the reason that we're here is that we have a Ruby friendly syntax Right that doesn't get you across the chasm, but it does get you into the door It helps helps to mitigate the problem somewhat There was the internet that opened up some of the systems so rather than dealing with Proprietary hardware and proprietary software I could deal much more with open systems and then there was the JVM that made Java portable across the systems and The motivating fear was deployment Here's what I mean. How many of you remember start installing early versions of Windows One was Java 1996 so Windows 95. How many of you ever had to install that? Do you remember how many diskettes? And we are talking diskettes Six more than six They're there ten There's the stack right there Right, and that was the deployment story, right? There were other people that commercially had solved the deployment problem. We're talking about 1996 and we heard Erlang Solution to deployment that was around in 86 But here we're talking about a different culture the culture of how do we develop software on the client and These people haven't hadn't really worked it out yet. This was Microsoft and IBM and a few other players But this was a story you would take those those diskettes you you will get your roller skates on and you will go from one system to the other and and feed the machine and The system got a little bit tougher when you talked about You know how many how many clients that that you were installing and then maybe you had more than one location and This kind of started blowing up right so you can imagine What the deployment story was and we're not just talking about? Windows at the time. What else did you have to keep up to date? Yeah office right well Internet well, no, no, we're not talking about the point in a browser, right? The browser is not in play yet the database engine the land management Communications management because we're doing things like screen scraping to integrate with that end tier, right? That beautiful into you on a chart meant that I I basically scrape the screen right and and move data around that way so This really this this situation really became unmanageable around around 95 and that's before we even had to talk about things like multiple vendors and and the fragile techniques that that we were using to program right so and and The C++ memory model that didn't have protection in between one segment and another and This basically Crushed us under our own weight, right? So this is the motivating fear. This is one when I say that they are that fear has two impacts on language adoption normally the The paralyzing fear stops everything in its tracks until there's a big enough motivating fear That kicks you in your pants and and basically punch you across the chasm. That's a business goal so my favorites My favorite display my favorite slide all day long was Roberts when he said, you know We weren't trying to build functional software We weren't trying to do to use actors We were trying to solve a business problem because this is how languages get adopted right and Then the internet happened and when the internet happened and Java married itself to the internet The deployment the deployment problem suddenly went away. You didn't have to deploy the clients anymore You had to keep one thing up to date and that was internet explorer. You could you could move the rest at your own pace Right and Java across the chasm. So here we are And Java's across the chasm and teed up on the other side of the chasm Are all these beautiful languages that we'd love to use Well, all these languages some of which are beautiful that we would love to use And so we are waiting for the time when the paralyzing fear is smaller and The motivating fear is bigger. So we tip and we cross the chasm So the question that we need to be asking ourselves today is what are the paralyzing fears and How are they getting smaller and what are the motivating fears and are they small? Are they strong enough to punt us across the chasm and you already know a lot of the punch lines Before I even go through the rest of the talk you already going through the arguments and you hey You know the multi course coming you know You know about the power of this community and that is growing and that you'll be able to find or train elixir programmers from From the people in this room because you've seen it happen a couple of times But you need to be able to this is the story that you need to be able to articulate to your management to do this for a living right, if not now and soon So the first question is how are the paralyzing fears getting smaller? and I think that There's a question that we have to ask What's the best way to eat an elephant? One bite at a time Right, so let's look at the little ways that the paralyzing fear is getting smaller and maybe they'll add up to an elephant size you know Thing on the weight is there on the other side of the scale, right? So I think the number one way that the paralyzing fear is getting smaller is kind of At this table, right? So it was a where were you born? and where are you from now and Where are you from and How did when did you meet? This is the core team Building communities is different than it used to be right Dave this is born in London born in London. Is that right? Okay, up a Liverpool. Okay born England and now in in Dallas And this is the core of what's being happening in elixir, right? And if you ask around in this community, how many of these people have met for the first time this weekend? Most of you, right? How many of you are from Austin? How many of you from somewhere else? How many of you from across the pond a different country? So that's kind of amazing itself, right? So we're up to you know, not quite 10% of the group, but a bunch, right and This is just the people that are willing to get on an airplane to learn about elixir, right? The internet is making the world much smaller Conferences like this one are making the world much smaller, right? Building communities is Much easier The second thing that's happening is you are starting to see more functional ideas and object-oriented languages Even Java has closures Java has closures. I mean, that's crazy, right? so When when I was in Norway a couple of weeks ago, I met my good friend Venkat Superminium and He was teaching a class called functional programming in Java Right Every time that you add a bridging feature like that to an object-oriented language The chasm gets easier just to cross, right? We're exposing a new set of developers to these functional techniques and these functional techniques work and they drive costs down And every time that happens the value proposition for for functional programs gets better deployment options are also much more widely available than they were We don't have to retool the whole hardware stack at our companies anymore We've got the cloud. We've got the Amazon services There are options for deployment that might take some tweaking from what we were doing with Erlang but They're either available now or will be much Pretty quickly. The last one is I think that interfaces between programs are getting cleaner So since we have since the last paradigm Shift we have an internet standard which makes applications a lot easier to write Which makes it easier to carve my application in pieces, right? so so I'm I'm speaking with with with Eric and Jose about the potential of running Elixir in my company and I know that with our small development team I can't do it all at once, but I don't really have to what I'd like to do is skin the application in rails Do the back end in elixir and get the benefits, right? That's where all my latency is between the database calls I don't have to do it all because my interfaces are cleaner now a Rest-based API is easy for me to write easy for me to build and it's easy for me to consume So let's talk about the other side of the chasm The motivating fear Right, so always the first motivating fear is code complexity right and a lot of the complexity this time comes from This this big freight train that's coming down the tracks. That's called multi-core. It's why a lot of us are here It's we know that there's no free lunch anymore, and we know that that We have to solve the code complexity problem of concurrency Can we do concurrency? Yeah, can you do it? Well, no, why because the burden is on the developer We need the bird that burden to be completely solved by the programming language so Here's an example from my book seven more languages. So this is a state machine done done in elixir and So Basically, this allows a usage model That looks like this and I could throw my I could throw my video straight through a pipe you know that That takes me through the states of a state machine and then have that call manage all of my business callbacks and When it's time to distribute that state machine. I have all kinds of options that are going to let me do that in a transparent way This is an A an OTP application that uses a DSL. How many of you have written in an OTP application in Erlang? How many of you used emacs Almost I was so why did you guys use emacs? Yeah, okay Why would you have discovered emacs if emacs one of if you didn't use emacs for everything to do OTP? Come on. We all know you can say it There's a magic OTP key, right? That throws out. I don't know what the boilerplate the Erlang boilerplate is for the magic OTP But it's pretty big right and what elixir allows us to do is to take advantage of all this great wisdom from the Erlang community and apply a new technique that's that's generated in in the Closure language apply it to you or which syntax and and Basically allows to distill the application so this and elixir places replaces Something much larger Which replaces in Erlang, you know, it's too big to show you know the the code behind the emacs key, right? Thanks today for the first cut at that DSL and to Peter Minton for the example Okay, now complexity Let's talk about complexity one more time This is so crossing the chasm this time isn't just about elixir This is about the family of languages about that the paradigm shift and and the idea that That we have a new family of languages a lot of the language a Lot of the the thinking and language design right now is happening on the client side right and So one of the things that I've tried to do with the seven language series is I try to solve a non-privilege problem by the by the time that it books over now the first Program that I ever wrote that had any consequence Was a game that I wrote in basic and I love basic But the nice thing about writing games way back then was that the machines were slow enough that I didn't have to worry At all about you know timing and synchronization or anything like that I just said okay, you know if you got a faster machine, you just have to play the game better, right? It's just gonna run faster since then I Haven't written any games because I hate dealing with the timing issues In the changing values over time and managing that it just got to be too much Well in Elm With a hundred and twenty something lines hundred and thirty lines of code. I don't know it's it with the exact count is But there's a application. Let's see if I can Show you guys So we're going to up Getting dangerous here. Okay. That's what I'm doing right now Come on You know you want a mirror? What's that? Okay? F1 Here we go So here's the game This is kind of funny So see how many of these people that you recognize and this was written in a hundred and thirty something lines of code This is called language heads. That's Dave is a garden gnome, right? That's me as the Incredible Hulk, but all this stuff is happening in In One hundred and thirty lines of code. That's the rotation the scoring and everything. There's Joe Armstrong. That's language heads Okay, and that so basically the paddle movement looks like this so I'll draw a paddle and I take the dimensions of the The dimensions of the window and the X location draw a back black Rectangle move it on the Y on the X dimension and move it on the Y dimension and I'm done Right and display to display it. I basically draw a collage with the paddle and main basically says Says take this signal and lift onto it these particular functions, right? so the input stream gets gets managed by the By the the last last line of code, so there's no callbacks here. This is just functional compositions and The more complex your application skit The more that this makes sense So the timing part of the of the game is all managed in about eight lines of code Everything else is done by the reactive framework of the application Okay, so basically my perception is that there's an elephant sitting on one side of the chasm as the The paralyzing fear starts to shrink and it's shrinking we can see that happening as the motivating fear Get stronger and we can see that happening, especially with co-complexity and multi-core. We have to do something Right, so now I think the the question isn't whether Java is going to be Sitting on that side of the chasm. It's which language is going to come across Right Questions comments What do you guys think you guys believe it? So nods he's disagreeing. Yep. Go comment Okay, the question was why do I think that something based on the Erlang VM can you serve something on the Java VM? The answer is That's that's a that's a deep question and I'm going to give you a couple of response to maybe three responses The first the first thing is that I think that we may be over the concept That there's one true language Right and the reason is very much the same. It used to be that to accumulate enough community for language to succeed You basically had to get to get all the sharp developers That that would that would act in the community right, so the second thing is that is That the only Virtual machine was designed to do precisely the things that we needed to do right so I Looked at a lot of languages seven languages was a book that was written in fear and You know in that I looked at closure. I like it a lot. I looked at Haskell. I like it a lot I think that that Haskell is probably the list of our generation great language, but I don't think that that we're Enough of us are ready to consume it. I looked at I Looked at Scala didn't like it because I think that there's too much in it I think like much like a great guitar player the great guitar players can play fast, but they know what not to play Right, it's the notes that are missing that really add the air that really give the shape to the language and I didn't like any of those and I kept looking and So elixir is interesting to me because it has elements of all those things right it has It has the Erlang concurrency model and Erlang's the the programming simplicity It has the macros That are done in a safe way with rich syntax macros with went with rich syntax change Everything even if you don't use them all the time even if you don't have to reach for them They increase the pace of language development and that is absolutely critical for the success of Erlang Or for the success of elixir Does that make sense? So those are the reasons I think that that this language is important to me and that's why I'm buying into it Now I think everybody has to buy into it. I think that that We either will get to critical mass or maybe got got there this weekend. I mean look around So more questions so the question to me is You point it out and I've seen this too a lot of the old languages. They're getting functional features back into them How do we get past that I can just stay with C sharp I can just stay with Java because they're getting the functional features anyway, and I'll be able to do functional program How do we get past that that inertia they've got? Yes, so the question is if I can if I can build Obtaining applications with functional features why why would I ever move on to something else and The answer is basically in the talk It's how strong is the motivational fear and how weak are the are the paralyzing fears I think that those are both coming into play the language that I'm worried about is not Java or C sharp It is JavaScript. I'm really worried about that one That actually feeds into a question I had about that when you had that list up there Yep, you have a whole bunch of languages plus JavaScript JavaScript has a huge of institutional support which is part of that the elephant in Java Yeah, so how does that not just become the blessed? Yes, yes, and so if you look at Language adoption syntax has had a very large large role at least for the past gosh 30 years and You can do some pretty cool pretty functional looking things in JavaScript But there is more and more noise that JavaScript is fatally flawed in terms of the type model in terms of expressiveness in terms of concurrency, you know if you ever want to Shoot down, you know hour and a half two hours and Robert, you know, this is true You just walk up to Erlang and you say JavaScript run to completion and then duck right So he thinks that that the JavaScript concurrency model is nuts and He's not alone. Actually, there's a question over here first here My question is We're all like for thinking people but Mostly the guy who pays our check who signs our check isn't yep, and I Worked for an enterprise that if Google does not support it They won't buy into it. So I'm having right now a huge fight technical fight between go and Alexa. Yep. Yep. How Like how do we keep though those people from pulling us back down when they're the ones that? Pay the checks. Yeah, and sometimes you can't right But but what you can do is is you can look at I think You basically talk to a business person in business language You say this is what those these new features are what to you. This is what these The lack of these features cost, right? If I have to manage these things myself like with Francesco Gave great talk this morning. He talked about go and that the big hole the big elephant in the room so to speak is the lack of the monitoring and linking and Basically the air handling Let it crash plus the monitoring change plus the monitoring code changes everything So what I would do if I were you what I did do when I was moving from Java to Ruby is I made a business case I didn't make a technical case right and follow the dollar signs and And you know, I think that that's a valuable way to proceed so Dave So I think you're right But one of the questions that got on this is one of those things where you ask a question And it sounds as though you're actually trying to like to make a point and actually genuinely asking a question Yeah, do we want it to become popular and let me let me tell you what I'm concerned about You see that there's a certain okay, so I've been with the Ruby community now since it was you know 20 people in a bar in Florida and I've seen some really big changes and Although it is still vibrant and still really smart. There's also an element of there goes the neighborhood To what extent is popularity a two-edged sword and to what extent Do we want to encourage it right now or do we want to wait until we're in a better position to be able to you know Educate the hordes or whatever it might be right right and I know that sounds elitist and I don't mean to I'm just I'm raising the question. Yeah, so The question is basically Do we want to do we want the popularity now? Can we afford the popularity now? And what's what's that going to do to this community? So there's always attention with language adoption between getting enough and getting too much and So right now, I know that the closure community, which is much larger There are serious concerns with with rich and and stew howlway Basically, they're Co-heads of Cauchy tech. Is that right? Say one more time Cognitive tech, right Which is the worst brand in the history of brands by the way Apparently not enough But the closure the the closure folks do a lot right in terms of developing community I don't think that they I think that they are They think that they need more community to achieve the critical mass that they're after and and we're substantially behind them in terms of when we started and and You know, I don't think we're at that point yet. So When it's time to put the brakes on I'll help you put the brakes on Um, but I think that we have the opposite problem right now. Does that make sense? Yep Okay so, um We don't like JavaScript taking over. I know closure has done closure script Which either uses mscript in or a direct compiler to js Would elixir script make sense so that we can do functional programming In the browser Okay, so the question is would elixir script and and the browser makes sense I'm gonna kind of turn that on said, um, I think that in the crossing so after Um, jeffrey morrow wrote crossing the chasm He wrote inside the tornado and this was all about Technology adoption I think one of the very the most important things that you can do When you're doing language adoption is to target a niche And you can bring on everyone that wants to come but you have to blow out your niche, right? So there are a couple of communities that I think are very ripe right now For in the area of elixir adopter and and there are ruby developers and airline developers and I'm not saying that That the elixir community will get them all But I think that the elixir community should be attractive for For new people who are who are looking for tooling in the erlang space And people who are from the ruby space who are really looking for something right now I would if I were A core team member. I would you'll highly encourage them to really blow those niches out first Establish those niches. Um, and then I think that you have enough of a Enough momentum to kind of push on to the next thing Yes Oh, that's we'll see what happens. So, uh, and we had kind of an interesting discussion in irc about this this morning And let's just assume as a lima that we want to become popular, right? Or they want to be at least very welcoming to new members You've kind of hit face first in the past several years like these 14 languages and you've got some experience and You know being a newcomer in these different fields. I'm kind of curious What have you seen in elixir that is maybe a little rough edge or maybe we could learn from other languages in terms of welcoming new members into the community Okay, um, the the question is what what have I seen in the elixir community that looks like a rough edge I'm gonna flip that on said. Um, I think that um that the elixir community gets what The initial approach to tooling needs to be Um, you know in some in you know closer doesn't have a great story for package management Um, erlang doesn't yet have a great story for package management with hex maybe they do right, um, the the the combination of pie with with the shell is is excellent The early tooling that this language has is great and it's hard to focus On um on tooling when the language features aren't done yet So I would do nothing but tip my hat to what these guys have done. Um, I don't know what the priorities are are to develop next but I trust you guys, you know, and they've done a great job All right, let's get Bruce big hand