CppCast - Running Conferences and Processing Credit Cards with Kevin Carpenter
Episode Date: September 7, 2026Mathieu and Jason are joined by Kevin Carpenter to discuss all aspects of being involved with a conference: from regular attendee, to volunteering, to speaker, volunteer coordinator, and catering conc...erns. Kevin also shares some of his insights into how credit card processing works, along with some of the challenges he's encountered. In this episode Jason also gives the guest some homework assignments for future conferences! News How fast is C++26's std::hive? - Daniel Lemire Tonight, ShadPS4 joins the hunt: uncovering bugs in the most popular PS4 emulator - Nikita Terentev, PVS-Studio
Transcript
Discussion (0)
Welcome to the 411 episode of CBPcast, the first podcast for C++ developers by C++ developers.
I'm your host, Jason Turner.
Every fourth episode of C++ Weekly is a crossover episode of CBPCast,
and you can choose to watch the podcast on YouTube or listen to it on your favorite service.
I'm joined by my code host, Matthew Roper. How are you doing, Matthew?
I'm good. I'm good. I'm happy to be back home. It's been a bit busy. I was hosting some guests for an entire week.
so now I have the house for myself again.
I feel like, who, I can relax, can recall the podcast,
can chat about C++.
I find having house guests in general to be very stressful personally.
I have a step a week, my apartment is not that big,
but I was like, oh, when we offered it was like,
oh, that sounds good.
And I'm like, okay, I'm glad now, you know, it's me.
I can have my own old habits and everything.
My wife and I used to say that if we had enough land,
we would have like four tiny houses and one would be the one we lived in one would be like the workout
tiny house gym and one would be like when guests come over right and i don't know what the fourth
one would be we would have had three anyhow all right today we are joined by our guest kevin carpenter
kevin is an experienced software engineer who excels in crafting high availability c++
solutions for linux and windows with expertise and transaction software financial
modeling and system integration. As a software engineering manager, he ensures secure,
high-speed credit card transactions. In his prior position, he played a lead role in developing
an interest rate risk model for large credit unions enhancing legacy code and optimizing ERP data
integration. Kevin volunteers at conferences like ACCU, CBBCCon, C++-C, and Swift Graph,
where he holds key positions such as speaker liaison and volunteer coordinator and chair. His
diverse contributions to the C-bos-West community showcase his commitment to excellence and to drive for
collaborative growth, leaving a lasting impact in the tech world. How you doing, Kevin?
You know, it's interesting hearing that read out loud because, you know, I'm, I filter everything I write through, you know.
Yeah, anyways, that, that's a lot. Thank you for having me.
It's no problem. I mean, if in cases wouldn't be obvious to our guest here and with all the roles that you have held, Kevin, this is your first time
on CBPcast. However, it is by far not the first time any of us have met because you've basically
worked at every conference I've ever been to, I think almost at this point. So I'm going to give you
one possible correction. I actually co-hosted CPPCast once with Phil. Oh, you did. And,
you know, it was a while ago. And so I think Timer was out at the time. And so Phil had asked me on
to co-host, I think it might have been, it was a while ago. So, but this is the first time I've
ever been a guest. So I appreciate being invited. That is absolutely sure. It's good, Jason,
to build Ricky's rule. Yeah, I know. I actually have a rule right now that we have no repeat
guests because I really want CBPCast to be about, you know, highlighting new people. I looked for
your name. I didn't think you had ever been on CBPCast before. I clearly missed that episode.
That is like my first talk I ever gave. I want it just to probably,
CPPCast can be great.
The fact that you didn't find me in there
and CPPCast was the focus, that's even better.
It's kind of like my first talk.
I just, I don't want, you know,
it's fortunately it's rolled down the list, right?
It can just stay work days.
Well, I also looked on the list of guests,
not on the list of hosts, so that's why you didn't show up.
That's perfect.
Well, anyhow, welcome to CPP cast.
We have a few news items this month.
So as a reminder, these things are not
Not necessarily the most timely news items, but we have a couple of articles that I thought would be interesting to discuss in case you have missed them, dear listener.
And so the first one is from Daniel Lemire's blog on a standard hive in its performance.
And you said you had the opportunity to read this one, Matthew.
Yeah, I read through. I was curious because I have considered hive back in one of the
game project I was working on.
Ultimately, I elected to pick a different container
because it seemed easier to implement than Hive.
I was happy to sit in the standard.
I admit I expected nicer numbers for iteration.
I would have to maybe test myself
and it depends, maybe it depends on the load factor and whatnot.
But I kind of thought that the iteration system
speed might be slightly faster.
It might be biased by the test case
Because it's always the problem when you make a container test case.
It's like, do you do anything besides just a read?
Are you only bound by how fast you can read the bytes?
In which case it's going to be really hard to beat vector
and it can really quickly snowball into something worse.
But I was curious.
I was curious because I've used different alternatives.
And I admit I expected slightly bigger numbers or lower number,
depending on how you want to read it.
Depending on which way you're looking at it.
I'm actually curious because I'm just now clicking through it.
And I find that one way things often get muddled in benchmarks like this is what kind of elements are actually being pushed in to the container.
Yeah, I would agree with that.
And I am having a hard time figuring out the value type.
Okay, so it's UN64T.
Right.
So you're just reading number, yes.
Yeah.
So some of these things like resizing or removing an element from the middle of the container is if you had something that was not trivially destructible, you would probably see much different numbers in that move and swap kind of situation that you're going to get with vector versus hive.
Yeah, it's always difficult when you're just trying to measure the access cost and not the actual operation you're doing because it might get a bit more.
old. What did he say? Like is something about traversal, which is like, vector is less than one cycle,
and a hive is six cycles. That's more cycles, but then do you get like, does that, does that
just the cycles? Does it include like the memory round trip, or do you have like a weight that
that cannot be hidden by the, by the CPU with the pipeline or not, things like that?
It seems like it would make sense for at least one of us to describe what hive is for a moment
for the sake of our listeners. Yes, probably. So,
So if you work in games, or if you work in something similar to games,
I know it's common in games.
I think that's where it comes from.
Well, that's where I heard about it the first time, at least.
You may end up with those collections of objects in your world that you try to represent,
items, monsters, whatever you want.
And you might end up with the issue that you would like to be able to iterate with them fast,
but you also would like to have some form of stability of indices or pointers.
And that's where a vector is a problem, because you can't remove anything from a vector.
You have to leave tombstones, which doesn't work.
If you don't have a way to figure out that this is a tombstone and skip it,
or you end up doing a swap-to-tail,
which is usually the solution that I've elected to do,
but then you lose point of stability, which could be a problem, basically.
So the solution with Hive is one of the, there is many ways of implementing one,
but basically you try to have some form of header or something smart on every block
that tells you it's still a vector,
but you can find empty blocks in it
and basically you don't lose point of stability.
And then they use some fancy simly trick,
usually your bit fields, to quickly figure out
basically how to iterate to the next element.
Okay.
There's all sorts of fancy tricks you can do.
Is that similar how you can use adjacent memory in a way
when you're doing some of the performance improvements
on an unordered map?
because I heard you mentioning the tombstones and, you know, when it comes to me in containers,
I go with more of the basics.
But, you know, as I was working on a talk this year, Swiss tables and such came up.
It made me think of that.
Well, I think it comes from the same sort of thoughts of like, what's it called?
Like open address.
Open address.
You try to have one contiguous array that is all your data entries, basically.
And then the question is, how can you iterate fast?
I think you can also iterate through hashes like that because there is a tombstone that you can know how to skip to the next thing.
But you can't, you know, the pointers are not stable usually in those things.
That's the whole point of those Robin Hood hash tables is that every time you do an insert, everything can move or worse, you can get a re-hash.
But even without a re-hash, usually items will move.
Potentially, they might get moved even the one that you did not insert.
Yeah.
So the whole thing in this is that you have some form of way of skipping ahead.
I think that the naive implementation is just compared a value with some form of like tombstone magic and just skip it, but that's usually slow.
Usually we try to have like a magic bitfield instead that with a pattern that can tell you like how do you skip to the next viable entries.
So if there is a lot of empty entries, you can do a big jump once to get to the next part of like live items.
And if it's all once, you can also say just unroll this thing to like a classic X and elements just iteration as if there was no.
It's a bunch of trickleck.
I haven't looked exactly how it's implemented,
but that's the rough idea.
I was just curious how this compared to deck
because I thought that deck also had iterator stability,
but it seems it doesn't.
Not in a way that I thought that it did.
If you erase at the beginning of the deck,
then only the erased elements are invalidated
for their iterators, which makes sense.
But nothing after it is.
If you erase at the end, only the erased elements are invalidated.
But if you erase somewhere in the middle, then it invalidates all iterators.
That seems almost like a useless guarantee to me, because how can you like, I don't know.
I guess if you only using pushfront pop back kind of...
Yes, I think that's the...
If you're only doing that, then you can maintain stability of the iterators.
Yeah, and I think if you remove in the middle, you're basically...
basically have to shuffle everything in a deck unless you manage to remove exactly enough to remove an entire block,
which is scary things, scary things.
The whole idea is that you could see it's a better deck in the sense that you can skip.
Like if you have a chain of like several consecutive empty blocks,
usually implementations are able to skip to the next one where there is at least one live entry.
And you can use, and they usually use some magic like I mentioned, like Cindy and whatnot,
to try to quickly jump to the next one if you get to a partially filled block.
Right. I was just reading his summary that it's, you know, meant to be a better stood list. And it's interesting because out of all the kind of back to basics talks I've done, that is one container that I just, we use it, you know, even if I think of this stuff that I do daily, we use it in a few areas, but still list just isn't one that we use a lot of.
Now, I tell students you only use list if you absolutely positively need, like, memory stability. And then I'm like, you know, there's got to be a reason why that thing.
is immovable. You need to tell me a good reason why that thing's immovable and then use list.
My guideline for list is no. The only reason list exists this day, mostly I would say,
is to issue on an atomic thing because list is the easiest way to implement like atomic append and remove.
It's much more annoying to try to do that with any other container.
But you can't use standard list that way, right?
I don't think it's guaranteed by the implementation now. You probably need to see like the container in itself,
like the idea of the container is the easy way of implementing like an atomic container.
But as long as you don't insert in the middle, actually you can insert anywhere because it's just a good to meet point a swap.
Yeah, as long as you are taking the guarantee that those pointers are stable, the iterators are stable,
you could share individual elements across to different threads, I guess safely and some definition of safely.
I mean, you're still going to use the way.
Well, it would technically be fine, except for the fact that the standard only guarantees that the standard containers are thread safe or concurrent readers.
And if you're modifying the container, you're still kind of going against the rule except for the fact that those iterators won't be invalidated.
You can try to say, oh, knowing how it's implemented, I might be able to get away with it.
But at that point, I would say just use a concurrency library like TBB or whatnot.
They will have like an atomic like boost I think also has one.
Like they will have like a QR list or a type of container where you can have like shared something or you guarantee.
Usually that you can push in pop and it doesn't involve a new text ideally.
So I'm still okay with list for things like say I've got like a list of like hardware device drivers, hardware handles,
things that are logically immovable, right?
Like they point to a specific location in memory.
or whatever, window handles, that kind of thing.
Because, well, anyhow, that's a completely different rant.
I am perfectly okay with deleting move constructors and saying, no, this thing cannot be moved
because it's illogical to move it.
But I will get into arguments with people about this, not the time.
All right.
Do you make the 26 then?
That's good.
I wasn't sure they did make it.
Okay, nice.
I don't believe it's currently implemented by any standard library.
That's why this article is based off of the reference implementation.
Yeah, that's what Daniel claims in the thing, is that no standard library ship stud hive right now.
You can find the project on GitHub of the reference implementation.
I think, I believe, that it is basically the only standard container that is not Constexper in C++26 as well.
I give Hannah a week.
No, it was not able to be made Constexper.
Oh, okay.
Is there value in there?
There's always value in making it Constexper, yes.
Okay, because the point of stability doesn't sound like a thing you care about in Constexper context.
Well, no, but the point being that if your code is best expressed with Hive and you want to use it in runtime or compile time,
don't make me swap out my container.
Okay.
Right.
Unless you want to make me pass a template template to my code and then have an if constexper, blah, blah, blah, template.
It's really annoying to switch types dependent on whether or not you're currently in a compile time context.
Right.
And it is still a faster list in the type of like, oh, an iteration, sorry, random access and whatnot.
Yeah.
I don't know.
Jason, you're usually the one who plays more with Constexper craziness.
I don't know if you've tried using Constexper list with any non-trivial size in Constexper
and how long it takes you to compile it.
With Constexper list?
No, I haven't actually used a standard library implementation that had Constexper list yet.
I have not played with that yet.
I should do an episode about that, though, as soon as I can.
I've done vector.
Okay.
We'll carry on.
TVS Studio blog.
And I really do actually.
really enjoy these PBS studio blog articles because they always dig into some
completely random project or something and this particular one which I have now
lost I don't have the tap open is where they investigated one of the main
PlayStation of four emulators and I know let's be honest like the the PBS
studio blogs they're largely about like hey look how awesome our static analyzer is
you should buy it and use it on your project, let's be fair.
But it does find some really fun stuff.
And as someone who loves tooling and loves fun, you know, random bugs,
I do find this.
I have to say, and I have to say my first foray into PBS actually was when I was working
on that financial model about 10 years ago when I was building that out in Windows.
We used PBS Studio.
And it was my first static analyzer, which, you know, I'm very thankful for claim tightiness.
but I will say it the first time we ran that on our code base oh oh boy you know
backlog tickets just went through the roof I had work for a year you're like job
stability through static analysis that was exactly it no new features sorry we got
stuff to do I never got to try it but it does sound pretty pretty solid on Windows
if that if what you got as a Windows bill and you don't want to be
to wood for Clanktidey.
Yeah.
I tried on past project to use the three things, like a CPP check.
I felt that it mostly found noise and false positives.
I found the value to be extremely low compared to just stuff that warnings would already
catch anyway.
CBP check, I think they used to have a goal of no false positives.
I assume that's still one of their goals with CBP check.
But CBP check, I mean, it's maintained by like two people.
So it can run behind on syntax.
So if you're using like C++26 syntax changes, I don't say you put a const eval block in there,
it's gonna probably choke on that.
So with CBP check, you do have to, you know, say ignore syntax errors basically because
that's like a me problem, not a me problem.
Anyhow, was there anything that stood out to you in this one, either one of you on the
PBS Studio blog post here.
I didn't read it in detail, I admit.
I read some of it, but it was a bit long.
It's a little bit long.
There's a few things that I love, like it says,
you know, there is a check here that's like return
if streams dot size is greater than or equal to zero.
Well, streams dot size is always going to be
greater than or equal to zero.
But then there's a couple of other, like comparison one,
where did it go?
That really, it's easy to overlook.
Anyhow, I forget the, where the line was here,
but it's basically like if X is less than .01
or X is less than .000 1, right?
Like the first comparison is almost certainly incorrect.
So it needs to be, you know, like,
I don't know what the author's originally meant right here.
This is gonna have to be pushed back, you know?
Yeah.
Kevin, you've done all the things at all the conference,
Tell us more.
Yeah.
So it's funny you say it that way because, you know, it sounds like one of your talks.
So 2018, so I've been going to CPPCon since like 14 and, you know, back in Bellevue.
And in 18, I'd switch jobs.
It's 14.
Yeah, yeah, since 14.
Is that before it was named to CPPCon?
No, I think that was the first year it was CPPCon.
I actually, I kind of got lucky. I was doing a plural site course back then. And of course,
the course was from Kate Gregory. And so, you know, and then we needed a consulting firm. So we hired
Gregory consultant. So Kate was working with me on our project. And, you know, as things went
along, it was great working there. She's like, you got to come to CPPCon. So, you know,
my first lightning talk was because of working with her. You know, we found a bug and stuff we were working on
that was between Microsoft and Rogue Wave at the time.
And she's like, oh, you got to do a lightning talk.
And so that's how me doing talk started out.
But in 18, I'd started with a new company.
I did not want to ask them for funding to go to Con.
But I definitely wanted to go.
And so I applied to volunteer.
You know, I was like I knew a place that I could stay because Washington's where I was
originally from.
And so, yeah, that was my first time volunteering.
Incidentally, it was also my first time of getting to do threading class with Rainer and Catch with Phil.
You know, Catch 2 with Phil.
Yeah, it was got to do classes and everything else.
So I, for all the conferences I ever went to, I would, you know, I'd go to talks.
I would meet a few people here or there in the hallway.
But generally speaking, you know, I probably disappeared to my room a little more than I should have.
And in 2018, being a volunteer, like the amount of people I met and talked to in that year
surpassed everything of the previous three years that I went without a doubt.
The amount of just friends that I made and everything else.
You know, it's like as a volunteer, okay, attending me would never have walked up and
chatted with Jason before he's getting a talk.
Volunteer me got to come up and be like, hey, I get you, you know, need a bottle of water
and everything else. And it closes this gap that I think attendees have where it's like,
you know, to go up and talk to a speaker, it's like it, there's this part of, it makes me think
of when I see a new volunteer, just giddy with excitement to meet B.RNA for the first time.
Right. And it's like when you've been around Bernay, he's just such a wonderful, normal everyday
person too. And so I get both sides of that equation and volunteering that first year helped me
really see that. And so I volunteered ever since. So,
con you know we went through the pandemic i was volunteering for con and finally reached being like
volunteer liaison in uh 2021 i think was our first year back and so i became the volunteer coordinator
if you look me up on youtube you will find interviews i did because when i first started volunteering
for cpp con john's wisdom was like hey why don't you do interviews and i'm like oh great i don't know
how to use tube youtube never been on a mic never been on a camera yeah love
let me just do interviews, never edited video.
Yeah, so that's how these, and it's these things that they just kind of come together that you don't expect and, you know,
pull the out of comfort zone.
But a digression there.
So 2021 was my first year as volunteer coordinator at CPPCon.
We got to 2022 for C++ now.
And John was like, well, we need a volunteer coordinator for C++ now, you know.
And it was more of an ambush.
Like, hey, you got a moment for a call.
and you hop on the call and there's five people there and it's like, hey, you want to be volunteer
coordinator for us?
It's like an intervention, but backward.
That was exactly how it was.
So C++ now, you know, it was also kind of funny because as you know, Jason, like Christy, my
wife helps volunteer and run events with us too.
And so we're at C++ now and we're finishing the day and Phil Nash is like, hey, you and I
should go have a beer.
And so Christy's like, you go have fun.
you know and so sitting in the bar of Phil and Phil's like so you know we're getting ready to run
C++ on C again this year I can use a volunteer coordinator okay so there's C++ plus on C so we're at
three conferences now within one year then of course that led to ACU on C and helping to volunteer
there and you know that's that's pretty much where it's been so at one point in time even just from
volunteering I think we were hitting five conferences a year just just as volunteering not counting
speaking. So what are the other ones then? So Aspen. So Aspen, ACCU on C, C++ on C++ on C. PPP, so five. And then C++ online. I was helping with C++ online for a little bit too.
Okay. And so it and all of the part that I said still stays even more the same. Because like we were saying at the
beginning, it's like I've seen you both at so many conferences. It's, you know, it's and and as much as I love to
watch the videos. That's even, I'm, I'm feeling really fortunate this year. So last year I was
speaker liaison for CPP Kong and we had a new speaker liaison takeover. And so I'm kind of excited
this year because I am mainly just going as a speaker, Christy and I'll run events and, you know,
the suite like we normally do. But I get to spend a bit more time down on the floor,
you know, after talk and stuff and just enjoying the conference. That said, given going to a talk
or chatting with people in the hall, I know the talks will be recorded. I'll do the hallway track.
you know, every day of the week and twice on Tuesday.
So Tim, Tim is the new speaker liaison.
Yeah.
Right?
Yeah.
I feel like at some point in the future, I want to get Tim Van Dersen on here as well
because this is another person who has been behind the scenes at so many conferences
Oh, yeah.
For a long time as well.
Yeah.
And I mean, and to that end, like as volunteer coordinator, so when we do volunteers and
this happened across all the conferences, I always bring back, you always bring back the
solid core team. You always bring in new people. That's the thing I think I enjoyed about
doing the coordination for volunteers especially is giving people that opportunity I had in
2018 when I first did my volunteering. At the same time, you know, it's just like whenever you
build the team together, you need to have those few strong people that you can depend on because,
you know, you have to build it out so everybody has their particular talents. And Tim is just
this consistent GSD, get stuff done.
We'll stay in stuff.
Get stuff done.
He, you know,
dependable, you know, whenever he's going to work on something,
I know what we're going to get is the output, you know, just,
and that's, there's, there's, I want to say six or seven people.
And I'm going more just from ACCU, C++ on C plus on C that,
that I know I could always depend on.
And so we would always bring back some core people to help and then bring in all kinds of new people
so they get the experience too.
But yeah, definitely having Tim on would be great.
So you've seen both side of conference organizing there, because you've been there as a speaker, you've been there as an organizer or a volunteer coordinator.
How would you say that?
Because I've only experienced it as a speaker.
I can't even say I experienced it as a normal gorex.
I think I had always something to present.
Well, arguably the first time I did speakicon, and I had a poster, and I kept thinking no one would care.
So I felt more like I was an attendee.
But yeah, like how does that compare being like behind the scenes and whatnot?
It's interesting because so I will say, you know, we're C++.
So I do want to mention so Swiftcraft this year I actually ran that as the full organizer.
And the difference there is you understand the financials.
And I think that's an important factor, you know, because we were kind of alluding to this beforehand.
It's like, you know, the cost of running conferences is not trivial.
The joke of $100 for a gallon of coffee is real.
you know um and so so there's there's there's all of that logistic side with fortunately i i did once
um you know and and i understand it but i enjoy more of the people part you know the organizing
of the volunteers to have events and pull people together i'm trying to find the words because
that's the part where you know and we have volunteers that's where we get some really great
volunteers that can really help i i hope i word this right pull people
out of their shell a bit, right? You know, you're walking down the hall and you're seeing
someone that's just kind of off on their own and you're like, hey, how's your day going today?
And you just kind of try to engage and pull them into the conversation. I mean, I think Con and
lots of the conferences, we do that Pac-Man thing really well, right? You know, where someone walks up
and you just kind of make a hole to get them involved in the conversation. It's interesting because
now I think I'm probably biased. It's been so long since I've gone as a regular attendee.
It's like I showed up at one conference as an attendee this year for, for a lot. I think I'm
a different language and the volunteers, they were shy a person. And so, you know me. I actually was
like, hey, you want me to help hand out packets or something? You know, because I'm just standing here.
And I'm like, you know, hey, I'll get to talk to more people. So, I had an easier time handing out
packets than I did walking up to a random group of people on a table. It was, it was an odd thing for me.
It was a, it was a role reversal, that's for sure. I don't know if that went that people volunteer then.
Absolutely. And I mean, and it's, it's.
you know, generally most of the conferences have a thing. All the conferences that I've volunteered for,
you know, as a volunteer, you'll get your ticket copped. And generally speaking, every conference I've
volunteered for or coordinated, we're going to make sure you get to see the stuff you want to see.
Yeah, you're going to work, but you're going to have a great time. You're going to be hanging out
with a bunch of people all interested like you are. And then, you know, depending, it's like if it's
the only way you can get to a conference, well, some of the conferences, you know, they can look at
your needs and where there's budget, they'll help you do that. If you're a student trying to get
involved in the community, it's a good way to kind of put yourself out there. The amount of
students that we've had come on as volunteers that, you know, moved on to becoming speakers,
you know, getting better jobs. It's a great way to, I think there's so many things like, you know,
this is more natural for me. Like even when I think of working with you both is we talk about
C++ and we talk about work later or such, my C++ is not super advanced. I mean, I feel good about
the stuff I do, but that's where when I think of my unordered map top talk or my almost always vector
talk, I do back to basic stuff because I like explaining those things. But I guess where I was trying
to go with that point is the person that, you know, they're really good on the C++, but they want to
build out that getting to know people better. Yeah, we got a really comfortable place for you to
feel safe and get to know people and you know build that skill set out and you know if you're the
person that really is you know i had one volunteer that we had her at the store and oh my gosh she was like
add on selling i think i think that was the year that we sold the most bobbleheads at cpccon i think
she don't you want to be arne with that oh come on how about a herb setter you know you need a herb setter on
your desk today. Yeah, she came on. She's given two or three talks now at CPPCon 2. So that's
cool. Can I can I it's probably you probably can't tell me. But I'm curious how many of those
bobbleheads are left in storage. I think we did finally sell out of Biarne. I think we did finally
sell out of Bjarne. I'm not saying that we have our own storage unit for bobbleheads or anything
like that. You're not going to say that. No, I would not say that. No, I would not say that. No.
it is not that bad but there's there's going to be plenty of bobbleheads for a while
do you know how many were originally ordered oh what's that sorry sorry go ahead i just was saying
that i can really miss down on the bubble heads i guess we happen after uh after coveta something
i don't remember i think it was 2021 was the first year ah yeah i think that we had this set
or no 19 i think it was i was 19 it was the first year in denver yeah it was the first year in denver
because that was the whole thing.
It was like you could get the whole set.
And for that year, we had a whole set that were autographed, you know, by everyone.
And so, but it's interesting because I will say this, each year we only pull out three cases.
And there are plenty.
And the joke is we're almost out of bobbleheads.
And everyone's like, no, no, no, no.
We just got to go back.
We just got to go back to the storage unit.
There's plenty more there.
So it's kind of like this, like this magic box that just,
keeps refilling. We have plenty of bobbleheads. Buy some up this year. You have a bag of holding
of bobbleheads. That's exactly what it is. Just keep pulling. Keep pulling.
Although you said you're running out of Bjarnes. So that's, uh...
Yeah, yeah. That is, you know... For anyone doing like your investment outside, next time you go to
the car, just get the biannees. They're the one that are about to get appreciated in values.
Because there's going to be more... I imagine getting a one signed by Scott would be much harder today
than it was in 19.
Absolutely.
Scott didn't even attend in 19, did he?
No.
I don't think he did.
I think he did.
I think 18 was his last year because I want to say.
18. I don't even have he spoke in 18 or if he just attended.
Yeah.
I think you're right.
Don't think I ever saw him do a talk and I've been doing since 2016-017.
Yeah, I don't think I've ever actually seen one of his talks live either.
That's a good point.
Of course, Kevin would have because he's been around longer than we have here.
Yeah, I had seen, I couldn't put the year on it, but I do remember seeing him give a talk.
And it was interesting because I knew of his books, but I hadn't read him yet.
And then I went and saw his talk.
And then, of course, you know, right after bought every book that he had and went through him.
Yeah.
And I'll remind our audience that it was on CBPcast that he announced his retirement.
Oh, wow.
It was right.
Yeah.
Damn.
It so did Andre Alex and Drescue,
but that one didn't stick.
Yeah.
No.
Oh, did Andre actually retire at some point?
He retired from C++ and moved to D.
Oh.
For like three months, I believe.
Shortest retirement ever.
So as long as we're still talking about conferences,
though, you've not only been to the conferences that you've organized
and helped organize.
You've been to meeting C++ as others as well, right?
Yeah.
Yeah, so meeting C++, I got to present in 23 at Core C++, which was awesome.
I mean, talking about hanging out with Bernay, like, it was kind of cool.
We did a tour at Core C++, and Bjarnay was with us.
You know, we did a tour of Israel, of Jerusalem and Old Jerusalem.
And so, yeah, so Core C++, Meeting C++.
The only one that I, I want to say that I, is I, you know, there's lots of C++.
Plus Plus conferences. But when I think of the big ones, I have not done C++ North. That was it, you know.
Oh, okay. And more of it just becomes timing wise. So it is interesting. Christy never understood
conferences and why I went so much until, you know, after 2021, I went to go volunteer. And, you know, I was right after COVID. So it was a stressful time.
And so she didn't want to go. But I'm at the conference. And I'm like, you should have come. And she's like, well, C++. What would I do for volunteering? It's like, volunteer.
Volunteering has nothing to do a C++, and it took doing it to realize.
But now, you know, this year is the hospitality suite.
It's like, this is probably the last year.
We will wrap up running it.
We're trying to train some people to help take it over.
But it's some of her best memories.
She had a birthday where, you know, all the staff at CPP con a couple years ago,
we happened to be there on her birthday and they surprised her with cake and everything.
It's like some of her best memories.
And I mean, even like, you know, when we hang out in ACCU and we.
and we've met you and Jen and it's yeah it's just a wonderful thing like all the way
around it now she knows I think it is the main thing to realize is that is that is that people
say oh you go to a conference you go to all of us like I think it's because it is a community
it's not maybe immediately obvious to people especially if you're there for the first time or if
you've never been there yes but it is it is a community as I would say it's a very welcoming one
and and yeah if you start hanging out with people in any of those then you will meet them all the time
in various places or they'll be happy to meet you if you come to their cities,
their meetups or whatnot.
Absolutely.
And so to that part, that's spot on.
And, you know, back to the volunteering part or like when I gave my first lightning talk,
we were joking before.
Yeah, my first CPP con talk, wow, that was a learning experience.
Don't go look it up.
But since then, you know, yeah, I've been fortunate enough.
You know, I've improved.
And I think that's the thing, right?
It's kind of that journey part.
And once you're in the community, then it becomes even.
easier because everyone kind of wants to help out. And that's the part I think that I really loved
about the volunteer coordinating especially is trying to give anyone that wanted that opportunity
to the same thing. So absolutely. I guess before we move on, I'm curious if you ever have a hard
time getting volunteers or does, do you end up filling out your volunteer pool every time?
Generally speaking, we fill it out. I want to say, you know, there was one, I want to say maybe
one time out of 10 that I've had a hard time filling it out. And normally what it comes down to
is we will think we filled it out, but then, you know, things come up and we'll have people drop.
And so there's always opportunity, you know, even when you think it's the last minute,
there's always opportunity because, you know, life happens. And so, but we always need to help, too.
There's a, there is a difference, you know, there's a critical mass of volunteers you want to have.
so we always like to make sure that's there.
Do you find that the location makes it harder or easier to get volunteers?
Because if I understand correctly, you comp the tickets, but not always the lodging of travel.
Yeah, it is.
I mean, so there's, you know, to speak to it directly.
So if we look at ACCU or C++ on C, our policy there is always.
And that is one that I'll still be coordinating for next year.
So if you want to volunteer for ACCU on C, by all means, we'll let.
let you know when we're ready to open volunteers.
But the policy there is you get your ticket and then we do a shared accommodation, right?
So the travel's on you, but otherwise you'll have a shared accommodation with other volunteers and we get your ticket.
And that's how it was for ACCU as well as C++ on C.
And so that's always been policy, Phil, or that, you know, the conferences have ran there.
CPPCon, that one can be a little harder, right?
Because the Gaylord is not inexpensive.
Yeah, and it's not like you can get, because in the past, I assume you could get locals from like Seattle or Bellevue because it's kind of like the tech industry is right next to it, etc, etc.
But the gay laws are kind of in the middle of nowhere unless you may be leaving Denver.
Jason, maybe you can speak to that, is it?
If you're a Denver resident, maybe it's accessible by there.
You can do a commute.
It is, I will, as the local, I will say, when you're coming from out of state, it feels like it's in the middle of nowhere.
It's not really in the middle of nowhere.
It's kind of on the edge of nowhere, I would say.
Not in the middle of nowhere.
And for locals, I would say it's generally
actually quite accessible, except for the problem
that it costs like $20 a day or whatever
to park at the Gaylord.
But yeah, you're absolutely right, but even there,
so this was my thing.
So Aditi and Reka are the two volunteer coordinators
that took over when I, after me.
me. And one of the things I was big on and, you know, they've, they've worked to continue it is,
I mean, the Denver C++ meetup group is just fantastic. Yeah. And so local volunteers have always
been a big thing. And if you're a local volunteer from Denver, we'll comp your, we'll comp your
parking. You know, and especially for like Christy and I, because we run things in the hospitality
suite, there's things that local volunteers give us that we don't get from others because you have a car.
can, you know, make the run to pick up Panera or pick up, you know, whatever food we're doing
for certain things. I mean, don't get me wrong, most stuff runs in the conference, but there's
tasks like that that we end up doing. So local volunteers there are great. I will, just because I
want to mention it too, C++ now is unique in that, you know, if you go to speak at C++ now,
generally speaking, even as a speaker, you pay your own way. Yeah. Now, that's true. Not the ticket,
to be clear. Yeah, not the ticket, but for your travel and hotel. Everything else you pay your own way.
Yeah.
The volunteers were the exception there.
So volunteers, you generally still had to pay for your travel.
We had some help to be able to help and travel on certain occasions, not a lot.
But volunteers at least have their accommodations covered.
Now, the volunteer job, I will say, volunteering at C++ now was different because we actually
prepared food.
So when you went out for a break, the meat and cheese plates and the fruit plates and everything
else, volunteers actually cut that up and put that together. So, you know, the variation of
the duties at different ones were definitely different as well. But yeah, we don't generally have a
problem getting volunteers. We've also always tried to do a good job. At least I have,
oh, you didn't get selected this year. Come apply next year. You just got pushed up higher on the list,
you know. I do try to do that because, you know, if someone, there's only so many spots,
especially for new, because like I said, we always want to keep a balance.
But we do try to keep track of the fact, oh, you didn't get picked.
Let's see if we can't bring you this year.
Yeah.
I mean, as you mentioned, when you got started, right?
It's not just like students or like younger folks who just get into the industry.
We're volunteering.
It's people from like all walks of life and career progression, right?
Yeah.
I was 40.
Well, let's see, that was 18.
So to age myself, we will just definitely say I was, I was on the upper.
curve of the 40s. But I didn't want to ask my company for a ticket. So, you know, it's...
I mean, Lenny is another example of someone who continued to volunteer just because it was
fun for him. Yeah. No other reason. Absolutely. And to that part, it's like, you know, there's
definitely been people, we'll just say there's definitely people that have committed their time that
whenever I get to call them a volunteer so they can show up and I make sure that they are able to
get the access they deserve. Because when you commit to the community, you get the benefit.
if it's on such.
Yeah.
I will, I have my own quick rant to make, and I will say as someone who leads my meet-up,
well, I kind of, I don't, I'm not running my meetup right now, I'm not in Colorado, but anyhow,
we do try really hard to get people to come and volunteer at CBP-Con or to attend or to
speak.
I mention it every single month, I'm constantly talking about it.
I find it infuriating when someone tells me, I cannot get approval from my
company to attend to the conference for free.
What do you mean?
I'm like how is this a thing?
They're told that they have to take vacation days to attend to the conference.
Yep.
And I will just say, I tell people, when they tell me that, I say, it's time for you to look
for a new job.
I, well, I mean, you know me, right?
There is several reasons when me and my previous and private parties, but one of them
was that, yeah, they told me that I had to go on my own vacation for talks that I was
a speaker and I was like everything is paid.
Like the only thing I need is the days off.
And maybe a hotel night if it's not covered for speakers
because sometimes happens.
That's peanuts.
And they're like, yeah, but you know,
we have to rotate the training budget for someone else.
No.
Time for a new job.
Yeah, exactly.
I mean, the message at the end,
they will try to tell you stories.
The message is they don't value you that much.
It is basically, it's a signifier
that they are not very interested in
you or your career at the company.
It is sad, but it is true.
Coming from a U.S. perspective, too, certainly someone who's at the beginning of their career,
you can't assume they've got more than maybe 10 at most 15 vacation days a year in the U.S.,
which is that makes it three times worse than it is from a European perspective, right?
Yeah.
One thing I can tell you, boss, I would just say,
because I want to take the opportunity to quote James McNeillis on this,
because I always love his take on it.
He used to, back in the day,
told us that he used to work for a company
that was like having a hard time convincing their boss
to send people for conferences.
And his boss kept arguing, yeah, what if I send a guy
to a conference and then he leaves?
And the counter was, what if you don't invest day?
That's, yeah, that's fair.
No, I was going to say to the point of company sending people,
So even to that end, like, I'm fortunate.
I get a lot of flexibility where I work.
I like it for that point.
So the time to be able to go to a conference isn't a thing.
But especially after 2019, after COVID, you know, the budget to send people, at least in our experience, just disappeared.
And so, you know, that's also why speaking or, you know, volunteering has become even more of a thing.
Still for me is because it's how I've been able to continue participating in the conferences.
And so for whatever reason you want to come volunteer, if we can help, we'd love to have your help.
That's for sure.
Awesome.
Yeah.
And I want to be clear, too.
Kevin, you're at the extreme end attending like five conferences a year.
I'm talking about companies that won't let their employees speak at one conference year.
Absolutely.
Yes, indeed.
Indeed.
All right.
Do you want to tell us about the kind of work that you do in the few minutes that we've got left here?
Yeah, so, okay, so, you know, my wife laughs and her eyes rolled back into the back of her head.
When I walk up to a terminal to tap my card here in the United States and the receipt comes out or somebody's like, oh, that's so cool.
How does that happen?
That is the worst moment.
That is the 19 seconds of the worst time of my wife's life because I suddenly go, oh, you want to know how this credit card transaction goes through.
Let me tell you all about it.
So first, this cryptography goes this way and this pack, it goes this way, and it comes back this way.
And I'm sitting in this spot and I just take this and I feed it on through and it goes to Visa.
And you know what?
If it doesn't get approved, then I, yeah, I do credit card transactions.
And it's kind of cool.
Like my last job was financial models.
And so that's a different kind of a problem because you're simulating all kinds of interest rates.
But this is, you know, pure for transactions per second.
Now, it's not HFT style.
The joke is Visa standard or the ISO 8553 standard actually gives us like 20.
20 seconds to process transaction because some places still have dial-up modems.
Of course, nobody's waiting that long.
So, you know, one second, two max.
And so, yeah, there's a good chance you're in the United States,
Central South America, Canada.
I've processed your credit card at some point in time.
So when you tap to a terminal, it hits me.
I do the rest of it, get the money from the bank,
and give the approval, denial, or et cetera back.
I'm just imagining you physically sitting there, click, click.
Yes.
The next time you can't get decline, it's because Kevin doesn't like you personally and said,
no, not this guy, not today.
No.
Kevin took a bathroom day break.
Nope.
Oh, sorry, I didn't go through.
I needed to refill my coffee.
Sorry.
So each individual transaction is at most 20 seconds, but you're dealing with a huge volume of transaction.
We process $120 billion a year annually.
So, you know, there's times where, like, I was just working on we have one service that takes transactions in.
It's a bit of an older service.
But, you know, the thing with credit cards is they've been around for so long, just to be clear, right?
So you have this problem where, like, I have newer services that I've written that are restful interfaces, JSON just like Stripe.
But then I also have services that take transactions in as XML.
And it was interesting because I did a, yeah, and so I did a revamp.
Ancient technology.
I know, right?
I did a revamp of the service and we got it up to doing, you know, 400 transactions per second,
which isn't anything, you know, amazing, but it's not like it's getting a lot of use.
But in the process of doing it, it was just kind of interesting because I increased latency
on each transaction by about 20 milliseconds because I added a security, you know, basically an IP block check.
trying to watch for bad transactions.
And if you get it, then I'm going to block your IP for a while and things like that.
And it's kind of interesting because when I was looking through our questions,
you know, one of the things was like security.
It's interesting because in the inside of where I work, like once I'm inside the network,
I don't have to worry about SSL encryption and stuff that much.
You know, we handle that on front end load balancers and things.
Of course, there's other kinds of encryption involved with like encrypting cards at rest,
encrypting the card transaction data.
We use hardware security modules and such.
But the bigger point I was getting at it, it was just interesting.
As I redid this, I was really focused on getting the TPS up on this one particular service.
And inadvertently, you know, we put it into production and they're like, hey, you know that card transactions are taking on average 20 milliseconds longer.
And it's like, oh, okay, well, you know.
And of course, we understood why.
And it was an acceptable amount for what we added.
but the thing that I think is cool about the transaction space is you have concurrency issues versus, you know,
parallel issues too, you know, because at the end of the night, if you think of a bar or a restaurant, you know,
they're going through their day.
They're doing these authorizations.
So you have transactions coming in one z, twosy.
And at times, you know, thousands of transactions per second are coming through to us.
Well, at the end of the night, you know, after you've put your tip on, at least here in the States, Matthew,
because we don't bring the, when you put your tip on, then they turn around and they do the settlement thing.
And so at the end of the night, suddenly I have to settle or close out, you know, 1.5 million transactions within 10 minutes.
And so now I've got this massive parallel problem because if I don't do it within this amount of time, my bank transfers don't happen.
Merchants don't get paid.
It's this whole different complexity versus handling the concurrency of transactions coming in under load.
So it is kind of a fun space, which is why, you know, at this point, my wife is finally coming back up for air saying, okay, you're done.
I can imagine.
So, I mean, like, I'm just imagining like a giant sporting event or something.
World Cup just happened.
Yeah.
And there were several U.S. venues.
You probably, like, literally, like, feel that on your servers when everyone's tapping, like, buying beers at 10 seconds or whatever.
Yeah.
No, and we see it.
It's like there's an interesting thing, and I talk about this sometime I talk.
We have what they call freeze that happens in this particular industry.
So, you know, our industry is regulated by Visa MasterCard, American Express, the big card brands, PCI, you know, payment card industry compliance and stuff for security.
But one of the things that happens is starting about November, the second week in November until the second week in January, we have what they call the freeze.
And this is across the industry where we can't push things to production except for an emergency.
because nobody wants their credit card to not go through during the busiest shopping.
Yeah, for holiday shopping.
No one wants to go to buy that diamond ring and have it fail because someone decided to,
oh, let's add this new feature and see what happens.
So it's a very, yeah, regulated thing.
And there's some interesting stories of times that we've, you know,
there was only one time I can think of in the last 10 years that I've worked there,
that our systems came to a real crawl.
And it was over a New Year's Eve.
And it was literally processing, I want to say, you know, millions of dollars in transactions
per minute.
It was the biggest load we'd received.
And it was somewhere around the pandemic time.
And, you know, we were able to load balance out and kept everything going.
But it is interesting, especially for our particular merchants to be able to be like,
oh, they're having a busy time.
And suddenly you start seeing, you know, just the transactions, just scrolling.
So you raised a question for me.
I know that Visa and MasterCard do their own fraud detection.
And I also know that the very large banks like Capital One does its own fraud detection.
And it sounds like you're doing at least some high level kind of fraud detection, like too many things coming from one IP address or something.
How in the world does all that happen in like 20 milliseconds or whatever?
So that's...
Or not milliseconds, but whatever.
Yeah.
No, actually, you know, it's...
it's interesting because, yes, so we are what they call an acquirer.
And the meaning of that is like, you know, somebody goes out and sells the merchant terminal to,
I'll use a, you know, for example, tire place in the United States good year.
So we install into all the good year, you know, for processing.
And so it's important for us as the acquirer, even though Visa and all of them do their own fraud protections,
we actually have to do that ourselves.
And so, you know, you build out different services so that when a transaction comes in and we're in the midst of processing that, it gets scored.
You know, do we think this is fraudulent?
And there's various ways that are scored based upon the type of data where it's coming from.
Does it match certain characteristics?
And of course, I'm being vague for reasons.
You can't tell us for obvious reasons.
But and it goes to, you know, looking at patterns of previous transactions.
It goes to, you know, just like we all have credit reports.
it goes to credit risk of the particular merchant than sending stuff in.
You know, you have different types of merchants where the risk is higher versus not.
For example, you take some large grocery store chain, you know, they have a different risk
versus, you know, someone that just opened up a new nail salon or some new restaurant that's
never been around, you know, and I'm doing that not to single out any particular thing.
It's more the idea of you have some new merchant that just came on versus
even like I said, if you take some big company like Goodyear or discount or, you know.
And so the risk profile as it is falls between this range of things,
including who the card, you know, the card being submitted, the merchant submitting the transaction,
where it came from, you know, whether it was online, was the card present or not present?
Did they use a pin? Did they not use a pin? Are we using a chip? Are we not using a chip?
And so that's one of those things that you end up looking at and scoring, you know,
before the transaction ever goes through.
Wow.
And it does happen.
Yeah, that whole one to two seconds.
I mean, in average, you know, when you tap, that's about what we take.
Yeah.
Yeah, I was going to say like, because obviously, I'm assuming you do that in C++,
like when you say like we have this window of time and we have to process it, like,
are we talking like, are you, because I would be surprised if you're bound by CPU.
I'm assuming it might just be more like calling over services or like,
network or do you actually have like a huge cache where you try to look up data to avoid doing
network ground trips or i don't know how much you can talk obviously i no i think it's all of that i mean
really it's all of that so it's interesting too when i think of our competitors in the marketplace
i don't you know i can't speak for big places like chase and stuff but i knew you know some of the
larger competitors they use a lot of python on the back end and i've heard that that's been
actually kind of a blocker as they've scaled out so
So for us, C++-wise, it's not CPU bound.
You know, I think if anything, we start getting more into the latency of the services.
And there's interesting parts like, you know, the talk that I'm doing about unordered map at CPPCon.
It was interesting.
We had a service where we were using StoodMap a lot.
And, you know, with Unordered Map, you can get O of 1 on average, you know, if you're watching your hashing and things like that, right.
And so we had this particular service that was all running stood map and it was like, oh, well, what happens if we actually set this unordered map?
And we end up getting speed up, you know, in various areas.
What was interesting about it, though, too, is that as much as we were able to get speed up from the container, I talked about at ACCU, we actually had some different performance characteristics that had nothing to do with unordered map.
I had a for loop that was in the wrong spot.
We'll just leave that there.
But you end up as you add these services, that ends up where you have to control your latency
and then you're trying to do different kinds of caching and stuff. So for example, a transaction
comes in, you got to make sure that it's from a merchant you allow. So if you have 1.5 million merchants
then suddenly, and that's not our exact number, but it's like you have a lookup table. Well,
merchants get added and removed every day. So how do you cash that?
table? What structure do you use to keep that in memory? How do you make it quick? How do you make it
responsive when someone new gets added? Yeah. So it's it's kind of all of those things, Matthew,
that you're talking about that we have to think about. Yeah, I mean, I used to run, I worked for like
a middle slash front and for a bank like in another lifetime. So I was, I was wondering if there
was like a similar. Yeah, I used a bank, I made a bank website in C and we were just doing
printf HTML. This is an entire different topic that I will not get into. That's all.
school. Yes, yes, but they tried to replace it with Java several times, and every time they looked
at the server costs to compare the number of instances, they needed to do the same thing.
They're like, you know what, we can continue with all like five servers in C rather than have like
an entire building of Java blades.
Sorry, go ahead.
No, I was just going to say, I agree with you, the C++ part, it's funny, like CPU bound is
not the thing that we find being the issue. That's where I'm like, my 20 milliseconds that I added
in that particular app that we revamped,
it was because I added it for security items, you know?
And, okay, that was a trade-off cost
because I cut back false positive transactions
coming in by 90%, you know?
Yeah, and I guess in that case,
20 milliseconds is hard to measure
when you're a terminal blipping your call, right?
Yeah.
Yeah, exactly.
I mean, as someone tapping to pay,
if it takes five seconds,
I'm going to hardly notice,
Right? And sometimes it does.
Sometimes the person there will be like, I'm sorry, the system's just slow today, you know?
Yeah.
And it's, it is interesting.
So this summer I got to implement Apple Tap to pay on the back end side, which, you know, like I was saying, we use hardware security modules.
And that's a way of encrypting and decrypting data at rest and in transit, right?
And it's also the way that it does it, these modules are synced up.
And what's interesting is a lot of these things.
things when you're doing the testing forum, they have a time to live that is so short.
Like, you know, I was saying you have 20 seconds for a credit card transaction to get through.
And so if you can imagine trying to debug something and you have to implement basically a live
transaction and you literally get that much time, 20 seconds to debug whatever's going wrong
because, you know, the card just fails.
And now you've got to send it again.
Because you can't pause it that long.
Yeah.
Yeah.
I don't know if you can do replays because obviously that's safety issues.
whatnot. Well, yeah, because the timing goes out of whack. And now, when I said the timing goes out of whack,
your timing's out of sync. The cryptography between the two devices is expired. So now the keys
they're, they're ephemeral. They die. Yeah, it's fun stuff. That makes me bounce maybe for like
going to all the closing thing because I know Jason is, is very aware of timing. And I should be too.
We talk a lot about safety lately in C++. That seems to be the new buzzword. Again, I'm in games. So I just
only watch it from a side.
But I would think that credit card sounds like a thing that would care about safety
or either not crash and or don't get exploited because there's a lot of actual money
and like the whole economy running being involved in it.
So I'm kind of curious like are very fine with C++.
Did you get any of the pushback that happened in the, I think it happened a lot in the US
but it's in a few of our industry about like, oh, it's not memory safe.
should like be writing in Rust or implement something from profiles and whatnot that hopefully
will make regulators happy.
This is where Kevin announces that he's going to be speaking at RustConf next year.
Yeah, absolutely not.
So we did.
We really experienced that.
That came down.
You know, when the White House had made that announcement years ago, we did feel the pressure
of that.
The question came up deeply.
But at that point in time, when I started the company, we were on C++11.
By that point in time, we were on 17.
moving towards 20. And, you know, now we're on 20 moving towards 26. You know, when I say that,
we will spend some time at 23. By the time 29 comes out, we'll probably be looking more at 26.
Okay. Yeah. The thing that, yeah, and a lot of our code basis, things came around. We just
modern C++ for the win. I think that's, you know, really been. And that's the part two, I think I alluded
to my back to basics, almost always vector talk was that for a reason,
unordered map talk same thing you know we use a lot of standard containers we use a lot of modern
c++ plus we get a lot of performance gains and i'm sure that we could push for more but we work
it stays up you know that's the part where i'm like even at our worst we were still up in processing
you know even at the highest loads that we get that's exactly the point you know the 99.999
9% uptime kind of thing is no joke that it has to stay.
But modern C++ for the win.
There's a series of talks that you need to give, Kevin, about how you actually test and
debug and maintain this kind of system.
Because, I mean, it's a classic kind of problem of how in the world do I set up a test
environment where there's, you know, five moving parts that I don't have control of three of them,
basically.
And there's a series of talks that you need to be working on and you're going to present them
around the world next year and I will attend to them.
Welcome to CPCAST.
The cast, the thing where if you're a guest, you get homework at the end.
Hey, homework from either of you, I greatly appreciate because all that means is more growth
for me. That's absolutely true.
That is, that is, that is, that is absolutely a talk. I've, I've only ever seen one talk that
attempted to approach those topics and that was at.
Yeah, it is true. It is true that conferences tend to focus more on like,
here is the latest feature or here is, and we don't talk as much about CIA or testing or,
I remember someone made, they made a comment about, I made a talk about how to not be like
a terrible person when you comment people, when you comment on merge requests. And he got a full room,
because yeah, it is.
Yeah, I could see that.
Absolutely.
And you're going to have 15 people come up after your talk
to all share their own personal war stories
about trying to maintain systems like us and test them.
Guarantee it.
And on that note, we'll be wrapping up the episode
now that Kevin has his homework.
And we are adding to that.
Any final thoughts from anyone?
No, I was just going to ask quickly
if there is anything from the more safety
oriented a C++ feature upcoming
that you think are going to be interesting for your
job like contracts or
profiles, any of
those things? No, because
I mean, to that part, we're not doing
a lot with contracts for ourselves yet.
You say profile and my mind just
goes to profiling because, you know,
my last name's Carpenter, measure twice
cut once, actually works inside code
as well. And, you know,
it's kind of interesting. All the
sanitizers all the time.
I think I got that as a misquote from Jason
at some point.
Just don't deploy with sanitizers enabled.
Yeah.
Yes, and that goes back to the build process for releases, right?
Yeah.
Cool.
I appreciate being invited, gentlemen.
Thank you so much.
Well, absolutely.
Thank you for coming on.
Yeah.
Yeah, I was going to say, before I did a final,
do you have anyone?
Because we have one of those things that you're allowed to name another person.
on air or afterwards, if you don't want to put them on the spot,
where they learned that they're going to be contacted to be the next potential guest,
if you think like someone interesting that we should definitely have on.
You can say that afterwards.
You can put them on the spot and look at the camera right now and say,
I don't know, Robert, you're coming next.
And then your co-workers are going to be, what?
Well, no, I mean, to that end, I think I have to say, yeah, Tim, we were talking about Tim.
Tim, you're on.
Tim.
You have been nominated, Tim.
And just to say, you know, so here's the thing, Tim still does a bunch of C++.
He's been in the go world a little bit, but he is giving his first talk at CPPCon this year too.
Okay.
Yeah.
Well, then maybe we'll get him on this.
I will see him in a couple weeks anyhow.
Yes, that's your opportunity of grabbing him.
We have a backlog, but as I try to say, we have a small backlog, and it's always nice to have a medium-sized backlog.
My favorite type of backlog is like enough that I can remember them.
So like two or three.
If it gets more than that, then I will forget who you are.
And if it's less than that, then we start panicking that we have nothing to talk about the next episode.
So it's that sweet spot.
So as usual, dear listeners, if you're interesting to come on, you have our socials.
We have many of them.
I read all of them when people tag me.
So feel free to ping us or DM us if you want.
and come over.
You will get some homework, potentially, from Jason if you come on.
But, you know, that's just the price to pay.
Yeah, over than that, well, that was CPPCast.
Thank you all for listening.
And we will see you next month.
See next month.
