CppCast - Mentorship

Episode Date: April 7, 2022

Rainer Grimm joins Rob and Jason. They first talk about a new implementation of the ninja build system and updates to Qt Creator and CMake. Then they talk to Rainer Grimm about his mentorship program,... and history of teaching C++. News N2: revisiting ninja Qt Creator 7 released Cmake 3.23.0 available C++20 Ranges: The Key Advantage - Algorithm Composition Links Modernes C++ Rainer's German Blog Mentoring Program Sponsors Use code JetBrainsForCppCast during checkout at JetBrains.com for a 25% discount

Transcript
Discussion (0)
Starting point is 00:00:00 Episode 344 of CppCast with guest Reiner Grimm, recorded March 31st, 2022. This episode of CppCast is sponsored by JetBrains. JetBrains has a range of C++ IDEs to help you avoid the typical pitfalls and headaches that are often associated with coding in C++. Exclusively for CppCast, JetBrains is offering a 25% discount for purchasing or renewing a yearly individual license on the C++ tool of your choice, CLion, ReSharper, C++, or AppCode. Use the coupon code CHEPBRAINS for CppCast during checkout at www.chepbrains.com In this episode, we talked about an alternative to the Ninja build system. Then we talked to Reiner Grimm. Reiner talks to us about his mentoring program and more.
Starting point is 00:01:31 Welcome to episode 344 of CppCast, the first podcast for C++ developers by C++ developers. I'm your host, Rob Irving, joined by my co-host, Jason Turner. Jason, how are you doing today? I'm all right, Rob. How are you doing? Doing all right. You all set for a game jam? Yes. So when this episode airs... I guess it'll be done or finishing up. Well, you'll have one weekend to still get involved if you really want to. Yes. So when this episode airs... I guess it'll be done or finishing up. Well, you'll have one weekend to still get involved if you really want to.
Starting point is 00:01:53 And yeah, and I'm announcing the topic tomorrow morning, my time, but that'll be a week out from this episode airing. Yes. All right. Well, at the top of every episode, I like to write a piece of feedback. I got this DM from Jacob saying, hey guys, really enjoyed the conversation about Zig with Andrew. The constexpr stuff seems really great. In particular, constexpr,
Starting point is 00:02:12 or it sounds like it would save a lot of boilerplate compared to C++. And he also would like to suggest Mark Homan, who has a long career in HPC and scientific computing, thinks we should have an interesting conversation with him. In particular, two topics which we haven't discussed yet, which is COCOS and distributed algebra libraries like Tepetra, which Mark is one of the authors of.
Starting point is 00:02:36 This really sounds interesting. Yeah. Personally, I had a lot of fun talking about other programming languages on here lately. Yeah, yeah. The last few have all been other languages. I'm trying to think, are there any other ones we've mentioned recently that we have not yet done a show on?
Starting point is 00:02:52 I know Zig and Julia came up a bit recently. R we've never done, that's true. R came up in relationship to Julia. Yeah. All right. Well, thanks for the feedback, Jacob. And we'd love to hear your thoughts about the show. You can always reach out to us on Facebook, Twitter, or email us at feedback at cppcast.com. Don't forget to leave us a review on iTunes or subscribe on YouTube. Since 1999, in 2002, he created company internal meetings for further education and has given training courses since 2002.
Starting point is 00:03:26 In his spare time, he likes to write articles about C++, Python, and Haskell and speak at conferences. He publishes weekly on his blog, Modernist CPP. Since 2016, he's been an independent instructor giving seminars about modern C++ and Python. In the last 10 years, he published several books in various languages about modern C++. Reiner is always searching for the best way to teach modern C++. Welcome to the show. I'm happy to be here. Thanks. You've successfully moved to online training in the last couple of years. Is that right? Successfully. You know how successfully. Sometimes we are forced to move to online. But honestly, I like online seminars.
Starting point is 00:04:06 They have a few benefits, but a few downsides. And the benefits are, for example, I can be recorded. That's a benefit. Big, big benefit. You have many participants who wants to go to kindergarten to pick up their children. So you can say, just record me. And additionally, you give, as me, worldwide seminars. I don't have to travel each day to a different hotel.
Starting point is 00:04:29 Usually I'm in 50 hotels a year, and this is sometimes too much for me. Sometimes I wake up in the night and I don't know where I am. So it's quite... So I look, where's the window, where's the door? And I know, oh, happy, I'm at home, but sometimes not. This is really an issue when you are in two or three hotels in one week, and this is now a little bit more comfortable for me. I try both of it.
Starting point is 00:04:55 That's good. I never traveled quite that much, but that experience of waking up and saying, where am I? I've never had that in a hotel room. I've only had that after I got back home. And the next morning I wake up, where am I? And I'm like, oh, right. I'm in my own bed. Okay. And then you say to yourself, I can fall asleep once more because I don't have to get up and teach someone something. Exactly. All right. Well, Reiner, we got a couple of news
Starting point is 00:05:27 articles to discuss. Feel free to comment on any of these and we'll start talking more about your training and the books and everything. Okay. All right. So the first one we have here is N2 Revisiting Ninja. In this post, the author is talking about how they're, I guess, trying to make a newer version of Ninja. And one of the key things they're changing is that instead of basing everything off last modified times, making a hash of the file and just seeing if the hash has changed. Right, Jason? Yeah, and it seems like they've had a surprising amount of success just re-implementing Ninja to see if they could make it better as well. They said it can build, what is it, a large project with like 1100 rules or
Starting point is 00:06:11 something like that? I forget what the number is. Anyhow. I have to add something. Do you recognize this strange looking URL? Neugierig.org. Do you know what this means? This is the German talk for couriers. You know, this is the reason why I'm here. He used the term in his URL. I don't know why, because he is not from Germany, due to his name. No, I did not even think about the URL.
Starting point is 00:06:40 I was astonished to read it. Did the author say whether he's putting N2 out, like if someone wanted to use it instead of Ninja as a build tool? There's a GitHub. Yeah, there's a GitHub. Yeah, okay. Yeah, so it's a drop-in replacement for Ninja, theoretically, if you're interested in that kind of thing.
Starting point is 00:06:59 That seems to be with Rust. Oh, I missed that part. Okay. Is that right? I didn't notice that either. Nope, yeah, it's definitely Rust. Okay. Next thing is update on Qt. Creator 7 has been released. And a bunch of updates in here about changes to the ID.
Starting point is 00:07:22 They're now targeting C++ 17 by default. Are you a user of Qt Creator, Rainer? A little bit ago, between 22 and 24, I used it heavily. But I looked at it three, four, five years ago as I was responsible for Defibrillator. We needed some GUI framework. And I was totally astonished how it changed in this 10 years. This was, for me, mind-blowing, honestly.
Starting point is 00:07:49 This was the last touch with Qt I had in the last years. So once more, I used it 22, 24, so forget about me. I haven't used it in a long time either, yeah. Yeah, yeah. It totally changed. Okay. Have we had anyone to talk about Cute Creator itself on the podcast? Because that could be an interesting topic as well.
Starting point is 00:08:09 I want to say we have, but it's been a while, and I don't recall who the guest would have been. We've talked about Cute before. Oh, yeah, we've talked about it a little here and there for sure. Okay, next thing we have is an update to cmake version 323 is out lots of release notes in here as always anything worth highlighting in this latest version of cmake i find it interesting that install targets command can now automatically grab headers that might need to be installed. That's interesting.
Starting point is 00:08:47 I also find it interesting because I basically know nothing about CMake presets at all, but I am working with people who do use CMake presets. And it feels like a complicated set of stuff that I'd rather not be dealing with. But now CMake presets can include other files. So now you can have levels of complexity, depending on how cynical you're feeling at the moment, I guess. I also have a mention here that the IBM OpenXL C++ compiler, which is based on LLVM, is now supported. It's referred to as IBM Clang. I think we mentioned that IBM changed into Clang a while ago.
Starting point is 00:09:25 Right. I mean, but there's a ton of little updates for installers and finders and testing. Yeah, CPAC. There's a lot of changes in here. Oh, look, a bunch of them from Craig Scott, actually, who we had on the podcast back in 2000.
Starting point is 00:09:41 Yeah, and he's the one who makes the CMake best practices book, I believe, right? Yes, but now that you said that, I can't remember the actual name of the book. Something like that. It might be CMake best practices. No, it's not best practices. It's professional CMake, I think.
Starting point is 00:09:58 That could be it. That could be it. All right. And then the last thing we have is a post on cppstories.com. And this is C++ 20 Ranges, the Key Advantage Algorithm Composition. And these posts are always great.
Starting point is 00:10:14 To be honest, I did not have a chance to fully read through it. So Jason and Rainer, I'm hoping you can help me out with this one. I think it's a great post because it's not so long, but it comes exactly to the point. And the point is, he explains the benefit of composition. He starts historically with legacy C++, how you did it before C++20, with function, temporaries, and all the stuff. Then he makes the next evolution step and uses ranges, but using function composition.
Starting point is 00:10:47 It's a little bit difficult to read, but at least you get rid of all these temporaries, which makes a lot of sense. And now he makes the final step, which means using the pipe operator. Now you can pose them and you can program in a functional style. And now it's really nice to read and you just read it and you understand it. If you are a little bit used to this syntax and you know it from Unix, the pipe operator, so come on. Yeah, that's a fair way to put it. I never really thought about it that way. Like even DOS has pipe operator, right? I'm not so sure. Maybe you're right, but I'm not so sure. DOS is too long ago for me. This was the last millennium.
Starting point is 00:11:28 Now I'm questioning my statement. I'm pretty sure it does. I can do pipe through more. Yeah. I know it heavily from Unix or Linux anyway. Right. I think maybe PowerShell can do it. PowerShell can of course do it because PowerShell is defined as a composition of bash and object orientation. When you read it in Wikipedia, you'll see bash and object orientation. And bash is based on pipes, so we have it. Okay.
Starting point is 00:11:56 Yeah, I've not gotten into PowerShell, but I know people like... Well, anyhow, I've seen people tweet about using PowerShell on every operating system they're on. Because it's easy to install. Even there's Linux packages and whatever. I can't bring myself to do that. I'm also used to Bash, so I always look for Bash shell-like syntax and my pipes operators, and then you can combine this stuff and it's quite easy to build something big out of something small.
Starting point is 00:12:24 Right. All right. Well, Reiner, obviously you have a lot going on in your bio, and we've mentioned you in some of your blog posts so many times before on the show that before scheduling you, Jason and I both thought we had you on before. I know it. Yeah.
Starting point is 00:12:43 So do you want to tell us a little bit more about, you know, how you got started blogging and how long you've been doing it for? Let me only say a few words. I started blogging in German because, you know, my English was really, really bad. So I started, of course, in German. This is, by the way, the reason my blog is called Modernness C++. Because modernness is the German term for modern, you see. I started around 2015. After half a year, people asked me, please do it in English.
Starting point is 00:13:12 I said, oh, no, my English is so bad. So I put the auto-translate button on my German blog. And this was even more worth. Therefore, people said to me, please try it at least. So I tried to translate my posts from German into English. I had on my first steps a few proofreaders who helped me to improve my English. And then I continued publishing each week two English posts and one German post until they both become lockstep. And from that point on, I write in English and translate in German, and I publish in German and English the same material.
Starting point is 00:13:54 Because what is strange is I had a poll in German and asked my reader, do you prefer to read in English or in German? And you will not believe it. Most of them want to read it in German. Therefore, I have to do it in two languages. Do you keep track of metrics, like how many readers you get on the English versus the German pages? This is a little bit of unfair comparison because my German blog is hosted on a very well, how should I say it, extremely well-known page. And therefore, I got on both pages about 50,000 readers a week. So on my own English and on the Heise hosted German version. Heise is this German platform.
Starting point is 00:14:38 In German, it's called Heise Developer. Developer should be clear for you and Heise is just the name of it. Okay. 50,000 each. That sounds like a lot of readers, though. I'm totally astonished, honestly. But you know it, Jason, the same holds for you. We are always astonished when we count our participants or readers. And also here, when you count participants or guests, or how should I say it, the listeners of this podcast. When you do something for a long time and you do it regularly,
Starting point is 00:15:10 this is the side effect. Right, right. Yeah, my YouTube channel last time I checked had millions of views, which just seemed unbelievable. I have also views, posts which were read more than 300,000 times. This is unbelievable. Wow. I don't want to say about which topic because this one is not, I couldn't say it here.
Starting point is 00:15:31 You couldn't say it, okay. What is the most emotional topic in software development or technique? Emotional. I'm not sure. Singleton, of course. don't write about Singleton or if you want to be famous write about Singleton so anyway
Starting point is 00:15:50 I should make a new episode stop using Singletons I know it now I have an issue here just cut it out cut it out since 28 I write for magazines Just cut it out. Cut it out. Since 28, I write for magazines in German.
Starting point is 00:16:15 Articles, I started with Python, but then I switched sometimes to C++. And in 2011, I wrote my first book. And this is kind of my history. How many books have you written so far? This is an interesting question. I had to count them. How many books have you written so far? Honestly, I'm never done because C++ is never done. So you can write something additionally about it. You see, we have C++ 23. So there is some change. I have to reflect this in my book.
Starting point is 00:16:54 Therefore, I'm never done. We keep releasing new C++ standards so that you and I still have a job. This is what I said to my wife two years ago. I said, hooray, I'm done. I have enough to teach until I retire with C++ 20. C++ 20 at least 10 years. From that point on, we can teach
Starting point is 00:17:13 at least 10 years C++ 20. Maybe more. That's probably true, yeah. I have still requests for C++ 11. Yeah, I still sometimes have clients that say, we're looking to move to C++ 11. Yeah, I'm sometimes have clients that say, we're looking to move to C++11. Yeah, I'm British. Really? What year is it? So of all the, you said, approximately six books, are they all in German and English? The next difficult questions. Most of them are in German
Starting point is 00:17:42 or English, but a few of them are also available in Korean, in Russia, or in Persia, if I'm right. And nowadays, a few of my stuff is translated to Japanese, which makes a lot of fun for me because I cannot help. I cannot even find my name on the cover, you see? That's funny. Is your picture still on the back, though, or anything like that? I'm not sure. I have to look.
Starting point is 00:18:11 I have it here on my right, but I will do it afterwards. When they do these translations, then, do you get a physical copy of the book also? In this case, I get three copies of it. When you do it, in the first case, you get typically 10 copies of it. 10 case, okay.
Starting point is 00:18:29 I had one company reach out to me and ask if they could do a Chinese translation of my book. And I responded with, just send me an example contract. I'm curious what the details look like. Like, you know, how much will I make, whatever. And they never responded after that. So that's where I am. Yeah, yeah. Then you see how serious this question was.
Starting point is 00:18:52 Yeah. I thought it was a reasonable question to ask. I'm like, I didn't turn it down because there's no way I'm ever going to create a Chinese translation like you're saying, like. Wonder if the discussion for just a moment to bring you a word from our sponsor. CLion is a smart cross-platform IDE for C and C++ by JetBrains. It understands all the tricky parts of modern C++
Starting point is 00:19:14 and integrates with essential tools from the C++ ecosystem, like CMake, Clang tools, unit testing frameworks, sanitizers, profilers, Doxygen, and many others. CLion runs its code analysis to detect unused and unreachable code, dangling pointers, missing typecasts, no matching function overloads, and many other issues. They're detected instantly as you type and can be fixed with a touch of a button
Starting point is 00:19:36 while the IDE correctly handles the changes throughout the project. No matter what you're involved in, embedded development, CUDA, or Qt, you'll find specialized support for it. You can run debug your apps locally, remotely, or in a microcontroller as well as benefit from the collaborative development service. Download the trial version and learn more at jb.gg slash cppcast dash CLion. Use the coupon code jetbrains for cppcast during checkout for a 25% discount off the price of a yearly individual license. So I think we talked about you most recently in a previous episode, Rainer, when we talked about your course slash mentorship program. Do you want to tell us a little bit about that?
Starting point is 00:20:16 Let me say a little bit about my motivation. Maybe Jason, you also know it. Before I give a class, I have a talk with my customers and they say what they want to have. And they most of the time are really, really ambitious. Then I go to the class, I say any keyword in C++ such as virtual and all people look in different directions. And I immediately know this was a total lie. This is a bad seminar, you know, bad class. So what I prepared for this use case is material which I can use therefore and say now we do something totally different. Now we explain to you what is OO, what are templates, so just the basic stuff.
Starting point is 00:21:00 So I did that. I created a course in which I explained what a professional C++ developer should know about C++, including core language, including library. And you know what? I ended with 450 slides, and this is way too much for a class. This would take me seven days. Okay. This is the first issue. So I have class material for a class I could never give because I will not give a class longer than three days because afterwards I'm totally exhausted. Well, and the students
Starting point is 00:21:33 are exhausted too. Three days are enough for you and for the students, of course. You know it. Oh yeah, it's very difficult to convince people that sometimes. After the second day, they understand you. Right. Maybe earlier. Yeah, and this is first my motivation. So I put all together what I think you should know, including C++17. And then I have the second issue. I'm pretty overbooked.
Starting point is 00:21:59 For 2022, I'm booked. And I already gave a few seminars to my colleagues because I cannot do it anymore. So I have here a big issue. I want to teach C++, but I cannot do it. I can only give 45 classes a year. This is what I typically do. So I thought about a mentoring program, and my idea is the following. I want to teach in nine months what I would regard you need to know to be a professional C++ developer. So I assume people which are from the university or which will change
Starting point is 00:22:36 inside the company or have a little bit of rusty C++ knowledge, and I will teach them in 28 steps in nine months what is necessary. My idea is that it should work beside the daily workload you have. So the company just gives you three additional hours and then they could participate. Because my idea is you have to invest at least three hours a week. Then you can master it. And what I prepare is the following, as I mentioned, 28 steps. It consists essentially of three parts. It has a theoretical part in which I record all stuff which is necessary. I have a lot of slides, a lot of videos, a few of them two minutes, a few of them 50 minutes when it comes to
Starting point is 00:23:25 move semantics for example. Then I have a practical part in this week when I explain the exercises and the solutions. Of course the participants get the exercises and the solutions, the CPP file. And on Friday I have a Q&A session in which the participants can ask me questions which they had during the mastering of the theoretical and the practical stuff. This is my idea. And they also can reach me by email. And additionally, because I talked about mentoring, because it's called mentoring, they can have a one-to-one talk with me during
Starting point is 00:24:05 those nine months and of course at the end because I want to help them how they can go further, what they want to do with the stuff they learned, if they want to go in more detail in one of the other areas such as concurrency, templates, clean code, patterns, and you know what I mean. So, you know, I have a lot of stuff, so I could prepare a lot of stuff. I have essentially written almost 500 blog posts, so you see there's a lot of stuff. And so I prepared something for them. Also a few of my back to basics talks. So there's a lot of stuff and of course many videos. Each week 12 to 15 and now you can multiply it by 28. So you see there's a lot of stuff I have to record. And this is my idea and I want to mentor them. And I'm a big fan of this mentoring program. Why? Because I'm also a mentee.
Starting point is 00:25:06 I'm also mentored a German guy. I see the benefit. I forgot to mention, I also want to build a community. So I have a forum because these people should help each other. Because I see a big benefit in people who want to achieve the same goal and they are really, really engaged. And I know it because I'm also a part of such a movement. But to master these programs, you need at least to invest three hours. But you can have additional blog posts. For mine, I use also one which I got from Bartok,
Starting point is 00:25:46 Bartik, which you mentioned before. Yeah. Because I know him quite good. I have a lot of material. Honestly, I'm totally, how should I say it, astonished how much material I produced the last 50 years. So I have a lot of stuff which I can build to make something big. Because I want to help people to learn C++ and I have to say from a different perspective,
Starting point is 00:26:14 I know nowadays many companies which internally create such mentoring programs. Because they want to have good C++ programmers but they are not available on the market, therefore they want to have good C++ program, but they are not available on the market. Therefore, they have to teach themselves. They have to teach them. They have to mentor them. And here's where I want to kick in. So you said it's a nine-month program. Is that right?
Starting point is 00:26:36 Exactly, yeah. And how often is the one-on-one times that you said that the students can meet with you? Two times. I have a one-hour, one-on-one meeting with one, and another one are question and answer sessions in which the people or participants can ask me questions.
Starting point is 00:26:52 And I will also record these questions in case they are of a general concern. Okay. Or I have some issue with my stuff, then I would react and do it once more. Anyway, you know, I do it the first time, therefore, of course, there are possibilities to improve or the potential to improve.
Starting point is 00:27:13 And you said that you want to build a community around it. And I'm just curious, are you going for like Discord or? For forum, which works on a question-answer base. Okay. This is my first attempt. If this will not work out the way it works out, I will do it differently. But as I mentioned, I'm also part of a mentoring program, and here it works quite good. So if your students, they sign up for the nine-month program, do they then have access to that forum forever? For this nine months. For the nine months, okay. This is a good point. I will not go into any extremely advanced stuff. The idea of this mentoring program is to enable you to dive
Starting point is 00:28:02 afterwards into more advanced stuff. Right. And when this works out, and it seems it will work out quite good, I will create additional mentoring programs in which I make these additional topics, such as concurrency, such as generics, such as design patterns, such as clean code or call best practices,
Starting point is 00:28:24 such as embedded, maybe such as how can Python and C++ interact in some way because I'm also a Python trainer. So extending embedded is the keyword here. And this is my idea. I want to build something which helps the people in the first step, but also gives them an additional way to go. And I'm quite convinced that this is an extremely good way to teach something. When is this first round of mentoring? What's the actual start date here?
Starting point is 00:28:57 22nd of April. And until the 17th of April, you can register for it. Up to the 17th of April, okay. Okay, so listeners should have like a week or two to sign up when this comes out. This is my point, yeah. And in the first iteration, I will publish each week after each other. And in the second iteration, which may happen next year, each one can do it self-paced. But so far, I cannot pre-produce all the stuff. This is a lot
Starting point is 00:29:27 of stuff, in particular the videos, you see. I'm now at week 11, so I'm quite good, you see, 28, but this is a lot of stuff you have to pre-record. That sounds like a lot of material. When did you actually start the planning process for this? I had it in my mind since maybe 10 years, honestly. Since 22, I worked in company intern first education. I hope you know what I mean. I created a group to learn new stuff. I did a 20 former company and I'm always involved in some way of helping people to become better. Because this is what I like, this is what I love. And honestly, since 28, I give remote seminars, so quite a time.
Starting point is 00:30:14 So I strongly believe that this kind of education or teaching is better than a classical class in which you stand three days in front of someone. After three days, they are totally exhausted. Maybe they don't have the time to apply the theory in practice. You should accompany them and mentor them for a longer period of time. And my idea is that the companies will accept that and they just get three additional hours per week. And this is all.
Starting point is 00:30:47 And then they can come to me. This is my idea. So how much does the program actually cost then for our listeners who are curious? First of all, we have to call it, name the unit, Euro, 2,250. Which is only because it's the first iteration, honestly. Because in the first iteration, I have to improvise sometimes a little bit. It would be a 20, 25 days class when you would do it in the other way. So you see, this is a lot of content.
Starting point is 00:31:19 Oh, yeah. If you looked at it as a 20-day class, then it's basically free. I mean, relatively speaking. It's not free, but it's affordable. Let me say it in this way. And it's open to people anywhere in the world as long as they have a credit card that will let them buy something in Euro. Yeah. You see, the only people who have problems to buy something.
Starting point is 00:31:40 Sorry, I don't want to annoy you other people from the US. You can use bank transfer. You can use Stripe, meaning each credit card. You can even use PayPal. So any, how should I say it? All without often check. Okay. Yeah. It shouldn't be a problem for pretty much anyone then. There's one challenge here. I have people from Australia and from the US. Right. Oh, yeah. I will probably make two Q&A sessions at Friday. One for the Australian people and one for the US people because there is no overlap regarding time here. Is there a certain number of mentories
Starting point is 00:32:20 who are hoping to get enrolled? How many slots might be left or you opened as many people as i don't have a limit honestly because when there are too many people i will make additional q a session which makes it easier for me because now i can do it exactly in the time zone the people wants to have it. I assume that there will be today I have about 50 people, but so far I have not officially started.
Starting point is 00:32:52 There are still three weeks left, and I assume that there will be 30, 40 people, something like that. Okay. This episode, just to make sure we all understand, will air on Aprilil 8th or the night of april 7th depending on when it actually goes out something like that and as far as u.s time
Starting point is 00:33:14 eastern time is concerned so our listeners should have at least a week to decide if they want to get involved and figure out how to pay you and all that kind of stuff. And of course, they can directly contact me if some question arises or something like that. Right. I was just considering some interactions that I've had with some of our C++ community in Nigeria, which has sometimes a very difficult time with international banking because unfortunately there's so many scams that come out of that part of the world and so if someone from like Nigeria for example is having a hard time getting payment through they can assume contact you directly and try to figure out the details yeah this is really really this is the hardest issue I was already blamed by my wife that I made an error
Starting point is 00:34:05 because my wife is responsible for the money, you see. I only do the easy stuff. I only teach C++. She does the heavy, heavy stuff. And therefore, I enabled all what is possible. I hope that for each one, there's a way to do it.
Starting point is 00:34:23 And if not, contact me. We will find a way, I assume. Because you know it, Jason, when you give international training, sometimes it's really difficult. Fortunately, that has always worked out for me. International bank transfer has always worked out for me when I've gone to a company. I haven't had a problem with that. Although I did just the other day have a problem getting payment from someone, a relatively small payment over PayPal.
Starting point is 00:34:47 But it turned out it was actually a problem with their PayPal account, not a problem with anything else. And PayPal is quite expensive. 8% or something like that. Stripe is only 3%. This is also something you should consider. And I had a few issues with payment, but I think we can handle that. Okay. So with all the work you've been doing training C++ developers over the years,
Starting point is 00:35:15 are there any particular mistakes or things you find yourself teaching a lot to C++ programmers in your classes? Let me do it a little bit differently. This is not C++ related. I think we should have an extremely, we should have a mindset. Never assume that you are done learning. This is for me the most important point. And when you put it another way,
Starting point is 00:35:42 when you today read the code you used two years ago and you don't want to change it, this means you learned nothing in between. Right. And you should always be open to the new ways to program something and always question the thing how you do it or how you did it. And this is an extremely important observation. Let me say it a little bit different. Maybe you do it or how you did it and this is an extremely important observation let me say it a little bit different maybe you know it i have three educations i'm a male nurse i'm a parametric and i studied mathematics so now i'm more a mathematic guy and what i like about my job is that i'm always challenged to learn something new. This is what I love about training.
Starting point is 00:36:27 I have the time to learn this new stuff. Sometimes it's a little bit more complicated, such as coroutines. But you know what I mean. Does C++ actually have coroutines yet, since there's no support library for them? Sorry, I was just being a little cynical here. No, we have coroutines yet since there's no support library for them? Sorry, I was just being a little cynical here. Now we have coroutines for one reason. Haskell has monads, we have coroutines. This means when you are a kind of a writer, you have to write in some day in the future a tutorial about explaining coroutines. Such as each one writes a tutorial about coroutines and at least one understands it, the writer,
Starting point is 00:37:09 but no one else. I see what you're saying. And this is the same about monads. Each has the special view on monads in Haskell, so we have coroutines. Right, yes, it's that joke that once you understand monads, you have to write an article about it, but there's no way to, yeah. We will do the same with coroutines in C++.
Starting point is 00:37:30 Huh. I also wrote about coroutines, and the guy reading it said he didn't understand it. But at least I understand it. I assume at least. Hopefully in the future, when we have more library support, they'll be more understandable, but I guess we'll have to wait and see on that one. Yeah. I was thinking about your comment that you need to have this mentality of always learning because I've had a few classes where I come in and I'm like, oh, so this is the whole team that's here. And they're like, well, it's the whole team except for Bob, because Bob is our expert and he already knows all this stuff. And I'm like, I think Bob should probably be in the
Starting point is 00:38:09 class too, because it's like, I'm always nervous about the one person that they say they already know all this stuff, therefore they're not in the class. Do you know what kind of class are the most difficult ones? When you have two people in the class who wants to prove they are the smartest one in the room. And they challenge each other. And here you have to be extremely careful. I often say to these people, I will not answer any question in front of the others. I only will answer your question in the breaks.
Starting point is 00:38:44 They can destroy your class. I don't think I've ever had that particular problem. I had sometimes an extremely nice experience, which was extremely interesting. I gave a workshop in front of 100 people. So a big, big workshop. That's huge. It was really huge. It was a part of a conference.
Starting point is 00:39:06 And always there was one participant who always questions my sentences. And after four hours of this six-hour workshop, one stand up from the other participants and said to this special guy, please stop asking your questions. You only annoy us. And you know what the other people did?
Starting point is 00:39:29 They applauded. 50 people. And what was more interesting, the guy who was the man who always asked this sophisticated question was not going outside. He just waited. He, of course, stopped to ask questions, but this was extremely interesting. This never happened to me. Yeah, sometimes I have the student that asks questions that are completely irrelevant to the topic at hand at the moment, and I have to say,
Starting point is 00:39:59 well, we'll talk about that later. Sometimes I have the student say, this is a stupid question, and I'm like, no, please, if you think your question is stupid, it's the question that literally everyone needs answered in the room right now. It's probably like I forgot to cover some basic topics. So your question means we need to go backwards a little bit. In this regard, off-site trainings are better because you can talk to them one by one and no other will hear what you talk with him or her. Okay. Just funny to think about all of these different aspects because usually... So one thing that I missed in the few remote trainings that I've done is that the best questions I get tend to be during the break or during lunch. So I'll say, okay, we'll take a
Starting point is 00:40:45 break. And then someone will come up and be like, well, I didn't think anyone else would care about this question. But, and I'm like, that question's perfect. That question's amazing. We need to talk about that question when everyone comes back. But when I've done remote training, no one has done that. They don't like, you know, send me an IM or ask for, you know, to give me a quick question. Maybe it's my classes are just not organized well for that. This is exactly what I miss in online trainings. We need a way to make a one-to-one communication. And this is for what I hope you can now do it with this conference tools, but not with Zoom. Right. And I just want to look at their
Starting point is 00:41:26 screen and see how good they are with my exercise and if not i can help them directly but this is not possible in our online training this is one of the stuff i don't like about online training so there are benefits and the opposite of it right out of curiosity i mean you're in germany right we've talked about that are on-site trainings currently a thing in germany do you have any on-site things scheduled only the last two weeks all other trainings were online last week week before i was in switzerland and a week afterwards in some point in germany but I assume that also in the long run, two-thirds of the training will take place online. This is more than just a COVID thing.
Starting point is 00:42:16 This is a movement because you know about pollution, about how expensive petrol is and stuff like that. This will go in this direction. And additionally, when you give a seminar outside of Germany, the customer has to pay my flight, my hotel. So it's way, way, way more expensive. Right. I definitely know in our industry,
Starting point is 00:42:41 people are not really necessarily anxious to go back to the office. No, they're not. So many articles, at least in America, about when Google says everyone has to come back to the office, how many of them are going to quit instead of coming back to the office? Really, Google? Any of the big companies. Because Google and Apple and Microsoft have all been talking about that. Because people say, well, C++ programmers or whatever,
Starting point is 00:43:07 IT people are in hot demand right now. I can find a remote job. I don't have to go back to your stuffy office in expensive Silicon Valley or whatever. This is a good point. This is something that is special for the US. We have no Silicon Valley. Yeah, it is a very expensive area. No, we have expensive areas, but not in the case you have it.
Starting point is 00:43:27 Such as Munich is quite expensive or Berlin, but forget it. Don't compare it with London, Paris or the stuff you mentioned. Yeah, San Francisco. Amsterdam is one of the most expensive cities in the world too, I believe. If you want to be in the core of Amsterdam. Okay, maybe. I only sometimes had interview with Facebook, which was London.
Starting point is 00:43:47 I was totally astonished. You know, now I have a big, big room, which is extremely comfortable. This one I could not afford in London. And this is for me really, really bad because I want to live not in a big town and I want to have a nice surrounding with a lot of nature. And this is, of course, not possible in London.
Starting point is 00:44:11 No, not in London, no. But there's plenty of rural Germany accessible to you. Yeah. Before we let you go, I think you have some conferences coming up. Can you tell us a little bit about what you're planning on doing at ACCU? At ACCU, I give talk about hidden pearls in C++, meaning C++20, sorry. With the hidden pearls, I mean all minus the big four. Coroutines, modules, ranges, and concepts, of course.
Starting point is 00:44:39 Because C++, there's so much stuff inside. Just think about the Chrono library. You need 80 pages to describe it, more than coroutines. Wow. So if you have enough time, Rob and Jason, study it. There's a lot of stuff in the Chrono library. A lot of additional clocks and so on and so on. Right.
Starting point is 00:45:03 Yeah, I keep meaning to go back to the changes in c++ 20 for chrono and i haven't done that yet i need to do a c++ weekly episode about chrono entirely which i haven't done so yeah you have now a date you have the daytime there's a lot of additional stuff now all the calendar features too right yeah this is incredibly but also a little bit challenging to understand. Right. To say it a little bit.
Starting point is 00:45:31 So Rainer, if our listeners are interested in signing up for your mentoring program or just finding other stuff online, where's the best place to go? Oh, there are many places. What should I say?
Starting point is 00:45:42 You can read my English, my blog posts, more than this, c++.com. I emphasize.com, not.de. Okay. I explicitly choose templates because people know too less about templates. We have a big templates issue in the C++ community. And afterwards, I continue to write about C++20 and I started with C++23. But of course, you can find me
Starting point is 00:46:16 on Twitter. You can find me as a mentor. Sorry, there are many ways to find me. All right. Thank you so much for coming on the show today. I'm happy that I was your guest. Thank you. Thanks so much for listening in as we chat about C++. We'd love to hear what you think of the podcast.
Starting point is 00:46:33 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
Starting point is 00:47:06 at cppcast.com. 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.