All Episodes

September 25, 2024 48 mins
We discuss how to learn and love Elixir and other functional languages, the importance of people and community in learning, the perfect autumnal cocktail and so much more with Randall Thomas—drinker, hacker and bon vivant!

Links

Picks


Become a supporter of this podcast: https://www.spreaker.com/podcast/elixir-mix--6102049/support.
Mark as Played
Transcript

Episode Transcript

Available transcripts are automatically generated. Complete accuracy is not guaranteed.
Speaker 1 (00:06):
Hello, and welcome to this week's episode of Alexa Mix.
We are joined by, as ever, our fabulous panel of posts.
We have Alex Kutman, Hey Alex. We've got Bruce t Hi. Everybody,
Hello Bruce.

Speaker 2 (00:17):
We've got Steven Nunyez.

Speaker 3 (00:19):
Hello.

Speaker 2 (00:19):
I am SOPHIEA Benedetto and we are joined today.

Speaker 1 (00:22):
By Randall Thomas, who has many potential introductions that I
may choose from.

Speaker 2 (00:27):
So I'm going to go with my favorite two, which
is the first. One's a little more informative.

Speaker 1 (00:30):
CTO at a tech incubator called Geometer, as well as
a thanks for Hacker and vonn Dufon, and I'm sure
we'll be excited to dig into any of those topics.

Speaker 2 (00:39):
Welcome Randall.

Speaker 3 (00:40):
Oh, thank you so much for having me.

Speaker 1 (00:42):
Yeah, we're so thrilled you could be here. We've got
so many great things to dig into today. But one
of the things that we often ask us when they
first come on is tell us a little bit about
how you got into the Elixir community in the first place.

Speaker 3 (00:52):
Strangely enough, the short version is I've been around the
Rube community for a long time, and one day I
looked around and all the people that I knew from
the old Rube Kee Comunity weren't there anymore, and I
figured out where they went, and it turns out that
they all showed up in Elixir. In fact, it was
kind of accidental. I went to I think the first
Elixir comp I had gone to, I think was in
twenty eighteen or twenty seventeen, and I showed up there

(01:14):
and I literally just walked around. I'm like, wait, so
that's why you weren't at Ruby komf Oh wait, so
you're here. What are you doing here? So I thought
I would know no one, and it turned out that
I knew everybody. So all the smart people that I
sort of coattailed on and Ruby ended up in a Elixir.
So I figured they're way smarter than me. I should
go follow them see what they're doing. So it's kind
of it.

Speaker 1 (01:34):
That's really as good a reason as any, and kind
of similar to how I started learning Alixir. It's like,
I don't know, maybe four or five years ago, one day,
maybe five five thirty, and Steven says, hey, you want
to see something cool, And that was kind of like
theyentre into the wide world of Alixir.

Speaker 2 (01:49):
So following the smart people is the way to go.

Speaker 3 (01:51):
There was a funny thing. I'm pretty sure this is
actually true, right, but like all apocryphal stories, because it
happened in Barcelona. There was baruk oh Barcelona Ruby konf
and at the time we were giving this talk on
Ruby motion. If you remember, there was this big kerfuffle
about hey man, you're gonna be able to write iOS
apps in Ruby, and it was actually a really really
great idea, I kind of think a little ahead of

(02:12):
its time. And I think actually at that conference somebody
was talking about, oh, yeah, you heard that somebody's trying
to build a Ruby for Elixir or for Erlang, and
I'm just like, yeah, good luck with that. I literally
thought it was like because I was thinking about, like
I tried learning Arlang once when the prag Prague released
that first book from Joe on Arlang, and I remember

(02:35):
getting into it and I remember thinking I'm like, okay,
I'll put this somewhere right above pearl. I recant that
statement now, but at the time I was thinking to myself, like,
there's no way you're ever going to get Rubis to
learn the syntax, because you know, the obsession with beauty
and elegance and expressiveness and everything else.

Speaker 4 (02:49):
Yeah, and it's really funny that Jose kind of put
it onto the Ruby syntax, not as this great statement
of let's bring all the Ruby community over right, is
more like okay, one last thing, right, nobody yet, and
then then he kind of layers on these these beautiful abstractions.
But yeah, it seems like we were kind of circling
to each other for a long time randal before for

(03:11):
the Elexer community that you know, the idea that that
you were engine yard and you know, us to point
some stuff there, and you were kind of kind of
involved from from the very beginning, and kind of we
were we were just just outside of each other's or
but it didn't really meet until the Groxio course.

Speaker 3 (03:28):
Yeah, which is That's actually what I like to say, is,
you know, I do a lot to to Bruce for
for really getting involved in the electric community. I don't
actually did you just advertise that course online? Was that
what it was?

Speaker 5 (03:41):
Yeah?

Speaker 4 (03:41):
I mean we literally just threw a couple of tweets
up just to see if there was a test market,
to test the market, and we said we would need
more people to start the class, and then you were
two signed up, but one was you, right, and the
other one was Patrick Thompson who's already writing you know,
articles and pull requests or Phoenix or Phoenix Live you.

(04:02):
But that was kind of a cool moment because we
had to decide whether to do the class or not,
and at that point we decided to go against the
grain of traditional courses to kind a you know, like
a smaller midge to school right where everybody could And
then that's that's where we kind of decided to flip
the keyboard, and.

Speaker 5 (04:21):
You know, the rest is history.

Speaker 3 (04:23):
Yeah, I was a pretty New York or program before
I got to spend a week in pairing with Bruce,
at least for Alixir, which is I think that's something
that we take for granted. You know, if you come
from procedural languages, it's really easy. If you know C,
you can kind of learn C plus plus even though
it might not be the right idioms, but it's the bridges.
If you know Joba, you can kind of get into
go and like. But learning how to actually think in

(04:43):
Elixir and break down the problem differently or thing functionally
is actually one of the big barrier sentry I think
people have and seeing it and doing it with other
people and going through that evolution was really helped me
but actually really leveled up my elixir.

Speaker 4 (04:56):
Yeah, so I don't I don't take any credit at
all for you think you're doing an elixir by the way,
but I do think that there's a moment where your
revolution is like a lot of a lot of other
people's like mine as well. Right, it's why are the
cool kids leaving the room?

Speaker 5 (05:11):
What do they.

Speaker 4 (05:11):
See and how do I how do I make the
minute that mental shift to do the things that that
good programmers do. And you know that's what we were
all able to go through together in that class, you
and Patrick and I.

Speaker 3 (05:27):
Yeah, well I still I still think it's one of
the greatest things that where I recommend it. In fact, actually,
if you remember, one of the first things I did
at CTO was I got a subscription. I think I
neede you write a feature so I could get my
team on Groxia. So shameless plug for Bruce's like learning
platform Groxio. It's great to learn alixer in a browser.
And I've actually used it for other people and they're like, well,
what do you think about Elixir? I'm like, I don't know.
Go try it out in a browser, like most people

