Press "Enter" to skip to content

How good is ramda.js?


we should and we should we just say this
in the beginning that this episode is an
episode we really should just keep it it
on in the background it’s like if you
like the soothing sound of people
talking Randa it’s like it’s great good
Monday morning today we are going to do
like the number one request on the fun
fun for a night and I never like there
is an episode requests sub forum that I
never look at but we’re gonna do that
today
finally and like by far like people want
us to do Ram de so we’re gonna do rammed
up what is Randa random is a functional
programming language with like its it
has a ton of functional programming
waitwait function is it a functional
programming like Java Script like a
language
I meant library okay yeah so most people
are aware of the some of the functional
utility functions that are built-in in
JavaScript like map and reduce and
filter what else those are not really
functional utilities like I’m talking
like actual helpful functions that do
things like and but there are actually
Tom’s more you can use are composing
functions creating pipelines like there
are so many so much there little things
that you can do and Ram there’s a
library that has all of these so it can
be is the library that can be very
helpful but it’s also library that can
allow you to create like absolutely
insanely not understandable code at all
which is colloquially referred to as
rammed
golf it sounds promising
yeah it’s so like the I think await
useless episode where we did it better
by using promises instead of the sink
awaits impacts talk about that episode
though derail me a lot we did not manage
to make like a cook that’s an episode
where it completely managed to not make
my point with anything yeah yeah you win
some you lose some
I think this episode is sponsored
today’s sponsor it’s launched darkly
launched darkly do you know that feeling
when you’re releasing a feature and the
information that you want is in five
different places what if there was a
single place where you could get more
visibility and more control launch
doctor you have teamed up with Atlassian
so that you can see your feature flags
next to your related JIRA stories and
issues read more about how to combine
JIRA and launch Gartley at launch darkly
fun fun function dot-com that link is
also in the episode description okay
whoa
just one thing yeah this is a very very
boring design something tells me Rhonda
is not made by designers no not quite
good yes it’s made by functional
programmers yep yeah actually there was
a tweet the other day that someone that
said that how could point free
programming not be called functional
programming that would have been so much
more fun and are you said that yeah this
is why Haskell programmers cannot have
nice things like it’s it’s just like
they they’re it’s it’s this community
without no sense of humor so it’s a
practical functional programming for
JavaScript foreign air programmers let’s
just have a look at the documentation
you know let’s actually just go let’s
build something with this we can just
they have some yeah let’s just build
something yeah okay so let’s just I
guess I guess if we can have a list of
things is that a good use case yeah yeah
exactly just start with that
like manipulating lists brand our
examples so let’s just do the basic one
first and like just do map like map in
the RAM no way so first of all we we
need to pull in RAM de and cons are
require lambda and it says how you do it
oh no this is how you do it there we go
sir
oh yeah now we have Rama and then we go
our dogs like ordered map and then we
extract like the property of something
like name you will just import something
some data yeah let’s start with some
data so we can just let me send you a
check
oh yeah that’s good reader returns a
gamma deviate by the method of Marsala
and sang yeah thanks
what does that what is that even when no
this is just random numbers and
this was the worst David yep okay
something more we call five buckets of
data all right so a map I’m gonna name
this function map names so now we have a
thing that will gonna extract the name
startup so I’m gonna like do like let’s
say dragons honest and this is gonna be
an array and each item is gonna be like
oh come on
it’s gonna be John and then we are gonna
have like this gonna be named love
Feakins and I also want to dragon that
is named dick there we go this is just
there is a scroll down there’s a data
set with just counties in the US
so you see counties oh yeah yeah okay so
I don’t know what topic JSON is how can
i how can I import this oh can I should
I just fork it good question
oh no good use the populations use
population since that okay oh that’s
good
alright oh this is pure array right oh
populations d3 is not defined let’s find
that yeah if you being confused about
what we’re doing here with observable
it’s observable is kind of like jsfiddle
or code pen but it’s more oriented
around data and it and visualization of
data yeah and it it’s very very powerful
and both me and David or fans it it
seems a little bit magical at first
glance it’s really not and we you we
really like it so it’s an JavaScript
notebook if you’re familiar with Python
notebooks yeah which that’s s yeah
anything perhaps only data people yeah I
also like to think of it as Excel for
JavaScript but like a more powerful
Excel that allows you to see over script
and allows you to do react like things
in HTML and it allows you to add sliders
in Lalibela
things yep it also like it’s very nice
whatever NPM module whatever yeah
everything so we can use doom and also
if you look at the populations you can
just because it’s you can just fetch
data from somewhere so someone published
this see you see somewhere and then you
can just fetch that and use that very
simply yeah that’s very nice so let’s
have a look at this so this is what we
have here we have like an object that
has an ID and a population so it’s just
okay I’m gonna remove my stupid example
here so now I can go like I have this
function here that I created while you
were gone
called map names we’ve gonna I’m gonna
just change this to map like X
population and now I can use this to do
like map o population and now I can do
map poor relation god I’m tired today
I’m always tired
like when we do these things it’s just
like that’s just the the thing that we
how we roll
populations there we go
and now I get like an array of these
populations yeah and so that looks very
much like what you would do in
JavaScript
well yeah like what you would do with
like the function that is built into the
array object yeah that’s right and it’s
season mmm see if we can I’m gonna
inline this instead and just do our map
and then I’m gonna grab this inline
function here I’m gonna do like that and
then pull relation it’s there
so I don’t know if you notice that
because like when I I could actually use
like the map function immediately after
reassigning it so I could
I basically was doing this mmm see like
just create a block so that it’s easier
to see mapper final map funk now we’re
there and yesterday a Const and then go
extract population I’m gonna return that
and that gives us like this very same
yeah so this automatically happened like
this is because Ram da all random
functions does this like they ought to
carry themselves and that allows us to
reuse them in in pretty nice ways we’re
gonna be talking about more and along
the lines like where that is useful but
perhaps we should do that immediately
yeah so what so for me that hasn’t seen
rounder before yeah it’s still like okay
you used map yeah which I already had on
population yeah so like so what more can
I do here like could it’s the thing with
Randall that you can like do this on
everything yeah let’s have a look
actually at before we continue like just
let me show
like the kind of utility functions that
you can sort of expect from random let’s
now its plot then looking at returns a
new desk by plucking the same name
property of all objects in the lists
supplied so this does exact this plot
method here no plot function this this
will do exactly what we already did
let’s have a look at extract population
so I think just comment this out and do
our dot plot population and there we go
and then we get exactly the same result
yeah there’s also like this there’s also
method a function that does exactly what
this does for example so I could do not
say that comment there and come with
that out put that there and then I’m
gonna do
oops or a map and then instead of doing
this function I could use our dots for
all like populations and that gives us
the same result so these are not like
the stupor best examples because they
don’t save like a lot of code I think
they perhaps make the intent a little
bit clearer as long as you know Ram de
that is but like in some cases this can
save you quite a bit of writing new
functions so even if it’s the thing that
you’re writing is rather simple such as
extracting like this little black thing
it’s still nice to not not write
everything right even simple things from
scratch because as long as you’re
creating just some code that means that
the more things you have that can go
wrong the more things will go wrong so
if you have the ability to use in an
existing functions that is often a good
idea maybe then again
then again it might also be like very
nice to just see like something familiar
so that is why I rammed I is sometimes
good to use and sometimes not but my
main the reason why I used it like this
our map and prop here is not not to give
like a super good example of what Ronda
it where Rama is useful it’s give you an
idea about what lambda is and but I
allow you to use familiar concept to
reason why would I use it for like when
when would I feel like hmm I better use
Randa like when what kind of things do I
get stuck with to feel that hmm Ramdas
perhaps the choice to solve this problem
it was or is it is it more like a
concept that if you’re invested sort of
in the RAM de world you sort of start
building everything in Ronda yeah poor
is a kind of sort of like that I would
say it’s sort of like if you’re used to
writing promise changed change them them
then instead of doing that I think await
sequential well synchronous you know
writing or is that the thing is that
likely like that comparison let’s
actually talk about promise chains a
little bit because promise chains are
per definition functional right and you
go like then then then then like all
right I’m gonna fetch a Buddha yep I’m
gonna go fetch some water we were
after last week I announced the fun fun
function sticker pack there’s a lot of
stickers like I’ll semicolons cannot
save you if JavaScript doesn’t make
sense there’s a coffee break sticker
there’s a hello I’m a rocket surgeon
there’s a fluffykins sticker also
featured all briefly and this earlier in
this episode there is a oppressed enter
really hard and it works and I heard
oppressed oppressed entered that will be
for the next batch oppressed enter key
and then there is a typing is charge
sticker there is a circle circle CI
sticker and there’s also a god this is
exhausting
there’s a murder robot dog sticker that
I really like and there is also of
course a good one and warning sticker
and there’s a pusher sticker it is like
this is a pusher sticker
alright come on come on focus focus yeah
fun fun real-time so our sponsor pusher
this is a software-as-a-service product
for doing real-time features to your app
and stuff like that and of course
there’s a fun fun function logo sticker
how can I get hold of these amazing
stickers yeah they all will be sent at
the end of this month to everyone who is
a super patron so you need to become a
super patron before the end of this
month you can find a link to how to
become a super pregnant at the the in
the episode description oh no hang on I
haven’t eaten my boule out you bastard
no but I’m reflecting oh yeah yeah okay
I’m reflecting okay so I’ve been
watching that small small small code
snippet and trying to figure out like so
why wouldn’t I use map in this example
and I don’t know anything about or still
but it seems that the whole purpose of
it is sort of like a convenience library
sort of like underscore or low – yeah is
that right
actually did it’s exactly like
underscore no – actually so I thought
ram des was so like I don’t know instead
of like a streams library pipeline
library or something like that so I had
I didn’t know what what it was really
but if I think of it sort of like what
I’m used to with
to score and low – which is basically
just a utility library I see that I
don’t understand it yet but I suspect
that it’s pretty clever and generic that
instead of just having that dot map that
is attached to the – all arrays in
JavaScript you can do the random app on
pretty much anything because you just
tie whatever function – it’s like it’s
or a more general no that’s what I
thought why were you were fetching their
puller no I guess and it’s it’s a lot
more composable also I would say I think
that we had actually in order to like
why wouldn’t I just use the filter and
map and stuff I think that we should use
something that isn’t available on the on
the array object and we’re gonna combine
it with map and filter and chain it so
let’s have a look I’m gonna remove all
these stickers from my face so it’s
pretty funny that you didn’t see like
because hangouts is a piece of shite you
didn’t see yeah I have no idea what you
did I sort of suspected what you did
yeah let’s let’s look at the RAM de
government in you see if we can find any
interesting thing here what is take last
while returns a new list containing the
last n elements of a given list passing
each value to the supplied predicate
function and terminating with a
predicate function returns false okay so
it’s basically walking through a list
and then once we hit whatever condition
we return the rest yeah it’s actually
it’s actually it can actually walk
through a func tour so again what func
Tories yeah it’s the general version of
an array so functor is something that
you can map yeah so as you see here an X
in the example you can also do it on a
string yeah so it takes last while it’s
not
so this is here it takes last while it
is not our and it takes the string Ram
de and then that becomes M de so this is
one of the nice things about Ronda is
that you can it operates on not just
erase but anything that is a punker and
to do that in ordinary JavaScript you
would like first you would take the
rammed a string and then split it to
turn it into an array and then filter it
I guess yeah actually late oh you will
you will map it and then yeah how would
we do that yeah actually let’s just do
that
various playing around here like so we
have this thing here and uh let’s try to
re-implement this in in manila
JavaScript how would you do that can I
can I pin this yeah so we have this
thing Const you’re doing start with the
array okay
the string no I have the string yeah so
then you would split that with an empty
string yeah exactly we don’t have to we
have to make it into an array first so
it’s like spring split yeah
no no oh yeah yeah exactly yes like that
yeah and then we have okay so now we
have this as an array and then we’re
gonna take the last one while we okay so
again we will have to reverse it first
right No
SMAP we killed you either way we could
just like but we couldn’t do math
because if as the string was we want to
because the first occurrence of whatever
of the or should just terminate so like
my initial hunch was like okay we do
array dot map yeah and then just return
everything but capital R oh and then
like remove but what will happen if we
had rammed our then we would get am door
so that doesn’t work because then we had
to loop through it we would have to
terminate mid map oh yeah I guess mm-hmm
we could I don’t know how that we work
or we would have to have like a memory
somewhere we could perhaps I don’t even
know would you perhaps to reduce it to a
new array that would just concatenate
until we reach some mmm well I mean
couldn’t we just like okay let’s see I’m
just gonna take the if we just reverse
it what happens am de and then we just
keep taking like we’re just gonna call
create a new array and we take our dot
for each like some kind of weird bastard
difference
Frankenstein’s monster between
functional programming on procedural but
or for each item or character I guess if
all we need to declare the predicate
here as well
I says even call the predicate the
callback this one predicates perhaps
pretty good call like let’s call it
callback so if the 4-h if if the
callback is oh I’m dumb what are doing
that now if callback char yeah
collected push push and then we push the
item or the char and then we returned
collected that work yeah but then we ask
what happens if you tie what happens if
the string is does it work with the R &
R that’s just proof that so you add an
capital R at the end
REM door like that with a capital R yeah
it does yeah so this is like a real
this is how I would do it sort of
without it I think we yeah we could what
let’s write it using reduce so array
reduce or we start with and then I don’t
know yeah or you’re right that the last
yeah exactly they the we start with an
always keep remember like it’s pretty
sure that yeah something like that
and then for so car it’s gonna be the
current is gonna beat shower and then if
call back sure then we return the OH
then we return prayer but we concatenate
on the char if else then we return we
just returned prayer I think so work
return yeah that’s right Wow did that
work they just write like a reduce
correctly from the beginning I’m
skeptical I think that works yeah
actually I did
that’s weird yeah I did yeah it’s not
quite right though because it’s in the
wrong it’s ad MA it’s already I’m de
because we’re like this last reverse
signal for yeah so we could cheat I
guess we could write it in the reduce if
it somehow figures out that it’s last
index or we could just reverse it at the
end yeah that’s right reverse so yeah so
now we have the this out then we get rid
of like this and the statefulness
procedural mess here so now we have sort
of implemented this I think yeah we can
actually just write this as a function
now so it can do function take let’s do
this
we’re gonna call it like callback and
no yeah let’s let’s call it array
because this except to really array
right now you know I just indent this
nicely there we go
and now we can do return say last while
and paste in its callback and then do
the yeah exactly what string split
reverse there we go
yep I’m not it works we actually need to
join it as well oh yeah so drawing
whoops but not with commas yester empty
string so there I’m not and let’s
actually take last while string so and
let’s have the string here string and
then do this then do this processing
here first take as well alright so now
we have reimplemented what Rama does so
it’s like not a ton of code especially
like we could like make this into a
one-liner I think with an arrow function
and like this is this is very recurring
in Rhonda it’s kind of like it saves you
like ten side lines of code here tens
lines of code here
but over time it tends to like add up a
lot so like normally it’s not the the
map and the prop and the things that
save you a lot of time it’s like stuff
like this it’s just it’s just pretty
handy and it’s also nice that you can
just throw in a spring in it and you can
throw in an array in it because this
thing here this doesn’t have like we
can’t throw this is not as generic as
take plus one so are you saying that we
could what would happen if we in there
or take last while would input an array
instead of the string that works is it
that generic yeah this one yeah they can
handle both strings and and erase I’m
not sure what else it can handle
honestly like if it can it handle
iterators I’m not sure I don’t know
hypothetically I think that Rande wore a
library like Ram that could be used to
him like implement like handle iterators
so that it could go through like you
know streams or anything or like note
lists in the in when I queried the Dom
yeah exactly
stuff like that or argue their arguments
object in in functions and stuff like
that order whatever now okay so for me
now our same Ram Dass seems like a
convenience library great but and okay
it had or take last while which we just
happen to pick randomly yeah but what
would happen like when would I feel that
like okay this was handy but I don’t
still see there the the big power of Ram
Dass yeah like to me this just looks
like an underscore or low – alternative
but I don’t see what makes it more than
those yeah okay so let’s let’s try to
attack that a little bit and for me
composable
yes it’s a lot is one of the more
interesting things with it let’s see if
we can figure something out
yeah explain what you mean by
composability yeah so let’s say we have
this populations array here and so we do
poor you lations and then we go like
okay yeah cool
some oh yeah thousand instead of 3,000
yeah to one and let’s then we’re gonna
do like a I’m kind of like thinking that
I want to get like take last while in
here it’s kind of like a stupid example
but let’s let’s imagine that it was so
much change edit populations go to
populations yeah and just output state
and county and they because they are
strings and perhaps we could just say
that as soon as we reach one stage oh
yeah so then just comma state : Road
upstate in the map there no state okay i
yeah so now we have state here and oh I
had hoped that it nicer State yeah but
that’s fine it’s not fine since the
state is gonna be stringing OH – so
let’s say that we want to just keep
running until we hit until we hit a
certain state we could do that with
filter I suppose but suppose that we
then suppose that the condition was
something else and then like if this was
a promise chain we could have done we
could have done then right but there’s
like yeah but there’s like no way of
processing in a chain here you get me
you know you just get a new array yeah
exactly so in order to do that I would
have to do like Const filtered
populations and then I would have to do
populations which is I mean it’s it’s
not horrible let’s just let’s break that
out into its own I yeah let’s
no I’m just gonna like actually execute
it and it’s state equals okay and we
need to actually have this take last
while string oh no we’re gonna do or say
plus 1 T is not
sure where is tea that confuses me
– what or take that’s why now we had it
the wrong way you should you have the
call back first oh yeah yeah yeah right
because in in functional programming
languages the this is always like the
the filter is always a function what the
callback is always first okay that
didn’t work that take less while I did
not stay oh wait we need to go back to
the last one how many are there a
thousand okay okay let me remember going
back to the last one yeah let’s just let
me quickly reverse it this is what why
observables so nice D relation stopped
reverse and it’s 56 oh yeah
no didn’t work no I thought that this
would work oh yeah because why doesn’t
this work
perhaps there are no in populations it
doesn’t have anything less to take
because there is no state 56 is not in
the list after you filter it but it is
in the list like I remove the filter
here oh okay sorry population but yeah
that was exactly well thought as well
but is it that triple equals not nothing
about that now
that should be sort of look at what how
does populations take last one
Oh while not 56 pops oh okay then I get
okay so I never calm explain this is
what we expected all that important
really yeah this was what we expected
yeah it’s not quite what I expected the
important thing is we have a function
that does some some kind of proper
processing here yes okay where is it the
same is it the same length
no but now it’s 902 yeah but now it’s on
the filter populations oh yeah I’m just
saying okay I’m just saying that wasn’t
no no oh yeah yeah okay I just wanted a
lot yeah but either way so let’s have a
look at what you can do Rio Grande are
like Rama has like functions that allows
you to combine these things so we can
create like a function that is called
let’s say filter and take passed while
and we’re gonna do Rhonda I think it’s
like time perhaps
something like this do that there and
comment it so much so that you could do
at a new code block but oh yeah that’s
actually a better idea not but now I’m
committed to this now it’s too late too
late too late too late it’s too late to
apologize too late and then I will go
like then I can do our fake last wild
and get us a kiss yeah yeah I’m just
gonna take this one here like hey
remember here here is where the currying
that we talked about how Auto Korean
comes in also you don’t have to it just
figures yeah because this out because
this if I call our tech last while
without the actual value it will be a
curried version of it so it becomes this
function that is ready to get a value oh
and then in the end of the pipe you will
add the input exactly so let’s do this
populations like we do that Oh return
yeah then we get it what I like with
this sort of is that it looks even
though it looks strange I’m not used to
the syntax and everything but this order
like it’s very clean in a way that you
understand what goes through the pipe
exactly so what will happen at each step
yeah so it becomes pretty like once you
like and you’re not super familiar
around now but you can’t get it like it
becomes like this the code becomes very
like these pipe these things were like
we process data and everything is like
these little atoms and it forces you to
think in terms of small composable
functions so it becomes pretty like like
okay so this is now like it’s a
little things so perhaps we want to
actually name this so what was it like
we could call this like filter large
populations yeah exactly it’s large
there you go there
oh and now actually this this makes a
little bit large popular so you can
except for this state 56 by the way only
Const only lasts not last state without
last stage because I thought they only
had like 50 states but yeah that’s a
good point actually I’m pretty sure they
have territories and Americas everywhere
so perhaps it’s staked in this I don’t
know it’s just an ID it’s not that any
traitor it’s just yeah like this is all
I get literally the worst example it’s
so confusing but I hope that yeah we’re
using data that we we don’t think we
don’t know what the day day is so we
don’t know what to do with it we have no
clue we just want to try out random yeah
exactly like unprepared and try to just
attack it from so ok so now we have like
these like do you see now how with okay
large populations without lasts day or
we can just call this big States or
something and so okay this is pretty
evident why this is super clear like I
love how you write you have the big
States thingy and then you were
big States from you to enter the
populations then you get only the big
states out without the last days
couldn’t you do this if we go back to
our initial thing like couldn’t you do
the same thing with like naming
functions that you would rename that
like you had filtered populations
instead of populations dot filter and
then you couldn’t we have just renamed
or take last while and then just chain
them so you mean like this lik like I
meant there with the way we did before
we did okay so let’s comment this one
out and can we do this in a new code
yeah you can we can compare them okay so
let me break out let’s pin that I’m
gonna take these and break them out this
because you’re talking about when we
have these these two right yeah
so I’m gonna do that it’s not completion
then I’m gonna do that one without a
state get rid of those and we want to
basically rewrite this in like a
procedural form or like doctor without
rammed our thing so let’s see we have
populations so we’re gonna do partial
function big states and it takes this
ring and it checks does like takes array
right what is it okay it’s large
population is well this sheets a little
bit because we partially use ramza here
so we need to have a let’s say that
called is
poor foolish its large population not
random yeah no yeah kind of this is a
bit force like this is actually the is
large population so I think this is like
filtered version of this large
population so let’s call we’re gonna
rename this and call it filter like only
large filter large populations I’m gonna
use that there and we’re gonna extract
like we’re gonna like this is typical
when you do like Ramna programming is a
you figure out hey I can break this into
even smaller named functions so I’m
gonna call this is large population and
we’re gonna use that there okay why
didn’t this work
listen I’m expected to it oh yeah all
right so now we’re gonna do all that
filter is large population there I’m
gonna create a new one that actually
used big States or acute elations okay
so what were we doing okay then we’re
gonna juice like without last state and
we had written did we keep our this one
we’re gonna export our take class while
string here no no hang on oh yeah
export this then we’re gonna do this so
now we have explained yeah oh yeah
yeah okay that’s true call it take last
wild string there go and there we have
it our own implementation of that going
back to our big state’s implementation
and yeah now we have like this mmm
because we can’t just tack this on
because this is this is object-oriented
functional sort of kind of thing and
JavaScript it’s functional and it’s
object-oriented so this actually shows
one of the annoying things with object
orientation that it ties like the types
very firmly to the thing so you would
have to wrap the app or a red filter
with teh class while stirring exactly
how we precisely we would have to do
this so you like string not split this
is not a function y this is perhaps it’s
an array yeah yeah exactly like now yeah
exactly because now our take we have
another function like our take last
while does only deal with strengths yeah
so we would have to rewrite our text
last while because it’s not generic okay
let’s let’s not do that but just assume
that we we had it and it like so yeah so
the hole that we have to wrap it and
just M I just like if you we just
compare the to how you wrote big states
using Rande yeah and then how you wrote
it here it’s just looks
I’m trying to make this work next and is
it the other way around in this time no
okay
let’s look at without let’s take yeah
let’s just use without last date it’s
like without last state there we go
something like that yeah
then it works yes so you have to like
keep wrapping them up like yes
while rammed allows you to do like it
has like these Metacom positioning
functions that allows you to create like
these come like it allows you to build
functions together into bigger functions
I like it I honestly thought that I
would just end up with not liking this
and I had prepared a ramp yeah how this
was just another library that you don’t
need but I like it yeah so I just I kept
Ram yeah so let me give you like what
there is this what Ram the function
should I use this is this this little
page on the RAM de wiki really which is
really nice where you can do like okay
remove values from the start at a value
to the end combine two lists into a list
of pairs based on custom logic and okay
so what I like with this is that
basically everything that you see there
is composable that you can combine them
together in like doing things exactly
that right like I get it so there’s
Ronda I like it didn’t prepare like a
cell here or anything I just did
everything impromptu and like I didn’t
know what questions you were supposed to
ask but it I hope that your skepticism
reflects the skepticism of of the viewer
yeah and if you are either an ordinary
forum patron or a super patron you can
go into the forum because I know I’m
pretty sure that there has been said
threads on this and I’m on Ramba I’m
gonna reread them now when I under lit
finally understand Rama so their whole a
sink away the useless thread didn’t that
have a lot of examples using Ramba yes
it does it does and I never really
understood what they did and I liked I
didn’t take the time to learn no exactly
like because Rhonda can it is very
possible to write extremely
unapproachable code with lambda and
functional programming in general I
think it had just has that nasty problem
that it can create really an accessible
code but it can also if you just
constrain yourself a little bit and and
try to actually make it into readable
code and like write your function names
very clearly so that they they have
simple simple names and use that then
you can turn into quite nice like flows
of stuff hmm I like it yeah I like it
yeah so perhaps like we should we can do
like more round explorations in the
future like lore gets bit like specific
random functions or like look at
composability I think that this is
yester first episode where we just like
play around with it yeah and if you are
viewing this and you have like the
greatest use case for R & R please write
that in the comments because I’m sort of
convinced a bit that it’s cleaner
clearer composable but I would like to
see more of these like comparison
examples where I can see like that the
non rammed away and then how random
makes it better and I’m sure you’re also
ways when you make it worse with ramicus
of course you can do anyway yeah I think
that we should explore that a lot like
when Windows RAM that I come too much
and like now we like went wait for it
down the rabbit hole and this is just
unintelligible garble that isn’t that
would be simpler to write and in plain
JavaScript when like when did people
start using random or is it still like
early days so I can feel like an early
adopter if I start using it
no I don’t think you can use like this
Ram nice very mature
we used it a lot in production it’s
boiling then again they still call them
a serial version but there is a 25 there
I say that exactly
it’s like I guess that’s like the that
you’re afraid of going public like
you’re or you’re always in stealth mode
yes as soon as you go public and try to
start charging people for things or
trying to like really really really
convince people to use it then yeah more
difficult now it’s still a hobby project
yeah you know that’s all that’s actually
a slogan of Haskell avoid success at all
costs
did you know that okay yeah they they
didn’t like they liked the fact that
Haskell is like not widespread and put a
super motive for mainstream use yes sort
of intentional from the community
because when it is like they can’t
evolve as fast so should we wrap this up
with mention of the sponsor gas law
shortly yes a fantastic little
software-as-a-service product that
allows you to do feature flag management
so if you want to start using feature
flag in your application and you don’t
want to start building that system
yourself which is way more complicated
than one things we had a entire team
doing it at Spotify for yours I think
and yeah it’s a very nice system and
they are currently promoting this
integration with JIRA so you can see
like connected to your issues in in JIRA
you can see what features the future
flags are connected to that that issue
and you can see if it is rolled out or
not so it’s like very nice integration
if you use JIRA or lodged or you’re
thinking about future flags that kind of
stuff you should really check it out at
launch darkly dot fun for function don’t
calm and remember to become a super
patron if you want cool stickers if you
wanted a few to people that end
all the way back here right in the
comments just just mention that you
watch the entire episode because this
was long and not very efficient and I
don’t think you will edit it it will be
very long even this will be very long
episode like if you have fought through
the episode to the end like your your
your old warrior we should and we should
we just say this in the beginning that
this episode is an episode we really
should just keep it it on in the
background it’s like if you like the
soothing sound of people talking Randa
it’s like it’s alright did you do like a
takeover you have you know like in
companies you often have like this
company dashboard with the metrics how
you’re performing with all the kpi’s
just hack that thing and just put this
on repeat you know like no one watch
yourselves anyway perhaps we should just
like like screw the teaching part of
this this channel and study us do like
developer ASMR it’s just like us like
Rhonda yeah you have a great microphone
for that that is true like remnar yeah
and then we can approach sponsors like
do you want to be and we can put like we
can say like wishes to decode backwards
yeah and stuff like yeah yeah if you
want the stickers make sure that you do
it before the end of the October after
that we’re not gonna print them again
it’s gonna be there that they’re gone
that’s the last last of them and if
you’re watching this after October 31st
2018 you can still become a super patron
and then harvest other rewards
eventually but we don’t yeah all other
hypothetical rewards then we would just
be great yes yeah alright that’s a lot
of run thing this is a lot this is a
ranty thank you relax episode but I have
a lot of fun oh thanks for teaching me
Ram da Matta yeah thank you for allowing
me to rants about Ram de David
you their viewer if you knew you have
just watched an episode of fun fun
function we release these every Monday
morning Oh 800 GMT if you are forgetful
you can subscribe by clicking here or
you can watch another episode right now
by clicking here
I am mpj and I’m David until next Monday morning stay curious

Please follow and like us: