Speaker 1: Hello, and welcome to this week's episode of Alexa Mix.
Speaker 1: We are joined by, as ever, our fabulous panel of posts.
Speaker 1: We have Alex Kutman, Hey Alex. We've got Bruce t Hi. Everybody,
Speaker 1: Hello Bruce.
Speaker 2: We've got Steven Nunyez.
Speaker 3: Hello.
Speaker 2: I am SOPHIEA Benedetto and we are joined today.
Speaker 1: By Randall Thomas, who has many potential introductions that I
Speaker 1: may choose from.
Speaker 2: So I'm going to go with my favorite two, which
Speaker 2: is the first. One's a little more informative.
Speaker 1: CTO at a tech incubator called Geometer, as well as
Speaker 1: a thanks for Hacker and vonn Dufon, and I'm sure
Speaker 1: we'll be excited to dig into any of those topics.
Speaker 2: Welcome Randall.
Speaker 3: Oh, thank you so much for having me.
Speaker 1: Yeah, we're so thrilled you could be here. We've got
Speaker 1: so many great things to dig into today. But one
Speaker 1: of the things that we often ask us when they
Speaker 1: first come on is tell us a little bit about
Speaker 1: how you got into the Elixir community in the first place.
Speaker 3: Strangely enough, the short version is I've been around the
Speaker 3: Rube community for a long time, and one day I
Speaker 3: looked around and all the people that I knew from
Speaker 3: the old Rube Kee Comunity weren't there anymore, and I
Speaker 3: figured out where they went, and it turns out that
Speaker 3: they all showed up in Elixir. In fact, it was
Speaker 3: kind of accidental. I went to I think the first
Speaker 3: Elixir comp I had gone to, I think was in
Speaker 3: twenty eighteen or twenty seventeen, and I showed up there
Speaker 3: and I literally just walked around. I'm like, wait, so
Speaker 3: that's why you weren't at Ruby komf Oh wait, so
Speaker 3: you're here. What are you doing here? So I thought
Speaker 3: I would know no one, and it turned out that
Speaker 3: I knew everybody. So all the smart people that I
Speaker 3: sort of coattailed on and Ruby ended up in a Elixir.
Speaker 3: So I figured they're way smarter than me. I should
Speaker 3: go follow them see what they're doing. So it's kind
Speaker 3: of it.
Speaker 1: That's really as good a reason as any, and kind
Speaker 1: of similar to how I started learning Alixir. It's like,
Speaker 1: I don't know, maybe four or five years ago, one day,
Speaker 1: maybe five five thirty, and Steven says, hey, you want
Speaker 1: to see something cool, And that was kind of like
Speaker 1: theyentre into the wide world of Alixir.
Speaker 2: So following the smart people is the way to go.
Speaker 3: There was a funny thing. I'm pretty sure this is
Speaker 3: actually true, right, but like all apocryphal stories, because it
Speaker 3: happened in Barcelona. There was baruk oh Barcelona Ruby konf
Speaker 3: and at the time we were giving this talk on
Speaker 3: Ruby motion. If you remember, there was this big kerfuffle
Speaker 3: about hey man, you're gonna be able to write iOS
Speaker 3: apps in Ruby, and it was actually a really really
Speaker 3: great idea, I kind of think a little ahead of
Speaker 3: its time. And I think actually at that conference somebody
Speaker 3: was talking about, oh, yeah, you heard that somebody's trying
Speaker 3: to build a Ruby for Elixir or for Erlang, and
Speaker 3: I'm just like, yeah, good luck with that. I literally
Speaker 3: thought it was like because I was thinking about, like
Speaker 3: I tried learning Arlang once when the prag Prague released
Speaker 3: that first book from Joe on Arlang, and I remember
Speaker 3: getting into it and I remember thinking I'm like, okay,
Speaker 3: I'll put this somewhere right above pearl. I recant that
Speaker 3: statement now, but at the time I was thinking to myself, like,
Speaker 3: there's no way you're ever going to get Rubis to
Speaker 3: learn the syntax, because you know, the obsession with beauty
Speaker 3: and elegance and expressiveness and everything else.
Speaker 4: Yeah, and it's really funny that Jose kind of put
Speaker 4: it onto the Ruby syntax, not as this great statement
Speaker 4: of let's bring all the Ruby community over right, is
Speaker 4: more like okay, one last thing, right, nobody yet, and
Speaker 4: then then he kind of layers on these these beautiful abstractions.
Speaker 4: But yeah, it seems like we were kind of circling
Speaker 4: to each other for a long time randal before for
Speaker 4: the Elexer community that you know, the idea that that
Speaker 4: you were engine yard and you know, us to point
Speaker 4: some stuff there, and you were kind of kind of
Speaker 4: involved from from the very beginning, and kind of we
Speaker 4: were we were just just outside of each other's or
Speaker 4: but it didn't really meet until the Groxio course.
Speaker 3: Yeah, which is That's actually what I like to say, is,
Speaker 3: you know, I do a lot to to Bruce for
Speaker 3: for really getting involved in the electric community. I don't
Speaker 3: actually did you just advertise that course online? Was that
Speaker 3: what it was?
Speaker 5: Yeah?
Speaker 4: I mean we literally just threw a couple of tweets
Speaker 4: up just to see if there was a test market,
Speaker 4: to test the market, and we said we would need
Speaker 4: more people to start the class, and then you were
Speaker 4: two signed up, but one was you, right, and the
Speaker 4: other one was Patrick Thompson who's already writing you know,
Speaker 4: articles and pull requests or Phoenix or Phoenix Live you.
Speaker 4: But that was kind of a cool moment because we
Speaker 4: had to decide whether to do the class or not,
Speaker 4: and at that point we decided to go against the
Speaker 4: grain of traditional courses to kind a you know, like
Speaker 4: a smaller midge to school right where everybody could And
Speaker 4: then that's that's where we kind of decided to flip
Speaker 4: the keyboard, and.
Speaker 5: You know, the rest is history.
Speaker 3: Yeah, I was a pretty New York or program before
Speaker 3: I got to spend a week in pairing with Bruce,
Speaker 3: at least for Alixir, which is I think that's something
Speaker 3: that we take for granted. You know, if you come
Speaker 3: from procedural languages, it's really easy. If you know C,
Speaker 3: you can kind of learn C plus plus even though
Speaker 3: it might not be the right idioms, but it's the bridges.
Speaker 3: If you know Joba, you can kind of get into
Speaker 3: go and like. But learning how to actually think in
Speaker 3: Elixir and break down the problem differently or thing functionally
Speaker 3: is actually one of the big barrier sentry I think
Speaker 3: people have and seeing it and doing it with other
Speaker 3: people and going through that evolution was really helped me
Speaker 3: but actually really leveled up my elixir.
Speaker 4: Yeah, so I don't I don't take any credit at
Speaker 4: all for you think you're doing an elixir by the way,
Speaker 4: but I do think that there's a moment where your
Speaker 4: revolution is like a lot of a lot of other
Speaker 4: people's like mine as well. Right, it's why are the
Speaker 4: cool kids leaving the room?
Speaker 5: What do they.
Speaker 4: See and how do I how do I make the
Speaker 4: minute that mental shift to do the things that that
Speaker 4: good programmers do. And you know that's what we were
Speaker 4: all able to go through together in that class, you
Speaker 4: and Patrick and I.
Speaker 3: Yeah, well I still I still think it's one of
Speaker 3: the greatest things that where I recommend it. In fact, actually,
Speaker 3: if you remember, one of the first things I did
Speaker 3: at CTO was I got a subscription. I think I
Speaker 3: neede you write a feature so I could get my
Speaker 3: team on Groxia. So shameless plug for Bruce's like learning
Speaker 3: platform Groxio. It's great to learn alixer in a browser.
Speaker 3: And I've actually used it for other people and they're like, well,
Speaker 3: what do you think about Elixir? I'm like, I don't know.
Speaker 3: Go try it out in a browser, like most people
Speaker 3: are just blown away. That'll run in a browser anyway.
Speaker 5: So it really doesn't runt in a browser.
Speaker 3: It doesn't. But like those types of abstractions, it's not important.
Speaker 3: It's like it's like everybody else. You first one's free,
Speaker 3: ay man, first one's free.
Speaker 5: Yeah.
Speaker 4: But so as your Elixer genrety journey has kind of
Speaker 4: started off, you didn't kind of peck around the edges
Speaker 4: like most people did.
Speaker 5: Right.
Speaker 4: It's you know, you went from kind of zero to sixty, right,
Speaker 4: So you went from Okay, now I'm in the community
Speaker 4: taking a class to now I've got this incubator. Can
Speaker 4: you tell us a little bit about what you're doing
Speaker 4: at geomat.
Speaker 3: Yeah, So some people I used to work with they
Speaker 3: started a tech incubator, like all good things, and then
Speaker 3: COVID hit. The most interesting part of actually what we
Speaker 3: were doing was we ended up pivoting towards doing COVID
Speaker 3: response work, and a lot of the work we ended
Speaker 3: up deploying for several states was actually built on Elixer internline.
Speaker 3: So we actually have data transformation platforms and pipelines. A fact,
Speaker 3: we used Broadway for one of them. Two that are
Speaker 3: currently supporting contact tracing in two states on the East coast,
Speaker 3: So we learned a lot about both the scalability and functionality.
Speaker 3: So just to give you an idea, they were caught
Speaker 3: in batch world. Their best turnaround time started off at
Speaker 3: twenty four hours, and then when they were really trying
Speaker 3: to get up to speed, they could do it maybe
Speaker 3: in six but there were a lot of errors and bugs.
Speaker 3: We were actually able to in a week spike and
Speaker 3: prototype something and then in about another week actually get
Speaker 3: into deployment a solution that using Broadway and the inherent
Speaker 3: sort of scalability of OTP, that turned the Literally we
Speaker 3: were able to process the data faster than they could
Speaker 3: get it to us. So we went from processing and
Speaker 3: turning around all the COVID cases in about every couple
Speaker 3: hours to one minute and thirty seconds was our first test,
Speaker 3: and we got it down to sub one minute, and
Speaker 3: they were doing it incrementally. We were actually able to
Speaker 3: reprocess every single test, every single run, every single time,
Speaker 3: which allowed us to do a different type of quality control,
Speaker 3: which really matters for deduplication because a lot of the
Speaker 3: issues that you run into with COVID testing are that
Speaker 3: the lag between when people get tests and the test
Speaker 3: results are reported. I mean that duplicates and false positives
Speaker 3: are a real problem. So that was all done on
Speaker 3: Elixir and Earlin, right, And that was one of those things.
Speaker 3: By the way, we also wrote a telyphony shim that
Speaker 3: actually did calliphony control, that did call control for connecting
Speaker 3: calls to contact tracers, also done in arline, and both
Speaker 3: of them, if I remember correctly, I might be making
Speaker 3: this up a little bit, but both of them required
Speaker 3: so few resources that they ran in like a container
Speaker 3: inside of like an easy two medium, right. It was
Speaker 3: just so ridiculously efficient that it was kind of kind
Speaker 3: of sad, and we replaced a bunch of custom made
Speaker 3: over this. Lambda functions that were doing this that had
Speaker 3: to do were somewhere aer prone. I think the Lamba
Speaker 3: function loads were a couple hours, like fourteen or fifteen
Speaker 3: hours to reload the entire universe of data, just because
Speaker 3: of some architectural decision. But the short version is alexur
Speaker 3: was a big win because three people were able to
Speaker 3: rebuild that system in like a week. So long week,
Speaker 3: mind you, but it was really kind of impressive. That
Speaker 3: was one of those really aha moments when you can
Speaker 3: think about Elixir and Erling and being are very different
Speaker 3: and they provide almost like what people or devs think
Speaker 3: of as superpowers.
Speaker 5: So I feel like I've lived the same exects story
Speaker 5: of Lamb does being painful and terribly slow and then
Speaker 5: replacing it with an Elixir app and then it was,
Speaker 5: you know, like a whole different world entirely.
Speaker 6: Yeah.
Speaker 3: Actually, do you ever see that T shirt that says
Speaker 3: go away, I'll replace you with a small shell script.
Speaker 3: You know, there was like this comic I think it
Speaker 3: was floating around for a while, but it's I almost
Speaker 3: feel like the exact same thing. It's like almost any
Speaker 3: use case where you're using the Lamb to function, you
Speaker 3: can use Elixir and it just kind of works.
Speaker 5: It's kind of funny. I mean, a Lamb is effected
Speaker 5: with like one gen server and we can spawn like,
Speaker 5: you know, thousands of thousands of them, no problem.
Speaker 6: So are you guys saying this? And the question I
Speaker 6: have is why isn't everyone doing this? Why is the
Speaker 6: Elixir not like the language that everyone builds all the things?
Speaker 6: I mean, yeah, obviously it's the right soul for every
Speaker 6: job there. That's a great question. It has nothing to
Speaker 6: do technology.
Speaker 3: I'd love to hear what you guys think, and then
Speaker 3: I'll opine with my own slightly derisive, sarcastic view on.
Speaker 4: This and and the darkness behind then right language to
Speaker 4: rule them all.
Speaker 5: Right, It's it's interesting.
Speaker 4: I'm starting to play with with a lot of different
Speaker 4: languages that that have different takes in the world.
Speaker 5: And so the.
Speaker 4: One that really opened my eyes was Pony because it
Speaker 4: does so there are a lot of things that Elixer
Speaker 4: does really well that that Pony just really really sucks at, right,
Speaker 4: But one of the things that Pony does well is
Speaker 4: it enforces compiler constraints that enforce concurrency constraints, right, so
Speaker 4: incorrect programs won't compile.
Speaker 5: And so you know that that pointed.
Speaker 4: Me to to the to the idea that if you
Speaker 4: have to move a lot of data around, you know,
Speaker 4: if you have a lot of mutability, then then Elixor
Speaker 4: isn't it. And so I've been spending a little bit
Speaker 4: of time in Julia this year just kind of to
Speaker 4: flux the old math muscles.
Speaker 2: Right.
Speaker 4: So I was a math major in college or computer
Speaker 4: science and math, and so one of the things that
Speaker 4: we were focused on was linear algebra, I'm sorry, like
Speaker 4: matrix matrix algebra. And that's kind of what machine learning
Speaker 4: and machine modeling have have turned into, right. It's it's
Speaker 4: you have these these massive systems of equations and and
Speaker 4: algorithms to kind of slowly crank and provide more and
Speaker 4: more precision. And we're starting to get into the places
Speaker 4: where where you could take these these massive tables and
Speaker 4: apply these differential equations to them. And Elixer is just
Speaker 4: not good at that, and it is never going to
Speaker 4: be good at that. It's good at kind of the control.
Speaker 4: But yet, Yeah, I mean I think that that there
Speaker 4: are a lot of good things that Elixer is great at.
Speaker 4: It's funny, Randall, It's Elixur is great at almost all
Speaker 4: the things that we were doing.
Speaker 7: Where you're at these early Ruby communities, right the deployment,
Speaker 7: the you know, the the babysit a big fat relational
Speaker 7: database with a web UI, you know, on and on.
Speaker 3: Yeah. No, So I don't know, what do you guys,
Speaker 3: Why do you guys think it's not winning? I mean,
Speaker 3: I guess the other question is what's the definition of winning.
Speaker 3: I don't think universal adoption of everything is the definition
Speaker 3: of winning. I don't think it's for everyone. Not all
Speaker 3: languages are for everyone.
Speaker 5: I have a question, how do we know it's not winning?
Speaker 3: Right?
Speaker 4: The language popularity? And they make mistakes?
Speaker 3: Right, Oh yeah, didn't they? Actually what was it? There's
Speaker 3: something that they included, like crystal, that's what it was, right,
Speaker 3: And they ended up playing.
Speaker 4: Like agechygramming crystals, which is either a programming model or
Speaker 4: a great way to have your new Age crystals learn
Speaker 4: as you get more enlightened every day.
Speaker 3: I have to look into that. So no, So I
Speaker 3: think there are lots of things. It's really funny. So
Speaker 3: one of the things I learned from being a rubyist
Speaker 3: early on, and at the time I got into Ruby,
Speaker 3: I was actually an independent consultant. I was all in
Speaker 3: dot net, like I had actually started a long time ago,
Speaker 3: System five Release three, that's how old I am. But
Speaker 3: I had gotten into that net because that's where all
Speaker 3: the consulting money was. So that was c plus plus
Speaker 3: MICROSUF Foundation classes, all that crap, and the learning Aha
Speaker 3: moment for me is I had to take some visual
Speaker 3: basic programmers and try and teach them see sharp and
Speaker 3: they failed miserably, like there was no way to teach
Speaker 3: them the basics of classes, and they just hadn't learned
Speaker 3: any of that stuff, and we had to deliver an
Speaker 3: ETL system. And Blake Miserini at the time he's like, hey, man,
Speaker 3: I know you like Pearl, but I've got something way
Speaker 3: better than Pearl. And I apologize for all the Pearl
Speaker 3: I ever wrote. I think we all need to do that.
Speaker 3: But he said I got something way better than Pearl.
Speaker 3: It's this Ruby thing and like whatever. So I played
Speaker 3: around with it for a week and I'm like, huh,
Speaker 3: this is pretty neat, and I'm pretty sure at the
Speaker 3: time I actually had to go to like a bookstore
Speaker 3: and find the Ruby book, like an actual print version
Speaker 3: of the book. This was, you know, so like he
Speaker 3: had to like run around to borders and whatever and
Speaker 3: try and find a copy of Dave Thomas's book. And
Speaker 3: I did over the weekend, and then I tried it
Speaker 3: with these guys on one day and I had them
Speaker 3: doing advanced string processing and classes. They just got it
Speaker 3: and rocked it. And that was the moment I knew that, like,
Speaker 3: oh yeah, that's where we need to go, and so
Speaker 3: I literally just stopped doing Dutton had stuff and started
Speaker 3: doing all in on Ruby and Erlin and Elixir, and
Speaker 3: I actually, when I say that Earleg, Elixir, Beam, I
Speaker 3: actually really like to separate those things because I think
Speaker 3: it's important that you don't mix them or blend them
Speaker 3: like they are there are different things, and that you're
Speaker 3: getting a lot there. I think it has that same
Speaker 3: feeling as early adoption for Ruby. Like literally when we
Speaker 3: started doing Ruby work, we had this other company called
Speaker 3: Quality Humans where we were all doing rails apps and
Speaker 3: everybody thought that we were crazy. You're like, I don't
Speaker 3: know this rails thing. I don't know. It seems pretty risky,
Speaker 3: Like only do guys in Chicago are doing it? Yeah.
Speaker 5: I mean I think that.
Speaker 4: Very often we as a programming community have to take
Speaker 4: a step back to take a step forward, right, And
Speaker 4: I think that that's one of the things that would
Speaker 4: be provided, right. So it was a huge step forward
Speaker 4: in a lot of ways, right, first in the idea
Speaker 4: that a programming language should be intuitive and fun. Second
Speaker 4: in that that you didn't have to specify, it wasn't
Speaker 4: kind of this this really tedious artificial typing model. And
Speaker 4: third we didn't have these really tedious and artificial configurations
Speaker 4: that were you know, XML that was explicit for everything,
Speaker 4: with no defaults. All those things were really important for Ruby,
Speaker 4: and it seems like by taking that step back to
Speaker 4: reset the kind of the bar on for application developers
Speaker 4: on the productivity of application developers. You know, we got
Speaker 4: a lot of the you know, the deployments, you know, mutability,
Speaker 4: a lot of a lot of things wrong, but there
Speaker 4: was a whole lot that was right about Ruby that
Speaker 4: Lizor learned from.
Speaker 3: Yeah, good stuff.
Speaker 1: I like that you mentioned productivity, Bruce, because it's something
Speaker 1: that I absolutely feel is true of Alexa and Phoenix.
Speaker 1: And then kind of back to what you were saying, Randall,
Speaker 1: when you were trying to, you know, move some folks
Speaker 1: into kind of this realm of like object oriented and
Speaker 1: when you found Ruby and kind of brought that to them,
Speaker 1: that people were able to grack it and learn it
Speaker 1: and be.
Speaker 2: Productive in it relatively quickly. And that's absolutely true of Alixir.
Speaker 1: It's absolutely true of Phoenix, and not just because of
Speaker 1: you know, Alixir's language features, in the fact that, similarly
Speaker 1: to Rubyo, it is eloquent and easy to reason about.
Speaker 1: But I think there's so many sort of Alixir ecosystem
Speaker 1: features that allow developers and whole teams to be really
Speaker 1: highly productive. And I think that's why I'm not at
Speaker 1: all surprise to hear how Alexir and Erlang has allowed
Speaker 1: you guys to solve these really big scale problems for
Speaker 1: like COVID contact tracing. It reminds me a bit of
Speaker 1: a talk that was one of the keynotes at Alexa
Speaker 1: kronk EEO this year, which will hopefully be out soon,
Speaker 1: about some folks in Kenya who are using Elixir to.
Speaker 2: Develop a new like nine to one one emergency contact
Speaker 2: system around the country.
Speaker 1: And it's just it's kind of the perfect combination of
Speaker 1: like scale and concurrency and fault tolerance, but also productivity
Speaker 1: for actual humans.
Speaker 2: And so I definitely be curious to hear, you know,
Speaker 2: from you Randal with your experiences lately with some of
Speaker 2: these COVID projects, Like sounds like you.
Speaker 1: Guys spun this up really fast, like a week later
Speaker 1: you had these working prototypes. So like, what is it
Speaker 1: about Alixer specifically or this ecosystem specifically that let you
Speaker 1: guys do that so quickly?
Speaker 3: So I'm going to give you the first one in
Speaker 3: no particular order, but the first one that pops to
Speaker 3: mind is people. So it's a really bizarre thing that
Speaker 3: I found is that people who are looking for those
Speaker 3: exact things that you mentioned, like people for whom tools matter,
Speaker 3: like productivity matters. Like this is not to popoo or
Speaker 3: denigrate people who don't choose that, but there are some
Speaker 3: people who are like approach things that it's kind of
Speaker 3: like a craftsman, and some people approach it it's just
Speaker 3: like this is my job. But there are literally people
Speaker 3: who go out and try and learn more because they
Speaker 3: want better tools, they want a better experience, Like all
Speaker 3: those things holistically matter to them. And I find people
Speaker 3: who gravitate to the elixir ecosystem generally speaking, care about
Speaker 3: those things and as a result it ironically it makes
Speaker 3: them much better problem solvers, Like they literally care about
Speaker 3: the solution and the elegance solution on I think Buckminster
Speaker 3: Fuller had that statement. I might be mische doing the quote,
Speaker 3: but it's like, first I start with a solution, but
Speaker 3: if at the end it is an elegant, I know
Speaker 3: that I haven't solved it in the best way. It's
Speaker 3: kind of that's kind of the gist of it. So
Speaker 3: we actually because we had people who had experienced in Elixir,
Speaker 3: they were really good at solving problems. Then the other
Speaker 3: thing that really works out is that beam Erling and
Speaker 3: Elixer provide great abstractions, Like I really love the fact
Speaker 3: that you get to pick to the right level of
Speaker 3: abstraction for your problem, and if you need to go
Speaker 3: more granular, you can't. If you don't have to go
Speaker 3: more granular, no need. Like I wrote C plus plus
Speaker 3: for a long time, probably professionally for the better part
Speaker 3: of almost eight or nine years, and one of the
Speaker 3: problems I always I didn't realize at the time because
Speaker 3: like I started off an assembler and then everything looked
Speaker 3: better than assembler was that C plus plus forces you
Speaker 3: to solve every abstraction from the ground up, like almost
Speaker 3: invariably you're just starting it's like, oh yeah, so let's
Speaker 3: talk about how you're going to play out the memory
Speaker 3: for your class. Write another class. Guess what, now you're
Speaker 3: going to do the exact same thing. Let's talk about
Speaker 3: the copy semantics for your class. Let's topic about like
Speaker 3: all of these things, which really have nothing to do
Speaker 3: with solving the problem, are the majority of the lift
Speaker 3: that you actually have to do. And the funny thing
Speaker 3: is we didn't really think about parallelization. We didn't think
Speaker 3: about memory usage, we didn't think about cpututilization. We just
Speaker 3: really thought about, well, we have to do the same
Speaker 3: thing over and over and over again. Well, how do
Speaker 3: we solve it in the small we do this? Oh well,
Speaker 3: how what do we need to do to paralyze it?
Speaker 3: What's this broadway thing? Okay, hey, look this gives us
Speaker 3: some like composible data pipelines. Well that works really well, great, Okay,
Speaker 3: I guess it all works. How fast is it? I
Speaker 3: don't know. Let's look at it. Oh crap, did it break?
Speaker 3: Oh no, it finished? Weird Okay, I guess we solved
Speaker 3: the problem. But it felt like a happy accident. And
Speaker 3: that's one of the things I really love about it. Like,
Speaker 3: so like a perfect example, the first time you run
Speaker 3: Live you, it feels like a happy accident.
Speaker 2: You're like totally You're like, oh, okay, I guess that's it.
Speaker 2: It just worked.
Speaker 1: And I feel like I've had that experience so much,
Speaker 1: not just with Live You, but definitely very notably with
Speaker 1: Live You, but so often you're like, huh, okay, I
Speaker 1: have to do this thing. I wonder if I just
Speaker 1: X Y and Z and then you know you're kind
Speaker 1: of off to the races.
Speaker 3: Yeah. Oh, Also, speaking of productivity, I actually really like
Speaker 3: the fact that, specifically when you start talking about abstractions,
Speaker 3: I like the fact that one of the principal ideas
Speaker 3: behind both the Elixir Earling Phoenix novel libraries is that
Speaker 3: we don't hide them, we just express them, if that
Speaker 3: makes sense. Like, there's no super uber magic. The magic
Speaker 3: is there for you to understand and see and it
Speaker 3: basically you can deal with it and you can use
Speaker 3: it or you cannot. But it's not trying to make
Speaker 3: something really magical happen. Like I know it's fun to
Speaker 3: pick on JavaScript, but like promises and JavaScript seem like
Speaker 3: a really good idea. But I think we've all written
Speaker 3: some JavaScript where the chain of promises goes down and
Speaker 3: on and on and on.
Speaker 2: I have no idea. What you're talking about doesn't make
Speaker 2: me at all.
Speaker 1: I'm curious how you feel that compares to you know,
Speaker 1: people throw the phrase like rails magic around a lot,
Speaker 1: and that's something that I know, like Stephen and I encountered,
Speaker 1: and teaching rails is when you take students from the
Speaker 1: way that we had taught the course back of flatter
Speaker 1: and usually went from you know, your building like a
Speaker 1: web app with reps using Sinatra, than you're using rails,
Speaker 1: and like the class would always split almost fifty fifty.
Speaker 1: Like half the people would be so thrilled to get
Speaker 1: to rails. Stuff would just click for them. They would
Speaker 1: be so productive, and then the other people would be
Speaker 1: frankly kind of pissed because they wanted to know what
Speaker 1: the heck was going on under the hood and weren't.
Speaker 2: Comfortable or happy with all of these abstractions.
Speaker 3: So, you know, the funny thing about that is one
Speaker 3: of the best I think what saved me from that
Speaker 3: specific thing was one I was lucky enough to take
Speaker 3: the advanced Ruby class that they taught where I think
Speaker 3: it was it was the pragxey. I think Dave might
Speaker 3: have actually taught it, and he specifically talked about eigenclasses
Speaker 3: and unpacking. So and I think the first version of
Speaker 3: rails I use was point nine or point eight, it was.
Speaker 3: It was not long after his brand new so you
Speaker 3: had to understand how it worked because the stuff broke
Speaker 3: all the time, right, Like, it had some really weird behaviors.
Speaker 3: And we actually used to have this what we would
Speaker 3: say is we want Ruby programmers, not rails programmers, And
Speaker 3: the difference was whether or not you understood the abstractions.
Speaker 3: And I think that's actually a different coach that people
Speaker 3: take to learning things, And to me, that's the difference
Speaker 3: between maybe being a craftsman just being a utilitarian, like
Speaker 3: you need to understand those abstractions. And in fact, I
Speaker 3: think somebody was mentioning something about, like, what would you
Speaker 3: say about learning Elixir? What I wish I had done differently?
Speaker 3: I think was one of the things we were talking about.
Speaker 3: One of the things I always tell people is learn Elixir,
Speaker 3: not Phoenix, right, because a lot of people get into
Speaker 3: Ruby through rails, and so what they learn is rails,
Speaker 3: and that's as deep as they go. And the problem
Speaker 3: then becomes, if you ever give them a ruby esque
Speaker 3: or Ruby center problem, they always see it through a
Speaker 3: rail's lens, right, same thing with Elixir. I think it's
Speaker 3: actually way it's far better to learn Elixer first, then
Speaker 3: learn Phoenix, then learn Phoenix, and then try and figure
Speaker 3: out what's going on, because if you learn Alixer, you
Speaker 3: see Phoenix and you're like, well that makes perfect sense, right, Pipes,
Speaker 3: got it? Composable, got it it. There's nothing magical here.
Speaker 3: The abstractions are all just layered into this particular problem.
Speaker 3: It's great, but if you only see Phoenix, like I've
Speaker 3: done this with people. They want to build a web app,
Speaker 3: they go for Phoenix, they get everything work, and they're like,
Speaker 3: I have no idea what's going on here? Like why
Speaker 3: do you keep returning this okay thing?
Speaker 1: Like or I think what you'll do then, too, is
Speaker 1: you'll draw a lot of false equivalencies between Phoenix and rails.
Speaker 1: And I think that that's the thing that I did
Speaker 1: a lot, and you know, a lot of the Elixa
Speaker 1: that I wrote probably for like you know whatever. The
Speaker 1: first year of my life is an electric Developer was
Speaker 1: just a mess because I was just trying to write
Speaker 1: Ruby and Elixir.
Speaker 2: I think that's probably not uncommon.
Speaker 3: I really agree with you on that one. Like I
Speaker 3: remember I said the same thing because when I moved
Speaker 3: to C plus plus from C, I always said that
Speaker 3: C programmers make the worst C plus plus programmers because
Speaker 3: you're writing C and C plus plus. And the strange
Speaker 3: thing is Elixer has both the blessing and the curse
Speaker 3: of looking like Ruby. I have seen it. Like I
Speaker 3: see people who are literally they're great rubyists. They get
Speaker 3: into Elixir and like you look at the code and
Speaker 3: you're like, you know that at variable doesn't do what
Speaker 3: you think it does, Like that is not what you
Speaker 3: think it is, right, And but you can see them
Speaker 3: using it like it's a Ruby, like you know, a class,
Speaker 3: a little variable and they're like, well, a class all available, right,
Speaker 3: You're like, no, no, no, no.
Speaker 4: It's really funny. I agree with both of you so much.
Speaker 4: And what's funny is Sophie that that when I want
Speaker 4: to learn to code things like an Elixir developer, would
Speaker 4: I look for your articles? But anyway, neither here Northern.
Speaker 5: So render.
Speaker 4: One of the things that's that's cool about the pivot
Speaker 4: that we made when you impactorate to that first class
Speaker 4: of ours was that our OTP and Phoenix courses have
Speaker 4: become a looser courses with a little OTP and Phoenix
Speaker 4: mixed in.
Speaker 5: Right.
Speaker 4: It's that you know, we we we teach this model
Speaker 4: of you know, constructor reducer transformer that I think that
Speaker 4: we started to talk about in your class, but since
Speaker 4: essence has become stronger, and we also teach this concept
Speaker 4: of pipelind and with land and how to get between them.
Speaker 4: But we also try to teach the concepts of how
Speaker 4: do you learn, where do you find things like how
Speaker 4: do you find to the callbacks or behavior?
Speaker 5: What is a behavior?
Speaker 4: All those kinds of things really really matter when when
Speaker 4: you're taking the next step.
Speaker 3: She didn't even think about that. That's the other thing
Speaker 3: that's really great about Alixir is the documentation is amazing.
Speaker 4: Yeah, right, and that the documentation actually bleeds through all
Speaker 4: the way from the documents on hex to the documents
Speaker 4: on the individual page for the project to on get
Speaker 4: up to the documentation and I e X and all
Speaker 4: you have to do is using to bring it all
Speaker 4: in and make it all available.
Speaker 3: Yeah. In fact, actually I think in one of your
Speaker 3: other podcasts, you guys mentioned something like the you were
Speaker 3: talking about Don't Fear er Lang whose podcast was that.
Speaker 2: We've definitely had that conversation here. Yeah, it's Ton Yeah.
Speaker 5: Yeah.
Speaker 3: So by the way, I totally met him for the
Speaker 3: first time at a lone Star.
Speaker 2: Yeah.
Speaker 3: Yeah, actually, we totally We've got a chance to hang out.
Speaker 3: I had no idea of like and like we just
Speaker 3: met it. We just started talking mostly about food.
Speaker 4: Actually, he has the biggest surfer vibe of anybody I've
Speaker 4: ever met.
Speaker 5: You know.
Speaker 3: Yeah, no, he's a great guy. But I actually I
Speaker 3: had heard his podcast on your podcast, his talking on
Speaker 3: your podcast, and it was really funny because I think
Speaker 3: we had some of the same stuff, like sasag Jerk's
Speaker 3: talk on the soul of the Elixric ecosystem. I actually
Speaker 3: just sent that to somebody. People were like, well, why
Speaker 3: would you care? Like, why should I care about this?
Speaker 3: I'm like, go, go watch this. If it resonates, come
Speaker 3: If it doesn't, well, by all means, keep keep doing
Speaker 3: what you're doing.
Speaker 5: Yeah, that's definitely the best introductory video. If anybody wants
Speaker 5: to know what the beam is and the value proposition,
Speaker 5: send them that video. And if they're not convinced, then
Speaker 5: in an hour of listening to Sasha, then it's not
Speaker 5: for them.
Speaker 3: Yeah. Well, you know. One of the other funny things
Speaker 3: is so I had this conversation with somebody else the
Speaker 3: other day because we were talking about JavaScript's easy to
Speaker 3: pick on listen, like all tools have their both pluses
Speaker 3: and minuses. But what I was saying is they argument.
Speaker 3: He's like, listen, javascripts got ubiquity, all these other things,
Speaker 3: and I said, listen, you don't write JavaScript. And he's like, well,
Speaker 3: what do you mean. I'm like, okay, I'm going to
Speaker 3: go in and to take your babble canfig and I'm
Speaker 3: just going to start deleting some stuff. Tell me whether
Speaker 3: or not this is going to work right. And I
Speaker 3: think one of the things that nobody realizes is that
Speaker 3: none of of us actually write the languages we think
Speaker 3: we write. We're writing like Elixer runs on the beam right,
Speaker 3: it uses Erling libraries, it uses a whole bunch of
Speaker 3: other things. Java Closure, they run on JVM. Well, which
Speaker 3: JVM the hot spot? Like the abstractions between us and
Speaker 3: the hardware and what we're really doing in the libraries
Speaker 3: we're all calling. It's actually one of the things which
Speaker 3: which drives me nuts is that nobody really tries to
Speaker 3: understand how many abstractions they're getting in between them and
Speaker 3: their solution. Same thing with JavaScript. You don't actually write jobscript.
Speaker 3: You write yes six, or you write yes six with reducers,
Speaker 3: or are you write I don't know. I'm a terrible
Speaker 3: JavaScript programmer, but I've tried. I've struggled for hours with
Speaker 3: my babble jskinfigs and all the other stuff to try
Speaker 3: and get something to compile right because I had the
Speaker 3: wrong type of aerofunction selected right. And it's one of
Speaker 3: the things I really like about the entire Arling, Elixir
Speaker 3: and Beam ecosystem is that it makes very transparent at
Speaker 3: what level you're operating, whereas almost everybody else they tries
Speaker 3: to obfuscate it. Well even see nobody uses C anymore,
Speaker 3: use klangor LVM right, like your SE code really doesn't.
Speaker 3: Actually the most instances compile straight down anymore, not in
Speaker 3: the way you think it does.
Speaker 5: Yeah, I've definitely seen that issue of JavaScript. I was
Speaker 5: helping somebody during the consultancy and then we're using a
Speaker 5: Sinkle eight in some AWS lambda, and somewhere deep in
Speaker 5: the AWS doctor it's like, you can't use a Sinkle eight.
Speaker 5: It may work, but you know, the lambda may terminate
Speaker 5: because the event looke doesn't know that it's still busy
Speaker 5: or something like that. So you so then we went
Speaker 5: through and switched everything over to promises and then all
Speaker 5: of a sudden the thing just worked. So, yeah, JavaScript
Speaker 5: does not equal JavaScript at the time.
Speaker 4: Yeah, I've got Joe Armstrong's voice in my head. Saying
Speaker 4: run to completion semantics. That's madness.
Speaker 3: Yeah, right, Like, well, so you know what, it's the
Speaker 3: other thing that's really interesting, just language wise. My big
Speaker 3: kick these days is is Haskell, and I blame Actually
Speaker 3: I bring Bruce because he introduced me to Brooklyn Sealinka,
Speaker 3: and I now know that she's actually a word of
Speaker 3: magnitude smarter than i'll ever be. And so if she's
Speaker 3: doing Haskell, then it's it's upon me to incumbent upon
Speaker 3: me to learn half of what she knows about Askell.
Speaker 3: And the Hascal people are right. Being a terrible Haskell
Speaker 3: programmer has made me a much better everything else programmer. Right, So,
Speaker 3: and what's interesting to me is that you want to
Speaker 3: talk about some people who embracem mutability in terms of
Speaker 3: what your language is going to do, like your prelude,
Speaker 3: like the idea. It's like no, no, no, no, sorry,
Speaker 3: let's start. It's not a pre compiler. You tell me
Speaker 3: what this language should be doing, right now, go ahead,
Speaker 3: Like it's it's kind of crazy how flexible Ascal is.
Speaker 4: Yeah, I have another thing in common with you, Randall
Speaker 4: that I am a terrible Hassal programmer.
Speaker 3: Well, I highly recommend everybody should struggle with some Askell though,
Speaker 3: because you want to talk about some magic and some
Speaker 3: just understanding of what raw computation looks like.
Speaker 4: Yeah, I mean, it's the foundation for everything that's important
Speaker 4: to the list our community, right. So even some of
Speaker 4: the things that we're doing with types, some of the
Speaker 4: things that we're doing that we've always done with strains,
Speaker 4: they're all kind of based on the erity models. Some
Speaker 4: of the things that we want to get into with
Speaker 4: property based test thing, some of the things that we
Speaker 4: do with for example, the formatter. Jose did this this
Speaker 4: talk I think three or four years ago called John
Speaker 4: Hughes Driven Development, which was cool because at that time
Speaker 4: we had John Hughes at gig City Electure, and you know,
Speaker 4: it was just a whole lot of fun talking to
Speaker 4: him about how his inventions in the language, and he'd
Speaker 4: never cold it before at the time, are making such
Speaker 4: a such a hard impact on it. I mean, it
Speaker 4: was just beaming the whole time.
Speaker 5: So, while this is an Elixir podcast, what Haskell learning
Speaker 5: resources would you recommend?
Speaker 2: So?
Speaker 3: I like the Haskell book, like Haskell from first Principles.
Speaker 3: I think it's called it's the Purple Book. Whatever, that's
Speaker 3: out there. That's a really good one. There is another thing, gosh,
Speaker 3: what was called things I wish I had known when
Speaker 3: I was learning Haskell. I can't remember who wrote it.
Speaker 3: I've got it. I'm sure I have a link to
Speaker 3: it somewhere, because I have a running list of an
Speaker 3: org file of just Haskell resources. But what it talks
Speaker 3: about is it? You mean, Haskell is kind of like
Speaker 3: what Elixir could have been had there not been a
Speaker 3: good community. And it's not a dang against the Hascalo community.
Speaker 3: It's just that the haspical community, like, depending on how
Speaker 3: you get into it, it might kick you immediately out
Speaker 3: of it. Like there are plenty of posts where it's like, oh, well,
Speaker 3: let's start with some category theory, right, which is which
Speaker 3: is kind of like imagine if if you came into Erlang,
Speaker 3: or you came into the luxury ecosystem and somebody said, oh, yeah,
Speaker 3: that's really great, so let's talk about applicative functors and
Speaker 3: basic functional like do you know do you know what
Speaker 3: a calculus is? Do you know what a lamb to
Speaker 3: calculus is? No, Okay, we're going to start with some proofs, right.
Speaker 3: That's probably not why they came there. It might be
Speaker 3: what they need to know, but that's not necessarily what
Speaker 3: you want to hit him over the head with initially,
Speaker 3: But that one broke down like all this sort of
Speaker 3: history that you need to know to sort of get through,
Speaker 3: like why is their stack? Why is their cabal? Like
Speaker 3: what's the split between the two? Why are there two configurations?
Speaker 3: Like what's this next thing everybody's talking about? Like there's
Speaker 3: a lot of history there also some stuff what you
Speaker 3: need to worry about, what you don't need to worry about.
Speaker 3: We're sure to remember that Stephen Dall maybe was the
Speaker 3: guy who wrote it. Maybe, But I'll do a burrito blog. Yeah, yeah,
Speaker 3: that's it. Yeah, that's I think that's that's it. So
Speaker 3: those are kind of my two. The other one is
Speaker 3: like the look up the LSP, like, figure out how
Speaker 3: to support Haskel inside whever your favorite editor is EMAX,
Speaker 3: I mean, but aside from that, you know, figure out
Speaker 3: some good language support for and then just start typing it.
Speaker 3: And also there's the gosh, man, i'd actually have to
Speaker 3: go actually go like dig up my actual list of
Speaker 3: Pascal resources and tell you what it was. But those
Speaker 3: were the actually I started with a Haskell book is
Speaker 3: what I did because actually that's what Brooklyn told me
Speaker 3: to do, right, gotcha.
Speaker 5: So after embarking on this Haskell journey, what your kind
Speaker 5: of learnings that you bring back to your Eleixtra code
Speaker 5: and how did your your style and way of approaching
Speaker 5: problems and elixtur change, if at all?
Speaker 3: Actually so a couple of things. One, I stopped getting
Speaker 3: fancy and I simplified a lot of things too. What
Speaker 3: it made me appreciate was how a lookser is the same,
Speaker 3: but how it's different. I'm actually much happier doing recursive
Speaker 3: and recursion now, Like I'm much more likely to reach
Speaker 3: for a recursive style or a rehearsal style of a solution,
Speaker 3: and also a mentautic composition and state passing composition, Like
Speaker 3: there are couple of patterns that I steal all the
Speaker 3: time now, like pass state along with that. Before I
Speaker 3: didn't realize that's exactly what you were doing in Eluxra,
Speaker 3: But now to me it's explicit as opposed to being implicit. Yeah.
Speaker 3: So mostly I think Haskell is the definition of just
Speaker 3: because you can doesn't mean you should. Right, you can
Speaker 3: by all means it won't stop you, but be careful,
Speaker 3: you might be just taking him at your big toe
Speaker 3: with a very very very large shotgun. So yeah, So mostly,
Speaker 3: like I said, I think what it made me understand
Speaker 3: is which abstractions I'm using and be much more I guess,
Speaker 3: for I'm much more explicit about the abstractions that I'm
Speaker 3: choosing at each level now than whereas before I'm like, oh, yeah,
Speaker 3: we do this because that's what alexa cod is supposed
Speaker 3: to look like, Versus now I'm thinking, oh, this is
Speaker 3: what it's supposed to do. It's still a terrible Hascal
Speaker 3: programmer though, like terrible.
Speaker 5: Yeah, it's a programming language, of course in graduate school
Speaker 5: and we did a hash Schull lisp in prologue and
Speaker 5: at that point it's like, I'm never doing functional programming ever. Again,
Speaker 5: I don't see the utility at all. And like five
Speaker 5: years later I went all in on a Likster. So
Speaker 5: I my foot in my mouth five years ago. But yeah,
Speaker 5: it was, it was definitely interesting. I'm sure if I
Speaker 5: picked it up again today, I'd be just as terrible
Speaker 5: at Haskell as I was, you know, ten years ago.
Speaker 3: So to be full credit to the Haskell community, they're
Speaker 3: doing a much better job about being more welcoming. Oh
Speaker 3: also exorcism. Exorcism has a great Haskell like exercises that
Speaker 3: you can go look at and they actually have people
Speaker 3: who give you feedback on your Haskell and it's cool
Speaker 3: to see this other solutions from different styles, from people
Speaker 3: who are kind of new to Haskell, like your solutions,
Speaker 3: and people who have been working with haske for a
Speaker 3: little bit, and then some other person who's like, yes,
Speaker 3: I did this in exactly three characters, right, like there
Speaker 3: is you can see sort of see the expressiveness of
Speaker 3: the language. And that's actually I don't know, I'm kind
Speaker 3: of a language nerd, so I like, like we were
Speaker 3: early on diclosure at Thunderbolt Labs, we were early adopters
Speaker 3: of closure. We went to the first college, and I
Speaker 3: think closure had some similar problems with that. It's incredibly powerful,
Speaker 3: but in the hands of people who know how to
Speaker 3: use it, and there's not a lot of stuff to
Speaker 3: get you from here's a lisp to here's being really
Speaker 3: good with a lisp. Speaking of random weird language things,
Speaker 3: let over lambda. If you ever just want to see
Speaker 3: I know a lot of people don't write lisp, but
Speaker 3: if you ever just want to see a book to
Speaker 3: see where a lisp can take you. There is this
Speaker 3: book called let over Lambda. I think you can only
Speaker 3: get as like a epub or like a PDF download.
Speaker 3: Maybe there's a print version two. I think actually, as
Speaker 3: a functional programmer, it's just great to read what other
Speaker 3: people who hit the advanced end of a language can do.
Speaker 3: And specifically let over lambda is working on. He does
Speaker 3: a lot of macros and list style macros. One of
Speaker 3: the things I think that's underappreciated. I would like to
Speaker 3: learn more about it, and I never really use it
Speaker 3: is the macro facilities inside of Alixir, right, I'm always
Speaker 3: looking for something to really do with it. But macros
Speaker 3: are incredibly powerful, and a lett of over lambda was
Speaker 3: one of those things where I saw it and I'm
Speaker 3: just like, I got about fifty percent of what you're
Speaker 3: writing here, But man, that looks just ridiculously overpowered to
Speaker 3: be like, how do you manage to do this cool stuff?
Speaker 2: Oh?
Speaker 3: Also, I had learned racket last year too, which was
Speaker 3: kind of cool, like looking at schemes, but.
Speaker 5: That's pretty cool. Yeah, I'm on my second take of
Speaker 5: Christmas Chord's book Metaprogramming and Elixir. I'll figure out one
Speaker 5: of these days and I'll build right macros correctly.
Speaker 3: Yeah, it's a different level of reasoning. They're right string
Speaker 3: interpolation for code.
Speaker 5: So if you can go back in time and give
Speaker 5: yourself some advice as you embark on the selector journey,
Speaker 5: would what would some of those tidbits be aside from
Speaker 5: this isn't Ruby, don't treat like this Ruby.
Speaker 3: That would be one of the first ones actually find people, right,
Speaker 3: it's really weird. One of the things I think about.
Speaker 3: One of the things I think worked for Ruby and
Speaker 3: specifically where else they're different things, but I mean is
Speaker 3: that they had a community of people who are always
Speaker 3: willing to help. I think the community aspect of the
Speaker 3: language is really underrated. So find other people who are
Speaker 3: in a Elixir, who are kind of in that same boat,
Speaker 3: and collectively start learning with them. That would be one
Speaker 3: to learn Elixir before learning other things first. Right, Oh,
Speaker 3: I think somewhere on the Elixir I think you or
Speaker 3: someplace maybe on the Elixir lang website it says, don't
Speaker 3: ask how do I What was it said? Don't ask
Speaker 3: how do you do X? An elixir ask? How would
Speaker 3: I solve why? In Alixir? Like the idea of don't
Speaker 3: just translate the idioms from whatever languages you already know
Speaker 3: into elixir. Actually go back and learn from first principles
Speaker 3: what's going on. That's actually one of the things I
Speaker 3: really like about the Dave Thomas book is that it
Speaker 3: kind of abandons some of the oh look, look, here's
Speaker 3: hello world, Look here's a forur loop. Like if you
Speaker 3: think about it. I don't know about you, but for
Speaker 3: the past twenty years whatever, like our programming books have
Speaker 3: pretty much been exactly the same, right because we all
Speaker 3: have some sort of c art style functional like programming background,
Speaker 3: so they'll pretty much look the same. They teach you
Speaker 3: the same construct so you're really trying to do if
Speaker 3: you're trying to figure out, like, oh, what's the equivalent
Speaker 3: of a four loop and go got it? Like, what's
Speaker 3: the equivalent of a if then else in c sharp
Speaker 3: got it right? So I would say, actually learn it
Speaker 3: from first principles. So strangely enough, you know, shameless plug.
Speaker 3: I did give a talk on how to learn an
Speaker 3: Elixir at Alexakoff and Codebeam. And the other one is
Speaker 3: I think take time because you're building up new cognitive structures.
Speaker 3: I think people a lot of time. Do not realize
Speaker 3: how much work it takes to get your brain to
Speaker 3: start thinking functionally? Right, there is a lot there that
Speaker 3: you have to unlearn.
Speaker 4: Syntax, concurrency, distribution, blackros. Yeah, so that's a lot, right.
Speaker 3: It's interesting. I'm going to give another shameless plug for Bruce.
Speaker 3: I generally speaking, I recommend that they read the Elixir book,
Speaker 3: and then, strangely, before they read the Phoenix book, I
Speaker 3: recommend that they read Designing Systems and Elixir from Bruce's
Speaker 3: book because it teaches you the part of the problem
Speaker 3: is if you're functioning like no pun intended, a function
Speaker 3: sort of professional programmer, you normally have something you got
Speaker 3: to do for your day job. Like it's not most
Speaker 3: of us don't just have the luxury of learning a
Speaker 3: language for no applicative also no pun intended reason. So
Speaker 3: you need to know how you build up an electure
Speaker 3: system and the functional core stuff. What does it do
Speaker 3: fun things with? What's the rest of the acronym, Well, there's.
Speaker 6: Work work we gotta yeah, yeah, yeah, do fun things
Speaker 6: a big loud yeah.
Speaker 5: Big workers, that's right. Yeah you and a beer?
Speaker 3: Yeah, Stephen, thank you? Because I I personally I think
Speaker 3: the Wilder Beasts has a nice lowing sound, you.
Speaker 4: Know, yeah it does. But O'Riley had the cover.
Speaker 2: The cover, so yeah, oh.
Speaker 5: Interesting is that really?
Speaker 3: What happened is like O'Reilly had like a wilder Beast
Speaker 3: on something and they're like, no, you may not put
Speaker 3: the Wilder Beasts.
Speaker 5: Yeah.
Speaker 4: Yeah, So James had just come back from an Africa trip, right,
Speaker 4: and so he loved the world a beast and and
Speaker 4: I mean, I've done all this marketing, but now I
Speaker 4: mean it makes sense, right. Beehives layers different cells OTP.
Speaker 4: Just it really good time.
Speaker 3: It's true. And beehives are built in hexagons, right, so
Speaker 3: that you have hecks already built.
Speaker 5: In ooh oh, well done there. Well they just dropped
Speaker 5: the mike. We got to be done.
Speaker 3: So yeah, so I recommend that they read that book
Speaker 3: because it's important to understand how you build an layer
Speaker 3: of system together, because it's very different than alixir. The
Speaker 3: functional core aspect is what most people miss. In fact,
Speaker 3: we just had a team try to learn an elixir
Speaker 3: that had been Rubius and jobs for people, and that's
Speaker 3: exactly what they missed. And it was the first thing
Speaker 3: they missed. They didn't have a functional core, and it
Speaker 3: made everything else almost impossible.
Speaker 5: It's funny.
Speaker 4: In San Francisco, Brooklyn came up to me, and I
Speaker 4: mean she's one of the people that I practically idolized.
Speaker 4: I mean the Witchcraft Library, the strong resonance with Haskell,
Speaker 4: with the things that she can make Macro's do. She's
Speaker 4: just smarter than Oliver be. But she came up to
Speaker 4: me and said, hey about your talk, and I'm saying, oh, crap,
Speaker 4: here it comes. You know, it was basically an outline
Speaker 4: of the work of the books. She says, I agree
Speaker 4: with all of it. And by the way, here's where
Speaker 4: this paper says the same thing, except between this layer
Speaker 4: and this layer you have an interface. And so it
Speaker 4: was really it was like a high moment in my career.
Speaker 4: You know. It's kind of said, yeah, you get this,
Speaker 4: and I said, I didn't need to get it that way,
Speaker 4: but I'll take it right.
Speaker 3: So, actually, if I remember currently, so he didn't she
Speaker 3: say that you didn't you had like a liberal arts background.
Speaker 2: Right that.
Speaker 1: Yeah, yeah, liberal arts background, history degree and then ended
Speaker 1: up at the Slattern School, which was a software engineering
Speaker 1: bood camp, and that kind of the rest was history
Speaker 1: just fell in love with it.
Speaker 3: Yeah, So when you were thinking about learning things, why
Speaker 3: didn't you wish somebody had told you?
Speaker 2: That's a good question.
Speaker 1: I mean, that's one of the things that I loved
Speaker 1: about learning Ruvie is that it tells a story and
Speaker 1: you really have the emphasis on the problem that you're
Speaker 1: trying to solve and how to express it with code
Speaker 1: as opposed to needing to understand kind of some of
Speaker 1: the low level principles. I feel like that and later for.
Speaker 2: Me and then I think the thing that really hooked.
Speaker 1: Me and kind of got me frankly obsessed with programming
Speaker 1: was and I really think this is a feature of
Speaker 1: something that the Flattering School really engenders and their teachers
Speaker 1: and offers.
Speaker 2: To their students is just just.
Speaker 1: An absolute love of what you're doing, just an excitement,
Speaker 1: a curiosity, like this total space of support.
Speaker 2: That's something that I very much felt from my teachers.
Speaker 1: There and then learned, i think, in part, how to
Speaker 1: give to my students subsequently, because then I went on
Speaker 1: to teach there from Steven.
Speaker 2: I think Stephen just brings this like.
Speaker 1: Absolute joy to whatever he's doing, and he is as
Speaker 1: excited to show you something that he showed you know
Speaker 1: a thousand people for five years as he is to
Speaker 1: show you something that he just figured out for the
Speaker 1: first time ever.
Speaker 2: And it's really infectious.
Speaker 1: And I think that to me is really like the
Speaker 1: secret ingredient to learning a new language and learning a
Speaker 1: new skill.
Speaker 4: Joy that's actually a stone cold ninja as a teacher.
Speaker 4: I mean, so he started coming teaching to our childhood
Speaker 4: liks group and you know, just got of I just
Speaker 4: dropped them into our most advanced class and and disappeared
Speaker 4: on them really and and they came back right And
Speaker 4: now I'm saying, when you coming back, you don't have
Speaker 4: to come back. You really don't have to come back.
Speaker 4: Speaking as this, it was really really cool them.
Speaker 3: I paid them all to say that you Musty's a
Speaker 3: that's a great thing to do. It's like, especially nowadays
Speaker 3: with gift cards, it's a really easy way to get
Speaker 3: a great review. But actually that's really funny. I think
Speaker 3: it's interesting. One of the common threads I see about
Speaker 3: people is people. I think what brings us to different
Speaker 3: languages and different tools are the people. Which is a
Speaker 3: really weird thing to say. Protect people, right like, but
Speaker 3: a lot of why we choose the tools we have
Speaker 3: is if you get a good person who introduces you
Speaker 3: to the right sort of like to the joy of
Speaker 3: better tools and better approaches and better thinking, you have
Speaker 3: this great experience and that carries forward and they're I've
Speaker 3: you know, I've met my more than my fair share
Speaker 3: of like abused programmers, right, Like, Hey, what happened? I
Speaker 3: got dumped into this project? Nobody told me what to do.
Speaker 3: There was no cic D, nobody told me about testing. Like,
Speaker 3: if you don't have somebody to tell you how fun
Speaker 3: and how joyant and joyful programming can be, it can
Speaker 3: be a real be a real slug. So could u seven?
Speaker 3: If you can actually like convey that sort of excitement
Speaker 3: to people, that's super important for the next generation programmers.
Speaker 1: Yeah, well, I think we're all very grateful to have
Speaker 1: benefited from that.
Speaker 2: Since we are coming to the end of our time.
Speaker 1: There's one last question that I really wanted to get
Speaker 1: to for Randall, since you are a bona fide bond vibon,
Speaker 1: I need like a Halloween themed cocktail that isn't like
Speaker 1: too much. I don't like things that are super sweet.
Speaker 1: I want to be easy because I'm not great at this.
Speaker 1: Do you have anything for me, okay, off the Topllowen autumnal.
Speaker 3: Yeah, so an autumnal cocktail, I would go with a
Speaker 3: spiced cider with a rye whiskey on the side, or
Speaker 3: a ryebourbon whiskey kicker. So the things you can do
Speaker 3: is you can actually take apple cider. You need the
Speaker 3: unfiltered type sider, not juice. So you take apple cider
Speaker 3: when you can actually reduce it in a pan, and
Speaker 3: it makes for a very strong apples almost like an
Speaker 3: apple syrup. Interesting, and you can infuse that with things
Speaker 3: like cinnamon, So you could put like cardamous cinnamon and
Speaker 3: any of those things in it in a pan, reduce
Speaker 3: it more by half or a little more, and you
Speaker 3: end up with an apple syrup. And so from there
Speaker 3: you can basically select your level of booziness, your level
Speaker 3: of appleness, and your level of cocktail. You make an
Speaker 3: effort vestment by either fixing it or toping it off
Speaker 3: the champagne.
Speaker 2: I love that. I'm definitely doing.
Speaker 3: So it works in a situation. Yeah, yeah, Champagne cocktails are underrated.
Speaker 3: Good cure, I agree.
Speaker 2: Also makes me feel like I'm in the nineteen twenties.
Speaker 2: I'm not really sure why I have the association.
Speaker 3: Yes, maybe a slipper glass. Yeah, yeah, So that's because
Speaker 3: in what I like about that is with one prep
Speaker 3: you can make the base and then people can have
Speaker 3: either a non alcoholic if you have people who aren't drinking,
Speaker 3: or a completely boozy, wipe you out cocktail by just
Speaker 3: dumping a bunch of ry whiskey and putting a splash
Speaker 3: of apple over the.
Speaker 5: Top of it.
Speaker 2: Also, I like a cocktail that you don't have to
Speaker 2: mix individually.
Speaker 1: Even if you have like just a couple of people around,
Speaker 1: it's still sort of a pain.
Speaker 2: So I love this. Thank you. I cannot wait to
Speaker 2: try this out. That's just perfect.
Speaker 1: So yeah, great, And I think that'll bring us to
Speaker 1: our picks.
Speaker 2: We have a lot of great recommendations.
Speaker 1: We've been collecting some of the links and things that
Speaker 1: have been mentioned in this convo, but we will go
Speaker 1: around the room, so to speak, and if anyone has
Speaker 1: specific recommendation. Since Bruce had to drop off, I'll start
Speaker 1: with his. Graxio starts their Nerves course on November first.
Speaker 1: Definitely don't miss it out and check out grox dot
Speaker 1: Io Groxio, and I will pass it over to.
Speaker 5: Alex so my picks are two learning resources. They're both
Speaker 5: kind of open books. One is the beam book and
Speaker 5: there'll be a link in the show notes, and the
Speaker 5: other one is Earling and Anger. I've definitely used Earling
Speaker 5: and Anger several times when there's been a memory leak
Speaker 5: in production and you're like, whoa, this is a lickxir.
Speaker 5: Memory leaks are not possible. Well, they are possible, and
Speaker 5: there's a couple of scenarios into which they're possible. So
Speaker 5: that is a good reference to hit up when you
Speaker 5: don't know why memory is spiking and Grofana is going
Speaker 5: off the charts, So definitely check those out.
Speaker 2: Awesome, Thanks Alex Steven.
Speaker 6: So mine is going to be for I have ultra
Speaker 6: wide monitors here, but I actually mean super ultra wide monitors.
Speaker 6: So first of all, this is a thing. You can
Speaker 6: get a monitor that's forty nine inches and super ultra wide. Yeah,
Speaker 6: you don't know you need this, but you need this
Speaker 6: in your life. You need to be surrounded by zoom
Speaker 6: like people on your left, people on your right.
Speaker 5: It really makes you feel like you're back in the office,
Speaker 5: but kind of surrounded in a weird way.
Speaker 3: So check that out.
Speaker 1: Thank you for that I can't wait to squint even
Speaker 1: harder at the teeny tiny.
Speaker 2: Resolution of whatever is on your s great chair.
Speaker 1: I don't have any picks this week, although I've a
Speaker 1: feeling I'll be recommending a contail as soon as I
Speaker 1: try it out.
Speaker 2: Randal.
Speaker 1: Like I said, I collected some of the links that
Speaker 1: you had mentioned, but if you have anything else you'd
Speaker 1: like to share, it currently doesn't have to be a
Speaker 1: lexor or even programming related.
Speaker 3: So one is definitely seeing deals. The Haskell link what
Speaker 3: I wish I had known that was actually really good.
Speaker 3: I just like that as a comprehensive sort of resource.
Speaker 3: Another one is Kemming Labs has this thing called finda.
Speaker 3: I don't know if you guys have ever used finda.
Speaker 3: It is literally a search everything. It's like it's one
Speaker 3: of the greatest things ever. It just pops up all
Speaker 3: of these this this huge overlay that you can search
Speaker 3: all the things, and I do mean all the things
Speaker 3: as you can like integrate it with your VIM, you
Speaker 3: can integrate with your emacs. I'm pretty sure it integrates
Speaker 3: with them. I know it works with vidas code, but
Speaker 3: it'll search open tabs. So if you're like me and
Speaker 3: you're one of those people who never close the tabs.
Speaker 3: You can search all your tabs, you can search all
Speaker 3: your links, and it's super fast, and it's a it's
Speaker 3: a great way to actually kind of be lazy about
Speaker 3: managing Windows until you should.
Speaker 1: It's really dangerous for me because I absolutely have a
Speaker 1: million tabs and can never find anything.
Speaker 2: And I think it's just.
Speaker 3: Going to try this, so check it out. Actually, like
Speaker 3: I said, I'm a huge fan of that, just because
Speaker 3: I started using it yesterday and I was just like,
Speaker 3: where have you been? So cool? Thank you, thank you guys.
Speaker 3: Actually appreciate you. Guys. Give me a chance to just
Speaker 3: prattle on for a while.
Speaker 2: Yeah, this is great. We were thrilled to have you,
Speaker 2: and hopefully we'll get the talk again too.
Speaker 3: All right, sounds great. Curious