CppCast - C++ London Uni

Episode Date: May 31, 2018

Rob 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)
Starting point is 00:00:00 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
Starting point is 00:00:52 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.
Starting point is 00:01:50 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.
Starting point is 00:02:10 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.
Starting point is 00:02:47 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.
Starting point is 00:03:03 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
Starting point is 00:03:41 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++,
Starting point is 00:04:13 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++
Starting point is 00:04:39 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.
Starting point is 00:05:03 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,
Starting point is 00:05:28 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
Starting point is 00:06:10 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
Starting point is 00:06:34 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.
Starting point is 00:07:01 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.
Starting point is 00:07:42 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.
Starting point is 00:07:56 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
Starting point is 00:08:16 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?
Starting point is 00:09:05 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
Starting point is 00:09:21 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.
Starting point is 00:09:48 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.
Starting point is 00:10:31 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,
Starting point is 00:10:57 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
Starting point is 00:11:34 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
Starting point is 00:12:25 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,
Starting point is 00:13:12 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
Starting point is 00:13:25 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.
Starting point is 00:13:42 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.
Starting point is 00:13:59 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.
Starting point is 00:14:27 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
Starting point is 00:14:44 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.
Starting point is 00:15:00 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.
Starting point is 00:15:34 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
Starting point is 00:16:05 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
Starting point is 00:16:22 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.
Starting point is 00:16:41 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,
Starting point is 00:16:56 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?
Starting point is 00:17:12 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.
Starting point is 00:17:30 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
Starting point is 00:17:54 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.
Starting point is 00:18:17 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
Starting point is 00:18:45 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
Starting point is 00:19:20 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.
Starting point is 00:19:55 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
Starting point is 00:20:37 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.
Starting point is 00:21:30 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.
Starting point is 00:21:50 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?
Starting point is 00:22:09 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.
Starting point is 00:22:32 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.
Starting point is 00:22:46 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.
Starting point is 00:23:23 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
Starting point is 00:23:40 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?
Starting point is 00:24:21 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++
Starting point is 00:24:41 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,
Starting point is 00:24:57 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
Starting point is 00:25:14 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?
Starting point is 00:25:29 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 point is 00:25:51 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.
Starting point is 00:26:20 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,
Starting point is 00:26:35 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.
Starting point is 00:26:57 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
Starting point is 00:27:14 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.
Starting point is 00:27:33 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?
Starting point is 00:28:15 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
Starting point is 00:28:42 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
Starting point is 00:29:21 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.
Starting point is 00:30:12 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
Starting point is 00:31:11 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
Starting point is 00:31:31 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
Starting point is 00:31:49 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
Starting point is 00:32:04 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
Starting point is 00:32:33 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?
Starting point is 00:32:53 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
Starting point is 00:33:19 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
Starting point is 00:33:54 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
Starting point is 00:34:12 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.
Starting point is 00:34:28 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
Starting point is 00:34:56 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
Starting point is 00:35:41 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
Starting point is 00:36:03 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
Starting point is 00:36:27 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
Starting point is 00:36:43 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.
Starting point is 00:37:27 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.
Starting point is 00:38:03 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
Starting point is 00:38:24 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
Starting point is 00:39:00 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.
Starting point is 00:39:39 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
Starting point is 00:40:14 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.
Starting point is 00:40:34 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++.
Starting point is 00:40:57 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
Starting point is 00:41:21 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.
Starting point is 00:41:40 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
Starting point is 00:42:24 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
Starting point is 00:43:15 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
Starting point is 00:43:37 RSVPs, we jumped to over 330. Wow. Okay, so and does that not include people online, I assume? That's in person, correct. So,
Starting point is 00:43:52 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?
Starting point is 00:44:08 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
Starting point is 00:44:43 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,
Starting point is 00:45:30 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
Starting point is 00:45:59 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
Starting point is 00:46:32 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
Starting point is 00:47:20 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
Starting point is 00:47:57 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
Starting point is 00:49:13 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
Starting point is 00:49:36 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
Starting point is 00:49:51 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.
Starting point is 00:50:08 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.
Starting point is 00:50:23 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.
Starting point is 00:50:41 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?
Starting point is 00:51:26 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,
Starting point is 00:51:36 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
Starting point is 00:52:06 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.
Starting point is 00:52:40 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
Starting point is 00:53:26 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
Starting point is 00:53:42 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
Starting point is 00:54:03 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.
Starting point is 00:54:17 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.
Starting point is 00:54:40 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,
Starting point is 00:54:58 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
Starting point is 00:55:16 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
Starting point is 00:55:40 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,
Starting point is 00:55:58 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.
Starting point is 00:56:31 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.
Starting point is 00:57:04 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.
Starting point is 00:57:48 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
Starting point is 00:58:25 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.
Starting point is 00:59:03 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,
Starting point is 00:59:23 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
Starting point is 00:59:50 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,
Starting point is 01:00:09 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,
Starting point is 01:00:38 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.
Starting point is 01:01:10 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.
Starting point is 01:01:25 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.
Starting point is 01:01:37 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.
Starting point is 01:02:02 You can also follow me at Rob W. Irving and Jason at Leftkiss on Twitter. And of course, you can find all that info and the show notes on the podcast website at cppcast.com. Theme music for this episode is provided by podcastthemes.com.

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