(05:49):
are just blown away. That'll run in a browser anyway.

Speaker 5 (05:51):
So it really doesn't runt in a browser.

Speaker 3 (05:54):
It doesn't. But like those types of abstractions, it's not important.
It's like it's like everybody else. You first one's free,
ay man, first one's free.

Speaker 5 (06:03):
Yeah.

Speaker 4 (06:03):
But so as your Elixer genrety journey has kind of
started off, you didn't kind of peck around the edges
like most people did.

Speaker 5 (06:12):
Right.

Speaker 4 (06:12):
It's you know, you went from kind of zero to sixty, right,
So you went from Okay, now I'm in the community
taking a class to now I've got this incubator. Can
you tell us a little bit about what you're doing
at geomat.

Speaker 3 (06:25):
Yeah, So some people I used to work with they
started a tech incubator, like all good things, and then
COVID hit. The most interesting part of actually what we
were doing was we ended up pivoting towards doing COVID
response work, and a lot of the work we ended
up deploying for several states was actually built on Elixer internline.
So we actually have data transformation platforms and pipelines. A fact,

(06:47):
we used Broadway for one of them. Two that are
currently supporting contact tracing in two states on the East coast,
So we learned a lot about both the scalability and functionality.
So just to give you an idea, they were caught
in batch world. Their best turnaround time started off at
twenty four hours, and then when they were really trying
to get up to speed, they could do it maybe
in six but there were a lot of errors and bugs.

(07:09):
We were actually able to in a week spike and
prototype something and then in about another week actually get
into deployment a solution that using Broadway and the inherent
sort of scalability of OTP, that turned the Literally we
were able to process the data faster than they could
get it to us. So we went from processing and
turning around all the COVID cases in about every couple

(07:31):
hours to one minute and thirty seconds was our first test,
and we got it down to sub one minute, and
they were doing it incrementally. We were actually able to
reprocess every single test, every single run, every single time,
which allowed us to do a different type of quality control,
which really matters for deduplication because a lot of the
issues that you run into with COVID testing are that
the lag between when people get tests and the test

(07:52):
results are reported. I mean that duplicates and false positives
are a real problem. So that was all done on
Elixir and Earlin, right, And that was one of those things.
By the way, we also wrote a telyphony shim that
actually did calliphony control, that did call control for connecting
calls to contact tracers, also done in arline, and both
of them, if I remember correctly, I might be making

(08:14):
this up a little bit, but both of them required
so few resources that they ran in like a container
inside of like an easy two medium, right. It was
just so ridiculously efficient that it was kind of kind
of sad, and we replaced a bunch of custom made
over this. Lambda functions that were doing this that had
to do were somewhere aer prone. I think the Lamba
function loads were a couple hours, like fourteen or fifteen

(08:35):
hours to reload the entire universe of data, just because
of some architectural decision. But the short version is alexur
was a big win because three people were able to
rebuild that system in like a week. So long week,
mind you, but it was really kind of impressive. That
was one of those really aha moments when you can
think about Elixir and Erling and being are very different
and they provide almost like what people or devs think

(08:56):
of as superpowers.

Speaker 5 (08:57):
So I feel like I've lived the same exects story
of Lamb does being painful and terribly slow and then
replacing it with an Elixir app and then it was,
you know, like a whole different world entirely.

Speaker 6 (09:09):
Yeah.

Speaker 3 (09:10):
Actually, do you ever see that T shirt that says
go away, I'll replace you with a small shell script.
You know, there was like this comic I think it
was floating around for a while, but it's I almost
feel like the exact same thing. It's like almost any
use case where you're using the Lamb to function, you
can use Elixir and it just kind of works.

Speaker 5 (09:26):
It's kind of funny. I mean, a Lamb is effected
with like one gen server and we can spawn like,
you know, thousands of thousands of them, no problem.

Speaker 6 (09:33):
So are you guys saying this? And the question I
have is why isn't everyone doing this? Why is the
Elixir not like the language that everyone builds all the things?
I mean, yeah, obviously it's the right soul for every
job there. That's a great question. It has nothing to
do technology.

Speaker 3 (09:50):
I'd love to hear what you guys think, and then
I'll opine with my own slightly derisive, sarcastic view on.

Speaker 4 (09:55):
This and and the darkness behind then right language to
rule them all.

Speaker 5 (10:02):
Right, It's it's interesting.

Speaker 4 (10:04):
I'm starting to play with with a lot of different
languages that that have different takes in the world.

Speaker 5 (10:09):
And so the.

Speaker 4 (10:10):
One that really opened my eyes was Pony because it
does so there are a lot of things that Elixer
does really well that that Pony just really really sucks at, right,
But one of the things that Pony does well is
it enforces compiler constraints that enforce concurrency constraints, right, so

(10:30):
incorrect programs won't compile.

Speaker 5 (10:33):
And so you know that that pointed.

Speaker 4 (10:35):
Me to to the to the idea that if you
have to move a lot of data around, you know,
if you have a lot of mutability, then then Elixor
isn't it. And so I've been spending a little bit
of time in Julia this year just kind of to
flux the old math muscles.

Speaker 2 (10:53):
Right.

Speaker 4 (10:54):
So I was a math major in college or computer
science and math, and so one of the things that
we were focused on was linear algebra, I'm sorry, like
matrix matrix algebra. And that's kind of what machine learning
and machine modeling have have turned into, right. It's it's
you have these these massive systems of equations and and

(11:16):
algorithms to kind of slowly crank and provide more and
more precision. And we're starting to get into the places
where where you could take these these massive tables and
apply these differential equations to them. And Elixer is just
not good at that, and it is never going to
be good at that. It's good at kind of the control.

(11:38):
But yet, Yeah, I mean I think that that there
are a lot of good things that Elixer is great at.
It's funny, Randall, It's Elixur is great at almost all
the things that we were doing.

Speaker 7 (11:49):
Where you're at these early Ruby communities, right the deployment,
the you know, the the babysit a big fat relational
database with a web UI, you know, on and on.

Speaker 3 (12:00):
Yeah. No, So I don't know, what do you guys,
Why do you guys think it's not winning? I mean,
I guess the other question is what's the definition of winning.
I don't think universal adoption of everything is the definition
of winning. I don't think it's for everyone. Not all
languages are for everyone.

Speaker 5 (12:15):
I have a question, how do we know it's not winning?

Speaker 3 (12:17):
Right?

Speaker 4 (12:18):
The language popularity? And they make mistakes?

Speaker 3 (12:21):
Right, Oh yeah, didn't they? Actually what was it? There's
something that they included, like crystal, that's what it was, right,
And they ended up playing.

