UnLearning Elixir - RANDALL THOMAS

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
okay thanks for coming welcome all to Corona right especial we're gonna call this talk unlearning elixir this is me that's my email address the reason why is because how many people actually ever gone to a talk we're like a bunch of URLs and stuff go by and resources and people tell you things and you're typing or writing furiously and then it just disappears right all of you great so if you I actually hate that stuff when it happens by the way I don't know actually Bruce we stand up so this is Bruce Tate this is the person who actually taught me a lick sir right he's under the bus again and the reason I'm making him stand up is because Bruce has challenged me to curse less in my talks now there does exist a version of this right all right there is a version of this talk on YouTube that apparently is behind some sort of nc-17 wall because apparently somebody says that I said something about shore leave and sailors cursing whatever anyway so I'm gonna try not to do that but the point is my email address is out there so that you guys can send me an email and I will send you all the links in a PDF from this talk and a bunch of stuff that didn't actually quite fit in so like the research notes and any of the links about that stuff are actually there drop me an email and say hey code beam FSF the unlearning literature talks and I will send you a PDF that I am it's basically all the stuff from my my org file I just do and dump into a PDF alright we good so now you actually can pay attention you don't have to be like scribbling notes that was actually the original on title of this talk which because of course apparently these conferences are family oriented we can't do that right so but since all of you are laughing that means all of you had some of that agony right like functional is not easy so one of the things I wanna know is how many people in here actually write a functional language like as their day job holy crap I'm used to giving this talks like rooms are like Ruby developers and like JavaScript people and the JavaScript people just look like they're filled with rage what's that okay how many people here do more than one language like they're a polyglot with I always type differently so my left hand doesn't know the language my right hand is programming in its like it's like we can hack we can pair on this attacking let's get on the same keyboard okay I can skip over a lot of this stuff then because normally in this slide I use it to actually ease people who wonder into realize that they're walking to a functional programming talk that were actually weren't talking about how they're gonna do NPM install and get it to work right first language is how many people here had AC or procedural language as their first language my first language is assembler so I'm not even sure it was a really procedural okay anybody have a functional language as their first language really how would you get so lucky racket yeah actually we have racket weekend showing up later in this slide talk I think somewhere so yeah we're going to talk about some racket you're lucky she's better than the rest of us what's that well well way to anticipate the slide how many people had a functional language as their second language or somewhere I mean three four languages anyone somewhere okay alright this is gonna be interesting anybody knew who this guy is no shout it out this is an interactive presentation fine Hindman that's right mr. Fineman he's actually this guy he did something about physics awesome Nobel Prize quantum electrodynamic whatever anyway so what you don't know is that it turns out that he actually had an incredible technique for learning something he was actually famous for being a polymath of ultimate type including playing the bongos right and if you ever want to read an amazing book back-to-back read either genius and then surely you're joking mr. fine I mean you'll realize that you're just not nearly smart enough to be on this planet with people like this but he actually did say there's a great pattern to learning and teaching something and it's not as intuitive as you would think because the first step is of course we study something right the second thing we actually have to do is teach it okay so none of you are actually shocked or walking out of the room so let me explain this to you I want to be an open heart surgeon so I read a book on open-heart surgery now I'm actually going to teach you to be an open heart surgeon right it sounds a little counterintuitive doesn't it yeah that's backwards right do one do one watch one okay do one well at least you were teaching before you do one can't the other person go like are you sure that's right anyway so understand right you have to process what you're actually learning and the funny thing is what you're doing when you're teaching is you're actually using it to figure out what you understand and what you don't you're actually sort of it's almost like using that poor person as a rubber duck for your own ends right and then you've got a wash rinse repeat and so if you do that what ends up happening is you can actually accelerate the cycle of learning so the funny thing about the final man technique for learning something is that you don't wait to become an expert before you teach it and it's really kind of important because has anybody actually ever tried to learn something from an expert it doesn't work very well right because Bruce has a lot of great stuff about this like the Dreyfus model but in short experts can't teach beginners right oh sweet the ultimate tool for debugging we all have had this right I think everybody has one of these sitting somewhere so where we headed today we're going to talk about biases we're going to talk about your brains and then we're actually gonna talk about how you can actually trick these things into getting you the basic skills to getting a functional language right so things also you need to know about me time I've wasted the reason this is important is because the background of how people learn languages is super important if I learn C++ first and then I come to some functional language I'm going to have a whole bunch of baggage and I'm gonna be telling you that your syntax and Erling it's crazy you've got these curly braces everywhere it's insane everybody knows that the only thing you should have is 22 angle brackets next to each other while you have a template that's partially specified anybody written Perl anybody willing to admit that they rip yeah okay Perl C's guy right so my background was mostly in CCA language is an assembler so I start off as an abetted assistance programmer and I actually came to higher-level languages like C much later so the problem we're solving the problem we're solving is actually as it turns out your brains are not designed to learn things and so before you can learn something else you've got to know how your brain is going to work and how it's going to actually work against you right now the next part is going to be like notice that it's actually not a curse word Bruce I mean this is actually this is actually something else we're going to talk wer going to talk about the bye sees that your brain puts in there and we're gonna give you that moment like have you read somebody who's actually been like blah blah blah blah blah blah you spend three hours debugging something and then they say or you could just put the semicolon here what that's that moment so we're going to talk about how do we get to those moments faster because like it or not those moments of actual extreme frustration followed by a small piece of enlightenment and possibly murder of the pair are super important so how do we maximize those and then guru level enlightenment right that's the point in which you're like oh okay and you can start to actually get this stuff turning over in your brain so how did I learn to love Lamba languages especially if I started off an assembler and used to laugh at people writing C as it turns out oh I want to point out something here that is not assignment really I thought that would play for more laughs in this group man okay okay this is actually why I got into programming I assumed that if I was a programmer I was going to be this guy sitting at some table somewhere being suave right and robots doing all this crazy crazy stuff right so this is what happens when I first drove into functional programming people handed me a book on category theory and I said oh just read this book on category theory it'll be fine right now I don't anybody here actually know this might happen here anybody here actually a category theory or a PhD researcher in this stuff because good because I'm gonna mock all of you you shouldn't have to have a PhD and applied or abstract mathematics to write a piece of software right it might be a which shouldn't be a requirement or prerequisite right so this is basically my first experience with functional programming languages I asked some friends for help and this is pretty much where I ended up right because HelloWorld requires a monad sometimes just because it does okay so given that most people who try and use a functional language end up looking like this what's going on right why are we keeping doing this to ourselves and functional languages are so bad why are they so painful to learn what's the issue here why is it that everybody in the mother has a note application but nobody is actually writing f-sharp or Haskell or Erlang our elixir right anyone I don't know well so I have a theory and programmers are a very particular type of lazy okay I'm gonna start a holy war here we might have to separate the room how many people here use VI how many people here use Emacs don't attack the people who raise their hand hey man that's right good looking out two of us mmm right any other editors Adam sublime via BS code it's okay you can be you could be proud about it's okay to say we are in an age of where we can choose our pronouns and we can choose to use a Microsoft product right so it's funny because I will see somebody spend two frigging hours to get the parent matching working inside of analyst program our god forbid writing vim script and in fact a tee Pope used to work for us a long time ago I've seen T Pope right vim script and he wrote mem script so you don't have to so you will spend hours and hours and hours getting that stuff working right and yet they won't learn a new language it's like no that's too much work right like like think about this how many people here I've actually substituted and tried things like hack versus for code versus nerd font versus like hmm I don't know the kerning is that's almost two points of additional kerning there right so programmers are a very bizarre type of Lee right we will spend hours and hours and hours and hours optimizing any little bitty things but we won't spend something that might change the paradigms about the way we do our work it's just I don't know why that is but the other thing we have fighting against us is history all of us like it or not actually have this image that the computers and the systems we use were built by these omniscient engineers who had our best interests at heart that is completely not true right as anybody who's actually ever written any x86 code can tell you right protected mode extended mode register what EDX what like no computers are not your friend right as it turns out they were a series of compromises or ISM somebody said there was a tweet that somebody who told me about actually at a at Lone Star this this past weekend and it would they said yeah programming is all great until you find out that the Internet is made out of goblins and peanut butter right so there's a lot of history we're fighting with these languages right see the syntax like C was designed because it need to spit into a small memory footprint not because they actually wanted to pick and make a small compact language right there were practical reasons there so here's an experiment for us randomly sample a word of three or more letters from an English text is it more likely that a the word starts with an R like rope or B that R is its third letter like Park okay this is a time to exercise how many people say a how many people say B how many people see and think this is a trick question and there's no right answer yeah that's good I'm tricky this is a smarter group than most as it turns out you guys are totally blowing the curve so the right answer is B and this is actually something has anybody ever heard of a book called Thinking Fast and Slow Kahneman and Tversky they're they're basically behavioral economists that basically prove we're all really really stupid and that there is no invisible hand actually got any economy it's just idiots all the way down so yeah I did I really did and this is actually what's called an availability by a service ticker right what they found out is that people use heuristics as shorthand and the problem with heuristics is that they're normally or can be often wrong our heuristic is anything it's a mental shortcut that we use to do something kind of like you can almost always make a right on red until that one time you go to make a red and red in somebody t-bone to you right and you're like where did that come from it's because your brain short-circuits it our brain has to do a lot of processing and actually has to do a lot of work so it basically comes up with shortcuts right well these shortcuts lead us to cognitive biases and remember we don't need to write these links down because you can always send me an email and I will send them to you but this one's really important because that guy down there it actually does a type of research on I want to make sure I read this correctly this is stem ik2 systematic experimental study of reproducible errors of human reasoning and what these areas reveal about the underlying mental processes is known as heuristics and biases program and cognitive psychology okay really long right you're like so this program has made discoveries highly relevant to Assessors of global catastrophic risks as in he studies how our brains go wrong when we actually are the fate of the world hangs in the balance and ironically enough I just sum it up a coronavirus for this conference to make the point right so people underestimate the availability and the for instance of how they're gonna get coronavirus they'll cross the street smoking a cigarette and then they won't shake your hand right which one's gonna kill you faster so these are biases that we have and so the funny thing is as programmers if you think you don't have them you're deeply deeply wrong because one of the things your first language did or your second or writing a bunch of Sierre python is give you a whole bunch of biases that are ingrained in your brain and make it very hard for your brain to see the pattern in something else right so this is the person that you can blame if you can't figure out how to learn a functional language it's not your fault if you had learned you know if you were lucky enough to learn racket first you can just be like I don't see what the big chill is guys it's not that hard right but for the rest of us we actually have a brains that aren't doing this so well so one of the first tests you actually have to set yourself before you want to learn a language is you've got to build a new mental model about what that functional language is going to do right so first thing is you got to forget what you know right there is actually it's really funny I believe you just gave a talk about this there's the Dreyfus model of learning but Dave Thomas talks about this a lot but there are state as you go through learning but the first one is winning time you learn a new language or new platform you've got to go back to zero has anybody actually ever liked it installed a different version of node hey notate node no nine how different could it be oops right so you've got to do this a lot when you do this the second thing to remember is garbage in has this finish that's right unless you have a monadic function in which case nothing comes out so you know how often I can actually get a chuckle out of Mona a joke that is probably the biggest laugh all right it's usually singular but be that as it may write garbage in garbage out so you've got to do good reps and your training you've got to find good resources to teach yourself how to write functional programs if you don't you're basically going to be writing procedural programs in a functional language and how many people have ever debugged or seen code like that how many written it okay so another thing he's got to learn how you learn right not everybody learns the same way some of us can read books some of us have learned preparing some of us can watch videos but if you don't know how you're going to learn you will actually never get through this and you'll be frustrated so picking up on what works for you is super important because I might tell you to go read this great book I loved and it's not gonna stick and then finally master the basics and one of the things there's a guy I really enjoyed know him for a long time one of the things he always said is there are no advanced techniques only a rigorous mastery of the basics right and so the idea there is that what you think of as something that super advanced isn't it's actually just somebody who understands things so well that they can make those basic things look magical right and finally crawl walk run do not start with an embedded system made in Haskell that's parsing your own data files as your first Haskell program right maybe your second so and then finally give yourself time to do this stuff it takes a long time to actually change your brain you're actually changing new neural pathways and your brain has a bunch of heuristics about how programs are built and written in function functional programming breaks them so I like to call this six-minute abs for for lambda languages first off you got to join a a and buy a I mean that you have to have affordances and abstractions affordance is something that comes from design thinking and it's kind of like this has anybody ever seen a door that you go up to and it has a pull handle on it and then when you pull it it just doesn't go anywhere because it's a push door aside from the fact that there's a special place in Hades for the people who do that on doors that's called an affordance right it gives you a visual indication of how the door should work and the problem is when the affordances don't max the function when they don't match up you get middle veil school for the gifted right you're pushing on the door and the abstractions are important because you need to understand what your language provides attractions what it doesn't like for instance go or some other languages Pride things I'd abstract away threads or threading models right see actually it provides an abstraction over a memory model or a machine memory model right and so if you pick a language or a tool that doesn't match the level abstraction at which you're going to be to work you're just adding additional sort of friction to the process of learning a new language make sense all right so we need to understand an abstraction is directly proportional to its power that's the nice way to say it for your boss and this is what I actually really think about it this is what you say in your code review the more useful the abstraction the more astounding the bug so what do I mean by this anybody here ever written a rails app it's okay I think we all been there all right anybody ever here had an n +1 query problem in a rails app because of active record right we've all done it and that's because one of the things that DHH told us a long time ago is that you don't need to know sequel database extract that stuff away D so hard so and the final thing into remember is just because you can thank you doesn't mean you should right once again picking on node here but you know the shoe fits so how do we learn a lick sir well the first thing you got to do is well learn a lick sir and so what do I mean by that don't learn this okay so back in the day I used to work at a company called Engine Yard we were one of the first people to sort of really get into Ruby on Rails we basically fell into it by accident but we used to kind of have this joke we would talk about the difference between rails programmers and Ruby programmers because we were all Ruby programmers and this rails thing came along we could finally make money Ruby programmers understood have Ruby worked but they rails programmers didn't understand how Ruby worked and so the second you put them into an IRB session they would say something like mundane X and not wonder if they'll be like why does that not work and you're like whoa okay one yeah okay what do I explain eigen class no I can't explain to you why that doesn't work so one of the things you've got to learn is oftentimes people say don't teach me a licks or teach me Phoenix as I just want to build a web app I just want to build a web app so when you're doing that stop that person stop the madness learn elixir first because while you can absolutely write a Phoenix app without learning a lick sir understanding what it's doing is central to being able to be a proficient with it right and so that actually applies to almost everything right okay so here's the 10,000 pound gorilla in the room where summerling write elixir is built on Erlang and there are oftentimes things that you will see in an elixir app that people would be like why on God's green earth Oh Erlang cuz Erlang and if you know Erlang you become a much more proficient and effective elixir developer because you can pick a different level of abstraction in which to engage your problem at and as it turns out most of what we think of it it's really neat stuff in elixir is actually just Erlang right it's were laying all the way down process E is all the way down and you're also shortchanging yourself turns out Erlang has been around for a long time and there are lots of libraries on the beam that will actually help you or save you anybody ever here ever had two paths like Parsa crypto cert yeah yeah you do that once and you basically find some Erlang to do that for you right because nobody actually wants to parse I was at the asn.1 format or whatever Pam I can't remember x.509 search for lying it'll actually it'll help you even just a little bit right this is what most people think when you tell them to learn Erlang right and if you remember this comic was originally done for a react because if you react basically you had to write a MapReduce or actually query your database for a while yeah there notice it's censored so family friendly for those in the back who can't see it it says so how do I create the database and it says it's not a database it's a key value store okay it's not a database how do I query it you write a distributed Map Reduce function in Erlang he says did you just tell me to go F myself I believe I did Bob right here's another thing learning another lambda language or another functional language is deeply helpful now this is kind of counterintuitive you're like whoa whoa what I should be concentrating the one language that I have well as it turns out that if you can learn another language like racket I actually I really like teaching people racket because it's small scheme compact really useful you do useful stuff with it Lisp closure anything f-sharp ok Amal by learning another language it forces you to do is it forces you to get out of thinking in a language specific solution and learn the abstractions right it basically says Oh an enumeration is an enumeration like if I call in an e Neuman Ruby it's not that different than any new man elixir or in something else right and when you start thinking differently about those types of problems you've got to remember this is one of my favorite quotes instead of asking how do I do X and elixir asked how to solve Y right because one of the things you're inherently putting in there is an assumption that there is a solution that maps over to whatever it is you know so that often comes out when people like no see for instance and they chart writing C style functions in JavaScript and there really isn't a real class sometimes for their right there's no there's a metaclass kind of sort of maybe prototype kind of well sorta we Mountain lucked it it's an object model kind of sort of right so things quite work the same way and once again if you remember the previous rule about abstractions the problem there is that you can might get a solution but it might surprise you and how it breaks or when it does right so think about your problem as actually what's the elixir ish way to do this not necessarily how do I do that right because the answer might be we just don't do that an elixir right so here are four hard things that people always struggle with the syntax right people oftentimes actually get really caught up in the syntax that actually goes on in the elixir and Erlang eco eco system right anybody's I saw one think looks or burling's pretty I just anything it's functional but I'm not really like I'm not really in love with it I can write it right so it's okay this is a safe space all right functions right people from procedural backgrounds have a really hard time thinking in the unit of a function I mean I still do sometimes like you want to think about well I need to change this day there I need to do this like no no no no no no you don't need to write something that does that you don't need a procedure that does that you need to think about pipelines that transform data I'm like well what's the difference well there's a big difference in a functional language right matching okay how many people here dropped matching the first time they did it okay genius okay what why what made it so easy did you have some other functional language yeah okay great let's go good cuz I was about to feel like my self-esteem just dropped like 10 points I wasn't about to be all like oh you too mr. duck anyway so matching right matching is really hard because the funny thing is once you have it though how many people want to work in a language without it who have basically gone to a language with pattern matching and then gone back to language without it it's painful right you're like okay so let me get this straight I'm passing you six Meg's of data to get the one thing way down there and parsing the entire thing and loading a JSON library to do it good god man what's wrong with you right but once you actually understanding croc matching which is super important in almost all functional languages that pattern based dispatch you almost never want to live without it right strings if you haven't run into a bug in string and Erling our elixir yet don't worry you will great Erlang never get involved in a land where in Asia and never actually talked to a presenter about the enumeration errors in his slides alright so enumerated things right people oftentimes forget about like writing enumerators and reducers I would actually put a reducer up there like it's all reducers that's actually something I stole from Bruce but let's just start with enumeration first and then we can get to reduction but getting people to realize that they should treat things as an enumerable of something or nothing whatever it doesn't really matter it's a really hard concept right because we want to have a job array we would have something that's indexable we want to have like something that has a finite size and right a lot of times in function languages we don't care right we just don't care we don't that's something that we don't need to be concerned with right so how do you write better elixir you may ever seen one of these what is it yeah screed oh so there was actually an entire section here and then I realized that the entire point of Mariah had to write better elixir is actually install create I get credo and use it how many people here use credo in their projects all the hands should be up in the air how many people have elixir in production that didn't use credo oh man so the thing is credo is like one of the most helpful nicest people who's a coder you imagine that person he was your pair who's reviewing your code that instead of just hitting no on your pull request and sending you the laughing smiley actually sits over your shoulder and helps you write better code right credo if you read it it'll actually make you a better a lecture developer because you will learn understand explicitly what is considered good elixir mediocre elixir and just don't do that right so credo is actually I think it's like it's best the best style guide ever because it's interactive and you don't really have to do anything to basically get that feedback for those of you who actually you don't want to use credo there are absolutely looks or style guys that are out there I'm a big fan of using a style guide and sticking with it especially if you're coding with other people but reading a style guide it helps your brain understand the pattern and match on it so that you can actually get into the elixir thing and start seeing oh that's what they wanted mean that's how pipeline should start it should start with a bear value and then it could go to a pipe and it helps you understand why or not in you understanding your but you're consistent write functions people have a hard time with functions but it's I actually like to think of them as Legos for your language right and there are only three real rules of functions right functions themselves should be small right if you actually how many people have ever seen like a functional method and like a lick sir or line that goes on for pages and pages this is a code smell like do not do this if somebody is actually having a page of a lick sir they didn't know what they were doing either help them out right they should be explicit function should be explicit in both what they do and what they do not like and you can do that any number of ways but the nice thing about it is like elixir gives you a number of tools everything from throwing exception to not matching on a pattern to make sure that you're expose about what you will take and what you will not write and then you know they should be composable like if you were writing functions that don't compose it's like man come on right like what are you doing to me all right you're killing me smalls like don't do this like don't write functions that you can't actually use and build something else and procedural languages you have a tendency to think about that process and the whole thing and we'll end up with these big long methods these master methods that do everything anybody here old enough to remember writing Windows applications like Windows in ATL MFC applications so just so you know the original targeted method of writing a Windows application was to have a gigantic C switch statement with a case in the middle of your main run loop that dispatched directly to functions so that's that the state of your program could be depending on the order in which those messages are processed the state of your program would change what could go wrong right it says Clippy type specs I'm not going to fight the religious war in this one I think they're useful other people don't you know opinions may vary if they're useful to you and they're useful to your team use them if they aren't and it's actually keeping you from being able to learn in the language because you're not quite sure what the types bits do or why dialyzer is neat then forget about and learn it later right matching it's one the most important parts about learning something an elixir so here's what the definition that's taken from the docs actually says matching compares a term on the right to the pattern on the left the pattern does not doesn't exist it binds the pattern on the left to the term on the right that's super important because it means that you can put patterns and matching in places where you thought you could never put patterns and matching and sometimes it can be both a boon to clean up code or this is the devil's handbook right you can do some awful awful things that are completely unintelligible to your fellow programmer but understand what it does is super important because it's not a quality even though it looks like a quality because you know it you kind of let you rebind things but this becomes super important when you start passing around closures right you need to understand what you're doing when you're matching or sometimes when you have a weird like error sometimes it spits out it units like could not match non-exhaustive match you're like why not you need to understand what matching is going on because it's very easy an elixir to fall back into the sort of calm place where well it's equals right we just did an assignment you did not you did a match right so this is actually taken from some code I wrote with that man over there right thanks Bruce I'm stealing your code this is a standard pattern right we've all seen code like this I mean this prevents us from matching in something that we weren't expecting right this is an example of how matching protects us if we pass in something that's not like essentially within this instance the name of this module was Rover right it'll basically barf at us it's like I'm not gonna let you do that how many people here I've ever tracked down a bug because somebody would pass the wrong data structure to you right and think about sometimes what I hate is when they pass the wrong data structure that looks like it should be the right one like some JSON blob or you're like why's this blowing up oh it's ID underscore ID what's not ID well okay yeah right look sure keeps us from doing that guards should be using guards right we want our functions to be explicit and guards are one of the ways that we can actually be super explicit about this now this was a test but you guys are all pretty smart or lying functional programmers anybody gonna use this ATM I can ban a white it for you right there any restrictions on what we can pass and what can it mount be anything can be nothing right thank you god forbid it could be a car list uh-huh I see some people have been there okay right great bad right we can actually fix that and not only that we can be explicit about what we expect that function to do like basically we just said hey you can't take out more than a thousand bucks and anybody who comes behind us actually you can see that explicitly if they look in the code and so if somebody tries would draw a thousand bucks from an ATM and it errors out right not only do they get a better error but they can go back to the code and be like oh I guess they meant to make sure that this thing never could take out more than a thousand dollars right much better argument much better error right side note I actually find elixir as one of the few languages that doesn't hate you when it terms of its error messages I wrote C++ and advanced like template as C++ for a very long time and if anybody has ever tried to debug a template you don't you just give up and basically delete everything and start typing in and over again because nobody's gonna find the missing angle bracket right strings this is where things can get a little hairy right does I have anybody actually generally speaking ever run into problems with these the differences between these right it's super important to know oh you have exactly kiss a car list right we need to just be aware that there are they're basically three different things that are sort of all kind of treated the same so the rules are you can usually ignore strengths there is however a caveat which is the second rule which is you can actually ignore strings right up until you can't ignore strings right so take a second to parse this it's basically we put something instant emoji and without going too much about UTF encodings and everything else it's not going to do what you think it's gonna do right that's the intent of the telling you this slide right so we're we're basically we have a string it's got an emoji character in it then we're going to put what the string is we're gonna put its length bite size what's the last character and then we're gonna get the code point operator on it right so the length is seven but the number of bytes is ten and if you understand anything about Unicode strings you'll understand why that's different now one of the places that this can bite you in the butt is imagine you're doing like a protocol buffer or you're allocating something you're sending something across the wire you have a wire protocol so and you get a string or what you think of as a string value you is it is it really right that's super important especially when you start talking to things outside because that's how you can actually the corrupt memory or cost crashes and you rate all the things to do oh is it really actually I'm so sorry was it thirty was it thirty five minutes are forty minutes ten minutes got it well then we'll skip to something else learn Erlang let me actually do one thing for you find a slide for you I thought it was 40 min sorry about that this is actually a straight 45 minute talk to do to do let me give you the stuff that you actually really need right which is this the resources are are as follows remember I'll send you these links this is function program for the rest of us that's actually a really good link to actually learn functional programming this is the hulkster Handbook of course this is Bruce's book seriously if you're going to deploy a production Alixe wrap read this book first it's the best book on architect Neelix wraps I've ever seen and I'm not just saying that because I learned how to write stuff from Bruce pragmatic studio actually has some really great videos on this you know if Bruce actually has a platform for learning elixir and actually other languages and finally I'm gonna tell you one other thing learning you some Haskell because Haskell will make you I am the world's most terrible Haskell programmer but it turns out by being a bad Haskell programmer I'm actually a pretty good elixir programmer so unfortunately that's time for me and I will put this last thing there's so much there that you guys need to learn just don't be afraid to dive in and do it thanks for your attention and you can always get any of the slides or the resources from this talk by dropping me an email all right thank you so much Wow as an excellent talk thank you very much I do it we may not have enough question time for questions if you'd like to if you have some questions I'ma stick around otherwise we have our keynote starting in ten minutes perfect yeah come come sure yeah sure yeah absolutely does anyone have a question we have time for one one question no pressure not even like who was the metal band playing before likely the sides came on so because that one's shorter and it in bigger print my full-name doesn't fit that's really it literally was the font size that was yeah so you were talking about what makes languages hard to learn mmm yeah how will they approach designing a language so it's easy to learn interesting that's the question is how would I approach designing a language so it's easy to learn that is actually a great question because I tried designing languages for a while like using Rago and antler and I actually found out that I am terrible at designing semantics of language is that designing a language is super hard I don't know that I could I don't know that I really could because when you start looking at the affordances that you need to get a language who are you designing it for what's the purpose all those things play in so to design a general-purpose language is really hard and in fact I think that's one of the things that's kind of amazing about elixir is you're talking about something that works everything from embedded systems all the way up to a web application or mobile applications at scale and the language just works that's kind of an amazing feat for me so I don't know that I could but that's a great question I'll tell you when I launched my own language call swear write anyway so absolutely all right hey I'm gonna be packing up by all means feel free to like track me down if you have other questions while I'm stuffing like crap into my bag but thanks so much for coming guys really appreciate it [Applause] you
Info
Channel: Code Sync
Views: 10,172
Rating: 4.8713827 out of 5
Keywords:
Id: 63f8pdAxVaI
Channel Id: undefined
Length: 40min 30sec (2430 seconds)
Published: Mon Jun 08 2020
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.