CppCast - C++ London Uni
Episode Date: May 31, 2018Rob and Jason are joined by Tom Breza, Oliver Ddin and Tristan Brindle to discuss the C++ London Uni group and their approach to teaching C++ to the community. Tom arrived in London at age 22 ...with £200 to his name, not knowing a single person. After 6 months Tom managed to start business - PC Service, that provides IT support to SMBs and runs it since then. Tom's team help many customers from small businesses to top celebrities and Royal Families. Now with over 20 years of experience, Tom set his mind on new challenges and decided to learn software development, specifically C++ and helps others to learn through C++ London Uni. Oliver has been a C++ hater since 2008 - fortunately, that all changed with C++11 and he's firmly an enthusiast now. He's spent his time doing everything from embedded devices to network engineering and now Internet security related endeavours. He's a big proponent of writing software in a style driven by some form of testing and its place in pushing you towards well-architected, maintainable code. In his spare time he also co-organises C++ London Uni which provides free lessons for people wanting to get into developing C++ and the wider ecosystem around it. Tristan is an independent contractor and C++ enthusiast based in London. He’s particularly interested in standardisation and making C++ an easier language to use and teach. He can be found on Twitter @tristanbrindle and occasionally blogs about C++ at tristanbrindle.com. News Bjarne Stroustrup P0977r0 "Remember the Vasa" Celebration of Towel Day with awesome pieces of code that print 42 Pacific++ Call for Speakers CppCon Call for Program Committee Members Tom Breza @TomBreza Oliver Ddin @olipro Tristan Brindle @tristanbrindle Links C++ London Uni Sponsors PVS-Studio The Evil within the Comparison Functions Patreon CppCast Patreon Hosts @robwirving @lefticus
Transcript
Discussion (0)
Episode 152 of CppCast with guests Tom Brezza, Oliver Dinh, and Tristan Brindle, recorded May 30th, 2018.
This episode of CppCast is sponsored by PVS Studio.
One of the most powerful static analyzers for C, C++, and C-sharp source code,
PVS Studio will let you detect errors and potential vulnerabilities at the earliest stage.
Try the demo version today at viva64.com.
In this episode, we discuss a warning from Bjarne Stroustrup to the ISO committee.
Then we talk to Tom, Oliver, and Tristan from the C++ London Uni.
They talked to us about how they've been teaching
C++ in London 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, but you know, 152 episodes.
So I was just interviewed by another podcast, and that will be coming out relatively soon.
It's embedded.fm. And I could not remember how many episodes of CppCast we had done
during that interview. I felt terrible. I'm like, it's 150. That can't be right. It can't be 150.
Maybe it's 120.
I don't know, basically.
Well, how did the other interview go with Embedded FM?
I think it went well.
It's weird being on the other side of the table, as it were.
Hopefully, they think it went well as well.
I haven't heard of that one.
Have they been around for a while? Honestly, I'm heard of that one. Have they been around for a while?
Honestly, I'm not sure.
I think they've been around for a while, yeah.
I'm not sure how long, though.
I'll have to look into that.
They probably said what episode number it was at the beginning,
and I didn't remember.
Okay.
Well, top of every episode, I like to read a piece of feedback.
When I was editing last week's episode, I posted a tweet. I recently got a new kitten for my family, and it's a couple of responses to that. One was from Fabian saying,
love the pre-show notes.
Is Jason not clicking his pen?
Which is something we've had in the show notes
for like the past 120 some episodes.
Around about, yeah.
Yeah.
It was funny because I saw that tweet.
Yeah.
Yeah, click.
I saw the tweet,
but I didn't realize how high resolution of a picture it was until someone else commented.
I'm like, how in the world did they?
So I had to click and open it and like, oh, my goodness, yes, that is like everything right there.
Legible.
And Patrice also posted a reply saying, I understand this very much with his, how many animals did he say he had last time we had him on?
Oh, I don't know. It's an always changing number number and i really don't know what people were complaining about previously well we love to hear your thoughts about the show uh 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 uh joining us today we actually have three guests, Tom, Oliver, and Tristan.
Tom arrived in London at age 22 with 200 pounds to his name, not knowing a single person.
After six months, Tom managed to start a business, PC Service, that provides IT support to SMBs and runs it since then.
Tom's team helps many customers from small businesses to top celebrities and royal families.
Now with over 20 years of experience,
Tom set his mind on new challenges
and decided to learn software development,
specifically C++,
and helps others to learn through C++ London Uni.
Oliver has been a C++ hater since 2008.
Fortunately, that all changed with C++ 11,
and he's firmly an enthusiast now.
He's spent his time doing everything from
embedded devices to network engineering and now internet security-related endeavors. He's a big
proponent of writing software in a style driven by some form of testing and its place in pushing
you towards well-architected, maintainable code. In his spare time, he also co-organizes C++
Londonuni, which provides free lessons for people wanting to get into developing C++ and the wider
ecosystem around it.
And Tristan is an independent contractor and C++ enthusiast based in London.
He's particularly interested in standardization and making C++ an easier language to use and teach.
He can be found on Twitter at Tristan Brindle and occasionally blogs about C++ at tristanbrindle.com.
Guys, welcome to the show.
Hi.
Yeah, hi.
Thank you very much.
That was the longest bio I think you ever read.
I don't know.
It's over a guest's headlong bio.
Yeah, so real quickly, Tom, can you just introduce yourself so people can get the voices associated with you?
Yes, of course.
So my name is Tom.
So I'm the initial person behind the uni. But obviously, well,
the uni wouldn't be uni without my colleagues. So pretty much that that's me. And you pretty
much summarize what I did in the last 20 years. Apart from that, obviously, I got some family,
two wonderful boys, and I spent my days in uh well now a bit rainy uh
london okay all rainy london who'd have thought yeah rainy london uh yeah hi guys yeah so i'm
oliver uh obviously i currently work in london i've um been to fewer places as well uh obviously
a very keen c++ enthusiast i'm very excited excited to be on CppCast as well.
It's great to have you. And Tristan?
I'm Tristan. I'm the English
guy who isn't Oliver.
You're not English.
You're Australian.
Well, both.
Or both, yeah.
Is there
more of a story there? Did grow up in australia or
something uh no i um i moved over there oh nearly 10 years ago and um stayed there long enough to
go through all the immigration procedures to get citizenship and then uh uh moved back
back to uk last year so as soon as you became a citizen you moved back to UK last year. As soon as you became a citizen, then you moved back.
More or less, yeah.
Mission accomplished, yeah.
Yeah, exactly.
Okay, guys.
Well, we'll be talking a lot more about C++ London Uni,
the project you guys are all working on.
But first, we just have a couple news articles to discuss. So feel free to share any comments you might have about these, okay? Sure.
This first one is a paper from Bjarne Stroustrup
that he submitted to the ISO C++ committee.
This is an interesting one. He's not proposing any new features or anything.
He's kind of actually criticizing the amount of other proposals
that are currently out there going to the committee.
This is titled Remember the Vasa, which is a reference to a story I had not heard of before reading this.
But it's a Swedish ship that went through so much redesign that it sank immediately after leaving the harbor.
And it's something that the CPL host committee used to reference a lot.
Apparently,
um,
make sure the language doesn't get too complicated or it's just going to
sink,
I guess.
And that's what he's worried about with all the papers currently going into
C++ 20.
Yeah.
And,
and he lists here 43 papers and they are specifically,
I think only from the
I thought there was a comment here
but he chose only a specific number of authors
never mind, I misread that
so never mind, I don't know what I'm saying
but 43 papers that are in flight at least
for this Coe Standards meeting
and he did mention that several of of those papers are are ones that
he has endorsed himself or or is you know a part of but uh yeah yeah it's it's yeah i i i i do
wonder myself um if we're at risk for leaving behind the average programmer,
the daily C++ programmer,
in favor of the cool and interesting new features that we want to add.
Yeah, and I feel like that's something that the committee maybe should focus a little bit more on. Do these features really help the average C++ programmer who is not a member of the committee?
Do you guys have any
thoughts on this as average C++
programmers or people
taking average C++ programmers?
Oli, Tristan, do you want to start?
Yeah, sure. I mean, for me,
I think he's got a point.
The number of papers that were submitted
for Rapperswill
is obviously a very large number.
Me and Tristan, actually, are at the BSI, the British Standards Institute,
the national body, obviously, where these were reviewed.
And there was some brief discussion on it.
Yeah, he has obviously got a point.
It was interesting to see that out of the list he gave,
there's only sort of a couple he sort of explicitly starred and was like, oh, I really like these.
I kind of remember a number of years ago he was sort of also complaining like, oh, the committee's kind of moving too slow and, you know, not doing enough.
So I was sort of sitting there thinking, oh, well, you know, I don't often complain about there being too many papers in the proposal list.
But when I do, I make it a proposal.
No, I do. I do kind of agree with him um i think part of the problem as well seems to be that you know for the things that are in flight like um doors co-routines or um also 2d graphics you
know we're seeing these papers coming in that are then saying well actually we don't like this
so here's a completely different way of doing it, and we could use this instead.
And I think that's sort of many people
inserting their own ingredients into the pot.
But whether that's a bad thing or not, I don't know.
Well, and he kind of comments that
there doesn't seem to be a lot of work done
with saying how will these features interact
with other proposed features.
It almost strikes me as drug interactions in a way,
like by the time you're on 15 different prescriptions or whatever.
I think that's something C++ already does have quite a bad reputation for,
so it's definitely something that should be borne in mind by the committee
when they're reviewing papers,
is how are these proposed
facilities going to kind of gel together i mean yeah i agree with that but you know what we'll
probably end up seeing then is that c++ 20 will throw in these new features and it will end up
being like c++ 14 was like oh we discovered all these defects whoops we should fix those
i mean from the from the position of the let's say the newbie i'm among here uh it's you
know there's lots of lots of uh interesting projects but i would basically personally
like to see a project like a prioritization of the project that might help uh people who
want to start with the obviously with language because language is fairly fairly
difficult if you compare to the high level languages like python and javascript and so on
so it it it requires more uh for people to to do so i was trying to learn boost uh some time ago
couple of couple of days ago and in order to do the first tutorial i spent like eight hours trying to set
up a c make because there were conflicts with a version so if i like okay eventually after eight
hours i did manage but i can imagine not many people would be happy to spend so much time trying
to run a tutorial the first tutorial not some advanced tutorial just the first one to display hello world with a delay of five
seconds so so yeah it was a steep learning learning curve for me on that one i mean
sorry go on no i just said wow oh okay yeah i was gonna say like uh that's probably more than me if
if it took you eight hours and you've learned the entirety of Boost, though, that's pretty impressive.
I don't know all of those libraries. The amount in it is crazy, but I definitely understand your woes.
I mean, Boost.build, obviously, if you're trying to sort of make it work and you're CMake-based, it's not the most pleasant of experiences.
Although, I mean, one of the good things about Boost as well
is that a lot of it is header-only,
so you can avoid a lot of that pain in certain cases, obviously,
not all of them.
Some of the libraries require compilation.
Right.
Let's pause again real quick,
because it looks like Tristan dropped off the call.
It's dropped, yeah.
Yeah.
And, Oliver, we're still getting a lot of clicking
from your speaking.
I might try and find an alternative,
because this microphone works great if I just don't wear the headset.
I need to be able to hear you.
If you have a minute waiting for Tristan to come back on,
if you want to say you can find an alternative.
Let me pause Audacity one sec,
and let's try something else.
No, no, don't pause Audacity.
Okay, I just did.
Okay, I've unpaused it.
All good. Hopefully I can make Skype
switch my audio.
Now Rob will have to figure out where
that three-second delay is
to try to line it back up again.
Okay.
Can you hear me?
Yes.
Alright, can you hear me yes yeah all right can you hear yourselves
my laptop decided spontaneously remove i don't know what happened i can only apologize
hopefully i'll be okay now okay uh i'll try to get a different microphone right now
i've just moved my headset can you hear me okay and you can't hear yourselves
yeah i'm okay i can hear you yeah loud and clear then can't hear yourselves? Yeah, I'm okay. I can hear you.
Loud and clear.
Then it's all good now because I'm not wearing the headset, so it's not going to click.
Interesting. Perfect. Now, on the actual waveform,
do you see it recording both of us?
Say something.
Test, test, test.
One, two, three, four, five.
It registers, but the waveform
is barely there.
That'll work. 1, 2, 3, 4, 5. It registers, but the waveform is barely there. What do you want, Robbie?
That'll work.
All right.
I hypothesize you'll end up going with the merged recording regardless.
Yeah, it might be easier.
Okay, so we're going to go on to the next article.
All right.
Ready?
Yep.
Okay, and next one we have a celebration of Towel Day with awesome pieces of code that print 42.
And this was posted on Fluency++, Jonathan Baccarat's blog, May 25th, which is Towel Day,
which is a reference to the Hitchhiker's Guide to the Galaxy novels.
And this is just kind of a fun post showing all these different ways of
printing out 42 in a simple C++ program.
I say simple, but some of them are actually pretty complex.
The first one is, you know,
just prints out 42 with 42 characters of code.
I thought that one was kind of nice.
Yeah.
But yeah, some of these were pretty beautiful actually
yeah the second one i'm still like i've read it a couple times but still a little lost
on so it's a random number generator it quote randomly pools number of letters from a bag
until it gets the string that says what do you get when you multiply 6 times 9? 42. But
clearly it has to be seeded
with some known value for this to work,
but I don't see where that's
happening. Maybe it's
seeded with a random device,
the seeder, it's the
Mersenne twister, but I still don't
see. It's fun
though, anyhow.
A lot of fun examples in here.
It looks like this article is more at me,
because of the lower entry level.
Yeah, I mean, I didn't hear about the celebration,
but I did try to run some of the code
that would actually produce in my own version.
I was very ambitious.
I tried to do 42.
I stopped after five,
but I print out five versions I tried to do 42. I stopped after five, but I print out like,
you know,
five versions of how to get 42.
And I remember I was basing this on,
there was one guy called,
I think,
Leftisius,
and he was doing a funny way of printing,
the most weird way of printing Hello World.
That was quite fun.
It was like a video podcast type thing.
Sometimes you could check out.
Quite nice.
Was that Lefticus, do you mean?
Yeah, yeah, yeah.
Who could that be?
Oh, who could that guy be?
I wonder.
Oh my goodness.
Was that actually you?
I forget what episode that was that I just said.
And now I'm going to print Hello World the most complicated way I can, I think.
I forget where it was.
Yeah, yeah, yeah, yeah, yeah, yeah, yeah.
This was a C++ Weekly episode?
It was a C++ Weekly episode that has like a Lambda,
immediately invoked Lambda for no good reason at all
that's capturing and printing something right in main.
I forget what it was now, though.
Last thing we have is a little bit of conference announcements
and not so much announcements as requests, actually.
The first one is Pacific++.
They still have an open call for speakers.
I think they have all their keynoters,
but they're still looking for more presenters for the conference.
Right, Jason?
Yeah, and we know how this goes every year.
People wait until like five minutes after the deadline to submit your conference talks.
But I do recommend that you don't do that. it makes it much easier on the conference committee, or the conference organizers, if they know,
hey, we actually have enough people submitting talks this year, whatever.
So if you have any interest at all in going to Pacific++,
I do recommend you go ahead and submit your talk.
Let's see, the submissions close.
Well, it says June 17th.
But let's say, for the sake of argument, it closes June 10th.
So go ahead and get your submissions
done in the next week good good suggestion okay and then the last one is uh cpp con they already
are past their call for speakers but they are looking for program committee members and this
is the the people who go about uh evaluating submissions and deciding which talks are
actually going to be part of the conference.
Yeah, and I think they might have gotten a record number or a very high number of submissions,
so they have a lot of submissions to go through.
Definitely need the help.
Okay, so Tristan, Tom, and Oliver, we went through the introductions
and mentioned C++ London Uni a bit.
Can you start us off by just explaining what exactly it is?
Yes, sure.
I mean, the C++ London Uni is, well, it's our group.
It started basically a couple of years ago.
I started playing with Arduino and so on,
and I wanted to learn a bit more about software development
because I had a small accident where I built an alarm clock with Arduino potentiometers and so on.
And I wanted to create an alarm for 7 o'clock in the morning.
And I had a problem how to compare hours and minutes on a time with the set for
alarm and I come out oh why not to add them and that's giving me a figure yes
so 0 7 at hours plus 0 0 that's 7 simple which I didn't actually think through
that will be because I finished like doing that after midnight so 6 minutes
past 1 o'clock will equal to seven as well so
i woke the whole family uh my wife wasn't very impressed with me and i decided that i should
actually do something about you know learning some coding and so on so i started going for
udemy courses and so on reading some books and so on but i was constantly looking for something
else like like a on-site course so
i said okay i'll go for the course in london i did uh it was okay that the book was which we've been
going through a textbook was was very old but really explains very well but the course was
extremely packed so i couldn't actually there was no time to to go with people you know through the information chat and do katas and what have you it was like go go go go and everybody disappeared
to home so i said like that's not really this one so i found uh the meetup uh which is run by
phil nash obviously so i said oh okay i'll you know first i there, and after hearing how complex the charts were,
so I just basically chickened out and I ran away, didn't go to the pub.
I just quietly left the room.
But I said, okay, I can't leave it like that.
So I come back, and I start talking to Phil, and I had a really devious plan.
I said, I know what I will do.
I will convince Phil he should start something like it,
like a club where people can go and teach, and I will just jump in, and I will do. I will convince Phil he should start something like it. Like a club where people can go
and teach and I will just jump in
and I will participate. It will be nice.
Well, Phil was better at negotiating than me
so he convinced me to do that.
That's how the uni started.
So we have weekly classes
and
basically we try to teach people for free
to become software developers.
Guys, do you want to add something?
Sure, yeah, I can.
I mean, obviously, from my perspective, it's a bit different because you were the one that sort of spearheaded it. But, yeah, I mean, I remember very well.
I can't remember how I sort of heard it.
I'd shown up to one of the main C++ London events.
And I think it may have been Phil even that told me that this was happening and, you know,
I should go and check this out.
And I think you were sitting at a table down at Codenode.
And then obviously we had a chat.
And then, of course, I showed up at the very first one
and sort of got a feel for it.
I think you'd already pulled Tristan on board,
but I think Tristan can speak more to that.
And then obviously, you know, I think I missed the second lesson,
got into the third, and then sort of stuck with it.
And, you know, we've all arrived here now.
So it's been, I think it's been great lesson, got into the third, and then sort of stuck with it. And we've all arrived here now, so I think it's been great.
Tristan, what do you think?
Yeah, so for those who don't know, C++ London is a monthly meetup for C++ developers in London,
and it's run by Phil Nash.
And one of the sort of announcements at the start was that they were starting this new thing,
C++ London University, as it was then.
And I thought, well, you know, that'd be fun. I'll get involved, see what I can do.
And whatever we are now, six months later, I'm still involved.
Eight months.
So eight months, and you've been going every week for eight months?
Yeah, pretty much.
I think we had a couple of fiestas.
We had a couple
of weeks off over the summer.
Or Christmas, rather.
I mean, pretty much
every week apart from a situation
where it's Christmas or something like it.
But apart from that, yeah, we did
manage to keep to weekly schedule. At the beginning, I think we lost one week where we couldn't secure
space because obviously we need a physical room where people can meet up. And, you know, when you
do it for free, you don't pay, you don't always get what you would like to get. We rely a lot on generosity of lots of supporters, businesses and the like.
Okay, so I'm curious now.
Tom, you basically, through Phil's finagling, started this university without knowing C++.
Is that correct?
Well, yes, that's correct.
I don't know any other language.
Well, I don't know C++, yes, correct? Well, yes, that's correct. I don't know any other language. Well, I don't know C++, yes,
as to become a developer.
Maybe Oli can disagree with that a bit
because he checked my knowledge with Tristan.
But yeah, I didn't know any software development language.
I didn't know definitely C++
because there was nothing there.
So nobody wants
to do it. So I
had no much choice than do it.
Okay, so have you
met your goal of learning
C++ in the last eight months?
Well,
yes and no. It's
a two-sided sword. It's basically
on one side
I don't put enough
attention sometimes during the class because I have
to answer people's questions
online,
do lots of arrangements, which is
associated with running
our meetup.
So I might not always participate
as fully as I would like to.
But on the other hand, that as well benefits
me because you have to start.
You can't just say, oh, well, I'm tired today.
You know what?
Today actually is a very nice weather.
I'll go somewhere else.
And just, you know, like learning,
I'm a great believer of learning like children do, yes?
You don't send a toddler to school to learn English.
They learn by just practicing and doing it.
So even if I don't, i'm not fully 100% concentrated
because i'm constantly bombarded with the information this information stays and i'm
starting to connecting the dots together and obviously at some point that's you know blossoms
in a way like oh actually i can do this and and i can i can start creating some basic code and a little bit more advanced code.
So, yeah, great on that side.
All right.
Yeah, so, I mean, Tom's a great example, really.
I mean, you originally, well, you can disagree if I'm wrong,
but you originally wanted to do this for yourself to learn, essentially, right, Tom?
Yeah, of course.
Yeah.
I'm still doing it.
Exactly.
So that is precisely where I wanted to go with this.
I mean, in terms of your progression,
like going from essentially not really knowing anything
to going through our lessons where we're teaching you,
okay, here's the basic language syntax,
here is how to use the various standard library containers,
vectors, obviously one of those obvious ones we covered,
and then obviously seeing you get to the point now
where you're able to write code,
you've got knowledge of structures,
and also doing even somewhat more advanced stuff like approaching inheritance
and to some degree architecture.
I would say you've come a long way without wanting to sound too deferential.
Thank you.
Obviously, you can always go further with C++, right?
The language is constantly changing.
Well, number seven is my goal
on the scale of one to ten.
Yeah, exactly.
But no, it's been
great, and I think everyone who's been on the
journey with us in terms of
C++ London, we've had several other people as well
who've done really, really well.
And it's really good to see as well
as part of what we want to do is
help people give back to the community, and it's then great to see as well. It's part of what we want to do is help people give back to the community.
And it's then great to see that actually pay off.
I want to interrupt the discussion for just a moment to bring you a word from our sponsors.
Development of qualitative software is impossible without the use of static code analysis tools.
These tools enable you to detect code vulnerabilities and ridiculous typos.
By the way, many developers tend to underestimate the typos issue.
That's why we suggest reading the article, The Evil Within the Comparison Functions.
One of the most powerful static analyzers is PVS Studio. This tool detects errors and potential vulnerabilities in the source code of programs written in C, C++, and C Sharp. It works in
Windows, Linux, and macOS environments, and it conveniently and easily integrates into the Visual Studio IDE versions 2010 to 2017.
Try the demo version of PVS Studio and find errors in the code of your project today.
So what is the target audience like?
Do you have a lot of people who are coming into your classes completely fresh, not knowing much C++ or not knowing any C++?
Yeah, absolutely, we do.
We get a whole gamut of people.
So, for example, at the moment,
we've restarted our classes
and we've had a fair bit of community-based
sort of promotion, if you like,
from people who were from JavaScript
or sort of similar backgrounds. and so they've got some prior
programming knowledge but in the in the previous one um we had a fair few people who had literally
no experience at all and it was much smaller than we didn't have as much publicity um and in terms
of this time i think there's roughly the same absolute number into uh you know representing
people that don't really have any programming experience obviously we've gained overall uh for the new semester many more people um you know as a result
of you know just folks coming along and discovering it's cool and they've got their own meetup groups
and they're like oh you know you should come along to this this thing it's free and it's
it's a great way to pick up a lot of word of mouth that we've we've been fortunate to uh
to have to have our numbers of our numbers of have been increasing so that's that's
nice i want to talk about the numbers more in just a minute but i am curious you said you just
restarted it and you talked about semesters so like what like how many weeks is the class do you
keep you is your is your goal to just keep doing the same class over and over again, or how does that work?
Well, basically what we did, we done the first edition of the course, which is approximately 26 weeks.
We didn't follow any textbook.
We just basically tried to cover the base of C++. But during that, we basically learned quite a lot.
We were getting some feedback.
And we decided that this edition of the course should be structured in a different way.
But before I cover that, basically to the target audience, I would like to add that we are very, very much trying to create a group that is very much inclusive.
Yes, we are open to people with all sorts of disabilities, people from minorities.
We've been recently, we had an article in a magazine, Living with Disability.
So basically, there are lots of people.
I believe that there are so many people who could benefit from that kind of training and change their life in a very positive way.
It's like, imagine you can't walk because you've been paralyzed, but your brain is working like a super machine
and your hands are okay, but you can't really get to a class and learn
because that for you is a challenge.
Or you can't afford because going for the trainings like that,
they're fairly expensive.
You could go for PhD.
That sets you for at least five years and probably £50,000 or more.
So a lot of
people would be excluded from that
possibility and
we want to cater for that kind of people.
Give them a chance to come in
and do something positive in their lives.
So that's our motives behind.
But
the rest, I think, the question, your question,
I think maybe Tristan will be the best suited to answer
so
in terms of
semesters so yeah we
ran the course as a sort of
an ongoing accumulation
of knowledge because there's really no
you could go for years just learning more
and more C++ but we found that more
people were turning up sort of
15 weeks into a course and not really having any idea what was going on and although all our
materials are online um it's it's pretty hard to catch up after that so we we sort of made the
decision after what was it 25 26 weeks that we'd have a cutoff point and we'd begin again from
scratch and so now we've
sort of decided I think we're going to run
perhaps 24 weeks and then begin from
scratch. So we'll do it roughly twice a
year, I think, is the ongoing
plan. Okay. So
how long is each lesson?
It's two and a half hours on a
Tuesday evening.
And what are
each session like? I mean, how much
detail do you go into
with the courses?
So, I do
most of the teaching.
Ollie takes a few sessions when I'm
not around.
Try and do a real mix of
presentation style, know delivering the
material mixed with exercises so to try and get people immediately with their hands on the keyboard
um going through going over what they've just learned to try and get it to sort of
stick in stick in their brain a bit better um so it's yeah we'll we'll i'll deliver some material
give an example and then an exercise so and then repeat that however how many times we can it's
time allows anything and obviously we have during during our class it's not just uh purely you know
tristan talking uh although Tristan's explanations are quite
good, I would say one of the best
I came across.
But we try to
structure the classes in a different way, like
to provoke students, so we have a liking
talks which students need to perform.
So that we had on the previous
edition. So we give them
like an assignment, pick
something, talk about smart pointers,
vectors, functions, what have you.
They work on small
projects. So, for example, we had to do
Pomodoro stuff.
And obviously, the session as well
covers stuff like, you know,
stuff which is associated with running
a uni, like trying to...
We ask our students, because they are grown-up people most of the time. They uni, like trying to, we ask our students,
because they are grown-up people most of the time.
They're very clever people,
so we ask them for advice, for help, feedback.
And on top of that, apart from the meet-up on Tuesday,
we meet one more time during the week,
usually it's end of the week,
for like a working lunch,
where we discuss what we'll be talking for the next sessions, the go through the ideas, try to explore new things
which we could do, how to make sure we're delivering the best contents to people and
obviously cover any other, let's say, administrative issues to to the uni also on on the subject of the the pomodoro that's
it's basically a timer this there's if you google it you'll find there's something called the
pomodoro method this is actually tom's idea um so usually yeah when when tristan's not around i
fill in also i think towards the sort of more advanced end of our course i like to get a bit
more involved but we had these it was a
combination of everything right it was like live coding sessions when we were building it we gave
people sort of a base plate uh project that they could start with to to write the pomodoro with us
we threw in some some qt in there so cute if you prefer um to get some familiarity with the gui
um but they're a very fun set of sessions. At the moment, obviously, our new semester,
we decided to structure it a bit more rigorously,
and we're now using Bjarne's, I always get this wrong,
but I believe it's Programming Practice and Principles of C++?
Principles and Practice, I think.
Principles and Practice, yeah, there we go.
But we'll see what happens.
We may end up fitting in something a little bit more free flow
towards the end.
Obviously, we are revol what happens. We may end up fitting in something a little bit more free flow towards the end.
But obviously, we are evolving this based on feedback.
You know, previously, it was essentially completely free form in how we did it.
And now we're obviously sort of basing it off the book.
So we still do things in our own defined order.
We're not just going chapter one, chapter two, chapter three. But we aim to always relate each lesson to a chapter or chapters and send people off with homework or tasks to actually do.
And they've left So you're starting
from hypothetically no knowledge of C++
to what's
at the end are they doing
you know like implementing
Boost HANA or
Yes, yes
no, no, no joking
Oli, I think
you'll be better as qualified than me to answer that question.
I can take it, sure.
So what we do at the end is for those who wish to actually do it,
we get you to take a final test, and the test is really actually a project.
So we give you a specification of what you need to do um that specification may possibly
be deliberately uh ambiguous in certain places maybe possibly yeah with the idea that you might
want to come to us and have a chat um because i believe that's also part of programming right
you're never going to go and work at a place and have a perfect spec. I mean, OK, maybe you will in certain cases, but that's the dream.
It never happens.
So anyway, you get the specification.
We give you a week to do it.
And the idea is obviously you need to produce something that actually works.
So, you know, last time around, we did a fairly simple text-based game for you to implement. And we try and make it encourage you to produce something well-structured.
So when we actually take a look at your code, we're expecting to see a use of OOP.
Have you thought about these things and said, OK, well, this makes sense as an object.
This makes sense as a base with pure virtual member functions, et cetera.
Have you written stuff like unit tests?
And then we grade you on a scale based on,
does it actually work?
What kind of bugs are in there, if any?
How much unit testing have you done, if any?
So you can still pass it if you've done something that's functional and basic,
but obviously you can go up the tiers
as you've implemented something ever more rigorous
and impressive and robust.
And they get a nice certificate at the end.
Oh, that's neat.
Awesome.
On the photo, I think you have, I'm holding my certificate.
So in addition to being able to attend the courses in Londonondon yeah you can also watch these online right
yes you can uh i mean the idea is basically we want to make this as accessible to everyone
regardless of where they are uh and participate in a class so if you're if you're if for any reason
let's say i don't know you have a sick kid or you are a disabled person or you're in a different part of the world and you can't get on time to us.
That shouldn't stop you from basically being a part of the class.
You can do all the exercises with us.
You can ask questions.
You can do the homework.
Obviously, you can read the chapters.
So in every aspect, apart from physically being in a class, you are part of the class.
And in the end, if you participate with us throughout the course, you can take the exam.
And the reason behind, we decided that during the, like halfway through our first edition of the course,
that we would like to create this kind of certification at the end because the reason really, like,
unless you go for the PhD, as I mentioned earlier, there is no way for you to,
for, let's say, someone who starts to get some kind of confirmation of his skills.
So they can't just go to the employee and say, oh, I did, you know, I learned personally for two, three years.
You know, how do we know that really is the case?
With us, at least we try to maybe not completely fix,
but at least feel to the degree, avoid and create a way
so people can say, okay, I did that.
And there are some fairly experienced developers
who can vouch for me that I was part of the class,
I did my learning, and I have certain knowledge.
Because frequently, all that kind of certification
is just a foot in the door.
Then you have to prove what you actually know,
whether you know it or not.
You can obviously fake it,
but that very quickly will be cleared out.
People who are experienced,
they will figure out that you don't have an knowledge.
So from us, we don't intend to give people easy certification.
Like let's say you go to, I don't know, Udemy or Pluralsight.
You autoplay the course and at the end you get certificates.
Oh, I know C++.
How long did it take you?
Oh, something like six hours and I'm done.
So here I need to actually commit.
And the course is free?
Yeah, that's our goal.
Imagine there are so many clever people out there
and if we're stopping someone who potentially
might basically introduce another Elon Musk or another
Steve Jobs or some brilliant guy and we're stopping him
because he can't pay
the fee, well that's
not right. The internet, you can
see how much
we as a humankind progress in
since the internet kicked
in. It's just mind-boggling.
We were reading in the books
as kids about flying cars and so on.
Well, not 20 years longer for 20 30 years later we actually getting to the stage where people
actually trying to to make this reality so uh you know getting more people on board with
software development i think it's a it's a very important it's a very important uh very important thing uh to do is like i would i would see this as
a big mistake if we're trying to stop people so the short answer is yes it is completely free and
unless someone unless someone somehow tries to to stop us from doing that will always be free
it seems like i mean well okay i want to ask i want to come back to the fact that it's free but
i want to ask another i want to ask another question first.
You said you got a significant increase in the number of students in your second semester.
What does that mean?
OK, go ahead.
It's up to you. Do you want to take it?
Yeah, go ahead.
OK. Yeah, I mean, so that really was born out of the fact that during the previous semester and he was on a very big meetup.com group and when we mentioned to him you
know we're going to restart it in a few weeks time he just you know announced it on that meetup group
and all of a sudden we were seeing like all these crazy numbers of rsvps i think comparatively
compared to what we were getting i think think for the first session, it was
roughly 50 people.
The venue held
70, and they were turning people away
the first time, so that was
quite something.
The total
RSVPs, we jumped
to over 330.
Wow.
Okay, so
and does that not include
people online, I assume?
That's in person, correct.
So,
if you all are
grading the
final exams for everything,
I mean, that's a considerable amount of
time investment for you, right?
It is.
Sorry, go on. Do you want to go for you, right? It is. Sorry, go on.
Do you want to go with that, Tom?
Yeah, I can.
Well, it does.
I mean, we're spending, I mean, for me, the benefit is I got the opportunity to learn.
And obviously, it's a great thing.
It's like if you're helping other people it is amazing uh uh
i spent i don't know something like 20 hours a week probably only same and uh tristan probably
even more than than that working on the project because you know going to going to the going to
the to the class class is uh two and a half hours you need to get there you spend some time before
you spend some time afterwards and so on.
Then we're going for the lunch and so on.
So it is a considerable amount of time.
So for us, we're working towards the success in the project.
And success in the project is not just because we've done X amount of classes, but the success is to ensure that the project is sustainable.
So what we're working towards is basically trying to get some sponsors.
Preferably, I suspect it will be a bigger type of business who sees a benefit in having highly skilled C++ developers. Maybe at the beginning, obviously,
there will be, let's say, a junior level,
but we're working on other projects as well.
And they might find, okay, we'll be happy to,
you're doing great stuff, you're helping community,
you're helping to expand the language.
So language, hopefully, will become way more popular.
And that will bring positive
things so we hope that's you know likes of google facebook amazon and so on uh might reach to us and
say okay yes we would like to support what you do because at the end we will employ these people
because we have a deep you know great need for kind of specialist, and we'll make your life easier.
And, yeah, you can continue what you're doing,
because you're doing great stuff.
That's what we would like at some point to happen, yes.
We have a great feedback from a couple of sources,
a couple of bigger businesses already start approaching us and talking.
We didn't get anything on the paper yet anything
committed but obviously that's the goal for 2018 for me to to get something going so to ensure that
this project have a chance to survive uh not only today tomorrow but uh four years to come yeah so
that that'll be really amazing yeah and that's cool and just just to expand on the
the grading thing fortunately we only actually have four candidates uh for each grade this year
and in the previous one so um obviously that was that was something an experience was it did take
a while still to produce their reports and then get them have a friend adjudicate them and all
that kind of stuff um so i think approaching it this time i'm sure we'll have a fair bit more still i think i think in terms of myself scaling that up it will just be a case
of having a larger lead time on the sort of final awards for everyone it'll just you know just be a
case of time really um but also to speak to what tom was saying about finding sponsors yeah i mean
we're sort of managing it at the moment i I mean, obviously, you know, there's the cost of getting into London.
Fortunately, we have some sort of kind organizations who give us space for free,
but they occasionally end up getting booked out by someone who's purchased the space for corporate reasons.
Then it's like, well, you know, sorry, that's it, guys.
We can't host you this week.
So we sort of end up darting around London a little bit, sort of frantically trying to find a space that will help us and it's been it's been a bit skin of our teeth sometimes it would
obviously be nice if we could sort of see find someone who's offering sponsorship so we could
sort of just find space and say something you know okay how much do you want kind of thing
but we're not there yet sadly okay so you said you uh are taking feedback from some of your attendees. What kind of feedback have you been getting? Tom, thank you very much. You're really doing a really amazing thing.
And we honestly have lots of stories where you can see the impact that kind of class can make in people's life. And I mean a personal life. We had one of our students who had basically a brain tumor has been removed and he is a developer very young fella and he basically
start coming to us to keep up with the with the knowledge so in a sense we
thanks to learning to us and refreshing his knowledge he can stay on on on on top and
continue his professional work in the future. We have people who become redundant
and they're trying to find a new,
expand the place where they can learn.
We have students who would like to progress
their experience and get on a work ladder.
We have people from different parts of the world.
We have disabled people as well who already started
to join our group.
So,
these people, we make a positive
and a massive change to their lives,
basically helping them
to do something which they might otherwise
not have the chance to do.
If somebody approaches
us and says, oh, please help me,
could you give me 50 quid
and so on, that doesn't
really work. Everybody has got
expenses and so on. So this way
to make an impact, to make a change, it's not
that really easy.
But by enabling people
to have the possibility
to change their lives is
actually a very
nice thing. It helps
as well us.
One of the, I think,
Buddha saying is one of the things that
makes you happy is basically to start helping others.
So that makes you happy as well
and
through helping others you find your
own role in the life as well
which is great as well.
I agree with that. I mean I've also heard feedback as well, which is great as well. I agree with that.
I mean, I've also heard feedback as well.
Funny enough, I think recently.
So as part of the final test,
we do one-on-ones as well.
And obviously part of that is to get you to explain your code
so that I can sit there and sort of understand,
okay, yes, you actually wrote this.
Excellent.
But then towards the end, end, you know, we just have we have to have a little chat.
And I imagine two pieces of very interesting feedback. So the guys that passed who I had the one on one with,
one of them expressed a keen interest in doing a sort of more advanced or I'm not sure what the word would really be neat i wouldn't even say niche but specialized perhaps um he was really interested in us doing a course on like multi-threading
uh and concurrency that's one of the things i particularly uh enjoy doing and teaching because
in terms of scalability these days right i mean you know the days of buying a really fast single
core cpu are over whatever yeah lunch is over. Yeah, exactly.
It's the free lunch paper, right?
You know, we need to use concurrency.
We need to parallelize.
I mean, obviously,
that's not possible in all cases,
but for a lot of industry-based workloads
where, you know,
you're doing all kinds of socket IO
and whatever,
these are the kind of things
that can leverage having
all of those processing cores.
And so currently my target
is actually to take on that feedback
and hopefully by the middle of June, we're going to do a sort of entry session into that and then even more
interestingly another candidate was expressing an interest in sort of taking apart build code so
sort of some reverse engineering or learning assembly and then sort of and just learning a bit of
Atom it's not obviously that's not exactly C++ so I've kind of got a few ideas on how to kind
of relate that back to the language maybe in turn saying well look here's some assembler
and let's take that back and try and imagine what C++ we could write to produce that assembler
so I'm sure I'm sure compiler explorer will be very heavily used if I if I manage to get to that
or maybe when I get to manage to get. But yeah, the feedback's great,
and I think you should always learn from your feedback. The courses we do,
nothing's ever perfect, and taking on feedback is the best thing you can do
to get towards improving what you offer.
I'm curious, from the standpoint of Oliver and Tristan, since you're
the ones teaching the classes, what is your favorite class so far that you've taught?
What's your favorite material to cover, maybe?
Having just restarted, so we've been going from the very beginning.
So we had a class last night that was session five.
We introduced talking about references and i've really uh really enjoyed going again from the beginning because we've got a whole new fresh set of people
very smart students asking really really good questions uh so i've i've really enjoyed the
last few sessions we've done going back to the the last run through um we did a session on R-value references and move
semantics towards the end of the
last course that I really enjoyed teaching
because there's that saying
if you really want to master something, teach
it and I found that just doing the
preparation for that course really
crystallised my own knowledge
of the subject so that was
another one I really enjoyed doing.
That's cool.
And yeah, I suppose for me,
I think as my bio kind of said at the beginning,
I'm one of those guys that is big on testing.
I'm not really religious on whether it's TDD or BDD
or whatever it happens to be that you choose.
But these days, in terms of writing software
and minimizing the number of bugs,
because we all write bugs,
it doesn't matter how well you've architected it
and split up concerns,
you need to have some kind of testing.
And I think my,
I can't really say it's a favorite lesson on its own
because it was something that was fed into.
So, essentially, we taught people, you know,
the ideas behind,
or the concepts behind object-oriented programming
and how, you know, you can have effectively what are known as interfaces in other languages,
like pure virtual base class members or straight-up interfaces of Java.
And then we actually had Phil Nash as a special guest.
I was wondering if you would take advantage of that, yeah.
Yeah, of course we did.
Of course we did.
We finally pinned him down.
It took a few tries, but we managed to grab him.
And he did a really great lesson at the end.
It was demonstrating catch-two to people.
It was live coding.
And that was the favorite with the other lessons in mind,
purely because it sort of brought everything together,
showed people, like, here's how to take a framework.
Here's how to now write well-tested code.
And you could see him, you know, like, he writes a bug
and, oh, you know, look how
the testers call it. Now, you know, this is never going to make it
to production because you've done something bad
and feeding that into, like, okay, having a class-based
design, having those virtual interfaces and bringing
it all together, and I think that was
really eye-opening, I think, for a lot
of the people there to see and
just understand how powerful that can be.
I think so. So, you mentioned that you guys are hoping to find sponsors soon. Do you of people there to see and just understand how powerful that can be.
So you mentioned that you guys are hoping to find sponsors soon. Do you have any other future plans that you want
to share with us? Well, yeah, I mean, what basically
we would like to do is we would like to expand on what we're
doing, trying to create a more
basically what we would like to do
is make sure that the
CP Plus London Uni
expands to different places.
By economy of scale,
we can work with different cities and so on.
We can use the same materials,
use the same
prints, same stickers,
and same
practices and so on.
What we could try to do is like possibly start aiming at gold standard how to teach people so it's not like read the
book from chapter one to five and that's it but work together with the people because they're
everybody got some uh you know we're talking about really clever people. And, you know, let's take advantage of that.
It's like if you are the smartest person in the room, yes, there is a saying you are in the wrong room.
So we have so many clever people.
Why not to use their experience?
Like the most common questions I have from students is, Tom, where do I find more exercises?
And every time I ask an experienced developer, can you help me with some exercises, they
are scratching their head like, oh, yeah, exercises, oh, yeah, I don't do those.
They are difficult.
I can't think of one.
But now imagine we have five people on call and let's say everyone will create two exercises.
So that's well straight
away 10 10 exercises now if i'll ask one person to do 10 exercises they would look for lots of
excuses why not to so if we have let's say 50 40 100 experienced developers and they start creating
let's say short clips demonstrating some functionality and based on that they will create a basic
you know questions to do exercise for people and so on then somebody comes and
say I would like to do some exercise about concurrency or inheritance or
something else oh here we go how many X's you want 10 20 here we go they're
ready just do it so we want to use your platform to basically reach to people.
And we're looking for basically for contributors to our blog.
So you can write your own story, even as a simple motivation to people saying,
I started doing development because of and I did it like this. And show people that, you know, becoming a developer is not overnight.
It's not like, oh, this guy, he's amazing.
He did it in a super way and he's a superstar.
No, this guy put a lot of hard work, which nobody saw.
And that's the reason why he's so good.
So even that kind of motivation uh post i really appreciate it but
what we would like to do on our website is to put like a profile for those people so they can put a
short bio about them and build their profile so they can be more recognized in in c++ community
so if you have if there is anybody who would like to do that start writing blogs for us or blogs about us on other websites.
They are very welcome.
Help us with, let's say, making the content on YouTube, for example, more accessible.
So, for example, connect our slides and assignments and so on to our YouTube videos.
Fantastic.
Give us a hand.
Give us a call and we'll be happy to accommodate that.
You have maybe another idea.
You think like we're doing something okay,
but there's a better way,
or you have a really great experience with something else.
Just come to us and tell us.
We are very open to that kind of feedback.
The worst kind of feedback,
so basically flipping up the question, the worst kind of feedback is if we only hear, oh, you're great.
Then simply we assume we're great and we don't look for anything to improve.
But if people tell us, you know, you could do this better or I'm missing this part.
OK, it's a vanity in everyone.
Yes, we love to hear that we're doing great.
But when everybody tells you you're doing great, you have no chance to improve.
So
be open to
us. Tell us. We invite people to come
to our lunch
and discuss. That's how we get
a lot of really interesting ideas.
Yeah, so
basically that's...
I don't know, guys. Do you want to add something to that?
I mean, yeah, to very briefly add to that, if you're also in London or, you know,
or you're coming to London or anything and you've got expertise in C++,
please feel free to reach out to us.
Obviously, you know we have Phil as a guest, you know, guest lecturer, I guess.
You know, you've got something you think is worth presenting, please get in touch.
We'd be very interested in that as well.
Right.
And just while we're on the subject, I just want to say thanks to Matt Goldbolt,
who we were lucky enough to meet when he was in London a few months ago,
and he actually did write a blog post for us about how he got started with C++.
That was really great.
And if anybody else fancies doing that, then that would be awesome.
Obviously, we have lots of people like that. Yes, obviously mention uh jacob who is helping us pretty much on most of most of the classes
it comes in uh so we need experienced developers like jacob he pops into to a class and if somebody
got uh some issues stacks on on exercise uh if we have let say, 50 people, so even me not being
super experienced, yes, I'm trying
to jump through people and give them a hand.
So if you have more people like
that who just pop in, that's really
amazing. So Jacob,
Robin Scholar,
Ricky from
King.com, they are really amazing guys.
They just come to
give us a hand and we really appreciate that.
Thank you, guys.
Okay.
Well, it's been great having you on the show today, guys.
And it's great work you're doing with C++ London and NUNI.
I hope it continues to be a success.
Thanks very much.
Thanks very much.
Cheers.
Thanks for having us.
Thanks, guys.
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 about that too.
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.