Speaker 4 (12:29):
Like agechygramming crystals, which is either a programming model or
a great way to have your new Age crystals learn
as you get more enlightened every day.

Speaker 3 (12:42):
I have to look into that. So no, So I
think there are lots of things. It's really funny. So
one of the things I learned from being a rubyist
early on, and at the time I got into Ruby,
I was actually an independent consultant. I was all in
dot net, like I had actually started a long time ago,
System five Release three, that's how old I am. But
I had gotten into that net because that's where all

(13:03):
the consulting money was. So that was c plus plus
MICROSUF Foundation classes, all that crap, and the learning Aha
moment for me is I had to take some visual
basic programmers and try and teach them see sharp and
they failed miserably, like there was no way to teach
them the basics of classes, and they just hadn't learned
any of that stuff, and we had to deliver an
ETL system. And Blake Miserini at the time he's like, hey, man,

(13:25):
I know you like Pearl, but I've got something way
better than Pearl. And I apologize for all the Pearl
I ever wrote. I think we all need to do that.
But he said I got something way better than Pearl.
It's this Ruby thing and like whatever. So I played
around with it for a week and I'm like, huh,
this is pretty neat, and I'm pretty sure at the
time I actually had to go to like a bookstore
and find the Ruby book, like an actual print version

(13:45):
of the book. This was, you know, so like he
had to like run around to borders and whatever and
try and find a copy of Dave Thomas's book. And
I did over the weekend, and then I tried it
with these guys on one day and I had them
doing advanced string processing and classes. They just got it
and rocked it. And that was the moment I knew that, like,

(14:06):
oh yeah, that's where we need to go, and so
I literally just stopped doing Dutton had stuff and started
doing all in on Ruby and Erlin and Elixir, and
I actually, when I say that Earleg, Elixir, Beam, I
actually really like to separate those things because I think
it's important that you don't mix them or blend them
like they are there are different things, and that you're
getting a lot there. I think it has that same

(14:28):
feeling as early adoption for Ruby. Like literally when we
started doing Ruby work, we had this other company called
Quality Humans where we were all doing rails apps and
everybody thought that we were crazy. You're like, I don't
know this rails thing. I don't know. It seems pretty risky,
Like only do guys in Chicago are doing it? Yeah.

Speaker 5 (14:45):
I mean I think that.

Speaker 4 (14:46):
Very often we as a programming community have to take
a step back to take a step forward, right, And
I think that that's one of the things that would
be provided, right. So it was a huge step forward
in a lot of ways, right, first in the idea
that a programming language should be intuitive and fun. Second
in that that you didn't have to specify, it wasn't

(15:09):
kind of this this really tedious artificial typing model. And
third we didn't have these really tedious and artificial configurations
that were you know, XML that was explicit for everything,
with no defaults. All those things were really important for Ruby,
and it seems like by taking that step back to

(15:30):
reset the kind of the bar on for application developers
on the productivity of application developers. You know, we got
a lot of the you know, the deployments, you know, mutability,
a lot of a lot of things wrong, but there
was a whole lot that was right about Ruby that
Lizor learned from.

Speaker 3 (15:51):
Yeah, good stuff.

Speaker 1 (15:52):
I like that you mentioned productivity, Bruce, because it's something
that I absolutely feel is true of Alexa and Phoenix.
And then kind of back to what you were saying, Randall,
when you were trying to, you know, move some folks
into kind of this realm of like object oriented and
when you found Ruby and kind of brought that to them,
that people were able to grack it and learn it
and be.

Speaker 2 (16:09):
Productive in it relatively quickly. And that's absolutely true of Alixir.

Speaker 1 (16:12):
It's absolutely true of Phoenix, and not just because of
you know, Alixir's language features, in the fact that, similarly
to Rubyo, it is eloquent and easy to reason about.
But I think there's so many sort of Alixir ecosystem
features that allow developers and whole teams to be really
highly productive. And I think that's why I'm not at
all surprise to hear how Alexir and Erlang has allowed

(16:33):
you guys to solve these really big scale problems for
like COVID contact tracing. It reminds me a bit of
a talk that was one of the keynotes at Alexa
kronk EEO this year, which will hopefully be out soon,
about some folks in Kenya who are using Elixir to.

Speaker 2 (16:45):
Develop a new like nine to one one emergency contact
system around the country.

Speaker 1 (16:50):
And it's just it's kind of the perfect combination of
like scale and concurrency and fault tolerance, but also productivity
for actual humans.

Speaker 2 (16:57):
And so I definitely be curious to hear, you know,
from you Randal with your experiences lately with some of
these COVID projects, Like sounds like you.

Speaker 1 (17:03):
Guys spun this up really fast, like a week later
you had these working prototypes. So like, what is it
about Alixer specifically or this ecosystem specifically that let you
guys do that so quickly?

Speaker 3 (17:14):
So I'm going to give you the first one in
no particular order, but the first one that pops to
mind is people. So it's a really bizarre thing that
I found is that people who are looking for those
exact things that you mentioned, like people for whom tools matter,
like productivity matters. Like this is not to popoo or
denigrate people who don't choose that, but there are some
people who are like approach things that it's kind of
like a craftsman, and some people approach it it's just

(17:36):
like this is my job. But there are literally people
who go out and try and learn more because they
want better tools, they want a better experience, Like all
those things holistically matter to them. And I find people
who gravitate to the elixir ecosystem generally speaking, care about
those things and as a result it ironically it makes
them much better problem solvers, Like they literally care about
the solution and the elegance solution on I think Buckminster

(17:57):
Fuller had that statement. I might be mische doing the quote,
but it's like, first I start with a solution, but
if at the end it is an elegant, I know
that I haven't solved it in the best way. It's
kind of that's kind of the gist of it. So
we actually because we had people who had experienced in Elixir,
they were really good at solving problems. Then the other
thing that really works out is that beam Erling and
Elixer provide great abstractions, Like I really love the fact

(18:22):
that you get to pick to the right level of
abstraction for your problem, and if you need to go
more granular, you can't. If you don't have to go
more granular, no need. Like I wrote C plus plus
for a long time, probably professionally for the better part
of almost eight or nine years, and one of the
problems I always I didn't realize at the time because
like I started off an assembler and then everything looked

(18:43):
better than assembler was that C plus plus forces you
to solve every abstraction from the ground up, like almost
invariably you're just starting it's like, oh yeah, so let's
talk about how you're going to play out the memory
for your class. Write another class. Guess what, now you're
going to do the exact same thing. Let's talk about
the copy semantics for your class. Let's topic about like
all of these things, which really have nothing to do

