CppCast - Podcasting and Advocating

Episode Date: September 9, 2021

Rob and Jason are joined by Phil Nash. They first discuss another C++ podcasts interview with Sean Parent and a blog post from Bungie on their process for creating coding guidelines. Then they talk to... Phil Nash about his new role at Sonar Source, his podcasts, C++ On Sea and more. News Episode 39: How Steve Jobs Saved Sean Parent Bungie C++ Guidelines & Razors Links Sonar Source C++ on Sea cpp.chat No Diagnostic Required Accelerated TDD: For More Productive C++ Lyra on GitHub Sponsors C++ Builder

Transcript
Discussion (0)
Starting point is 00:00:00 Thank you. and expansive libraries. Prototyping, developing, and shipping are easy with C++ Builder. Start for free at embarcadero.com. In this episode, we discuss C++ guidelines at Bungie. Then we talk to Phil Nash. Phil talks to us about his developer advocate role at SonarSource and much more. Welcome to episode 316 of CppCast, the first podcast for C++ developers by C++ developers. I'm your host, Rob Irving, joined by my co-host, Jason Turner. Jason, how are you doing today? All right, Rob, how are you doing? Doing okay. Not too much going on for me. You got anything going on you want to talk about? No, I don't think so. I mean, we mentioned the conferences and stuff that I'm supposed to be doing. But at the moment, it is very difficult to tell whether or not I'm going to be allowed to go to Norway. I look at their news like every day.
Starting point is 00:01:52 I think I saw something about you having, you know, in Europe who had a negative COVID test or a vaccine. Now they're saying, yeah, those countries are still open to you, but you must have a vaccine can come in, but then they also say you must have a vaccine certificate with a QR code that our immigration officers can scan. We don't have that in the United States. No, that's not what our vaccine cards look like. No QR code. No, and there's no way for us to register in a verified system that would give them an app with a QR code, no way that I'm aware of. So I think I'm allowed in, but I can't get in. As far as I can tell is the current situation
Starting point is 00:02:53 for NDC Tech Town. So we'll see. How long do you have until NDC Tech Town to figure this out? It's middle of October. Middle of October. It's literally the exact week before CBPCon. Right.
Starting point is 00:03:05 Well, I hope you're able to figure that right well i hope you're able to uh figure that out hope you're able to travel yeah i just kind of want to know at this point yeah yeah i'd be better than not knowing okay well at the top of every episode like through a piece of feedback uh we got this comment from massage on the include discord and he wrote uh potentially interesting guests might be christian trot he's the lead on the Include Discord. He wrote, a potentially interesting guest might be Christian Trott. He's the lead on the Cocos Performance Portability Library at Sandia National Lab. His group is involved with various standardization efforts like MD-SPAN and the
Starting point is 00:03:36 async and concurrency parallelism stuff. And yeah, we've had a couple developers from the various national labs on before or recently, but not had anyone on from Sandia, and I've never heard of this Cocos library of you. I mean, it feels like
Starting point is 00:03:52 it rings a bell, but I don't know. It's also interesting to point out you mentioned the national labs, but I think they've all been specifically Department of Energy national labs, which is just a fascinating aside. But, you know, like the DoD labs and stuff probably are less likely to be working on open source stuff that they can share with the rest of the world.
Starting point is 00:04:11 That's true. Okay, well, we'd love to hear your thoughts about the show. You can always reach out to us on Facebook, Twitter, or email us at cppcast or feedback at cppcast.com. And don't forget to leave us a review on iTunes or subscribe on YouTube. Joining us today is phil nash phil is the original author of catch two a regular speaker at conferences trainer organizer of c++ on c and the c++ london meetup co-host of cpp chat and no diagnostics required podcast and recently moved to sonar source as a developer advocate
Starting point is 00:04:40 more generally he's an advocate for good testing practices, TDD, and using the type system and tools and functional techniques to reduce complexity, increase correctness, and is not afraid of ABI breaks. Phil, welcome back to the show. Thanks, Rob. It's been a while, so nice to be back. You know, Phil, and I don't mean this as a dig to you personally, because it's also a question I have for myself. You're the original author of Catch-2, but it's been how many years now since you've maintained it? Me personally, probably about four years, maybe.
Starting point is 00:05:11 So at what point do you remove it from your bio? And I'm asking because I still have ChaiScript on my bio, but I haven't maintained it in a couple of years either. Well, that's why I include the word original author. That's the big of a change so right it's evergreen that's true that's very true all right well phil we got a couple news articles to discuss uh feel free to comment on these and we'll start talking more about what you've been up to okay okay all right so this first one is linked to another podcast. This is episode 39 of ADSP, which is Connor Hoekstra and Bryce Lulback's podcast.
Starting point is 00:05:51 And it's How Steve Jobs Saved Sean Parent. And the first thing I'll say, I did listen to this episode. It was a very entertaining story. But I really like the way that Bryce and Connor are doing their podcast episodes because they seem to have squeezed three episodes out of one interview with Sean Perrin. It's brilliant. They must have had him on for two hours. But like the first episode was, you know, talking about the same thing we talked about him with the ST Lab. And then they have two episodes of just story time with Sean.
Starting point is 00:06:23 And story time with Sean is always a good opportunity if you manage to go out to lunch with him or something. Yeah. There's a hint of a story in, I think at the beginning of this episode, where he says, no, no, no, that's a story that has to happen at a bar over drinks. Right, right. There's one story he wasn't willing to go on with, uh, on the podcast, but, uh, yeah, the, the story he did tell about, um, his time working for an Apple reseller and a car, a very expensive, fancy car. I mean, I don't want to like ruin the whole thing for listeners, I guess, but, uh, it's certainly worth listening to. It's definitely a story about how he deals with crashes i appreciated um at the very end when he's like you know unfortunately he never got the chance to tell jobs the story but has told was the story and both bryce and connor were like why you got to tell wasniak the story and it's true like you
Starting point is 00:07:22 know was is one of those guys that if i had the opportunity to sit down and have a beer with, I would definitely do that. Yeah. That'd be very cool. I was actually surprised at Connor's restraint in not making that's a rotate jokes. That would have gone in quite nicely. Oh god, that's a good point. That's terrible. Yeah.
Starting point is 00:07:43 That was absolutely terrible. And again, without spoiling the story, it is quite a scary story. Serious matter, actually. But it did make me think it's amazing that we actually make it through to adulthood at all. Given how even someone that seems as sensible as Sean Parent can have that type of story. I've got a few stories like that of my own, which I don't have time to go into now. So maybe you need to get me back on as a serial guest to tell that. I've had a couple of very similar scary situations when I was driving that did not involve an actual accident.
Starting point is 00:08:23 Like I lucked out seriously so yeah i do wonder you know the story does kind of revolve around this promotion that apple did to uh incentivize people to sell their computers and you know you don't hear about those sorts of promotions anymore no one's given out cars anymore i wonder if like this situation specifically, this story, ended that or other similar events. Who knows? Maybe when the Apple car arrives. Okay. Next thing we have is a blog post from Bungie.
Starting point is 00:09:00 And this is Bungie C c++ guidelines and razors and uh i thought this was a pretty good article talking about what their c++ coding guidelines are like and these this idea of razors to kind of organize um you know and provide guidelines for creating the guidelines i thought was a neat idea i actually thought that of the two, this was the more dangerous post you linked to. How so? Well, when we talk about coding guidelines, it's always a sensitive topic among developers. But I thought they did actually cover it well. The idea being that, you know, you want to start off with consistency and you may as well be consistent with something that's well-reasoned.
Starting point is 00:09:45 And I thought even if I didn't entirely agree with all of the points, you could at least see the rationale behind them and get behind that. So that was my main takeaway from that. I did. I kind of, you know, there's like, I don't know, eight points in here or something, six. And I got slowed down on point number two because they say to prefer, one of their guidelines is that they generally prefer post-increment over pre-increment
Starting point is 00:10:06 for readability. And I'm like, I know I've done an episode about this. And so now I'm searching through my own YouTube list. And no, as far as I can tell, I haven't done an episode about it. But post-increment, generally speaking, is illogical. It's generally speaking, not the thing that you actually mean in your code. You don't mean increment the value and then return the old value back to me. That's almost never what we actually mean. So anyhow, I have to do an episode now. That's all. One of the things I saw here was leverage visual consistency.
Starting point is 00:10:41 And I've never seen this suggestion before but they have uh to not leave a space to the left of the assignment operator yeah to visually distinguish from the comparison operator that was and i don't know if i would change to use that but i i definitely see what they're going for and it does help to uh differentiate that would caught my eye as well if you look at languages that use the colon operator instead of equals for assignment, it has a very similar feel to that, that may be where it's coming from.
Starting point is 00:11:13 Yeah, I kind of saw it in my mental parser, kept expecting to see another token to the left of the assignment. I'm like, is that an ampersand? Oh no, that's a D. But it did give you that feel, like a colon equals kind of feel. I don't, I don't wouldn't say I like it, but I also wouldn't say I have anything against it. Yeah. I just take the time to get used to it. Anything else we want to highlight before we move on? I was just thinking, uh, I,
Starting point is 00:11:43 um, depending on what industry you're in, what you do, you rarely appreciate that they're talking about a code base that's, what did I say, over 20 years old. And they're maintaining N different versions of it simultaneously and fixing bugs in a release that's two revisions back and having to constantly keep the code in a state where they can forward port those bug fixes um that definitely like you know put some sobriety to the thought of like oh well you just need to do a modernization of the whole code base well no we couldn't do that they couldn't do that reasonably because they wouldn't be able to forward port these bugs without a huge amount of of pain or excuse me forward port the fixes not the bugs you generally don't try to forward the bugs but anyhow just you know something else to think about other projects have to deal with complicated things yeah that was an interesting thing they talked about how they will have like
Starting point is 00:12:39 maybe three or four branches running at the same time like one for the most recent update and then the next two updates, which might not release for months, if not a year. But anytime a bug fix is made on the most recent or the current branch, it'll automatically get merged into the other two active branches.
Starting point is 00:13:00 I thought that was interesting. But that also means you just can't ever do a large factoring not really that would make me sad maybe you need to get them on the show to talk about that maybe we should yeah yeah have you ever played the destiny maybe we should get them on cpp chat i played the first one i have not played destiny 2 oh do you still have is cpp chat still a podcast phil it is well we'll get to that all right well phil uh obviously you we mentioned in your bio a couple of changes that have happened recently where do you want to start right well um to begin with i've been on the show i counted
Starting point is 00:13:41 them up three and two thirds of a time before, like three full time episodes and a couple of times I share it with other people. The last full appearance was on 10th of May 2018, so over three years ago. And that was when we were just kicking off the reboot of CPP Chat, which is still going. Although, yes, it has been very quiet over the last year. In fact, we did a couple of episodes in the same week, actually, back in May, I think it was, this year. The idea was, you know, we're going to get going again, and then it sort of burnt out. There are reasons for that, mostly just all the extra pressures
Starting point is 00:14:20 of these pandemic times on both myself and John's conferences, and then my job change which we'll also get to um have all been factors but they're just excuses really we need to get back on on the wagon and we definitely have plans to do that but I don't want to jinx it again by making any promises but um no we have plans there but in that time we've also started yet another podcast which we did mention in the bio no no diagnostic required or ndr which i'm doing with anastasia kazakova my now former colleague from jet brains but we're still doing the podcast and that's a monthly podcast we've actually been keeping to that even if sometimes it slipped into
Starting point is 00:14:57 the next month we've actually kept the monthly schedule i think as you know you know keeping to that regular schedule is the important thing. And we never really set that for ourselves too strictly with CPP chat. So it was easy to let that slip a bit. But No Diagnostic Required is a bit of a different show. It's just the two of us talking about the current news in the community. So a bit of a different feel. A little bit easier in terms of organizing and editing as well. And then the other thing I mentioned...
Starting point is 00:15:24 You also post on YouTube, right? Sorry? That one you also post on YouTube because I watched one or two episodes of it and saw that you actually have visuals, right? Yeah, that's another thing that's slightly different. It's sort of, it is very visual. Well, we have slides.
Starting point is 00:15:38 It's a bit more almost like a talk that makes sense when you see it on YouTube. But what I also do is when I come to edit it, I put chapter markers in the podcast audio. So if you have a podcast player that can display chapter art, you'll actually see the slides in your podcast player. So even the audio podcast has the visuals. That turns out to be a lot more work than I signed up for.
Starting point is 00:16:00 So I'm going to reconsider whether I'll keep that going uh in both formats but but it works quite well i think so it is a nice idea the other thing that i i mentioned in that last episode back in in 2018 was that i was just about to start c++ on c right yes the conference we now had three editions two of course have been online including the the last one just a few months ago so probably talk a little bit more about that later but that's also still going and of course i've moved to to sonar source which i'm going to talk about a little bit more next yeah well i guess let's let's talk about that um how long has it been since you joined sonar source as a developer advocate so i started
Starting point is 00:16:42 there beginning of june this year so it's just a few months and it's been quite an interesting time starting in a new place the the onboarding process is fairly unique actually a very slow start the the first month or so you're not really expected to do any actual work it's really about taking the time to absorb yourself in the company culture, the nature of your work, which is a bit awkward in my case because I'm actually the first developer advocate there. So there's nobody that says, right, this is what a developer advocate does here. So I had to bring that with me. But yeah, I've taken the time to get to know the products a bit more deeply, work with the team, and I say get to know the company culture which is actually a lot more in depth than it sounds there's a very strong culture there with lots of uh very
Starting point is 00:17:29 interesting principles and philosophies that are all designed to try to keep this sort of small company feel as the company scales up and grows and so far it's uh i think it's two to three hundred people um still growing very rapidly. So it's not a small company anymore, but it does have that small company feel. So far, it's working. It's really good, but it takes a while to really get to that. So now at this point, I'm actually starting to do some real work. And it's very similar in that sense to what I was doing at JetBrains as a developer advocate there.
Starting point is 00:18:05 Different as well. And when I'm talking about JetBrains as a developer advocate there. Different as well. And when I'm talking about JetBrains, I just wanted to address one thing because I know I do get asked this. The trouble with a job like this where it is very public, when I change jobs, people will be asking, you know, why? What was wrong with JetBrains? And the answer is nothing. There's nothing wrong with JetBrains. It was a great job. I love the products. I still use them all the time. And's nothing wrong with JetBrains. It was a great job. I love the products.
Starting point is 00:18:25 I still use them all the time. And I still have some great friends there. And you're still podcasting with Anastasia, right? Exactly, yes. No bridges are bent. But the JetBrains job was great. But I felt it sort of divided into two broad areas. So one was what I call the productivity features.
Starting point is 00:18:46 So just making best use of an IDE to get things done, everything at your fingertips, getting stuff just done more quickly, which is great, but not so much the thing that I was passionate about. Whereas the other side of it is more of the code insight, what it actually tells you about the code. Part of that is static analysis, of course, that tells you on the fly what you're doing wrong or or may be doing wrong next that was the part that i was actually much more passionate about and this move sort of gives me a chance
Starting point is 00:19:15 to do something very similar but more focused on that so that that's really what it was all about so wanted to clear that up i you know i i well how long were you at jet burns oh if i was still there now it would have been about five years next week okay so as someone who's never kept a regular job for more than four years you move change jobs after you know almost five years uh you know i wasn't going to ask just for the record i think you know it's time for a change every now and then i have no problem with that yeah but it is good to hear i like the idea that you're moving into a role where you get to focus on the things that you're more passionate about yeah yeah and also i mean you know it sounds like they might have made a smart decision if they've never had a developer
Starting point is 00:19:59 advocate there to bring someone in who already brought that breath of experience with yeah exactly and i think the idea is that we will take on more developer advocates a little down the line as we expand that. I feel like with the general role of conferences and social media and YouTube and all these things in the programming world, every company is going to need at least one developer advocate at some point. Every company that works in this product space, it seems like an important role, really. Yeah. And from my experience in developer relations, the more general sphere, there are really
Starting point is 00:20:37 two types of role. There's the type of company like JetBrains and SonarSource that have products that developers use. There's a limited number of those, really. But that's an obvious case there. But the other type is particularly the services that have an API. And it's all about getting developers to use the API better. That's probably the more common type, actually.
Starting point is 00:21:00 Most of the people I meet in developer relations do something more like that. So it's actually quite rare to find somebody else that's working with products. Do you have like a secret club with a handshake and everything for recent developers? I forget what the handshake is, but yes. So we should for a moment talk, I guess, a bit more about SonarSource.
Starting point is 00:21:21 We did have Loic, who I guess is one of your coworkers now, a couple months ago. But do you want to tell us a little bit more about what the source we did have uh loic who i guess is one of your co-workers now a couple months ago but do you want to tell us a bit more about what the sonar source tools are that you're going to be working for working with and advocating for yeah actually i work very closely with loic now so it's quite interesting listening to that episode knowing that i was just about to move there i got to meet him beforehand but um yeah so i tried to cover too much of what loic covered before if you want to find out more go back to that episode but we do have three products sonar lint sonar cube with a q and sonar cloud uh and out of the box sonar lint works pretty much like any other linter that you might already be familiar with you know plugs into your
Starting point is 00:22:02 ide works either as you type or or on save depending which idea it is just to like scan your code find issues very much like warnings in your compiler uh often potential issues like what we call code smells things that may lead to an issue a bit later but catches them as you introduce them which is really the the main benefit so before you even commit stuff you can fix these issues so it's very similar to any other linter that you might find and we're quite proud of the quality of what we call rules which are like the warnings um and not just the range of warnings or rules that we offer but the level of detail in the reporting and the contextual information you get when you do hit them um it really gives you a lot more background and the rationale.
Starting point is 00:22:47 Some of them read more like pages out of Effective C++ or something like that. It's actually a great learning resource, just actually looking at some of these rule descriptions. So just on its own, that would be, I think, quite a compelling product, even though there are many competitors. But the way it really levels up is when you use that in combination with one of the other products. It's generally only one or the other because they serve the same role. So Sonar Cube is a server, well, they're both server applications, but Sonar Cube is one that you host yourself on your own hardware or your own premises,
Starting point is 00:23:21 whereas Sonar Cloud is a hosted service that is hosted by Sonasource. And the first impression, it does appear that Sonar Cloud is just like a hosted version of Sonar Cube, but they're actually different products, and they do have slightly disjoint feature sets. They're sort of more tailored to different purposes. In particular, Sonar Cube lets you have plugins, third-party plugins, and has some extra features on top, more for enterprises. So it scales up a bit more in that respect. But they're basically saving the same sort of purpose, which is Tractor is like a dashboard for basically all of your quality reporting. analyzers that the linters but you can actually run um code coverage tools uh test output uh and even other third-party uh tools you can you can adapt into our own format to appear in this
Starting point is 00:24:14 dashboard all together and it's a it's a great way of keeping on top of that and say you've got those enterprise features on top if you want to governance over that as well but even then it goes further when you those tools work together so if you're using solar that as well. But even then, it goes further when those tools work together. So if you're using Sonar Lint on your own desktop in your IDE and you're running Sonar Cube or Sonar Cloud, it can operate in what's called connected mode. So it knows about the server component,
Starting point is 00:24:38 talks to it, and you can have all of your settings and configuration centrally managed on the server and synchronized across your whole team or even your whole company so you only need to set up once in one place and you can even do things like um you know if you have one of those really annoying warnings that you think well yeah this doesn't apply in my case let's disable it rather than having to clutter your code up with annotations you set it on the server side and that actually propagates through even to the to the
Starting point is 00:25:03 desktop linter that's actually quite nice quite nice it's one of the things that i wasn't sure of at first until i actually saw it um and then we have the what we call clean z code again another big thing that i um often hear about is if you want to use even high warning levels let alone going to a linter is yeah but my code that i've been working writing for the last 20 years has thousands or millions of issues i'll never be able to get through them it'll just be noise the idea behind clean easy code is it'll only show you new issues so anytime you add or change code that's when you get the the warnings and you keep the new code clean and over time the the code that has the highest churn rate will become the cleanest. And the code that's just sitting there working, even if it has some warnings attached to it,
Starting point is 00:25:49 you don't worry about those so much. Of course, you can still dig in and have a look at what might be there as well, but you don't have to. And that's a really nice way of working. So yeah, where those things all work together, I think is the real value add. So Sonar Lint is the user side of things right that's what you're doing um so of course i have to ask how well does it work with sea lion so it's a funny story there because just before i left jet brains we um we heard that sonar lint was starting to support sea lion there's a plugin that they were just testing out and they sent us across a version to to try out before it went public um and at this point i that SonarLint was starting to support C-Line. There was a plugin that they were just testing out
Starting point is 00:26:25 and they sent us across a version to try out before it went public. And at this point, I already knew that I was probably moving to SonarSource. So I deliberately sort of kept after the discussion because it just felt a bit awkward. But yeah, so we do now have a plugin for C-Line that's working quite nicely.
Starting point is 00:26:45 And it was one of the first things that i i got up and running when i when i did join so something that i'm curious about because sea lion uh has its own static analysis linting hints hinting things that it can give you and the clang tidy integration is excellent there if i've've got Clang Tidy turned on in my project, I've got Sea Lion's Linter turned on, and I've got Sonar Lint, do they play nicely together, or am I going to be sad that I turned them all on? So the simple answer is yes. There is a but.
Starting point is 00:27:19 It is early days. There are still a few clashes, but we're working through those. But SonarLint itself. So SonarLint is a cross-language product. And within SonarLint, you have plugins for different languages. So there's what we call the C family plugin. So it's C, C++, and Objective-C.
Starting point is 00:27:39 And that part's all written in C++ on top of Clang. Okay. Okay. So we get a lot of the Clang-based warnings already, some of the Clang-tidy ones, and we map them to our own descriptions, which
Starting point is 00:27:53 can potentially sometimes be a bit richer, but we take into account all of those to begin with. Of course, then we have all our own rules on top of that, and then CLI has its own inspections, and yes, sometimes there are some clashes. We are trying to minimize those, because that can be We have all our own rules on top of that. And then C-line has its own inspections. And yeah, sometimes there are some clashes. We are trying to minimize those because that can be annoying.
Starting point is 00:28:10 But that's just a quality of implementation. Sure. I am interested why Objective-C is grouped with C and C++. It has such different syntax. I was wondering why C-sharp wasn't part of the C family. Oh yeah, if you're going to do a C family,
Starting point is 00:28:25 maybe that should be in there too. But yeah. Why, why is it because the, the, the C family plugin say it's built on, on clang. So this is what kind of support.
Starting point is 00:28:33 Okay. That makes sense. We get almost the objective C stuff almost out of the box. We just have to write a little bit on top of that. It's not a big part of the product focus. It's mostly about C plus plus. And of course some are specific to C. It's mostly about C++, and of course, some are specific to C. Now, to be terribly pedantic, does that mean it also supports Objective C++?
Starting point is 00:28:53 I believe it doesn't. Oh, really? Yeah, I'm not 100% sure about that. I seem to remember that that's the case, because as I said, we are cross--language and we do have C Sharp plugin as well and I'm pretty sure that one doesn't support C++ CLI for similar reasons. It just complicates the because you've got a different way of doing the pars I think.
Starting point is 00:29:18 It'd be almost like a completely separate language. I don't think I actually know anyone who uses objective c++ anyhow i have it's been a long time you do sometimes okay well i have done i've done not not for many years if that catch has objective c++ in it is that right yeah that was the original use case now i actually i don't know anything about the interoperability between Objective-C and Objective-C++, but why did
Starting point is 00:29:48 you need Objective-C++ instead of being able to implement that in C++ or C or Objective-C or whatever? Because originally I wanted a test framework for Objective-C, and I wanted to write it in C++, and then Objective-C++ was the way you make those languages interoperate
Starting point is 00:30:03 nicely. So there's not that much to it. But it basically just lets you write Objective-C and C++ in the same file with a little bit of crossover. It's actually a cleaner separation, I think, than the C++ CLI situation, which is a bit more deeply integrated. And now I'm sorry, but I have to ask Rob a question because you said you've also programmed an objective c++ that's never come up before has it not i'd certainly have it's been a while was that my previous job where we did have an iphone application that uh you know was shared code between our windows mobile and android application which was written in c++ so we had the top layer of the iphone had some Objective-C++. All righty then.
Starting point is 00:30:48 I was going to say, you mentioned Catch again there for a moment. So are you still contributing to Catch? We already said how you haven't been maintaining it for a few years. So yeah, so I'm no longer a key maintainer, haven't been for a few years. I do occasionally contribute pull requests.
Starting point is 00:31:04 Not that often these days i think the last one was was last year um and when i do i just go through the usual process yeah i maybe know martin a bit more than the most people but doesn't necessarily give me preferential treatment in fact sometimes it could be disadvantage um and i think i mentioned the last time i was on that I spun the command line parser out of catch called it Clara as a separate open source library and started talking about it publicly and got a few quite a few people interested actually which turned out to be a bad thing because then I ran out of time to to really drive it forward so ended up not actively maintaining it and eventually had to say look okay
Starting point is 00:31:46 open up to the community you can run with it but by that point uh renee rivera often comes up on forums and things as graphic robot uh he made a fault of clara uh that he called lyra and did all those things that people have been asking for it to it and uh since they've been doing a great job with that since then so if you want a good composable command line parser in the spirit of Clara, then check out Lyra. I'm sure we can get a link in the show notes. But it does mean that I'm probably not going to start any new open source projects for a while, because I don't think that would be very responsible of me. So how's that spelled? Like L-A-R-A?
Starting point is 00:32:23 L-Y-R-A. I think I found it. this is funny because you know some of us might spend years working on an open source project dumping tons of time into it hoping that someday it's going to take off or whatever and then every now and then you do something like clara where you like well i'm i intended to spend time on this, but then you throw it aside and someone else takes off and it becomes something, right? My cousin had that happen, which I don't even know if we discussed this
Starting point is 00:32:52 when we had him on the podcast, Rob, but he and I did Chai Script together, but then when he was learning Rust initially, did Rye Script just to learn Rust better. Apparently that project has taken off and it's like one of the most like started Rust projects. And he's really, all he did was like,
Starting point is 00:33:14 you know, get it going and toss it over the fence. And then a couple of years later, other people found it and picked it up and have been maintaining it for the last several years. So, wow. Yep.
Starting point is 00:33:24 Okay. Uh, yeah. We also mentioned okay uh yeah we also mentioned uh earlier that uh you know c++ on c has been going strong for the past three years do you want to tell us how the 2021 conference went yeah so there's two sides to that so in terms of execution i think it went really well it was a well-run conference uh very smooth and considering it's online uh well over a year into doing online conferences people are a little bit tired of that i think we we gave a compelling experience it that all works quite nicely what didn't work so well i think was just attendance figures in
Starting point is 00:33:58 the first place we're about i mean it was enough to run a conference uh successful as a conference but it's about like half last year's figures. And I put a part of that down to, you know, that just ongoing virtual event fatigue. Pandemic burnout, yeah. Yeah, exactly. And actually, you know, tried a few different things to try and combat that.
Starting point is 00:34:15 And I think they've ended up actually making it a little bit worse. Well, not worse, but just a... Maybe didn't have the same numbers. Like in particular, we moved the um the classes but the workshops which are usually like a bolt-on separate days we move them into the main program so when you buy a standard ticket you're buying it for two days of workshops as well and then a one-day conference program and if you look at it that way it was excellent value for money but if
Starting point is 00:34:43 you look at it as oh it's a one-day conference, you know, with these workshops bolted on, I think a lot of people looked at that and said, no, this is quite expensive. And so they gave it a miss. So maybe that's just a marketing issue. But the people that did attend really enjoyed it. They got an eye out of it. So I consider that a success.
Starting point is 00:34:59 But I'm really looking forward to being able to get back to running things in person again. So what is the situation currently like in England? Let's just say, legally, could you host a conference tomorrow in person? Yes, I believe we could. And in fact, ADC, the Audio Developers Conference, coming up in November, they are planning to run. It's a hybrid conference, but primarily in person in London. So that's one to watch.
Starting point is 00:35:29 That's the one that, what's the name of that project? Has a large presence there. Juice? Juice, right. Yes. Okay. Sorry. So yeah, that looks like that's going ahead. The trouble is where we are right now, we're in this sort of window where things have been getting better for a while with caveats. But as we come into the,
Starting point is 00:35:52 particularly the winter season, they may well go the other way. So it's very difficult to know what it's going to be like, even in November, but certainly by December. I'm really hoping that next year we're going to be in a better place. But
Starting point is 00:36:05 I said that last year. I don't want to make that mistake again. So I don't know at this point. It's so hard. I just saw a number goes yesterday and, you know, unsubstantiated, I can't qualify it or anything, but it was someone else quoting a report that they estimate 90% of Britons have either had COVID or are vaccinated. So theoretically, you're in a very good situation going into winter. We'll see what happens. Yeah. In theory and practice are the same thing, but in practice they're often not. Yeah.
Starting point is 00:36:41 I should be going to NDC Tech Town, though. I have the opposite problem to you norway should be fine but getting to uh to denver for cpp con looks like that's not going to happen yeah i just have to drive a few miles east basically yeah yeah no the us as far as i know still doesn't announced any plans to allow a tourism which they need to at least announce we need to announce our intentions. They, the government needs to announce their intentions.
Starting point is 00:37:08 If nothing else, that's getting annoying. Yeah. Um, any other plans for 2022 aside from hoping you can do C++ on C in person again? Yeah. I think just the hope of a return to something we might call normal is the
Starting point is 00:37:24 overriding thought it's very difficult to think about anything else right now uh i do hope that c++ and c can be um probably a hybrid conference so even if we even if we're fully back to normal i think we would like to take advantage of what we learned about running something online but I'm not sure I want to do yet another purely online conference. But we'll see. Well, I guess CBPCon will be demoing that hybrid approach. Yeah, and ADC, as I say, is also going to be hybrid. Right.
Starting point is 00:37:58 I want to end up the discussion for just a moment to bring you a word from our sponsor, C++ Builder. The IDE of choice to build Windows applications five times faster while writing less code. It supports you through the full development lifecycle to deliver a single source code base that you simply recompile and redeploy. Featuring an enhanced Clang-based compiler, Dinkumware STL, and packages like Boost and SDL2 in C++ Builder's Package Manager, and many more. Integrate with continuous build configurations quickly with MSBuild, CMake, and Ninja support, either as a lone developer or as part of a team. Connect natively to almost 20 databases like MariaDB, Oracle, SQL Server, Postgres, and more
Starting point is 00:38:35 with FireDAC's high-speed direct access. The key value is C++ Builder's frameworks. Powerful libraries that do more than other C++ tools. This includes the award-winning VCL framework for high performance native windows apps and the powerful fire monkey framework for cross-platform uis smart developers and agile software teams write better code faster using modern oop practices and c++ builders robust frameworks and feature-rich ide test drive the latest version at embarcadero.com. You mentioned earlier, you know, we talked about the various podcasts you're doing.
Starting point is 00:39:12 What is the plans of CppChat? You said you'll be trying to get back going with it? Yeah. As I say, there's been different constraints on our time. We just need to, I think, establishing that regular schedule is really the key. So originally, we were going to do it weekly, like like yourselves that turned out to be a bit of a strain so i said let's do let's commit to two weekly um even that seemed a bit much so i think maybe slipping two to monthly might be the uh the right balance there uh especially with no diagnostic required as well so that's what we're going to try and do i don't want to promise when we're going to start doing that because um that seems to jinx it but very soon maybe probably not before cpp gone at
Starting point is 00:39:50 this point watch this i've learned that a great motivator is to put your frequency in the title of your thing so just change it to cpp chat quarterly and then as long as you at least get one hour per quarter you know you've met your goals well we tried that because originally the the tagline was um strong opinions weekly held okay then it went to buy weekly held running out of pants yeah we haven't talked to john for a while i guess he has been pretty uh busy probably getting ready for cp con yeah yeah although i did hear and i i don't want to speak too much for john
Starting point is 00:40:30 but i don't think i mind me saying this um last year his his training was um obviously took a bit of a hit in the pandemic but this year he's he's booked up for months in advance so he's had very little time to to do anything else i i think i could say that much wow interesting yeah i heard that comment from someone else that their remote training has been fully booked out uh i've still managed to well i've turned down a lot of remote training opportunities because it's not what i'm interested in doing what about you phil are you doing anything like that right now these days i am in fact at both ndc tech town and cpp con i'm going to be doing my accelerated tdd workshop which will be two days at tech town and i think we're going to move it
Starting point is 00:41:13 to the three-day online cpp con it was originally the two-day in person and i've actually been finding that the online ones have worked fairly well for me i miss being there in person but in terms of how the content gets across i actually think think it works quite well. So I'm okay with that. I think different people have had different experiences, but I've heard quite a lot that delivering training online is actually a lot better than people have been thinking. Some people even prefer it. So I think that will continue to be a hybrid thing as well in the future. Although I did hear some comments from people saying, sure, I'm happy to give my class online or in person, but a lot of people saying, no, I do not want a hybrid classroom. Yeah, I should clarify when I say hybrid, I don't mean
Starting point is 00:41:58 a single session in both formats. I think most people agree that that just doesn't work, that the people who are online just get left behind. So no, it'd be the same material presented either online or in person, which is what I'm doing at the moment. I think that will continue. I've had a couple of scenarios where, you know, I show up for the class and then they tell me, you know, a couple years ago, like, oh, well, Bob can't actually make it into the classroom today because his wife is sick or whatever you know whatever some scenario so we're gonna dial in the conference room into this and so i'll end up with like one or maybe two students tops that are remote and it's kind of funny because the conference room is dialed in they can hear and see everything that i'm doing
Starting point is 00:42:43 and then every now and then it's like the voice of god asking a question because you forget that that person's there and so one or two students at a time that's worked all right but if it were like half of the class i don't know how you would do that yeah i think you actually you run the class and even speak differently online versus in person and you just can't do that and cater to both audiences at the same time as well right so oh give your best sell for this class before we let you go for sure yeah you just gave us the title of it but you didn't tell what people would learn if they come to your class uh you're right actually yeah i did i did promote it last time i was on but i should do it again so accelerated tdd so tdd test driven development so um even if you've tried tdd
Starting point is 00:43:34 before and thought yeah i don't know it doesn't really work or it's just extra hassle probably because you're doing it wrong so if you want to find out how to do it properly um i can i can recommend you some classes or you could come to mine where i'll have an attempt to doing that as well so the accelerated part is to try and get you through that initial hump where your productivity does go down before it comes back up and that's where people usually give up they think oh yeah it's just i'm actually running slower now now i'm trying to do tdd but it does come back up again so we can accelerate you through that you start to see that productivity earlier you're much more likely to stick to it and get all of the benefits which i'll also go into so you can do i think that no you're not going to do it now but the original version for cpp
Starting point is 00:44:18 com was going to be a one-day version or a two-day version so you can stay just for one day or two days but i don't know that really works for the online format. So I'll take that back. But maybe next year we'll do it that way again. That's right. I forgot you had done that at CBPCon 2019, right? Yeah. And 2020?
Starting point is 00:44:37 No. I don't know. It must have been 2018 or 2019. Yeah. Okay. Did it two years in person. Right. Okay.
Starting point is 00:44:44 Well, it's been great having you on the show today. Phil, it's always great talking to you. Um, where can people find you online? Anything else you, you want to plug on your way out?
Starting point is 00:44:53 So my website is level of indirection.com. And you know, what's coming next. I do have extra level of indirection.com. The redirects there as well as too many levels of indirection.com. Actually, I should check that's still working. I haven't checked it for a while. That's probably the best place to reach me,
Starting point is 00:45:14 but you'll find me around anyway on all sorts of places. cpponc.uk, cppldn.uk for the C++ London meetup uh cpp.chat when we get that back up and running again and no diagnostic required.tv so yeah it's actually hard to to avoid me these days how's the london c++ group going by the way are you doing lots of online sessions yeah we've um we slipped from doing them every month i'd say on average every two months at the moment uh it's not a deliberate choice just worked out that way but we've been remaining online um i the last meetup i did run a poll to ask whether people were ready to maybe consider a small event back in person maybe a hybrid event uh there seemed to be some interest but um
Starting point is 00:46:01 by no means universal so we're keeping keeping an eye on that and uh we may do a little hybrid event uh over the next month and see how that goes but again and i think it it may just be one then we'll be back to 30 or nine again for a few months so it's a it's a weird time at the moment that's uh an interesting point because you know here in colorado my meetup has been willing to meet in person for several months. And then and would be legal for us to do that and everything. But the companies that used to let us in to use their space aren't meeting in person at their companies yet the offices aren't open. So we don't have a space to use even if we wanted to go back to that without paying for one I don't want to pay for one
Starting point is 00:46:45 if there's any way to start doing some of these user group meetings outdoors where people might feel more comfortable of course it's difficult to do a slide presentation or something like that outdoors I guess by the sea maybe yeah okay well let's fill
Starting point is 00:47:02 like I said it's been great having you on the show again today thanks for coming been great being here thank you thanks thanks so much for listening in as we chat about c++ we'd love to hear what you think of the podcast please let us know if we're discussing the stuff you're interested in or if you have a suggestion for a topic we'd love to hear about that too you can email all your thoughts to feedback at cppcast.com we'd also appreciate if you can like cppcast on facebook and follow cppcast oncom. We'd also appreciate if you can like CppCast on Facebook and follow CppCast on Twitter. You can also follow me at RobWIrving
Starting point is 00:47:30 and Jason at Lefticus on Twitter. We'd also like to thank all our patrons who help support the show through Patreon. If you'd like to support us on Patreon, you can do so at patreon.com slash cppcast. And of course, you can find all that info and the show notes on the podcast website at cppcast. And of course, you can find all that info and the show notes on the podcast website
Starting point is 00:47:45 at cppcast.com. Theme music for this episode is provided by podcastthemes.com.

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