CppCast - Goodbye 2020
Episode Date: December 31, 2020Rob and Jason are discuss various news articles, libraries and announcements on the last episode of 2020 before the new year. News Embo++ 2021 Runtime access to tuple elements YouTube C++ Ser...ies - Project from Scratch for C++ Beginners Bona - C++20 based modern file information viewer Concepts appreciation thread A new C++ Logging Library Sponsors PVS-Studio. Write #cppcast in the message field on the download page and get one month license PVS-Studio: analyzing pull requests in Azure DevOps using self-hosted agents Why it is important to apply static analysis for open libraries that you add to your project
Transcript
Discussion (0)
Episode 280 of CppCast, recorded December 30th, 2020.
Sponsor of this episode of CppCast is the PVS Studio team.
The team promotes regular usage of static code analysis and the PVS Studio static analysis tool. In this episode, we discuss some news articles
on our last episode of 2020.
Then we talk about when we use C++
versus other languages for our project. Welcome to episode 280 of CppCast, the first podcast for C++ developers by C++ developers.
I'm your host, Rob Irving, joined by my co-host, Jason Turner.
Jason, how are you doing today?
I'm okay, Rob. How are you doing?
Doing well. How have the holidays been treating you?
Fine. I mean, you you know it's a weird year
just like it is for everyone it's a very weird year it definitely is but uh but yeah i don't
know about you but we did manage to see some family uh my my wife's sister and her boyfriend
we all quarantined for like two weeks and then they came down here so it was nice to see some
people it's been so long
since seeing anyone like outside of my house yeah we uh tried to do similar um yeah so seen some
family also under similar circumstances yeah okay well at the top of every episode like through a
piece of feedback uh this week we got a tweet uh from francis lamar saying google podcast has finally added
ndr cpp my podcasts are once again all centralized and then he asked by the way do you have any
podcast recommendations he's currently listening to cpp cast cpp chat tlb hit ADSP the podcast, and then JF Bastion also commented on this about Two's
CP, Two's Compliment, being the best new podcast
around. Is that JF's then? No.
Two's Compliment appears to be Matt Godbolt's podcast.
Ah, right. Okay. Which he apparently just
stealth launched a couple days ago.
I didn't say anything about it publicly because I didn't know how stealthy it was.
But yeah, I think we made a similar comment last week about how it seems like everyone is maybe getting bored with the pandemic and being stuck inside their houses and starting new
podcasts so mad god bolts and uh ben rady have joined the club and i think ben's ben's is not
excuse me matt's is not uh specifically a c++ podcast okay it's just uh someone who we know
in the c++ world who happens to be doing a podcast right right which i think is similar
for some of these others as well uh like tlb hit yeah not necessarily focused on c++ but i guess focused on like systems languages
and low-level things so have you listened to any of these yet rob no i have not had a chance to
listen to any of these new podcasts yet because yeah we have we have time to make them but very
little time to uh to listen to podcasts these days.
At least that's the way I feel.
Well, let's see.
I've listened to like three episodes of a podcast.
And it was the three episodes of CppCast that I was not in, basically.
You've never listened to any other podcasts?
No.
Oh, wow.
Well, I mean, I did watch slash listen to the new one from
uh from the jet brains crew i forget the name of now with so many of them going around yeah yeah
i mean but i in my head i was watching a youtube video i wasn't listening to a podcast
right which i guess you know it's not that different whether you're watching it with
video or listening well they um
uh had like the slides for what they were talking about oh okay going on live too so you didn't kind
of have to have the video but you know it was there if you wanted to see it okay we've never
considered doing something like that no we do the video on youtube it's always just video of us not
any slides or code or anything like that.
Okay.
Well, we'd love to hear your thoughts about the show.
You can always reach out to us on Facebook, Twitter, or email us at feedback at cdpcast.com.
And don't forget to leave us a review on iTunes or subscribe on YouTube.
So, it's just the two of us today for our end of the year show.
And we thought we would just kind of go over some more news and
maybe do a little q a but we actually did not get that many questions sent in unfortunately
that's all right so is your plan actually to publish this on the 31st then to sneak it out
before the end of the year yeah yeah that's the plan okay and that'll be 53 weeks of episodes 53
episodes in the year, yeah.
I need to go back and look at how this calendar worked out for C++ Weekly,
because I don't know how many episodes I published this year.
But I'm always on a very strict Monday morning schedule, too.
Well, let's get started.
So the first one we have is Embo++,
which is Odin holmes uh conference uh in germany about
embedded development uh is announcing their dates for this year uh it's going to be march what was
it 21 yeah march 2021 i think 25th was that right uh 25th through the 27th yes yeah and i'll be honest when i first looked at
this announcement i was a little worried like i thought they were planning on doing an in-person
conference which you know i know we have vaccines going around everything now so it's you know
going to be getting safer but i don't know how many people are really gonna have access to that
by march um but it does look like it's virtual,
at least according to the Embo Twitter.
It's not really mentioned much on the website,
but it looks like it is going to be all virtual.
And they have their call for papers open
if you go down into the Apply here.
But you need to get this in.
Let's see, where's the date?
I think it's December 31st yeah so that's that's today if
you're listening to the podcast yeah yeah if you see this podcast the moment it's released do you
hear this go ahead and pause it now put in your application to speak at embo 2021 yeah are you
planning on uh virtually attending this one i don't think we've either of us have attended that one before right no i have not uh yet attended that one i would like someday to actually go if possible um i
haven't yet decided what i'm doing either uh submitting a talk or attending or not for it
okay still feel a little bit like yeah the virtual the virtual talk thing, it's a little weird.
Even though I've done it at my meetup a bunch of times.
I don't know, I kind of feel like it's cheating at my meetup because I know all those people.
And I know what to expect from them. And I get great feedback and a great amount of interaction from them and everything.
And it's a smaller group.
I'm guessing everyone actually uses their webcams and everything.
So it's more interactive.
We'll get like 30 people and like 20 of them maybe will uses their webcams and everything so it's more interactive we'll get like 30 people and like 20 of them maybe we'll have their webcams on so it's pretty cool like that that's pretty good yeah and everyone's like super like they know all the zoom protocol
right like i i think i've had to mute someone like once this entire year. That's pretty good. Yeah. Okay. Next thing we have is a post on the CB subreddit.
And this is about a runtime access of stud tuple elements. You want to tell me more about this one,
Jason? Yeah. So if you are used to using tuple, and then you're like, you know what, I really
need access to the fifth element or whatever in this or you don't know, like you have to make some sort of runtime determination.
I either need the first or the fifth.
It's a little bit of a pain because standard get,
when you are calling it on tuple or on anything that has access with get
like array and pair,
then you have to know at compile time,
which element you want to access.
And this is reasonable because standard tuple,
each element potentially has a different type.
So you have to know at compile time which one you're accessing
because the compiler doesn't have any way of knowing what type to generate in there.
So this is one of these things that if you're just using tuple every now and then,
you're like, I just want runtime access to this thing.
So this person wrote
a handy little wrapper tool that lets you do a runtime determination which tuple element you want
um it has caveats of course it has to return uh you have to give it like a generic lambda to call
into it or something because it still has to generate all the possible calls for all the
possible types that would be in there right but there's so i guess maybe as a little bit of peek behind the
curtain i'm the one who found most of these news things for us to talk about and so they're all
more like things that appeal to me and most of them were on the reddit c++ but largely for the
discussion so the discussion here is a few people like oh but wait if you did uh this you can
simplify your implementation by this and some of these things are things that you know we've we've
talked about um in the community recently i can't remember if it's been on cpp cast or on other
venues but like doing a linear search through the elements is actually faster and generates better
code than trying to do a binary search through the elements to try faster and generates better code than trying to
do a binary search through the elements to try to get to the one that you want for example okay
yeah i i first looked at this and i i'm not sure if i've really run into situations where i
felt the need to have runtime access to a tuple so i didn't look too deep into this but i can
understand that you know certain situations would arise and
something like this could be very useful yeah could be there's of course a couple of people
on on reddit that are like why would you ever want this well sometimes you do sometimes sometimes
the value that you need to access from this tuple originates from an you know an input file or a
script or something right uh so the next thing we have is a youtube series and this is project from scratch and c++
and i did watch i think the first two or three videos of this and it looks like a great series
especially for beginners uh you know the author uh is going into a lot of detail uh i watched up
to the one where he started going over uh setting up your cmake project and uh you know going into a lot of detail. I watched up to the one where you started going over setting up your CMake project and
going into pretty good detail about how to create something from the
ground up, which I don't see that many other
tutorials or anything like that out there. So this seems like
a good resource. It seems to be the general response from people like, thank you
for doing this you
know how to get started from scratch kind of thing yeah i tried to watch a video but my web browser
was acting up at the when i was doing that and i couldn't get any youtube video to play really what
the heck yeah i don't know what was happening i just shut down the computer i decided it needed
some nap time yeah that fix it for you at least i don't know because i forgot to go
back and check after that one of the things i totally appreciate about this though is he actually
has a blog to go with it that discusses some of the things in the episodes too i did not look at
the blog did you look at the blog much i i definitely pulled it up yeah and looked and saw
that it has like description of your cmake project layout and stuff and like the word descriptions for getting started with cmake and i'm like wow okay i mean
and now to be fair like uh is this best practices i don't know i didn't dig into that stuff
you know looking at the cmake here i see that it's using the global cmake functions, like include directories, instead of target include directories.
So maybe it's not 100%
and it's using a file glob
for generating the set of CBP files,
but it'll get you going.
Yeah, I think that's what he was really going for,
just to kind of teach you the basics
to start off a new project.
Yeah.
He seems to be doing a pretty good job with that.
Good stuff.
Okay, next thing we have is Bona, to start off a new project. Yeah. Seems to be doing a pretty good job with that. Good stuff. Okay.
Next thing we have is Bona,
which is a C++20-based modern file information viewer,
and also Bulk,
which is a Windows portable package manager.
And this is from Forrest Charlie.
And again, he posted this on the CPP subreddit.
And I looked into it a little bit. I didn't look into the code but uh balk looked interesting um you know kind of similar to chocolatey if you've heard of that
which is a windows you know uh package manager kind of similar to to apt-get from linux so is
it i i actually went the other route and spent more time looking at the source code for BANA. Okay.
And, but for bulk, is it like, is it, when you said it's like chocolatey, but is it, is it a C++ dependency package manager or is it just an app package manager? It's an app package manager.
At least that's what it looks like to me.
So you can just type in things like, I think bulk get or bulk install 7-zip or bulk install curl and it will download
that package install for you they can use it from the command line oh that's cool yeah yeah and
chocolatey I guess for our listeners if they've never used that you might want to check it out
because it's pretty awesome yeah especially if you're used to the the linux style of installing
a program and not having to go to a website to
download the installer, being able
to do it from the command line is
pretty wonderful. And if you ever get into
setting up virtual machines
or setting up
containers with Docker, then
using Chocolaty is really the way to go.
Do you
actively use Chocolaty?
I'm not sure how actively I'd say say i use it but i definitely use it um i have done a little bit with containers over the past few months and
i found myself going to chocolatey a lot when setting those up yeah i like every time i do a
fresh install of windows i think to myself i'm to use Chocolaty to manage all of the apps on here that I care about.
Audacity and whatever like we use for our tools.
Yeah.
And that lasts like five minutes.
And then I don't know, just because maybe just because I'm on Windows and I have other ways of installing things, I totally forget to go back to it later.
It's like this like mental block I have or something.
Yeah, I think like years ago, I set up a script to kind of start off a fresh development machine
with some things that you can install from Chocolaty. You know, things like a
Git client and 7-zip, you know, not necessarily everything I use, but enough to kind of get me
going. But, you know know i set all that up
and i used it once then probably forgot about it next time i set up a new machine
i have used it to manage via build build vms though for like installing uh the visual studio
command line tools and all that stuff yeah it's great for that yeah so what's the other half of
this though which we completely ob bono or bono or
however it's supposed to be pronounced yeah um a modern file information viewer for windows now
to be perfectly honest i spent less time looking at what it was supposed to do and more time trying
to look at the source code since it says it's a c plus plus 20 library um so i noticed it doesn't
use modules but that's totally fair because why don when we discussed this a couple weeks ago, that modules might be actually a 2023 feature by the time we have all the support that we need for it.
Just get the standard library support for modules. I think that's kind of a big thing that we'll all be waiting on. But there's an interesting mix in here. Like, depending on which file you go into, some of it's got, like, pound defines,
and some of it's got, like, constexpr,
all the things in C++20 throughout it.
So I don't know if it's just because it's been in the process of being updated
or if it just depended on what context
that code was used in or whatever.
But yeah, I mean, I don't know.
The people on Reddit like how, like,
information it
can give you, um, about files. They can tell you what's the P E L mock things that's dependencies,
it's export symbols, whatever. And, uh, give you that information back in Jason.
Yeah. The, the dependency information that it generates seems really useful to me. Uh,
I know on, I don't know if this one does anything on windows or if this is just a linux utility it's a windows mainly utility oh it's windows too
i'll have to take a look at what type of uh output it generates for windows because windows only i
think it says bonus yeah so it analyzes the the linux you know dot so files dependencies on when you're
running it on windows okay that's what it says it can do but i mean to be fair all it's doing
i mean it's parsing an elf structure or pe or whatever and then can give you the just what the
binary reports about itself right okay yeah yeah that's that is that is definitely what the binary reports about itself. Right, okay. Yeah, that is definitely what the example screenshot is showing.
Yeah, I guess I didn't connect that when looking at this.
So it says PEL for mock binary format.
So I guess it doesn't actually work with a Windows DLL or EXE
because they wouldn't have ELF symbols.
No, but PE is... isn't that one of windows's
binary formats not sure okay i didn't try this it's funny we all know that elf is linux and mock
is mac os and i you know now i'm totally right it's something i i know i still you know i used to use depends a lot when trying to figure out
if i was missing you know some dll uh that was required but depends is is no longer being
supported at all it doesn't work well on windows 10 at all um and i found a while back dependencies
which i think i probably found uh and and talked about on this show. I think you're right, yeah. And dependencies, like I said,
it's a modern update of depends. It's very useful. But if you don't want
to use a GUI and if you just want to be able to get that list of dependencies
in your command line, this might be great for that. I think to go and
try it out and see how well it works with Windows DLLs.
It is portable executable by thes. It is portable, executable, by the way.
It is the binary format that is used on Windows.
I had to know at that point.
Okay, I definitely could try this out then.
Extend it if it doesn't show you what you want it to have,
and then you have a nice little...
Actually, that's a brilliant idea.
Well, sometimes things like Depends or Dependency Walker
or whatever those tools,
sometimes you need to know at runtime which DLLs it's opened,
depending on how badly your world has gone.
Yeah.
If this is only checking the binary itself,
yeah, but let us know.
Extend it.
New hobby project for Rob to work on.
We'll see about that but i'm
definitely gonna try it out i am very happy to volunteer other people to work on projects yeah
yeah it's great it's real easy it's super easy okay uh next thing we have is again on rcpp
this is the concepts appreciation thread and this is just someone who was working on i think their game
engine and uh found a use case for concepts while working on some code and they were just so happy
at how well it worked that they just had to share it with the world and yeah i agree like i haven't
really uh gone in and tried using concepts yet but it definitely seems like it's one of the best features
that we got out of C++20.
It's really powerful.
And these requires expressions.
Now, in this example,
the author doesn't use the requires expressions,
but then in a few comments in, they're like,
you know, by the way,
you could have gotten rid of the concepts altogether
for the way that you're using this
and just do if constexpr and then it
requires expression in there that construct can be crazy powerful but just the fact that you can
just so easily detect like did the just generic type that was passed into me have a start function
or not that if it did then do this otherwise do this some do this. Some, yeah, I don't know. I don't know. It's maybe in a couple of years, we'll realize that this is a bad idea because we end up
with code that's really hard to track what's going on.
But I like it.
Yeah, I like it a lot.
Very, looks like it's very useful for factory functions.
And I'm sure there's tons of other spots of code that can be cleaned up now
that we have concepts. Yeah. I think the author or one of the comments talked about how they first
tried doing this with Sphenae and either it didn't work or just wound up being really ugly and this
is just so much nicer. Yes. I have taken a standpoint of avoid SphinA whenever I can for all of my C++ career.
It's like I use function overloads or partial specialization if I can.
SphinA is an absolute last resort.
As soon as I get C++17, if constexpr to avoid SphinA when I could.
And now with concepts, I get to avoid it permanently.
Okay.
And then last thing we have, Jason, is a C++ logging library.
And this is LW log.
And according to the benchmarks, it looks like it's currently faster than speed log,
which is pretty impressive.
The author is saying it's still definitely like a work in progress.
He mentioned some of the features he still wants to implement.
But it looks pretty
impressive. The thing that I am curious about here and should have spent a few moments looking at
is the description definitely says that it does, well, it says non-async logging. It does synchronous logging. Right. So I'm, and the part where I wonder, yeah, okay, here we go.
So it's comparing LW log's synchronous logging to Speedlog's synchronous logging.
By default, Speedlog is asynchronous.
Yeah.
So that's one way that Speedlog is so stupid fast is that it does asynchronous logging.
Okay.
So depending on your needs, though, if you really want synchronous logging, then this LW log looks like it's crazy fast.
And from what I saw reading the discussion and stuff, they're not using lib format.
No, I think they're trying to have no dependencies when possible. So when I think they
said, you know, when MSVC has std format, fully enabled, then they'll switch over to using that,
but they don't want to depend on the format library, they just want to use what's in the
standard library. Right. So right now, they don't have Yeah yeah they don't have any kind of formatting capability
right yeah it's an interesting concept though i mean i appreciate that you're like well c++ 20
the ink is dry formats coming yeah yeah um although none of our standard library implementations
actually have format in it yet. Not that I know of.
I guess not.
I think they called out MSVC, but yeah, do GCC and Clang not have it yet?
I don't think anyone does.
I'm going to look real quick.
Okay.
Text formatting.
Nope.
No one has, at least according to the CPP reference compiler support chart,
no one has it yet.
Well, we're almost at the end of 2020,
so hopefully we'll start getting everything early 2021. Yeah. support chart. No one has it yet. Well, we're almost at the end of 2020. So hopefully, uh,
we'll get, start getting everything early 2021. Yeah. So I did have one other thing that I'd like
to comment on here. Absolutely. I, um, as our listeners are probably aware, published my book
about six months ago, earlier in the year. And some people have asked for print versions.
So I am hoping in the next couple of days here
to actually get this up on Amazon Print On Demand service.
I just have a little decision to make, though,
because all of the code samples are syntax highlighted in color
and definitely look better in color.
But it costs considerably more to print it in color and definitely look better in color, but it costs considerably
more to print it in color. Like I might be able to go away with a $15 version in black and white,
but have to charge at least $25 to have it in color. I don't know anything about Amazon print
on demand, but are you able to just make choices make both choices available so if someone wants
to get it for 15 bucks then get it black and white or if they're willing to spend the extra
10 bucks get it in color i should be able to make them both available although as far as i can tell
have to publish them as two completely different books oh that's interesting okay yeah that's
exciting though i'll uh i'll have to pick up a copy of that it's always easier to read a technical book and fiscal copy i think at least yeah i wonder if i should order a uh you know an actual proof
copy to make sure it looks half decent before i have you know even though i just told the whole
world that i'm planning to do this uh maybe something i should have considered before
deciding to put this in the notes and discuss it but but here we are. It's all good. Do you have any idea what the turnaround time is for that?
For ordering something from Amazon? I don't know, but it's pretty quick.
They have machines that are designed just for printing and binding books and mailing them.
And I've seen them in action, similar systems.
I went to the MIT Press bookstore
when I had the opportunity to go to a company in
Boston. Yeah, in Cambridge, where MIT is. And they had one of these things just sitting there
in the middle of the bookstore that if it was an MIT Press published book, and they didn't have a
copy on hand, they would just print it for you real quick. So I'm guessing Amazon can do it even faster. Whatever speed MIT Press can do it.
Nice. I want to wrap the discussion for just a moment to bring a word from our sponsor,
PVS Studio. The company develops the PVS Studio Static Code Analyzer designed to detect errors
in code of programs written in C, C++, C Sharp, and Java.
The tool is a paid B2B solution,
but there are various options for its free licensing
for developers of open projects,
Microsoft MVPs, students, and others.
The analyzer is actively developing.
New diagnostics appear regularly,
along with expanding integration opportunities.
As an example, PVS Studio has recently posted
an article on their site
covering the analysis of pull requests in Azure DevOps using self-hosted agents.
Check out the link to the article in the podcast description.
Okay, so we did ask for Q&A questions.
We only got the one email to me, though.
And this is, the question is,
when do you grab for C++ in your
developer toolbox? And when do you go with some other language and kind of a follow up is what
are your driving reasons for the decision, familiarity, performance, tooling, time to ship?
And I guess we can kind of both try to answer this, Jason. Yeah, go for it. You should start
though, because you spend far more time outside of C++ than I do, I think. Yeah. So I do spend a lot of time with C sharp these days, start spending a little bit
more time with Java as well. Sorry. No, it's okay. It's okay. But I mean, the thing is,
I'm not really going and starting a whole lot of new projects like this is for work and i'm really just kind of
continuing to work on this same application uh for uh years now that we have multiple platforms
are being supported that's why i'm spending a lot of time on c sharp on windows and spending
more time in java for an android and cross-platform desktop version of an application.
But as far as reaching for other tools,
the only time I'm really writing something new
is if I'm just writing some little utility application,
which depending on how complex it is and how much performance is a factor,
I might use C Sharp, I might use c plus plus or i
might use a scripting language or do it in powershell something like that do it in powershell
just had this conversation recently with another friend that was like you know how powerful
powershell is and he should probably know it better and i i know basically nothing about it
i know i've seen uh tweets from izzy uses PowerShell on every platform because it is available on every platform.
That's weird.
Yeah.
I mean, in my head, it's weird.
It's weird, but it's more of just Microsoft kind of loving the open source community
and trying to bring their tools to more platforms.
So it makes sense.
I think of that in recent history.
How would you consider yourself
a powershell expert oh not at all not at all i always kind of need to go to the internet to try
to figure out what i want to do but um it's nice to not have to worry about installing ruby or some
other scripting language and just use powershell i feel I feel like, yeah, that's interesting. I don't, yeah, sorry.
No, I was just going to say, how about you, Jason? Do you have any reason you might go for some other
language besides C++ when working on a project? Yeah, I've written more code than I would care
to admit in Ruby and Python. And honestly, in my head, they're basically interchangeable.
I know the languages are completely different.
But the question to me is,
do I need something with a bunch of handy package support or not?
So if I'm like, well, I need to write this thing
that integrates with GitHub.
Well, the GitHub OctoKit,
the best platform that it supports is Ruby. So I'm just going to use Ruby there. Or if in another case, I'm doing
something with AWS, the AWS libraries for Python are better than the Ruby ones. Fine. I'll just
use Python there. Whatever. That's kind of how I look at it. I don't really like programming in either one of them.
Python definitely makes me more sad than Ruby does. But those are the those are the tool that
I'm going to look to if I need some sort of scripted thing. Other than that, it's probably
like said or bash or something if it's going to be you know, like a quick one off kind of thing.
Yeah, that's a really good point about whether you're going to use some library or package
manager.
I mean, kind of going back to my answer, you know, one recent thing I worked on, which
is kind of a little tool for generating kind of these custom packages, I needed to write
and read XML.
And doing that in C Sharp,
with C Sharp's standard library,
is a lot easier than having to use libXML or libXML2.
Yeah, that's interesting,
because C Sharp kind of speaks XML natively, huh?
It was born in the era of XML.
Yeah, I guess it doesn't speak JSON natively.
You'd have to bring in a library for that,
but XML definitely speaks natively.
Yeah, and how easy it is to get back an object representation of a JSON file in Ruby
is just like crazy.
Yeah.
YAML and JSON, I like using Ruby for those
because they're just so easy to,
and then you could just like write some object thing back out in the other format if you wanted to.
Okay. Well, I think that's it for us
for the year. Right, Jason?
Well, yeah. I don't have anything else planned between now and January 1st.
Well, it's
been a very strange year uh but i'm glad we were able to keep the podcast going
you know get an episode out every week which we've actually never done before but managed to
do under these strange conditions because you know we're not traveling anywhere so why not
record a podcast episode every week so just a retrospective thing what year did you start the podcast i think it's been five years i think 2015 i started that sound right to you so five and a
half years i guess yeah i guess so yeah first episode was february 2015 february 2015 yeah
okay we're getting very close to six years of the podcast.
So were you not doing it in a regular weekly schedule in the very first, or were you?
I think I had like a two-week break before, in between having John called on and having you on.
Okay. And then it was almost weekly.
It's always miss two or three weeks in a year was kind of the average for those first few years.
Right. Okay.
Yeah, I guess I didn't really pay attention to that so much.
I listened to the one with John Call before you had me on, I think,
and then listened to the next few.
Okay. Well, we got 2021 to look forward to.
Hopefully things start going back to normal soon,
but hopefully we can keep,
you know,
the schedule going and keep CPV cast coming out weekly.
Yeah.
I know some people,
apparently this is really hopeful to some people.
So I'll just share it here too.
My grandpa has actually had his first vaccine shot and we'll have his second one on Friday.
It's exciting.
Because that'll be two weeks from the first one.
I mean, he's a 93 year old living in a nursing home in Florida.
So he checks all the boxes for being in the first, the first tier there.
And so, yes, real people are getting this and maybe things will change some days in the foreseeable future.
Here's hoping.
Yeah.
Okay.
Well, happy 2020, everyone.
Happy 2021.
Well, we hope 2021 will be happy, but happy 2020.
Okay.
Okay.
Thanks, Jason.
Thanks, everyone.
Thanks.
Thanks so much for listening in as we chat about C++.
We'd love to hear what you think of the podcast.
Please let us know if we're discussing the stuff you're interested in,
or if you have a suggestion for a topic, we'd love to hear about that too.
You can email all your thoughts to feedback at cppcast.com.
We'd also appreciate if you can like CppCast on Facebook and follow CppCast on Twitter.
You can also follow me at Rob W. Irving and Jason at Left2Kiss on Twitter.
We'd also like to thank all our patrons who help support the show through Patreon.
If you'd like to support us on Patreon, you can do so at patreon.com slash cppcast.
And of course, you can find all that info and the show notes on the podcast website
at cppcast.com.
Theme music for this episode was provided by podcastthemes.com.