(19:04):
with solving the problem, are the majority of the lift
that you actually have to do. And the funny thing
is we didn't really think about parallelization. We didn't think
about memory usage, we didn't think about cpututilization. We just
really thought about, well, we have to do the same
thing over and over and over again. Well, how do
we solve it in the small we do this? Oh well,
how what do we need to do to paralyze it?

(19:25):
What's this broadway thing? Okay, hey, look this gives us
some like composible data pipelines. Well that works really well, great, Okay,
I guess it all works. How fast is it? I
don't know. Let's look at it. Oh crap, did it break?
Oh no, it finished? Weird Okay, I guess we solved
the problem. But it felt like a happy accident. And
that's one of the things I really love about it. Like,
so like a perfect example, the first time you run

(19:46):
Live you, it feels like a happy accident.

Speaker 2 (19:48):
You're like totally You're like, oh, okay, I guess that's it.
It just worked.

Speaker 1 (19:51):
And I feel like I've had that experience so much,
not just with Live You, but definitely very notably with
Live You, but so often you're like, huh, okay, I
have to do this thing. I wonder if I just
X Y and Z and then you know you're kind
of off to the races.

Speaker 3 (20:03):
Yeah. Oh, Also, speaking of productivity, I actually really like
the fact that, specifically when you start talking about abstractions,
I like the fact that one of the principal ideas
behind both the Elixir Earling Phoenix novel libraries is that
we don't hide them, we just express them, if that
makes sense. Like, there's no super uber magic. The magic
is there for you to understand and see and it

(20:25):
basically you can deal with it and you can use
it or you cannot. But it's not trying to make
something really magical happen. Like I know it's fun to
pick on JavaScript, but like promises and JavaScript seem like
a really good idea. But I think we've all written
some JavaScript where the chain of promises goes down and
on and on and on.

Speaker 2 (20:41):
I have no idea. What you're talking about doesn't make
me at all.

Speaker 1 (20:44):
I'm curious how you feel that compares to you know,
people throw the phrase like rails magic around a lot,
and that's something that I know, like Stephen and I encountered,
and teaching rails is when you take students from the
way that we had taught the course back of flatter
and usually went from you know, your building like a
web app with reps using Sinatra, than you're using rails,
and like the class would always split almost fifty fifty.
Like half the people would be so thrilled to get

(21:06):
to rails. Stuff would just click for them. They would
be so productive, and then the other people would be
frankly kind of pissed because they wanted to know what
the heck was going on under the hood and weren't.

Speaker 2 (21:15):
Comfortable or happy with all of these abstractions.

Speaker 3 (21:18):
So, you know, the funny thing about that is one
of the best I think what saved me from that
specific thing was one I was lucky enough to take
the advanced Ruby class that they taught where I think
it was it was the pragxey. I think Dave might
have actually taught it, and he specifically talked about eigenclasses
and unpacking. So and I think the first version of

(21:38):
rails I use was point nine or point eight, it was.
It was not long after his brand new so you
had to understand how it worked because the stuff broke
all the time, right, Like, it had some really weird behaviors.
And we actually used to have this what we would
say is we want Ruby programmers, not rails programmers, And
the difference was whether or not you understood the abstractions.
And I think that's actually a different coach that people

(22:00):
take to learning things, And to me, that's the difference
between maybe being a craftsman just being a utilitarian, like
you need to understand those abstractions. And in fact, I
think somebody was mentioning something about, like, what would you
say about learning Elixir? What I wish I had done differently?
I think was one of the things we were talking about.
One of the things I always tell people is learn Elixir,
not Phoenix, right, because a lot of people get into

(22:23):
Ruby through rails, and so what they learn is rails,
and that's as deep as they go. And the problem
then becomes, if you ever give them a ruby esque
or Ruby center problem, they always see it through a
rail's lens, right, same thing with Elixir. I think it's
actually way it's far better to learn Elixer first, then
learn Phoenix, then learn Phoenix, and then try and figure

(22:43):
out what's going on, because if you learn Alixer, you
see Phoenix and you're like, well that makes perfect sense, right, Pipes,
got it? Composable, got it it. There's nothing magical here.
The abstractions are all just layered into this particular problem.
It's great, but if you only see Phoenix, like I've
done this with people. They want to build a web app,
they go for Phoenix, they get everything work, and they're like,
I have no idea what's going on here? Like why

(23:05):
do you keep returning this okay thing?

Speaker 1 (23:06):
Like or I think what you'll do then, too, is
you'll draw a lot of false equivalencies between Phoenix and rails.
And I think that that's the thing that I did
a lot, and you know, a lot of the Elixa
that I wrote probably for like you know whatever. The
first year of my life is an electric Developer was
just a mess because I was just trying to write
Ruby and Elixir.

Speaker 2 (23:24):
I think that's probably not uncommon.

Speaker 3 (23:25):
I really agree with you on that one. Like I
remember I said the same thing because when I moved
to C plus plus from C, I always said that
C programmers make the worst C plus plus programmers because
you're writing C and C plus plus. And the strange
thing is Elixer has both the blessing and the curse
of looking like Ruby. I have seen it. Like I
see people who are literally they're great rubyists. They get

(23:45):
into Elixir and like you look at the code and
you're like, you know that at variable doesn't do what
you think it does, Like that is not what you
think it is, right, And but you can see them
using it like it's a Ruby, like you know, a class,
a little variable and they're like, well, a class all available, right,
You're like, no, no, no, no.

Speaker 4 (24:03):
It's really funny. I agree with both of you so much.
And what's funny is Sophie that that when I want
to learn to code things like an Elixir developer, would
I look for your articles? But anyway, neither here Northern.

Speaker 5 (24:18):
So render.

Speaker 4 (24:19):
One of the things that's that's cool about the pivot
that we made when you impactorate to that first class
of ours was that our OTP and Phoenix courses have
become a looser courses with a little OTP and Phoenix
mixed in.

Speaker 5 (24:34):
Right.

Speaker 4 (24:35):
It's that you know, we we we teach this model
of you know, constructor reducer transformer that I think that
we started to talk about in your class, but since
essence has become stronger, and we also teach this concept
of pipelind and with land and how to get between them.
But we also try to teach the concepts of how

(24:56):
do you learn, where do you find things like how
do you find to the callbacks or behavior?

Speaker 5 (25:02):
What is a behavior?

Speaker 4 (25:03):
All those kinds of things really really matter when when
you're taking the next step.

Speaker 3 (25:08):
She didn't even think about that. That's the other thing
that's really great about Alixir is the documentation is amazing.

Speaker 4 (25:12):
Yeah, right, and that the documentation actually bleeds through all
the way from the documents on hex to the documents
on the individual page for the project to on get
up to the documentation and I e X and all
you have to do is using to bring it all
in and make it all available.

