CppCast - Meeting C++ and /r/cpp_review

Episode Date: August 24, 2017

Rob and Jason are joined by Jens Weller to talk about the upcoming Meeting C++ conference, the /r/cpp_review community and more. Jens Weller is the organizer and founder of Meeting C++. Doing ...C++ since 1998, he is an active member of the C++ Community. From being a moderator at c-plusplus.de and organizer of his own C++ User Group since 2011 in Düsseldorf, his roots are in the C++ Community. Today his main work is running the Meeting C++ Platform (conference, website, social media and recruiting). His main role has become being a C++ evangelist, as this he speaks and travels to other conferences and user groups around the world. News Aqua Math - Android game developed in C++ with Cocos2d-x Cocos2d-x LLVM on Windows now supports PDB Debug Info Ranges, Coroutines, and React: Early Musings on the Future of Async in c++ An Intro to Compilers Jens Weller @meetingcpp Jens Weller's GitHub Links Meeting C++ Meeting C++ 2017 Conference /r/cpp_review Meeting Embedded Ultimate List of Developer Podcasts Dlib - a modern C++ toolkit containing machine learning algorithms The Cherno Project Sponsors Backtrace Hosts @robwirving @lefticus

Transcript
Discussion (0)
Starting point is 00:00:00 This episode of CppCast is sponsored by Backtrace, the turnkey debugging platform that helps you spend less time debugging and more time building. Get to the root cause quickly with detailed information at your fingertips. Start your free trial at backtrace.io slash cppcast. CppCast is also sponsored by CppCon, the annual week-long face-to-face gathering for the entire C++ community. Get your ticket today. Episode 115 of CppCast with guest Jens Weller, recorded August 23rd, 2017. In this episode, we talk about debugging with LLVM on Windows. Then we talk to Jens Veller from Meeting C++. Jens talks to us about the upcoming Meeting C++ conference,
Starting point is 00:00:57 the CPP reviewast, the only 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? I'm doing pretty good, Rob. How are you doing? I'm doing pretty good. Did you go out for the solar eclipse a couple days ago? I stood on my porch, and we got like 95% or something right here in Denver. Okay, so you weren't in the full path of totality? I was not, but it was an interesting experience regardless because everything just kind of got
Starting point is 00:01:51 dimmer. Yeah, yeah. In North Carolina, we were probably about the same. I'm not sure if it was 95%, but something like that. If I had gone down to South Carolina, it would have been in the totality. So I kind of wish i had made that trip because uh it was pretty cool but uh we definitely didn't get you know the full darkness that i guess i was somewhat expecting yeah how long would you have to travel for that how far away would that this was the 100 zone from you for me it would have been about a three hour drive for me it also would have been three and a half
Starting point is 00:02:25 what would have been about three and a half hours to get there and then apparently about 12 hours to get back because of all the traffic coming back yeah denver yeah three hours not accounting for the traffic i'm sure there would have been a lot uh of people trying to get into south carolina during the eclipse yeah i heard that you could see it on Google Maps and the traffic. You could see the pass of totality. I believe it. And basically coming out of Denver, there's exactly two highways that you could take to get to the totality. And so then it would have been those exact same two highways coming back. Right.
Starting point is 00:02:59 Okay. Well, at the top of Arizona, let's read a piece of feedback. This week, we got an interesting email from Oleg. He wrote in, One year ago, I encouraged my then 16-year-old son, Moshe, hopefully I'm pronouncing that right, to learn C++. He developed a mental math Android and iPhone game using modern C++ and Coco's 2DX cross-platform gaming engine.
Starting point is 00:03:22 And he says his 18th birthday is coming up in September, so he's trying to help his son out with promoting the game a little bit, and that's why he reached out to us. So I just think this is really awesome. Like I said, it's a math game, and I was only able to look at the screenshots on the Android Play Store because I don't have an Android phone. But you can choose between different modes, and one of the modes is actually for programmers so it's not just a kid's game it
Starting point is 00:03:50 could be a game for you know engineers like us jason and it's called aquamath aquamath and uh yeah we have a link for the android version of it and he said it's still being approved for itunes but hopefully it'll be available there soon and i just thought this was really cool um you know that he was able to get his son interested in c++ and and create this game um i think we've talked maybe a little bit about coco's 2dx i don't think we've ever gone into any detail on it though i honestly don't recall that would be an interesting guest just yeah the youngest doing game dev experiences learning c++ i think that's an angle which we haven't yet covered seen
Starting point is 00:04:32 at your cost well except when we accidentally uh interviewed a high school student we've definitely done a little bit of game dev talks. Obviously, we've had people from Blizzard like Ben on. We haven't done too much in the way of amateur game development. I don't think we've talked about Cocos at all. Yeah, that could be interesting. I agree. Yeah, but definitely encourage everyone to check out Aquamath. If you have small kids who might be interested in a math game, it definitely looks good for them, and it might be good for yourself because it does have that programmer game mode right so we'd love to
Starting point is 00:05:11 hear your thoughts about the show as well you can always reach out to us on facebook twitter or email us at feedback at cpcast.com and don't forget to leave us a review on itunes so joining us today you just heard him is jens valor jens is the organizer and founder of Meeting C++. Doing C++ since 1998, he is an active member of the C++ community, from being a moderator at C++.de and organizer of his own C++ user group since 2011 in Dusseldorf. His roots are in the C++ community. Today, his main work is running the Meeting C++ platform, including the conference, website, social media, and recruiting. And his main role has become being a C++ evangelist.
Starting point is 00:05:48 As this, he speaks and travels to other conferences and user groups around the world. Jens, welcome back to the show. Hey, nice to be on again. Yeah, thanks. Thanks for having me. Sure, thanks for joining us. You're definitely not a stranger to the program at this point. No, it's kind of tradition to listen to a CPP cast on a Friday morning.
Starting point is 00:06:08 Yeah, and I think we wind up talking about something coming from your platform almost every other week, probably. Yeah, it was kind of funny that you covered a lot of things which I just got started in the last episodes, and I see that mostly the things you feature as news items have been in my blog role previously. I was just looking at your Twitter influence also, and you have, what, it's like 12,000 followers or something like that right now, is that right?
Starting point is 00:06:42 Yes. This week, the Twitter account hit 12,500 followers. And it's on social media. Facebook has gone crazy. It's over 25,000 on Facebook, over 1,000 on LinkedIn, et cetera. So I do have quite a reach on social media. Wow. That's impressive. It's very impressive. Use your powers for good, Jens. I do have quite a reach on social media. Wow, that's impressive. That's very impressive.
Starting point is 00:07:06 Use your powers for good, Jens. I do. Well, obviously we're going to talk some more about the latest things you've been doing with meeting C++ in a little bit, but first we've got a couple news articles to discuss, so feel free to comment on any of these, Jens, okay? Okay, so the first one. LLVM on Windows now supports PDB debug info. And this is a post on the LLVM blog written by Zach Turner. And the quick summary is in the title that if you're using Windows and Clang,
Starting point is 00:07:38 you can now build with the PDB debug info, which is what Visual Studio uses for its debugger. But the whole post is pretty interesting, kind of going into the history of CodeView, which I'd never even heard of before, but apparently that's the debug format that PDB is built around, which is kind of the equivalent to Dwarf on Linux and Unix systems. And apparently they tried to avoid doing anything with CodeView and PDB for a while and eventually gave up and had to start from scratch to be able to emit CodeView and PDB from the LDB debugger.
Starting point is 00:08:21 Yes. Yeah. And they were able to get some help from microsoft in doing that which is nice looks like it would have been a considerable amount of work he said what like a year and a half of experimentation i believe yeah a year and a half of studying the uh codes that they got from microsoft and hacking away they finally got it working that's a long project on one little thing. Clang on Windows is an interesting story, and this is such an important milestone for
Starting point is 00:08:52 achieving this. And a couple of weeks ago, you could also hear from other sources that Chrome is switching, obviously, to Clang this year on Windows. I guess they also want to use Visual Studio when they need to debug Chrome in the future. That is one thing that everyone seems to agree on, is that Visual Studio's debugger is very good, so it's handy to have it available. Although, one of the things that
Starting point is 00:09:23 I'm still curious about was they said at some point that they had considered trying to teach Windows debugger or Microsoft's debugger how to understand dwarf files. And I think that would still be an interesting project if that were possible. Well, didn't he say he spent a good year on that before giving up?
Starting point is 00:09:42 Right? Yeah. Yeah, something like that. He should go back to that now that he's got PDB working. There's also an interesting, I think, side note here that they've released a tool that will take your PDB and dump it to YAML.
Starting point is 00:09:58 So you can actually look at the debug information that you have generated. LLVM PDB Oodle. Yeah. Yeah, and there's also a call to action at the end of this post that if you're interested in using Clang on Windows, they're looking for you to come, you know, throw your own code through this
Starting point is 00:10:18 and make sure it's generating valid PDB info. Currently it's very much in alpha stage. So they want to get some more testers on it. So on that note, have either of you, I have not, have you tested the ability to use Clang on Visual Studio so far? I mean, I know the debugger just now
Starting point is 00:10:37 started working, but it's been an option for a while. I don't think I've done anything with Clang on Windows yet, no. No. I'm not even using Visual Studio. I'm using Qt Creator for my day work, so that's not an option currently. Right.
Starting point is 00:10:53 Well, someone should try it out and tell us how well it works. Yeah, definitely. Okay. This next post is from Eric Niebler's blog, and it's Ranges, Coroutines, and React Early Musings on the Future of Async in C++. This is a pretty interesting post.
Starting point is 00:11:11 We've talked about how at the Toronto C++ meeting, the Coroutines TS was forwarded to ISO for publication. And that basically means it's almost guaranteed now that coroutines should make it into C++ 20. And this post was going into, now that we know we're going to get coroutines, what does ranges look like if you factor in coroutines? So asynchronous ranges, basically, is what this post covers. And it was really interesting. I'd love to get your guys' take on it. I read through this, but I think it's still a bit too much over my head. This is far from the future.
Starting point is 00:11:55 It's an interesting point. I love ranges, and to see how you can use something like coroutines with ranges is a great post and shows where we're going. And hopefully we're soon there. Yeah. Yeah, I have to unfortunately agree with Jens because I haven't spent really any time at all looking at ranges or
Starting point is 00:12:16 coroutines except for a couple conference talks and trying to put them both together. I'm like, all right, I clearly need to spend more time with this. One of the things i thought was kind of interesting is um he's saying that coroutines kind of was prepared for ranges or anticipating it to some extent and that uh there's already things like being able to uh create a coroutine around um you know iterator creation and for loops. There's now a
Starting point is 00:12:45 for co-await in the coroutines proposal that's going to help out with ranges. Yeah, that's interesting that the whole awaitable concept is now also able to be used on something
Starting point is 00:13:01 like a core structure, like a for loop. That's one of the major things I learned about coroutines from that blog post, that this is a possible knowledge. I think it's awesome. I'll definitely recommend everyone reading the whole blog and doing some more experimentation with ranges and coroutines. It's definitely something that we need to do ourselves. And Jason, you want to introduce this last blog post?
Starting point is 00:13:28 Yeah, I saw this blog going around, I guess, on Twitter and it's getting a lot of great feedback. So it's an introduction to compilers, but it takes a standpoint of looking at it from the LLVM Clang toolchain and just gives a breakdown of how your code is parsed at a really high level, how your code is parsed at a really high level how the code is parsed how it's translated to intermediate representation and then optimized and then
Starting point is 00:13:51 machine code is output with like really concrete examples of simple code simple programs what the ir looks like what the optimized ir looks like what the x86 assembly output looks like i thought it was awesome article article, personally. I really like the visual graph of the abstract syntax tree. I don't think I've seen it broken out like that before. That was a pretty cool look at.
Starting point is 00:14:16 And it's interesting to note that in the later recent versions of Compiler Explorer, you can actually ask for the AST output inside of Compiler Explorer, too, and kind of also see this for your code. Granted, it explodes quickly to really huge text output if you're doing anything crazy in your C++. But you, for an example like this, could totally see this also. Yeah, I really loved this blog post.
Starting point is 00:14:46 It was a great blog post, going really into the details, but also it's really understandable because it's so easy as examples and not really going into obscure things. So I think it's great for people who do C++ for a long time, but it's still accessible to a beginner to understand all this magic. And I like to think the main reason most of us program in C++, well, except for the people that just like templates and metaprogramming and that kind of thing, is for performance. And you want code that you can basically reason about what it's doing on the hardware.
Starting point is 00:15:21 And I think a part of that is having some idea how the compiler works. So I think it's kind of important for all C++ programmers to have some understanding of what's going on. Yeah. Sure. Well, Jens, as we talked about recently, you just started the CPP review community on Reddit.
Starting point is 00:15:43 We discussed this a few times in recent episodes do you want to tell us a little bit more about it um yeah well the basic idea is that there is now a community which has its current home at reddit rcpp underscore review um where every month about two libraries are being reviewed and on Reddit currently you can see there are two review threads for that and
Starting point is 00:16:14 there's up above is basically the rules and kind of documentation on how I would like to run this community. And there's a thread for submissions, which currently already contains five other libraries, which are for future reviews. So September, we already are sure that we have two libraries which fit in the things. And currently, there's a review of a library called Dynamics
Starting point is 00:16:46 and a library called Bulk, which you can both have an overview and post comments, post defects, post things you see in the documentation or on the code, and have discussions in those threads. So it looks like Dynamics was accepted overall, but is there a closure to this process, or will it always remain open for people to leave reviews and comments on it? No, the review process lasts a month. Currently Dynamics has two reviews which are going for accepted. I still haven't concluded my review,
Starting point is 00:17:31 but I tend towards accepting the library as the review itself seems to bring up not large issues, and the library itself has been used in production, used in several games, and it's coming from a kind from a background of game dev and so um if no major issues turn up then i probably will accept this library okay i noticed some of the reviews on uh dynamics uh do have a couple suggestions for improvement um is the expectation that during that one-month process,
Starting point is 00:18:06 library developers will go about addressing that feedback and update the library? I wouldn't call this an expectation. It's, of course, nice if they do it. One thing I learned is definitely that the library needs to be able to provide a version through GitHub, for example, that is the official version which is reviewed, because both libraries actually released now in the middle of August a new version,
Starting point is 00:18:38 which I think the new Dynamics version might also already reflect on things that came up in the review. So I'm not totally against publishing new versions during review. Of course, I can't freeze the library maintainer, and I don't intend to. But it has to be clear on what version is this review and about what code do we talk
Starting point is 00:19:00 and what code do you download, what code do you run, static analyzers, etc. And just to see and to get a general feeling for the code base which we're reviewing. And if you look through the code and if you make some findings you'd like to discuss, you simply can open a thread in the Reddit
Starting point is 00:19:20 and just ask your questions and usually the author or other members of the subreddit will respond. So it is tied to a specific version of the library. I see on the Dynamics it's version 1.1. Yes. So when version 2.0 comes out, for example, would you expect a re-review or would that be an option? Well, of course, we cannot review every version.
Starting point is 00:19:52 But we have to make sure that it's clear which version has been reviewed. And I think that depends on the changes and how much has been added. And I want to give people a general guidance. But it's also the case in Boost that the new versions, there is Qt has this review that every change that goes into Qt is reviewed. Boost, as far as I know, doesn't have that really. There is not a public Boost review process. There is just tests which have to
Starting point is 00:20:26 pass and which we should provide. But also, I don't know if boost really works on test coverage once you are accepted and add new functionalities, which has happened in the past. But I want to document which version we have been reviewing and which other versions came out. And then you can see are those changes applied, what are the advancements and make a decision if you want to use the newer version or the older version
Starting point is 00:20:54 I don't plan on Boost providing a monolithic archive where you can download all the libraries which have been reviewed you have to go to the page. It's just giving you guidance which libraries have been reviewed and have a seal of approval from the community.
Starting point is 00:21:17 That's the goal. Since you brought up Boost, do you want to talk a little bit more about what the motivations were for starting CPP Review instead of just encouraging library developers to put their library through Boost? Yeah, I can do that. I think that there's a lot of people which don't want to be in Boost, which doesn't mean that Boost is something bad, but it's just boost has a really high goal to be
Starting point is 00:21:47 accepted. And for a lot of library developers, also the review was 600 emails on the mailing list. This is for a lot of people too much because their lives are also too busy. And there's
Starting point is 00:22:03 other libraries which are not able to be included into Boost. Like, for example, there's a lot of libraries using Qt. And I am open to libraries having third-party things, like dependencies, like Qt, other things. And if you don't have that, that's even better. And actually, I had already one boost author telling me previous before this came that he did not want to submit the 2.0 version of his library
Starting point is 00:22:47 into the Boost review process because it would be too much hassle and too much work for him. But the idea doesn't totally stem from Boost. I saw last year a tweet by Eric Nieepler who thought about having something like that would be usable and I thought, well, I had a similar idea for that kind of thing to have a more open community, which is also giving people a chance to discuss code without having I think it's easier to discuss somebody else's code if you think something is an error,
Starting point is 00:23:28 or why are you doing this, to learn through that from another code base. And I often get asked also by beginners, it's often like a common question, where should I look at? And if you participate in this community, that would be a chance to learn from another code base. And if you don't understand something,
Starting point is 00:23:44 or if you aren't sure that's correct, you can ask a question in the subreddit and get an answer from the author or one of the other members. And the other point, what got me in this direction, is I did a talk about comparing Qt and Boost, which is on YouTube at C++ now, and later also did the same talk at the Italian C++ conference in Milano. And through that comparison of Boost and Qt, what they do good, what they don't do good. I also kind of got to a third comparison, kind of what do we need today and how would we handle things today?
Starting point is 00:24:36 Because both Qt, Qt is already over 20 years old, actually started around 91, and Boost is kind of a child of the first standard, so 98 started by committee members, and I kind of felt that we maybe should have such a review community
Starting point is 00:24:58 as Eric envisioned that, and so it's RCPB review doesn't make any assumptions about your library, which license, which structure. So Boost has a lot of rules which you have to adhere to, like the license, the structure of the library, documentation, etc. Of course, you have to have documentation and kind of a background in the library that people can see that this is something they can use in production. That's my whole goal, to give people an overview of what is out there and libraries which isn't
Starting point is 00:25:34 in Boost or somewhere else listed, and they can use safely in their environments. So how would you say it's gone so far now? Good. So how would you say it's gone so far now? Good. I was afraid we're talking here and it's like no one and rolling bushes through the desert. No, but yeah, the subreddit has 400 members and the two libraries which we started with aren't the easiest ones to review and to understand
Starting point is 00:26:02 because they're both kind of strangers coming from subcultures of our community like the one at MPI and multithreading like scientific computing mostly hinted and the other library is for
Starting point is 00:26:20 game dev which also isn't what most of us do and so I think we'll see next reviews and more members and more people actually participating. We will have more and better reviews in the future. So this has been a very good start, in my opinion. Good. Very good. If you don't mind, if we take just a quick diversion,
Starting point is 00:26:46 you just mentioned that you just gave a talk at the Italian C++ conference, which I believe is the third year they've done it. It's either the second or third, I think. Third, I think, is correct. And I don't think we've talked about it on the podcast. I was just curious if you could give a minute talking about your experience there. Oh, I liked it. It was a really great conference. It's one day in a university.
Starting point is 00:27:10 Okay. And I didn't expect Milan to be like 35 degrees Celsius in the beginning of June or in the middle of June. So it was extremely hot. Yeah.
Starting point is 00:27:26 And the air conditioning of the university was still holding up, so it was a cool conference. That's good. And an interesting track, which I also spoke in, and it was nice to see what Marco brings up there. And
Starting point is 00:27:41 it was really fun to be there, and lots of students and a great conference. And that conference is partially in English and partially in Italian? Is that right? Yes, they have a track in English and an Italian track. Oh, I see, okay. Cool.
Starting point is 00:28:04 For listeners who don't know their metric conversions, 35 Celsius is about 95 Fahrenheit. I had to look it up real quick. I wanted to interrupt this discussion for just a moment to bring you a word from our sponsors. Backtrace is a debugging platform that improves software quality, reliability, and support by bringing deep introspection and automation throughout the software error lifecycle. Spend less time debugging and reduce your mean time to resolution
Starting point is 00:28:25 by using the first and only platform to combine symbolic debugging, error aggregation, and state analysis. At the time of error, Bactres jumps into action, capturing detailed dumps of application and environmental state. Bactres then performs automated analysis on process memory and executable code to classify errors and highlight important signals such as heap corruption, malware, and much more. This data is aggregated and archived in a centralized object store, providing your team a single system to investigate errors across your environments. Join industry leaders like Fastly, Message Systems, and AppNexus that use Backtrace to modernize their debugging infrastructure.
Starting point is 00:29:01 It's free to try, minutes to set up, fully featured with no commitment necessary. Check them out at backtrace.io slash cppcast. So the other thing you started recently besides CPP review was meeting embedded. Do you want to tell us about that and how it's going? Yes.
Starting point is 00:29:24 I'm just, yeah, so I was planning this for quite some time, but then I didn't have the time to actually do the work for it. And then I decided to use it this year as a testbed for my CMS and to just get started with the work for it, motivated also by the EMbo C++ conference, which, you know, embedded in C++, which is exactly what I don't intend to do with Meeting Embedded. I still see the embedded space in C++ at Meeting C++.
Starting point is 00:29:59 And of course, in Meeting Embedded, I also cover C++ in Embedded and people are welcome to, I think this is going to be also next year, a conference about this one day, I plan, but not sure when and if and how. But currently, this is a platform which I have started to kind of recreate the things I do with meeting C++ for the embedded and IoT sector, and which makes the work I do in coding and everything I write for Meeting C++ now twice as effective as I can just reuse it for Meeting Embedded.
Starting point is 00:30:36 And this is really good. Now, to be clear, is it specifically embedded C++ content, or is it just any embedded programming content? Any embedded content programming, IoT hardware embedded. I have currently
Starting point is 00:30:58 no idea where this evolves into and where this goes. It's definitely not limited to C++. And I just want to be open there and see where this meeting embedded
Starting point is 00:31:13 then what it grows into. And I plan to have like a one-day event probably by next year, maybe in front of the conference, maybe after the conference, we'll see. And then on the long run, I plan to make this like a second conference for embedded, like meeting C++,
Starting point is 00:31:33 but for the embedded sector. So maybe for a little bit of context, Your blog aggregator for Meeting C++ has... How many feeds do you have coming into it so far? And first, Meeting C++. I'm just curious for a comparison. Around 300. And how is Meeting Embedded doing then? Let me look that up. Actually, so
Starting point is 00:32:00 C++ C++ actually is 352. Okay. And embedded isn't as strong yet. I still have to add a few, but if I look this up here in my UI, it's 37. Which covers like, yeah.
Starting point is 00:32:26 Not a bad start, but plenty of room to grow. Yeah, definitely not a bad start, I can see. I was just looking at the blog role for last week on here. Yeah, meeting embedded currently features a blog role and a Twitter account, and still have to do some work on getting meeting embedded also into the user group space, etc. Those are upcoming features, which once I have time. Currently, I'm very active with working for Meeting C++ for this year's conference, but also for the new website,
Starting point is 00:32:56 which is coming out soon. The Meeting C++ user group finder is a really great service you provide. Do you have a list of any meeting embedded user groups yet? No, I still have to start this. This is one of the things which is coming in the future, coming soon. So you mentioned something about a conference you have coming up? Oh, yes. We have this year the sixth edition of the Meeting C++ conference
Starting point is 00:33:33 running under the title of Meeting C++ 2017. But for the very first time this year, we have three days. So it's not anymore two days. It's from Thursday to Saturday, which also makes me very happy because now we provide a lot more content and room for the community to share
Starting point is 00:33:53 this time at Meeting C++. And one of our speakers is Jason. Oh, yes. Is that right? I should probably start on those talks or something. Yeah. How many speakers do you have?
Starting point is 00:34:11 Three full tracks, you said? Three full days of speaking, that is? I think 32 or something. 32, 34. Is it one? That's the keynote speakers. Is it just one track? How many tracks per day?
Starting point is 00:34:23 Yeah, that's what I was trying to ask. It's four tracks four tracks on three days and um if i do the math on my head it's like 30 32 33 slots which i have to fill okay around that um there's there's a force track which is reserved for sponsors and guests, and also the place where we host the lightning talks, which are part of the normal program. So I have to see how many lightning talks we actually want to accept this
Starting point is 00:35:00 year and how much space we want there, and maybe also have some other space for experiments there this year. Like, I don't know, do a coding dojo or something. You still have a TBA listed as one of your keynote slots. Do you have plans to announce that soon? Yes. Actually, there was a spoiler today
Starting point is 00:35:23 because I posted a little screenshot of the new website. Yes. And there you could see that this isn't TBA anymore, but it's currently still in the planning process for the announcement. So as it looks of today, Wouter van Ooyen is going to speak at the closing keynote. And if you know Wouter, Wouter has been and is a professor in the Netherlands and teaching C++ mostly for the embedded space. So this will be a keynote also going into the embedded space. Well, that's cool.
Starting point is 00:36:03 As far as I know currently. You said there's four tracks. Is there like one track dedicated to embedded talks? No. No? Okay. No. We had in the last years theme tracks, and we had one year where I think it was 2015,
Starting point is 00:36:21 where we had a theme track for Embedded. But this year's theme track kind of was new speakers, so people who start speaking or haven't spoken very much until now. And the reason behind that was just I wanted to hear a few new voices for the conference and also just for empowering people and motivating people to start speaking and not always the same voices. I mean, a lot of people from the committee this year are in parallel at the committee meeting, which we might also have a surprise for you if you visit the conference.
Starting point is 00:37:03 We might be able to do a live stream to the committee to just chat with some of them. I have to talk to some people at CppCon about this, and then we'll see if that happens and how this happens. And there's a few other things that are planned. Actually, we have a fifth track, which I haven't mentioned yet, which isn't talks. Last year, I introduced a track
Starting point is 00:37:31 which basically is dedicated to meetings. So we have more meeting in Meeting C++ since last year. And this is in one of the lounges. We have two lounges. And one of the lounges is basically reserved for this track. So people cannges and one of the lounges is basically reserved uh for this track um so people can come up and starts in the break and we have different things like starting c++ as an
Starting point is 00:37:54 idea audio c++ could be this year cute boost had a gathering last year and then people you know kind of get to know each other through the break. And my intention is that you stay and keep exchanging if you want to, or go to a talk if you need to. As all of the talks are recorded, but this track isn't. So that's kind of the challenge of you on that track. Yeah, I haven't been to terribly many different conferences, but it seems your lounge and meeting space concept is relatively unique. I was curious what originally motivated your desire to have this lounge set up.
Starting point is 00:38:40 I had a lounge 2015 at the conference, and that kind of got me started thinking, what could we host in there? And I thought, well, meetings of people which are anyways at the conference so that they can connect within their space of C++, be it game dev, be it something else, be it boost community, et cetera. That was my goal,
Starting point is 00:39:04 and some of these exist in a different or in similar form at other conferences. I know that ACCU also has some content which is at some non-space, non-official space. But I haven't been at ACCU, so I can't really see if that's their idea or who will had that idea.
Starting point is 00:39:25 I knew that I had heard it from some other conference organizers previously that similar things exist. So tickets are still available for your conference, right? Yes. And when is the date again? This year's conference is from the 9th to 11th November. Okay. In Berlin. Okay.
Starting point is 00:39:47 And each year you've been growing, uh, is that correct? Uh, yeah. Since, since the start we've been growing this year is the growth in time and not in space. So, uh, we'll enter like at 600 like last year, maybe a little bit more. That's a sizable conference for sure. Oh yeah. Feels quite big. Especially if you see the growth curve over the last years.
Starting point is 00:40:14 I can say I'm personally looking forward to meeting the people that I communicate with in Europe who have not yet made it to any of the American conferences. Oh yeah. There's a lot of Europeans at my conference which haven't been and maybe not going there so I'm very much
Starting point is 00:40:33 looking forward to having you at the conference that's a great thing I'm looking forward to Do you get a mix of English and German speakers giving the talks? In the first years we had a mix of English and German speakers giving the talks? In the first years, we had a German track, but it wasn't very well visited. And it was also kind of that even the German speakers want to give talks in English. So I kind of made it an English speaking conference only because I understand the conference as being
Starting point is 00:41:02 an international conference, a European conference. And so I decided that we make one official conference language, which then, of course, has to be English. Okay. You were talking earlier about those talks you've given about the Qt and Boost communities. We don't really talk much about Qt on the show. I mean, we talked about Copper Spice recently,
Starting point is 00:41:27 and we had an interview with the Qt Creator developer a while back. But what is the Qt community like in C++? That's a good question. I haven't been to Academy, where the Qt developers meet, and that's probably also a very good event to have in mind if you want to meet the Qt community. I've been to the Qt Dev Days which is a traditional meeting of the Qt community
Starting point is 00:41:55 which is very much and heavily influenced by the way that Qt is organized and Qt in this space is far more commercial. And there is a commercial ecosystem around Qt, which is a lot of companies. And those people who get good at Qt often and are part of the Qt community often end up in this ecosystem as being there working and moving from company to company or staying at one of those companies. And some of those companies are consultant companies, which work for the industry in Qt,
Starting point is 00:42:31 or the Qt company itself, which is now taking care of Qt, which kind of is the stakeholder and the gardener of this ecosystem, if you want to. And that makes them very different from what Boost does, for example, as Boost is a non-commercial platform which is based on volunteers, and there is no commercial ecosystem around Boost where companies are actively promoting and using Boost. And this makes Qt so much better in the marketing space and the space to push Qt into acceptance in the industry. And it makes it so much stronger there.
Starting point is 00:43:13 And also gives Qt funding because there's a lot of features in Qt which come through this ecosystem because a certain company has written a certain system and is now open sourcing it and giving it to the Qt community to also maintain in the future, but also to be a part of Qt. The new Qt 3D system and QML is a good example for that, which was done by KDEB. The new Qt 3D was completely done by KDAB, written new and how they needed it. And then it's then being submitted to Qt. Okay. And otherwise, the Qt community is very much like the C++ community. They're very much C++ developers, but very Qt focused as Qt is a big framework
Starting point is 00:44:06 and Qt wants you to use Qt and to be a Qt developer. But to me, if you use C++, you're a C++ developer, not a Qt developer. And so I'm really looking forward to meeting part of the Qt community this year at CppCon because Lars Knoll is giving a keynote there and also there's no Qt event in the US this year. So if you're part of the US Qt community CppCon is a really
Starting point is 00:44:36 interesting event where lots of C++ programmers meet and you can see Lars Knoll giving a keynote so maybe give a thought about attending the CppCon event instead of Qt events this year. Yeah, there was just an announcement from
Starting point is 00:44:51 John Cald that we're reaching some of the deadlines for CppCon. If you needed to invoice your ticket, then yeah, you should go ahead and buy your ticket this week, I think. Yeah, that's an interesting thing. It's nice to know.
Starting point is 00:45:08 Since you mentioned CBPCon, are you going to be speaking at CBPCon this year? No, they didn't want me to. I got the program committee... Yeah, no. I made some, so I gave, I resubmitted the talk from about the communities, and this was kind of seen
Starting point is 00:45:32 that boost is C++ now and Q is somewhere else, so what do you want at CppCon? We're just a different community here, or it was strange to me, but okay. And the other talk, I wanted to talk about what I'm currently working on
Starting point is 00:45:48 when I travel mostly on a program using DLib and Qt to analyze images on faces and other properties. And I made the error to I misspelled
Starting point is 00:46:04 something as kind of the description said, because I wanted error to... I misspelled something. The description said, because I wanted people to have the right impression about it, that I will not dive into the algorithms for image detection. Because that's not my work. I cannot show you such an algorithm,
Starting point is 00:46:20 but I can show you how to use DLib and how I use it. How you can use this for face recognition, for other things. And this was rejected because if you don't show the algorithms and if you don't deep dive into a topic, then either you're not for CppCon, which makes me kind of worried about how we address people coming to this conference and you know
Starting point is 00:46:48 that that talks which you know would actually help you use something new or show you something which is new but don't dive into the details are not accepted because it's just an hour I can either die from the details or I can show you how to use it. Yeah, and depending on your perspective, an hour talk is either extremely long because you're not used to giving them or incredibly short because you can't dive into the details that you might like to.
Starting point is 00:47:15 Yes. So you mentioned DLib, and you and I had actually chatted about it. I don't know, it seems like it was several months ago at this point. Do you want to talk about that library at all now? Yeah, sure. D-Lab is a wonderful library for using all kinds of things in machine learning
Starting point is 00:47:35 and image recognition. It has a good face recognition. I started at C++ Now to write a program which basically counts faces in images, which is something useful to go through all the conference pictures I have. And then when I left later during my travel, I found the time to use the face correlation algorithm from DLib. And then things get interesting. Now I have all the faces from all the pictures from a conference, and it's a lot of pictures, but D-Lib can do this incredible magic of grouping now all pictures where faces are similar. Okay.
Starting point is 00:48:32 And just seeing this was amazing and playing around with it and also later putting this on a private image folder and seeing the results. Like, you know, that's how people are grouped and that children sometimes are grouped
Starting point is 00:48:52 with their parents and other things. It's really interesting. And DLib itself, it's a boost license that's in production and used in scientific programming. It has Python bindings used in science with Python for years.
Starting point is 00:49:09 And it's a really good library. And if you work in that space, you should have a look at that. And the author, King Davis, I think is his name, would also be a really good candidate for CppCast. Okay. Yeah, I haven't heard of DLib before. I've heard of OpenCV, which I think is open computer vision. Do they kind of have similar capabilities?
Starting point is 00:49:29 Or are you not too familiar with OpenCV yourself? They are both often combined as far as I know. Okay. D-Lib is mostly machine learning. Okay. Like image recognition and also neural nets, Bayesian nets, all kinds of things. And other codes. It also has a UI library, by the way, which is, I don't know, it's a fairly crude UI.
Starting point is 00:49:56 So it's not on par with Qt or other UI libraries, but it has one. So if you just need UI, a little bit of UI, D-Lab is also fit for that. And I think that's what makes it appealing to a lot of people which want to use one library in science and just show their results and do something like mis-imagement, and algorithms.
Starting point is 00:50:17 I can definitely see the appeal, even if it's a crude UI layer, to have just the ability to visualize what it has done easily built into it. sounds very handy. So from a C++ perspective, it's easy to use modern C++? Well, modern C++? I guess we could argue about what that means if you want to. DLib is written in a boost-like style. I would almost say it's Boost-like quality.
Starting point is 00:50:48 It's very much taking pages from Boost and very much on the same coding style, almost the same school of writing things. It has a very high code, but it also has its downfalls. Okay. One example, I needed to see how performance-heavy the loading of the face
Starting point is 00:51:13 recognition was. And so there's one library which gives you the face detector object. And when I looked at that code, let's just say it's not pretty. And I figured out I want to run this once. And after that, I want to have a pool to share this object with every running thread or to share this object just like once with every thread and have like n objects of that only loaded instead of loading it and then every thread and have like n objects of that only loaded instead of loading it in every thread and so
Starting point is 00:51:47 there's some room for improvement in DLib but I think that's in every library and on the other hand it's a really good and high quality library good okay was there anything else you want to talk about before we
Starting point is 00:52:03 let you go? We can remind listeners again that Meeting C++ is November 9th to 11th, and tickets are still on sale. Yeah, there's one more thing. You know, a lot of work I do is with the community, and a lot of my work is related to C++ content. And I thought we'd have a quick chat about that. I have some notes here, like the block spacing. I named the number over 350 sources I have for the block role.
Starting point is 00:52:40 Most of that is blocks, but it's also video, which is definitely one thing I still think we should have a chat about. And then in blogging, just shout out to a few bloggers like Arne Merz, Rainer Grimm, and Jonathan Miller. And also there's another Jonathan from Fluent C++, Jonathan Bocara. If I don't butcher his name, and there's a lot of other people blogging. Interestingly, I still think that blogging is more like a European thing. So maybe the U.S. wants to wake up to this too. But there's also some great bloggers in the US.
Starting point is 00:53:26 For example, the blog from Microsoft. This is one of the most active blogs, but private devs blogging. But also then video. I am still amazed what Jason's doing every week. Thank you, Jason. I know how much hassle is video. This is amazing that you put that up every week and that this weekly hasn't been turned into monthly or something. I will just say for the record that doing it weekly is not terribly difficult, because I consider it part of my job at this point.
Starting point is 00:54:03 What is difficult is getting enough episodes prepared for my conference season coming up where I will have CBP con then Pacific plus plus then meeting C plus plus. I need to have all those episodes ready to go before I start down that road. So you pre-record. I, I, I don't usually,
Starting point is 00:54:23 I am right now. Yes. Yes. Especially, I think, with video content, it's something where C++ is underrepresented. There's lots of programming content on YouTube, and one of the YouTubers I want to give
Starting point is 00:54:43 a shout-out to is the channel, which is currently doing a C++ introductory course. And his background is actually game development, but this course focuses on C++ as a language. And it's currently around, I think, introduction into classes is currently where he's running through. So this is an ongoing series, which you can like follow every week with several videos. And what's the name of that series? The Churnow. The Churnow?
Starting point is 00:55:11 Or the channel? The Churnow. I can give you a link. This is part of the block rule every week. So you probably already have seen it. And this is also what motivated me to go ahead with meeting C++ live, to experiment with a live format. So far, three episodes, and I'm thinking about having a fourth and fifth episode soon.
Starting point is 00:55:38 But it's also kind of difficult when things match out. And also then, once I had the whole setup to record videos, which isn't that difficult, by the way, if you look at how to do that. And once I had that setup, I thought, well, why do I only use this to live stream or to record things when I have a guest? There's so much more which I want to say, especially when I'm on traveling. I have a lot of free time to kill and not always want to program.
Starting point is 00:56:15 And so on my other, on my travel laptop is also this installed and set up. So that's where I record the series, which I call just C++, which is then just putting on a little bit of C++ content, very short content where I just go through some code I recently
Starting point is 00:56:31 wrote or introduced something. The next episode, next week when I'm in Berlin, I'm probably going to record an episode about DLib. We'll look forward to that one. And then I have a little bit of a nitpick about CppCast. Oh.
Starting point is 00:56:52 Do we want to air it? No. I find it sad that CppCast is kind of the only podcast for C++. So I really want to call out to the community to change that. I know you're listening, so maybe get motivated to
Starting point is 00:57:13 start a podcast for C++, maybe for something specialized like audio C++ or game dev, or just C++. There's enough things to talk about enough people willing to talk about and i think it would really great to to have more podcasts about c++ yeah i'm gonna put this link in the show notes again um late last year we talked about this uh
Starting point is 00:57:38 little contest that was put on by john sonmez's blog about the best programming podcasts. And he maintains this list of programming podcasts, and we're on it. We're the only ones in the category for C++. But I'm scrolling through it right now, and.NET development, there's like a dozen podcasts. JavaScript, a dozen podcasts. Mobile development, it looks like there's 20 or so and even like smaller languages or you know necessarily smaller languages but uh things
Starting point is 00:58:11 like python i see three podcasts uh java has five ruby has four so there's no reason why there can't be a second or third uh c++ podcast and and obviously you could go into a niche of game development and C++ or something like that. I did get an inquiry about advice for doing podcasting stuff for someone who's looking to start a Russian language one and I
Starting point is 00:58:38 don't know if it ever that was months ago, I don't know if it ever went anywhere. I would definitely encourage the community to start up a second C++ podcast. Maybe we'll even change our intro. Well, we might have to.
Starting point is 00:58:54 We just leave it as the first. Sure. Well, Jens, it's been great having you on the show again today. Yes, thank you. It was great to be here. Thanks for joining us. Thank you. You're welcome.
Starting point is 00:59:09 Looking forward to listening to you every week again. Thanks for doing CppCast. That's really great. Thank you for all you do. Thanks so much for listening in as we chat about C++. I'd love to hear what you think of the podcast. Please let me know if we're discussing the stuff you're interested in. Or, if you have a suggestion for a topic, I'd love to hear what you think of the podcast. Please let me know if we're discussing the stuff you're interested in. Or if you have a suggestion for a topic, I'd love to hear about that too.
Starting point is 00:59:28 You can email all your thoughts to feedback at cppcast.com. I'd also appreciate if you like CppCast on Facebook and follow CppCast on Twitter. You can also follow me at Rob W. Irving and Jason at Leftkiss on Twitter. And of course, you can find all that info and the show notes on the podcast website 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.