CppCast - CPPP

Episode Date: April 25, 2019

Rob and Jason are joined by Fred Tingaud and Joel Falcou to discuss the CPPP conference, quick-bench and more. Fred Tingaud is a Principal Software Engineer at Murex where he maintains the C++... UI and front-end APIs. He is also the creator of quick-bench.com, co-organizer of CPPP conference, co-host of Paris C++ Meetup and an organizer of #include . His interests range from code efficiency and readability to UI ergonomics. Computer Science Engineer, PhD, Associate professor at University Paris Saclay, Joël Falcou is the creator and president of C++FrUG, C++ Meetup host and an International speaker. Joel has been actively participating in the C++ international community with more than 7 years of international talks at BoostCon, C++Now, C++Russia, C++Con and Meeting-C++. He is also a member of the C++Now and CppCon Program Committee. He is a member of the French National Body of the ISO Standard Committee for C++ since 2014. News ClangJIT Enhancing C++ with Just in Time compilation C++ 17/20 Features and Fixes in VS 2019 ACCU Trip Report CppCon 2019 Call for Submissions Registration for CppCon 2019 is Open Fred Tingaud @FredTingaudDev Fred Tingaud's GitHub Joël Falcou @joel_f Joël Falcou's GitHub Links CPPP Quick C++ Benchmark Practical C++ Metaprogramming CppCon 2018: Fred Tingaud "A Little Order: Delving into the STL algorithms" CppCon 2017: Joël Falcou "I Wish I could Use C++ 1x/y/z" Sponsors Wanna Play a Detective? Find the Bug in a Function from Midnight Commander False Positives in PVS-Studio: How Deep the Rabbit Hole Goes Hosts @robwirving @lefticus

Transcript
Discussion (0)
Starting point is 00:00:00 Thank you. of programs run in C, C++, C Sharp, and Java. In this episode, we discuss Clang JIT and conference news. Then we talk to Fred Tingau and Joel Thao-Ku. Fred and Joel tell us about the C++ developers by C++ developers. I'm your host, Rob Irving, joined by my co-host, Jason Turner. Jason, how's it going today? I'm alright Rob how are you doing? Doing okay. You got anything exciting coming up soon?
Starting point is 00:01:35 Well I mean there's conference news we'll talk about that a little bit later. But the main thing that I have coming up in the moment is still just making sure that I'm ready for Core C++. Right. Coming up in May here. Feels very, very soon to me. Yeah, those conferences are coming up really soon. That's basically two weeks and I'll be in Israel. Yeah. Okay, well, let's jump right into the feedback then.
Starting point is 00:01:57 At the top of our episode, I'd like to read a piece of feedback. This week we got a tweet from Paul Drake, and he says, I heard the interview with Victor Zverevich on CppCast and decided to fuzz format lib, found an issue, and it was fixed upstream within two hours, which is pretty impressive of Victor. Pretty good response time. Yeah, and fuzzing is an amazing thing,
Starting point is 00:02:19 and I imagine a project like format lib is one of those that you could probably just leave a fuzzer running 24 hours a day, 7 days a week, like Lib C++ does for a lot of their standard algorithms and stuff. Do they run a fuzzer nonstop against it? They run fuzzers nonstop, waiting for a bug to come up. That's pretty cool. Yeah. Okay.
Starting point is 00:02:39 Well, we'd love to hear your thoughts about the show. You can always reach out to us on Facebook, Twitter, or emails at feedback at cpcast.com. And don't forget to leave us a review on iTunes or subscribe on YouTube. Joining us today is Fred Tengau and Joel Falco. Fred is a principal software engineer at Murex, where he maintains the C++ UI and front-end APIs. He's also the creator of quickbench.com, co-organizer of CPPP Conference, co-host of Paris C++ Meetup, and organizer of Include C++. His interests range from code efficiency and readability to UI ergonomics. And Joel is a computer science engineer, PhD associate professor at Université Paris-Saclay. He is the creator and president of C++ FRUG, C++ Meetup host and international speaker.
Starting point is 00:03:26 Joel has been actively participating in the C++ international community with more than seven years of international talks at BoostCon, C++ Now, C++ Russia, CppCon, and Meeting C++. He's also a member of the C++ Now and CppCon program committee. He's a member of the French national body of the ISO standard committee for C++ since 2014. Fred and Joel, welcome to the show. Hello, guys. I feel a bit underqualified. I don't have any PhDs or I don't lead any national bodies or run any conferences or anything like that.
Starting point is 00:03:57 How about you, Rob? No, I do not either. The first two is the most complex one. After that, you know, it's rather easy Right Okay, well, Fred and Joel, we got a couple of news articles to discuss And then we'll start talking more about the CPPP conference Which we just mentioned and some other products you're working on Sound good?
Starting point is 00:04:20 Yeah, sure Okay, so this first one is Clang JIT, Enhancing C++ with Just-in-Time Compilation. And this link includes a link to download a full PDF describing what they're doing with Clang JIT. I did not have time to read through the whole PDF paper, but it sounds pretty interesting what they're doing, integrating Clang in order to do just-in-time compilation of template specializations. Yes, that's what I can say. one of the very specific things that Clang has different with respect to GCC,
Starting point is 00:05:08 it was actually an instantiation of some library for compilation things. So you have libclang and clang-is-built on top of that. And there were quite a few times that people were actually wondering whenever we would actually get there, because if your compiler is actually a C++ library, why not just, you know, call it directly from your code? So that's a pretty cool advance on that. I skimmed through the paper, which looks like very interesting, but, yeah, it's really deep.
Starting point is 00:05:39 I also skimmed through the paper, but I am not a professor who is used to reading these things. Yeah, well, you know. That's a very nice chart. Very important. It's actually, for the sake of our listeners, it is an attribute
Starting point is 00:05:57 that you can apply to any function that says, this is a function that I want compiled at runtime. And then whatever type, whatever values you pass to it become a template value parameter, right? Effectively? Yeah, sort of, yes. Sort of, yes.
Starting point is 00:06:15 And it does it at runtime. It seems like it's, from my perspective, difficult to wrap my mind around exactly where and when and how I would use this. But on the other hand, I'm like, maybe something like ChaiScript, like my scripting engine, would now become trivial to implement in a project like this.
Starting point is 00:06:32 Could also be a way to maybe get rid of, you know, actual DLL or SO-based plugins, so you can just shove stuff into a function and you put it out when you need it instead of having to dynamically load some things which may be a way to actually get out of this you
Starting point is 00:06:51 know there's a lot of talks about getting you know add-on or plugin standardized and it never get anywhere so that could be an actual you know other way to do it so you can you know store your ready-to-be-compiled function somewhere and, you know, store your ready to be compiled function somewhere and just, you know, pick them around when you need them and let the things do its works. I think the downside, though, is you are tying yourself 100% to Clang for your compiler. Could be worse. Could be worse. I'm also very curious, because I didn't see this, but I also didn't look
Starting point is 00:07:22 very closely at how big the binary is when you're done yeah that's a question right because you're including the compiler in your application basically right that's how i understand it yeah yeah i'm not sure clang is that big i mean if you have a hello world it's huge but uh i don't think it's that big the lmvm suit is huge but clang itself I'm not sure. I guess then there's the other question of how much of the standard library needs... No, no, I guess it wouldn't need standard library, because all that would be resolved at compile time.
Starting point is 00:07:54 Yeah. Huh. Well, one of you should go out and experiment with this and report back to us how well it worked. Yeah, if it's metaprogramming, it should work. Yes. We nominate him. As a tribute.
Starting point is 00:08:08 Okay, next thing we have is a post on the Visual C++ blog. This one is authored by STL, who we've had on the show before. And, you know, you think they might take a little break after releasing Visual Studio 2019, but they're already talking about what's going to be in update 16.1. And this post is STL going over all of the C++ 17 and 20 features and fixes in Visual Studio 2019.
Starting point is 00:08:37 And there's a lot here. Yeah. And so to be clear, I think this is 16.0. This is the already released fixes, right? Yeah, I think there was another post talking about something in 16.1. Actually, I think the other post.0. This is the already released fixes, right? Yeah, I think there was another post talking about something in 16.1. Actually, I think the other post was referencing that they're including Clang in 16.1.
Starting point is 00:08:52 Yes, right. So if you want to compile Clang from Visual Studio, they're making that possible, which is great. Yeah, out of the box now, yeah. Right, right. But is there anything specific in this post that anyone wanted to call out with the 17 and 20 features and fixes? Well, it's a massive list. I think that the main thing that we can get out of that is, I mean, we clearly see for a couple of years now, maybe more than that, I mean, there is a real, you know, step up of the quality of the implementation of Visual Studio and the library on Windows. I think it's a very, you know, a huge amount of work from STL and his team and all the guys involved into these compilers. So it's, I mean, I myself went from, you know, using Visual Studio on Windows when I was
Starting point is 00:09:48 forced to because I needed to fix some bug on Windows to actually be able to, you know, like do my day-to-day development directly with it and without, you know, missing much. And that's something which is really really i mean it's a huge improvement uh especially when you try to to try to be you know uh close to the uh the new year standard and stuff and stuff like this so it's it's incredible uh the amount of quality improvement they got in since i don't know like last version or the version before. Yeah, 2015 was the third version where you could really see that it was improving very fast. Yeah, I agree
Starting point is 00:10:30 with that. Yeah, now they're already talking about all these C++20 features that they've implemented before it's officially standardized. It's pretty great. There is one fix in here that just caught my eye and it made me laugh. It says the standard Boyer-Moore search, the standard Boyer-Moore
Starting point is 00:10:45 searcher and standard Boyer-Moore horse bull searchers, copy constructors and copy assignment operators now actually copy things. So I guess you would have... So there must have been shared state or something if you accidentally copied the searcher object? I don't know. I don't know. I want to know.
Starting point is 00:11:08 I want to go back to an older version and try it and see what it did. I think you could probably do that using GCC Compiler Explorer. I don't remember which version they have. Oh, yeah. Yeah, yeah, probably. Could do that. Depending on how much of those searchers are implemented in the header. One more thing I wanted to call out is
Starting point is 00:11:31 in his opening paragraph, he mentions that they implemented more of Karakhan's header, which he refers to as C++17's final boss. I've not heard it referred to that way before. Does anyone really know what he's talking about with it being the final
Starting point is 00:11:48 boss? I don't. I think it's one of those headers for converting a character to something else, which may imply taking care of stupid formats or encoding and stuff like this.
Starting point is 00:12:03 I think Sharkonomb also has this, you know, you take a string with a number inside which is in hexadecimal or whatever and you use a value, and I don't even want to know how many corner cases of things that can go wrong in this situation
Starting point is 00:12:19 that they have to fix, and maybe also fix in a way it still goes fast enough. Yeah, right. I mean, character conversions is clearly the place you don't really want to be. Anyway, I mean, all the people that work, you know, like,
Starting point is 00:12:35 on Unicode and things like this, I mean, I, you know, we should collectively, you know, send them candies or something, because, I mean, it's oh god you don't really want to do this yeah you have that and it yeah definitely I'm very happy people
Starting point is 00:12:52 handle it for me yeah next thing we have is a trip report from ACCU and I think this is written by a Rust developer but he talks about how ACCU is a very C++ focused conference, which he enjoyed even as a Rust developer. And he highlighted a couple talks,
Starting point is 00:13:13 one from Herb Sutter on C++ error handling, which I think is all about his proposal for changing the way we can do exceptions. Another one about C++ ranges and functional programming with the author of that functional programming C++ book that I would like to get on the show sometime. Yes. Yeah. Anything else you guys wanted to call out with this? Anyone make it to ACCU?
Starting point is 00:13:37 Yeah, I like the fact that we have people from other languages coming to C++ conferences and enjoying it. Yeah. Because, yeah, that can be very interesting to have other languages' ideas coming into C++ and making us think out of the box. Yeah, definitely. Yeah.
Starting point is 00:13:55 I did like the... There was a Rust talk here that he mentions, Monotron. And if you check out that project, it made me aware of a piece of hardware that I did not know existed, which is a ARM Cortex-M4-based tiny Texas Instrument development kit that's got a VGA screen on it. And this is someone writing his own operating system and such in Rust for that development kit. Oh, God. Yeah.
Starting point is 00:14:24 So I think that's tons of fun, personally. So, our listeners might like that. Yeah. Yeah, it's probably interesting, yeah. I want to buy one of these kits. I already have a stack of Raspberry Pis and stuff that I don't use, so I stopped there.
Starting point is 00:14:44 You set them up as servers for QuickBench. That's what you're supposed to do with them. Yeah, that's an idea, yeah. Okay, and then the last thing we have is some more conference news from CppCon. First of all, the 2019 call for submissions is out, and the deadline is only under a month away, actually. May 20th is the deadline for submissions is out, and the deadline is under a month away, actually. May 20th is the deadline for submissions. May 20th, yeah.
Starting point is 00:15:10 It's rather short this year, yeah. Yeah. Yes. The call for submissions, I think, was sent out a little bit later than usual. Anyway, everybody is going to send a CFP on the last day, so it could just be 24 hours hours and it would be the same. Well, I mean, you all are running a conference now and we'll talk about that more in a minute,
Starting point is 00:15:30 but my understanding is the 80-20 rule as it applies to conferences is that 80% of the submissions come in 20 minutes after the deadline. We should say, be kind to your conference submission reviewers and try to get yours in sooner than that
Starting point is 00:15:46 yeah I was surprised I sent one like one week after they opened and it was only it was less than 10 CFPs there in one week I would expect a lot more I haven't sent mine in yet
Starting point is 00:16:02 neither do I yeah well you know yeah well you know you have this you have this you know vision of things where you think people are just there you know waiting to pounce on the uh on the submission forms except nobody knows already what they want to talk about anyway so no i usually know what i want to talk about the thing is uh i'm thinking, how should I write it? Should I make something better or anything? But now you can always edit them.
Starting point is 00:16:31 So I usually send something the first day, thinking, okay, I'm going to improve it later if I need to. I never improve it, but at least I sent it early. So since both of you also speak regularly at conferences, I personally keep a folder of conference talk ideas. So when the next call for submissions comes up, I'm like, oh, I'll pick that one. You do that as well?
Starting point is 00:16:53 Yes, I'm self-taught. And we still wait until the last minute to submit it. Of course. And now everybody knows our secrets now. Well, that might help people who say, I never have any idea what to talk about.
Starting point is 00:17:11 The idea is if you come up with any idea over the next 12 months, write it down. It's not like we're all just sitting here and we immediately come up with great ideas for talks or something. Yeah, and go to meetups, because we're organizing the conference, but we are also organizing meetups. And go to meetups and do presentations.
Starting point is 00:17:30 That's a very, very good way to test it, see what sticks or not and what to improve. I usually prepare my talks like one year earlier by going to a meetup and talking. Oh, wow. I don't do it that far. I have this idea. I write usually Oh, wow. I don't do that.
Starting point is 00:17:45 I have this idea. I write usually a lightning talk. I present it in five minutes. And if people like it, I try to do something longer. See, okay. So I gave my first ever C++ lightning talk at my own meetup a few months ago.
Starting point is 00:18:00 And I did it with the intention of, if this goes well, maybe I'll make this into a full conference talk and it did go well but now i'm like my thought now is well if i was able to present it in five minutes then what's the point of an hour conference talk that's the problem i'm having but says if you do that regularly like maybe you can like give our listeners some ideas there or something. Well, the first time I did it was with my talk about partial sort. And I began with just a lightning talk about grid bench. And the last slide of the five-minute presentation,
Starting point is 00:18:36 it was like 10-minute presentation, the last slide was a result I didn't expect. So I would end up on this. Oh, okay. Yeah, I would end up on this result and everybody't expect. So I would end up on this. Oh, okay. Yeah, I would end up on this result. And everybody was surprised. I had to stop there because I only had 10 minutes and no idea why I had this result. And next time I just search into it and made a full time presentation about why do we have this word result, which is that partial sort is extremely slow if
Starting point is 00:19:07 you try to sort like half a container is partial short one of the partial sort one of the ones that's allowed to allocate um no it doesn't it does no it doesn't no no stable sort might yeah but uh actually stable sort is very fast. That's another result I had. It's sometimes faster than quick sort. I would like to look into that too. That's weird. I already have two talks ideas, and I know that sending more than two talks ideas at CppCon can end up with
Starting point is 00:19:40 you having four different talks. Don't do that! I definitely don't want to have talks. Don't do that. I definitely don't want to have that. Don't do that. Okay. Okay. I, I, this is now I need to, to, to give a disclaimer here, right? So yes, you can submit five or six talks. There is a possibility that they will all get accepted. That has happened before, regardless of what the conference organizers tell you, you are allowed to say, I know that you accepted six of my talks, but I only have time to give two of them.
Starting point is 00:20:14 You are allowed to tell them this, if they accept all six, just so the listeners and everyone knows. I know it's easy to feel like, uh-oh, now I have to give six talks. Yeah, yeah. Yeah, been there, done in. I know it's easy to feel like, uh-oh, now I have to give six talks. Yeah, yeah. Yeah, I've been there, done that. Yeah.
Starting point is 00:20:30 Oh, yes. Like, my third year at BoothCon back in the day, submitted five talks, get fives in. I mean, yeah, and Artboard Chaser was even, you know, like, you know, when you're down, you know, you can just slide down, but, you know, sometimes people come up and they just, you know, kick you you know, when you're down, you know, you can just slide down, but, you know, sometimes people come up and they just, you know, kick you in the face while you're down. And so, ArtMood started the conference by reminding everybody it's still BoostCon, even
Starting point is 00:20:55 if Joel was giving a talk every day. Thanks, ArtMood, you know and after that yeah I was submitting like max two of them you know just to have something
Starting point is 00:21:10 if it's one of those that didn't stick but no more than two I can give one touch a day and then I'm not able to do anything else
Starting point is 00:21:18 during the whole day oh oh no yeah it wipes you out it's draining Rob wants to move on with the interview but before we move no I'm fine Oh, no, yeah. It wipes you out, yeah. It's draining. Rob wants to move on with the interview, but before we move past... No, no, it's fine.
Starting point is 00:21:31 Before we move past the conferences, registration is open. Yes, so if you're not looking to submit a talk, registration is open with early bird pricing. I'm not sure if they say how long the early bird pricing is available, but get it while it's hot, I guess. If you do submit a talk, I do recommend waiting to register. Hopefully they will tell you before early bird registration expires, but those dates should be double-checked. Keep your early bird registration numbers. Even if you have the results very late,
Starting point is 00:22:02 you can still buy your ticket with early bird reductions. Yes. If you submit it. Yeah. Oh, okay. That might be new for CppCot this year, is it? Last year, too. Oh, okay.
Starting point is 00:22:13 It's recent, but yeah, it's definitely going on for a bunch of years now. Maybe one or two years. I don't remember exactly. And the other thing is, if I'm'm not mistaken we are moving this year we're moving to my backyard oh god so we are moving to Colorado it's that way
Starting point is 00:22:33 that's where the conference center is going to be so that's actually cool because I think we just exploded the amount of people we can shove into the Seattle venue. Yes. Another thing too is
Starting point is 00:22:51 I think that we probably have posters this year too. That's a very good way to go to CppCon and if you don't want to give your first talk, having a poster is way easier to do than giving a talk. That's what you did
Starting point is 00:23:07 your first CBPCon, right? Actually, the second one. The first one was paid by my company. That's a very good way to talk with people and get the first foot in. It's easier than giving a talk. Sounds like a fun one. There's also 20 classes
Starting point is 00:23:23 being offered this year, pre- and post-conferences classes. And I will be doing a post-conference class myself on Constexpr. How many is that compared to last year? Is this more classes? Do they keep growing this? I don't know. I think so, yeah. It seems bigger.
Starting point is 00:23:41 Yeah, 20 is definitely bigger, yeah. Somewhere around there. It's a lot. Yeah, 20 is definitely bigger, yeah. Yeah. Somewhere around there. It's a lot. Yeah. Okay. Well, why don't we start off by just kind of catching up with you, Joel, since you were back on CppCast like four years ago, like during our first year?
Starting point is 00:23:58 Already? Yeah. So what have you been up to since we had you on the first time? Oh, well, you know, the good usual things. You know, I'm still trying to find new ways to make compilers cry. That's still on my, you know, to-do list. I spent a bunch of time working on my startup. And then I went back to actually doing, you know, development recently. And I'm trying to catch up with all the new fancy things in 17 and 20 that I basically just, you know, saw from afar.
Starting point is 00:24:34 And, yeah, I will probably submit a talk about one of our new thingy at CppCon about more, you know, like more pressure on the compilers and try to see how we can actually change the way we are handling some of these metaprogramming things. I followed a lot what Luis Dion and all the new guys did on this front, which is actually quite impressive. Anna's talk too,
Starting point is 00:25:04 which I was basically bowling at the slide when I was watching them on YouTube. I was like, really we can do that? Where have I been last year? Something like this. We are in a place now in a time where we can actually do a lot of things
Starting point is 00:25:21 using this new way of thinking about how the compiler actually works and trying to make it work the way you want. I mean, now I'm on this position that actually what we have now is we have a language and
Starting point is 00:25:37 we can script the compiler directly from the language. That's how I see the things about constexpr things and metaprogramming. You basically script the compiler to do what you want to do. And the cool thing is that it looks like almost normal
Starting point is 00:25:54 code now, which is a great improvement from the thing we did before. So, yeah, I've been still working on that. I have a bunch of libraries in the oven right now that will probably be released during the following months. I've been playing around with
Starting point is 00:26:12 constexpr a lot because for a while I was thinking it was definitely the one feature that will make all the macro based things die except not. Most of the macro-based things.
Starting point is 00:26:27 Most of them. So I played a lot with all the... I mean, I had this idea of having a constexpr-based... What's the name for that already? What's it? Boost pre-def thing? Oh, boost reprocessor? No, no, pre-def. The one that says,
Starting point is 00:26:44 if you are compiling on this or if you are compiling for Windows, things like that, you know, those macros for OS and compilers. And I was pretty sure I could actually have something that you can actually write, you know, like, if constexpr my compiler equal equal
Starting point is 00:26:59 GCCs and do something. And then I got by the fact that if constexpr doesn't work the way you think it works, which means that it doesn't remove the token. Yeah, yeah. It still has to be compilable correct code, yes.
Starting point is 00:27:15 That's a bad idea, anyway. I was playing around with these things. I'm trying to catch up on modules because that's also a thing I really want to push forward. So yeah, I've been playing around a lot. And I will probably, yeah, I have a bunch of things going out later this year. Still around that.
Starting point is 00:27:36 And I'm trying to, you know, consume all those new information about how we should be writing, you know, C++17 and forward scores, because I feel like, again, like in 2012, when I decided that everything I was writing needed to move to C++11, but, you know, sprinkling, dot, dot, dot, and auto was not enough. You had to think about rewriting your crap, because if not, you don't gain anything. So I'm back at this square trying to see, oh, I can actually C++17 all the things.
Starting point is 00:28:09 All right. Fucking tank. Yeah. Oh, yeah. And actually, we are working on the conference. I almost forgot. Well, before we talk about the conference, Fred, what projects are you working on?
Starting point is 00:28:23 Well, I have a ton of projects in my head. But it turns out organizing the conference takes a lot of time. So for the moment, most of the projects stay in my head. Still in my day job, what I do that I find very exciting is using Client ID tools and building refactoring tools with that. Like I work with this massive code line that was started 30 years ago. Most of it might be still 15 years old.
Starting point is 00:28:57 So the API is pretty old and you cannot change anything. You try to change something and you realize it's called 40,000 times. And so, yeah, this dead parameter is going to stay because you cannot remove it in 40,000 calls. And now I'm using Client ID and building tools that are able to refactor it.
Starting point is 00:29:18 And that's fantastic. Wow. I have a new job. Something that wasn't possible a few years ago. And now it's completely possible. So I hope I'll be able job, something that wasn't possible a few years ago. And now it's completely possible. So I hope I'll be able to talk about that in incoming conferences. And somebody is going to talk about it at CPPP, even if it's not me. Okay.
Starting point is 00:29:37 I was just thinking, yeah, you have to give a talk on that from the newbie beginner standpoint. How do I leverage Clang Tidy to do my refactorings for me? I've seen several talks on libclang and Clang Tidy and stuff, and I feel like it usually still feels unapproachable. I want the absolute beginner's guide to how to do this. Well, you should definitely come to CPPP then, because Jeremy DeMull, who is the person who introduced me to Client ID is going to do exactly that
Starting point is 00:30:07 a live coding starting from getting the repository to having the first rule and doing everything live and hopefully everything is going to work I know he is able to do it he did way more impressive things in our company
Starting point is 00:30:24 so I completely trust him with that. Completely trust him. That sounds awesome, though. Just giving you a hard time, but yeah. I wanted to interrupt the discussion for just a moment to bring you a word from our sponsors.
Starting point is 00:30:41 PVS Studio performs static code analysis and issues warnings for fragments of code that are likely to contain errors and potential vulnerabilities. The tool supports the C, C++, C Sharp, and Java programming languages. At the moment, PVS Studio has 422 diagnostics for C and C++,
Starting point is 00:30:58 which enable you to detect dereferencing of null pointers, array bound violations, typos, dead code, resource leaks, and other kinds of errors. PVS Studio supports working with Visual C++, GCC, client compilers, as well as a number of compilers for embedded systems. The analyzer works in the Windows, Linux, and macOS environments. Follow the links in the description to two new posts from the PVS Studio team.
Starting point is 00:31:21 The first one suggests checking your skills to find errors. For the second one, you can read about a non-obvious case of an analyzer false positive. Okay, well, since you mentioned it, I think we mentioned it briefly in the news last week, but you guys are working on your own conference in Paris, is that right?
Starting point is 00:31:40 Yep. You want to tell us a little bit about what motivated you to start a new conference? One of the things that motivated us is that we organized the meetups and about each meetup we had people come in to us and say but when is the first conference in Paris
Starting point is 00:31:56 about C++? I would say yeah, it's a lot of work I'm not sure I'm up to do it and at some point we just snapped and did it. Yeah, well. If not, somebody else would have done it and would be very
Starting point is 00:32:11 sad about the state of affairs. Now, it's something we have in mind for quite a few years now. Yeah, I mean, I think when Mathieu was still there, we were already thinking about it. Yeah, Mathieu Roper. And Mathieu Roper, Yeah. Um, and,
Starting point is 00:32:26 uh, yeah. Yes. That's the Parisian in Stockholm as, as he is. Yeah. Yeah. Exactly.
Starting point is 00:32:33 Uh, the meetup at some point. Yeah. Right. And so, uh, it was all, all the,
Starting point is 00:32:39 all the time. It was like, we should do it next year, you know, and every year it was next year. And, uh, yeah, this year we were like, okay, we have to do it now. Even if it's, you know, I mean, a small event, which it would be and see if it, you know,
Starting point is 00:32:55 if people actually buy it on it. And when we have that, we can start having something recurring. And so what we did was trying to see how we can get that running without having to leverage a huge amount of additional work, like, you know, call for paper and so on and so on. And one of Fred's idea was to actually say, hey, we can ask all these, you know, all those cool people we know from all the other conference,
Starting point is 00:33:24 if they can make the ultimate sacrifice to spend a weekend in Paris in June, this very complicated task, and help us having something to present to our meetup members and I hope a lot more bunch of people. So we basically co-ask people to come in Paris, you know, for free giving a talk, and they all say yes, so done. So have you actually said what day it is yet? Yes, it's...
Starting point is 00:33:53 What day is it? June 15th? Yeah. Okay. And the website is cppp.fr, and the three Ps are for produce and pick forward. It's because it's French, and you always drop the last letter off anyhow, right? Yeah, exactly.
Starting point is 00:34:10 So we put a lot of P, you know? The last one is silent. Sorry, sorry, sorry. That's almost that. I saw that on Twitter and I just loved it. Yeah, it was funny. So yeah, the idea is we want something with different approaches.
Starting point is 00:34:31 Progress is for people who start C++. They might be students or they might be people programming with another language already and they want to start using C++ better. So we have progress for them. Produce is for people who have actual production issues like you have huge legacy code, nothing is tested, your code is 30 years old, and you go to CppCon and you have fantastic presentation about C++20 and how to templatize and do template metaprogramming, but you don't
Starting point is 00:35:07 have even tests or anything. And how can you join your day-to-day job and what you hear in conferences, which is very, very nice, but not always applicable to your job. So that's produce, which is way more. Yeah, we know you have a lot of code. We know you don't have tests or you have very little tests. Here is what you could do today that you can take from the conference. And the last is push forward, which is, yeah,
Starting point is 00:35:37 is a very fancy stuff you can do with C++20 and template metaprogramming, which we all love to see. So am I reading your conference website right that the first P is a French track? Yes. Yes. Yeah, I forgot to mention that. Yeah.
Starting point is 00:35:53 Okay. The idea is it's for students, and we might have a lot of job seekers and people like that. They're probably not flying from the US or something. So we're probably going to have a lot more French people on this track. And that's also the track where we probably will have people who are not fluent in English. They can speak English, but they're probably not fluent.
Starting point is 00:36:19 So we are trying this in French, see how it goes, and see if people like it or not, and next year we'll think about it again, see if we want to move everything to English. Yeah. Or everything to French. No, I'm joking. Yeah, it was a bit controversial at some point,
Starting point is 00:36:41 but I think it's something we basically have to try and see if it sticks. And I think if people want to have a look at the talk later, I think the YouTube closed caption would be enough to get the gist of it.
Starting point is 00:37:00 And I think it should be okay. We will see. It's a topic that continuously fascinates me because I've watched, like, Meeting C++ used to have a German track. Now it doesn't. They eventually dropped it. Yeah. Yeah.
Starting point is 00:37:12 The core C++ started with the plan of having a Hebrew talk, Hebrew track, and they ended up reducing that or drastically eliminating it or drastically reducing it. And as I do training... I think they still have a few Hebrew talks. Yeah, there's a couple of things that are in Hebrew on it now still, but it was meant to be like a full track of it, I think. And then I just...
Starting point is 00:37:37 Sorry. No, no, go ahead. Go ahead, please. On the other end of the spectrum, you have C++. Right. Which has a couple of English talks and the have C++ Russia. Right. Which has a couple of English talks and the rest is in Russian. Yes. I mean, I went there and I was like, yeah, you know, like, it's just
Starting point is 00:37:52 a C++ conference, but in Russia. And they, I was, I think it was Gore that was there. And we ended up finding out we were the only two English talk of the old things. And we were like, oh crap. I think now they have a lot more English talks.
Starting point is 00:38:09 Yeah, yeah. If you intend to go this year, you'll probably find enough talks in English to find it interesting. That's fascinating to me. Although I guess in Paris, even if you're helping to attract people even from the rest of Europe, having English talks is the common language of programming effectively, right? And a lot of fantastic speakers are English speaking.
Starting point is 00:38:32 Or not French speakers at least. Not French, right, yes. So how many speakers are you having for the conference? It's just a one day conference, right? We have 12 speakers. And you said split up into three tracks. Yeah, exactly.
Starting point is 00:38:46 So there is this first keynote from Ted Gregory, where everybody will be, and then we have three tracks. And that should be 13 slots, but one will be a workshop. So it's not exactly a speaker, so we have 12 speakers. The plan was to start small, but having an interesting lineup, and we will see how it goes, actually. It's both simultaneously small
Starting point is 00:39:11 and big to go for three tracks, but only a one-day conference. That's ambitious and small at the same time. We wanted something that would give a good idea of what we want in the incoming years. So this idea of having different approaches.
Starting point is 00:39:34 So we needed the three tracks to really give an idea of what we wanted to do and make sure it works. So how many attendees are you hoping for? About 200, perhaps more. Okay. That would definitely be a good start for the first conference,
Starting point is 00:39:51 for sure. We'll see if we make it. And the tickets are currently on sale, I don't think we've mentioned that. They are on sale and there still are
Starting point is 00:39:59 a few early bird tickets. So, hurry up. You might have an early bird ticket. Hurry up. You should actually have bought all of them right now. Between we record that
Starting point is 00:40:08 and it goes live, so we better sell everything. The time slot between when we announced and the beginning of the conference was pretty short, so the idea for the early bird is we have a limited number of early bird tickets.
Starting point is 00:40:24 It's not a date where we switch to full price. We just have 100 people come in with early birds and then everybody else has to pay for full price. So just for the record, I cannot make it on that day, but Rob, I don't know if he's going to make it. My schedule wouldn't allow it.
Starting point is 00:40:40 I'm not sure what my summer plans are like. Maybe I'll talk to the wife about it. Yeah, it's Paris. June 15th in Paris. Yeah, June in Paris does sound nice. Just that, you know, like, just mention that. And the next day is the same expense. That's all we got, probably.
Starting point is 00:40:54 I think that's all we got off of our speaker, anyway. You know, Paris, you know, in France, not in the Mississippi or wherever, you know, like the actual one. Yeah. Well, and it is actually interesting that you planned it for a nice time of year, because, you know, most C++ conferences and events and things happen at the
Starting point is 00:41:16 bad times of year, because it's the cheaper time to be there. Yes. That's easy. There is no cheap time in Paris, ever. Oh, okay. Makes's easy. There is no cheap time in Paris, ever. Oh, okay. Makes it simple. Yeah, no, I was saying the food, too.
Starting point is 00:41:32 Don't forget the food. The food should be very good. And the wine, we'll say, Mathieu, you know that. Yes, there will probably be no wine at CPPP's lunch. I'm sorry about that. What? Isn't that against the law or something?
Starting point is 00:41:50 Just to bring your own wine affair, maybe? Outside to a fountain or something, you know? Okay. Slightly more serious, though. I'm curious about the genesis of this, because you said people are coming to your meetup every month and saying, when are we going to have a conference in Paris? And you said, we'll do a conference. But I'm curious how many people you had
Starting point is 00:42:11 coming to your meetup in the first place. How big of a core group did you start with? It started very small. I think the very, very first meetup, it was, like, what, three years ago now? Four years ago? I don't really remember. A long time ago.
Starting point is 00:42:28 A long time ago. You know? We got like, I don't know, 30, 35, maybe 40 people. For your first meetup? Okay. Yeah, that was a small one. I mean, on the... It was very small. That's bigger
Starting point is 00:42:43 than my meetup, don't tell anyone. Okay. I won't. And then we, I think it was when we moved to, we got a new place before Murex, which was MobySkills.
Starting point is 00:42:58 They had a nice setup, it was right in the middle of Paris, and we started attracting more people. I think we get up to 50-60 regular every month and now we are at 80 something like that
Starting point is 00:43:13 so we are usually 80 but it depends on the place because the limit is not the limit is the size of the room so we usually have an 80 people room so we just send the invitation and everything is complete in 48 hours. But we could have a few more people. Yeah.
Starting point is 00:43:33 Okay. And we have actually very few no-show actually. That really depends on the distance to the center of Paris. If you are in the center of Paris, you are full and everybody comes. If you are very far center of Paris, you are cool and everybody comes. If you are very far, it can be harder. And so... Yeah, go ahead. Well, it's regular.
Starting point is 00:43:53 I mean, that's where we wanted to be. We wanted to have something where we, you know, we have a bunch of people coming in. We still have a lot of new people every time. We used to make some kind of roll call, you know, who never came and something like this. And we always have a bunch of new guys or
Starting point is 00:44:11 girls. So that's actually pretty cool. And we have like, I think we are approaching the 1,100 members on the Meetup website. So that's good. Now the one thing we really wanted to do at some point, people started, but I don't know if it gets very far, we really wanted to have something which is, and that's why there
Starting point is 00:44:35 is no Paris in the name of the meetup, we wanted to be something that people can take and go elsewhere in France and make, I don't know, their Bordeaux meetup or their Marseille meetup and whatever. Some people started a thing like that, but I don't know if it goes that much well. But it could be cool if we could have more, let's say, localized meetups in other big cities in France. Yeah, outside of France, in French-speaking
Starting point is 00:45:06 countries. That would be even cooler. Also, yes. There's other French-speaking countries? Yes. More than you think. I think French is like the fourth most common language in the world, something like that. Yeah, probably
Starting point is 00:45:22 in the top ten, but I don't know. It's very high, yeah. Yeah, yeah, yeah. I'm guessing it's not English. No, it's probably Chinese or something. Mandarin or something, yeah. Yeah, Mandarin, probably. So yeah, we...
Starting point is 00:45:36 I think, Fred, you're okay with that. I think we are quite happy with what we have right now. We have this strong community that comes every month or every time we have right now. We have this strong community that comes every month or every time we have something. It's very lively.
Starting point is 00:45:53 We still have to fight for finding speakers sometimes, but not as we did before. Yeah, we have. So it's going strong. We have nice lightning talks. This year, we don't have time
Starting point is 00:46:06 to have lightning talks during the conference but the meetup lightning talks are interesting because there is this anarchic way of working where somebody is going to come and do a presentation of 10 minutes about their tool and then they are going to sit and somebody is going to
Starting point is 00:46:22 stand and say oh I was on godbolt.org while you were speaking and here is what your cause is generating and here is why that's very very interesting i think yeah i i would really love if we could manage to do something like that uh in a conference i heard accu's lightning talks are already quite a bit easy going where you can just say you're going to do a talk the day you're doing it and stuff like that, which is interesting. I hope in the future we'll be able to do something like that where anybody can come and talk and have nothing prepared but just improvise. advice. And it also helps in what you were saying just before, by having these spontaneous people just standing up,
Starting point is 00:47:09 speaking about, I don't know, I should say, something they just did five minutes ago. It also helps people to get confidence, say, I maybe have five minutes of interesting content, so I can do it. And it helps a lot, actually. It helps a lot.
Starting point is 00:47:25 So you've said that the conference has taken a lot of your time to organize, which is easy to believe, but have you been surprised by how much time it took? And if so, for other people considering making their own local conference, do you have any advice for them? Prepare in advance and call the sponsors
Starting point is 00:47:45 in advance like really in advance sometimes you call them and you say we have something in two months are you kidding me? we prepare that one year in advance a year in advance? ok
Starting point is 00:47:59 yeah and don't actually hesitate to ask the famous people you really want to have because you may be surprised of who actually want to, may be willing to come, even at your very local small things. We are very very lucky this year because we have a lot of people we really want to have that basically said yes on the go because they were very interesting to come and that was actually a very nice you know interaction with them which is rather different than just you know talking to them when they are actually making a talk so you you you should not you know restrict yourself to say okay they won't come because we are too small or too far
Starting point is 00:48:46 away or whatever. Just ask. You may be surprised. Yeah, I also had a message about that. Since we announced the lineup, we've had a lot of people telling us, oh, this fantastic speaker is very sad because you never called them. And this other speaker is very sad because you never called them.
Starting point is 00:49:02 And like a lot of people that I really admire and are very sad I you never called them. And like a lot of people that I really admire and are very sad I didn't call them. So if we didn't call you, you might be somebody we really look up to who's a fantastic speaker.
Starting point is 00:49:18 Please don't take it personally. We have... It's a nice problem to have. The cool thing is that we are our CPPP 2020 lineup almost done. Yeah, just for the record, we didn't call them in 2019. Yeah.
Starting point is 00:49:34 Just for the record, I don't think you called me. Yes. I can tell you now what I was talking about. Yeah, that's a very good example. I mean, yeah, the shortlist was actually hard writing to do actually, because we had a lot of names that people said, oh yeah, we should have, you know, we should have her, we should have him, or whatever, and... Except we have this much slots, we had to make a choice. And what actually made the choice was actually this track,
Starting point is 00:50:10 these track structures about these three teams. And we were like, okay, we have to focus on the team and see what's coming up. And from there, we had to select people. And actually what we did that we actually ordered a bunch of speakers on some track by actually going okay we will ask this guy just in case maybe he will come but if not we have a lot of great people afterwards and most of the great people say oh oh yeah, I will come. So we never went that far down on the waiting list. So it was
Starting point is 00:50:48 actually, I mean, it was a very nice experience in terms of community to have all these people, you know, willing to share their expertise even in, you know, I mean, we are still a very small and proven conference,
Starting point is 00:51:03 including the fact that we didn't run already. So it's very, you know, a vote of confidence. And we are very, very grateful to all our speakers for that. Yeah, there's a good chance, I think, ultimately, I'll be speaking at probably four conferences this year, although I still have a couple of decisions to make. And I'll say from the speaker perspective, three of those are because they're locations
Starting point is 00:51:26 that I want to go to. We all did that once, you know. It's a classical thing. And the location is very important. We actually played on that, I think. Oh, I'm sure you did. And so that's definitely something for anyone else who's considering a conference
Starting point is 00:51:45 is the same kind of thing. I mean, there's lots of places that people haven't been yet and lots of people who want to go to new places that they haven't been yet, basically. Yeah, and we're lucky because Paris is very well known, but I'm sure there are some very nice places that are not that well
Starting point is 00:52:02 known. If you're creating your own conference, send pictures and think that it makes a difference for the speaker. That's a good idea. That's a very good point. Like, sell the location, sell the venue, basically. Yeah.
Starting point is 00:52:14 Okay. Well, aside from the conference, is there anything else you guys wanted to plug or talk about briefly before we let you go? I'm sorry to people following QuickBench. I haven't updated for a few months. I have
Starting point is 00:52:31 very good ideas in my head I'm going to do someday. Just after the conference, I'm teaching vacations. I think I'm going to work on the website. So perhaps you'll see. Well, for listeners who aren't familiar with QuickBench, do you want to describe it real quick? Yes. So it's a web tool. You go on this website you type your code you press run and it benchmarks it and it's a good way to compare quickly two functions
Starting point is 00:52:56 for example which one is faster than the other um yeah it looks a bit like dot bolt.org uh because i looked at it before starting QuickBench. Right. Yeah, the idea is to have something very simple. You come, you type your code, you press run it, you're done, you have your result. Very cool. I have some very, very nice patrons
Starting point is 00:53:15 who give me money to pay for AWS. I should do a few updates too, so that they don't think. I'm forgetting them. Okay, Joel, anything else you wanted to plug? Well, not that much actually. Yeah, just come to see PPPP.
Starting point is 00:53:36 Oh, come on. I think you have one too much. Yeah, okay. Yeah, and actually, well well it's not a plug but yeah um i will encourage people to go to or build a meetup if they if they have none uh around uh when we started it was really you know like it wasn't a whim you know someone say oh you just you know let's put something on meetup and see who is coming.
Starting point is 00:54:05 And it has been a tremendous experience, both in terms of, you know, meeting people and having actually great talks from, you know, basically nowhere. So, if you have a meetup right next to you, just jump up in and see how it
Starting point is 00:54:21 goes. And if you don't, just, I mean, just make one and see who's coming and you will be surprised to find that there is a lot of people actually wanting to go to such venue and sharing stuff with other people. Paris C++ Meetup had quite
Starting point is 00:54:38 a few very good speakers now start there. Like Mathieu Roper started there. Jonathan Boccarat started there. Like Mathieu Roper started there. Jonathan Boccarat started there. It's an interesting core group of people in Paris. Very much. It's been great having you both on the show
Starting point is 00:54:56 today. I definitely encourage listeners to go check out cppp.fr. Go check out the conference. Thank you. Thanks for coming on. Thank you. Thanks. Thanks. Thanks for coming on. Thank you very much. Thanks so much for listening in as we chat about C++.
Starting point is 00:55:12 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 on Twitter. You can also follow me at Rob W. Irving 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.com.
Starting point is 00:55:49 Theme music for this episode was provided by podcastthemes.com.

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