Episode Transcript
Available transcripts are automatically generated. Complete accuracy is not guaranteed.
Speaker 1 (00:10):
Welcome to Alixer Mix, your weekly Elixer podcast talking with
members of the community. My name is Mark Erickson, and
today we're joined by Josh Adams. Hi, Sophie de Benedetto. Hi, guys,
and today we have our special guest, Mariano. Hi, So, Mariano.
Before we jump in and talk with you, which I'm
excited to do because we have a lot of cool stuff,
(00:31):
he's just to give an idea what we're talking about.
He's done some one awesome articles about react core and partisan,
which are two extremely cool technologies that are in the
Erlang and Elixer ecosystem. But before we do that, we
gotta say hi to Sophie. So, Sophie was a guest
last week and we're inviting her to join us as
a guest host today and see and see if she
(00:52):
see well, she'll get to test out if we're nice
enough to hang around with a little while. So, Sophie,
want to you Yeah, so, well, once you just kind
of give a little introduction to maybe a little background
to just for people who may be new to you.
Speaker 2 (01:06):
Yeah, for sure. First of all, thanks for having me,
super super excited to be joining you, guys. I guess
a little bit about me. I've been working with the
Elixir for a couple of years now, both just kind
of personally for fun side projects when I was first learning,
and then more recently at the Flatter and School, where
we've been doing some really cool things, I think with Alixer,
(01:27):
in order to provide our students with an in browser,
very full rich development environment. I am also part of
the MPAX NYC organizing committees, so I'll probably plug that
every now and then you guys will hear a little
bit about it. And yeah, currently sitting here in Brooklyn
staring at my dog, who is staring at me, and
(01:47):
that's going to be happening throughout the course of this episode.
Speaker 1 (01:52):
I know your dog is a somewhat famous mixing number
of appearances in your presentations.
Speaker 2 (01:56):
Yes, very true. That's credit to my partner, who is
an artist, and she draws all of the illustrations of
him for my slide decks, which is a really nice
way to get like a very polished look for free.
Speaker 1 (02:09):
Very cool. All right, Well, Mariano, I would love to
hear a little bit about where you work and kind
of what you're doing. Can you give us a little
bit of background.
Speaker 3 (02:16):
Sure, I'm co founder of a really small startup called Instadic.
We build tools that let non programmers or people without
skills be consume data, analyze it, aggregate it, change it
a little bit, and build visualizations like by solizations and
(02:39):
publish them on the web. And urbacans are all. The
first version was Irlang, the second version was fen and
the third one I'm starting to develop Alix. Here I'm
going through all the languages on the Beam and so yeah,
that's kind of where I work.
Speaker 4 (02:57):
I work from home.
Speaker 1 (02:58):
So nice, all right, And so I'm curious, because you
have had a lot of experience with the Beam, are
you currently doing anything in your projects that you're working
on that you're experimenting with React core and Partisan?
Speaker 3 (03:14):
Yes, I the previous back end was built on Record
and so yeah, it ran for two years in production
and the current one is not using as it runs
some Partisan, but it doesn't use.
Speaker 4 (03:32):
Any like cool features of Partisans.
Speaker 3 (03:34):
And the new one, the one I'm building with Elixir,
I'm planning to use Partisan heavily and maybe not reacor.
I have an idea for a new way of doing
distribution of load between notes, and I will that's why
I'm also interested in TLA because when you're working with
the like distuited system algorithms, you really want to be
(03:57):
sure that not only the implementation is right, but also
that the algorithm is right. So I'm going to be
basing the new architecture on partisan analytics here.
Speaker 1 (04:07):
Cool. So what is t l A.
Speaker 3 (04:09):
T l A plus is a programming language, a tool
for temporary logic of actions. Is created by the creator
of latex and also the creator of taxes, the distributed
consensus algorithm that kind of kicked off all the movement
(04:30):
about consensus algorithms, and he was fighting to get to
marry like the the sex symptons do you say in English?
Of mathematics and the expressivity of set theory and set
algebra with something that can be run and can be
used to prove algorithms. So he created this language called
(04:53):
TLA plus which is a language used to model algorithms,
and the the tool has it's kind of like a
programming language, but it looks a little bit like math,
and you use a model checker that checks that the
model you specified off your algorithm is actually right. And
(05:14):
it has like a brother or sister called I forget
the name CALC something which is a language that looks
more like a programming language that compares to TLA, and
it's I find it useful to as a There's an
expression that says that you should learn a programming language
(05:34):
if it changed the way you think about programming, and
I've experienced that learning like C, Python, Erlang, Lisp and
now TLA. Plus I've been following like I've read two books,
I've read all the blog posts online. I follow the
series the Lamper provides on his website. But I never
used it to specify anything, but already learning about it
(05:56):
and seeing examples already makes me think clearer about the
design before implementing it, and I want to actually try
to use it to specify algorithms.
Speaker 1 (06:07):
Interesting. So that's really cool. I think I totally agree
with you that there's a big benefit to learning new
languages or new frameworks or anything if it causes you
to think differently, just kind of challenges your mental model.
So I would love to jump into react core. Maybe
you can give us so maybe I think it might
(06:28):
be a new a term for a number of people.
It's so maybe you can just give a little background
about what it is and kind of how it works.
Speaker 3 (06:36):
Sure, so I will go with like a little bit
of history of why it exists. Many years ago in
software terms, Amazon published a paper Core called called usually
the Dynamo Paper, which specify the architecture they use for
their scalable highly available not consistant data store qivalue store,
(07:02):
and they specified what it's called the dynam architecture. And
later the people at Basho, a company that no longer exists,
decided to create a key value store, an open source
kvalue store based on that architecture used in Ireland. So
they created React, which is a key value store that
(07:23):
still exists now is like a foundation in a community
and is still being developed and used. And they used
this paper and implemented the architecture in Ireland, and at
some point they said, like, there's value in this architecture
outside of React, so they decided to extract the core
(07:43):
of React into a framework of its own, and so
they announced and published reaccor as an open source project
that separates from React, which React uses, of course, and
and other people used it, and you can check the
one from the top of my mind. But on the
last chapter of the series Resources, there's a list of
(08:04):
many things that use record, but Dalmatino deb which is
a time series database, uses it, and so many people
started using it to build distributed systems that follow this
dynam architecture on the Beam and me being interested in
distributed systems and being interested on the Beam, I started
trying to use reactcor and at some point, like it
(08:26):
was hard to get documentation, so what's the point?
Speaker 4 (08:29):
They started doing it.
Speaker 3 (08:30):
So basically it was like extracting the framework or the
architecture out of React, which which implemented a paper core
Dynamo the dynam architecture, and yeah, after that it became
its own thing, and I've been part of trying to
make it more popular because I don't know if people
like it, but I call it like the Ruban Rails
(08:51):
of distributed systems.
Speaker 4 (08:53):
It's the the easiest way to build.
Speaker 3 (08:56):
Together with Microsoft Orleans, I think there are the two
easiest ways to start building actual production ready distri the
systems on top of giants. Like you get the foundation,
you implement like the callbacks. You have like a skeleton
of the project, and you just put your code in
places and magically you have these properties of these systems.
Speaker 1 (09:17):
That is really cool. So thank you for that little background.
So baschhow was an arling centered consultancy, and you mentioned
that it went out of kind of they went out
of business as a as a going concern as a business. Yeah,
But what I'm really impressed with, like, so you have
a link to the show notes to the GitHub for
(09:37):
react core. It is under the baschow gethub organization. But
this is still actively being developed, like as of this recording,
the last commit was eighteen days ago. And so I
just want people to be aware that even though it
was created by a consultancy that doesn't exist any longer,
it still is actively moving forward and progress is being made.
Speaker 3 (09:57):
Yeah, I can add some context. So b sally React
is being used by many big organizations like the NHS
in the UK and BET three sixty five to name
some I can remember, and I think also the Danish
Health Ministry or something like that. So when when Basha
went out of business, these organizations wanted React and Reaccord
(10:21):
to keep being developed. So BET three sixty five bought
basho like what was left of the company and open
source everything and created kind of like a structure. I
don't know if it's a foundation or what that employs
people to keep developing React and Reaccord, so React it
has new features and has new releases, and Record has
(10:41):
new releases. And what happened when like when Basho went
silent and up until a couple of months ago, it's
that some people did some forks and now the like
the work that's been done in the community is to
like to merge all these forks and to have like
one official fork just the bachel Record before people may
(11:02):
if they search for reccord on X, they will see
reaccor reaccre and G and I have some forks too,
and many people have forks. Some research universities, one in
Germany and one in Portugal have their own forks, and
also Christopher Michael John has his own fork.
Speaker 4 (11:21):
We all have like forks.
Speaker 3 (11:23):
Now we are trying to like to merge it back
to one because it's really confusing for people.
Speaker 4 (11:26):
We are trying to do it.
Speaker 3 (11:27):
The ruven rates of these three decisions and when they
search for recordify like five six active forks. So you'd
say you're in marketing, Yeah, I'm I'm like the unofficial
pr of Christopher Michael John and like the unofficial cheerleader
of Reaccord.
Speaker 4 (11:46):
Let's say that's that's awesome. He needs, he needs pr
he needs He's awesome.
Speaker 1 (11:53):
So one of the things I want to highlight, and
one of the reasons we wanted to come on and
share some information with us, is you did a a
series of blog posts talking about react core and part
on Partisan. So using partisan is like the node connection
mechanism and doing an elixure tutorial, which I think is
really great because there might be a lot more documentation
(12:15):
around using react Core with erline just because of its history.
So I think it's great that you're doing some coverage
of how you can use Elixir with that too. So
maybe you could just give people an idea of what,
if what they would find by looking at the series
of blog posts.
Speaker 3 (12:31):
Yeah. So the biggest I think because I started doing
when I was implementing the vaccan on Reaccor, I started
like documenting my discovery process because it was for me
also learning, and that was like a really long read
me at some point, and then it became like the
Leader Reaccord book, and at that moment, Reactor with all
(12:54):
these forks and with also with Airline, we've all been
really fast at that point. Now it's kind of stabilizing.
And the code examples I was publishing were not building anymore.
People had problems with dependencies and stuff like that, and
so I did like a new update that was called
the Record Tutorial was which was basically just the code
examples of the Literary Record Book, but updated so that
(13:16):
they build and run again. And I noticed that all
the time the difficulties of people was basically setting up
the environment and making like the ping pong example. After that,
the hard part was just basically knowing what code to
put wear and what each call back meant. And the
third big big roadblock, but if you arrive at it
(13:37):
you're almost done, is how do you handle what's called handoff,
which is how do you might live migrate data between vinotes?
And so I always focus on the on the set up,
like get a project running and understand the concepts. And
when when people were trying to use my code examples
(13:58):
in ireline by migrating to them to elix Heir, they
they mentioned that they had really weird problems that I
didn't have, and I didn't know why. Then later I
learned why. So I say, okay, there there's this need
and and there was a tutorial a series of medium
blog posts by it's I think it's jip at the
handle on Twitter on reoccurring elix heir. But also they
(14:21):
got up outdated, and also they were just the code
of the callbacks, not like the a GID project that
you can clone and try to run. And so I
tried to update it again and gave a tutorial at
Elixir confet managing this year and next week I'm giving
it in listening to so I already forgot what you
what your question was.
Speaker 1 (14:43):
Yes, so we were just discussing kind of what some
of your blog posts cover.
Speaker 3 (14:47):
Oh yeah, so so what it course, it's still like
a short mention of what it is. I will I
will add this link to to that, and and then
how to set up a new project, and and then
what the codecs are and what code to put to
build that in memory value store is in ets as
a backstore. And the last one is how to implement
(15:10):
and handoff to migrate the keys from one winnow.
Speaker 1 (15:13):
To the other.
Speaker 3 (15:14):
So there is to be really practical and to give
you code, but complete code, not just like snippets that
you don't know where to put or you put somewhere
and it doesn't comply because something is missing. I want
to give you a whole project, so whiles I also
build a companion project that's called civil dev, which is
a de Qi value store I explained. But each each
step on the guide is a commit on the project.
(15:37):
So you can just check out that that commit and
see the history and see the defense. See everything I'm
telling you is actually a complete project that builds. I
hope it keeps building. For that, I build a dependency
that's called I don't know how. It's called unendo because
it's because the fork from Christopher for real core is
what's called unir, which is punished means to join, and
(15:59):
ondo missed means joining just playfords, which with this library does.
It is like an umbrella dependency that brings all the
dependencies in the right order, in the right versions with
the right over rights, so that you just get one
dependency and your project gets redcore. So I think that
was one of the biggest additions to all the documentation
(16:21):
that there is. And the other reason what I'm trying
to do right now is to build like a doctor
image and maybe a doctor composed so that people play
with clustering without having to do the tricks of having
different environments to have a cluster on the same machine
without clashing ports and stuff like that.
Speaker 1 (16:37):
Something I think people would like to understand is when
they hear about react core and they're thinking about their
own business situations or their own projects or problems, the
big difficulty maybe understanding how does this fit and what
kinds of problems? Is it's really good at solving So
I wonder if you could speak to that.
Speaker 3 (16:56):
Sure, yes, it's it's sad like a generic architecture. It's
like if somebody says, like, solve this problem using I
don't know, three layers architecture.
Speaker 4 (17:07):
It's really generally it.
Speaker 3 (17:08):
Doesn't tell you much and to know if it applies
and it doesn't apply. I think examples and like description
of generally what you want to do. The problem that
you should have when you try to use reaccre is
you want to build an application that you can horizontally
(17:28):
scale without masters. Usually there are they're masters or primaries.
There are two types of district systems, ones where each
note is equal to all the others, and when you
want to scale, you just add a new note and
the notes like rearrange who owns what. This is the
dynam architecture, and you have other architectures that are in
(17:50):
the middle. If you read the Big Table paper by Google,
where the cluster is split in two in three, you
have like CHUBBI, which is a consensus cluster with five notes.
You have the primary or master it's called master in
that paper that knows and then you have like worker
(18:10):
notes which handle work. But the one who decides who
works on what and who wants what is the master.
And whenever you want to do something, you have to
ask the primary, like who wants this? I need to
do something on this key?
Speaker 4 (18:25):
Who wants it?
Speaker 3 (18:26):
And it gives you the REPLI says no number five,
and then you can catch that resolution and top directly
with No number five. And at some point the no
number five might tell you I'm no longer working with
that key, and you can ask again. And so that's
like like recapitulating, if that's an English word. Like you
(18:47):
have this primary worker architecture that also distributed systems, and
but you have this more distributed system architecture where all
the notes are equal and basically they work with each
other to distribute the load and migrate the data and
decide who owns what reaccur is. The later you don't
(19:10):
have this primary worker or primary replica and distinction, and
and you want to build something that scales. Sazles I said,
you just basically when you want to scale, you and
then you know this new note joins the cluster and
the other notes give them slices of the let's call
it name space. Like you are working with keys. That
(19:33):
may be a key value store, then may be a
PUP subsystem. It may be an mttit wrocker. It maybe
be like a Cafka clone. It may even be like
like a chat system like a video game. Do you
call it room where you join and you find people
and stuff like that. Usually something where where you have
a key that identifies what you want to do, and
(19:55):
you you dispatch an operation on the key and the
data for operation and that, and then the system decides
which node works on that. So I already mentioned some examples,
like you could implement something like an mttit wroker with
it something like rabbit MQ, a key value store, a
pop subsystem, a web socket system, a chat room system,
(20:19):
anything that you can you can say okay when I'm
doing this operation. This key identifies like it's like another
identity of the thing. It can be the username, it
can be the session, it can be the channel for
for this, for this podcast, it's the meeting idea we
are using.
Speaker 4 (20:37):
So we will all land on.
Speaker 3 (20:38):
The same server, and that chamber server will keep the
state of our meeting.
Speaker 1 (20:43):
So it sounds like so it sounds like it's a
masterless uh Ring topology, except where it's like it's using
like a hash space, Like so I might hash the
keys and those get distributed among all the different nodes,
so I can just scale up by adding more nodes,
and there is no master. They just kind of like
repartition themselves. So then when I'm able to so is
(21:07):
the is a data value stored in multiple nodes in
case one of those notes goes down or is temporarily unavailable.
Speaker 3 (21:14):
Yes, that's called quorum based written rights, which is support
where we occur likely you have to implement like one
thing and you are there. Basically what you say is Okay,
I want to do this operation, and I want to
send this operation to three notes, and I consider that
this operation succeeded when at least two notes replied or
(21:38):
you can say I want to send this operation to
five notes and I want I consider it a success
when three replied, Or you can say I want to
send to one, or you want you can say I
want to send the three and it's assist when the
three replied.
Speaker 4 (21:49):
So you want to be really sure that it was written.
Speaker 3 (21:52):
And that's that level of consistency. You decide it's your
it's your like from your business domain. But the framework
gives you already this. You don't have to think a
lot about it. It's already supported.
Speaker 1 (22:07):
Yeah.
Speaker 5 (22:07):
I always thought of react core as back in the day,
there was the joke that any Bash of presentation must
contain the golden Hashering slide.
Speaker 4 (22:17):
Yeah, it's a sick react Core.
Speaker 5 (22:20):
I think a react core as the library that implements
that slide.
Speaker 4 (22:23):
Exactly that that that ring is.
Speaker 3 (22:26):
Maybe people will understand it if they never saw that
like the ring, or don't know what consistent hashing is.
Some systems or some architectures support what's called sharding, which
is basically when you scale, you decide like a slice
of your key space. For example, the users from the
A to the F go to this server and from
F to see it go to this other server. You
(22:48):
do the partition in the sharding manually, you specify like
the the ranges, and you configure it and you bring
new servers and then you migrated somehow the React core.
This ring is basically it's like out sharding and how
it does auto sharting trying to maintain a property, which
is each server on the ring should theoretically receive this
(23:10):
almost the same amount of requests as any other server.
You don't want one server to be handling like twice
or thrice the amount of requests the other one. So
what it does too, because record doesn't know if your
key space, for example, your usernames, you may have more
userness with A than with I don't know X. What
it does is you give the key the username and
(23:31):
it hashes it. And this hashing operation gives you an
uniform distribution over the like the space of possible values.
And that means that like statistically, all your notes will
receive the same amount of requests unless like justin Bieber appears.
And yeah, it's like auto sharting. If people understand what
(23:51):
charting is and don't know what consistent hashing.
Speaker 1 (23:53):
Is, maybe be good to jump in just mention what
partisan is. So that's another library they're using with this
and this, so part is and I just want to
make sure people understand can be used without React core.
It is a standalone library, but maybe can help us
understand what problem that's solving.
Speaker 3 (24:08):
Sure, So a little bit of history again, I like
to go over why something exists. So the beam provides distribution.
U seeing something called distributed Ireland, which is a protocol
that allows you to cluster virtual machines, and it provides
(24:28):
this property that you get a pied a process idea,
and then you send it a message and the distributed
Aline will do the work of finding where this p
is and deliver the message. How it solved is when
you join a virtual machine a being virtual machine to
a cluster, it will do what's called a full mesh,
which is every virtual machine knows about every other virtual machine.
(24:51):
And there's a property called medicals law, which is like
the number of connections between those growth. I think it's
eventually with the number of notes. So for a small
number of notes, you keep like a small number of
connections because each virtual machine keeps an open socket with
each other virtual machine, and it sends pinks to know
if they are alive or not for monitoring and stuff
(25:13):
like this. And this has it works great, it's transparent,
you send a message, it gets there. You can monitor
pits and other machines and you get a message when
they crash or they a crash and stuff like that.
But this has a theoretical or practical limit that depending
on the worklod you're doing, between fifty and one hundred notes, your.
Speaker 4 (25:32):
Cluster will start to do great performance.
Speaker 3 (25:35):
Because like if each note has fifty to SIPI connections
to other fifty notes and they are all pinking all
the time, it's a lot of it's a lot of
work just to be a cluster, and you have to
add the workload of your application on top and other problems,
like it's just one all the messages from one note
to the other to keep the serialization order of the
(25:57):
messages is and via one socket and up until earline
twenty one, each message was sent us one thing. So
if you send like a five megabyte binary, it generated
something called head offline blocking, which is like all many
small messages will like block behind this huge message up
(26:19):
until it was delivered and confirmed. And this was improving
our in our twenty two where they split messages in
smaller chunks. So this is the performance of this year
deal and improved with this. But still if you go
to partiesan dot cloud, you can see the paper and
the benchmarks where I'm getting ahead of myself. So Partisan
(26:40):
says like we want to try different like different ways
of clustering airline nodes, the different architectures, and one we
want to try different algorithms and different distributed strategies, because
sometimes you don't want to keep ordering between messages that
don't care about each other. You may care about all
(27:01):
the messages from one note to the other to be ordered,
but only for one username or for one session idea,
but for the others you don't care. Or you want
to have two channels open, one to send big payloads
and the other one to serve harbits and stuff like that.
And so what Christopher makl John built on his ongoing
PhD disease is like a Partisan which is re implementing
(27:24):
distuted airline as a platform where you can plug different
algorithms and different strategies and different membership algorithms at run time,
so you always use the same API, but at one
time you can change how do you want to like
cluster the notes, and how you want to keep the
membership information, and how you want to root the messages
(27:46):
and with that they you can choose like fine tune
at run time what's better for your workload. And also
because Distuit the airline is implementing its and it's on
the VM, it's not a place where you will go
to make changes or put like a logging line or
put like tracing, because it's like it's it's you don't want.
Speaker 4 (28:06):
To be touched in the VM. Also because if it crashes,
it croshes everything.
Speaker 3 (28:10):
And the partisan is implemented in Ireland, so it's like
it's cool when when the foundation you are on is
in the same language you're using, because you want to
like start traces and you can trace and you can
touch the code and try something new. And this is
like how partisans started. It was like, what if we
(28:32):
make applaggable distributed aline basically you we can try different things.
We can use it as a research instrument for people
to try new algorithms, new papers. What if we try
this workload? And what he did later to run the
benchmarks on these papers is to migrate Reaccord to Partisan
so that he could implement a KI value store and
(28:53):
benchmark like the Kivalue store running on Reaccord on distributed
ilin against reaccord running partisan and what was the difference?
And the difference is crazy because you're comparing see implementation
of this Stewart the airline tune for thirty years against
an airline implementation of this yearit that areline built by
your PhD. And the performance is better on the Partisan,
(29:16):
which is really cool.
Speaker 1 (29:17):
That is cool. So that is there's a lot there,
and so I will make sure we put links to
all of that in the show notes. There are just
so people are aware. I encourage them to go check
out your articles. You've created six at least so far,
and so we'll have all of those a link to
those blogs. But also I want to make sure people
(29:39):
are aware of you. You did mention this already, but
you have an open source project civil dB that people
can check out and experiment with, so they can actually
just get it running in and see the code how
it's all put together. And so I think it's an
awesome resource for people, like if you're interested in starting
(29:59):
to play with artisan or react core and you'd like
to understand how these pieces work together and how you
could benefit or build a system like this. Just be
able to more quickly experiment and see if this is
appropriate for your situation. It's a great resource to check out.
Speaker 5 (30:15):
Yeah, I'm actually really excited that you did that, and
also that apparently it's not nearly as much trouble as
it used to be when I was first playing with
react core, because I had to use like a three
release old version of Airline to even run anything that
anyone had online.
Speaker 3 (30:29):
Yeah. That My main contribution is to try to make
it easier and more accessible. I'm not the guy writing
the papers. I'm not the guy like doing the crazy implementations.
I just when I see something that's really good and
not many people are like finding. My partner is just
trying to make it more easier to try soon to understand,
(30:53):
easy to follow, and.
Speaker 4 (30:54):
Stuff like that. Accessibility, accessibility.
Speaker 1 (30:57):
Yeah, well maybe we could transition a little bit. I
want to talk to you about what you're doing with
the Earlin Ecosystem Foundation, so maybe you just mention a
little bit what you're doing there.
Speaker 4 (31:07):
Yeah.
Speaker 3 (31:07):
So I'm a member of the Working Group on Documentation.
We are trying to to unify a little bit the
tool set and the and the work of to start
Airline and elikx heir so that you have the airline
documentation available on Elixir tools also to try to because
(31:30):
we we I come from the airline community, we learn
a lot from leaks here and you have beautiful docommodations,
so we want to try to make use of all
these toolchain tool chain tool sets and styles and guidelines
and stuff like that. So we are working on ways
to translate because the airline documentation is like showtage, is
(31:51):
built on XML and will really long and weird tools
tool sets, So we are working on translating those XML
files into something that can be consumed by the Elixir
tool chain, so that it can embed documentation on the
Elixir ecosystem, but also so that we can render the
(32:12):
airline documentation on the kind of Elixir style, not not
necessarily like purple, but maybe red or something, but as
nice as the Earlixir documentation looks like. And this is
like the thing we're working on because the working group
is young and new. But after that we are going
to work on everything that has to do with making
(32:33):
it easier to consume and build and share documentation on
the being basically and not duplicate effort, there's.
Speaker 4 (32:42):
No sense to do it.
Speaker 3 (32:44):
And the second is the Language Interoperability Working Group, of
which i'm I will be if approved the chair, and
this is similar but instead of instead of being about documentation,
is it's about making it easier also to avoid duplication,
(33:07):
like the Airline language already has a snoder library, and
the Elixir library has a smaller standard library but really powerful.
And what to I'm talking personally here, not for the
other members, but what I would like to have is
that nobody else on the ecosystem has to create a
(33:28):
new like enome or a new list data type or
a protocol that they can reuse the Elixir ones or
they can reuse the Airline ones, so that whenever somebody
publishes a library that's useful for me, I don't care
which language is. Maybe I care, but I should care
the list possible so that we can move forward faster
without reminting the will. And also personally, I think it's
(33:53):
interesting for the BIN to be a platform to try
things like I really that's why also I do the
recre and partisan things because I would like arline to
be like the target platform by default to try new
they the system things, and I would like also it
to be the target platform to try new programming language paradigms.
(34:18):
How would it look like a programming language that abstracts
over distribution and stuff like that, where Christopher work on
last which is kind of like that, but I would
like to push it so that if you want to
try a really crazy programming language concept, you have so
much already fit like like kind of like recre but
for languages, and what we are working at the beginning
(34:38):
is to make it easy for people to use Elixir
libraries on Earland, for people to use Elixir structs and
protocols on other languages in general, and what else those
are like, and also the unified There's many people working
on the id integration for languages for ELIXI for Ireland.
(35:03):
Try to get them all together and also not remain
the wheel, so that there's a platform and when somebody
does like a hobby programming language for the Beam, they
just plug into some callbacks on their language server and
they get instant integration with with an ide with resource
studio code for example, and they plug in something and
they have nice documentations, so we want to make it
(35:26):
easier to share inside the platforms.
Speaker 2 (35:30):
Really cool. Yeah, having read your blog post, Sanriaccor, just
ahead of today's conversation, I'm like not at all surprised
to hear that you're involved with the documentation working group,
because I feel like you're writing had this really nice,
like sort of didactic flavor to it, like all the
setup stuff and all the dependencies were taken care of,
and you know, having been a teacher myself, I'm like
always trying to strike this balance between giving you everything
(35:52):
you need that you can focus on the actual hard part, uh,
you know, without making it too easy.
Speaker 4 (35:59):
Yeah.
Speaker 2 (35:59):
So it's really and exciting to hear about what you
guys are doing by way of documentation. And some of
the alets are Arline interrupt I mean, I think you
sort of already spoke to this, but I just be
curious to hear your take on, you know, why this
is something that we need in our community and the
electric community, in the being community.
Speaker 3 (36:16):
I think I was really as I said, I was
part of I am part of the Arline community before
Elixirs existed, actually, and I there was a lot of
people and new people coming in like complaining about the
problems that Erline had, which were kind of all solved
by elis here in a sense. But at the beginning
(36:39):
some people on the arline side got defensive, unlike they
are still in our thunder. Let's say, they are still
in our virtual machine and oral libraries, and they are
saying that it's like a new language. And there was
something to that, like there were people like wrapping libraries
with like fifteen lines of code and not in the
(37:00):
underlying library and stuff like that. But after that, I
think the airline community understood that Elixir was this breath
of fresh air and this impulse.
Speaker 4 (37:10):
I don't think I'm saying.
Speaker 3 (37:12):
Something new when I say that the Elixir community is
bigger than their own community and this process of okay,
they have something to teach us, and they are building
stuff that's really cool, like like tracts, like protocols, like
documentations like also culture like attitude and attitude.
Speaker 4 (37:31):
Beginners and ease of use and stuff like that.
Speaker 3 (37:35):
And I guess to generalize it to make it work
also for smaller communities like LF and any other new
language like Glean, like Alpaca and closure, which is a
closure implementation from Ireland. We want to everything that the
Airline community has and learned, and everything that the Elixir
(37:58):
community built and knows and learns, to unify or if
to not duplicate, to not fight, to push forward as
a platform, and to provide all of these learning and
resources and tools to these smaller communities that are trying
some cool stuff so that they don't have to like
implement a language server, implement a documentation tool chain, to implement,
(38:19):
to implement like integration with documentation from Marline and stuff
like that, and to make it like like the Being
community be something that where we are all like we are.
Somebody may be part of the Glean community, but we
are all part of the of the Being community. And
and we don't waste the fourth because there there's a
lot yet still to do and it will be a
(38:42):
waste of efford if every single community is reinventing everything,
and if we are also if you are, if we
are non interoperable in the sense that I see a
cool library that implements like some crazy algorithm, but it's
implemented a podcast, so I have to like implement it
again because.
Speaker 4 (39:00):
I can't use it.
Speaker 2 (39:01):
Yeah, I'm definitely pro anything that's good for the community
and allows me to be lazier.
Speaker 4 (39:05):
So yeah too.
Speaker 1 (39:08):
All right, well I think we're up on time. Thank
you Mariano for coming on and talking with us. So
let's go to go ahead and transition to picks. Josh,
do you want to go first? Sure, I need to
grab the link.
Speaker 6 (39:19):
But there's a talk that I found out about when
we were talking right before this podcast, and that's my pick.
I have not watched it yet, but it is rewriting
get hub pages with React Core, and so it's on
like today's watch list.
Speaker 1 (39:32):
Anyway, that's it for me, Sophie.
Speaker 3 (39:35):
Yeah, I have two.
Speaker 2 (39:37):
So one is a blog post that a coworker of
mine just published on our sort of engineering teams blog
on Medium about how to compose queries and ecto, And
I just thought it really made something click for me
because I feel like it just took me a really
long time to kind of grock ecto and kind of
(39:57):
have it feel as natural as working with some like
record and I feel like I've built you know, composable
queries and a rel and you really loved how flexible
and dynamic that that kind of was able to be
and didn't really feel like I could get to that
same place with ECTA, and this was just a really
nice post that felt like a fun read and helped
make a lot of things click for me. So definitely
(40:18):
recommend checking it out. And secondly, non programming pick. So
I should preface this by saying I really loved to put,
but I don't like to bake. It's too exact. You
have to follow a recipe and I'll mess it up
every time. But someone recommended this very fancy looking burnt
bask cheesecake recipe to me, and it is the absolute
(40:39):
only thing that I've ever baked that came out looking
exactly like the picture. So whether they're baking or you
just really want to impress your friends at a holiday party,
definitely check out this recipe.
Speaker 1 (40:50):
Cool all right, I've got two. One. It was a
video I watched yesterday. It was a ten minute video
on YouTube that was with Francesco Cessarini. He's with the
Erlang Solutions and it is a great art, a great
little video. He's talking about immutability, and immutability is especially
(41:11):
when people are coming new to functional programming and that
kind of mindset that can really struggle with it. But
he kind of goes through how it works, the benefits,
and along with mutability, there are times when you want
to use mutability or immutability in the different situations. He
kind of talks about those. So it's a great resource.
(41:32):
The other one, I got this from a coworker. I
love this is it's a declassified short CIA manual on
sabotage from nineteen forty four. So immediately there's a whole
bunch of it that is just not applicable.
Speaker 3 (41:47):
You know.
Speaker 1 (41:47):
It's like, you know, talking about how cars work and
you can how you can pull certain cables off to
make it not work or something like that. But this
there's a section titled general interference with Organizations and production,
and that is totally relevant today. Now I'm not suggesting
you sabotage your organizations that you're in, but instead check
(42:07):
it out and think about how of the people and
the places where you've worked and see if you see
some of these same behaviors. So I'm just gonna list
off a few of them because they're funny. So, like
one says, insist on doing everything through channels. Never permit
shortcuts to be taken in order to expedite decisions or
when possible, refer all matters to committees for quote, further
(42:29):
study and consideration. Attempt to make the committees as large
as possible, never less than five. So if you start
to see these kinds of patterns in companies where you
work or anything, it's like you can kind of read
this and say, oh, I should do the opposite. I
should make sure we're having small committees and people can
take shortcuts to make sure things get done faster. And
(42:50):
so it's just a fun one. Like another one is
bring up irrelevant issues as frequently as possible. Maybe you
know that guy or gal who's does that in the meetings.
You know, maybe you're that person. So maybe.
Speaker 5 (43:00):
But also if your goal, if your goal is to sabotage,
it's also a useful reason.
Speaker 1 (43:06):
Yes, So those are two fun ones to check out. Mariano,
how about you.
Speaker 3 (43:11):
Yeah, So, as I mentioned previously, I have to say first,
I'm not a T d D guy. I'm not a
test first guy or a heavy unit tester, but I'm
really interested lately in like there's like a spectrum of
testing from unit test integration tests, but I'm interested more
(43:31):
in the in the other side of the spectrum, which
is a property based testing and specifications. And so for
property based testing on arline you can use Proper and
I think there there's a wrapper for Elixir too. And
there's a really good book called Property Based Testing with Proper,
(43:52):
Erline and Elix Heir from Fred Hebert I hope I
pronounced his last name correctly, and which covers how to
use proper, to use property based testing with aliabory called
Proper and further right on the spectrum is t L
A plus, which I already mentioned, and the book is
called Practical tl A plus by Hillel Wayne, and it
(44:15):
teaches you how to use t L A plus.
Speaker 4 (44:17):
And these other language that I remember the name.
Speaker 3 (44:22):
Let me see plug plus CALC classical to specify algorithms
in like increasing levels of complexity, and to use the
model checker to check if your implementation is correct. So,
as I said, I guess everybody should explore the whole
spectrum of how to test and specify, specify your algorithms
(44:46):
and find like the sweet spot. I think all of
them are useful. I think the further like to the
specification side you go, the more is a tool of
thought of design.
Speaker 2 (44:58):
More.
Speaker 4 (44:58):
Maybe you don't like the specification or maybe you don't
keep it up to date.
Speaker 3 (45:03):
But the fact that trying to fit your mental model
into like a model that can be checked mathematically, even
if it doesn't even compile, should give you a better
a better model to start with than like some boxes
and arrows on a blackboard.
Speaker 1 (45:20):
Great all right, o, Mario, I know. Thank you for
coming on and sharing with us how people can be
using react, reactor and partisan and for your blog articles.
I appreciate that. So if people would like to connect
with you online or follow you, where should they go
to do that.
Speaker 3 (45:35):
I'm Wadian no Gara like my name but with a
W at the beginning on Twitter, and I'm Maria Nogana
at GitHub, and I'm Marianogana dot org on the web.
I in my Twitter account, I talk mainly about soft
like it's another I don't talk about other things, maybe
allow of music and politics sometimes, but mostly about software.
(45:57):
So it's a central point to follow. And my blog
is mainly posts of technical content both of those, and
my gidthub is full of repositories that are long dead,
but you can check there are some active ones.
Speaker 1 (46:12):
Great. Well, that's it for today. Thank you for listening
and We hope you'll join us next week on a
Lexer Mix