Hey, Ben.
Hey, Matt.
How are you doing?
I'm all right. Yeah.
Someone tweeted me the other day or whatever. Social media interacted with me the other day and said, Matt, 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.
Uh-huh.
Thank you very much. Even though you never asked me, you meanie.
All right. I don't care. That's not why I come to this podcast.
Excuse me. Oh, gosh. Well, I say I'm doing fine, but obviously I...
Yeah, and then you're dying. See, you're lying to our audience right now. You're saying like, I'm fine, but really you're dead.
I'm sorry. No, I've got a cold. I've got a bit of a cold going on here. As we were discussing in the pre-chat, I've been spending a week at a conference with 700 other people and worrying about talks and going through the emotional rollercoaster of 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, well.
But it was a great time. I'd recommend it. Go to conferences, people. It's fun. It's fun to meet people and see them 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. 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... 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 nevertheless, I had a great time. I had three talks And I was on two panels. So pretty much.
Oh, wow.
And then they wanted me to appear on a third panel. And I like, no, that would mean literally every day of this five day conference, I'm doing at least one thing. And I just want to have one day where I haven't got anything to worry about primarily and selfishly.
Mm-hmm.
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.
Mm-hmm.
which I did do, which was fun.
Mm-hmm.
that 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 a great conference. So we're doing a podcast, I realize. I remember that because we're just chatting now. Like you and me would be chatting.
Right. Well, this is every podcast as we just talked.
I know, I know. But 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.
I guess.
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 be interested.
Well, that's a good question. Well, first of all, I have just fiddled with these audio settings because I'm noticing my levels are really low here. So apologies to editor Matt that that could be, I mean, I look very small on here, but this is a new computer.
Well, it's just the cold. It'll be fine.
I switched to my desktop computer and, of course, every setting is different. Anyway, yeah, the talk. Well, I did three. One of them was a repeat of one I've already done before, although I took the time to bring it up to date with all the latest bits and pieces.
Yeah.
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 pitches a talk, you can just talk about whatever you like. It doesn't have to fit in with the call. They don't record it.
Okay. Yeah.
They just sort of give you a room and say "have fun", and they put it on the schedule.
Mm-hmm.
I did my JavaScript talk about emulating the BBC Micro, you know, my favorite computer.
Mm-hmm. The Beeb.
Absolutely. And I brought that sort of up to date slightly with all the things I've done subsequently. And more importantly, I went back over the slides and like, revamp them a little bit. Although I'd forgotten that to this is one of my oldest presentations. I first presented it like eight years ago or a version of it.
And my ideas about color 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 just, you can't read it on a projector.
Mm-hmm.
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.
Mm-hmm.
But on a sort of rear projector or front projector, the contrast is just too dire, right? There's just these very stark white on a black background that it's just too, too small.
Yeah.
So that's always something to bear in mind as a presenter is like, can it be read by the people in the room?
Mm-hmm.
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, which 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 features, oh my god, I forgot we could do that. And half of 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, obviously, as
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.
Mm-hmm. huh Right.
So I don't really dog food it, right?
Right. Wow. Yeah, that is a dilemma.
It is. It is. Hello? Can I speak to Emma, please?
Interesting.
Yeah. Whoa!
No, she's dead. Die, lemma.
Oh, die. It's dial. I see. I'm dialing Emma.
Yeah. Oh, dial Emma.
Yes.
That's a much better pun.
As in to, you know, that's none of them are good.
Mm-hmm.
Like we're really, this is. 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 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.
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.
Wow.
It reminded me, though, how massive Compiler Explorer has become and how lazy... I have been. So for example, one of the, like 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 that work on those.
False.
There's a sort of combinatorial thing going in and there.
Yeah.
And it's just one JSON document that is about, you know, 80 meg now compressed, which is a problem, right?
Wow. Yeah. That's sizable.
When you're on crap Wi-Fi. And so we've got some like ideas to you know either just-in-time load that, because you know if you you don't need to know every library for every compiler. It's only when you select the compiler in the dropdown, do you need to grab that? But obviously that makes it a lot more complicated in the front end.
Right.
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 is that like on the 56k modem,
And right, right.
the screeching is gradually bringing down this giant document. But anyway, it was fun to present.
Yeah.
It worked out pretty well. I had some panels on ai That was, that was an interesting one, actually the whole.
Oh, yeah. yeah What were the panels?
So the flavor of the conference, obviously it's a C++ conference, well, sorry, this was CppCon. Did I even say that? I don't even know that I did.
I don't know if you did.
So it was, it is CppCon.
Well, we're saying it now, so it's been said.
It was CppCon.
Yeah.
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.
Mm-hmm. Mm-hmm.
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 effectively use AI for C++? And another one on how we might use AI-assisted debugging, which was more of a discussion with a vendor that had a plugin for their... They have a debugger, they're Undo who have this reverse time-traveling debugger, which essentially sort of emulates the CPU in some clever way. And that's not really what it does.
Mm-hmm.
It's a big disservice to what they're trying to do. But it lets you sort of backwards step. And so what you can do is you can kind of crash your program and then ask the AI, can you GDB and reverse back and look through the trace of instructions and try and work out where it went wrong.
Mm-hmm.
And that's kind of a cool technology. Anyway, so those panels were about that. And most of the pre-planning, I'll be honest with you, was how do we appropriately discuss AI in a sort of inclusive way that means that folks who might not like the idea of AI can contribute? And 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 who asked questions that were clearly like, I'm not sure about this and that's fine, obviously.
Yeah. Yeah. Yeah.
But yeah, most people there were interested in how we might use it well, because it's here anyway. It's kind of the vibe that I got.
Right. Right.
Although again, there's a selection bias in the people who turn up to a panel on this type of thing. 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, it was interesting.
Yeah. It's hard. It's hard to have that kind of discussion though. It's sort of like, here's a thing that might, people might hate. Why don't you, you know, come to the two minutes hate and you know, vent about big brother.
yeah
That's as good as I'm going to make that pun or reference, not really a pun, but like I, I could see a world in which anyone who would have like thoughtful, 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 right now.
That's fair.
Right. You know?
That's fair. But, you know, we thought about it and we planned for it so that we were able to hopefully give folks a place to say their two pennants and then talk about it, but it didn't it didn't happen.
Yeah. Yeah. Yeah.
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.
Right. Yeah.
I wasn't expecting it. And then latterly, I had the last talk. And I was very pleased with myself, although Reddit didn't like my title when eventually it was posted. So most of these videos aren't out yet except for the keynotes.
What?
So the keynotes got published pretty much as they finished.
Mm-hmm.
So that one is up. My last one is up - [Editor Matt says: https://www.youtube.com/watch?v=zoYT7R94S3c]. 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 when someone added me on the Reddit thread. I'm like, what? 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 YouTube video. I write it for the people who are at the conference and the people at the conference, they don't have to come to my talk because it's the keynote. It's the closing keynote,
The title almost doesn't matter.
Yeah, it's like you're going to be stuck in a room with me and I've got 90 minutes to talk to you and you can't do much about it other than to walk out.
yeah
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. Not everyone's going to agree with everything I say and I try not to
Yeah. I doubt that they walk. 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.
Yeah. Oh, that's a good name.
See, I thought so. I was so pleased with my little self.
Reddit is dumb. That's a great name. Some assembly required is, that's
Obviously, I mean, 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, well...
sure, but it's an objectively awesome name. So, I mean, what do you want?
You're very kind to me and we think very similarly. So I have to take that with a pinch of salt, although I am thankful you said that. But no, Reddit is correct, but that's the point of it. My idea was, and it was accused of being clickbaity, but it's not clickbaity 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.
Yeah, whatever.
on the interwebs now on the YouTubes. It is me 100% thinking, well, everyone's going to come to the talk anyway, so no one's going to read the abstract, which was correct. Nobody read the abstract. And of course, if there's Godbolt up on stage talking about assembly, it means one thing, right? And some assembly required, he's going to stand up there.
Right.
He's going to preach to us about how everyone should learn assembly. And I do. Yeah. And I spend 25 minutes with a little bit of back history as to why I think the 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.
Wow.
And I eventually show, I talk about assembly and all of its forms. I actually show a new feature in Compiler Explorer that I added in and I live deployed on stage, although... Yeah, I know that's confidence in my deploy ability there. I've learned that from a friend of mine.
wow
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.
And then I go back to the definition of assembly, which I showed earlier and just show that there's loads of definitions of 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, a regulatory body is an assembly.
Mm-hmm. Hmm.
So, for example, like in Britain, that there's the Welsh assembly.
Okay. Yeah, that's cool.
There are various assemblies around. And obviously, that means you know the C++ committee that defines the language.
Mm-hmm.
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, 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 C++. 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,
Mm-hmm.
Let's keep this up. You're sat there in the audience. You're sat there on YouTube. You can join in. Go to a local meetup. Because also an assembly is like a congregation of people in one place for a purpose. And I'm like, point at the audience.
Right.
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. 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 it. But that was not the intention as such. You know, obviously, you hope people will like it.
I think, I mean, that sounds like an awesome talk.
But you forget 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, I know 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.
You know, I don't tend to practice them when I do a work, but what's your process?
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, right?
I suppose so.
Like that's sort of the deal, right?
You're kind of always presenting, you're always on a show.
Like you have tons of opportunity to practice, right. Where, you know, pretty much go-to, and I mean, this is like circa 2008, so I'm sure things are completely different now. But the go-to tactic for most of the business development and salespeople that I worked with was stealing an idea from Jerry Weinberg and to be like, give your best ideas away for free.
Thank you.
That's how you get a job as a consultant, right? Like 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 know, you can do these at conferences, you can do them as 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 standup comedy, right? Like you just got to like, you know, do it and refine it.
Yeah, yes, exactly.
Right. Yeah.
100%.
Yeah. So I've fallen out of that a little bit. And, you know, 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've been consulting, that has atrophied a little bit.
Right.
And I don't really, and COVID didn't help either. And so I don't know. 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 what the best forums would be, right? Like local conference, national conference, which ones? I spoke again, years and years and years ago at a conference called No Fluff, Just Stuff. And I remember that
I've not heard of 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. You know, you can just go back in our podcast history and get all my opinions on that.
ah Wow, that's a sentence. Fair, fair point.
Go ask James Grenning, one of the signatories of the Agile Manifesto, what he thinks of it.
One of our and podcast guest as well.
You can, 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 were 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 for this talk, which I could probably just give at the drop of a hat right now, right? Like just fire up the slides and talk for 60 minutes and it'd 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, Hey, have you ever considered doing like a live recording of Two's Complement? Maybe you could come to CppCon next year and do one there. I'm like, well, this isn't a C++ podcast. It never has been.
Yeah.
And it's not the kind of place that you would hang out at. And, you know,
I mean, and maybe.
I know, but a week off or whatever it would be to do to immerse yourself, that seems a bit much.
Yeah, that's true. week would be a lot. Yeah.
You know, something like the GOTO Conferences or something that's a bit more across industry would make more sense, I think. so
Yeah. Yeah, GOTO is in Chicago too, right?
They have them everywhere, but there is one in Chicago, yeah which makes it significantly easier to go to.
Yeah.
Yeah.
Pun intended.
Pun retrospectively intended.
Well, if an organizer at the GOTO conference wants to invite me to the next one in Chicago, I will gladly attend, but,
And give one of your talks. What talk would you give? You've sort of alluded to, and you have some, you know.
You know, 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.
Right.
Um,
Your whole deployment-based thing sounds like there's a, you know, like branch-based deployment thing sounds like there should be.
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. Nor did that this time specifically either.
Never done that once before. um
No. Wasn't on holiday in Costa Rica freaking the hell out going, what the heck am I going to talk about for two weeks going, yeah, yeah.
Yeah, but that. 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 with at the GOTO conferences.
GOTO Chicago. When is the next one in Chicago?
I don't know. Was it this year? I don't know. Where was it last year? I know it was basically down the road from the office.
Yeah, there's one in 2024. So last year. Yes.
All right. Maybe there's another one this year.
At the Sears Tower. I don't care what this website says.
Exactly. The Willis Tower.
No, that's not what it's called.
See? No, it is called...
Nope.
Now we're into extreme Chicago lore here for our our listener.
That's, it's the Sears Tower and That's not the name.
Although I've been also told that we have more than one listener now by many people. So we should probably stop, three or four, I think.
three, four.
That seems ah reasonable approximation.
Yeah. Yeah, that would be good. I would definitely enjoy that. That would be fun. And maybe now that I have a, 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, but.
Well, that would be cool either way. But no, I think there's definitely a market for your brand of delivery and content.
Mm-hmm.
So that would be interesting to see.
Mm-hmm.
But yeah, so the short answer is you haven't really given a formal presentation, like formal, for a vertical since I've known you.
I haven't given a presentation at a conference since 2013. Yeah.
Which is a very long time ago.
Yeah, I think 2013 is the most recent one.
Gosh. Yeah.
Yeah.
And yeah, from my own experience, like giving a presentation internally is like, all of these things, you're kind of giving a presentation to people who are on your side. But most people are coming along.
Oh yeah. It's way easier. Way easier.
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 there 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.
Right.
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. And so I'm on the side of the presenter.
Yeah. Yeah.
And
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 everyone has left here or something?
Yeah, that's the crowd control aspect is a little bit of it, but so
Yeah. Yeah. And you don't really get that in an office setting, right? Like, or if you do, that's, yeah.
You could actually talk to someone. Yeah, there are people there who are.
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.
It's very different. Mm hmm.
I think that's what I was going to come around to is the fact that like, you know, for a 90 minute keynote, every time I practice, it's two hours at least because it takes longer to practice.
Yeah.
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.
Mm hmm. Mm hmm.
So people think I'm talking to somebody.
Yeah.
And the whole process, you realize, gosh, this takes a long time, right?
Yeah.
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.
Mm hmm.
And so you start again. You start again from the beginning. And so the beginning is good.
Yeah.
And that's a great start, right? There's nothing better than standing up on stage and going, like, I have the first 30 seconds of this absolutely nailed.
Yeah.
And now once you've done that, the nerves start to go.
Yeah.
Everything starts to fall into place.
Yeah.
Everything's good again. But it does 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. If you're still talking about these things. 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 you mentioned about stand-up and like you know you say it out loud and like I say 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 saying stuff, do you like tangle yourself up in it and in words and kind of go down a rabbit hole and go, okay, note to self, don't start going down that thing because that's a whole other talk and you don't have time for that.
That material is not going to play in Peoria. Yeah. Yeah, right. Yeah, right.
No. What?
I forget where this is from, but it's just sort of like... I totally forget where this is from. I'm sure the internet knows, but it's like this just like comment about standup 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 Midlands...
But if you go on tour, is anyone going to actually think it's funny?
Got it. Yeah. No, I kind of got the gist of what it was from the context.
Right? Yeah.
But yeah, sort of, yeah, as you say out loud, you kind of get a feel for 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.
Yeah.
right I do when I'm in a comedy club, but you know I've seen people have to put up with the drunk people who are just trying to like make a point that you 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 or whatever.
Yeah. Yeah. I mean, the incidence 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, right?
It is not zero. Yeah.
It's kind of like a percentage in both cases, right?
I think, yeah, that's a very, that's a good point. I definitely have had, I think, yeah, we can both think of examples where people have said things like, and wait a second.
Yeah.
I don't know. This is not exactly a good faith question.
Yeah. Just 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.
Oh yeah, this.
Yeah.
Kate Gregory, one of my favorite speakers, has this fantastic sort of preamble to her questions where she goes, remember, a question is where you ask something of me and I reply. That is basically just reminding people what a question is. She's even better, nicely put than nicely put.
Oh my God, I'm going to have to go find a recording of her saying that and just internalize that.
Yeah, she has this thing at the end and it's like, yeah. I mean, I again, I think as a
I'm just going to quote her. I'm going to remind everyone of Kate Gregory's definition of a question, which is, you ask me something and then I say a response.
Yeah, right. And just say like, hey, that's how that works. Right. and it's not
That's what this is.
This is not more of a question than a comment.
Yeah.
Right. More than a comment than a question. Sorry, whatever. Well, then, definitionally, not a question.
Yeah. Yes.
Go away.
Yes.
Yeah. We can talk about this afterwards.
Yeah. The whole like four paragraphs of speech. And then have you thought about that?
No.
It's like before you said it, no, I hadn't thought about that.
No. No.
I'm not sure that I should, but you know, okay, sure. Fine.
So, yeah, that was my week last week.
Yeah.
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.
Yeah.
I didn't think of that, right? So I watched some really cool and interesting talks on how Intel are writing libraries to do embedded software using the absolute latest features of C++.
Yeah.
And then they're showing that it can cut down the size of the firmware and make it very declarative instead of error prone. And 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, not so. That was fascinating.
Mm-hmm.
C++ is getting reflection, like proper reflection, compile time reflection.
Ooh. Nice.
And everyone was showing off tricks and tips about how to use it 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 more like a data driven thing where you've got instead of like one...
Yeah.
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, a Y, a velocity in X, a velocity in Y, a color, and a lifetime. And then, you know, I can draw a particle.
Yeah.
I can ask it to draw itself. All that good stuff, right? And the upside is it's easy to write. 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, oh, you did.
Right. No, no, I knew exactly where you were going with that.
I wasn't sure.
That was my first job out of school actually is both creating and then fixing that problem.
Yeah.
But go ahead.
Oh, that's fantastic. Oh, yeah, yeah, yeah.
Yeah. Maybe that's another episode we could talk about one day.
I think maybe so. I don't know. But that's good.
Yeah.
But yeah, 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.
Mm-hmm.
It's much better if you can have all of the X's next to each other than all of the Y's next to each other, all the VX's next to one, all the VY's next to each other.
Right.
Then like the CPU can pick up giant slabs of X's and then giant slabs of VX's and add them all together at once and then store 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.
Right. Mm-hmm. Right.
The function says, you know, X plus equals VX, Y plus equals VY, color, whatever. And the, you know, I think Mike Acton gave a presentation probably 15 years ago at CppCon, 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 has done before, certainly anyone 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.
Yeah.
And it was more less 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, we'd code processes data.
Right.
So the data is is primary, not the code that does it. And you're like, oh, well, and I can have disagreements with that. You and I could have disagreements, 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 intents and purposes like that.
Interesting.
The structure way, but then have it like auto-devolve into sets of arrays, parallel arrays or whatever, and have the relevant transformations happen.
Yeah.
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.
Yeah.
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.
Right, right.
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, I had a great time and I'm excited to give this a go.
Hmm.
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 where you know one of the classic problems is you introduce a bug into production that actually just lives in a config file and somehow people
Yep.
I feel like they're more okay with it when really the net effect is the same as, oh it's just a config problem. It's like yeah, but it's still a problem, right? Like you had the same result.
Yeah. Right.
It's just that it was in a YAML file instead of a CPP file, but it's like the same thing.
Right, you 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 YAML.
Yeah.
Yeah. Yeah. I don't know, in essence. So it is effectively, it's an extension of the way templating works in the compiler at some level. Right. So it is a hundred percent static. So there's no kind of weird poking back in type stuff that you might get from,
Yeah.
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 code sort of dynamically.
Mm-hmm.
So I think, I think we're, yeah, I think we're probably agreeing here.
Mm-hmm.
Like the debuggability for me is the bit that I'm most worried about because, again, there are aspects of this code that don't exist, potentially don't exist.
Right.
Now, in the first aspect of it, that's very limited. So there's something called template-for where I can like loop over statically and sort of stamp out copies of a piece of code.
Mm-hmm.
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.
Mm-hmm.
And so you could like make it, you know, printf the name of that thing. And so that means that yes, 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 I guess it's looping over all the things.
Yeah.
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 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,
Yeah.
Far-reaching side of it. 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.
Yeah, yeah.
And at the moment, in order to actually use those more sophisticated techniques, the way that you achieve them is, in fact, to get the C++ code to print out C++. And then you recompile the C++. 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.
Yeah.
But it's obviously a bit more awkward, right?
Yeah.
It's not like you know more general purpose metaprogramming where you can write a program that kind of assembles itself and then it evals itself in JavaScript to make a new program and you just carry on with it.
Right.
It's like, no, you can't do that yet.
Right.
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.
Yeah.
You're like, well.
Right.
Or I want to write a debugger that just says, print out that object over here in a debug way.
Yeah.
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.
Yeah. A lot fewer terrible regular expressions being applied to CPP files. A lot fewer people rolling their own parsers.
In makefiles to try.
Yeah, right.
Exactly.
Exactly. Yeah.
Exactly. Yeah. And yeah.
Mm-hmm.
So there were some other people who presented tools that they're writing that do some of this stuff as well. And obviously there was a lot of cool stuff. And so I was pretty like, oh, C++ is alive and well and doing, you know, thriving if anything. So 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.
Mm-hmm. Oh, wow, yeah.
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, hardware and how things really work.
Mm-hmm.
And in fact, one of the questions I got at the closing keynote was, you know, how do we get more people interested in this? How are we not going to lose people? 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,
Yeah.
relatively young, 20 odd, not even graduated yet, who were going to ask questions about like how to do X or it just made me feel like, yeah, that people have found their way already. We don't need to go out of our way. Well, we make sure that the ground is fertile for them to come stepping into, but we don't have to go and abscond them off the streets and like point them at it and say, hey, come do this.
Right.
They find it. And as long as the community is welcoming, they will find their people.
Yeah. Yeah. To to ah maybe tie this back to to conferences for a second. You just got to do the Pac-Man thing, right?
Yes.
Where you 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 is such an important thing to do. And I think, yeah, we should probably end on that piece of life advice.
And it makes a huge difference. Yeah.
Because I do this now, even if I'm at a function with with my kids' like school or whatever, 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.
That's right. Yep.
And you know that there is another person in that room who's like looking at the four of you going like... can I, and 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?
Right.
And then you, as you say, you open the mouth a bit wider.
Mm-hmm.
And eventually, obviously you have to kind of bud off into multiple things and went to some sort of biology metaphor now of like, what is it called? Mitosis or meiosis?
Yeah. Oh, I forget.
Mitosis. One of the two. Anyway.
But yeah, be kind to the obsessive compulsive people in your group who will be compelled to fill that space because they can't do it any other way.
Ah.
Welcome them in and then be like, I'm sorry, but I have to make another gap.
That's yeah.
And they were just like, Oh, okay, fine.
That sounds cool. Yeah, 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 you're a sweetheart. Thank you Ben, you're cool.
No, it's all good stuff, man. Also, that conference talk title is just the best and I don't care what anyone says. Yeah, that's the best. Yeah.
All right. Well, I will speak to you next time.
Until next time.
Yeah. Take care, friend.
Yeah.
