Two's Complement - Conference Talks: Some Assembly Required

Episode Date: October 12, 2025

Matt returns from CppCon with a cold, three talks, and a keynote title Reddit hates. Ben immediately declares Reddit dumb. The hosts discuss C++ reflection, the unforgivable renaming of the Sears Towe...r, and why conference attendees should stand like Pac-Man.

Transcript
Discussion (0)
Starting point is 00:00:00 I'm Matt Godbolt. And I'm Ben Radie. And this is To's Compliment, a programming podcast. Hey, Ben. How are you doing? I'm all right. Yeah. Someone tweeted me the other day or whatever.
Starting point is 00:00:27 Social media interacted with me the other day and said, Man, we listen to the podcast and we want to know, how are you? And it took me a long time to realize what they meant. And now, having just said this to you, so I'd like, for the record, I'm doing great. Thank you very much. All right. You never asked me. I don't care.
Starting point is 00:00:47 That's not why I come to this podcast. Excuse me. Oh, gosh. Well, I say I'm doing fine. But obviously. Yeah. And then you're dying. So you're lying to our audience right now.
Starting point is 00:00:58 You're saying like, I'm fine. but really you're dead i've got a bit of a cold going on here as as we were discussing in the pre-chat i i've been through the spending a week at a conference with 700 other people and worrying about talks and going through the emotional roller coaster presenting them and then the recovery where you go and relax at the very end i had the last talk right so i had to worry about it the whole way through And then I relaxed, got on a plane, came home to my family, and promptly came down with a cold. So, you know, that's just how it is, right? Yeah.
Starting point is 00:01:36 But it was a great time. I recommend it. Go to conferences, people. It's fun. It's fun to meet people and see them like as in the flesh, as other beings. Unlike this. Three dimensions or perhaps four dimensions, depending on how many dimensions you want to measure. That's true.
Starting point is 00:01:52 I guess it took long enough. We can measure the fourth dimension in that. What was the fourth dimension of your talk? The fourth dimension. Whoa. How long was it? Oh, well, I had a few. I kept saying yes to people, which...
Starting point is 00:02:07 See, this is the problem, Ben. As you know, I have had a lot of extra time on my hands, as I haven't had anything to distract me during the day, which means that the back of my mind, I think there's no excuse not to say yes to everything that anyone brings up. Yeah. But there is a reason to say no occasionally, as I've now discovered. because otherwise you burn yourself out. But never met, Leverless, I had a great time.
Starting point is 00:02:31 I had three talks and I was on two panels. So pretty much, and then they wanted me to appear on a third panel. And I was like, no, that would mean literally every day of this five-day conference, I'm doing at least one thing.
Starting point is 00:02:44 And I just want to have one day where I haven't got anything to worry about primarily and selfishly. So the night before that, I can go to the bar and have a couple of drinks without worrying about being hung over the next day, which I did do.
Starting point is 00:02:57 which was fun. And I met up with a colleague of ours in said bar and had a great catch-up and chat. But that's not what this is about. This was, yeah, it was, it was a, it was a group conference. And yeah, we're doing a podcast, I realize. I remember now because we're just chatting now. Like you and me would be chatting. This is every podcast.
Starting point is 00:03:16 I know, I know. But I just, I was just going to launch into giving you a whole spiel about what it was all about. Well, I mean, that's as good of a podcast topic. as any. You want to give a little recap of the talks, maybe for folks who haven't seen them yet, you can convince them to go. Well, that's a good question. Well, first of all, I have just fiddled with these audio settings because I'm noticing
Starting point is 00:03:40 my levels are really low here. So apologies to editor Matt. That's just the cold. That could be. I mean, I look very small on here, but this is a new computer. I switched to my desktop computer, and of course, every setting is different. Anyway, yeah, the talk, well, I did three. one of it was a repeat of one I've already done before
Starting point is 00:03:59 although I took the time to bring it up to date with all of the latest bits and pieces and it was open content so they have these sort of open content slots where essentially if there's a space and you pitch a talk and no one else pictures a talk you can just talk about whatever you like
Starting point is 00:04:14 it doesn't have to fit in with the call they don't record it they just sort of give you a room and say have fun and they put it on the schedule so I did my JavaScript talk about emulating the BBC micro, you know, my favorite. The bebe? Bebe, absolutely. And I brought that sort of up to date, slightly with all the things I've done subsequently
Starting point is 00:04:35 and more importantly, I went back over the slides and like revamp them a little bit. Although I'd forgotten that this is one of my oldest presentations. I first presented it like eight years ago or a version of it. And my ideas about colour palettes have changed considerably as I've aged. and so it was all done retro style so it's all black with like white computer fonts and it's just you can't read it on a projector it's not visible and the last time i had presented it was actually on one of those big LCD screens and it was okay on that but on a sort of rear projector or front projector the contrast is just too dire right
Starting point is 00:05:15 there's just very stark white on a black background that it's just too too small so that's always something to bear in mind as a presenter is like can it be read by the people in the room but that went great that was fun it was easy i'd done it before and then i did a second one on compiler explorer and the features that you probably don't know about it which was was fun for me because i got to actually play around with my own website and kind of go oh gosh yeah we've got all these feet oh my god i forgot we could do that and half these things are things i don't really know that well because i just merged them in and then go that sounds great whatever but I haven't had a need to use the site all that much myself recently.
Starting point is 00:05:55 Obviously, the sort of irony of Compiler Explorer is, if I don't have a day job, I have all the time to work on it, but I don't have a need to use it. So I don't really dog food it, right? Right. Wow. Yeah. That is a dilemma. It is. It is.
Starting point is 00:06:13 Hello. Can I speak to Emma, please? No, she's dead. Whoa. Dilemma. Oh, die, oh, it's dial. I see, I'm dial, Emma. Oh, dial Emma.
Starting point is 00:06:25 Yes. That's a much better time. That's none of them are good. Like, we're really, this is not. But anyway, I got to spend an hour sort of just going through the UI and whatever. And people say, oh, can I see your slides? We're sorry we couldn't make it. I'm like, there were three slides and they were basically prompts for me to then spend 15 minutes like poking around on the website and doing live demos, which is always a bit nerve-wracking.
Starting point is 00:06:50 Yeah, right. Especially when the conference Wi-Fi is a little flaky because there's 800 humans packed into a small area all trying to, like, feed off the same infrastructure. Yeah, yeah. So it went okay. It reminded me, though, how massive Compiler Explorer has become and how lazy I have been. So, for example, one of the configuration for the front end is like a JSON document that says, you know, here's a list of all the compilers. here's for all the compilers, here's all the libraries that will work on those. There's a sort of combinatorial thing going in and there, and it's just one JSON document
Starting point is 00:07:28 that is about, you know, 80 meg now compressed, which is a problem, right, when you're on cramped Wi-Fi. And so we've got some, like, ideas to, you know, either just in time, load that, because, you know, if you don't need to know every library for every compiler, it's only when you select the compiler in the drop-down, do you need to grab that? But obviously, that makes it a lot more complicated in the frame. Anyway, that came to bite me because I'm certainly going, and the page should have loaded by now and knowing full well what's happening behind the scenes.
Starting point is 00:07:57 It's the 56K modem. The screeching is gradually bringing down this giant document. But anyway, it was fun to present. It worked out pretty well. I had some panels on AI. That was an interesting one, actually. Oh, yeah. What were the panels?
Starting point is 00:08:13 So the flavor of the conference, obviously, it's a CPL. Sorry, this was CPP. Did I even say that? I don't even know that I did. I don't know if you did. No. Well, we're saying it now. It is CPP.
Starting point is 00:08:22 It was CPPCon. It was in Aurora, Colorado. And yeah, although the theme was not AI, there were a lot of AI talks, as there have been at other conferences. And I'd been asked to participate in a couple of panels discussing the use of AI. One, in terms of just general, how do we use, effectively use AI for C++? And another one online, how might we use AI-assisted debugging, which was more of a discussion with a vendor that had like a plug-in for their debugger. They undo who have like this reverse time-traveling debugger, which essentially sort of emulates
Starting point is 00:09:05 the CPU in some clever way. That's not really what it does. It's a big disservice to what they're trying to do. But like it lets you sort of backward step. And so what you can do is you can kind of crash your program and then, the AI, can you like GDP and reverse back and look through the trace of instructions and try and work out where it went wrong? And that's kind of a cool technology. Anyway, so those panels were about. And most of the pre-planning, I'll be honest with you, was how do we appropriately discuss
Starting point is 00:09:35 AI in a sort of inclusive way that means that folks who might not like the idea of AI can contribute? Yeah. Yeah. It was important. But nobody ventured a non that's not strictly true but everyone was either neutral or positive towards the idea there were a few people to ask questions that were clearly like I'm not sure about this and that's fine obviously
Starting point is 00:09:59 but yeah I was I was most people where they were interested in how we might use it well because it's here anyway it's kind of the vibe that I got although again there's a selection bias that people who turn up to a panel on this type of thing
Starting point is 00:10:14 a probably pro although I would have thought if you didn't like it and you wanted to publicly point out some flaws, you might also turn up to such a thing. So, yeah. I mean... Yeah. It was... It's hard to have that kind of discussion, though. It's sort of like
Starting point is 00:10:30 here's a thing that people might hate. Why don't you, you know, come to the two minutes hate and, you know, vent about Big Brother. Yeah. As good as I'm going to make that pun. Or reference. It's not really a pun. But, like, I could see a world in which anyone who would have, like, thoughtful,
Starting point is 00:10:51 constructive things to say might almost be like, do I really want to go do this right now? Do I really want to get in an argument with a room full of people who almost certainly 90% of them are going to disagree with me? I don't know that I want to do that. That's fair. Right? That's fair. But, you know, we thought about it and we planned for it so that we were able to hopefully
Starting point is 00:11:14 give folks a place to say that to Penneth and then talk about it, but it didn't happen. And generally speaking, most of the conversations I had with people were how to use it rather than should we use it, which was an interesting thing. I wasn't expecting it. And then latterly, I had the last talk on, and I was very pleased with myself, although Reddit didn't like my title when eventually he was posted. So, so most of the, These videos aren't out yet except for the keynotes. So the keynotes got published like pretty much as they as they finished. So that one is up.
Starting point is 00:11:53 My last one is up. And yeah, the biggest thread on the Reddit post where somebody had posted it, I didn't even know it was up. You know, I only discovered it because someone added me on the Reddit thread. I'm like, oh, oh, I see. Oh, gosh. And they were essentially saying that the name was stupid because it didn't tell you what the talk was. And I'm like, I don't write the talk name for the user.
Starting point is 00:12:14 YouTube video. I write it for the people who are at the conference. The people at the conference to find a point in have to come to my talk because it's a keynote. The title almost doesn't matter. Yeah. It's like you're going to be stuck in a room with me. Yeah. I've got 90 minutes to talk to you and you can't do much about it other than a walk out, which I'm glad to say most people did not walk out on my talk. Some people left and I like to think it's because they had planes to catch, but I could be wrong. You know, not everyone's going to agree with everything I say and I tried not to... I doubt that they walk...
Starting point is 00:12:46 I doubt that there was any huff involved in their walking out. I hope not. I like to think not as well. But the controversial name was C++, some assembly required. Oh, that's a good name. See, I thought so. I was so pleased with my look at stuff. I read it is dumb.
Starting point is 00:13:03 That's a great name. Some assembly required. No, Reddit is on point. To be fair to the people on Reddit, the comment was it doesn't tell me what the talk is. And I'm like... Sure, but it's an. objectively awesome name. Well, I mean, what do you want?
Starting point is 00:13:16 You're very kind to me, and we think very similarly, so I have to take that with a picture saw, although I am thankful you said that. But no, Reddit is correct, but that's the point of it. It was like, my idea is, and it was accused of being clickbaiting in that, but it's like, it's not clickbait because I didn't even think about it going on YouTube. Anyway, but yeah, the idea was, and, you know, folks can go find it on the interwebs now, on the YouTube's, it is me 100% thinking, well, everyone's going to come to talk anyway, so no one's going to read the abstract, which was
Starting point is 00:13:48 correct. Nobody read the abstract. And of course, if there's Godbot up on stage talking about assembly, it means one thing, right? And some assembly required, we're going to stand up there. He's going to preach to us about how everyone should learn assembly. And I do. And I spend 25 minutes with a little bit of back history as to why I think is, why an assembly is important to me, including some very dodgy photographs of me as a kid and some other very self-deprecating pictures, which you just kind of have to see. And I eventually show, I talk about assembly
Starting point is 00:14:23 and all of its forms, I actually show a new featuring compiler explorer that I add in and I live deployed on stage, although, yeah, I know, that's confidence in my deployability there. I've learned that from a friend of mine. And then I kind of go to the next slide. I'm like, well, this is awkward. We seem to have finished a little bit early, and I've got like 45 minutes of time left.
Starting point is 00:14:46 And then I go back to the definition of assembly, which I show earlier and just show that there's loads of definitions, assembly, one of which is assembly language, and we talk about assembly language. And then I basically go through the other five definitions of assembly and show how they are also incredibly relevant to C++. So there is the assembly of, you know, like a group of a sort of regulatory body is an assembly. So, for example, like in Britain, there's the Welsh assembly. There is like various assemblies around the whatever. And obviously that means, you know, the C++ committee that defines the language. So we talk about how that fits in, how it's structured, how it fits. We talk about assembly, meaning the process of putting things together or an assembly, which is, you know,
Starting point is 00:15:31 like a set of parts that have been put together. So there's all these different aspects of it. And all of which are really relevant to see people. So let me explore and just basically do a big community hug of like, this is great. We've got a load of cool bits and pieces going on in our language. And then at the end, a call to action to say, hey, let's, let's keep this up. You know, you're sat there in the audience.
Starting point is 00:15:51 You're sat there on YouTube. You can join in, you know, go to a local meetup. You know, because also an assembly is like a congregation of people in one place for a purpose. And I'm like, point at the audience. It's like, you're here, right? This is, we are in an assembly right now. Right. So anyway, that's what I thought it was cool.
Starting point is 00:16:06 I thought it was a good double meaning and it was 100% for the people in the room. And then hopefully people looking at the YouTube video afterwards will enjoy. But that was not the intention as such. You know, obviously, you hope people don't like it. I think, I mean, that sounds like awesome talk. One forgets how much work it is, right? it's so tiring and I'm so glad I didn't have a real job while preparing for it I mean especially these I mean I don't when was the last time if you don't mind me asking you have you I know
Starting point is 00:16:41 you have given presentations you've given them at work and all that kind of stuff but they're much more informal when we give them at work yeah so the trap that I had kind of fallen into I have to say is that you know when I was consulting like part of your job is giving talks I suppose you're kind of always presenting in a right like you're always on show and you have tons of opportunity to practice right um where like you know like pretty much the go-to and i mean this is like circa 2008 so i'm sure things are completely different now but um the go-to tactic um for most of the you know sort of like business development and salespeople that i worked with was um you know stealing an idea from Jerry Weinberg and be like, give your best ideas away for free. That's how you get a job
Starting point is 00:17:30 as a consultant. You have some company that you're working with that has some problem. Go tell them how to fix their problem for free over lunch. Just do that. And they will inevitably hire you because they're like, that sounds great. We don't actually know how to do that. So, you know, you have lots of opportunities to present on various ideas. And then you can do these at conferences. You can do them as sort of like some of these sort of like what are essentially sales pitches. And you just get good at it. Because as you know, like a lot of a talk is just giving it over and over again and refining the material. It's a little bit like stand up comedy. Right. Like you just got to like, you know, genuinely do it and refine it. Right. It's yeah. Yeah. Yes, exactly. 100%. Yeah. So I've fallen
Starting point is 00:18:21 out of that a little bit. And as you know, I've been trying, I had tried to kind of do some of these things at the various companies that we worked at in some ways because I had a lot of good material. In some ways because I wanted to keep the skill up. But I will say that in the last, you know, 15 years since I'd been consulting, that has atrophied a little bit. Right. And I don't really, and you know, COVID didn't help either. And so I don't, I don't know. I like, I feel like I probably have some sort of talks in reserve in the bank, essentially, that I could go out and give in a public forum. But I don't really have a good sense of like what the best forums would be, right?
Starting point is 00:19:11 Like local conference, national conference, which ones? I spoke, again, years and years and years ago at a conference called No Fluff Just Stuff. I don't know that one. Yeah, I remember that pretty fondly. There were some, the organizers of that conference really great, a lot of great speakers there. You know, I spoke at like the Agile conferences back when Agile was not a stupid idea. Wow, that's a sentence. I mean, you know, you can just go back in our podcast history and get all my opinions on that.
Starting point is 00:19:42 Fair. Go ask James Grenning, one of the signatories of the Agile manifesto, what he thinks of it. And podcast guest as well. Yeah, that's right. Just go listen to that episode. And that will tell you everything you need to know. But, you know, it's like there are some of those conferences that I went to and liked. But it's like I don't feel like I have a good sense right now of like for this talk,
Starting point is 00:20:07 which I could probably just give it the drop of a hat right now, right? Like just fire up the slides and talk for 60 minutes and it would be great. Where is the audience for this talk? What conference should I go to to give it? I don't really have a good sense for that. Right. Right. That's interesting because actually somebody did make the suggestion.
Starting point is 00:20:25 Hey, have you ever considered doing like a live recording of Two's compliment? Maybe you could come to CPBCon next year and do one there. I'm like, well, this isn't a C++ podcast. It never has been. And it's not the kind of place that you would hang out at. And, you know, I mean, maybe. I know, but a week off or whatever it would be to do to be immersed.
Starting point is 00:20:44 That seems a bit much. You know, something like the go-to conference. or something that's a bit more, you know, across industry would make more sense, I think. Yeah. Yeah, go-to is in Chicago, too, right? They have them everywhere, but there is one in Chicago, you know, which makes it significantly easier to go-to. Yeah, ha-ha. Pun, pun, retrospectively intended.
Starting point is 00:21:09 Intended. Well, if an organizer at the go-to conference wants to invite me to the next one in Chicago, I will gladly attend. And give one of your talks. What talk would you give? What you've sort of alluded to, you have some or, you know? You know, I, there's obviously a whole bunch of talks on testing, and I could give any one of those. I feel like that might be a little too on brand for me. Your whole deployment-based thing sounds like there's a, you know, like branch-based deployment thing.
Starting point is 00:21:38 You know, I don't actually have a talk for that. And that would be a great example of something where, you know, and I'm sure you've never done this where you sign up to do the talk. and then you're like, and what am I going to talk about again? Absolutely never done that. No, did that. Never done that once before. Specifically either, no. Wasn't a holiday in Costa Rica freaking my hell out going, what the heck am I going to talk about for two weeks going.
Starting point is 00:21:59 Yeah. Yeah. No, that would be a good one, actually. That would be a good talk. Well, let's fill in the form right now. We'll speak to, I think, one of your current colleagues, I think, has a very good contact. at the go-to conferences. When is the next?
Starting point is 00:22:21 I know, it was, was it this year? I don't know. Or is it last year? I know it was basically down the road from the office. Yeah, there was one in 2024. So last year. All right. Maybe there's another one this year.
Starting point is 00:22:33 At the Sears Tower. Exactly. I don't care what this website says. No, that's not what it's called. No, it is called. Now we're to extreme Chicago law here for our, this and the Sears Tower. Although I've been also told that we have more than one listener now by many people. So we should probably stop three, three or four, I think.
Starting point is 00:22:53 That seems a reasonable approximation. Yeah. Yeah, that would be good. I would definitely enjoy that. That would be fun. And maybe now that I have half of an empty nest, or is it half full? I can't tell. I could maybe find a little bit more time to travel and go to some conferences that are not in Chicago.
Starting point is 00:23:18 Well, that would be cool either way. But no, I think there's definitely a market for your brand of delivery and content. So that would be interesting to see. But yeah, so the short answer is you haven't really given a formal presentation, like formal and verticals for since I've known. I haven't given a presentation at a conference since. 2013, which is a very long time ago. Yeah, I think 2013. Gosh.
Starting point is 00:23:49 This is the most recent one. Yeah. Yeah. And yeah, from my own experience, like the giving a presentation internally is like you're, I mean, all of these things are, you are, you're kind of giving a presentation to people who are on your side. Oh, yeah. It's way easier.
Starting point is 00:24:07 And it's also true I've discovered at conferences. And maybe that's just. because of who I am and it's luck. But I think generally speaking, when I go to see somebody, I want to see them succeed. I don't go to a conference talk that sounds like, I bet this person doesn't know what the hell they're talking about. And then I stand it with my arms folded in the front row, grimacing every time they make a mistake and then put that. You know, that's not how it is. It's mostly I want you to both entertain and teach me something that I didn't know or make me think about something in a different way.
Starting point is 00:24:38 And so I'm on the side of the presenter. though. Yeah. Although I will say that one of the skills that you do have to have speaking at conferences is to be able to deal effectively with people who are essentially trolls. And you don't get that. It depends on the size of the room. Right. Like if you have like a thousand people in a room, you're not going to get that. If you have three people in a room, you're all like doing a lightning talk or something like that. You're probably also not going to get that. It's sort of like that group that's in the middle where you get the one person that, you know, wants to do stuff that's not really helpful for anybody. and they're asking you questions, and there is a little bit of an art, there's a little bit of an art to just sort of delicately being like, well, why don't we talk about this after? Yeah, that's the crowd control aspect is a little bit. Yeah, and you don't really get that in a, like, office setting, right? Like, or if you do, that's.
Starting point is 00:25:28 You could actually talk to someone. Yeah, you, there are people there who will be. Yeah. Yeah, that's interesting. Going back to your point, actually, I did think, you know, like, definitely, when I practice and I do. practice, I'm sure you do as well, but I don't feel like the internal company ones. I think that's what I was going to come around to is the fact that like, you know, for a 90-minute
Starting point is 00:25:48 keynote, every time I practice, it's two hours at least because it takes longer to practice because I'm taking notes and I'm talking to my darn self in my basement, right? Or I'm sat up here staring out into space and pretending that I'm talking to someone or I'm walking the dog, honestly, with my headphones in so I don't look completely crazy. So people think I'm talking to somebody. And the whole process, you realize, gosh, this takes a long time. Right. And, you know, it's the same thing that my kids have with their music practices. It's like it's really easy to be good at the beginning because you start at the beginning every time and then maybe you run out of time or you realize there's a mistake. And so you start again,
Starting point is 00:26:23 you start from the beginning. And so the beginning is good. And that's a great start, right? There's nothing better than standing up on staging. I have the first 30 seconds of this absolutely nailed. Now, once you've done that, the nerves start to go. Everything starts to fall into place. Everything's good again. But it does mean. mean that you start getting towards the end you're like oh this is slightly i can't remember and you know it's 90 minutes in potentially you're still talking about these things but it's but yeah i'm just saying it's a big investment of time to get something up to the sort of level of polish that one would like it to be and then you mentioned about stand up and like you know you say it out loud and like i say
Starting point is 00:27:02 out loud i try and imagine what people are thinking or sometimes i even record them and play them back which is awful and you get a sense of like what works what doesn't work and when you start of saying stuff, do you like tangle yourself up in, in, in, in, in words and kind of go down a rabbit hole and go, okay, note to self, don't start going down that. Yeah, because that's a whole other talk and you don't have time for that. Mm-hmm. That material is not going to play in Peoria. No.
Starting point is 00:27:25 What? I forget where this is from, but it's just sort of like a guy, I totally forget where this is from. I'm sure the internet knows, but it's like, uh, this just like comment about stand-up comedy routines. It's like, is it going to play in Peoria, meaning it's sort of like, okay, you can you can tell that joke in a comedy club in New York and people will laugh. But in the middle of, but if you go on tour, is anyone going to actually think it's funny? Got it. Yeah. I kind of got the gist of what it was from the context. But yeah, sort of, yeah, as you say it out loud, you kind of get a feel for
Starting point is 00:28:02 it. You kind of build this sort of thing. You rearrange slides, whatever. But one difference with the thing you suggested about comedy clubs is that I don't know. that if you're in a comedy club and you're standing up on stage doing improv, that the audience wants you to succeed necessarily. I do when I'm in a comedy club, but I've seen people have to put up with the drunk people who are just trying to like make a point that you don't look the way that they wanted you to look or you're not saying the things that you would like to say.
Starting point is 00:28:29 Yeah, I mean, the incidents of trolls in comedy clubs I would expect to be a little bit higher, but I think the fundamental dynamics are the same. You go to a comedy club mostly to laugh. and laughing is a little infectious and it's sort of like, you know, the more funny something is, the more funny it gets kind of stuff. And then there's also the people in the audience who are the hecklers. Right. And as we were just talking about, like, that can also happen at conferences. I would totally grant that it's less, but it's not zero. It is not zero. Yeah. It's kind of like a percentage in both cases. I think, yeah, that's a very, that's a good point. I definitely have had,
Starting point is 00:29:07 I think, yeah, we can both think of examples where people have said things. Like, wait a second. I don't know this is exactly good faith. The complete non sequitur that is just trying to show off how smart they are or just trying to derail you or be like, have you read this thing about this thing? And it's like, no, I haven't. Why? Kate Gregory, one of my favorite speakers has this fantastic sort of preamble to her questions
Starting point is 00:29:30 where she goes, remember a question is where you ask something of me and I reply. You know, that is basically just reminding people what a question is, which, you know, she's even better nicely better put. Oh, my God. I'm going to have to go find a recording. Yeah. She has this thing at the end. And it's like, yeah, I mean, and again, I think. I'm just going to remind everyone of Kate Gregory's definition of a question.
Starting point is 00:29:56 Yeah, right. You ask me something and then I say a response. That's how that works. Right. That's what this is. This is not more of a question than a comment. You're like, right, more than a comment than a question. whatever. Well, then definitionally, not a question. Go away.
Starting point is 00:30:10 Yes. We can talk about this afterwards. Yeah, the whole like four paragraphs of speech and then, have you thought about that? It's like before you said it? No, I hadn't thought about that. I'm not sure that I should. But, you know, okay, sure, fine. So, yeah, that was my week last week. I've got a lot of interesting ideas to look into now this week. You know, that's the thing. about conferences, they inspire you and you're like, oh, this is cool. I didn't think of that, right?
Starting point is 00:30:41 So I watched some really cool and interesting talks on how like Intel are writing libraries to do embedded software using like the absolute most latest features, most latest, you know, latest features of C++, and then they're showing that it can cut down the size of their firmware and make it very, you know, declarative instead of like error prone. And that was, that was cool because, you know, the received wisdom about embedded software is no, just write it in C and then it's better. And you're like, ah, I'm not, so that was fascinating. C++ is getting reflection, like proper reflection, compile time reflection, and everyone was showing off tricks and tips about how to use it.
Starting point is 00:31:19 And even doing some things with reflection that kind of allow you to take a sort of object-oriented-ish view of an object and turn it into a more like a data-driven thing where you've got, instead of like, one, So, for example, a particle, right? The classic example is, I'd love in my OO world to have a particle, which has an X or Y, a velocity and Y, a velocity and Y, a color, and a lifetime. And then, you know, that's, I could draw a particle, I can ask it to draw itself, all that good stuff, right? And the, the, the upside is it's easy to write.
Starting point is 00:31:57 The downside is the performance, it could be better. Right. Right. You're wondering where I was going with that. Now you've kind of, no, no, I knew exactly. Oh, you did. I wasn't sure. That was my first job out of school, actually, is both creating and then fixing that problem. But go ahead.
Starting point is 00:32:11 Oh, that's fan. Oh, I, yeah, yeah, yeah. Maybe that's another episode we could talk about. Maybe so. I don't know. But, yeah, so, you know, that is where you start and it makes a lot of sense, but then CPUs don't like, or compilers certainly aren't necessarily very good at turning that into perfect code. It's much better if you can have all of the Xs next to each other than all of the Y is next to each other, all the VXs next to one. the VY's next to which I. Then like the CPU can pick up giant slabs of X's and then giant
Starting point is 00:32:39 slabs of VXs and add them all together at once and then stall them back and you're like, wow, this is amazing. But it makes you think about it in a very different way. And that's awkward because, you know, OO purism says, no, no, it's nice to have a function. The function says, you know, X plus equals VX, Y plus equals VY, uh, color, whatever. And the, you know, I think Mike Acton gave a presentation probably 15 years ago at CPPCon. It's like, I think the most watched CPPCon video where he basically explained the idea of data-oriented design, which, you know, most people who've done any kind of large-scale fluid dynamics or particle stuff have done before. Certainly anyone who's been in the games industry, like every particle system I've ever written has just been that way. But it was like, no, this is just how you should design your data this way.
Starting point is 00:33:27 And it was much more than I've just said. It's about reframing things around the way that data flows as opposed to the sort of conceptions that you put on into your code to make your code look nice. It's like no, when code processes data, so the data is primary, not the code that does it. And you're like, well, and I can have disagreements with that. You and I could have disagreement, but there are definitely times where it makes sense. Anyway, with this reflection magic, people have been able to show that you could kind of write it looking and acting for all of intents and purposes like. Interesting. The sort of structure way, but then have it like auto devolve into sets of arrays, parallel arrays or whatever, and have the relevant transformations happen.
Starting point is 00:34:10 And I was like, this sounds both very cool, but also mildly terrifying because you're starting to make the language rewrite itself as part of the compilation, which I already have certain issues with. It's powerful. And I think once we get good ways of visualizing it and debugging it and stepping into code that, maybe doesn't even exist because the reflection made it come into being by it going, oh, you know, I found a field called X and now I'm going to add a function to this class called whatever. I don't know. That's where it gets tricky. But that was definitely the vibe of the conference was that this is coming. It's pretty interesting to see where C++ is going with it. And yeah, I'd forgotten where I was going with this, the thread of it now. But anyway,
Starting point is 00:34:54 I had a great time and I'm excited to give this a go. I want to try it out with some of my emulators that have some things that I've been hacking around on that could potentially use reflection instead now. I would have to imagine, and you would know this better than me, that reflection in C++ would have a pretty significant impact on tooling, both developer tools, and also kind of like deployment, configuration, type tooling
Starting point is 00:35:23 where, you know, one of the classic problems is, you know, introduce a bug in a production that actually just lives in a config file and somehow people like I feel like they're more okay with it when really the net effect is the same is oh, it's just a config problem. It's like
Starting point is 00:35:40 yeah, but it's still problem, right? Yeah, you had the same result. It's just that it was in a YAML file instead of a CPP file. Right. It's like the same thing. Still end up having to write, well, how do we fix this? Well, you write tests for it, just like you write anything else and you make sure that you test your Yama. Yeah, yeah. Yeah. I don't know in that instance. So it is
Starting point is 00:35:58 effectively it's an extension of the way templating works in the compiler at some level, right? So it is 100% static. So there's no kind of weird poking back in type stuff that you might get from like the Java style of runtime reflection where you can do dependency injection in this kind of like exogenous way or maybe even come in with a YAML file and like instantiate large swathes of the, of the code. So dynamically. So I think, I think, yeah, I think we're probably agreeing here. Like the, the debugability for me is the bit that I'm most worried about because, yeah,
Starting point is 00:36:44 there is like aspects of this code that don't exist. Right. Potentially don't exist. Now, in the first aspect of it, that's very limited. So there's something called Template 4, where I can, like, loop over statically and sort of stamp out copies of a piece of code. And I could sort of then loop over the members of this thing, right? So I can kind of reflect over the T, the type T that I've got and say, for all public methods, execute this body of code. And so you could, like, make it, you know, print F the name of that thing.
Starting point is 00:37:17 And so that means that, yes, you don't see that code, like the literal code that you don't see stamped out, 10 copies, but you can at least read the loop. And so it's looping over all the things. So it looks a little bit like it's a loop. It's not really a loop because it's a loop at compile time that it generates this stuff. But you can imagine as the sophistication of that grows, you might end up with pieces of code that are much more complicated that, you know, do more have more far-reaching. And that's where it gets interesting for a start. And that's where you can start doing some really clever and cool things. But you really would like to be able to like kind of print out the code at that point and say, can you just show me what the code is at that point? And there are debug techniques where you could do that. And at the moment, like in order to actually use those more sophisticated techniques, the way that you achieve them is, in fact, to get the C++, go to print out C++ and then you recompile the C++.
Starting point is 00:38:10 So it kind of becomes visible by the very fact that you have to do this intermediate step. that's not necessarily a bad thing. But it's obviously a bit more awkward, right? It's not like more general purpose meta-programming where you can write a program that kind of assembles itself and then it evals itself in JavaScript to make a new program and then you just carry on with it. It's like, no, you can't do that yet.
Starting point is 00:38:32 But yeah, maybe that's a feature. I don't know. Anyway, I'm really lost in the weeds here, but it's a fascinating change in the way that C++ is going to be used, I think. And certainly just from, you know, the boring boilerplate of like I need to serialize my class that has 10 fields. You're like, well, I want to write a debugger that just says print out that object over here in a debug way. And it's like, well, for all things, just print out the name of the thing and then print out the thing that it is. So, you know, X equals X.
Starting point is 00:39:04 A lot fewer terrible regular expressions being applied to CPP files. A lot fewer people rolling their own parsers. Exactly. Exactly. Exactly. Yeah. And yeah. So there was some cool. There were some other people who presented like tools that they're writing that do some of this stuff as well. And obviously that that, yeah, there was a lot of cool stuff. And so I was pretty like, oh, C++ is alive and well and doing, you know, and thriving, if anything. So that was, that was a pleasant aspect. And it's always nice to hang out with a whole bunch of folks. There were a lot of like new grads or even folks who haven't graduated yet who were attending. And I was so excited to meet them and hear how excited they are about it because I'm like, you know, this is great. There is fresh blood still coming in and they're interested in the kind of things that I was interested in when I was younger, you know, like hardware and how things really work. In fact, one of the questions I got at the closing keynote was, you know, how do we get more people interested in this? Are we not going to lose people?
Starting point is 00:40:07 I'm like, I don't think we have to do anything. People who are interested in this will find their way. And like there are literally two people standing in line for questions who I could point at who were like relatively young, 20 odd, not even graduated yet, who were going to ask questions about like how to do X or it. It just made me feel like, yeah, that people have found their way already. We don't need to go out of our way to it. Well, we make sure that the ground is fertile for them to come stepping into. But we don't have to go and abscond from them off the streets and like point them at it and say, hey, come to this. They find it. And if as long as the. community is welcoming, they will find their people. Yeah, yeah. To maybe tie this back to conferences for a second, you just got to do the Pac-Man thing. Yes. Right?
Starting point is 00:40:52 Where you have a group, you have a circle of people that are all standing around, and you open a space in the circle so that anyone can come in. And as soon as they do, then you just repeat that process. And you just got to do that. It makes a huge difference. It is such an important thing to do. And I think, yeah, we should probably end on that piece of life advice. Because I do this now, even if I'm like a function with my kids like school or whatever.
Starting point is 00:41:17 That's right. You end up in that little funny clique of like the four people that you know, yourself included. And then before you know it, you've made this sort of impenetrable wall. And you know that there is another person in that room who's like looking at the four of you going like, can I? No, I shouldn't interrupt them. But if you're stood there like a Pac-Man with a big empty gap, they maybe will sidle up. And then you'll be like, oh, hi, who are you? And then you, as you say, you open the mouth.
Starting point is 00:41:41 a bit wider. And eventually, obviously, you have to kind of bud off into multiple things and want to some sort of biology metaphor now of like, what is it called? Mitosis or meiosis? Oh, I forget. One of the two. Anyway. Yeah. Be kind to the
Starting point is 00:41:56 obsessive-compulsive people in your group who will be compelled to fill that space because they can't do it any other way. Welcome them in. And then be like, I'm sorry, but I have to make another gang. Okay, fine. That sounds cool.
Starting point is 00:42:11 all right friend well we've been chatting away for a lot longer than I thought we would because you have very kindly listened to me jabber about this and also that conference talk title is just the best oh you're a you're a sweetheart thank you Ben yeah
Starting point is 00:42:26 all right well I will until next time speak to you next time yeah thank you everyone you've been listening to Tew's complement a program podcast by Ben Rady and Matt Godbob. Find the show transcript and notes at www.2.2.2's complement.complement.comptor. Contact us on Mastodon. We are at twoscomplement at hackyderm.
Starting point is 00:42:53 Our theme music is by inverse phase. Find out more at inversephase.com.

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