Algorithms + Data Structures = Programs - Episode 100: Programming Language Logos, Top 3 C++ Features & More!
Episode Date: October 21, 2022In this episode, Bryce and Conor chat about programming language logos, code formatting, the top future C++ features and more!Link to Episode 100 on WebsiteTwitterADSP: The PodcastConor HoekstraBryce ...Adelstein LelbachShow NotesDate Recorded: 2022-10-16Date Released: 2022-10-21The Swift Programming LanguageThe Racket Programming LanguageThe Clojure Programming LanguageThe New APL LogoMind in Motion by Barbara TverskyNudge by Richard ThalerThinking Fast, Thinking Slow by Daniel KahnemanAmos TverskyThe Peak-End RuleC++’s Clang-FormatPython’s BlackPython’s PEP8NVIDIA CUB LogoADSP Episode 99: Moby Dick & Our Favorite MoviesO3DCON by Linux Foundation ConferenceTop 3 C++ Features #1: ReflectionTop 3 C++ Features #2: Pattern MatchingTop 3 C++ Features #3: Senders & ReceiversC++ std::variantC++ std::optionalRust enumC++ std::expectedSy Brand’s tl::expectedPython resultC++20 is Here! (ISO C++ Prague Feb 2020 Vlog)Intro 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)
This is evolving into an actual disaster at this point.
I think I got it. I think I got it.
Welcome to ADSP The Podcast, episode 100, recorded on October 16th, 2022.
My name is Connor, and today with my co-host Bryce, we talk about a ton of things.
Programming language logos, code formatting, Bryce's upcoming trip to O3DCon, and so much more.
What programming language has the best logo in your opinion?
Ooh, great question.
Great question.
To start off, what are we starting off here, Bryce?
What are we starting off? We're starting off with great question. Great question. To start off, what are we starting off here, Bryce? What are we starting off?
We're starting off with my question.
Bryce probably doesn't even know the significance of today's recording.
It is episode...
Number 100, right?
Number 100, which technically...
I did know that.
I did know that.
I knew we were getting close.
I wasn't sure if it was going to be this time or the next time, but I knew we were coming up on it.
So we've got some special things planned for today.
First things first, what is the best?
So technically, what is the best programming logo?
I'm going to take my mic and zoom out into the background here off screen
so we can see all of them.
So what do we have?
Actually, let's go through them all first.
We're just going to list them all off.
D, Ruby, Scala, Swift, Lisp, Racket, Java, Basic, OCaml, the Dialog APL logo, Kotlin,
which technically is out of date.
Kotlin used to have like a blue, purple, orange one.
Now it's just this like single color, no multiple triangles, single color, purple, pink.
I actually like it better.
So Kotlin's out of the running because it's no longer exists in this form.
Lua, Pascal, Python, JavaScript, which is the yellow box.
C++, Dart, TypeScript, J, F sharp, Clojure, Go, Smalltalk, which actually really Smalltalk
doesn't have a logo.
That's the cover of like the 1972 Byte Magazine or like that uh groovy elm c-sharp some people would debate that
that's not the official c-sharp logo which the real one i think is a circle but it looks stupid
so i use this one um elixir haskell php r algol rust erlang cobalt and seed what's your what do you think the best uh logo is here
hmm i think off the top of my head the swift logo
interesting interesting calls out to me why do you like that one the best I think that it's like most creative.
You know, it's this little like bird that's swooping down
and it captures like, you know, motion.
And so it gives you a sense of, you know,
motion or speed or swiftness.
And, you know, that's obviously the name of the language.
I think also that's one of the goals of the language.
And I think I should explain.
I don't know anything about why they chose to call it Swift,
but my impression of the language is that it's a language that's meant to be easy to use, fast to develop with, but also a language that is, you know, lets you write fast apps. And all that's captured,
I think, by the logo. A lot of the other programming language logos are like,
you know, the name of the thing with some form of fancy text or shape around it.
And some of them are just like really just the name, not to bash on any,
but Algo and Cobol, I'm kind of looking at you.
Yeah, I mean, those are sort of stretches, Basic, Algo, Cobol, Cobol.
I'll tell you, like, for my requirements, some of them immediately get ruled out as ones that I don't like.
Because one of the criteria, I don't have many criteria, but one of the criteria for logos is I want them to have the same dimensions and width and height.
Because a lot of the times when you're trying to put, you know, five logos next to each other on
a cover slide for a talk, I don't want to have to manually adjust that stuff. And when you have
something that is either super narrow, like the Scala logo, or super wide and short, like the
ones typed out like Basic and Algo, PHP fits into this category as well. Java also doesn't look
super narrow, but it actually is because of the lettering
underneath. Whenever you use those automatic sort of distribute by width to sort of align things
nicely, those logos always mess it up. Whereas if you have nice sort of boxy logos, usually you can
use that quite nicely. So Go also is a logo that is sort of very um wide and not very tall so my favorites
and i i like ones that um are very polished so like swift fits into that category i think my
personal favorites are the lisp logos not the one in the bottom corner um but the closure and racket
logos those are very nice and i think actually the Clojure one was designed by the brother of Rich Hickey
who created the language, which is kind of a neat story.
I think actually C++, D, they all have great logos as well.
Yeah, I kind of like the C++ logo.
What's the logo that's on the second column bottom?
That's the specific to a company Dialog Limited APL.
You see, if you told me that with no contacts
or just knowing what the C++ logo looks like,
I would have thought that was the D.
Yeah, this is out of date
because we actually have a new Apple-like logo for APL in general.
And one of the criteria, this is not actually what I think. What does Apple-like logo for APL in general. And one of the criteria,
this is not actually what I think. What does Apple-like mean?
Apple, so actually let's get it out.
Let's get it out.
And we promise we've got some other topics to get to,
but let's, I'll actually, how should I do this?
Should I just send you, I'll just send you a link.
And we'll put this in the show notes for sure.
I can open links.
APL logo. And we'll put this in the show notes for sure. I can open links.
APL logo.
And we're just – Although I don't have my keyboard right now because I'm packing up and going to Austin for two weeks.
Going to Austin?
Yeah.
Yeah, Austin, then the C++ committee meeting in Hawaii, and then the ISOJTC one committee meeting in Japan.
Wait, I thought that was in February.
No, that's in November.
Oh, interesting, interesting.
All right, we'll talk about that more in a sec.
APL logo in the chat.
Oh, I like this one.
So why the Apple, though?
So a lot of stuff in the APL community, there's a lot of apple puns because APL can sort of be pronounced apple.
So there's a lot of like and I think historically going back to like conferences that were in the 70s and 80s,
they would give out a lot of stickers and swag that had apples and like I heart APL in it because of the
pronunciation. And so one of the criteria for I think lesser well known languages. So I actually
like the Swift or not the Swift, the F sharp logo quite a bit, which is the little purple diamond.
But for less well known languages, which is the term that I'm referring to for languages that some of them are esoteric, but some of them are not esoteric, but they're also not mainstream.
And I think non-mainstream is a bad term.
So I've started to use the phrase less well-known for languages that fit in that category, APL of which is definitely one.
If you're going to create a logo, I think you inevitably have to put the name of your language
because when people see the diamond that's blue,
inevitably, and even Clojure,
even though I like the Clojure logo,
everyone's like, what language is that?
Because they don't know.
Yeah, yeah.
And you love to just use the logos in your slides.
And this has been, I mean, I love how you make your slides, but this has been the one thing that I've mentioned to you, you love to just use the logos in your slides. And this has been, um, I mean,
I love how you make your slides, but this has been the one thing that I've mentioned to you.
I think, uh, once or twice in the past that sometimes I'm seeing your slides and I'm like,
I don't know what that is because it doesn't have the, um, the name in it. Um, I think what
Russ did too is like, even though Russ didn't put the name of it and it's gotten pretty popular,
but like having an R or, or like some to indicate give like give them give someone who doesn't
know like a shot at guessing is like that's that's a bare minimum I think um you know it's
you know I was talking about logos or programming languages sounds a little um maybe superficial but this is
things like logo
and design
and how we represent
things is actually I think something that both you and I
have a great interest in
you know we've talked a few times in this
show about how we both take
great care in
how we make our slides
and how we present stuff and one thing that I think we both do that we appreciate greatly in each
other's slide content is our,
our use of diagrams and visual representations.
You know, I almost, I almost as a rule, you know, if I'm making a slide,
I try to think, how can I have this slide have like no text? And if it's a slide that
just has text and if it's code, then, you know, that's one thing. But if it's a slide that's
describing something, I want to have some, some diagram or some visual representation. And I think the reason for that is,
for me, I feel like I can convey a lot more. But also I'm speaking. If I'm verbally saying
something to you, I can say whatever I would put on the slide. And I would prefer to just say it.
Maybe I write down a few of the important things in the slide, but I'd prefer to give you, you know, I have this other medium of communicating,
like I'm already going to give you text just in the form of speech. Um, and so I'd like to be
able to give you some, some diagram or something, um, or some visual, um, uh, that represents
things. And so I think that's why we, that's why we like logos. And that's, that's one of the
reasons why you love to put the programming language logos in your talks, right? not just color and graphics and visualizations, but just like, you know, I've heard, you know,
one of the things I sort of call out all the way up to keynote speakers and conferences is like
not using a monospace font in their code examples, which just drives me nuts. And I'll have to finish
reading this book before, maybe we should turn this into a whole other episode, but there's a
book that I'm currently reading called Mind in Motion by Barbara Tversky, who is the wife of
Amos Tversky, who anyone that's read sort of the behavioral cognitive science books that by
Richard Thaler and Daniel Kahneman. One of the more famous ones is Nudge by I believe
Richard Thaler and then also Thinking Fast and Thinking Slow by Daniel Kahneman.
Kahneman and Tversky were these, a pair, I think Kahneman is still alive, but Amos Tversky
passed away.
But they're a pair of these cognitive psychologists, and they have written all these books about
these sort of phenomenons of heuristics and how our brains are really good at, you know,
making estimations and stuff,
but at many times they fail us.
And one of my, I don't think I've ever told this on the podcast,
but in the book, Thinking Fast and Thinking Slow,
which is amazing if you can get through it, but it's a tome,
is this study they did where,
I'm going to, we're going to go on a bajillion tangents right now,
but it's a study where you take a bowl of cold water
and you get people to place their hand in it for a minute.
And it's uncomfortable
but you say oh you know blah blah blah and then they ask people how you feel after that minute
and then they take the same group of folks and whatever some of them do only one some of them
do both some of them do the latter and the latter one is to do the exact same thing put your hand in
a bowl of cold water and then they do that for 60 seconds and instead of ending it there they then
increase the temperature just by a degree
and then have them hold their hand in the water
for 30 more seconds.
And overwhelmingly,
when they ask people at the end of that 90 seconds,
which is 30 seconds more of discomfort,
but it's slightly more comfortable
than just the 60 seconds,
people say that they actually prefer the 90 seconds one,
even though overall,
you're spending more time in discomfort. And this led to Daniel Kahneman terming this basically the peak end rule, which he said is basically that the way that people remember events is defined by
sort of the highs and the lows, like the worst point or the best point, and the very last thing
that happened.
So because their hand is finishing in like slightly warmer but still uncomfortable water,
their view of the overall experience is better than the one that was shorter but ended in like colder water.
And like the way that he parlays this into society is he's like, and this is kind of,
you can see this show up when people say, you know, don't go to bed angry, you know,
fighting with your significant other because you're going to remember that. Or if you go on some day trip or vacation, if the last thing that happens is like something negative, you kind of remember the whole thing
as a negative experience, even if like the whole day was great and you just ended on this one bad
note. Anyways, I just, I find stuff like that incredibly fascinating. Anyways, back to this
book that I'm currently reading, Mind in Motion by Barbara Barbara Tversky, who's married to or was married to Amos Tversky.
It's all about like the thesis of the book is that the foundation of thought is built upon visual thinking and visualizations as opposed to like Noam Chomsky's like the foundation of all thought is language.
So it's like, you know, there's this one school of thought that thinks that all of our ability to
think and come up with ideas and stuff is based on language at the bottom of
this triangle languages at the bottom.
And she's saying,
no,
no,
no,
absolutely not.
It's based on like the ability to think and visual or not to think to
visualize,
um,
with like structure and images.
And,
uh,
I think,
I think I,
I like wholeheartedly agree with this,
this theory because there have been times where I've taken some like basic notes or whatever and then structured it into some kind of like Venn diagram or flow chart.
And then immediately from like adding structure to some information, you make some observation that you wouldn't make otherwise if you were just sort of like taking notes or whatever. And I think this ties in and back to the code examples is that like when you get rid of
the monospace fonts in code, your ability to like pattern match on certain things, like
that's why I like in my code aligning.
If you're assigning a bunch of, you know, the results of functions to variables X, Y,
and Z, if those variables have different length variable names like a bb ccc i like lining up
the equal sign so you can very clearly see the names of the variables on the left yeah i did
the same thing and it's interesting because that that that particular thing um i very rarely see
folks do that i know it's something that both you and i do yeah um it's a setting in clang format yeah yeah um uh but uh
it's not it's it's something that that that uh you know it's sort of my career before
clang format was a thing um i used to manually do you know i would manually well i manually do it
but i used to whatever team i was working with they would always be like what are you doing like
this is weird like don't do that yeah i've had people say that as well. Yeah. But, but it's, it's funny that that's
something, something that we, we have a very similar sense of style when it comes to code
formatting. Yeah. It irritates me like Python. I can't remember cause I don't use in my personal
Python code black or pep eight, but I think both of them don't do that. And like, if you use it,
it automatically
you know shifts your equal signs to one space after the variable name and um yeah it just it
doesn't make the variable names pop and it even like it affects the way that you name things
because you kind of want all your variables to have you know roughly same length names because
if you have everything that's like you know three to five characters and then one that says you know, roughly same length names, because if you have everything that's like, you know, three to five characters, and then one that says, you know, factory, you know, deprecator,
blah, blah, blah, that's like 20 characters long, it then shoots all your equal signs out,
you know, with you have a ton of space. Anyways, yeah, I think we should we should spend more time
talking about this in another episode. One of my, I'm trying to find it one of my favorite uh uh logos that i've made for something um i i
just over the years i have fallen into the role of being the um the unofficial designer yeah the
unofficial graphic designer for a variety of things um but one of my favorites is the, is the cub logo, which I can't take that much
credit for because the design is actually based on something from the cub documentation.
Um, and it's, uh, this diagram, um, the one of the, like the web, right?
With the letters.
Yeah.
It's just like this little like web that shows, um, uh, it that shows a series of lines and then dots,
and there's dots in the lines.
There's like eight lines that are in parallel, and there's dots,
and it shows how a parallel reduction works.
And then there's lines, there's those primary lines,
and then there's connections between those lines, between the different dots,
showing the values from these two threads are reduced into one, and then there's connections between those lines, between the different dots showing, you know, these,
the values from these two threads are reduced into one and then et cetera,
et cetera, they all get combined together.
And I can't remember if the diagram that we use for the logo is the one from,
from a scanner or from a reduction.
But I, I saw that in the, the comp docs and I'm like, you know, we,
we haven't
had a logo for Cub
we really need one and Cub
is this you know parallel
algorithms
primitives library
and I was like this is just the perfect thing
and
I made a sort of stylized version
of it and I've been very happy with it
and you know
some people might think like know it's some people
might think like oh it's so silly for libraries to have logos but like it's no it's false like
it's just i i'm sure there's some study that has either been done or that could be done that would
prove that people are easy are able to build like connections and remember things better for companies if they have some really memorable logo.
The same way that more people know what Amazon is than know who Jeff Bezos is.
Don't get me wrong.
Bezos is a famous guy.
But I'm sure there's a ton of places in the world where if you ask someone who Bezos is, they wouldn't know.
But if you ask them what Amazon was, they definitely would know. I think the same can
be said about logos. Like if you were to ask folks, you know, what the golden arches are.
Yeah, that's probably close though, because I'm sure everyone knows what McDonald's is as well.
But I'm sure there's examples where like logos are more like recognizable than the names of
companies. Yeah, the maybe the Nike Swish. Oh, yeah, yeah.
Although it's kind of hard because at that level,
almost everyone knows the companies as well.
But like NumPy, which is a Python library,
it's got a fantastic logo,
and it sort of builds the fact of matrices into it.
And yeah, I think, you know, it's a...
I saw, was it on some subreddit,
that people were whining and asking about the fact that Carbon didn't have,
or maybe that came up in the last interview with Sean Baxter, that Carbon doesn't have a logo yet.
And while I agree that, like, Carbon is so early days that, like, you know, it's an experimental phase,
that I do understand why people are like, where's the logo? Where's the logo?
Because I think logos are, logos are, are.
They matter.
Yeah, they, they matter.
And they're, they are.
Or maybe another way to put it is like sort of the branding of your, of your library,
the, the, how you present it to the world of your software in general is, matters.
Even if it's, even if it's not a consumer-facing thing,
even if your audience is entirely other developers.
It still matters.
Yes, it matters.
All right, we're going to skip around.
We were supposed to do this first.
I was in the process of turning off my background,
and then we got distracted.
As we frequently do.
And while I'm doing this, to uh all of the listeners so
um let me turn this off i'll explain what the big red thing here is in a second
although unfortunately zoom is zooming so it's this is kind of cutting off this red thing here
but you'll still be able to see wait what zoom is oh it zooms in um i understand so episode part one of the of the interview with sean baxter i think
statistically was has been our most successful episode ever and it would have been even more
more successful if uh our audio hadn't been terrible so So in the future, we will make sure when interviewing guests,
because I think using this Yeti for two people in a room,
it basically created like a tin can effect.
We, I mean, we did it when we were in San Diego,
but we were both on either sides of a table.
And so I think it wasn't as bad.
For the listeners that were thinking,
what happened to the audio quality?
We know, we know.
And we'll make sure next time we bring Sean on
for hot takes that our audio is fixed.
All right, now for episode 100,
you must be thinking,
all right, this is kind of disappointing.
I've been listening for a hundred episodes
and they just talked about programming languages
and the value of branding.
I think it's a little bit of a stretch
to say that we've had 100 episodes
where we've talked about programming languages
because I think at least 60% of the content
has been us talking about Lululemon
or Bubly or other random stuff.
First of all, if you're a Bubly representative
and you're listening, trying to figure out if you're a bubbly representative trying and you're
listening trying to figure out if you should sponsor us don't worry about bryce's mispronunciation
uh i know it's bubbly even though i like to say buble uh it's whatever bryce said bubble
and did i say that we've been talking about program i meant to say that like for the first
15 minutes of this episode or 20 minutes or however long it's been we've been talking about programming language logos but here with us for episode 100 we have a generator of infinite
bubbly carbonated water it's a soda stream here we go we're gonna do this live on the podcast
this could make a mess because i'll be honest I don't really know how to use this thing. Have you used it before?
I used it yesterday and water
went everywhere.
It is
about three inches away from
his microphone.
If this is the end of the episode,
you know what happened.
I think you're
just supposed to poof it though. You're not
supposed to hold it. That was the problem.
I was just like, all right, we'll go like a beater.
All right, here we go.
You're supposed to give it like a couple poofs.
Oh, yeah, it is spilling.
It's making a mess.
Man, why does it?
Are you supposed to?
Oh. And why does it, are you supposed to, ooh.
Connor is pushing the button and some bubbles are going into the bottle.
He's very gingerly just doing little squirts at a time.
Now he is removing the bottle from the machine. There is water everywhere.
It is a beautiful red color, this machine.
I'm going to use my shirt to soak this up because I don't want to go get paper towels.
There appears to be a lot of water on Connor's desk.
I'm not even sure that Connor has paper towels in his apartment.
I definitely do.
I definitely do.
But look what we have here.
You didn't think we were just going to – so let me take a little sip, see.
Is this carbonated?
Oh, my God.
I did not do that enough.
All right.
Here we go again.
Oh, shit.
Okay.
Water went everywhere now.
Water whenever you are.
I do need to go get paper towels.
All right, Connor is now departing to grab some paper towels.
Why is this so difficult?
You still with us, Bryce?
I am still here. All right, let's try it again.
This is evolving into an actual disaster at this point.
I think I got it.
I think I got it.
I think I got it. I think I got it. I think I got it, folks.
No, that sucks.
All right, well.
We could have had Sean Parent or some exciting guest on for episode 100.
Instead, we chose this. I mean is this basically right and now what I have
is I've got bubbly drops. Uh blackberry bubbly. I don't actually know how to use this. I assume you
just put a couple drops in. All right and uh so now folks I'll figure out how to get this to work
in the future. Switch this up a little bit and and here's Connor's official review of SodaStream
that he doesn't know how to use correctly.
Pretty much garbage.
Luckily, though, I also have a beer.
Isn't it a little early for a beer?
It is.
I guess you ran this morning.
It is 11.18 a.m.,
but it is a
celebratory beer, not just
of our 100th episode,
but it's technically
our 101st episode, which
zero indexing always irritates me for that.
Oh, wait, so our 100th episode
was with Sean.
Yes.
Okay, all right, it's okay.
I mean, this is episode 100
though which is was it did we do an episode just for sean talked about moby dick we did yeah last
episode was uh like that was episode 100 it was 50 minute 15 minutes of moby dick and then 15
minutes of uh listing off our favorite movies yeah one. One of the things that I really appreciate about Sean,
and I think I can say this without having to worry about embarrassing him,
because I'm pretty sure he doesn't regularly listen to the podcast,
but Sean's this prolific programmer who's created this really awesome visionary compiler.
But he also has, you know, he's so cultured as well.
You know, he finds time to do other things in his life as well.
You know, he's this scholar of Moby Dick.
You know, he appreciates good literature, good movies.
And that's one of the things I really like about him. And the man knows how to find a good bar and seduce the,
what's the word I'm looking for?
Bartender?
The bartender.
So we should clarify because it sounds bad when you say it like that,
but really what he's trying to's not it's not like he's
seducing female he's seducing bartenders in general regardless of gender and he's just trying
to how would you describe it like win them over by for the the trade of bartending and and he um
he wants to win over the hearts and minds yeah of the bartenders in his life yeah yeah so uh
yeah it was good i mean i thoroughly enjoyed uh uh we'll have to have him back on at some point
yeah but yes i didn't I didn't finish explaining.
It's a celebration of episode 100,
but also I just ran the Toronto half marathon.
Literally, like, finished it.
What was your time?
Just over an hour ago.
It was pretty good.
It wasn't as fast as I was hoping.
It was, yeah, my legs got a bit tired in the middle,
but it was a personal best, an hour, 17 minutes and 20-something seconds.
So it's pretty good.
We're going to go out and celebrate with the Run Club later on.
And, yeah, what are we going to talk about for the last 10 minutes?
So you're going to Austin.
Yeah, I'm going to austin yeah and then um i'm going for for i'm going to
this uh o3d con which is um a linux foundation conference for um an open source uh uh
graphics and gaming and vr and uh digital twin uh engine um digital twin so? So this is not NVIDIA's? This is some other thing?
No, no.
I think it was
I think it like
started out of
something from Amazon
but it's an open source project
and now it's
run by the Linux Foundation.
So it's used for, you know, video games and like anything where you need to do a, create
a 3D world of some sort or a simulation.
Interesting.
That sounds neat.
Yeah.
And so I'm going to give a talk about the three things that I'm most excited about that
are coming in C++, not in C++23, but sort of beyond that.
Ooh.
Are we allowed a preview?
Are we allowed a preview?
Yeah.
Yeah.
Well, what would you think that my three things would be?
Well, executors and centers and receivers didn't get in, so I assume that's one of the
three.
That is on the list.
Yeah. That's the one of the three. That is on the list, yeah.
That's the third of my three things.
If it's going to be 3D graphics, I mean, I'm 50-50 on this, if this would be, whether this would be on your list.
But reflection?
Yeah, reflection.
Because that's big for them, right?
This talk was a talk that I'd made for another conference a while back.
And so this was not three things that I picked specifically for this audience.
It was just the three things for a general C++ audience.
But yeah, reflection was the number one thing on the list. And then the third thing I would guess is probably not, but contracts?
I don't know.
No pattern matching.
Oh, yeah, yeah. I keep forgetting that we don't know. No pattern matching. Oh, yeah, yeah.
I keep forgetting that we don't have that yet.
Yeah.
So, yeah, so I talked a little bit about reflection
and then about sort of things beyond what we'll get in the first set of reflection,
which will just be the static reflection APIs, I think.
But I talked a little bit about things like how you'll be able to do generative metaprogramming with reflection information. I don't even know if there's a proposal for this, but it's based on a slide I borrowed from Andre of showing how you would use some sort of template for construct at class scope to generate members of a class, like a wrapper class, using reflection. That's something that we don't have yet.
We don't have some sort of template for
or some sort of way to do that.
But I think we'll probably get that once we,
hopefully they're alongside
the initial reflection mechanisms
or as a slightly later feature,
sort of like the metaclasses-esque stuff although i imagine that
um i think we'll get a you know some of the building blocks one piece at a time not sort
of the whole metaclasses thing um and then yeah and then pattern matching which i think is um
uh gonna be a really transformative feature uh is that targeted for, because for a long time it was on C++23,
and I haven't super paid attention,
but from what I know, there's now two competing,
there's the is-as one,
and then there's the one from Michael Park and friends.
Yeah, I don't entirely know that there's been,
I don't know what the status of that is right now,
and I don't know how much progress there's been the last year.
But keep in mind, we're in the process of finishing up C++ 23.
Yeah.
So usually when we're in that last like three months of finishing up the release, we're really focused on that release.
And then after that, we will start to focus on the next release. But there's actually sort of another thing that I don't think
I'm going to cover in the talk, but that I think maybe there's two things actually, but I'll focus
on the one that I first had in mind, which is I would really like to see us take another look at
language level tuple and variant, especially in the context of something like pattern matching.
But, you know, even in the context of senders and receivers, because senders and receivers relies pretty heavily on tuples and variants because a sender can send multiple values, a tuple. Right. And a sender can also send um either a value an error or a you know a done
signal um and so when you need to represent what things could a sender possibly send like if i want
to say like i want a sender that if i want to constrain to say like i want a sender that sends
an int um it's actually a little bit more complicated than that because like what if you
want to say like i want a sender that sends either an int or sends me this type of error code.
Then you're saying you want like a sender of variant of, you know, int and then the error
code type. And you can end up in these cases where when you're working with some of the
sender adapters, you might end up with variants of tuples of variants. And just over the years, I've become increasingly aware of how painful
the library variant in tuple is.
Well, there is a language variant proposal out there.
Yeah.
And a language tuple proposal.
I was initially supposed to give a talk internally
to a research group on Friday but then we ended up switching topics at the last second
but it was it was a I had mentioned oh there's some talk I'm going to give in the future a couple weeks ago of like the five things that I think all languages should have some form of and uh on that list is basically um well actually i didn't technically
include a language tuple but like destructuring and algebraic data types and a variant of which
is one of them i just think are so like the fact that we got so far so many decades with just
product types aka classes and only recently have variants
and the choice type or enums
showing up in languages like Rust.
They've become idiomatic.
It just seems so...
How many times is there a list of options
that are mutually exclusive
where it's either this or that?
And it's such a bread and butter thing
that just pops up all over the place.
And having that built into the language, I just think is such a huge win.
And yeah, it is extremely painful using std variant.
I mean, I think if we'd had a notion of language level tuples or variants the the advent of c++ or the advent of c
would have drastically changed the patterns for how we write software yeah yeah um for for one
like i think it would really change uh interface design um if we had both variant and tuple from the get-go,
I think you would see far fewer output parameters.
Right, yeah.
Because why wouldn't you just return them?
Obviously, if you're doing something sort of pass-by-pointer,
if it's not value semantics, then yes,
you might need to have output parameters.
Or if you want to give users control over whether the thing is returning the stack or whether it's just some memory location it's written to, you might still want that.
But I think in a lot of cases, you would just have the far clearer sort of functional semantics where all of the inputs are just inputs,
or all the function arguments are just inputs.
And I think it also would have really changed how we do error handling.
There's so many C-style libraries that just return an error code
as their only return value.
And oftentimes that pushes them into the output parameter style solely because
the convention is that the return value is the error code. And it might have led us to
more creative ways of returning errors than just error codes, which I think often become problematic for libraries
because you end up with, I remember HPX, which is this parallel runtime I worked on for many
years, we threw exceptions, but we had an error code mechanism under the hood,
sort of similar to std error code.
And so we had an enum of all the different error types
that could be thrown.
And I forget the name of the particular error code,
but we had some vague one,
like invalid input or something like that. And it was like 50% of the
errors that could be produced by the whole code base was like invalid input. And if you got that
one, you know, there might be a descriptive string telling you like a little bit more about what
happened, but, um, uh, you know, it's, if you just leave the error code, you'd be like, what does
this mean? Like, I don't know what this means. I got to go look it up in the doc. It doesn't tell me anything useful.
And CUDA is also like that.
But in CUDA, there's no way to encode a specific error code message.
You just get the code out of the API.
So if the API gives you back CUDA error and valid value, you just have to go look up you know what does that mean um and uh yeah
that's that's just a little too vague for me probably all of my recent either python or c++
projects i use um cybrands expected which i think technically now gCC 11 point something or 13.
I can't remember which one they're on,
but like one of them actually ships with stood expected now and C plus plus
23.
Like they already have that feature in,
but I haven't started using that version of the compiler.
So I usually still use side brands,
TL colon colon expected.
And then Python has like an okay package,
which is the equivalent of like the
expected in c++ and like rust has you know built in or has it you know one of their standard
libraries and it's yeah i mean i think even sean parent is not a believer he doesn't believe in
um the expected type and thinks it just like pollutes all your code. But I, you know, for little small projects
and games that you're designing,
like where, you know, exceptions,
you don't really need exceptions in my opinion.
Like you've got some function
that's trying to calculate something
and it's either going to be like a list of,
like you said, like an enum of,
it's either this happened or this happened or this happened,
or you get the correct result
and being able to just return some error message
or the correct thing and then unwrap that where the call call site happens is just so
phenomenally like useful and it's just easier for my brain to reason about it's more declarative
in my opinion yeah that'll be exciting talk is that going to be recording online or
uh i think it'll be recording and i think it'll be online. And I'm also doing a C++,
ask the C++ committee question panel,
but it's just me and Zach Lane.
Oh, that'll be fun.
Is Zach in Austin?
He works for Cadence, right?
Yeah, he is.
I was, there was another C++ committee member
who was in Austin, but had since moved.
But it'll be interesting because I've done Q&A panels with three before,
never with two.
That'll be fun.
To do it with Zach?
I think it'll be fun, yeah.
Zach's a party.
Yeah, yeah, he's a real fun guy.
He was – remember when we were in Prague
and we were doing the recordings for the little vlog thing we ended up putting out and him and Eric Niebler recorded together.
And then he went and told that whole story about where they went when they went to some museum.
And then we had to cut all of it.
And then basically all that ended up being in it was just the thing at the end.
And that's why it's nice to bring a friend.
That's like the only part of his like eight-minute story.
I remember that.
It was hilarious.
You've got to put a link to that video in the show notes because our listeners may not have seen that.
That was really a work of greatness that was produced in a very short time frame.
That was very impressive work on your part.
I did none of it other than saying we should do this yeah i mean you were there for the
helping interview and questions and stuff and uh i mean if i ever that was the last in-person c++
committee meeting it was indeed it was indeed um yeah it's ages ago it feels like i mean it was
a long time ago but yeah it was it was 2019 2020 it was february
right yeah you're right it was literally like a month i think actually i can't remember it was
like right before code i was gonna say like i can't remember the first time i heard about
i think like i might have heard we might have heard there were news stories about like oh
there's this new yeah yeah flu outbreak in China at that point.
In China, yeah.
But like there was no.
Although, spoiler alert, it wasn't just in China.
Yeah.
Anyways, do you got to go?
I think I probably should go because I got to pack. pack and my flight's not actually until this evening but um i i have to go to uh the the
global entry office at the jfk airport before my it's a whole long story um uh i applied to renew
my global entry and they you can at the same time you can apply to do this APAC business traveler card, which lets you travel to a certain set of Asian and Pacific Island countries for business travel without filling out a visa.
And I was like, oh, sure.
I'll just add this on.
This is easy.
I'm planning to go to Japan again later this year for business travel. So I'll just go do this. And there's this great, it used to be you had to schedule a global entry interview at a location and then you had to like go to the country and do customs.
So if you just happen to be flying internationally and coming back,
instead of having to go to the airport
specifically to do your interview,
you can just do it on your way back through customs.
So I had a bunch of international flights this summer.
The first time I tried to go to do the interview
when I returned through customs,
they're like, it's too late in the day.
They're closed.
You're going to have to try again another day. Um, and then the second time was
when I was coming back from Israel and, uh, that time our flight got in at five and we had to wait
at the gate for an hour because customs wasn't open yet. So I'm like, all right. Yeah. 5.00 AM.
So I was like, great. At least like custom isn't open yet, but at least they're going to like,
they can't say that, that it's too late to do the
interview because first thing in the morning and they go and they do the interview for me at the uh
the the customs checkpoint and then like as she's getting to the end she's like you know what i'm
really sorry but your your application it's combined with this apac card thing and for that
thing you got a sign and we don't have the signature pad here. You're going to have to go over to the other terminal to complete the interview.
And I'm like, I just can't do it right now because I've just been on a plane for 14 hours.
Hard no.
And I also need to go home and repack because I need to be on another plane in 24 hours.
And so now I'm going back a third time.
But hopefully.
Third time's a charm. Third time's a charm.
Third time's a charm.
Yeah.
We will.
So when are we going to, you're going to be on the road.
So are we going to be recording on the road or we'll find out?
Well, next week I'm going to be in Austin and I don't think that'll be a good time to
record.
But the weekend after that.
You'll be back in New York for a bit?
Yeah.
Okay.
For a week, which is a bit by my new definition
and then we have to record a lot
because I'm going to be in Hawaii for a week
and then Japan for two weeks
okay okay
we'll figure that out
well we'll finish this episode 100
to the listener
because I think
what is it
and I want to just say
to all of the listeners
or to the listener
I heard on Reddit
someone said that they find it weird hearing listener
because they know that there's multiple people out there.
They're about to hear it again.
Dear listener, I want to say sincerely,
thank you for listening to this podcast.
You know, whenever I go to a conference these days,
I tend to have a couple of people come up
and tell me that they've listened to the podcast
and how much they enjoy it and that they feel like they're getting to know the two of us
through the podcast.
And that really warms my heart.
I think that's sort of what we were going for, for you to feel like you're in the room
with us, just chatting amongst friends.
And I hope that you've learned something.
And I'd like to think that we're getting better at this.
And I hope that you'll continue listening because I think we've got a lot of great content
still to come.
The chaos continues.
I can't remember what that quote was.
Chaos with sprinkles of information.
I think that was what it was.
That's still, or a discussion with Sean.
If we had a billboard, if we had a billboard,
that would be the quote, your quote.
Chaos with sprinkles of information.
Yeah, and I'll say, I think we do,
I think 50 episodes ago at episode 50,
I had this little bit where I say,
I don't like plugging for, you know,
it irritates me to no end when other podcasts say, give us a five-star rating.
And I was like, it'd be one thing to ask for a rating, but why are you asking just for
five?
Anyways, but once every 50 episodes, we do do our little plugs.
Feel free to read.
I mean, we already get like people retweet and stuff, but if there is one episode you
want to retweet, you know, retweet it.
If you want to leave a review of however many stars, you know,
or I don't even know how reviews work.
I don't think I've ever left a review.
But feel free to share with a friend.
And yeah, more stuff to come over the next hundred.
It also warms my heart.
And maybe tweet at us what you want to see
in the next hundred episodes.
Yeah, yeah.
Twitter's the best way to request stuff.
But if you don't have Twitter, you can always go to github email does the podcast have an email i mean we do but
i already have i have something new i have six email accounts and i like email is not the best
way to get a hold of and i don't know definitely of me i'm not sure about you but um like twitter and github are better like
someone opened an issue once and i made a topic request or like a um had some feedback and like
yeah well definitely i i have to interact with the github every week we love github yeah because
of the website um anyways thanks for listening uh i'll try and figure out how to work this
soda stream thing and give you a better review next time but uh my review so far is i don't know i don't know
how it works i you know i've tried the soda stream thing i i don't like the taste i've tried it
before yeah it's not the same even if you do get it to work yeah yeah but but maybe you will yeah
maybe you will all right all right thanks for listening we hope you enjoyed and have a great day