CppCast - Running Conferences and Processing Credit Cards with Kevin Carpenter

Episode Date: September 7, 2026

Mathieu 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)
Starting point is 00:00:00 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,
Starting point is 00:00:34 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,
Starting point is 00:00:57 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
Starting point is 00:01:44 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
Starting point is 00:02:32 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.
Starting point is 00:03:19 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.
Starting point is 00:03:38 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.
Starting point is 00:04:12 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
Starting point is 00:04:42 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
Starting point is 00:05:03 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.
Starting point is 00:05:34 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.
Starting point is 00:06:19 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.
Starting point is 00:06:53 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.
Starting point is 00:07:23 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
Starting point is 00:07:53 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
Starting point is 00:08:15 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.
Starting point is 00:08:39 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.
Starting point is 00:09:10 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.
Starting point is 00:09:51 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.
Starting point is 00:10:14 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,
Starting point is 00:10:50 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.
Starting point is 00:11:44 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.
Starting point is 00:12:25 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.
Starting point is 00:13:19 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
Starting point is 00:13:57 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.
Starting point is 00:14:17 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?
Starting point is 00:14:51 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.
Starting point is 00:15:29 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?
Starting point is 00:15:52 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.
Starting point is 00:16:09 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,
Starting point is 00:16:47 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
Starting point is 00:17:30 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.
Starting point is 00:17:58 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.
Starting point is 00:18:31 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.
Starting point is 00:18:54 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?
Starting point is 00:19:20 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.
Starting point is 00:19:40 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,
Starting point is 00:20:10 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.
Starting point is 00:20:44 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.
Starting point is 00:21:11 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
Starting point is 00:21:49 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,
Starting point is 00:22:25 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.
Starting point is 00:23:05 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?
Starting point is 00:23:29 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
Starting point is 00:23:59 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
Starting point is 00:24:56 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.
Starting point is 00:25:28 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
Starting point is 00:25:46 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.
Starting point is 00:26:23 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
Starting point is 00:26:47 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.
Starting point is 00:27:15 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.
Starting point is 00:27:51 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
Starting point is 00:28:33 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.
Starting point is 00:29:14 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
Starting point is 00:29:50 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
Starting point is 00:30:37 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
Starting point is 00:31:30 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
Starting point is 00:32:11 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.
Starting point is 00:32:34 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.
Starting point is 00:33:04 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.
Starting point is 00:33:26 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.
Starting point is 00:33:51 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.
Starting point is 00:34:09 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.
Starting point is 00:34:23 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.
Starting point is 00:34:48 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.
Starting point is 00:35:30 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,
Starting point is 00:35:59 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
Starting point is 00:36:33 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.
Starting point is 00:36:58 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
Starting point is 00:37:20 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.
Starting point is 00:38:08 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.
Starting point is 00:38:38 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.
Starting point is 00:39:15 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.
Starting point is 00:39:44 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.
Starting point is 00:40:06 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
Starting point is 00:40:49 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.
Starting point is 00:41:23 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,
Starting point is 00:42:03 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?
Starting point is 00:42:25 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
Starting point is 00:42:54 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.
Starting point is 00:43:23 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
Starting point is 00:43:49 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.
Starting point is 00:44:10 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.
Starting point is 00:44:24 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?
Starting point is 00:44:54 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.
Starting point is 00:45:12 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.
Starting point is 00:45:38 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.
Starting point is 00:46:07 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?
Starting point is 00:46:28 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.
Starting point is 00:47:02 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.
Starting point is 00:47:27 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,
Starting point is 00:47:53 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.
Starting point is 00:48:12 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?
Starting point is 00:48:41 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
Starting point is 00:49:15 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.
Starting point is 00:49:44 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.
Starting point is 00:50:15 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,
Starting point is 00:50:45 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.
Starting point is 00:51:30 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.
Starting point is 00:51:51 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.
Starting point is 00:52:32 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.
Starting point is 00:53:01 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.
Starting point is 00:53:34 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.
Starting point is 00:53:57 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.
Starting point is 00:54:31 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.
Starting point is 00:55:08 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.
Starting point is 00:55:43 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.
Starting point is 00:56:07 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.
Starting point is 00:56:44 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.
Starting point is 00:57:29 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
Starting point is 00:58:08 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
Starting point is 00:58:46 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
Starting point is 00:59:14 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,
Starting point is 00:59:31 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.
Starting point is 01:00:01 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.
Starting point is 01:00:29 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
Starting point is 01:01:03 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
Starting point is 01:01:39 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.
Starting point is 01:01:55 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,
Starting point is 01:02:32 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.
Starting point is 01:03:17 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
Starting point is 01:03:53 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.
Starting point is 01:04:25 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.
Starting point is 01:04:41 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
Starting point is 01:05:00 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,
Starting point is 01:05:17 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.
Starting point is 01:05:36 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?
Starting point is 01:05:48 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?
Starting point is 01:06:12 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.
Starting point is 01:06:33 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.
Starting point is 01:07:01 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.
Starting point is 01:07:26 Yeah, over than that, well, that was CPPCast. Thank you all for listening. And we will see you next month. See next month.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.