Speaker 3 (25:31):
Yeah. In fact, actually I think in one of your
other podcasts, you guys mentioned something like the you were
talking about Don't Fear er Lang whose podcast was that.

Speaker 2 (25:39):
We've definitely had that conversation here. Yeah, it's Ton Yeah.

Speaker 5 (25:44):
Yeah.

Speaker 3 (25:44):
So by the way, I totally met him for the
first time at a lone Star.

Speaker 2 (25:48):
Yeah.

Speaker 3 (25:49):
Yeah, actually, we totally We've got a chance to hang out.
I had no idea of like and like we just
met it. We just started talking mostly about food.

Speaker 4 (25:55):
Actually, he has the biggest surfer vibe of anybody I've
ever met.

Speaker 5 (25:59):
You know.

Speaker 3 (26:00):
Yeah, no, he's a great guy. But I actually I
had heard his podcast on your podcast, his talking on
your podcast, and it was really funny because I think
we had some of the same stuff, like sasag Jerk's
talk on the soul of the Elixric ecosystem. I actually
just sent that to somebody. People were like, well, why
would you care? Like, why should I care about this?
I'm like, go, go watch this. If it resonates, come
If it doesn't, well, by all means, keep keep doing

(26:21):
what you're doing.

Speaker 5 (26:22):
Yeah, that's definitely the best introductory video. If anybody wants
to know what the beam is and the value proposition,
send them that video. And if they're not convinced, then
in an hour of listening to Sasha, then it's not
for them.

Speaker 3 (26:32):
Yeah. Well, you know. One of the other funny things
is so I had this conversation with somebody else the
other day because we were talking about JavaScript's easy to
pick on listen, like all tools have their both pluses
and minuses. But what I was saying is they argument.
He's like, listen, javascripts got ubiquity, all these other things,
and I said, listen, you don't write JavaScript. And he's like, well,
what do you mean. I'm like, okay, I'm going to
go in and to take your babble canfig and I'm

(26:54):
just going to start deleting some stuff. Tell me whether
or not this is going to work right. And I
think one of the things that nobody realizes is that
none of of us actually write the languages we think
we write. We're writing like Elixer runs on the beam right,
it uses Erling libraries, it uses a whole bunch of
other things. Java Closure, they run on JVM. Well, which
JVM the hot spot? Like the abstractions between us and

(27:16):
the hardware and what we're really doing in the libraries
we're all calling. It's actually one of the things which
which drives me nuts is that nobody really tries to
understand how many abstractions they're getting in between them and
their solution. Same thing with JavaScript. You don't actually write jobscript.
You write yes six, or you write yes six with reducers,
or are you write I don't know. I'm a terrible
JavaScript programmer, but I've tried. I've struggled for hours with

(27:38):
my babble jskinfigs and all the other stuff to try
and get something to compile right because I had the
wrong type of aerofunction selected right. And it's one of
the things I really like about the entire Arling, Elixir
and Beam ecosystem is that it makes very transparent at
what level you're operating, whereas almost everybody else they tries
to obfuscate it. Well even see nobody uses C anymore,

(27:58):
use klangor LVM right, like your SE code really doesn't.
Actually the most instances compile straight down anymore, not in
the way you think it does.

Speaker 5 (28:06):
Yeah, I've definitely seen that issue of JavaScript. I was
helping somebody during the consultancy and then we're using a
Sinkle eight in some AWS lambda, and somewhere deep in
the AWS doctor it's like, you can't use a Sinkle eight.
It may work, but you know, the lambda may terminate
because the event looke doesn't know that it's still busy
or something like that. So you so then we went
through and switched everything over to promises and then all
of a sudden the thing just worked. So, yeah, JavaScript

(28:27):
does not equal JavaScript at the time.

Speaker 4 (28:30):
Yeah, I've got Joe Armstrong's voice in my head. Saying
run to completion semantics. That's madness.

Speaker 3 (28:38):
Yeah, right, Like, well, so you know what, it's the
other thing that's really interesting, just language wise. My big
kick these days is is Haskell, and I blame Actually
I bring Bruce because he introduced me to Brooklyn Sealinka,
and I now know that she's actually a word of
magnitude smarter than i'll ever be. And so if she's
doing Haskell, then it's it's upon me to incumbent upon

(28:59):
me to learn half of what she knows about Askell.
And the Hascal people are right. Being a terrible Haskell
programmer has made me a much better everything else programmer. Right, So,
and what's interesting to me is that you want to
talk about some people who embracem mutability in terms of
what your language is going to do, like your prelude,
like the idea. It's like no, no, no, no, sorry,

(29:19):
let's start. It's not a pre compiler. You tell me
what this language should be doing, right now, go ahead,
Like it's it's kind of crazy how flexible Ascal is.

Speaker 4 (29:27):
Yeah, I have another thing in common with you, Randall
that I am a terrible Hassal programmer.

Speaker 3 (29:33):
Well, I highly recommend everybody should struggle with some Askell though,
because you want to talk about some magic and some
just understanding of what raw computation looks like.

Speaker 4 (29:42):
Yeah, I mean, it's the foundation for everything that's important
to the list our community, right. So even some of
the things that we're doing with types, some of the
things that we're doing that we've always done with strains,
they're all kind of based on the erity models. Some
of the things that we want to get into with
property based test thing, some of the things that we
do with for example, the formatter. Jose did this this

(30:05):
talk I think three or four years ago called John
Hughes Driven Development, which was cool because at that time
we had John Hughes at gig City Electure, and you know,
it was just a whole lot of fun talking to
him about how his inventions in the language, and he'd
never cold it before at the time, are making such
a such a hard impact on it. I mean, it

(30:27):
was just beaming the whole time.

Speaker 5 (30:28):
So, while this is an Elixir podcast, what Haskell learning
resources would you recommend?

Speaker 2 (30:33):
So?

Speaker 3 (30:33):
I like the Haskell book, like Haskell from first Principles.
I think it's called it's the Purple Book. Whatever, that's
out there. That's a really good one. There is another thing, gosh,
what was called things I wish I had known when
I was learning Haskell. I can't remember who wrote it.
I've got it. I'm sure I have a link to
it somewhere, because I have a running list of an
org file of just Haskell resources. But what it talks

(30:55):
about is it? You mean, Haskell is kind of like
what Elixir could have been had there not been a
good community. And it's not a dang against the Hascalo community.
It's just that the haspical community, like, depending on how
you get into it, it might kick you immediately out
of it. Like there are plenty of posts where it's like, oh, well,
let's start with some category theory, right, which is which
is kind of like imagine if if you came into Erlang,

(31:17):
or you came into the luxury ecosystem and somebody said, oh, yeah,
that's really great, so let's talk about applicative functors and
basic functional like do you know do you know what
a calculus is? Do you know what a lamb to
calculus is? No, Okay, we're going to start with some proofs, right.
That's probably not why they came there. It might be
what they need to know, but that's not necessarily what
you want to hit him over the head with initially,

(31:37):
But that one broke down like all this sort of
history that you need to know to sort of get through,
like why is their stack? Why is their cabal? Like
what's the split between the two? Why are there two configurations?
Like what's this next thing everybody's talking about? Like there's
a lot of history there also some stuff what you
need to worry about, what you don't need to worry about.
We're sure to remember that Stephen Dall maybe was the
guy who wrote it. Maybe, But I'll do a burrito blog. Yeah, yeah,

(32:01):
that's it. Yeah, that's I think that's that's it. So
those are kind of my two. The other one is
like the look up the LSP, like, figure out how
to support Haskel inside whever your favorite editor is EMAX,
I mean, but aside from that, you know, figure out
some good language support for and then just start typing it.
And also there's the gosh, man, i'd actually have to

(32:23):
go actually go like dig up my actual list of
Pascal resources and tell you what it was. But those
were the actually I started with a Haskell book is
what I did because actually that's what Brooklyn told me
to do, right, gotcha.

Speaker 5 (32:33):
So after embarking on this Haskell journey, what your kind
of learnings that you bring back to your Eleixtra code
and how did your your style and way of approaching
problems and elixtur change, if at all?

Speaker 3 (32:44):
Actually so a couple of things. One, I stopped getting
fancy and I simplified a lot of things too. What
it made me appreciate was how a lookser is the same,
but how it's different. I'm actually much happier doing recursive
and recursion now, Like I'm much more likely to reach
for a recursive style or a rehearsal style of a solution,
and also a mentautic composition and state passing composition, Like

(33:05):
there are couple of patterns that I steal all the
time now, like pass state along with that. Before I
didn't realize that's exactly what you were doing in Eluxra,
But now to me it's explicit as opposed to being implicit. Yeah.
So mostly I think Haskell is the definition of just
because you can doesn't mean you should. Right, you can
by all means it won't stop you, but be careful,
you might be just taking him at your big toe

(33:27):
with a very very very large shotgun. So yeah, So mostly,
like I said, I think what it made me understand
is which abstractions I'm using and be much more I guess,
for I'm much more explicit about the abstractions that I'm
choosing at each level now than whereas before I'm like, oh, yeah,
we do this because that's what alexa cod is supposed
to look like, Versus now I'm thinking, oh, this is

(33:49):
what it's supposed to do. It's still a terrible Hascal
programmer though, like terrible.

Speaker 5 (33:53):
Yeah, it's a programming language, of course in graduate school
and we did a hash Schull lisp in prologue and
at that point it's like, I'm never doing functional programming ever. Again,
I don't see the utility at all. And like five
years later I went all in on a Likster. So
I my foot in my mouth five years ago. But yeah,
it was, it was definitely interesting. I'm sure if I
picked it up again today, I'd be just as terrible
at Haskell as I was, you know, ten years ago.

Speaker 3 (34:16):
So to be full credit to the Haskell community, they're
doing a much better job about being more welcoming. Oh
also exorcism. Exorcism has a great Haskell like exercises that
you can go look at and they actually have people
who give you feedback on your Haskell and it's cool
to see this other solutions from different styles, from people
who are kind of new to Haskell, like your solutions,
and people who have been working with haske for a

(34:37):
little bit, and then some other person who's like, yes,
I did this in exactly three characters, right, like there
is you can see sort of see the expressiveness of
the language. And that's actually I don't know, I'm kind
of a language nerd, so I like, like we were
early on diclosure at Thunderbolt Labs, we were early adopters
of closure. We went to the first college, and I
think closure had some similar problems with that. It's incredibly powerful,

(35:00):
but in the hands of people who know how to
use it, and there's not a lot of stuff to
get you from here's a lisp to here's being really
good with a lisp. Speaking of random weird language things,
let over lambda. If you ever just want to see
I know a lot of people don't write lisp, but
if you ever just want to see a book to
see where a lisp can take you. There is this
book called let over Lambda. I think you can only
get as like a epub or like a PDF download.

(35:23):
Maybe there's a print version two. I think actually, as
a functional programmer, it's just great to read what other
people who hit the advanced end of a language can do.
And specifically let over lambda is working on. He does
a lot of macros and list style macros. One of
the things I think that's underappreciated. I would like to
learn more about it, and I never really use it

(35:44):
is the macro facilities inside of Alixir, right, I'm always
looking for something to really do with it. But macros
are incredibly powerful, and a lett of over lambda was
one of those things where I saw it and I'm
just like, I got about fifty percent of what you're
writing here, But man, that looks just ridiculously overpowered to
be like, how do you manage to do this cool stuff?

Speaker 2 (36:05):
Oh?

Speaker 3 (36:05):
Also, I had learned racket last year too, which was
kind of cool, like looking at schemes, but.

Speaker 5 (36:10):
That's pretty cool. Yeah, I'm on my second take of
Christmas Chord's book Metaprogramming and Elixir. I'll figure out one
of these days and I'll build right macros correctly.

Speaker 3 (36:19):
Yeah, it's a different level of reasoning. They're right string
interpolation for code.

Speaker 5 (36:24):
So if you can go back in time and give
yourself some advice as you embark on the selector journey,
would what would some of those tidbits be aside from
this isn't Ruby, don't treat like this Ruby.

Speaker 3 (36:34):
That would be one of the first ones actually find people, right,
it's really weird. One of the things I think about.
One of the things I think worked for Ruby and
specifically where else they're different things, but I mean is
that they had a community of people who are always
willing to help. I think the community aspect of the
language is really underrated. So find other people who are
in a Elixir, who are kind of in that same boat,
and collectively start learning with them. That would be one

(36:56):
to learn Elixir before learning other things first. Right, Oh,
I think somewhere on the Elixir I think you or
someplace maybe on the Elixir lang website it says, don't
ask how do I What was it said? Don't ask
how do you do X? An elixir ask? How would
I solve why? In Alixir? Like the idea of don't
just translate the idioms from whatever languages you already know

(37:19):
into elixir. Actually go back and learn from first principles
what's going on. That's actually one of the things I
really like about the Dave Thomas book is that it
kind of abandons some of the oh look, look, here's
hello world, Look here's a forur loop. Like if you
think about it. I don't know about you, but for
the past twenty years whatever, like our programming books have
pretty much been exactly the same, right because we all

(37:39):
have some sort of c art style functional like programming background,
so they'll pretty much look the same. They teach you
the same construct so you're really trying to do if
you're trying to figure out, like, oh, what's the equivalent
of a four loop and go got it? Like, what's
the equivalent of a if then else in c sharp
got it right? So I would say, actually learn it

(38:00):
from first principles. So strangely enough, you know, shameless plug.
I did give a talk on how to learn an
Elixir at Alexakoff and Codebeam. And the other one is
I think take time because you're building up new cognitive structures.
I think people a lot of time. Do not realize
how much work it takes to get your brain to
start thinking functionally? Right, there is a lot there that

(38:22):
you have to unlearn.

Speaker 4 (38:23):
Syntax, concurrency, distribution, blackros. Yeah, so that's a lot, right.

Speaker 3 (38:32):
It's interesting. I'm going to give another shameless plug for Bruce.
I generally speaking, I recommend that they read the Elixir book,
and then, strangely, before they read the Phoenix book, I
recommend that they read Designing Systems and Elixir from Bruce's
book because it teaches you the part of the problem
is if you're functioning like no pun intended, a function
sort of professional programmer, you normally have something you got

(38:54):
to do for your day job. Like it's not most
of us don't just have the luxury of learning a
language for no applicative also no pun intended reason. So
you need to know how you build up an electure
system and the functional core stuff. What does it do
fun things with? What's the rest of the acronym, Well, there's.

Speaker 6 (39:13):
Work work we gotta yeah, yeah, yeah, do fun things
a big loud yeah.

Speaker 5 (39:19):
Big workers, that's right. Yeah you and a beer?

Speaker 3 (39:26):
Yeah, Stephen, thank you? Because I I personally I think
the Wilder Beasts has a nice lowing sound, you.

Speaker 4 (39:30):
Know, yeah it does. But O'Riley had the cover.

Speaker 2 (39:35):
The cover, so yeah, oh.

Speaker 5 (39:38):
Interesting is that really?

Speaker 3 (39:39):
What happened is like O'Reilly had like a wilder Beast
on something and they're like, no, you may not put
the Wilder Beasts.

Speaker 5 (39:44):
Yeah.

Speaker 4 (39:45):
Yeah, So James had just come back from an Africa trip, right,
and so he loved the world a beast and and
I mean, I've done all this marketing, but now I
mean it makes sense, right. Beehives layers different cells OTP.
Just it really good time.

Speaker 3 (40:01):
It's true. And beehives are built in hexagons, right, so
that you have hecks already built.

Speaker 5 (40:07):
In ooh oh, well done there. Well they just dropped
the mike. We got to be done.

Speaker 3 (40:14):
So yeah, so I recommend that they read that book
because it's important to understand how you build an layer
of system together, because it's very different than alixir. The
functional core aspect is what most people miss. In fact,
we just had a team try to learn an elixir
that had been Rubius and jobs for people, and that's
exactly what they missed. And it was the first thing
they missed. They didn't have a functional core, and it

(40:34):
made everything else almost impossible.

Speaker 5 (40:36):
It's funny.

Speaker 4 (40:37):
In San Francisco, Brooklyn came up to me, and I
mean she's one of the people that I practically idolized.
I mean the Witchcraft Library, the strong resonance with Haskell,
with the things that she can make Macro's do. She's
just smarter than Oliver be. But she came up to
me and said, hey about your talk, and I'm saying, oh, crap,

(40:57):
here it comes. You know, it was basically an outline
of the work of the books. She says, I agree
with all of it. And by the way, here's where
this paper says the same thing, except between this layer
and this layer you have an interface. And so it
was really it was like a high moment in my career.
You know. It's kind of said, yeah, you get this,

(41:17):
and I said, I didn't need to get it that way,
but I'll take it right.

Speaker 3 (41:21):
So, actually, if I remember currently, so he didn't she
say that you didn't you had like a liberal arts background.

Speaker 2 (41:25):
Right that.

Speaker 1 (41:27):
Yeah, yeah, liberal arts background, history degree and then ended
up at the Slattern School, which was a software engineering
bood camp, and that kind of the rest was history
just fell in love with it.

Speaker 3 (41:39):
Yeah, So when you were thinking about learning things, why
didn't you wish somebody had told you?

Speaker 2 (41:43):
That's a good question.

Speaker 1 (41:44):
I mean, that's one of the things that I loved
about learning Ruvie is that it tells a story and
you really have the emphasis on the problem that you're
trying to solve and how to express it with code
as opposed to needing to understand kind of some of
the low level principles. I feel like that and later for.

Speaker 2 (42:01):
Me and then I think the thing that really hooked.

Speaker 1 (42:05):
Me and kind of got me frankly obsessed with programming
was and I really think this is a feature of
something that the Flattering School really engenders and their teachers
and offers.

Speaker 2 (42:14):
To their students is just just.

Speaker 1 (42:16):
An absolute love of what you're doing, just an excitement,
a curiosity, like this total space of support.

Speaker 2 (42:22):
That's something that I very much felt from my teachers.

Speaker 1 (42:24):
There and then learned, i think, in part, how to
give to my students subsequently, because then I went on
to teach there from Steven.

Speaker 2 (42:30):
I think Stephen just brings this like.

Speaker 1 (42:32):
Absolute joy to whatever he's doing, and he is as
excited to show you something that he showed you know
a thousand people for five years as he is to
show you something that he just figured out for the
first time ever.

Speaker 2 (42:44):
And it's really infectious.

Speaker 1 (42:45):
And I think that to me is really like the
secret ingredient to learning a new language and learning a
new skill.

Speaker 4 (42:50):
Joy that's actually a stone cold ninja as a teacher.
I mean, so he started coming teaching to our childhood
liks group and you know, just got of I just
dropped them into our most advanced class and and disappeared
on them really and and they came back right And
now I'm saying, when you coming back, you don't have
to come back. You really don't have to come back.

(43:11):
Speaking as this, it was really really cool them.

Speaker 3 (43:16):
I paid them all to say that you Musty's a
that's a great thing to do. It's like, especially nowadays
with gift cards, it's a really easy way to get
a great review. But actually that's really funny. I think
it's interesting. One of the common threads I see about
people is people. I think what brings us to different
languages and different tools are the people. Which is a
really weird thing to say. Protect people, right like, but
a lot of why we choose the tools we have

(43:37):
is if you get a good person who introduces you
to the right sort of like to the joy of
better tools and better approaches and better thinking, you have
this great experience and that carries forward and they're I've
you know, I've met my more than my fair share
of like abused programmers, right, Like, Hey, what happened? I
got dumped into this project? Nobody told me what to do.
There was no cic D, nobody told me about testing. Like,

(44:00):
if you don't have somebody to tell you how fun
and how joyant and joyful programming can be, it can
be a real be a real slug. So could u seven?
If you can actually like convey that sort of excitement
to people, that's super important for the next generation programmers.

Speaker 1 (44:14):
Yeah, well, I think we're all very grateful to have
benefited from that.

