Algorithms + Data Structures = Programs - Episode 130: C++Now 2023 with Ben Deane & Tristan Brindle!
Episode Date: May 19, 2023In this episode, Conor and Bryce chat with Ben Deane and Tristan Brindle about C++Now 2023!Link to Episode 130 on WebsiteDiscuss this episode, leave a comment, or ask a question (on GitHub)TwitterADSP...: The PodcastConor HoekstraBryce Adelstein LelbachAbout the GuestsBen Deane has been programming in C++ for this whole millennium. He spent just over 20 years in the games industry working for companies like EA and Blizzard; many of the games he worked on used to be fondly remembered but now he’s accepted that they are probably mostly forgotten. After getting more interested in modern C++, in the teens he started giving internal company talks and then talks at various conferences, spreading ideas about types, algorithms and declarative and functional techniques.Tristan Brindle a freelance programmer and trainer based in London, mostly focussing on C++. He is a member of the UK national body (BSI) and ISO WG21. Occasionally I can be found at C++ conferences. He is also a director of C++ London Uni, a not-for-profit organisation offering free beginner programming classes in London and online. He has a few fun projects on GitHub that you can find out about here.Show NotesDate Recorded: 2023-05-16Date Released: 2023-05-19ADSP Episode 24: C++Now 2021 with Ben Deane & Tony Van EerdADSP Episode 29: From Papa John’s to Google (Part 1)ADSP Episode 58: Otto & Eric Niebler! (Part 1)Conquering C++20 Ranges - Tristan Brindle - CppCon 2021libc++C++NowBen Deane Talk PlaylistC++Now 2018: Ben Deane “Easy to Use, Hard to Misuse: Declarative Style in C++”Sean Parent’s C++ SeasoningDeclarative thinking, declarative practice - Kevlin Henney - Meeting C++ 2017CppCon 2016: Ben Deane “std::accumulate: Exploring an Algorithmic Empire”C++Now 2023: Calendrical C++: std::chrono, History, Mathematics and the Computus - Ben DeaneC++Now 2023: Speeding Date: Implementing Fast Calendar Algorithms - Cassio NeriLeap YearsC++Now 2023: Applicative: the Forgotten Functional Pattern - Ben DeaneC++Now 2019: Ben Deane “Identifying Monoids: Exploiting Compositional Structure in Code”C++Now 2023: What is Low Latency C++? (Part 1) - Timur DoumlerMonoids, Monads, and Applicative Functors: Repeated Software Patterns - David Sankel - CppCon 2020Intro Song InfoMiss You by Sarah Jansen https://soundcloud.com/sarahjansenmusicCreative Commons — Attribution 3.0 Unported — CC BY 3.0Free Download: http://bit.ly/l-miss-you
Transcript
Discussion (0)
If you haven't got anything nice to say, then don't say anything at all.
It's getting sped up. It's getting sped up and I'm gonna...
What is it? The three-star rating is like, would be good for the conferences, but issues may exist. welcome to ADSP the podcast episode 130 recorded on may 16th 2023 my name is connor and today with
my co-host bryce we interview two guests tristan brindle and ben dean in this part one of a two-part series, we recap C++ Now 2023.
Anyways, let's hop into the official, well, maybe some of that will make it in, maybe some of that won't.
But today we are here with, have we actually, we've done one of these for person.
We did it with Chandler and Patricia.
We did it with, was it you, Benricia we did it with was it you ben and
tony van eerd at c++ that was three person because bryce wasn't there oh yeah yeah bryce
wasn't there right right that's what i was about to say is the other time that we've done this with
two guests oh yeah eric and otto oh no no we did that one too but also++ Now, like, a few years ago, I wasn't able to make it, and you
did it with two guests.
But as Ben just pointed out, that was only three people.
So this, I think, is the third time we've got four people.
We're here today with Tristan, who was one of our most recent guests.
Maybe our most recent guest, actually, I think, in between a couple episodes that we did solo
episodes.
And we've also got Ben Dean, who has been on the podcast now twice, I think,
once during the C++ Now interview, and then once that got turned into, I think,
a four-part algorithm discussion.
We will link all of the previous episodes in the show notes.
Also, too, before we let Tristan and Ben introduce themselves, I had no idea.
Maybe we can cut this out, too, if you don't want it.
I'm not sure if you introduce yourself at talks this way now, Ben.
You work at Intel now.
I do.
I'm a principal engineer at Intel.
Yeah.
Since October.
How did I not know?
I saw this on LinkedIn at some point, and then I was like, how am I not know i saw this on linkedin at some point and then i was like how am i not aware first of all you switch companies which is just news because i think we're pretty good friends and
then two sure it's to our i mean are they our arch enemies is that accurate i mean if if they
would be our arch enemies if they were good i'm, since I joined, you better watch out.
Now they're good at it, whatever it is.
What are you doing
at Intel? I work in the chipsets
group. I work on the power management.
I'm on the same team as Michael Case
and Luke Valenti, both of whom
are, as you know,
conference
speakers and people active in the
C++ community well congratulations
on the new job it's very exciting and uh yeah thank you yeah um it is exciting well i want to
i want to understand a little bit more about like what exactly why does the intel chipsets group
want a bunch of c++ gurus to improve the c++ we're writing We're writing C++20 for highly constrained embedded targets.
So it is an interesting and exciting thing to work on
just because of the, frankly, global impact that we can have.
We're writing the code that controls the power to inside the chip
all the all the parts of the at least of the south part of the chip that's the chipsets right
so do you do is there like an internally they say this many billion devices are affected when you
push code well we don't say that but um but yeah i mean that's i have a i now have a moral weight on
my shoulders that i didn't have when i was working in games or finance yeah yeah i mean that's what i
think uh when the apple clang folks or marshall clow i've heard him say that in a few talks where
you know when he's pushing code to lib c++ as i believe yeah that library um that it goes to you know billions of
devices so it's potentially you know yeah certainly you know it's the same thing like if i managed to
save milliwatts here whatever microwatts there it the multiplicative effect is huge yeah i think that
i think that's one of the main pulls to working at a company like intel or nvidia
is that your your the code that you work on is used by so many different people that having a
small impact can have a huge effect yeah my co-worker said the other day like every one of
us could like remove but like equivalent the equivalent of removing uh power multiple power stations from the
world wow good job you're gonna say something tristan oh well i was pretty much gonna say that
you can actually sort of affect like global power consumption levels um which is which is crazy
doing a bit for uh the environment and climate change and all that stuff.
Yeah.
Andre Alexandrescu, when he was at Facebook, I remember him saying in one of his talks as well that, like, you think that some of this stuff, like, you know, fractions of a percent don't really matter.
But a fraction of percent on, like, the number of devices that, like, Facebook Mobile is running on actually equals, like, millions and millions of dollars for Facebook.
Right. Which is in terms of, like, the data centers that they're, you know, hosting all their stuff. Like if you can make a very small change, uh, yeah, the multiplicative effect ends up saving them
like an immense amount of money, which yeah, not, not all companies, obviously,
if you're a small little startup, are you going to be able to say that? Very cool. All right. Well,
we, we sort of skipped the whole introduction thing because I'm not able to say that very cool all right well we sort of skipped
the whole introduction thing because i'm not supposed to do that uh but yeah maybe uh if we'll
go to tristan first and i'm the unprofessional one kind of hey you never you never get the
introductions right and also it's on brand oh did you see but i don't try to and i i my premise is
that we don't need them no we do and also, this is super on topic because right in the midst of trying to do the introductions, someone – so we're known as ADSP.
That's our official name, Algorithms Plus Data Structures Equals Programs.
Then we have ADSP, a discussion with Sean Parent.
Then we've got our unofficial slogan that we got from Reddit, which is chaos with sprinkles of information.
And then Sean Baxter replied on the most recent episode
where we were talking about Circle,
where you said he doesn't listen.
And he said, he replied on Twitter saying,
what are you talking about?
I listen to every episode of ADHD, the podcast.
For the record, I did know that Sean listened.
I just wanted to rile him up a little bit.
Yeah, so I don't actually know which one of those three I like best now. But anyways, that out of the way, we'll throw it to Tristan to introduce yourself in case. Because I think this series, or however much, however we cut this up, is going to be quite popular based on what we're going to be talking about. So Tristan, go ahead. Okay. My name is Tristan. I'm these days,
mostly a C++ trainer, try and teach people, bring them into our wonderful world of this horrible,
lovely language that we work in. You've managed to have what, like two or three
episodes without me and then couldn't resist and brought me back so thank you very much I'm very happy to be here again we do like you and we'll link a bunch of
Tristan's talks he's given a bunch of Rangers talks and he's also going to be speaking at a
bunch of conferences coming up so we'll link those as well if you happen to be in the cities that
Tristan's going to be speaking at you can come say hi attend a conference and it'll be awesome
all right Ben you can give a brief introduction and then we'll enter, or maybe we'll do like a little C++
now recap. But yeah, introduce yourself first, Ben. Yeah, my name is Ben Dean. I'm a principal
engineer at Intel where I work in the chipsets group on power management, programming the
embedded microcontroller that is inside the chip package that controls power
to other parts of the chip. That's my current job. I am a sometime conference speaker. I just
did two talks at C++ Now last week, and introductions are best if they're brief.
So there you go. sometimes conference speaker is quite modest
i mean do you know off the top of your head i think you've probably given like
gotta be way up i don't know digits maybe a dozen i think maybe a lot 15 something like that i don't
know you've got you keep the youtube playlist of my talks gonna Connor. Yeah, yeah. I think when we had you on one of the times,
so many of Ben's talks are like in my favorite talks.
And I know a bunch of other people, it's the same.
So what is it?
There's easy to use, hard to misuse,
coding in like declarative C++.
That one, I think at one point,
might still be, was my favorite talk.
Actually, it's after Sean Parent's C++
seasoning, but it's always been like a top three talk. There was like a phase where I went through
a bunch of like declarative programming talks, Kevlin Henney's declarative thinking,
declarative programming, something like that. Those two are just like, they're like must watches.
When people ask me for C++ talks, along with with sean c++ seasoning that talk kevin honey's
talk um your uh algorithmic empire one where you show the ways to use stood to accumulate
a bunch of different ways it's like a must watch my opinion anyways we'll we'll link
the playlist to all of them on my secret playlist i have because i do keep a playlist so I can keep track of my own talks but I never watch them.
35 videos
but that includes dupes
with the same talks at different conferences
and that includes lightning talks as well.
And it doesn't yet
have the talk from last week.
I feel like I've given that many talks.
I feel like I've given that many talks.
Yeah, it's not a huge amount.
I mean if you give one talk at, like, I typically only go to a couple of conferences a year.
And I'll give a talk at each.
The difference is that Ben gives much better talks than I give.
It's not about the quantity here.
It's about the quality.
It is.
And for that reason, I try not to, my maximum per conference is two and usually one yeah i think
the the thing about those talks that i mentioned is like the number of times in a talk where
something is said that like makes you think and you're like oh wow that's a good i didn't think
about that before like i remember probably the first time I saw an immediately invoked Lambda expression used as like a declarative way to do like, you know, if expressions in Kotlin or something like that.
And I think I can't remember if that was the exact example you used, but you showed that and I was like, oh, that's so nice.
Like, and you had this thing where you went from before and after and added a constant.
I was just like, that is, that's very nice.
And I might've even seen it in another talk before.
I know Phil Nash did some talks like that, but sometimes like you watch a talk at a certain
point and it hits you at the right time.
Yeah.
Links to all of those things for both Tristan's talks, Ben's talks, conferences, et cetera.
Maybe, uh, maybe we'll make this first part of this episode if, if Ben, cause you just
spent the last week at C++ now, if you want to give like a a little recap of the two talks you gave and like any highlights of things people
should watch out when the c++ now things start coming on coming online uh well the the sort of
overarching theme of the conference was safety and security how we do that in c++ if we can do
that in c++ in some cases,
how we might get there.
Did you guys solve it?
Was there an answer?
Oh, yeah.
No, we solved it now.
What's the answer?
Yeah.
Perfect.
Great.
No, there are lots of different approaches, right?
Yeah, so that was the theme of the conference.
My two talks,
well, I originally, yeah so that was the theme of the conference my two talks um well i originally i had i had i submitted to one was accepted uh in the interest of you know just speaker diversity that's cool
both were highly reviewed um and then and then bob bob stiegel the conference chair
reached out to me and said you know this this other talk you submitted, would you mind sort of keeping it in the back pocket in case we have speakers who can't make it or whatever?
And indeed, that's what happened.
So I ended up giving one talk.
It was pretty much first thing Monday, Monday morning.
I got subbed in for a speaker who
couldn't make it wait wait when when were you informed that you needed to give the second talk
was it like you showed up at the conference they're like oh yeah we need you no it was a
couple of weeks before that that was okay but that talk i had already given at the local meetup
and to friends and in uh i've already given it like three times so i can get that one
the story on this conference about the time that a c++ now speaker didn't show up i don't all right
strap strap yourselves in what the year i'm on i'm on the edge of my seat wanting to know the title of this talk that Ben gave.
Let's pause this story.
I'm like waiting.
Have I seen this one at a meetup?
Or is this watchable?
Is this a new talk?
So are you pausing Bryce or are you pausing me?
Yeah, we're pausing Bryce.
We will let Bryce tell this story.
I promise you, Bryce.
You hang on.
He's very excited.
He was asleep for the first 20 minutes, but now he's awake because he's got an exciting story to tell.
So the first talk was entitled Calendrical C++.
Wait, what?
Calendrical C++.
I don't understand.
Calendar Calculations.
Okay.
All right.
Now I understand.
And what was really nice, and this sort of often happens, is I submitted it and I thought this is a really niche topic.
It's a fun and entertaining talk.
But at C++ now, the goal is the people in the room have fun and learn something, not necessarily that the talk is of very wide interest.
That's a better goal, I think.
Anyway, so I submitted it and I saw that, against all odds, goal i think anyway so i submitted and i saw that against all
odds another talk about calendar calculations was submitted and it was actually very complimentary
with mine um cassio neri gave that one and um i met cassio for the first time this conference and
you know with our common interest of geeking out about calendars we we hit it off straight away
so that was the first talk.
I talked mostly about how to calculate the date of Easter.
So we've mentioned this on the podcast before.
Is this not something that wars have been fought over?
Well, I don't know about that specifically over the date of Easter.
It's true that the wars have hindered calendar changes, famously in times in the history of the British people where there have been conflicts fought over the different, maybe this is a little bit
reductionist, but that different camps had different religious beliefs and that there
was at least one period of time
where one of the major differences between two sects
was what they considered Easter,
like how they calculated the date of Easter.
I'm unaware of a specific war,
but I mean, it's certainly not out of the realm of possibility.
There were several different competing ways to calculate it.
We're talking about the, I'm thinking of the early days,
or let's say the late days of the Western Roman Empire.
Yes.
Tristan, you were going to say something.
I was just going to say, I don't recall hearing,
there had certainly been religious things,
Protestants and Catholics for a very long time
yeah um but i think certainly these days the church of england the catholic church
use the same date for easter i don't know if it's always been yes
uh so it was fixed by the the first council of nicaea in 325 uh ce A little while ago then. Yeah.
They tried to fix it
because the Roman Empire was large
and they couldn't really tell everyone
this is when Easter is.
You know, if you're living
in the very early days of Christianity,
you probably are friends
or used to be yourself Jewish.
So you could ask your local rabbi
when Passover is
and then you would know when Easter is.
But as the Roman Empire grew and expanded people on the fringes didn't have that
capability
so well so they tried to fix it
and they basically said
the spring equinox
is the 21st of March
they defined that to be the 21st of March
and they said Easter
is going to be we'll take the first full moon on or after the spring equinox.
And we will take the Sunday after that.
And importantly, if the full moon is on a Sunday, you have to wait a full week for the next Sunday.
That's easy.
You would think.
Easy enough to say.
Don't the Eastern Orthodox churches have a different date you are dead right they they still keep to the julian calendar oh is that what it okay so that
was the difference there so yeah there are two algorithms one for the julian calendar and then
after the gregorian reforms from 1583 the the gregorian calendar version but they're both i mean julian
and gregorian are very similar calendars um what may be more interesting you know a tidbit of
information i found out was that um so the the way we calculate leap years in the gregorian calendar
is well known it's every four years except except every hundred years except every 100 years, except every 400 years, right? Which is to say, if the year is a century,
it has to be divisible by 400.
I think everyone on this call probably knows that
and most of our listeners do too.
It's a first year CS sort of-
Mostly because we were all alive in the year 2000.
Yeah, yeah.
It's fizzbuzz and then it's like calculating a leap year.
But the Orthodox churches and their countries, several countries, Eastern European mostly, don't have the same, although they're on the Gregorian calendar as a civil calendar sort of thing, they don't have the same leap year algorithm. instead of doing two century leap years every 800 years,
they do two century leap years every 900 years,
which is at least at the moment,
slightly more accurate with respect to how the earth goes around the sun.
So,
so they,
they do the leap years on the 200s and the 600s after dividing by 900,
after modding by 900.
So why hasn't any, has anybody ever tried to do metric time or base 10 time?
Oh, yeah. The French Revolutionary period was famous for that.
That's right.
How did that work out for them?
Well, the thing about calendars is it's fine,
but it's fine if you decide that,
but the rest of the world kind of has to decide that.
It may also interest you to know that in 1928,
the UK passed an act fixing the date of Easter
to the Sunday after the second Saturday in April.
And that law was passed and never brought into force, as they say.
It's unclear quite what brought into force means,
but it basically means no church has ever paid attention to it,
and they're the people who really decide Easter.
Perhaps it would be more confusing if the UK unilaterally decided that
it's like garbage collection in C++
11 you know it was technically
a thing that no
compiler implemented and then they just
removed it at some point
a week or two ago I heard somebody
somebody expressed
to me that
garbage collection
that they were happy to have seen garbage collection support added in C++11.
And I was a little bit surprised by that.
Well, it got taken out.
Yeah, I know.
They were sad to see it removed then, perhaps.
I did not have the heart to tell them it had been removed.
You know, what you're getting here is the very condensed version and i'll cut it off there
because because i've been going down the rabbit hole for like a year and so what actually happened
there was ava said to me you know you've you've been reading books you've been spending so much
time learning about all this stuff you'd better make a talk out of this i want to see i want to
see this amount to something other than just a bunch of trivia.
No, no, no.
Stop talking to me about this.
Talk to other people about this so I don't have to hear this anymore.
Yeah, yeah.
And look at that.
You made like a best friend at C++ Now that also nerds out about the exact same thing.
Yeah, so Casio's talk was about the calculation for changing between days since epoch, converting days since epoch into year, month, day, and vice versa.
Okay, so it's like a little – well, actually, I don't know how it works in Excel, but something like that Excel thing.
You don't select the right number format and you get this big number.
No, I guess, yeah.
Roughly speaking, I'm not actually sure if they use – use like 1970 something i think in excel so i don't i don't think that's the same thing but
anyway so that was my backup talk my my sort of real talk my my my talk which was new for c++
now was about uh applicative functors oh category theory i called it the forgot well not
cat i'm not a big category theorist i go in for practicalities but um i mean that that is a term
from category theory though is well sure if you like for me it's a term from you know learning
haskell and functional programming and uh yeah it it is from category theory but the subtitle of the talk
was the forgotten functional pattern because i feel like you know the genesis of this talk was
me reading papers that come out every month on the c++ mailing and seeing all these things proposed
and seeing people say you know functor this and monad that and and you know we have monadic
functions for optional we have monadic functions for optional we have monadic
functions that expected although it's not widely fan uh trumpeted uh the senders receivers proposal
is based on you know uh the continuation monad but nobody ever mentions applicative
and uh it's super useful.
So that was what my talk was about.
Well, I will put links.
Well, so probably the way it's going to work is these things are going to get rolled out slowly.
So I will put unlinked links in the show notes
and I will update them as these C++ Now videos.
Are you going to be giving these talks
at any other conferences coming up? Or I know you're going to be at C++. I'm going to be at C++ Now videos. Are you going to be giving these talks at any other conferences coming up?
I know you're going to be at C++.
I'm going to be at C++ North.
Yeah, I'm keynoting there,
and I need to figure out what my keynote will be.
It's all right. You've got a couple of months.
I've got a couple of months.
But I did put in my applicative talk
a special Nerd Snipe for you, Connor.
Oh, yeah.
I was thinking that you've got your
identifying monoids talk which is also fantastic talks are you putting i mean you just said it's
not about category theory but are you putting this category are you making like a unofficial
category theory adjacent series of talks for like the plaque the practical well that's not
i'm not working from that goal no uh my my goal is you know to expose practical
applications of what happened to be functional programming techniques that that i find really
useful and i think more people could benefit from knowing about um i'm not trying to
uh you know produce an oeuvre of category theory adjacent work interesting well you you're you seem like you're kind of like a mini bartage you know
minus the uh full-blown uh category theory uh rabbit hole but uh you know category theory for
person that doesn't understand abstract mathematics and just wants to have patterns to use in code
yeah i mean you could look at that way when one of the things
about this applicative talk was i highlighted like um maybe the reason why people don't use
it so much is because everyone everyone explains it in the haskell formulation and that is not a
particularly useful formulation for c++ so i took a different tack I tried to explain it with a different formulation, which is much more applicable to C++.
Interesting.
I will be waiting on the edge of my seat for this to be released.
That definitely does sound very interesting.
Yeah, it's right up your alley too, Tristan.
Functional style, collection-oriented programming.
Any other things you want to highlight
or things people should watch out for
on the interwebs coming out of C++
now? Safety's been solved, so I guess
we look
forward to some talk or some
announcement detailing that.
Any favorite talks?
It's hard to pick.
I did enjoy
most of the
all of the talks I went to.
It was, C++ Now was back up to full strength this year.
Which talks didn't you like?
No, no, it was just, there were none that I did not like.
They were all good.
On other topics, I'm trying to remember.
Timur gave a two-parter
on low latency
C++
that was interesting
because it's
and it's interesting having worked in games and finance
and of course Timor's worked a lot in audio
interesting to sort of
think about the differences between those
the big difference really
is hard deadlines.
So hard-ish.
I mean, nobody dies if you miss the deadline, hopefully.
But in audio and in games, you have a hard deadline for when the next frame of sound needs to be rendered or when the next frame of the game needs to be rendered.
Whereas in finance, you have a deadline deadline you don't know what it is you just have to be faster than the next person
it's a it's a it's a different sort of um thing so you're optimizing for in many cases you're
optimizing for the you know when you have a hard deadline in audio you're optimizing for the
the worst case you want to stay you want the worst case to stay within that deadline whereas in finance you are
not optimizing to keep the worst case in a deadline you're optimizing for being fastest in the best
case probably interesting yeah i never actually thought about that it's an interesting way of
looking at it all right well we'll put team put two more links to Team Wars Talks,
and I'm sure there's a C++ Now 2023 playlist that we'll link,
so those that are interested.
All right, we'll wrap the C++ Now episode,
part one of this discussion, and we will transition.
Wait, hang on. We've got to do my story.
Okay, how long is this story going to take?
I don't know. I never really know until I get into it.
All right.
Well, listener, we might be listening to a little chipmunk Bryce here, depending on how entertaining this story is.
But you go ahead, Bryce.
This is a good story.
If you fast forward through this, the listener is going to revolt.
No.
They're going to be unhappy.
It depends on who the listener is. I know my people. If the listener is Zach, I think he's going to be quite happy about They're going to be unhappy. It depends on who the listener is.
I know my people.
If the listener is Zach,
I think he's going to be quite happy about it
because he told me personally.
All right.
Someone didn't show up.
What happened?
The year is... I remember this.
I was there.
You were there.
I don't know if you were one of the people.
I don't remember anyone other than Chandler who talked.
But I know that Chandler demoed
I think he demoed Heartbleed.
I think he did demo Heartbleed, yeah.
With fuzzing.
And he was never heard from again.
Never heard from again.
So, do with that
what you will.
Let's just get like out of five
stars, Tristan, Ben, how do we feel about that story
remember that i am your friend don't remember that i um i mean i i i if you haven't got anything
nice to say then don't say anything at all it's getting sped up it's getting sped up and i'm gonna
what is it the three-star rating is like would be good for the conferences but issues may exist
i'm gonna speed it up and then slow it down right for ben's voice
tristan would be nice. I'm sorry.
I'm sorry.
I apologize.
That's the trouble because I've done this several times now.
I'm beginning to feel a bit more comfortable.
Yeah.
And, you know, all of my, everything's coming out now.
I can't pretend to be nice anymore.
My favorite guests are the ones that roast Bryce.
I don't think Zach, I mean, obviously Sean is, you know, Sean is Sean.
But Zach, I don't think I've laughed so hard from Zach just being like, all right, Bryce, quiet down.
Quiet down, Bryce.
We get it.
Zach legitimately has to be one of the funniest people in C++.
Yeah, he's hilarious.
My favorite thing, though, is when Zach and David Sankel interact together.
Those two are.
Oh, yeah.
Yeah.
David's talk with his kids, still one of my favorite things that I've ever.
I was so shocked he gave this.
I can't even remember the title.
It was like monoids, monads, and applicative functions or something.
Functional patents, yeah.
Yeah.
And he gave it at CPPCon.
And it was pre-recorded, so he had his kids in it.
And he had them like, it was as if he was teaching them category theory and had them act out little bits and like, what's a monad?
Well, glad you asked, kids.
It was just so entertaining.
Be sure to check your show notes either in your podcast app or at ADSPthepodcast.com for links to any of the talks or topics that we mentioned in today's episode.
As well as a link to a GitHub discussion where you can leave comments, questions, we mentioned in today's episode, as well as a link
to a GitHub discussion where you can leave comments, questions, or thoughts on today's
episode. Thanks for listening. We hope you enjoyed and have a great day.