Episode Transcript
Available transcripts are automatically generated. Complete accuracy is not guaranteed.
Speaker 1 (00:06):
Hello, everyone, and welcome to today's episode of alexer Miss.
I am one of our hosts for today, Sophie de Benedetto.
Speaker 2 (00:14):
We also have here with us Bruce Tate.
Speaker 1 (00:15):
Hi, everybody, we have Lars Vikman, Hello.
Speaker 3 (00:19):
We've got Alex Kutmawi and Josh Adams. Hey there, and
today we have joining us as a very special guest,
Todd residek and got a couple of fun, interesting things
here to talk about, including some of the writing that
Todd has been doing as well as his I believe
last year's talk at alex ra Khana entitled It's time
to embrace Erline.
Speaker 2 (00:40):
So welcome Todd.
Speaker 4 (00:41):
Thank you, Thank you for having me.
Speaker 1 (00:42):
Yeah, no problem, Happy that you could join us.
Speaker 4 (00:44):
How are you doing, I'm doing well hanging in there.
Speaker 5 (00:47):
Turns out my lifestyle was mostly staying at home before,
so not too different for me.
Speaker 1 (00:51):
Yeah. I think that probably resonates with a lot of us,
especially any of us who were already working at home.
Some things are very different and a lot of things
really are not so tough. Do you want to maybe
kick us off just by introducing yourself a little bit
and telling us maybe about what your involvement with the
Electric community is sure.
Speaker 5 (01:07):
Thanks, so you said, my name Todd Residek and I
work for a company called simple bet where our mission
is to power the future of fan engagement, which is
a nice way of saying we allow you to bet
on sports in a.
Speaker 4 (01:18):
Very unique way.
Speaker 5 (01:19):
And I'd say probably my most active work in the
Elixir community is on hex. So I'm one of the
three I guess maintainers of Hex and I mainly work
on the CLI and the API side of things, and
otherwise you maybe have seen me talk at conferences about
random things.
Speaker 4 (01:35):
Yeah, speaking of the conferences, Todd, we were stalking each
other for a little while. But do we have like
three or four maybe even more conferences back to back
that we both hit. Yeah, I'm trying to think.
Speaker 5 (01:46):
I mean, certainly over the last over like from Elixir
conf last year up until the COVID thing hit this year,
we were at maybe five out of the six conferences together.
But yeah, this year started off with a bang. And
you know, we had three Elixir conferences is all in
like February and the first week of March, and I
think you and I were the only people that were
speakers at all three of those, which probably says something
(02:08):
about us being really dumb. Right, So I don't know
if you gave the same talk at all three. I
think you did the same at two of them, and
then a different one, and then then you got roped
into a second talk at Codebam.
Speaker 3 (02:17):
Right.
Speaker 4 (02:18):
So the Code Beam was interesting because I was able
to use a technique that I've thought about for a
long time. So I did a fish bowl where one
of the seats was empty, and then I prepopulated the
audience with a couple of questions. But I wanted to
basically make a point without making any statements. I wanted
to just ask pure questions and have the audience make
(02:41):
my point for me. So it was a lot of fun,
and that was a wild conference, being right before the pandemic.
Speaker 5 (02:47):
Yeah, that talk was at the same time as my
talk at code Beam, so I didn't get to see it.
But everybody that I was talking to that was considering
going to my talk, I told them, probably go to Bruce's.
It's going to be kind of a once at a
lifetime opportunity and you could just watch mine video later.
Speaker 4 (03:01):
Yeah. So I wanted to ask you one I haven't
really seen you give talks beyond the you know the sprinkle?
Was it the sprinkle two thousand? I don't know, whispers
h and but you gave a talk at the at
the LA Impacts Elixir about embracing arline, and one of
the things that was going to ask you was, how
(03:22):
does knowing erlane make you a better elixur developer?
Speaker 5 (03:25):
Yeah, I think so, let me rewind it, I guess
a little bit. So the reason I came around to
that thinking was, like, when I first started Elixir, it
was sort of told to me that that this is
a solution to the problem of arline syntax, and so
I just took that for granted because I heard it
from so many people. But as I have been working
full time in it over the past couple of few years,
I've met people that have come in from the erlining side,
(03:48):
and so, like a lot of a lot of the
people that we work with come over from Ruby or
or JavaScript for instance, but you every once in a
while you get that erlanger that comes over to Elixir,
and so getting to know those people, I started to
see how they think about things a little bit differently
and certainly have a lot more history with like how
the functional programming works, and just how beam works, I
(04:08):
guess in general, So I.
Speaker 4 (04:10):
Would say, first of all, like you should learn how.
Speaker 5 (04:13):
The beam works, which is a big part of OTP, right,
so even if you're never going to write aarline, you
should understand how the virtual machine works. But I think
knowing a little bit of earline knows when helps you
know when to drop into earline syntax to make things easier.
So there's a few things I think that just never
got moved over to Elixir syntax that only exists in
Erling right now, at least, like it's standard library wise,
(04:35):
there might be libraries that do them on Hex. But
one of them that I think is really cool is
the Q the Q library, I guess it's built into OTP,
which is like a FIFOQ that exists that there's just
nothing like that in Elixer. And it's also reversible and
almost everything you do on it is in constant time.
So I think of like how many times you might
make want to make a FIFOQ or a lifo Q,
(04:56):
and like how you might try to figure out how
to implement that in the Elixer, whereas I could if you
just do coal and Q everything's right there at your disposal.
So knowing like knowing all the things that are in
the standard library means knowing everything that's in Elixir's standard
library as well as knowing what's in Arline Standard Library,
since you have access to that in your Elixir programs.
Speaker 6 (05:14):
Yeah, define that comes up. I've used the Q library
a bunch of times for especially I when you're do
any kind of like rate limiting. If you set up
a simple gen server, that gen server receives things and
let's say you know you're you've you've reached your rate
limits or it on the queue, I'll generally also keep
a counter of how big the Q is because I
think that's an O event operation on Q. So if
you keep the account of the queue the Q sides
(05:36):
in your gen server state, then it's it's super inexpensive.
But yeah, definitely definitely have reached for that a lot
of times.
Speaker 1 (05:42):
And I think what you said about you know, if
you're working with Alexa, whether or not you want to
write arline or anticipate writing airline, you should know how
the beam works. And I think I've probably spent the
first like two years of my life as an Elixir
programer just saying things like, oh yeah, elixa is syntactic
sugger for Erlang, or oh yeahs great at concurrency without
really knowing certainly what concurrency even really means and how
(06:06):
it operates on the Beam and finally taking a step
back actually around the time that I and some coworkers
were doing a book club with Bruce's book Designing Alixir
with OTP, but I finally started thinking, like, you know what,
maybe I should take a little bit deeper and actually understand,
you know, what's going on under the hood and what
it really means. When I started throw around these like
very buzzy phrases about Alexir and I read through thesed
(06:27):
a couple of resources. I read through some of the
chapters and learn yousemmerlang on you know, the Beam's concurrency model,
and then I actually read through just kind of googling
around different things about kind of the history of this
concurrency model and the different phases that it went through
in terms of with development, and it.
Speaker 2 (06:42):
Really just kind of blew my mind.
Speaker 1 (06:44):
And I wouldn't say that it enabled me to do
thing in Elixir that I wasn't able to do before,
but just actually having.
Speaker 2 (06:50):
This foundation and understanding how this worked.
Speaker 1 (06:52):
I think it absolutely made me a better programmer and
a better Elixir developer. And I ended up writing a
blog post about it just to kind of like put
it all together in my own head. And it was
actually some of the most fun I've had doing technical
writing to finally be able to put these building blocks together.
Speaker 5 (07:08):
Yeah, I think, like you said, I think what you
were saying is like building this mental model that's more
that's less superficial, I guess than what you maybe get
at a lot of Elixir, like from a lot of
Elixir resources is important. So I think there's like Sasha
your It gave a talk that's really really good about
sort of explaining all the way from beginning to end
how Erlang and Elixir works together. So I'd probably recommend
(07:30):
looking that up if that's something that's interesting you.
Speaker 6 (07:32):
Yeah, I was going to bring up that same conference talk.
I think it's the soul of erlaying and Elixir.
Speaker 4 (07:37):
That is.
Speaker 6 (07:37):
I think the best like forty minutes you could spend
to get ramped up on what exactly the beam is
and what the value proposition is.
Speaker 4 (07:43):
Yeah, and if you watch it at two x it's
only twenty minutes.
Speaker 1 (07:46):
I don't know.
Speaker 6 (07:46):
I mean, can you can you catch what Sasha is saying?
Speaker 4 (07:48):
And two x speed? I think you usually have to.
Speaker 6 (07:50):
Go like half speed to really digest everything that Sasha
gives you.
Speaker 4 (07:54):
It's a good point. So what are some of the
other excellent talks that you've seen that can introduce people
developers to more Arling.
Speaker 5 (08:01):
Well, I think you'd be remiss not to start out
with Earling the movie because that's where it all began.
So if you haven't watched that yet, you should watch
Earling the movie. You can skip the sequel if you
want Sasha's talk. I think one that got me really
excited was, well, a couple I guess whore talks that
Miriam Payna has given. So she she gave it at
Alixa komf last year called Beam Extreme. She also did
it at MPEXLA that I know of, That's where I
(08:22):
saw it first. And it's all about her work at
Next Role, which is all primarily Arling, and just to
see how Erling runs at orders of magnitude beyond what
most of us will ever work on. It's just absolutely insane.
And she's one of those people that has been working
at arlink forever. Not to make any comments on her age.
I don't mean that. I mean like she's just been
working on ARLING for a really long time, I think
(08:42):
for like probably close to twenty years, and it's just
like she's so many levels ahead of where I am
right now.
Speaker 4 (08:48):
Oh yeah.
Speaker 5 (08:48):
One other one I wanted to bring up was I
think that's really really exciting, and it's more of about
distributed systems than Earling specifically, but it is Arling. Is
Christopher mickel John's talk at CODEAM last year on partisan
and that that I think is in the same vein
as Miriam's talks where it's like, if you what happens
if you want to go to the next level, I
guess on distributed programming. And I don't know if this
was his his dissertation or just a side project that
(09:11):
he's been working on, but it's a really really cool project.
Speaker 4 (09:13):
Kind Of continuing on.
Speaker 6 (09:14):
The theme of arline goodies, what kinds of erlining and
OTP goodies? Do you wish more elixer developers, Newbotten and
levers in their day to day work?
Speaker 1 (09:22):
Yeah?
Speaker 4 (09:22):
I don't. I'm not necessarily dogmatic about it.
Speaker 5 (09:24):
I guess I think a lot of what exists in
Erlin also exists in elixer. I would just say my point,
I guess to that talk was aid and not be
scared of erline. Like I think, at least from my experience,
was that like, oh, this is something that exists in Erlang. Okay, well,
let me try to find an Elixir library or a
wrapper for that. So I'm using like more Elixir type
(09:44):
syntax for things, and I think more than anything else,
that's kind of the point that I wanted to get
across was that, like, you don't need to bring in
a dependency to do the cues for you or the
digraphs for you or complex math. You should just learn
to read Erlin documentation and get away with the one
line of code rather than bringing in a dependency and
having five lines code.
Speaker 7 (10:03):
Yeah, and the Erlang manual generally is extremely well written,
and there's like multiple aspects to it. There's like the
operating side versus the large overview side.
Speaker 4 (10:12):
And it's just fun to read.
Speaker 5 (10:14):
Honestly, you're a unique individual, Josh, maybe, Yeah, I found.
Speaker 4 (10:17):
All kinds of cool stuff.
Speaker 7 (10:18):
That was how I found out that WX was involved
or included out of the box and I had a
lot of fun with that, and that was where I
found out like the SSH module, which is just silly
and cool.
Speaker 4 (10:27):
Yeah, no, I agree.
Speaker 5 (10:28):
I think it is really really interesting, and I think
they could be great to sit down with Robert, like
get the whole story on why some of these things
exist in there. I know there's a story why WX
was included in OTV, like a specific solution they had
at ericson that they needed to solve. And when I
think about the digraph module, I have to assume it
has something to do with cell phone towers and figuring
out routes two different switches like on the network for that.
Speaker 4 (10:51):
I want to hear that story. That's a great point.
Speaker 5 (10:52):
Yeah, so I think you're right. I think alixird documentation
looks so good and it kind of spoils us for
other documentation. But I think you can airlines docks to
Ruby docks or Java docs or go Heavan forbid docs
like Earlin docs are just basically the same as everything
else except for Elixir.
Speaker 4 (11:08):
That's my opinion, I guess.
Speaker 7 (11:10):
Also, one OTP goody I wanted to mention was jay
interface because I've used that in production a ton and
it's just a very convenient way to get Java to
talk to Airline, and you can run it on Android
if you're squarely.
Speaker 6 (11:21):
I do like the fact that sometimes the Airline docs
do read more of like a story. When I was
writing my Amnesia blog posts, I did find myself digging
through a lot of the Amnesia doc and I did
read very much like a book as opposed to like documentation.
So they would go and say, we made these trade
offs because of XYZ. You know, it's not a good
case for this particular use case. So either one, it's
this and it does read very uniquely compared to other
(11:42):
documentation that I've read.
Speaker 5 (11:43):
Yeah, I think that's interesting, right. A lot of programming
languages are designed for like serving a theoretical purpose, like
what if this elixir or what if this programming language
worked in such a way or fit at these characteristics.
But I think there's a lot of artifacts in OTP,
or maybe even most of OTP is an artifact of
the work at Erickson, like what they needed to fulfill
at Ericsson.
Speaker 4 (12:03):
Right, So it's like.
Speaker 5 (12:04):
That's probably easier to tell story when if you trace
this back to whatever the version of project management tools
they were using in nineteen eighty five was like, yeah,
we built amnesia for this epic, you know, on our jiroboard,
and so this was the problem that it was solving
for us. So maybe it lends itself more to telling
stories because there really actually is a story, not just
some fictitious theoretical that you're making up.
Speaker 8 (12:25):
My main takeaway from that talk was also that there's
a community aspect to it, and that if we speak
of erlang as the old thing that Elixir fixes, there's
a lot of people that enjoy airline that will take
reasonable offense to that, and it's not a good way
to build a community. And I think we should value
erline a lot for what it is, for what OTP is,
(12:48):
and for what it brings us. And I think most
newer languages, and Elixir is a newish language, don't.
Speaker 4 (12:53):
Have a history.
Speaker 8 (12:54):
Elixir has a very compelling story because of Erline. Elixir
is a nice language I find more approachable than airline
because I'm definitely from non functional background. But the story
of why is the beam reliable? Why is there a
compelling story that we now have a slightly more I
dare say, modern approach to programming, slightly more modern tools
(13:15):
more convenient way of using this very same technology. Elixir
doesn't change Airline, or it doesn't change the Beam at
the very least. So the thing that does make Elixir
compelling is the strong history of Erline and the Beam.
And I think when we dismiss Erline because of its syntax,
we also dismissing the history and the people that built
(13:35):
that history with us for us, and I think it's
the strength of the community, and I think mostly the
community has moved past that.
Speaker 1 (13:42):
Yeah.
Speaker 4 (13:42):
I think that one of the cool things about following
languages like Erline and Elixure and being able to kind
of play them, use them for what they were intended
to do is you get to see what something was about,
and it kind of reminds me of a couple of stories.
One one of the things that I get to do
with Groxio is explore new languages. So about half the
time we're working in Elixir to kind of have a
(14:05):
deep dive into new things that are going on there,
and about half the time we're introducing new languages. And
one of the new languages that I got to explore
was one called Pony. And this is kind of this
wild c plus plus like language written by a man
named Sylvan Clevitch, and the main quote that I remember
from Silvan was that languages should be about more than syntax.
(14:27):
It should be about more than just doing something that
you can do with another body. It's not enough if
you intend to move a whole community from something to
something similar, It's not enough just to touch on a
few elements of syntax. And the second thing is that
I was fortunate to be around Jose when he talked.
He gave a talk, might have been in twenty thirteen
or twenty fourteen, I think it was in San Francisco
(14:49):
and a user's group, and the talk was called what
Elixir is About, and he specifically mentioned syntax as something
that it was not about. He talked about the abstractions
that we could layer on top, the idea that if
you had the Syntex tree and the macrosystem, we could
build the language in itself. The idea that if you
had protocols, then you could have something with streams and lists,
(15:11):
and you could have a common library that was enumerable.
But these things about what a core language is about
just go all the way back to our DNA, And
I think that embracing erlayg helps you understand a core
part of the history of Elixer, even if you never
touch the functions, which are incredible in their own right.
Speaker 5 (15:31):
Vers I have a question for you that's kind of
it might be related, And I know you did a
series on Crystal, and I, like, I honestly knew more
about Crystal, Like I learned about Crystal way earlier than
I learned about Elixir, and it seemed like it was
a natural successor to Ruby, right, Like when I look
at Elixer, like when Ruby programmers move over to Elixir,
it's like, I want to have concurrency. I want to
(15:52):
have like this memory safety and et cetera. Like I
guess there's a lot of things that it's that they
have in common, and Crystal offers a lot of that
as well. Like it's essentially like very Ruby like syntax
that compiles on LLVM, and you get a lot of
features like function overloading and pattern matching that are similar
to Alixir. But like Crystal, I don't know if it
was marketing or if it was I guess I just
(16:13):
sort of made a revelation here that like, if all
you're bragging about is is that it's syntax. You know,
it's syntax. Maybe that's not the right way to market
a programming language. And I feel like Crystal was like,
this is just like Ruby, except for like it's on
a compiler, and maybe that is just the absolute wrong
way to market your new language.
Speaker 4 (16:32):
What do you think? So I was fortunate to be
able to speak to a couple of the Crystal creators
as well, and by the way, they did an amazing job.
They attacked a problem without a whole lot of knowledge
of compilers, new power theory. They kind of gathered that
along the way. And I mean imagine saying I want
to take this language Ruby, which has open classes, meaning
(16:54):
that you can open anything at any time, and I
want to make that language type safe. I want to
make it NUL safe, and I want the same type
of flexibility that you had with Ruby, and by the way,
I want it to be concurrent as well. So many
people told them that this thing just could not be done.
But what I noticed as I worked through through Crystal, well,
(17:16):
first about the marketing. It helps if you choose a
language named Crystal, and you choose a term called Crystal programming,
which also has a massive following in terms of programming
crystals for this new age philosophy. Right. So there was
this language popularity index that found all these references to
(17:37):
Crystal programming and mistakenly included them into the popularity of
the index. Right. But after that's happened, one of the
things that I noticed was that you do lose something
about the dynamic nature of Ruby with Crystal, and I
think it's it is definitely noticeable when you start stacking
(17:58):
up the specific types, layers and layers and layers of types,
the flavor of the programming changes a lot, and such
it is with Alixer. So what a programming syntax can
buy you is one particular community can give you a look.
That's what you can get. You can get a look
by a language, a language community. That was true of
Jaba when they earned a look by the C plus
(18:21):
bus developers, and on and on and on. You can
get a look, and you have to be good to succeed.
You have to solve a real problem. You can't just
be a new language for the language sake.
Speaker 5 (18:31):
Just so everybody knows, I'm showing my Crystal sticker that's
on my water bottle. So I don't mean to be
a critic of it. I actually think it's really really
oy to me too. I'm a huge fan. I think
that just that particular team, what they achieved is just
marvelous engineering.
Speaker 4 (18:46):
And when you talk to them, one of the things
that came through was their love of Ruby and their
desire to kind of stay there and take advantage of
many of the things that were Ruby liked. So they
did things like they had a lot of inferred typing,
built a macro system so that you would get a
lot of the feel of the open classes in Ruby.
It's tremendous engineering from top to bottom, and I respect
(19:08):
the team tremendously.
Speaker 8 (19:09):
So now you're interviewing Bruce on our podcast. Usually we
find you interviewing people on another podcast. Specifically, you interview
prominent community members to let the community know them.
Speaker 4 (19:21):
A little bit better.
Speaker 8 (19:22):
Can you talk to us a little bit about that?
Speaker 4 (19:24):
Seems like a sweet gig. Yeah.
Speaker 5 (19:25):
So the backstory I guess on that is I met Justice,
who's the host of the other podcast at Elixirkov twenty seventeen,
and yeah, I guess we just became friends then, and
so him and Eric were doing the Smart Logic podcast
and I been a guest on that, and they approached
me this year to ask me if I wanted to
do a segment. So the segment is called pattern Matching
(19:46):
with Todd And if you've ever met me at a conference, like,
I'm one of those people that will rarely talk about
programming unless I have to with you, like, I'd much
rather talk to you about like personal stuff. I guess
Bruce can probably verify this. I would much rather like
talk to you, like to know you as a person
than what I can see on your get up profile.
Programming is interesting, but I feel like people are a
culmination of so many experiences that to only talk about
(20:09):
programming is sort of a wasted opportunity. So yeah, we
sort of bandied about this idea of like what if
you were to just get to know these people on
a personal level, Like the Smart Logic podcast is mostly
about like specific programming projects that people are working on,
and my segment is totally not about programming projects. It's
all just about getting to know that person a little
bit better.
Speaker 4 (20:28):
And so part of it.
Speaker 5 (20:29):
Is selfish, like I want to get to know these
people a little bit better, and part of it is
like hopefully you see these people like conferences in the future,
or if you're a new member of the Elixer community,
you might see one of these people and you may
have heard something on the podcast like, oh, I didn't
know you used to live in you know so and
so that I used to live there too, or just
give you some way of making that connection with other people.
So I think one of the things that inspired it
(20:52):
was I don't remember where I heard this, or if
maybe it was on a podcast, or maybe it was
on his Advent of Code, but Jose was doing some
recorded event and I could hear his kids in the background,
and I was just like, man, this is like I
just never made the connection that other programmers have these
families outside, Like I always think of them in the
context of programming things, and I don't think of them
(21:12):
in the context of like being distracted by their kids
coming into their office or things like that. And it
just got me thinking, like, what if we didn't hold
Jose and Chris up on a pedestal and think of
them like deities as much as we just thought of
them as people that like us and everything that they've
done is are things that we can do as well.
Speaker 8 (21:29):
That was maybe a long winded answer. I think it
was a good answer. It's I think it's a very
good segment. To have enjoyed what I've seen or listened
to of it so far, and I think I have
the Brooklyn one lined up or listening.
Speaker 5 (21:41):
So yeah, that was a big get for me. I've
known Brooklyn for I guess a few years now, and
she is just I say every time, but I'm just
totally enamored by Brooklyn. She's just like incredibly smart and
incredibly wise, and she is she thinks of things. She's
just on a totally different plane than most people that
I know, so so multi dimensional, so humble. Yeah, if
(22:03):
you ever get a chance to watch Brooklyn talk Brooklyn Zelenka,
look it up because she is like Wow, Yeah, she's
just absolutely amazing. So and even though i've known her,
I didn't know all the things that I learned about
her from my podcast episode with her, just all the
places that she's lived and all the things that she studied.
And she's one of the few people that I interviewed
who didn't go like straight from high school into a
programming job, and which is something I can relate to,
(22:25):
I guess, And I feel like it's encouraging for other
people as well. I think Sophie, you probably had to
think you had a different career before programming as well,
and I don't think that's I think that's a story
that doesn't get told enough in my opinion.
Speaker 1 (22:37):
Yeah, I did not study computer science or do any engineering.
I studied history in college and I loved it. I'm
still a big history nerd. But I think, like many
people who have Loberal Arts degrees, as a day and age,
found ourselves sort of wondering, wondering what to do. And anyway,
I went through a programming who camp the father and
school where I went on teach afterwards. So yeah, I
(22:57):
think it's awesome to have an opportunity to be working
with people that have a diversity of background. You know,
not at all to knock folks that did come through
you know, SCS degrees and go straight into engineering, but
especially when I was teaching, it's just truly incredible to see.
Speaker 2 (23:12):
And I'm sure Bruce you can relate to this.
Speaker 1 (23:13):
You know, where all these people are coming from. You
And I've had students that were accountants or waitresses or
you know, just full time caregivers or marines or whatever
the case may be. And coming through and seeing the
way that they think about solving problems and the way
that their experiences and passions kind of informed you know,
how they approach engineering is it's really a privilege, and
(23:34):
it's really fascinating. Yeah.
Speaker 4 (23:36):
At that point, there's a show that was ongoing called
No Fluff, Just Stuff, and it was a Java show
and it went around to mid markets and it had
just an incredible amount of talent, including a lot of
my mentors. And one was Dave Thomas, one was James Duncan,
Davidson the Greater Event, and on and on and on,
Stu Halloway and one of the voices of closure, by
the way, congratulations to do. But we would all be
(23:58):
on a panel and we would look across and people
would ask what was your degree? And we had no
computer science, or at least no straight computer science degrees.
I was a closest. I had a degree in math
with a emphasis in computer science, well a math computer
science double major. But yeah, I completely agree with you, Sophie,
and I think that one of the things that we
(24:19):
lack in the elixri community is that breadth of perspective.
And like one of the things that I've noticed is
that your writing is different since it doesn't come from
that from such a such an academic background, it's a
whole lot more approachable for me. I found myself doing
research for topics on groxio learning and just finding your
(24:40):
you blazing a path before me, teaching me exactly what
I need to know so that I could I could teach.
Speaker 1 (24:44):
Also, that's yeah, that's a huge compliment because you know,
I think I've mentioned in the past, like with coworkers
and stuff. You know, we've done book clubs of your books,
and you know, if my writing is approachable, it's because
I'm always trying to convince other people like myself to
get into alixir and to find it accessible and exciting
and fun. Ye to realize that, you know, functional programming,
I think it has a lot to offer and that
there's a place for those of us that do come
(25:05):
from non traditional background because I think most people who
come through boot camps or you know, no, no, this
is obviously very anecdotical, but who are self taught. I
think we find our way into programming through more OO languages.
It just tends to feel a little bit more approachable.
Plenty of reasons we are lots of jobs and things
like Ruby and rails and javis growth. So those tend
to be things that people, you know, start to teach
(25:26):
themselves or that boot camps offer. Yeah, So kind of
doing what I can and what all of us can
to shift that trend a little bit and really put
forward to look or something that, in my opinion is
very beginner friendly and very powerful for people who are beginners.
Speaker 4 (25:39):
It's all about that pipe symbol, isn't it. When you
can think and transitions, when you can start to layer
your code to take advantage of that, when you can
name the concepts for the top of the pipe in
the middle of the pipe, things get a lot easier
to teach and to do.
Speaker 6 (25:53):
Yeah, that was definitely one of the more influential talks.
I remember watching Dave Thomas talk about thinking about programming
as data and the impact that the pipe had in
the elixric community, and that was I mean, I was
like five years ago now that I remember watching that video,
and I was just I was so amazed by that
talk that I just kept on watching more and more
talks you by him and other members of the community,
and then you know, more and more experimentation before you know,
(26:15):
I just haven't felt the need to go to any
other language for my day to day work.
Speaker 4 (26:19):
Is so todd You're also just an extremely gifted speaker
and teacher. I see you connect in like fifteen or
twenty minutes to an audience and just kind of own
the floor And it doesn't really matter what you speak about.
Can you talk a little bit about how you plan
it talk and how you shape one? Yeah? Thanks, by
the way.
Speaker 5 (26:36):
Yeah, So I figured out that I really like being
in front of a crowd and kind of like working
the crowd.
Speaker 4 (26:41):
So I think, like I'd really like to be a.
Speaker 5 (26:42):
Stand up comedian someday, and so I kind of approached
my talks more in that sense of like, if this
is not me talking to you, this is kind of
us having a conversation.
Speaker 4 (26:52):
And that's one thing.
Speaker 5 (26:53):
I had a really hard time with recording a Like
doing a pre recorded talk that I did recently was
like the exact same talk I probably would have given
on stage, but not having that back and forth to
like figuring out like oh, what's hitting, like getting the
nonverbals of like, oh, maybe people aren't understanding what I'm saying.
Let's expand on this A little bit more, or people
are leaning in, so like, let's talk about this a
(27:13):
little bit more. Found that really kind of difficult. So
I usually start, like my talks usually start with either
a blog post or just an outline of the topics
that I want to express, like this is what I
want to talk about, and I kind of work in
slides from there. And I think you gave me some
really good advice at lone Star Elixir twenty nineteen, which
was like turn it into a story, Like tell this
(27:35):
as a story. So I was talking about my sprinkler controller,
and I was really focused on like the technology of
what how a sprinkler system works and how you can
use nerves to build this. But there was a story
there which is like I needed a sprinkler controller from
my house, and like what would cause me to like
try to figure out how to build one versus buying
one off the shelf, and like that there's trying to
weave a little bit of a story and making it
(27:57):
more personal rather than just like reading a white paper
out loud is something I'm trying to get better at.
Speaker 4 (28:02):
So the comedy in your talk really shines through is
how much of that is extemporaneous and how much planned. Yeah,
almost all of it is extemporaneous. Sometimes it lands and
sometimes it doesn't. But that's the comedy business. When I
write the like when I build my slides.
Speaker 5 (28:18):
So if I'm like on my way out to the conference,
when I have my slides built, there's almost no jokes
or comedy or levity in them at all, and I
start working on like the speaker's dinner and getting to
know the people more and figuring out what they're talking about,
and try to figure out if there's a joke or
some sort of segue that I could put in my
slides from that, or if I'm talking on the second day,
figuring out stuff that happened on the first day and
(28:38):
incorporating that. And then some of it is just like
riffing on stage. But luckily I haven't said anything too
dirty that had to be cut, well, at least I
don't think I did.
Speaker 8 (28:46):
So this remote talk you mentioned was this hardware for
software engineers. Yeah, for very I think the talk covered
very good ground. It wasn't maybe it wasn't your most
dynamic talk so far, but I think it was a
good talk. Recommend people check it out, even if you're
not happy entirely. The content was good, and I think
we can link it in the notes. You've covered almost
(29:07):
all the basics current for making circuitry and what components
you might want or need for projects. And I imagine
this connects directly to nerves. So can you tell us
a little bit about your journey to nerves?
Speaker 4 (29:21):
Sure?
Speaker 5 (29:21):
So I started out being an Arduino programmer. So coworker
of mine years ago introduced me to Arduinos and showed me,
like how cool this stuff was. His little background in
that his father was an engineer that worked on these
robotic systems that like exist in factories, and he was
sort of explaining like, yeah, like the machines my dad
works on do a lot of the same things, like
(29:42):
the run these routines. And they started around six hundred
thousand dollars, and like, here's an Arduino that's less than
ten dollars, and we could do a lot of the
same things with it. And so I was like, Wow,
that's that's really important. I guess this is like a
really important evolution in technology. And so yeah, I started
out in like learning sensors and electronics through Arduino, and
then as I got involved in Alixer. I'll be honest,
(30:04):
like the first time I heard about nerves, I was like,
I don't know, I'm kind of I'm solving things with
arduinos that like, I don't understand really why nerves would
help me out. But then as I got more into OTP,
I realized, oh, yeah, like if I want to do
something really process or intensive, or if I want to
do more than one thing at the same time, this
is actually really really awesome. And so that's like what
sparked my interest, I guess in nerves. And I saw
(30:27):
some really good talks at Alixer KMF went from James
Smith that comes to mind, another one from Tim Mecklem.
We can link to them. I'll put links in the
show notes for that about people that were solving like
real world problems using Elixer on hardware. And so I thought, well,
let's give this a try. And I think my first
real in earnest project was the sprinkler controller, which I
called Drizzle two thousand, that I talked about at Monstar
(30:48):
Elixer twenty nineteen.
Speaker 4 (30:50):
It's it's really amazing how many deeply influential NERVES talks
there are you mentioned Tim mecklums one for the artificial
pancreas that was just absolutely stunning, and you've had some
really good talks as well. But Josh, the nerves talk
that I remember the most was yours, where you had
the oh gosh, what was the song that you played
I'm Never going to dance again or something like that,
(31:11):
you know, went to blinky and then give us smoking this.
Speaker 7 (31:14):
Oh yeah, yeah, actually I don't remember the song names,
but yeah, yeah, I'm gonna be stupid and just not remember.
But yes, I really enjoyed that.
Speaker 4 (31:22):
So we were stuck.
Speaker 9 (31:23):
We were stuck in so we had sort of a
blinky light and then an RGB and then a self
driving tank and then the parodi Ur drone and the Spiro.
Speaker 4 (31:31):
So like we made all this stuff work.
Speaker 7 (31:32):
It wasn't actually nerves for the most part.
Speaker 9 (31:35):
I don't think yet it was too early, but but yeah,
so we had we had just stuff interacting with the
harder and that was fun. But I was stuck in
hotel room with Robbie for like three days because we
had we gave the same talk in Portland and then
in San Francisco for the Airlink factory and so there
was no point like lying home and then flying back out,
so that gave us a lot of time to really
really drill into the music accompaniment.
Speaker 4 (31:54):
Yeah, that was awesome, But I think that there so
todd there's something too working hardware that that kind of
brings out the passion of nerds, Right, Yeah, I think so.
Speaker 5 (32:05):
At least I really enjoy seeing the product that I
have and like knowing that it exists in the real world,
like I could give it to somebody versus everything else
that I've ever built. Well, I shouldn't say that everything
else I've ever built with a computer only exists on
a hard drive in somewhere in space and could just
be taken down as easily as it was put up,
I guess. But having these physical things blink is, I guess,
(32:27):
really exciting to me. So I like woodworking, like outside
of computers, I like to build things with my hands
and woodworking, and I think I think they're all like
really similar types of work, Like there's a lot of
planning that goes into it, and like building an architecture
of things, Like in woodworking, we build a lot of
fixtures and jigs so that we can produce the same
thing over and over again, which is like exactly the
(32:47):
same as building a class or maybe a module in programming,
but it sort of gives you the same like creative fulfillment,
but at the end of it, you have something you
can sit.
Speaker 4 (32:56):
On or put your coffee on or whatever.
Speaker 1 (32:59):
Also really helps explaining to parents or elderly relatives what
you do if you have home. Finally something physical to
point to instead of just being like, well, you know
how you go on Instagram a lot, that's what I do.
Speaker 5 (33:11):
Yeah, yeah, I think for my kids, I think they
enjoyed it much more as well. Like I think they
take the Internet for granted and all these things that
exist on the Internet are like whatever, those just are
just there.
Speaker 4 (33:20):
But yeah, seeing these things.
Speaker 5 (33:21):
And I recently worked on a project and this is
the first one where I three D printed the case
for it. So I got a three D printer during
quarantine and decided to speak at opportunity to build something
and design my own case for it. And so they
get to see that and oh dad, what is that
and kind of talks gets us to talking about what
I do.
Speaker 1 (33:38):
It's really fun. Yeah, we also got a three D
printer during quarantine, but it is currently still sitting in
its various little pieces on the floor and as yet
to be assembled. So I'm gonna have to pick your
brain at some point because I think we're finding the
assembly to be a little intimidating.
Speaker 4 (33:53):
Oh all right, we'll come get back Sam.
Speaker 1 (33:55):
So I'm actually not the expert on this. My partner
got it, and I'm not like super involved yet side
from being told, I feel like I've complained about this
before on this podcast. Anything I now want to buy,
whether it's like the scale of a bookshelf or like
something smaller, I'm now told no, no, no, don't buy that.
I'll three D print it. But the three D printer
is like still sitting in pieces on the floor, so
(34:16):
so cute for more three D printing soon maybe.
Speaker 4 (34:19):
Okay, no, no, don't buy that. I'll build it with
the parts from the three D printer.
Speaker 1 (34:23):
Exactly, yes, right, just with the parts from the three
D printer.
Speaker 2 (34:27):
Yeah, very true.
Speaker 8 (34:30):
For a moment, I thought you said that there is
a lot of planing that goes into woodworking, which I
think is accurate. You were saying planning, But I'm suddenly thinking, like,
can we make some software theories of or methodologies? I
think it's good where we have like the planing and
the sanding face, maybe we build jigs. How can we
(34:51):
do like woodworking driven development.
Speaker 4 (34:54):
I pitched this as.
Speaker 5 (34:55):
A talk idea to Chris McCord and he's a woodworker
as well, and he said, I think there's something there,
but I don't think it's I don't think it's ready yet.
I think it's exactly the same. Like planing things and
standing things are like taking all the rough edges off
of your interface, right like your interface with with my desk,
you know, is the top of the desk, for instance,
and I can run my hand across it. It's nice
and smooth versus like in programming you can have an
(35:16):
interface like I could have this very jaggedy, sharp desk.
It's not well sanded, and it would also be a desk,
but it doesn't mean it's a great desk. And I
think there's infinite parallels. So maybe maybe I should get
around to making that a talk and then somebody Bruce
has to let me give the talk. You know me,
I pick great speakers and let them speak about what
they're passionate about. That's a secret to a good conference.
Speaker 6 (35:36):
In my book, it seems like woodworking is a pretty
common hobvier side activity for programmers, because I'm a woodworker
as well, and you could probably tie you in QA
phase to like hanging from your shelf and making sure
it doesn't collapse under your way, because then then you're
guaranteed that it'll hold whatever else you put up on it.
Speaker 4 (35:50):
Yeah, I think I think you're probably right. I think
it's it's really creative.
Speaker 5 (35:53):
It's really creative, and it's a good way to force
yourself to get away from a computer screen as well,
which is something I think us computer files have a
hard time doing. It's like we have this job that
we do all day, and then we have our hobby
which involves like moving to the couch and looking at
our computer screen and doing that.
Speaker 8 (36:08):
And I think woodwork, in gardening, those are a few
that tend to pop up now and then. And I
think it's just doing something with your hands that has
a real visible impact in the world. It feels good,
it's very satisfying, and it allows your brain at certain points,
it allows your brain to just go on idol, which
I think I think we all need some.
Speaker 4 (36:29):
Garbage collection is a lot easier in that world too.
Just the broom collector. That's there's nothing easy about that. Yeah,
you have a fancy dusk collector. Huh.
Speaker 5 (36:38):
I was thinking more like like, oh, this project didn't
work out, just throw that in the bin.
Speaker 1 (36:43):
I think we're getting to a point where we're just
about out of time, and what we'll like to do
to wrap up each episode is ask our hosts and
guests if anybody has any picks, any links or suggestions
or recommendations that they'd like to share, doesn't have to
be related to elixa programming. A lot of great recommendations
and links have certainly come up throughout today's conversation, and
(37:03):
we'll definitely be including those in the show notes. But
we'll just take a moment and go around and see
if anybody has anything else they'd like to share, and
why don't we take it off with Bruce.
Speaker 4 (37:12):
Yeah. I have a couple of picks. The first one
is that Groxio is going through the live view course
right now, so I'll leave a note for that. There
are a couple of free videos that pop up along
the way. And the second pick is Jose's company, dash
Bit released an authentication generator which is wonderful. Bit of code.
I think it's important because as we become a more
(37:33):
mature environment with Phoenix, we need to have a single
place where the important security bugs kind of get polished
and fixed in the same place. So there's a there's
a video that I made for the dash bit project
penix dot.
Speaker 2 (37:48):
Gin dot awesome, Thanks Bruce. How about you, Lars?
Speaker 8 (37:51):
Yeah, I have been doing some strange approaches to programming
while I've been watching my daughters sleep and making sure
stays sleeping. I'm actually leaving my friend to leave now,
so I actually do work at a computer now.
Speaker 4 (38:04):
It's great.
Speaker 8 (38:05):
But while looking for good solutions to work from an iPad,
I stumbled across code server, which is a vs code
for work I guess, which is suggusted to run on
a server, and if you expose it to the Internet
in a safe and responsible manner, you can actually edit
your stuff in the browser with a full vs code installation.
(38:26):
This also led into my recent blog post that's a
separate story.
Speaker 4 (38:29):
Code server is cool.
Speaker 8 (38:31):
Vis code has me a little bit disappointed because you
can't use all your extensions, so I guess we can
link my blog post as well. Code Server. You should
try it out. It seems good. I haven't tried it
heavily yet, but I probably would.
Speaker 2 (38:42):
Awesome.
Speaker 1 (38:43):
Thanks for that, Alex. Any picks for us.
Speaker 6 (38:44):
Yeah, So I got two pics for today. The first
one will be a shameless plug. I just published the
second part of my OTP as the core of your
application blog post series. So then I go over using
the registry, the supervisors gen servers, and you kind of
set up like an actor model based bookstore where you
use kind of the building blocks you have in OTP
(39:05):
versus you know, falling back to your database and just
having kind of like a traditional three tier app.
Speaker 4 (39:09):
So I think it's pretty cool.
Speaker 6 (39:10):
You should all check it out. My second pick is
a service called Plausible. I'll probably be transitioning the analytics
ortion of my blog to Plausible, just that I can
respect my visitors privacy. I saw Jose retweeting it as well,
so it's got to be good in that case. I'll
be probably switching that over soon. Those are my two picks,
all right.
Speaker 1 (39:28):
I'll go next and then we'll hand it over to Todd.
So one of my picks I'm having the kind of
a deja voo about, and I don't remember we've picked
this before, so apologies if we haven't, I forgot, But
there is a changelog video that came out I think
about a week or two ago, taking a look at
GitHub actions for your Phoenix app with Jonathan Clem, who
is Gethover, who works on actions. So it's definitely a
(39:51):
great video to check out, and it's really exciting to
see I have actions integrating with Phoenix analysers so nicely.
What else I've got two more for you? Oh, we've
got I think this was an Elixir Radar recently, so
I'm sure some folks saw it, but we've got Chris
Keithy's post on telemetry conventions, and I've become like mildly
obsessed with telemetry and all of the excellent, very cool
(40:13):
and seamless ways that Alexa and now Phoenix one five
just kind of work so nicely with telemetry and kind
of make observability a first class citizen.
Speaker 2 (40:22):
And so I was really excited to see this article.
Speaker 1 (40:24):
And if you also cannot get enough of telemetry and observability,
I'll do a shameless blood. Very excited to be speaking
on that topic at elexir Com for this year in September.
So if you're on the fence about whether or not
you should get a ticket for this year's alexir comf.
I mean, if that doesn't sell it, I don't know
what well. And then last but not least, I have
a non technical pick, which is a really amazing brownie
(40:46):
recipe that I made this past weekend. They're called Guinness Brownies.
It's a New York Times recipe. It's basically brownie's with
a whole can of Guinness in them. And they came
out so amazing. They kind of reminded me of I
don't know if anybody else had these, but like in
the l Memary School cafeteria, those brownies that would come
in like the little cellfrain wrappers and had that like
great thin layer of like fudge on top. They were
(41:08):
kind of exactly like that, but amazing, and it wasn't
too complicated. I'm not like a very fancy baker, so interested.
If you like chocolate, definitely check them out. And last
but not least, we will ask Todd for his book
Thank You.
Speaker 5 (41:20):
I also had plausible dot Io on my list by
Alex ale Scott to it first, and I want to
promote the talk that got me really interested in Elixir,
which was Chris Bell's talk at Alixirkov twenty sixteen called
selling food with the Elixir. So if you are just
poking around the elixir community, I would check that out.
I thought it was really really interesting. And lastly, I
(41:41):
want to talk about something that I launched recently called Divido,
which is an Elixir link shortener and it is all
built ready to be deployed to gig Alixir. All you
have to do is set one environment variable and it'll
be working for you. And that's at try divido.
Speaker 1 (41:56):
All right, awesome, Thank you Todd, and thank you so
much for joining us today. Stay tuned for next week's
episode of Electurema