Algorithms + Data Structures = Programs - Episode 24: C++Now 2021 with Ben Deane & Tony Van Eerd
Episode Date: May 7, 2021In this episode, Conor has a conversation with Ben Deane and Tony Van Eerd while at C++Now 2021.About the Guests:For Ben Deane, C++ wasn’t even among the first 10 languages that he learned on his pr...ogramming journey, but it’s been the one that has paid the bills for the last 20-odd years. He spent most of that time in the games industry; many of the games he worked on used to be fondly remembered but now he’s accepted that they are probably mostly forgotten. These days he works in the finance industry writing high-frequency trading platforms in the most modern C++ that compilers can support.In his spare time he watches a lot of YouTube’s educational sector, practices the Japanese art of tsundoku, reads about the history of programming, avoids doing DIY, and surprises his wife by waking in the middle of the night yelling, “of course, it’s a monad!” before going back to sleep and dreaming of algorithms.Tony Van Eerd has been coding for well over 25 years, and hopefully coding well for most of that. Previously at Inscriber, Adobe, and BlackBerry, he now enables Painting with Light at Christie Digital. He is on the C++ Committee. He is a Ninja and a Jedi.Show NotesDate Recorded: 2021-05-06Date Released: 2021-05-07C++Now 2018: Ben Deane “Easy to Use, Hard to Misuse: Declarative Style in C++”C++Now 2017: Ben Deane & Jason Turner “constexpr ALL the things!”Conor Hoekstra — ITM: My least favorite anti-patternFunctional C++ for Fun and Profit by Phil NashYOW! 2013 Kevlin Henney - The SOLID Design Principles DeconstructedBreaking Dependencies: The SOLID Principles - Klaus Iglberger - CppCon 2020SOLID Revisited: The State of the Matter - Phil Nash [ ACCU 2021 ]C++Now 2017: Tony Van Eerd “Postmodern C++”C++Now 2018: Tony Van Eerd “Words of Wisdom”One Letter Programming LanguagesC++Now 2019: Conor Hoekstra “Algorithm Intuition”Simple Made Easy 2012 - Rich HickeySlow Coding - Ben Deane; A View to a Thing - Jason Turner - 2020-10-11The larger the island of knowledge, the longer the shoreline of wonder.LadyBug PodcastIntro Song InfoMiss You by Sarah Jansen https://soundcloud.com/sarahjansenmusicCreative Commons — Attribution 3.0 Unported — CC BY 3.0Free Download / Stream: http://bit.ly/l-miss-youMusic promoted by Audio Library https://youtu.be/iYYxnasvfx8
Transcript
Discussion (0)
It's all right. You're the two-time best presentation winner of C++ now, so...
Well, they are named after him. The Tony Awards.
Are they called the Tony Awards?
Unofficially.
I did not know that. Welcome to ADSP the podcast episode 24 recorded on May 6 2021. My name is Connor and on today's
episode it's just me interviewing Ben Dean and Tony van Aerd on the fourth day of C++ now 2021.
I also want to quickly apologize for my echoey poor audio in this episode. I just moved into a new apartment and did not
realize how much echo there was, so I will be sure to fix this for episode 25, but for this episode,
you'll have to bear with me. Tuning in live from C++ Now 2021. We were supposed to have four people
here. We currently have two. I'm here with Ben Dean, whose voice you may have heard
in the pre-intro, and Tony may or may not be showing up. I'm not sure, Ben, for those of
our listeners that don't know you, do you want to introduce yourself? Sure. I am probably known in
the C++ community for a few of my talks, which I've done in the last five or so years
at C++ Now and CppCon.
I worked
in the games industry for
20-odd years,
and I now work in the finance
industry. I've been
something
which just went out of my head. I've
been on CppCast a couple of times.
Yep.
Probably, well, so yeah, I mentioned this.
I'm not sure how we're going to cut this up
or if it's going to be mentioned twice.
So yeah, the reason why we were trying to get both Ben and Tony
because they're quite well known, I think, at C++ now.
Ben, in both, correct me if I get the years wrong,
2017 and 2018, 2018, I believe, was the talk with Jason Turner.
You won best talk of the conference, or was that reversed?
Yeah, 2017 was the concept for all the things talk,
which was Jason and me having a lot of fun.
2018 was my declarative style talk.
Yeah, easy to use, hard to misuse.
That's probably one of my top five favorite talks of all time.
It was the genesis of my love for the immediately invoked Lambda expression,
which I'm not sure if I've mentioned it on this podcast,
but I had seen it before,
but this speaks to sort of like where you are in your learning curve.
Like it didn't hit me.
Like I didn't, I think before that really appreciate what expressions versus statements were.
Anyways, it was in that talk that I saw that and I was like, oh my goodness, this is amazing.
Because at that point, I think I'd known that other languages like Kotlin have if expressions, which are quite nice.
I think Rust has the same thing now.
Right. And now you have been very prolific in your speaking career and you've given names to
some of these things like the initialize then modify anti-pattern. Yeah. Well, I'm not sure.
It's really just like I realized after the fact that Jason had basically given a quasi same
version of that talk.
So I've given a talk called my least favorite anti-pattern where I termed
ITM.
And then after that,
and it's all just about whenever you initialize a variable and then
immediately modify it,
if you can avoid that,
like there's some cases where you're writing an algorithm with a for loop
in it,
which is not a raw for loop.
It's just a for loop.
And you're obviously going to have variables that you're, you're modifying, but. But in the greater scope of things, a lot of times it's unnecessary. And
if you can sort of try to avoid that pattern, I think it leads to more readable declarative code.
And then I ended up watching Jason Turner's, and also too, we've mentioned Jason's name.
I assume like 80% of our audience knows, but Jason is also a speaker um and he's a c++ uh
trainer and um he is the co-host of probably the like the premier c++ podcast cpp cast which
is one of my favorite podcasts as well jason and rob jason gave a good talk at c++ now a couple of
was it yesterday or the day before yeah it was um what was the title of the
talk because i've renamed it in my head to a different title the worst best practices yes
yeah i i after the fact it said it's uh the longer title is probably uh jason turner's
20-year history in c plus plus and how to self-publish a book um right because because
he sort of talks about that but
yeah that was probably one of the better talks i so i guess yeah we're hopping all over here
but anyway so to wrap up the last bit well this is what adsp is though uh jason basically gave a
talk on uh best practices and then while watching it because i i never saw it live i was watching it
on youtube i was like half of his talk is basically just a different statement of what I'm saying. And so now I'm, I'm basically just plagiarizing, which is
what I do in all my talks. Anyways, that's a good, that's a good way to give good talks is just find
other good talks and then cut those all up. Yes, I've, I do the same in the sense that,
well, I've sort of learned that it's almost not possible to repeat a good idea
enough. Like it always bears repetition. It always bears another talk, which brings a little bit
extra. At the end of the day, there's a lot of us who are speaking about things like strong typing,
declarative code, expressive code. We all have our own takes on it. And it feels like,
you know, if you look, if I look back
at the talks I've given, it feels to me like I've said the same thing multiple times. I'm sure
it feels that way to a lot of people who give talks that they sort of rehashing the same ideas.
But, you know, if they're good ideas, and I think they are, then repetition is warranted.
Yeah. And it's, that's the thing, right?
Is people, when you're giving a talk, at least this is my experience from both giving and watching,
is that the talk is going to hit people different ways, depending on where they are in their learning journey.
I think a lot of my talks, if you're just starting out, it's going to be, you know, over some of the folks in the audience head.
And then for other folks, I'm just repeating things that they learned 10 years ago.
And it's like, oh, this is sort of entertaining.
But from an educational perspective on an individual basis for them, they haven't learned much.
And then there's another proportion where it just sort of blows their mind and it opens their eyes. And there are, that's
the thing is like Phil, I sort of have told this anecdote before is that Phil Nash gave a talk
called Functional C++ for Fun and Profit back in like 2016 or 2017, which covered a lot of the same
themes in your declarative talk, easy to use, hard to misuse. But when I watched Phil's talk,
I wasn't ready to accept everything.
Like I just, I didn't have enough
of like a knowledge foundation.
And so anyways, that speaks to the repeatability.
The other thing I see and I sort of come to terms with
is the fact that nobody owns an idea.
And so when I'm making a talk when i'm having ideas about
what to put into a talk often i make the talk and then i see like other talks maybe even that
are coming up around the same time that are talking about what seemed like exactly the same
idea and you know there's no like i, nobody owns an idea. So someone else could totally independently create a talk which has a large overlap.
I used to worry about that.
Now I see that as a sign of like, okay, if other people are having these same ideas,
then it means probably that the zeitgeist of C++ is ready for this.
Like, it's a good sign, not a sign of like plagiarism or other people scooping me or anything like that.
Right.
And that's exactly what happened with one of the three, the girdle, Turing, and Church, right?
They all came up with the same idea.
Oh, right.
Yeah.
Back in the, what is it, 30s, early 40s.
And that was the funny thing, right?
Because I'm going to mess up.
Or maybe you, do you know the story of which uh disagreed with one of the others and then like
i believe it was girdle who took a lot of convincing yeah and and when he found out that
his uh whatever statement of the problem was the same as i think it was turing's he said well
obviously i'm wrong then um because he's definitely wrong so if ours is the same thing i must also be
wrong and then it took him a while to realize that oh oh, no, Turing was Turing was correct.
And I'm also correct. And they're the same thing, which I thought that's a funny thing that first you think they're different.
Then you think they're the same. Then because you think his is wrong, you must also be.
Yeah. I mean, what you said about, you know, a talk just hitting someone at the right time in their learning journey is totally rings true with me. Also, it's the case that, you know, you can watch a talk and
kind of not get all of it. But having watched it later on, when you watch another talk,
that's when another talk can actually like put a light bulb on your head about the first talk.
Yeah. Yeah. There's tons of dotted lines between,
well, I mean, for those that haven't attended the conference, Tony Van Eerd, who may or may
not join in a couple minutes, he might be working on his lightning talk for later today. He gave a
keynote yesterday where he showed a bunch of dotted lines um in between his solid revisited
talk and what were all the talks he mentioned um uh phil nash's talk um close eagle burger i think
i'm pronouncing that correctly i apologize um and then kevlin henney's given a solid talk as well
um and he and then he went on to mention a bunch of other talks like rich hickeys.
Who's the creator of closure.
He has a famous look.
There's the man,
the myth,
the legend,
a wild Tony appears.
We were just talking about your keynote,
Tony.
And also too,
do you even,
do we just assume all the listeners know who you are?
There might be a few like Swift developers that.
No,
no one knows who I am that's what i assume
that's not true well i've come to yes through working in the games industry i've come to uh
take this take this tack as well all right so tony you should i guess briefly introduce yourself to
the uh either c++ developers that um have watched any talks online, because I assume yours has got to be like in the first five talks that people watch.
Well, if I had to, if you're telling me I have to introduce myself, then let's just say everyone knows me.
I'm on the committee, C++ committee. I've worked at interesting places like Adobe, BlackBerry. I still find
BlackBerry was an interesting place. Small places, big places. I know at Christie, I do projection
mapping, which is really cool stuff. And yeah, I give talks every now and then. People like them,
so I keep doing it. Yes, if you haven't seen postmodern C++ or words of wisdom,
those are also two of my favorite talks of all time.
And I think I've seen the postmodern one like three or four times now,
because you gave it once in C++ now,
once in CppCon where it started to rhyme.
And then I think you also gave it at the Prague meetup at the last in-person
C++ ISO meeting.
Yeah.
Rest in peace to.
Three times.
And it's different every time.
And, you know, you got to watch the next one.
Then you can put piece together the secret message that I've left behind
and all the variations.
So I guess, should we talk or how are folks,
how are you liking virtual c++ now what are the
best talks how did you you so ben has not spoken this year but uh tony did give a keynote called
solid revisited that we mentioned before him joining what are how are people feeling how
was how was giving your keynote well you know what that's the the thing. I have no idea. Like, to be honest, I didn't want to do virtual anything, right? Because it just feels like giving talks, I don't know if people realize giving talks is actually hard, right? It takes effort. And it really drains you. And then at the end, though, you're like, oh, this was really cool. This was fun. It was worth all the pain that you went through to do it.
And it's usually a good experience. But this time, it's all virtual. You don't feel the audience.
You don't know what's going on. And then it's over. And you're like, huh? I have no idea what
happened, right? But C++ Now is like one of my favorite conferences. So I wanted to make sure
we had a good year this year.
I thought I had no idea if there was going to be lots of talks or hardly any talks or what was going to happen to it.
So I'm like, I'm going to put in a talk.
I wasn't planning on doing a keynote, but I thought I'll do a talk to my part, show up.
But now I haven't seen any talks since then, because as is tradition, I see no talks before my talk because I'm too busy doing my slides.
And then I was going to, I've just been busy today, as I forgot even that I was going to talk to you guys. I was busy doing stuff. I'm going to see Lisa's talk, right? Lisa Lippincott
is my favorite speaker, maybe possibly my top, one of my top five, you know, one of my favorite
speakers. I love the stuff that she talks about.
It's a little, some people find it a little more theoretical
and whatnot or whatever.
It's kind of very foundational talks of how,
what is a function?
What is a program?
But I love it.
Just love it.
So I'm going to go to her talk.
That's tomorrow.
And that's been my, I had at least two talks
circled. I wanted to see Barry's talk
on ranges and
stuff. He was comparing different languages.
But we were all sitting
around at one of those little...
That was during the... yesterday
when we all ended up at a
virtual table. We were in the hallway track.
In the hallway track, yeah, which has always been the
best track of C++ now. So I didn't see barry's talk yet but i will watch it later
it's good i watched it last night yeah uh yeah it he did a really good job comparing c and c
plus and rust and d and he sort of put them on a functionality versus uh complexity curve i think it was a very sort of
good comparison and breakdown it had the uh from finance i think it's called the efficient frontier
there's a sort of curved line and he put we won't spoil it but d and c plus plus and
rust get ranked and then we can spoil the fact that java was below the efficient frontier so you know they there was a time when you look at their iterator right and it's it doesn't feel
like an iterated way we know iterators it really is just it's it's the it is the collection right
it's it's their iterators feel it's where you pull the value out of and and it's like is there another one and then you get the next value and and uh like our c plus plus what eric did with sentinels
right with ranges and he said you know begin end iterator let's make the end not really an
iterator it can be a sentinel now it doesn't have to be an iterator it is just a big hack
like that is a hack it's a beautiful beautiful hack right it's like now be an iterator. It is just a big hack. Like that is a hack. It's a beautiful, beautiful hack, right?
It's like now your end iterator, if it was,
because people used to do this in the past
where your iterator had to be special, right?
It's not really the end.
It's just has a flag inside of it to say,
when I do the comparison, I will do the real check for end.
And that was also a hack.
Eric has made that hack, you know,
he stamped it as official now and it's great. and that was also a hack. Eric has made that hack, you know, he's stamped
it as official now and it's great
but
I wonder if it's all
I've run into this before that
two iterators is wrong, just
not the right way to go. So that's why I wanted to see
Barry's talk.
Like
in fact, like
when you have, the example is
when you have an infinite range right i've got
all the numbers right now we can now do that with with c++ ranges this range never ends it's got an
end iterator but it's a fake iterator and and uh you know if you're doing a zip or something else
you can you can zip infinite numbers with a finite vector and now you've got a number for each item in the vector or whatever you want, right?
That end iterator is just fake.
The whole thing is a lie.
So why do we force our iteration in our ranges
to have a begin end when that's a lie, right?
It should be one object that you ask,
are we at the end yet?
But we wanted to fit it in with what we already had,
and so it works really well.
It is. It's really good.
But it's also, you know, I wondered,
like, maybe we shouldn't have done it this way.
Maybe we should have.
But I think if Eric had done the new ranges any other way,
it wouldn't have happened.
So it's the right way to do things.
There's my hot take. My hot take. Did you need a hot take? That's a good things. There's my hot take.
My hot take.
Did you need a hot take?
That's a good one.
It's good for the ratings.
Sentinels are a hack.
That's what Tony says.
But there are some surprises there.
You're right.
I remember playing with ranges the first time and getting that sort of surprise
because, yeah, a half-infinite range, like natural like natural numbers can be it has a
bi-directional iterator right because because we know how to move backwards
and forwards but you can't reverse it yeah so so you know that intuition kind
of gets upended like we expect to be able to reverse something with
bi-directional iterator but if you don't have a start place you can't you can reverse it you just
can only you can't start from the beginning elements of it in reverse
but there's nowhere to start and say reverse this it just take you a long time yeah
anyways so those are the two talks you were looking forward to one you'll still get to see
because lisa's is this we're recording this on thursday lisa's talk is on friday barry's was yesterday there's probably more that i also wanted to see
but that's the ones that were in my head that uh you know if i went and looked at the schedule i'd
probably tell you oh my god i wanted to be at a talk right now but i really enjoyed um gabor
horvath's talk from this morning about. It was about sort of compiler algorithms.
Yeah, I saw that too.
I didn't see the talk.
I saw a good one.
Yeah, I wanted, that was, I saw that too late.
I was looking this morning at the schedule,
and I'm like, oh, I missed something that I was kind of,
it looked interesting, yeah.
It wasn't so much about sort of classical algorithms
as we might know them,
but he presented in particular a sort of algebra of recurrence chains,
which the compiler uses to analyze loops and turn them into closed form expressions.
Yeah.
There's got to be a lot of magic going on in compilers, right?
So there's been so many years of research into that kind of stuff.
Yeah. So that was a good talk. There have also been a couple of good talks from Peter Somerlad
and I just saw Anthony Williams. They were talking about similar, you know...
Strong types.
Strong types. Yeah. Strong types.
Big fan. Big fan of strong types. types type types plus what did i say yesterday
types plus functions equals programming that's my new thing man that's that's my book my book
is called types plus functions equals programming no one's done a book with a similar name have they
practically the name of this podcast which we stole from the book that uh yeah tony's joking
it's it's from nicholas verth's famous book, which I have not read yet.
Bryce and I said at some point we'll read it.
We can't steal the name of a book and call our podcast without reading it.
What is the name of it?
It's algorithms plus data structures equals programs.
See, I think that's almost redundant, right?
Having a data structure without an algorithm tied to it isn't
like they they kind of are the same they're intertwined yeah you know what i mean um like
you know i've got a heap well if i don't have the heapifying algorithms to go with it i don't really
i can't do much with this right i need the i need the two pieces together whereas types plus plus
functions that's open that's open-ended right, right? I've got a string type.
I've got an image type.
I can write Photoshop.
I should have used Photoshop as an example yesterday.
I want image.photoshop to be the function on my image class, right?
No one makes member functions.
Like everyone makes everything a member function,
but Photoshop is not a member function of image unless it is.
Maybe I haven't looked at Photoshop source code
in a long time.
Maybe that's what they've got to now.
It's just like, oh yeah,
just make it a member function like everything else.
I'm pretty sure it's not, Sean.
Sean would not allow that.
Yeah, he would not allow that.
Well, the other,
the dichotomy I've been thinking about lately
is computation plus IO.
It's not as catchy, but like program, when you come down to it,
does computation and does IO.
If it doesn't do one of those things, it's basically useless.
Well, yesterday I was describing some threading,
and I said for threads, the rule is just don't share any data.
People write threads, and they put locks around their data
and then they try to share their data between threads.
And well, now you've slowed yourself down
because they're going to wait for each other.
It's like, why did you make threads
and then put them in line to wait on objects
on a mutex or something?
But you also get all these bugs and everything.
But if you just hand off data to a thread
and don't share any data after that,
then you don't have any problems.
Of course, if you have a thread that never shares information,
it's the same problem.
It doesn't do it.
It's out there calculating pi and then never tells you the answer.
Just like, wow, great.
Thanks thread.
You know?
So eventually, yeah, you have to have IO.
You have to communicate data back or something,
or it's kind of, kind of worthless have IO. You have to communicate data back or something, or it's kind of worthless.
Yeah, I think I saw a tweet a while back,
which is like every program transforms data structures
until it gets to one it can print out.
Yeah, pretty much.
Yeah, I almost think of now that the data structures is way less than algorithms,
because I'm falling in love with APL, where they don't really have data structures.
All algorithms.
I was going to say, there's vector.
And then you're done.
I need to apologize, because Jason's talk.
Oh, yeah.
Which was another great talk, another great talk.
It's a great talk.
Jason, about two-thirds of the way through the talk,
he talked about exactly what Conor's been talking about lately,
about the sort of foundational languages or languages that embody different computational paradigms.
And I was in the virtual audience.
He sort of pulled me into his talk to say a few words.
And I totally failed to mention APL.
I was watching it because I even thought about it.
You thought?
You didn't tell us that.
But it was Jason's talk.
I didn't want to interrupt and take the mic away from him.
Anyone's talk is worth being interrupted just for a short mention of APL.
And the ironic thing is, I
planned on watching Jason's talk live, but I forgot that I had a podcast rehearsal for
a breaking news, a other podcast that I'll be on about array programming languages. I
think it's going to be called Arraycast and it's going to focus on languages like APLJ,
K and Q, which are lesser well-known, but are very popular in the finance industries.
What letters are still available?
None of them.
There's actually, I'll link it in the show notes.
There's an article that shows every single letter in the alphabet is taken.
Some of them are less popular.
I think the predecessor to R, which is like a statistical language, was S.
So not many people know about S, but it was.
You're going to have to go to non-Latin alphabets oh yeah i want t is t t i want t t is mine i had this plan for you said you were gonna call it tea though so yeah i was i was tossing between the two
which which one to call it so i wanted that pun in there something i wanted you know
is it t for tony or tea for the drink you know but yeah um anyways i ended up i ended up missing it live because i was doing some other apl stuff
and then i was watching it in the recording and then saw ben come on talking about other languages
and i was oh this is great apl is going to get a shout out he mentions haskell he mentions small talk and then doesn't mention apl sorry and
my heart broke this you know c++ now has always been the conference that is half audience
participation like i've literally given the same talk in 45 minutes it's an hour and a half talk
at c++ now and it's 45 minute talk somewhere else, right? Because I just expect it to be filled with
the audience. And I mean, I was doing a keynote and I had too much, I had too many slides. I had
over 300 slides for my keynote. That was kind of scary. I knew I didn't have time to just have a
conversation with the audience, but there's actually, if we did it right, you know, we could have a pretty good talks
where it's like, just let the audience speak live
over Zoom or whatever we're using, right?
Just instead of like the one version of my postmodern,
the first version of postmodern,
because I went onto YouTube afterwards
and fixed the closed captioning.
And there's a point in the closed captioning
where I say, you know say it just shows up in the
bottom. It says Chandler asking
a question or Chandler says something.
Then it says dot, dot, dot.
Then Chandler's still
speaking. Dot, dot, dot.
It's like a minute and a half.
It's really good content. It's Chandler.
He's making a great point.
It takes him over a minute to make this great point.
I'm just standing on stage. If you're watching on youtube all you get is chandler still speaking
because you can't quite hear what he's saying right and then of course someone's like repeat
the question for a minute like yeah but you know if you had everyone had a good you know everyone's
sitting at their desks or whatever have have a microphone there you can you could actually get
a good conversation going and you know it might it might be advantageous if we did it right yeah i did the
captioning um i think that year um the context for all the things talk when that went up on
youtube i went and i curated the captioning and i actually sort of turned up the volume
listened in my headphones so i could tell who was speaking and what they were saying and i put them I actually sort of turned up the volume,
listened in my headphones so I could tell who was speaking and what they were saying,
and I put them in the captions for that year.
I was able to get most of them.
You're right, there were so many.
Chandler always sits at the very back, right, though?
He's always at the very back row.
Back right.
I hate your constexpr talk.
I have to officially
hate it. It constexpr talk. I have to officially hate it.
It won the best talk.
My postmodern did not win
best talk.
Were you the runner up that year?
Yeah, I think so. I see. So that's why.
Because I was going to say there's a don't
constexpr all the things tomorrow.
Yeah, I was interested in that one too.
Maybe I'll watch that. Isn't it Const consolation though the awards are named after you yeah
and then along comes carl over next year and sweeps the board
he made up new new categories that only he could fill i didn't make anything up name starts with c see like they never had a first year speaker thing first time speaker award it's actually a really
good idea it's a good award it is i didn't have a chance to win that gretzky didn't gretzky didn't
win uh uh rookie of the year because they didn't you know they changed the rules on them here's
an anecdotal story because i i do want to get back to the...
Did we have a topic?
The unique nature of C++ now, no, because I had something else to say.
But when I joined the Canadian ISO national body for C++, you know,
Michael Wong sent out an email, who's the chair, I believe, of the Canadian C++ national body,
and said, welcome.
And then I'm not sure if it was the first reply, but it was in the first couple. Tony replies,
because he's also a member, and says, my arch nemesis. And here I am, never having met Tony,
never having conversed with him, because I don't think i'd uh i don't yeah i don't think i'd met you yet because you didn't come to c++ now 2019 yeah and um and you're like one of my favorite
speakers and i'm like what what what happened what did i have done no this was this was great
for me like i saw some twitter chat and i'm like hooray now someone else has taken the mantle of
being tony's nemesis but uh but yeah to come back to the uniqueness of C++ Now,
it's interesting, Tony, that you said,
you know, that it's a lot of conversation
because I think both Ben and I,
we both have talks that we only want to give
and have not given up to this point
that we initially had submitted to C++ Now 2020.
And then like, I thought about giving it at CppCon,
but like I, in my head, had like specifically designed
this talk for like the C++ Now experience
because it's just more interactive.
You get more engagement.
And that's, I actually, I wasn't sure what John was gonna do
cause it's obviously difficult, but I did,
there was a, I thought
there was a small percentage chance that it was going to happen in Zoom and everyone would have
the ability, if not to just sort of interrupt, but at least like sort of in Google meetings,
you can start a hand queue and then pass the mic off. Like I thought there might be something like
that, but you know, probably the technical challenges of doing that without it becoming
a total mess i also have
a talk that's c++ now only that that i've been holding off on and it's and it's actually in my
head which so it may never happen now but it's it's a keynote for c++ now that uh that's been
in my mind for years and years but uh because it's a unique conference and so i'm like this this would not
make sense anywhere else it goes back to the basis of mathematics with gotlip frega and birchen russell
and all this kind of stuff it's like i don't know where else to give that talk so maybe someday
maybe it won't be a keynote maybe it'll just be a i'll just give it as a talk that's what i should
do i should just propose it next year or the year after or whatever.
Well, the benefit is that you get to sweep all the awards then.
If you demote your keynote talk to a regular talk,
you're basically a shooter to win everything.
No, I took my best shot.
It's never going to happen now.
Well, I'm expecting the first year back to in-person C++ now
is going to be a hallmark year
with everyone giving these saved-up
talks, apparently.
Yeah.
The other thing, too,
is the virtual conference has 30-minute
breaks. For me,
the best part, which is they call
it the hallway track, but it's the
schedule. Everyone's like the schedule like
everyone's on the same time zone whereas right now we're not like i think tony and i are both
in the same time zone but ben is two hours behind and there's folks in europe that you know signed
up that only watch like the last talk of the day so it's that's completely different which is it's
a it's uh it's got a silver lining in that people from all over the world can attend that might not
have been able to travel.
But one of the really nice things about C++ now is that they've got such long breaks in between talks.
Not all of them are long.
Some of them are only 30 minutes, but they have like an extra long lunch break.
They usually have like a long break in between the keynotes in the evening.
And I can't remember if it was someone in the three of us or someone
else that said that like the fact that at an in-person conference you go and
see a talk and then everyone upon exiting the room is standing next to each
other and it's just everyone just starts chatting about it whereas here
you know it's only a percentage of if we do ever do this again or you know the CP
con coming up or whatever it we need to make sure when people leave the talk you
just automatically end up in the same spot right everyone's kind of nearby or
it's or it's really quick to get to because what happens in a normal you
know in a live talk or in-person talk, people walk up to the stage,
the people who, for whatever reason, don't want to ask a question to everybody, but they still
want to ask the question to the speaker. And so they go up to the stage after, and that's great.
I'm quite happy to answer those questions after the talk, right? And you end up, yeah,
you end up with good conversations. And I mean, at C++ Now, you end up going to lunch.
That's like-
Right, and then writing a paper.
Yeah.
Whatever.
If you ever wanna get hooked
into doing some work for the committee,
all you gotta do is ask a question
after a committee member gives a talk
and then you'll be writing a paper for them.
Who doesn't want that?
But then you get to say, I went out to lunch with,
you know, somebody, somebody want to go to lunch with the Tony of the Tony Awards
of C++ now I think that's how I think I first met Bjorn Bjorn a big on to lunch
right at a you know he came and spoke at Adobe one time it's like then we all had
food and I'm like I could just go and sit next to this guy. Yeah. Well, that's how that's how it is.
It's a C++ now. Right. You know, I I come in never.
You know, I roll into the conference, never really been part of the community before.
And I'm having a problem with some C++.
So I go and ask Chandler how this is supposed to get optimized.
And he tells me. Right. Yeah.
That's literally the exact interactions like that happen all the time
yeah it's literally the exact same mine was several years after you ben but i showed up
absolutely know it like i'd never been to a conference in my life let alone spoken at one
or vice versa switch those two around and then the slide in my algorithm intuition talk with
adjacent difference calculating fibonacci like that came from a conversation with ben where i was saying oh you know you can do from a conversation with Ben, where I was saying, oh, you know, you can do Fibonacci with transform. And then Ben was like,
hold my beer, you know, you can do Fibonacci with adjacent difference. And I was like,
no, you can't. And he's like, yeah. And then I thought about it for a second. And I was just
like, oh, my God, that's one of the worst named algorithms ever. Like, how are you going to
recognize that that's, it's just adjacent elements, You can do anything you want. You don't have to subtract. And yeah, that experience is, it's like, I don't want to say
it's a C++ now only thing, but it just, it's those kinds of conversations seems to happen a lot more
for whatever reason. Speaking of, you know, coming up with pieces of your talk while you're talking to people uh i i'm making the i'm making my lightning talk right now
so you want to give us a sneak peek no i don't want to give you i want you to give me
i need stuff for my stuff all right so so so like i mentioned i barely mentioned it yesterday
and and phil i got it from Phil, right?
Phil did a talk on Solid.
In his talk, he references Rich Hickey, right, who did Closure.
And Rich Hickey does a talk called Simple Made Easy, right?
And he goes into the Latin, simple and complex.
They come from Latin, plecto and plictere and all this stuff.
And it's all about fold.
And, you know, simple as one fold and
complex as many folds interleaving. And he uses this old word called complex and complexing
to mean entangling and interleaving. Right. And that's what happens in our software all the time.
Things get entangled. Like, you know, it's kind of half of my talk yesterday. Right.
So it's kind of like while I was giving my talk
yesterday and after my talk as real I realize it's like I want my lightning
talk to be complecting made easy right because because it's exactly what
happens like why is our software you know turn into crap is because we make
it too easy to let it turn into crap right it's it's the
the easy answer to solve a problem is like the one that entangles your code right so you know
having a lot of uh data close by is basically and so and the other half is that easy the the
the term easy um also comes from you, you can trace it back to Latin.
It's kind of fuzzy.
They're not really sure, but it comes from adjacent, which is, you know, like adjacent.
It really means close at hand.
Easy means close at hand, right?
So, complecting made easy is what our code does.
We put things close at hand, and we're just like, hey, did you want to solve this problem? All you got to do is, is this thing's right here. You could just braid them together.
It's just, if we're just tempting you, we put all this stuff in the right spot. Why don't you just braid it together? So, I mean, one thing I, like global variables, I should, I have to write this
down because I keep forgetting it. Maybe I won't make my slides, but I'll write, I'll write it down
while we're talking. Global variables, right?
Global variables.
It's right there.
I could just read this global variable and, you know, complex my code.
And then the next best thing to a global variable is?
Shared pointer.
Shared pointer.
Thank you very much.
Yeah, shared pointer.
What we have in our code is a class called model
that I always bring up right everyone has a pointer back to model it'd be okay
to have a model that owns everything because you always are stuck with a
class that has to own everything otherwise things just disappear right
right but everything has a pointer back to model so I have places in my code
where there's literally five layers deep of, I've got model as a member variable and just a raw pointer, right?
Pointing back to my parent, right?
Model pointing to foo, pointing to bar, pointing to thing, pointing.
Ah, that's what I needed.
I needed this piece of information and I can get at it through this five step path.
Model is the convenience store.
Yeah.
Yeah.
It's all there.
You just go to model.
So having exposure to model is complecting made easy. It's like, it's all there you just go to model so yeah having exposure to model
is complecting made easy it's like it's right here you don't have to make up an interface you
don't have to put in the right function for how you know i should have this information should
have been passed down to me through three layers of function calls that that's that's hard that's
correct code made hard right like uh simple simple is not folding your code together.
So simple is hard to do.
And complecting is easy to do because we expose model.
You know, that's the problem in our class.
So I've got three examples.
I need more.
How is complecting made easy?
I think there's a time element, I was going to say,
because Rich Hickey in his talk talks about easy is a function of mental ease as well, right, which is a function of time, right?
What's close in time, what you immediately think of is the easy.
When you're given time to reflect and work on a problem, then you perhaps come up with something that's simpler.
Yeah, and I also find people, you work from an area that you already know, right?
It's like, well, I know this part of the code, and I've touched this class before, so I'll just go from here, right?
I've got, this is the information I know, and then I will just, it's like, well, you know, if you just went over there and asked that other class to give you the thing you want to know, that would work.
And you're like, yeah, but I've never touched that class before.
I don't, I don't want to touch that code.
It's easy to write code.
It's easy to just type.
It's harder to grep and find the interface that already exists, maybe.
Yeah.
This isn't really an example, but twice now, this has come up, like it's popped into my head while you've been talking, Tony, is I'm not sure if Yarnastrewship was the first person to hear this or to say this, but it's where I heard it first, is that so many people mistakes familiarity for simplicity.
Yeah.
And that because it's what you're used to working with, it seems simple. And then some new thing that potentially is unfamiliar looks
complicated. But if you take the time to restructure at the end of the day, it actually is,
it is objectively simpler than what you had before. But what you know, like sort of affects
what you think is simple. Yeah, that is, and that is what Rich Hickey's talk also mentions, right?
That is, it's almost literally close at hand. It's close in your knowledge base, right? It's like, think is simple yeah that that is and that is what the rich hickeys talk also mentions right that is
it's almost literally close at hand it's close in your knowledge base right it's like i already know this and this is just one step away from what i already know it's familiar right it's like oh i
already know whatever this language or you know you you solve a problem like we get that when
we're interviewing people right interviewing i showing, I show someone this problem.
Hey, can you solve this problem?
And you'll see someone solving it with like, I'm just like, why would you think of this as their, you know, I'm going to solve it with probability.
Something, something and fine.
And I just listen to it.
It's like, oh, because the last problem they solve, they solve that way.
Right.
It's just like I'm familiar with solving problems with this technique. So I'm going to try to apply my technique to this problem. And
I'm like, okay, let's try something else. Cause it's, this is just not, you know, you don't want
to just tell somebody you're totally going down the wrong path, but I give them time. And then I
go like, that might work, but what else? Give me some more ideas on how that might work. You know,
give me some other way to solve this problem. But really what I'm saying, I'll let you know if anyone interviews with me, if I start asking you for other ideas and I don't say your first idea is wrong, I'm really saying your first idea is terrible.
Just in a nice way. It's like, oh, that is pretty interesting. But what other ways do you think you could do this? This is cause now a great future moment, the moment that is yet to happen
of when this happens,
when you're interviewing someone
that just happens to have listened to this episode,
you say that and they're going to be like,
oh no, it's terrible.
I listened to that episode, Tony.
And you're going to be like,
oh, well.
We may not be,
your friend Ahmad, right?
Yeah.
We were just talking to yesterday.
I've been talking to him about like working here as a co-op.
Right?
So we could be this far away from it happening.
Cool.
I'll change my phrasing.
I'll just try something else.
So I gave a talk at the Denver meetup a few months ago now.
And it was one of those talks that was,
I needed to give it at the meetup
because it wasn't a lightning talk
and it wasn't a full talk.
It was in that 20, 25 minute range, which is so annoying.
But the talk was called the blacksmith and the gardener,
meaning the two sides of what we do.
Sometimes you're a blacksmith,
sometimes you're forging things, you're bending the code to your will, you're a blacksmith. Sometimes you're forging things.
You're bending the code to your will.
You're typing, typing, typing.
But that needs to be balanced with the gardener,
which is you're just letting things bloom, right?
You're letting yourself reflect.
Because so often I found myself having the experience,
as we all have.
The cliche is you solve the problem in the shower or on the run or whatever,
in times when your mind is quiet.
And the experience you have, if you're lucky, is that you get a task to do, you solve it, done, you manage to knock it out, done.
And if you're lucky, like a week later, you realize there's a simpler way to do it.
Oftentimes, you're not that lucky, right?
And so the thing stays in the code, complexified.
I just do it right the first time.
Why doesn't everyone just do it?
I never understood this, why people are always like, you know, throw the first one away.
I'm like, no, the first one was good.
That was one of the best parts of your talk when you just said you were like, yeah, I don't want to come across as overconfident, but most
of the time I just get things right. That's, it just happens to me all the time. I had this
student working for me years ago and she was great. One of her best features was that,
you know, we'd be talking about some stuff and she'd go off to do some work.
And she'd come back in about, you know, the end of the week or something.
And she'd be like, okay, I was doing this stuff like we said, and I ran into this little problem.
And I went this way, you know.
She describes the problem to me.
And she's like, it wasn't a big deal.
But I wasn't sure, but I went this way.
And I'm like, yeah, that was a good decision, right?
And then she goes on. I also did this thing. and we hadn't talked about it, but I thought this
made sense. I'm like, yeah, makes completely sense. And then she goes, and now I'm here,
and I'm not sure which way to go. And she was really good at knowing this was a big decision,
and she should stop, right? And just like, she had her opinion, but she knew that she should
ask somebody, because it was, you know, she recognized it was a big decision.
I thought that was great.
Like that's a good insight into the whole world of programming.
And so she discussed the problem and she'd be like, you know, I could go this way.
I could go left or I could go right.
You know, blah, blah, blah, different ways of doing it.
And I'm like, yeah, yeah.
And I find that i can always
understand yeah that i see how that makes sense i see how this one makes sense you can give me
five different things i can see all five point of views you know it's really bad for being
political or something like oh yeah that makes sense you know like no tony that one doesn't
make sense that'd be bad those people are, yeah, but it sounded like, you know, but, um, but she would go
through the things and she was like, which way should we go? And I have this gut instinct of
which way we should go. And I'm like, well, this one makes sense to me, but I can't say why I think
it's better than any other way. So I usually would just say, whichever one you're most comfortable
with, because you're going to be the one writing the code.
And unless I see like why it's obviously wrong or something, it's fine.
They're all they're all roughly equivalent. Go in whatever direction you're comfortable with.
And then she would go off into another direction and stuff like that.
And then like three months later, be like, oh, we both see it like that was not the right direction.
This is we should not have gone down this way. It's like, let's do it this other way that I think just feels right to me. And it wouldn't, we'd never
come back to that. It would always be like, yeah, that one worked out. And eventually after she was
there for a couple of terms and stuff, eventually she's just like, I'm just going to do it your way.
Okay. Whichever way you don't have to explain to me why you think it's the right way. We're just
going to go with yours. And I'm like, all right. Let's just call it experience or something.
It's just, let's go with my way from now on.
It was good. We both agreed
that, you know.
That you're always right.
And it worked out.
It was true. The stuff we did,
it was right, and we went on with our day. I don't know.
Yeah. No, that's a good...
That sort of rings true.
You know, I was thinking the other day,
the answer with C++ is always it depends, right?
Right, once you get past a certain level.
And so it becomes harder and harder to give a definitive answer
when someone comes up to you and says, you know,
they're looking for your opinion, they're looking for,
what's the right, well, they're not even looking for your opinion,
they're looking for you to give the authority.'s the right way to do this yeah how am i
supposed to do this just tell me and that's a really difficult question to answer because
it's always it depends and so you know maybe the way to go is well you know here's here's
the experienced way it's not necessarily the the authoritatively right way i'm saying but but here's
how i would do it and i and i think think is, because I've spent a lot of
time trying to figure out, because the sad part is I literally could not tell you why I think one
way is better than the other. I just think it is, right? It just feels like the right way.
And it wouldn't be till later on down the road where we're like, oh yeah, this is why
that was bad and this is good. But I know after I've spent time trying to figure out what is it,
and it really is keep your stuff separate. It's just like my instinct is to separate things.
And I find that that instinct does not, does not fail. Right. I did it in, I did it in math. I did it like, you know, it's, it's a mathematical thing in my head. It's, it's abstraction and stuff. It's
like, you know, these concepts are separate. Keep things separate.
And then even if something isn't wrong, it's okay because it's all separate and you fix the one piece, right?
It's like the whole thing's not wrong.
Right, right.
I don't know.
Yeah, Ben, when you were saying that when people ask, you know, how do you do this, that reminded me in my very first job when i had become experienced sometimes folks would we would have some small job that needed to be done and be like oh well
can you just give me the first couple of steps and inevitably like if i were actually doing it
there's like a series of like six disjoint things that i would try like and they're all ranked and
i would try the first one realize oh no that's not going to work, then try the second one, that's not going to work, and then on the fourth one of six,
okay, no, this is the right way to do it, but when someone asks you, like, oh, how to do this, you,
I typically just tell them the first thing, and I'm just like, oh, I would go down this route,
and then, you know, 60 minutes later, they come back and say, well, I tried that, and it's really
not working, and then I go and sit down next to them and, oh, yeah, yeah, that's clearly not going to work.
So why don't you just give them the fourth one first, man?
Because I don't even know that the fourth one is the right one.
And that's why I think, honestly, like pair programming,
I absolutely love pair programming,
especially when there's a person at work,
his name's Ashwin that I work with at NVIDIA,
and he's like a Python expert.
And I'm a quote unquote C++ expert. And because of our library that we work on, it's Python bindings. Yes, expert with the quotations.
It's the only way to do it.
You can be an expert in other languages. In C++, you have to put the quotes on it.
This is a tangent, but I have recently, inside my head, I used to put the Scott Schur quote at the beginning of my talks, whereas I'm not an expert.
I'm just a dude.
I have a new quote that I don't even know who said.
I just heard it.
And I was like, that is perfect.
And it's the more I learn, the less I know.
And it's this idea that, like, I like learning a bunch about different languages and paradigms.
And, like, so I'm learning this stuff at a very surface level.
And just all I'm doing really is discovering that there's so much more that like, I don't know.
And so as I learn more, I feel less and less of an expert and more and more of like an imposter.
This though is the hallmark of expertise, right?
The way I've heard it said is the larger your island of knowledge, the longer your coastline of ignorance.
That's wow. Where'd you hear that from? We of ignorance. Hmm. That's wow.
Where'd you hear that from?
We got to.
Somewhere.
We got to Google it.
Yeah,
I'll try and find that's almost more eloquent than when,
than what I,
when I had said and what,
so what I was saying expert,
right.
Cause we were talking about pairing and it's just fantastic because we both
sort of acknowledge like that.
We have our areas of what we know and
there's just so much teaching and and where you're the driver and the expert sort of is the other
person guiding you it's just fantastic because there's so many times where inevitably you know
that if you were by yourself you're going to spend an hour or two hours or three hours trying to
figure out how to do this and then they'll quickly they'll see you going down the path and they'll say, okay,
that's a really good thought, but like, let me just fix that. And it's, you just learn,
it's like concentrated learning. And I just, it's, it's fantastic.
A friend of mine, a coworker, he used to, if we, if he was watching you code,
he would just slowly start making a noise. He'd just be like,
uh, uh, uh, it just kept worse. You know, if he just kept going, he would just slowly start making a noise. He'd just be like, eh, eh,
eh,
it just kept worse.
You know,
if he just kept going,
he's just like,
eh,
you're like,
oh,
I should stop now.
Yeah.
If it was just like,
you're missing a semicolon,
it would just be a tiny little noise.
Right.
And just like,
ah,
that compiler will find it.
But yeah,
if you really started going down the wrong path,
you just increase the volume.
So you stopped.
All right. Well, we're, we're at like the hour mark here. And I realize I've already kept you 30
minutes into the next talk, which I was super looking forward to. So I'm not sure.
Which is the next one you're going to?
There's one called algorithms as expressions by I don't.
That sounds like something you'd go to.
That sounds great.
Yeah, it's by I'm going to mispronounce this name. So I apologize. Uh, Alexander, uh, Bakarikov. Um, you could have just
went with Alexander, just like, you know, how many, there's probably not more than one talk by
first name. I can get the first name. I'm probably sure that I mispronounced the first name anyways.
Um, but if, if I hop into that one, uh, I'll have to catch the first 30 minutes later.
But is there anything, I feel like too,
we've mentioned a lot of folks by first name.
So Chandler refers to Chandler Carruth from Google.
Eric refers to Eric Niebler from Ranges V3,
currently works at Facebook,
but did the pioneering work behind
what's become C++20 Ranges.
I feel like we've mentioned a couple other people.
When I'm re-listening to this
if if i haven't mentioned the last name i'll try and just just because i recall listening to cpp
cast episodes early on and people would refer to like herb and i didn't know who herb was
and we just as c++ers we we have we assume everyone knows that herb sutter is the chair of
the c++ iso bernjarne Stroustrup. Yeah.
I think I said his name, so it's like, yeah.
That's the creator of C++ for any non-C++.
I assume every C++-er knows that, but there might be a...
You know, it's funny.
I hate doing reviews at work, right?
It's like you get the yearly review or whatever kind of crap,
which I just don't.
If you're not reviewing, I'm sorry, you're trying to end and get out of here. But if you're not
reviewing all throughout the year, like you should know what your manager's opinion of you is. And
your people that you're managing, they should know how you feel. It's not a one time a year thing,
right? But you fill out these forms. And like, so I got to the point where I filled out the forms with quotes from co-authors, from
co-workers, right? It just like, it just looks like a movie poster. It's like, awesome idea,
Tony, you know? And I just put, I put down, I remember this one, it said, awesome idea.
You know, Christine, Christine said, awesome idea for some, it was like lunch plans, but you know,
they don't need to know that. But I included, I remember including a quote from Bjarne. I just
had like a plus one from Bjarne or whatever, something like that. And then I realized my
manager doesn't know who that is. Like, like it's such a good thing that I put on my, it's like,
look, Bjarne Struestrup likes something I said. And then I'm like, oh, this is going to get lost
on my manager. But yeah know everyone else knows who he
is yeah that's uh that's a good uh I listen to a podcast called the ladybug podcast and uh one of
the biggest things they say is whenever someone like says something nice just jot it down just
if you at the end of your year when you're putting together like some not all companies but a lot of
companies you have to write your own sort of performance review and send it in.
If you have like, if 50% of it is just like coworker X,
you know, said this positive thing about this PR
and coworker Y that I spent some time teaching said
this was increased productivity five X for a week
or something, that is like the best stuff
that managers wanna see.
Well, especially when, it depends what you do, right?
Like if you are someone who just writes code and you can just say like look go look at the at the
code the source code like you can see all my check-ins right like that's just here's all this
work i've done half my job is not typing code right so i need to be able to say like what did
you do like even even stand-ups every day at stand-up, I say what I think I'm going to be doing today.
And then I know that's not what's going to happen
because other things are going to happen.
Someone's going to have a problem.
I'm going to go do that.
So I don't know why I bother.
And sometimes I do.
I just say, you guys know whatever I say is a lie.
So I'm going to think of doing this,
and I'll do something else because that's the way it goes.
Yep.
All right. Any last parting C++ now 2021 words?
Oh yeah. And also I said, Ben, I cut you off, Tony.
I just said, Ben didn't give a talk. He did give a lightning talk on four CCs.
Oh, I did. I'm not going to give another one.
Yeah. Featured the guinea pig, one of his four guinea pigs named Iota,
which obviously everybody should love that name.
And apparently you're giving another one.
You've already heard Tony's giving a –
Maybe.
Do you know what the name of your lightning talk is, Tony?
And Ben?
Oh, mine is When Paradigms Collide.
Ooh, maybe APL is going to get mentioned.
I have to, I'm like, I'm under the wire here.
I've got like an hour to make slides on it.
I haven't even like put it in.
I mentioned to Michael that I might have a talk.
I haven't formally put it in there, but yeah, we'll see.
See, you have to leave it as, well, I already told you it's
complecting made easy.
That's what it's going to be called if I ever get to it.
If I don't get to it now, I'll do it next conference.
And here's the final parting words.
You know, Tony gave a secret short lightning talk yesterday at the aforementioned conversation where we missed Barry's talk,
where he showed his Fabio long hair from I'm not sure what year.
I'm sure that was just a couple weeks ago.
A couple weeks ago.
It wasn't 20, 30 years ago.
25 years ago.
No, this is my COVID look.
Maybe it's just too easy to type.
That's the ultimate thing.
It's too easy to type anything, add a variable,
add a function
parameter.
Even writing code inside
I already just wrote
add a member function is easier
than starting a new file.
That's why you make
member functions.
I get this all the time. People are like, where would I put that function?
Do I put it in this file?
Do I put it in a separate file? And same thing
with, I could just write code here
in the function I know I need to change.
Instead of adding a function.
Instead of adding another function.
I've got enough for a talk.
Sure.
Sounds good.
Well, thanks for taking the time
to tune in and share your thoughts about the conference.
And hopefully 2022, come May, we're all going to be in Aspen.
Hopefully.
I mean, I've got my vaccine appointment for Sunday.
I just locked it in last night.
So the world's hopefully going to be going back to normal.
Yeah.
My second vaccination is coming up as well.
This is going to be so weird.
Cause I'm not sure how many people are like me and go back and watch podcasts
from like 10 years ago and go from zero to episode 150,
but there's going to be people like 10 years from now, you know,
a handful of them that are listening to this as well. Oh yeah.
I guess there is that crazy virus that really messed things up for a while.
Let me just slip in the rest of the political like i there was a point where i was saying even before this covid
wasn't we really didn't know what's going on with covid but i was just like i'm not going back to
the states like your country's on fire and and like i just i'm just gonna avoid this country but
like i'm kind of hoping the this not just covet but other stuff settles down and
well i mean i hope it makes not just settles down because you go back to the way it was but
you know progress is made uh but yeah for a while i was just like i don't want to go to this
your country sucks but it's not so bad it's not Canada, you know, but.
All right, on that note, and we appreciate all the American listeners
that have tuned in up until this episode.
Look forward to the-
Move up to Canada.
That's an idea.
Yeah, we'll start that.
Tony was talking about a second Canadian conference after CPP North,
which hasn't even started yet.
It's going to be like the Muskoka Wilderness.
Muskoka plus plus.
That's not a bad name.
No one will understand that.
Oh, is this going to have the – are you going to do a talk,
which is also a hike?
Oh, that's still a plan for aspen someday
someday i'll do the hike talk i was talking to bryce about that a little while ago he's like
we have to really do this instead of just talking about it to be clear this is not uh you know
tony with like a a gopro giving a talk while he's hiking it's him giving a talk
while everybody's hiking right yeah that's the plan you're breaking
up well it's every second word uh my plan is actually you guys go for the the walk and i don't
that that that is part of the plan i'm gonna put like little uh markers along the path oh nice for
you to discuss that's that's my plan.
Oh, wow. That sounds like the problem is like, we can't take,
we can't take 60 people or whatever together and do a talk in,
you know, cause cause the past too, too narrow, you know,
so you have to break up into smaller groups.
So we need a way that each group on its own can experience the talk but you know and and we need to i think line the route with like cpp cones yeah exactly that is that
you're you've got it that's what it's going to be um and and i might need i need uh you know uh
group group leaders right so i might you know hook you guys in to be like okay you're taking one
group of 10 and you you go this way you take another group of 10 you go that way and i'll just hang
out at the yeah at the barbecue or something wait for you to come back this sounds like a whole new
category of you know this is gonna be it's gonna start in c++ utopia and then it's gonna spread to
every other language yeah yeah That's a good idea.
I look forward to it.
All right, we'll have to make it happen.
All right, 2022.
Now you've locked it.
This is going out into the ether.
People are going to hear it
and they're going to be disappointed
if it doesn't happen.
All right, we'll make it happen.
We'll make it happen.
We could save it for the Muskokas.
You start putting a conference together, Tony,
and I'll be the first one to sign up.
I can't even organize.
I'm supposed to do talks at work every second Monday.
I can't get that organized.
So don't expect me to be doing a conference.
You do a conference, I'll show up.
All right.
That's how much I'll do.
I'll think about Muskoka++.
Although, you know, if I end up setting up a conference, you know, like there's going to be an APL dedicated track.
Yeah.
See, if it's got nature involved, I will learn APL just for that.
Wow.
Maybe that's the angle.
I'll make APL great again by, you know,
bringing nature into the mix somehow.
Yep.
All right.
This is for the third or fourth time uh thanks
for coming on this was awesome thanks connor thanks for listening and have a great day