Speaker 2 (44:17):
Since we are coming to the end of our time.

Speaker 1 (44:18):
There's one last question that I really wanted to get
to for Randall, since you are a bona fide bond vibon,
I need like a Halloween themed cocktail that isn't like
too much. I don't like things that are super sweet.
I want to be easy because I'm not great at this.
Do you have anything for me, okay, off the Topllowen autumnal.

Speaker 3 (44:36):
Yeah, so an autumnal cocktail, I would go with a
spiced cider with a rye whiskey on the side, or
a ryebourbon whiskey kicker. So the things you can do
is you can actually take apple cider. You need the
unfiltered type sider, not juice. So you take apple cider
when you can actually reduce it in a pan, and
it makes for a very strong apples almost like an
apple syrup. Interesting, and you can infuse that with things

(44:57):
like cinnamon, So you could put like cardamous cinnamon and
any of those things in it in a pan, reduce
it more by half or a little more, and you
end up with an apple syrup. And so from there
you can basically select your level of booziness, your level
of appleness, and your level of cocktail. You make an
effort vestment by either fixing it or toping it off
the champagne.

Speaker 2 (45:15):
I love that. I'm definitely doing.

Speaker 3 (45:17):
So it works in a situation. Yeah, yeah, Champagne cocktails are underrated.
Good cure, I agree.

Speaker 2 (45:23):
Also makes me feel like I'm in the nineteen twenties.
I'm not really sure why I have the association.

Speaker 3 (45:27):
Yes, maybe a slipper glass. Yeah, yeah, So that's because
in what I like about that is with one prep
you can make the base and then people can have
either a non alcoholic if you have people who aren't drinking,
or a completely boozy, wipe you out cocktail by just
dumping a bunch of ry whiskey and putting a splash
of apple over the.

Speaker 5 (45:42):
Top of it.

Speaker 2 (45:43):
Also, I like a cocktail that you don't have to
mix individually.

Speaker 1 (45:46):
Even if you have like just a couple of people around,
it's still sort of a pain.

Speaker 2 (45:50):
So I love this. Thank you. I cannot wait to
try this out. That's just perfect.

Speaker 1 (45:53):
So yeah, great, And I think that'll bring us to
our picks.

Speaker 2 (45:57):
We have a lot of great recommendations.

Speaker 1 (45:59):
We've been collecting some of the links and things that
have been mentioned in this convo, but we will go
around the room, so to speak, and if anyone has
specific recommendation. Since Bruce had to drop off, I'll start
with his. Graxio starts their Nerves course on November first.
Definitely don't miss it out and check out grox dot
Io Groxio, and I will pass it over to.

Speaker 5 (46:22):
Alex so my picks are two learning resources. They're both
kind of open books. One is the beam book and
there'll be a link in the show notes, and the
other one is Earling and Anger. I've definitely used Earling
and Anger several times when there's been a memory leak
in production and you're like, whoa, this is a lickxir.
Memory leaks are not possible. Well, they are possible, and
there's a couple of scenarios into which they're possible. So

(46:42):
that is a good reference to hit up when you
don't know why memory is spiking and Grofana is going
off the charts, So definitely check those out.

Speaker 2 (46:50):
Awesome, Thanks Alex Steven.

Speaker 6 (46:52):
So mine is going to be for I have ultra
wide monitors here, but I actually mean super ultra wide monitors.
So first of all, this is a thing. You can
get a monitor that's forty nine inches and super ultra wide. Yeah,
you don't know you need this, but you need this
in your life. You need to be surrounded by zoom
like people on your left, people on your right.

Speaker 5 (47:13):
It really makes you feel like you're back in the office,
but kind of surrounded in a weird way.

Speaker 3 (47:17):
So check that out.

Speaker 1 (47:18):
Thank you for that I can't wait to squint even
harder at the teeny tiny.

Speaker 2 (47:23):
Resolution of whatever is on your s great chair.

Speaker 1 (47:25):
I don't have any picks this week, although I've a
feeling I'll be recommending a contail as soon as I
try it out.

Speaker 2 (47:31):
Randal.

Speaker 1 (47:31):
Like I said, I collected some of the links that
you had mentioned, but if you have anything else you'd
like to share, it currently doesn't have to be a
lexor or even programming related.

Speaker 3 (47:39):
So one is definitely seeing deals. The Haskell link what
I wish I had known that was actually really good.
I just like that as a comprehensive sort of resource.
Another one is Kemming Labs has this thing called finda.
I don't know if you guys have ever used finda.
It is literally a search everything. It's like it's one
of the greatest things ever. It just pops up all

(48:00):
of these this this huge overlay that you can search
all the things, and I do mean all the things
as you can like integrate it with your VIM, you
can integrate with your emacs. I'm pretty sure it integrates
with them. I know it works with vidas code, but
it'll search open tabs. So if you're like me and
you're one of those people who never close the tabs.
You can search all your tabs, you can search all
your links, and it's super fast, and it's a it's

(48:23):
a great way to actually kind of be lazy about
managing Windows until you should.

Speaker 1 (48:28):
It's really dangerous for me because I absolutely have a
million tabs and can never find anything.

Speaker 2 (48:32):
And I think it's just.

Speaker 3 (48:35):
Going to try this, so check it out. Actually, like
I said, I'm a huge fan of that, just because
I started using it yesterday and I was just like,
where have you been? So cool? Thank you, thank you guys.
Actually appreciate you. Guys. Give me a chance to just
prattle on for a while.

Speaker 2 (48:50):
Yeah, this is great. We were thrilled to have you,
and hopefully we'll get the talk again too.

Speaker 3 (48:53):
All right, sounds great. Curious
Advertise With Us

Popular Podcasts

Stuff You Should Know
Dateline NBC

Dateline NBC

Current and classic episodes, featuring compelling true-crime mysteries, powerful documentaries and in-depth investigations. Follow now to get the latest episodes of Dateline NBC completely free, or subscribe to Dateline Premium for ad-free listening and exclusive bonus content: DatelinePremium.com

CrimeLess: Hillbilly Heist

CrimeLess: Hillbilly Heist

It’s 1996 in rural North Carolina, and an oddball crew makes history when they pull off America’s third largest cash heist. But it’s all downhill from there. Join host Johnny Knoxville as he unspools a wild and woolly tale about a group of regular ‘ol folks who risked it all for a chance at a better life. CrimeLess: Hillbilly Heist answers the question: what would you do with 17.3 million dollars? The answer includes diamond rings, mansions, velvet Elvis paintings, plus a run for the border, murder-for-hire-plots, and FBI busts.

Music, radio and podcasts, all free. Listen online or download the iHeart App.

Connect

© 2025 iHeartMedia, Inc.