CppCast - Mentorship
Episode Date: April 7, 2022Rainer 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)
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.
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.
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,
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.
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?
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.
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.
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.
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.
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
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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,
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.
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
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.
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.
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
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
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.
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.
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.
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++
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
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?
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.
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
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.
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
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
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
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.
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,
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,
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?
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.
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.
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
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,
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?
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
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.
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.
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.
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.
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
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.
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
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
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.
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.
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,
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,
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.
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,
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++.
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
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.
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.
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?
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,
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
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
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.
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,
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,
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.
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.
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.
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.
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.
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.
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?
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
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.
Please let us know if we're discussing the stuff you're interested in,
or if you have a suggestion for a topic, we'd love to hear about that too.
You can email all your thoughts to feedback at cppcast.com.
We'd also appreciate if you can like CppCast on Facebook and follow CppCast on Twitter.
You can also follow me at Rob W. Irving and Jason at Lefticus on Twitter.
We'd also like to thank all our patrons who help support the show through Patreon.
If you'd like to support us on Patreon, you can do so at patreon.com slash cppcast.
And of course, you can find all that info and the show notes on the podcast website
at cppcast.com.
Theme music for this episode
was provided by podcastthemes.com.