Algorithms + Data Structures = Programs - Episode 104: Jason Turner from CppCast! (Part 2)
Episode Date: November 18, 2022In this episode, Conor continues his conversation with Jason Turner!Link to Episode 104 on WebsiteTwitterADSP: The PodcastConor HoekstraBryce Adelstein LelbachAbout the Guest:Jason is host of the YouT...ube channel C++ Weekly, co-host emeritus of the podcast CppCast, author of C++ Best Practices, and author of the first casual puzzle books designed to teach C++ fundamentals while having fun!A list of Jason’s content:C++ Weekly YouTube ChannelThe [Fill in the Blank] Programmer YouTube ChannelC++ BooksTalk PlaylistShow NotesDate Recorded: 2022-10-26Date Released: 2022-11-18Final Episode of CppCastA talk with Jason Turner: the history of CppCast, and why it was shut downThe [Fill in the Blank] Programmer YouTube ChannelC++ autoMaking C++ Fun, Safe, and Accessible – Jason Turner - C++ on Sea 2022C++ Weekly - Ep 347 - This PlayStation Jailbreak NEVER SHOULD HAVE HAPPENEDC++ std::unordered_map::operator=Python defaultdictC++Now 2019: Peter Sommerlad “How I learned to Stop Worrying and Love the C++ Type System”C++ explicit specifierHoogle Haskell Function Search EngineRoogle Rust Function Search EngineCLion Code CompletionDenver C++ MeetupIntro 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)
I'm fully in the camp of C++ is not a strongly typed language.
And we jump through a lot of hoops to try to make it more strongly typed.
We write strongly typed wrappers.
We delete problematic overloads.
We write templates that are constrained in specific ways.
We say, I mean, like we teach single parameter or variadic constructors or constructors with
default arguments. Pretty much every constructor
at this point needs to be explicit. All of these things come down to implicit conversions
that make the language less strongly typed. Welcome to ADSP, the podcast episode 104 recorded on October 26, 2022.
My name is Connor, and today I continue my conversation with Jason Turner.
Speaking of conferences, we can switch to kind of episode two of this podcast, which is let us know what you've been up to for the last five months.
How has it been? I mean, I'll link the final episode where you talk with Rob about sort of
the reasons for ending CppCast. And I also saw that there was a, I think it was PVS Studio came
out with a sort of interview style post. So it's a written form post if you want to go read that
sort of dives into those details of, you know, why CppCast ended. So we don't need to necessarily go into detail.
But if you want, feel free to mention why it ended, what it's been like for the last five months.
And then, you know, we mentioned that you sort of went to a couple of conferences.
Yeah. Tell us what you've been up to, the talks you've been given, and we'll go from there.
A couple of times Rob and I have chatted and we're after like a month or six weeks or so after we had ended CBP
cast, we're like, wow, like my schedule feels just so incredibly different because there isn't the,
you know, on Monday morning, make sure we have the show notes and the news items and the interview
questions ready to go for the interview on Wednesday. Like we, like that was, uh, it was
basically the only regular part of my schedule because I haven't
been an employee in 13 years, I think of a corporation.
You're self-employed.
I'm self-employed.
I haven't had to directly answer to someone else about my schedule in a very long time,
except for CVP cast.
That was seven years of that.
And that was my regular, like, we have to do these things several times a week kind of items on there. So it was kind of freeing in some ways to just be like, wow, my schedule feels different. I can, I don't know, it felt like I was just more available in some ways. One of the things that I really wanted to do was do more development on my second
channel, which I've recently renamed. It was called the Retro Programmer. I renamed it to
the Fill in the Blank Programmer because I just kind of wanted a space where I could
talk about anything programming related and not have to deal with like the YouTubers that are
like, I don't like this content because it's not C++, you know? But to be fair, the name of the channel is C++ Weekly.
So, right.
So my plan was to do a new episode on that channel every other week.
And I did like six weeks of that.
But, you know, without the name forcing you to keep going, C++ Weekly, like that forces me to release an episode every week so um that was kind of hard
i still have plans lots of plans for the other channel but i haven't spent as much time as i
expected to but then i had two different contracts with one of my clients that i was trying to wrap up. So in between the other things, let's see, flew to
England to speak at C++ on C in June, right? That was June, right? No, that's July.
I think it was either late June or early July because that was, no, it must have been July
because it was the week before, I think, CPP North. And CPP North was-
It was two weeks before CPP North because Cause I did the week. Yeah. It
was to the 28th through the 30th of June. Oh no, that's 2023. Nevermind. He already put up
information for next week or for next year. Oh yeah. That's an irritating thing about some
conferences is like tracking the dates and the talks by year. Uh, cause the main link always
goes to whatever the most recent conferences is and uh some conferences are
great about you can find a thing and click on a year i could just look at my own personal calendar
that's beside the point i went and i did a workshop there and spoke um did the closing keynote
at c++ on c and then drove from there to the to the Netherlands to do like my first on-site training
in, uh, well, it had been seven months since I had done my last like training event. So I did,
no, four months. Sorry. So I did that and then flew from the Netherlands to Toronto to go to
C++ North and then flew home. So that was a three-week trip, which, like we were talking, 2019 was crazy.
2019, that would have been like, whatever, that's just January.
2022, you're like, oh my goodness, am I going to survive this?
Yeah.
Yeah.
And we have to say, I have to say thank you, because you ended up giving two talks at CPP
North.
I did.
You initially submitted and got accepted
the power of Compile Time Resources, I believe.
And then we ended up having a couple different speakers
that didn't end up making it.
You know, one of them, the airline was on strike.
Oh, right.
Like the days leading up to it.
And anyways.
Oh, goodness, right.
That was Scandinavian era, right?
Yeah. A couple of different reasons. We weren't able to have a couple of speakers. And so you
stepped up and gave a second talk, which was the best parts of C++, which is one of my favorite
talks that you've given. You've given it at a previous conference before. And I love that talk
because there's so many talks in C++ that focus on the warts of the language. Like I think even
yourself, you've given talks about like why initializer list is broken. And, you know,
so there's a ton of talks out there that focus on UB and crazy things and shooting yourself in
the foot. And it's sort of, you know, goes hand in hand with C++. There are much fewer talks,
at least from my, what I've observed of like, why this language is a great language and focusing on all the things
that like as C++ professionals, we know everything bad about the language and it's very easy to,
you know, it's, I feel like it's almost that conferences. It's like the thing, it's like,
oh, so what are we complaining about in this group of people? It's never, hey, let's talk about,
you know, the ability to do generic programming in C++ and++ and the power that we have with insert this or insert that.
And your talk sort of goes through, I can't remember if it's 15 things or 25 things, but it's all these, you know, a list of things.
And you spend a few minutes on each one talking about like why this is great and why you should be excited about this in C++.
So it's a very like positive oriented talk.
And I remember watching it, one, feeling like this is refreshing to hear someone like talking about why they really like the language. But two, I was like, just found myself
nodding the whole time. Every once in a while, you'd get to something like as simple as, you
know, the auto keyword for type inference. And it's like, well, that is actually like,
it's amazing when you compare it to what you had to do back in like pre C++11, where you had to
spell out all the namespaces and the iterator types. It's like, we take it for granted now
as, you know, quote unquote, dealing in modern
versions of the language, but like compared to what you had to use to write, it's amazing.
And even like comparing the type inference in C++ compared to Rust, like a lot of times
you have to spell things out in Rust and you forget that like, oh yeah, I can just deduce
the type of this function returns because C++ is great at that stuff.
And we take it for granted.
And anyways, enough about how amazing that talk is.
You can say more about the two talks you gave at CPP North.
And then I just watched the one at C++ on C,
which is making C++ fun, safe, and accessible.
I think if I got the title right.
That sounds right, yeah.
So how did those all go?
Well, okay.
So I kind of want to rewind just a tad
because that talk you said was your favorite came from that 2019 year when I was doing all the travel.
And I had kind of set a public goal.
I think I tweeted it even of being like more positive about the language and not just focusing on the words because it's too easy and too fun to do that.
Basically, dunking is it's
the best it's why twitter twitter you know insert posting is a thing for a reason and then i got
invited to a keynote at um core c++ it's the first year in israel and uh in tel aviv and i thought
well you know what like i I have strong opinions about what a
keynote should be and I think keynotes should in general be um a positive experience about the
language right like if the keynote speaker that you invited to the conference spends you know 30
minutes of their 90 minutes dunking on the language,
I feel like it might not have been the best choice for a keynote.
C++ keynote, why you should use Rust.
You know, so I thought, well, I really have to like come up with something that's like
really good and positive and focuses on the good things of the language.
So that talk is specifically organized to be an evolution of the language. It kind of
takes you from how ugly things were in C++98, from those of us who started with C++ then,
to how clean and simple things can be with a few auto keywords arranged for loop and
a concept or two thrown in
or something like that. Right. Uh, and it's funny cause I still like, man, I get these people push
back still sometimes on YouTube and on Twitter, they're like, auto is a dumpster fire. It doesn't
actually help with anything. It just makes your code harder to read and whatever and and and
and i'll come back and i'll say really like really you would rather type std colon colon vector std
colon colon string colon colon const underscore iterator like that's really what you want to type
instead and people push back with like yes because then I know what my program is doing.
And I, hmm, eh.
No.
No.
No, I've been there.
I did that for a long time.
No, this is definitely better.
Yeah.
I am 100% in the almost always auto camp.
And don't get me wrong.
I love the banter back and forth.
You know, I've seen people give talks where they
abrogate for this, and then the Q&A at the end is just people coming up. What about this case?
And what about, yes, that is programming. It depends a lot of the times. But for what you
just explained, I don't know how you can argue in the opposite direction that like-
Oh, people do.
You can a lot of the times, even when you're using auto, by looking to what's at the right
of the equal sign, you can a lot of the like get a great sense or even know exactly what the type of the thing is that
you're getting interesting that you get that pushback but i you know that's that's youtube
and twitter for you and reddit you know why not while we're throwing them all under the bus
and when i'm doing like training and auto comes up the argument i generally make is, do you care what the type of this thing is?
Do you really care what the type of vector dot size is? And 99% of the time, the answer is no,
I know it's an integral thing. I don't care what the type is. And if you really want to,
you know, constrain it with stood integral, or whatever. Right. Like I don't care.
And, and so I try to point out that I think choosing to not care what the exact type is,
is better than accidentally invoking an implicit conversion to the type that you thought that it
should be. Yeah. There's been, I know at least one bug that I caused in my first job as a C++ dev where I was using
not auto, I was using short or something or, you know, in 32T and it was returning a long,
long or something. And we had some rule that like, you know, we're not supposed to use auto,
but because it was a numeric insurance calculator, we had turned off and this is going to hurt your
soul. Cause I know your views on this.
We had turned off like the W all and W no conversion.
And this ended up in like a bug that got reported by a client because the long long was like a table ID and it got truncated.
And so it ended up in a crash.
And like I ended up giving an internal talk or like lightning talk.
It wasn't that long, basically being like this bug would have been avoided if we had used auto, because I wouldn't have to care about what the, what the type of
this, you know, table ID, you know, what's. Or if you could have turned on W conversion,
it would have been caught that way too. I mean, it would, it would break your heart to see all
the warnings that are turned off. And, and, um, I mean, I think we had explicit or implicit
conversions from like floating to double, like all over the place and conversions to bool.
Yes, it was.
I'm with you that follow the starter project, turn everything on by default.
And then like, you just don't have to worry about that stuff down the road.
But yeah, my argument was like, use auto.
And then we would have, we would have avoided the bug.
So you're alluding to the fact that I've been on a little bit of a rampage about conversion
lately.
I'm assuming you've seen some of that on Twitter.
I have seen some of it on Twitter, but I think it's top of mind just because I just finished
watching the C++ on C talk where you bring it up.
And then also your most recent C++ weekly video talked about it as well and how the
bugs could have been avoided if you just turned on the W dash or dash W, you know, insert all the things.
Well, just W conversion is the one that I'm only rampaging on at the moment.
That's the one that I mean, like, yes, I want all the other ones too.
But that's the one that I have found historically is the most difficult to convince people to use.
So I did one of my friends does security related work, not C++, but he'll send me things sometimes where he says, look at this bug that was in the C++ code.
And I look at it, and I can oftentimes spot it relatively quickly because I'm experienced with C++.
For him, the language is less familiar.
But he's the one who sent me the PlayStation bug.
And I looked at it, and he's like, yeah, this,
this error is less obvious to me.
I look at it and I say W conversion would have caught that immediately.
And so I start doing some more looking,
which I've never really done before,
but I start like browsing through the cert database and I've so far
identified at least 10 fairly major security bugs that are in the cert
database, CVEsves database excuse me cve database
of um 10 major bugs and c++ programs that would have been caught with dash w conversion security
flaws wow like big deals yeah c c and c++ code not all c++ code um so i've been i've been going
at this on twitter for the last two days, just like, oh, does anyone
else want to see another security flaw that would have been caught with WConversion? And I still
have people pushing back on Twitter like, oh, it's just too noisy. It doesn't actually catch
anything useful. And I'm like, that security bug right there that I just showed you would have
caught. I think the problem is that a lot of companies don't have this stuff on default from the beginning. And so having them try and turn
it on after the fact leads to like thousands and thousands of things. But it's like,
if you're starting a new project like Greenfield, it is so nice to have static analyzers. Like I
consider them like programming hugs. Like, and I term that from like, you know,
doing a little bit of rust programming. It's like the rust compiler. It's just like the difference
between rust and like C plus plus without all the analyzers and warnings turned on. It's just like,
Hey, you're doing this. You don't need to do this. Do you want to do this? And then like,
gives you a suggestion of what you should do. And you're like, wow, that's well, thank you for that.
That's very nice. Uh, and it's like, that's well thank you for that that's very nice uh and it's like that's what warnings are it's like turn them to fail and it's like oh
this didn't work like and i will give you this the c plus plus's warnings aren't as good um but for a
lot of the bread and butter ones like conversions they point exactly at what the problem is and it's
just like oh you're doing do you want to do this and it's like uh yeah i don't want to well thank
you very much it's just like having a nice friend there that like puts their arm around your shoulder
and says hey buddy uh did you mean to do this and it's like you're right i didn't want to, well, thank you very much. It's just like having a nice friend there that like puts their arm around your shoulder and says, hey buddy, did you mean to do this?
And it's like, you're right. I didn't mean to do that. Thank you very much. And it's not something
that gets in the way. It's something that if you use it from the beginning, it's just like having
a nice friend staring over your shoulder. Well, and I also find it kind of reprograms how I
program. So I'm less likely to write code that would ever invoke those warnings in the first
place. Yeah. Yeah. That's, it's true. That's the same way with formatting is a lot of the times
you can sort of predict when something is going to get, is going to do terribly in formatting.
So you'll adjust the way that you're structuring something, not semantically, but just sort of
anyway. So, so I'm going to ask you a question though though. Okay. Rust doesn't allow implicit conversions, right?
Correct.
Are there any implicit conversions from C++ that you wish Rust actually did?
I don't think so. There are parts of C++ that having learned it and used it in coding competitions that are shortcuts that are like, if you know what you're doing, are really nice. equal on a hash map, like an unordered map or map, it'll automatically insert or use the default
value or something. Whereas like in other languages like Python, you can't do that with
the dictionary. You have to use a specialized collection called the default dictionary.
That is a nice hack that like when I'm trying to write something really quickly for a competition,
I like that that's there. And I like that I can use an integer as a Boolean value in a while loop
and not have to do like a not equal to zero to materialize that Boolean.
So like it type checks, things like that.
I like for like, you know, being doing hacking and going really quickly.
But like if I'm writing production code, I don't think implicit conversions are something
that there are things that are not in Rust that I miss, but from C++.
But yeah, implicit conversions is not one of them.
Why do you, are there conversions that you miss? Or I know you've done a little bit of programming because I've seen the
live stream that you did with your cousin back in the day. Yeah, no, I've only toyed with Rust,
but since I'm on this rant about implicit conversions right now, I'm becoming increasingly
convinced that I'm going to go with at least 50% of the sharp edges in C++ would no longer exist
if we had a compiler flag to disable implicit conversions. Interesting. That's based on what,
like just thinking through my own training material. And I'm like, wow, if we didn't
have implicit conversions, this section wouldn't matter. This section wouldn't matter. This section
wouldn't matter. Yeah. I mean, I know a whole category of bugs that I've seen in multiple companies that
I've worked at where it's a combination of things, but like you have arguments, you know, I've seen
both the bug where you have a long list of arguments, some of which are pointers and some
of which are booleans, and then they mix up the order and then one will implicitly convert. And
I've also seen where you have a long list of parameters and some default arguments, and then one will implicitly convert. And I've also seen where you have a long list of parameters and some default arguments,
and then you forget like that there's defaults there.
And anyways, and like some of that is just like, don't put three Booleans in a row next
to pointers or whatever.
It's just that reading the code, you have no idea what true, false, true, true means.
But yeah, if implicit conversions weren't allowed, that would like, I think all of those
bugs would disappear.
We wouldn't have to teach what object slicing is if we didn't have implicit conversions.
Yeah. I prefer static typing in general and strong typing.
And implicit conversions break strong typing.
Yeah.
I was going to say C++ is not a strongly typed language,
specifically because it has implicit conversions baked into the language.
Yeah, this is a great, well, not necessarily tangent, but like, so, specifically because it has implicit conversions baked into the language. dynamic typing strong weak and i was trying to figure out like what what is strongly typed because
like static versus dynamic is like it's by definition but like strong versus weak just
seems to be an opinion and peter was arguing and i remember asking if you go back and watch the talk
i can throw it in the links i remember asking like how can you say like c++ is strong like
it implicitly converts everything like compared to haskell compared to java it's a weaker language
like how can you call it strong and then everybody everybody in the room, or at least most of
the people that were answering and Peter said, like, it's strong, if you want it to be strong,
like you can design your programming code to be strong. But I was like, okay, so if you're
defining custom types, etc. But like, but that's like, so you can opt in and write a strong program,
but like the language by default is not strong. And like, there are some people that are probably
listening to this, but that'll respond on Twitter being like, no, C++
is strong. But like, on a ranking of languages, like it falls, I think it falls below like Python,
I think Python is more strongly typed than C++ is potentially, but also like the argument of what
makes a strong language. It's like you ask a different programmer or software engineer or PL
person, and they'll give you a different answer. Some people don't think that implicit conversions has anything to do with whether a type is
strongly typed or not.
I guess I'm moderately curious what that argument is.
I'm fully in the camp of C++ is not a strongly typed language.
And we jump through a lot of hoops to try to make it more strongly typed.
We write strongly typed wrappers.
We delete problematic overloads. We write
templates that are constrained in specific ways. We teach single parameter or variadic
constructors or constructors with default arguments. Pretty much every constructor
at this point needs to be explicit. Any conversion operator, we argue, needs to be explicit.
And then we see these people tweeting about how C++ is a dumpster fire because you can do
something like pass an int to the constructor for a string and you have no idea what it's going to
do, basically. All of these things come down to implicit conversions that make the
language less strongly typed. If I can pass an int theoretically, or a Boolean, well, you can
pass a Boolean, right? You can pass a Boolean to a function expecting a string because it's going
to implicitly find the const character pointer overload for standard string constructor. And that's not what you
wanted it to do. Right? So I don't think it's strongly typed. You heard it here first. Jason
doesn't think so. I don't think so. And there's a ton of talks online. I'll try and find a few
of them. I'll find the Peter one. Yeah, I'm not sure if it's C++ devs that they just don't like
to admit that other languages are better
when it comes to this. And like, you can get so much stuff. I just recently discovered one of my
favorite things in programming is Haskell has a function search engine based on, they call it
type signature, but in C++ or C, it's just a function signature. And so you can, you know,
if you want to find all the functions that take a vector and return a vector, you can do that in haskell because it's such a it's got an amazing type
inference engine and it's so strongly typed and rust has a sort of it's not as amazing because of
all the different you know types that you can have in rust but it has something called rugel
which is uh i guess a play on hugel which is a play on, you know, Haskell Google. Someone, someone responded, what is Go?
If Go has one, what are they going to call it?
Because it's already taken.
But like, you know, C++, I don't think could really ever have something like that because
of the implicit conversions.
Like you could have a very poor form of it, but like, it's not actually going to capture
what all the different, you know, things that could possibly work.
Well, you can get, yeah, I i mean some tools get pretty close-ish like i think in sea lion if you type like function name open paren
it will show you like in a uniform call syntax way both all of the things that could be member
functions on the next type that you're typing in or all the things that could take that type as a function parameter so it gets pretty close but not no not to that extent i've heard
that i saw the tweet that jet brains did about the that c-line feature and i think i retweeted
instead of like if this is true like that's that's amazing because that's kind of one of the arguments
for why you want like a ufcs um uh sort of paradigm
or like you know object oriented where you can have this sort of dot completion you know you
go dot on an object and then it can easily suggest you everything that can come and without that if
you're just calling free functions it's a lot harder but supposedly i've heard c line has pretty
good it does work yeah although sometimes it confuses me because I'm like, I wasn't looking for a free function.
I was looking for a member.
And they're like, oh, right.
It's doing this to be helpful.
Okay.
That is pretty awesome.
Look at that.
Free sponsorship for JetBrains.
Do we have a sponsor for this show?
No, no, no.
We've been reached out by a bunch of companies.
But it's one of the things that until there there's some huge monetary like life changing amount of money. I don't think I like having the uninterrupted sponsors and quick outro. Although some people complain, they're like, we didn't know that episode was going to end. You could have given us like a 30 second heads up because a lot of the times I just like hard cut. And it says thanks for listening. Bye.
Wait for next week for the next episode.
Yeah.
Subscribe now.
All right.
We were talking though.
We took a couple of tangents.
We were talking about C++ on C slash CPP North
and the talks that happened there.
Oh yes, the last five months.
Yeah.
So yeah, how did C++ on C go?
How did the workshop go?
How'd your talk go?
I had one paid student in my workshop.
The rest were volunteers.
Oh, wow.
And then the workshop that I was supposed to give at CBPCon got canceled because there wasn't enough people signed up.
This was a bad year for on-site workshops for conferences.
That is what I observed.
But I don't know how they went at C++ North because I didn't give one there.
If I recall correctly, I'm going to get this wrong, but I think on average it was way lower than what we had hoped.
But I think there was at least four to seven in each class.
And I know one of them I think originally had six or something.
And then two or three didn't end up able to coming because once again, travel problems.
Right.
But I think, I mean, it looked like it was going to be similar to like,
you know, one or two students, but I think each one ended up having, at least I want to say it
was in like the four to seven range. If I'm drastically off, you know, look forward to a
future episode where I will correct this after Mike Dom DMs me and he's like, how'd you get it
so wrong? There was 17 in each class. Yeah. Well, but regardless, it sounds like, yeah,
probably not like it was three years ago, where at a reasonably sized conference, you expected around 10 to 30 students in each class
or something like that. Yeah. It was a lot smaller, I think. Yeah. But the conferences were all good.
I had direct exposure to COVID at the speaker's dinner at C++ on C. And then I had direct exposure to COVID at the speakers dinner at C++
North. So I skipped the speakers dinner at CppCon because I decided I just didn't want to go down
that road again. Did you manage to dodge COVID in both instances? Yeah, as far as I know. I mean,
over the last, how long has it been since we did this thing? Two, almost three years, right? All of 2020,
2021, 2022, almost. I've had like, I don't know, two or three weeks in total that I felt like I
feel kind of run down. I should take a relaxing day tomorrow. But as far as I know, I've never,
I haven't even had a cold, like because of all the things, I guess. And I'm the kind of person who usually gets, like, a bad cold once a year.
So, didn't have a cold.
I've never tested positive for COVID.
Between C++ on C and CPP North, I took a COVID test an average of, like, every other day just to see how I was doing.
And they all came back negative. Well, that's what I know. That's, that's pretty lucky. I mean, I know that for most of the
times, not the dinner, obviously when folks are eating, but it was a mass conference at C++ North.
I'm, I'm not sure if C++ on C, but obviously that helps if you're, uh, if folks are masking,
at least when you can, obviously, if you're putting a piece on C was not a mass conference, but the weather was good enough.
And the way that venue is set up, we generally speaking had pretty good airflow through the conference.
Right. But there was five or six people who tested positive after that one, like relatively low numbers still.
And generally, I think C++ North, I don't know the total numbers,
there was one or two people that tested positive. They were at my table at the speaker's dinner.
Oh, were they? Yes. Because I got an email saying, just so you know, two people at your table at the
speaker's dinner tested positive. Yeah, that's always concerning. I can't remember if they
might have been. I mean mean i'm sure i had
close exposure as well i got a email um but yeah luckily i mean at the time i think i was triple
vaccinated and had already had it in i think it was earlier this year i went skiing and ended up
getting it uh and it was pretty bad actually because i had missed my third vaccine i think it
was my third vaccine i was registered to get on a monday and then the ski trip was a friday to
saturday and then there was a snowstorm on the monday and my uh appointment got canceled and i
tried to rebook and then they rebooked it for like the friday that i was leaving and so i didn't end
up getting it caught covid and then basically was like dying for four days but uh and then i ended up getting
like the booster the third vaccine like a week after that which two days after i got that they
then said oh if you just recovered from covid wait like eight weeks right because you don't
really need it so then there was like a period where i was like ultra ultra like safe from it because I had both a booster vax and had just recovered from it.
But anyways, good to know that you dodged.
I dodged it all.
And I'm planning to get my bivalent or whatever fourth shot booster before I make my next round of travel.
Yeah, yeah.
I think those became available recently in Canada as well.
Yeah, I should get that whenever we have still
like two or three max mass vaccination sites set up and i thought that our state had like shut them
down i guess they had shut down not the vaccination sites but they had shut down the mass testing
centers is what they had done here yeah and so i'm like well i don't know how hard is it to get an
appointment or whatever so i go and look and it's like which vaccine would you like and full drop down box like oh i think
i'll take the bivalent from pfizer and they're like okay go to this location and see if there's
any bookings available and i look and there's four spots available every single hour of every single
day so how times have changed.
I'm not sure if that was the case in the States,
but in Canada, I mean, trying to get a vaccine.
I remember having like six browsers
across two computers and like hitting F5.
And I tried writing a script at one point,
but it just wasn't.
I think we talked about trying to get you to Colorado.
Yeah, yeah.
That actually, so that was super kind of you.
I had-
I can't remember what it was, if I tweeted or something came up and I just-
Or no, that's what had happened is I was attending one of the virtual-
Yes.
Previously North Denver C++ meetups.
And I had had my first vaccine and was trying to get my second one.
But basically the way-
I was in some weird postal code, which is the equivalent of
a zip code in the States where like I didn't qualify for vaccines. And so every once in a
while, this account would tweet, say that we have like 800 spots. If you go to this link now,
you can get like a sign up, but they'd be gone in like three minutes from the time.
Anyways, you had offered, I had said, oh, maybe I should just come down. Cause you were saying
at the time they were, you could walk into any sort of Rexall or Walgreens. Yeah, not Rexall here. But yeah, you could walk into basically
any drugstore, any pharmacy, anyone that had a pharmacy and just walk up and get a shot at that.
No health card or anything. Or I'm not sure. I guess you don't have health cards in Canada or
in the States. But like, you don't need to show anything. They'll just like, which one do you
want? Is this your second, third? What'd you have before? And that's it.
Yeah. And I almost pulled the trigger on that. It's not quite that. So we had, we had all the
backups that you all had, but you know, like a month before you did or something like that.
Right. Yeah. And then by the time you were trying to get your second shot, it was now super easy
here, but now the vaccines are not quite as
free-flowing as they were you do have to make an appointment again and make sure you have a slot
and i think it's more just about managing inventory than it is about actual availability
like they don't want to defrost a bunch and throw them away or whatever right anyways i guess the
moral is everyone should go get their shots uh they definitely and also to a side benefit i was never a big fan of needles i mean still i'm not but
there's a couple times now where i've had to get a uh tetanus shot for whatever reason and uh you
know some freezing for dental work and now i'm just like oh yeah like vaccines are great you know
like that's just uh the more the merrier you know it's uh i used to sort of be concerned going in
and now it's just like i remember that after getting the first vaccine, I was in such a good mood.
Like I think I ran I ran a couple of kilometers there and then got the shot and then continue to run, whatever, however many more.
And I was just I felt like invincible. I was like, oh, yeah, I got this vaccine.
And like some people were saying it knocked them out for a few days.
And I was oh, man, it like it was like a booster in terms of my mood.
And I felt like I was a superhero because there was just so much anxiety around being able to go out.
And it's just and it was, you know, it's only the first one of two.
And you get even more invincible, quote unquote, you know, after the second one.
But just I don't know.
I had a very good experience.
You know, it felt like someone punched me in the shoulder a little bit.
But other than that, I was like, all right, I can go take on the world again and, you
know, go and hang out in someone's backyard and feel that much less anxious about, you
know, ending up ill.
I kind of had a similar-ish experience on my second shot.
You know, it was like 12 hours or whatever before the symptoms hit me from the actual
shot.
And then I was like knocked out for 12 hours
pretty hard but then on the like third morning or the second morning the third day after the
second shot i woke up i'm like i felt great and i went on like the best run i had gone on in like a
year like i was so bizarre yeah yeah it's uh yeah folks folks haven't gotten their shots you listen
to those stories and go get your your superhero superhero status um tune in next week for part
three of this three-part interview with jason thanks for listening we hope you enjoyed and
have a great day