Learn Python with Talk Python's Python courses

#184: Teaching Python with BBC micro:bit Transcript

Recorded on Friday, Oct 12, 2018.

00:00 Michael Kennedy: How can we make learning Python and teaching Python more real for students, especially younger students? The BBC in the UK had a great idea: Make it more physically real with actual devices. That's where Nicholas Tollervey got involved. He helped bring the BBC micro:bit and Python to millions of kids in the UK. Join me to hear his story on this, Episode 184, of Talk Python to Me, recorded October 12th, 2018. Welcome to Talk Python to Me, a weekly podcast on Python, the language, the libraries, the ecosystem, and the personalities. This is your host, Michael Kennedy. Follow me on Twitter, where I'm @MKennedy, keep up with the show and listen to past episodes at talkpython.fm, and follow the show on Twitter via @TalkPython. Nicholas, welcome to Talk Python.

00:57 Nicholas Tollervey: Thank you, good to be here.

00:58 Michael Kennedy: Yeah it's great to have you here. We've been trying for a long time and finally, after, you know, summer vacations and all sorts of traveling, we've managed to get together here on the show.

01:08 Nicholas Tollervey: Yeah, it's going to be good. I'm looking forward to it.

01:10 Michael Kennedy: Yeah, so I am, it's going to be a lot of fun. Now, we're going to talk about teaching and education, and IoT in Python, and all sorts of cool stuff you've been involved in. Before we get into that, let's start with your story. How did you get into programming and Python?

01:22 Nicholas Tollervey: So a long time ago, have to start in a galaxy far, far away, when I was a child, I grew up in the 80s, and every school in the UK was given an 8-bit computer for the BBC Micro, and my dad was a head teacher, a school principal, and one school holiday, he brought this machine home to try and figure out, how am I going to use this in school, and it took about half an hour for my brother and I to grasp it from his hands and take over, and do the, you know, print you are an idiot, go to line 20 type stuff.

01:53 Michael Kennedy: Yeah, yeah, yeah. My brother is an idiot, or some other things. It's like done, you are siblings.

02:02 Nicholas Tollervey: Yeah, it's, funny enough, Andrew, my brother, he's also a programmer and I said, it can't be that bad an experience. But the point I'm trying to make is that, as kids, we had computers around, and then when I was, I'd say 12 or 13, I started doing music stuff. Ended up being a professional musician for a while. And then a teacher, and then, when my own children arrived, I decided I wanted a career change from teaching, and remembered back to my days enjoying programming these 8-bit machines, so I took a year out and did a Master's in computing, and that got me my first job as a software developer. And that was actually as a .NET developer, and I ended up working at an investment bank in London, and I worked with a whole bunch of quants who wanted to script the tool that I had written for them.

02:53 Michael Kennedy: And you're like hey, maybe we'll just teach them all C# then, no, maybe not.

02:57 Nicholas Tollervey: No, exactly, oh, man. These are very very clever people, these quants. But, it was around this time that IronPython was coming out, and so in my naive sort of way, I typed in scripting language for the Common Language Runtime, and IronPython came out on top, and I ended up going to the very first PyCon UK in 2007, at that time, and I was welcomed by a rather jolly gentleman called John Penner, who sadly passed away now, but he, I guess he was like the founding force of nature for Python in UK when it comes to getting some meetings together, and it was such a wonderful place to be, and so after about another year, I decided, well, .NET's fun and everything, but Python's even more funner. I'm going to...

03:48 Michael Kennedy: Totally agree with that statement, yeah.

03:50 Nicholas Tollervey: Yeah, exactly. And so I had saved up some money, and I took some time off, and I started to reimplement a website that I'd done in .NET in ASP.NET in Django, and I found that within about two weeks, I was more productive in Python and Django than I was as a expert level C# developer, and the rest, as they say, is history. I started again at the bottom of the programmer stack as a junior Python developer, and since then I've been working mainly in Python, as my full-time freelance job.

04:26 Michael Kennedy: Yeah, that's a great success story. I do want to dig into that just a little bit, because I've gone through the same experience myself, where I was at a hyper expert level in one technology, not Python, and I said, but I kind of like Python more. So you have to decide, do I want to go back to being this kind of newbie that doesn't really know things all that well? And, not just in my knowledge, but in my, maybe, career position, and things like that. That is a scary place to be, because once you get high in some technical ability, you're like, well this is kind of working. I kind of don't want to wreck this, but I know over there is a better peak if I could get to it. I got to go through the valley. Was that scary, or was it okay?

05:13 Nicholas Tollervey: It was okay, and here's why. Because I was expecting until I was about 22, that I was going to be a classical musician, and in terms of jobs, that's probably the least secure job you could possibly ever have. So anything else sounds better, and I guess the outlook and the attitude that I developed as a student musician, or a freelance musician when I was starting out my music career, where you are literally living through your arse, as it were, rather than making an awful lot of money. Anything else feels good, and I knew that, well, what's the worst that can happen? I tried Python for a few months, and it doesn't work out, I can become another C# developer, doing more bank-related boring stuff.

05:57 Michael Kennedy: Yeah, yeah, that's a super attitude. Just to say, okay, what is the worst failure position? The failure position is I'm where I am, so if I, if the worst case scenario is, I just keep doing this, it's like, why don't I try for something I'd rather do, right? So excellent, yeah. Happy to chat with that, about, that's really cool.

06:17 Nicholas Tollervey: The point is is that, we're in a very privileged position in software development.

06:21 Michael Kennedy: Yes.

06:22 Nicholas Tollervey: The skills that we have are relatively rare, and people are prepared to pay plenty of money to do this sort of a thing, so it's definitely a developer's market. For anybody thinking, well, should I make that jump, and go do that thing in startup land, I mean, enterprise land, totally go for it. Because like you said, the landing position is always, well, I did that for six months, I'll just go back to doing, phone up my old boss to see if he still wants me, that sort of thing.

06:52 Michael Kennedy: Chances are they do, right? Chances are they do.

06:54 Nicholas Tollervey: Yeah, exactly, exactly.

06:57 Michael Kennedy: That's very different than saying I have a first-string position at the London Symphony Orchestra, and I want to try becoming a professional runner, right? Like that would be a very different thing to quit on, right?

07:10 Nicholas Tollervey: Yeah, exactly.

07:11 Michael Kennedy: So, you got to keep it in context, but yeah, awesome. I guess one more question before we get into the main topic is, what do you do, you said you do consulting now, what do you day to day, just to give people a concept of where you're coming from.

07:21 Nicholas Tollervey: Okay, so I guess, I've for, oh, for maybe over a decade now, I've been a freelance Python programmer. Starting out as a sort of a junior freelancer, and now I tend to work in senior-type positions. I will do a, what I call a gig, for a few months for a client, and sometimes I'll save enough money up to be able to take a couple of months off, and I can work on personal projects, some of the educational stuff, as a result of that sort work working practice. So I'm a jobbing freelance Python programmer. I do training, so next week I'm giving corporate training to a client in London for a couple of weeks. I'm also working with another client on the west coast of the US, working remotely on some Python project that they have, so it's, what I like about this job is that I have flexibility because I'm my own boss. So I don't have to ask permission if I want to go to PyCon, for example, I can just go.

08:16 Michael Kennedy: Yeah, you just go.

08:16 Nicholas Tollervey: I'm there. I'm going to enjoy this. But I also get to work with a real diversity of industry, as well. Everybody needs programmers, so it's rather interesting to see the inside of a TV station, or a newspaper, or a major retailer in the UK, or the government, or the National Health Service, or the European Union, or a scrappy start-up, it's good fun work. It's, there's always something new.

08:45 Michael Kennedy: Yeah, it's really special place to be, 'cause so many people in their jobs, they're at a company for five or 10 years, and they see that world, right, but as a person, as a consultant or as a trainer, I had a lot similar experiences doing in person training. You, every week, or every month, is a different experience, and it really gives you, I think a broader view of the software industry.

09:06 Nicholas Tollervey: Oh I definitely agree with you there. I think to begin with, it feels frightening. It can feel a bit scary, because you're always just a little bit out of your comfort zone. You always, if you're established in the company, you kind of know, who do I need to ask about this? I'll just ask Bob, he knows. You've established your network in that company, whereas this sort of stuff, you don't know who Bob is, and you're kind of treading water a little bit, but at the same time, that's kind of exciting, and I like that, but cross that with the life of a musician. At least I've got a job.

09:40 Michael Kennedy: Exactly, that's awesome.

09:40 Nicholas Tollervey: I've always got that in the back of my mind, I'm like, I could be starving as a musician here, I'm working, this is good.

09:46 Michael Kennedy: It sounds like you're doing awesome stuff. Alright so let's talk first a little bit about teaching Python just in general, and then more focused on the IoT side of stuff that you've worked on. So it sounds like with your training experience, you've done a little bit of teaching, certainly, at least on the small scale, and you said you were a teacher before, so you've actually done a whole lot of it, right? So, what are some of the keys for people to get interesting in programming, to become confident, and things like that?

10:20 Nicholas Tollervey: Yeah, so, it starts with do people want to learn to program? I think the answer is hell yeah, of course they do. People who are not programmers see what programmers do. They see us, so the stuff that we were just talking about, that it's a highly-desired skillset for people. So I found that, if I said, hey, I'm going to be running a course for beginner Python programming over the next eight weeks, which is something I'm doing at the moment, that course sold out in terms of places, in about four hours, and that was just word of mouth and me Tweeting. So getting people motivated to learn the program is not a problem. I guess one of the balancing aspects of the stereotypes associated with programmers is that people tend to think that this is going to be highly mathematical, and you need to be a particular sort of, how can I put it, loner type of mentality.

11:15 Michael Kennedy: Like the loner genius. The kid who could just totally nail the homework, but was kind of awkward so just stayed behind the computer. That view has not necessarily...

11:23 Nicholas Tollervey: Aren't like that, yeah. And you and I, and I guess listeners of the podcast, know that that is completely not the case. But if you're not part of the programming world, it's hard to see that, so people, and again this resonates with this work that I was doing yesterday with beginner programming, is it's getting them to realize that, this could be me, as a programmer. There's a place for me here, and I might not fit the Hollywood stereotype of the lone, socially-awkward genius loner, who sits with a hoodie over his head in a dark corner, typing furiously all day. This is...

12:04 Michael Kennedy: Typically in green, on a green terminal.

12:06 Nicholas Tollervey: Exactly, exactly, and says things like, I've bypassed the firewall for the mainframe. It's a joke, it really is. If that's all you know about programming, then it can be a very intimidating place to come to, so a large part of what I try to do at the beginning is help people understand that it's rather like fun problem solving, if you enjoy Sudoku, for example, you might enjoy programming. It's also about being expressive. You talk about having beautiful code, especially in the Python community, with the Python and things, so there are lots more ways than just the Hollywood hacker stereotype to get into programming. You can be a different sort of programmer, and that's okay.

12:51 Michael Kennedy: Absolutely, and I think that's a really important thing, and it sounds like from your micro:bit stuff that actually that was one of the big takeaways. I thought that was really interesting, and we'll get to that in a moment. But did you actually teach Python in school, or when you were a teacher, what were you teaching?

13:06 Nicholas Tollervey: Okay, so, I did what many musicians who are out of work do, and that is they go and teach music. I went through, in the UK, you have to go through additional training to be allowed to, I'm sure it's the same in the US, because you need to prove that you're both competent and not a danger to children, for a start. So we have a thing called a PGC, a Post Graduate Certificate of Education, which makes you a qualified teacher, and when you have done a year's worth of teaching and been assessed as being good, so basically you've got two years. You've got the training itself, and then what's called the NQT year, the newly qualified teacher year, when you've gone through that training and they've gone, very useful teacher, then you can become a proper teacher in the UK. So I went through all of that training, and my first job was as a secondary head of a music department. So I was teaching at, what I guess in the US you'd call the upper years of junior high and senior high. In the UK, we only have primary and secondary, and they change over when kids turn 11 years old. So I was teaching 11 to 18 year olds music. I enjoyed that a lot, but a lot of those are probably the most challenging job I've ever to do, because not only were the kids sometimes a challenge, because I was generally teaching at inner city schools in the wrong end of town, if you see what I mean, but there's all the marking and the bureaucracy and all the other stuff that goes with teaching. So I've done a lot of classroom teaching, I've done adult education in terms of music, as well. And I've also done some music therapy, I guess you'd call it, where I sessioned with little kids, so five, six, seven year olds in primary school, helping them learn how to compose at their level, I mean. They weren't churning out Mozart or something like that, but it's something fun for them to do. So in terms of music education, I did a lot of that all the way through my 20s, really, and then the switch came over when my children arrived.

15:08 Michael Kennedy: This portion of Talk Python to Me was brought to you by Datadog. Get insights into your Python applications and infrastructures with Datadog's fully integrated platform. Debug and optimize your code by tracing requests across web servers, databases, and services in your environment, then correlate and pivot between distributing request traces, metrics, and logs to troubleshoot issues without switching tools or context. Get started today with a 14-day trial, and Datadog will send you a free T-shirt. Visit talkpython.fm/datadog for more details. What's the similarities and difference from sort of traditional teaching to, say, teaching a programming class like this eight-week one you talked about?

15:51 Nicholas Tollervey: Okay so here's, this is a really interesting thing. Whenever I've been on the receiving end of programming education, or I've been on coding courses or sent on a course by an employer, it's always been very traditional chalk and talk type stuff, somebody standing at the front, they have their deck of slides, and the very worst are effectively PowerPoint karaoke. And some of the good ones are, I'm going to talk a bit, and you might be able to ask questions, some of them are practical sessions, and rinse and repeat. Now in music education, we've been doing music education for 500 years in this kind of western classical tradition, and that's enough time for there to be a reclamation and a counter-reclamation and a revolution and then, you know, some guy called Suzuki in Japan says, this is all wrong, we're going to do it this way, but we've got so many schools of thought about how to do music education. That have been around for literally hundreds of years. One of my textbooks when I was at music college was 300 years old, how to write counterpoints. So we still, these techniques have been established, and we're still using them. We've been programming what, 50 years? Let alone, we're only just starting to think about, well, how do we teach programming? So, what I've been doing very recently, and it's been a rich vein of creativity for me, has been since my practice as an educator is think to myself, well, first of all I thought to myself, what if we taught music like we teach programming? And that was such a terrible thought that I quickly switched the question around, and thought, what happens if we teach programming using some of the techniques that we've used for music education? Now there are some similarities, because music, you're reading and manipulating symbols all the time. You're also practicing a skill that takes a long time to actually develop enough so that you actually sound any good. And the same with...

17:52 Michael Kennedy: They're similar, yeah. Similar to programming, right? Like, you might get Hello World working, but if you can put together a well-tuned web app, that's a very different, that's a long way down the path, right?

18:05 Nicholas Tollervey: Exactly. And so I thought, hey, you know the how to draw an owl meme? So, it's how to draw an owl. First start with two circles, and then the second box is, draw the rest of the damn owl. And that's how programming education is. You've got huge numbers of resources that are draw two circles, and then you have stack overflow and all the places where you and I as professional developers might go to learn about a new API or try and fix a bug, and that's professional level, and there's nothing in between. It's what the music world has managed to do, over this 500 years, is bridge that gap. And so, like I said, this is rich theme of inspiration for me to think, well what techniques can we transplant from the world of music into programming education. But we'll probably come into that later on actually, when we talk about code breaks, because that's very much to do with that.

18:56 Michael Kennedy: Yeah, yeah, that's a very interesting concept. You're right that it's so new. I mean, 50 years is really not that long, right? Compared to the history of music or mathematics or philosophy or whatever.

19:09 Nicholas Tollervey: Yeah, we're at the cuneiform clay tablet stage. You know I've met some other programmers...

19:15 Michael Kennedy: We're etching it in stone.

19:17 Nicholas Tollervey: Yeah yeah, exactly, I mean, can you imagine from that we have Shakespeare, you know? But it's a longterm thing, and it's easy for us to get help shorter time if you've been, we've not had the equivalent of a revolution in programming, where they've just thrown away everything, or do you know what I mean? We're doing it long ways, I think.

19:37 Michael Kennedy: For sure. So, one of the things I think can make programming hard is it's relatively abstract. I say relative, because compared to say like a math proof, programming's super concrete, but compared to other disciplines, it can be pretty abstract, and I feel like having some kind of hardware to visualize or interact with as part of that programming, for at least a certain group of people, I'm thinking especially for younger kids, is super helpful for them. So I guess that brings us to the BBC micro:bit. You want to tell us about that?

20:15 Nicholas Tollervey: Yeah, so, I mentioned the BBC Micro when I was a kid. And it holds...

20:21 Michael Kennedy: And that was a computer, right?

20:22 Nicholas Tollervey: That was a big beige box that bleeped at you. And it cost like, well the equivalent of thousands of pounds in today's money, and that holds a special place in lots of British geeks' hearts. And the BBC could see that, with the change in the computer curriculum in the UK, with things like Raspberry Pi and computing at school and all the other things that were going on in the UK, that this is an opportunity for them to make another contribution. But they wanted to make a contribution that was relevant for today. And so the micro:bit being a small internet-sustained type device with some, it has a couple of buttons, it has a side-by-side LED display, it's got a little radio, it's got an accelerometer and a compass like your mobile phone, and I/O things that you can plug things into as well. So they came up with this crazy idea that if we made a device that was cheap enough, instead of giving one to every school, we could give one to every 11 and 12 year old in the UK, which is about a million kids, really. So, towards the end of 2015, the BBC announced that they were going to be doing some sort of computing project, computing and education, and it mentioned Python in the blurb that they sent out, and they were looking...

21:40 Michael Kennedy: And you're like, what is this?

21:42 Nicholas Tollervey: Yeah, that lucky department, that said, no, I'm a PSF Fellow, and at that time, because I've been doing a lot of work in Python and education, in the education track of Python UK, lots of people got in touch with me, and said, what's this Python thing? Have you anything to do with this? And I wasn't, but I knew somebody at the BBC who was. So, tapping some back channels, as it were. He wouldn't reveal to me what was going on, but he said, you should certainly get involved. And so, with the blessing of the PSF Board, I applied for the Python Software Foundation to be a partner in this project, and poof, they said yes. So, this is how the Python community, especially in the UK, got involved. And initially, what we were tasked to do was provide Python learning resources, which, for me, I was thinking, well I know plenty of teachers who teach Python, and I know plenty of Python people who also teach. This is going to be a jolly weekend sometime where we can all sit down...

22:52 Michael Kennedy: We'll knock this out by next week, it's all good.

22:53 Nicholas Tollervey: Yeah, yeah, exactly. This is classic, how hard can it be, type thought, that is dangerous. And so the BBC were all set up for us to do this, and we were all with the meetings, so that we could see as an educational partner what was coming, and then, into May of 2016, I was called into a meeting at the BBC, and they said, the organization that was going to provide Python on the micro:bit has dropped out. We must have Python on the micro:bit, and we want you to do it.

23:27 Michael Kennedy: You're like, this gone up a level of difficulty.

23:30 Nicholas Tollervey: Yeah, yeah, and I was like, you realize that we're all volunteers, for a start? Python is a volunteer-led community, and so they said, well, could you try it? And I said well, let me have a look. And their idea for us to build a version of Python on top of a Microsoft technology called PXT, which Microsoft were still building at the time. And essentially, the way it would work was, we would emit a JSON-based abstract syntax tree that we would post somewhere, this would get compiled, and then a hex file would be returned back to the user, and they would drop that onto their micro:bit and see their code run. And I remember, a weekend, there was about five of us, looked at this code, and decided that we didn't have the time, and we didn't have the expertise, because it was all written in Typescript, and Microsoft, it was still a moving target, because Microsoft was still building it at this time. However, by a stroke of luck, that very same week, I met a gentleman called Johnny From ARM, that's how he introduced himself, and he was the person who was leading the development of the hardware of the device, and I was explaining to him what I've just told you, and he was like, what? Why don't you just use MicroPython? And I was like, oh you know about MicroPython? And he was like, yes, I live next door to Damien George.

23:30 Michael Kennedy: Oh wow.

23:30 Nicholas Tollervey: He's the creator of MicroPython.

23:30 Michael Kennedy: Small word.

23:30 Nicholas Tollervey: Yeah, exactly, and Damien was living in UK, in Cambridge at the time, and so I had a little bit of a kerfuffle with the BBC, where I basically said look, you should use MicroPython, and they're like, no, we're going to use the Microsoft platform. I said no, MicroPython will let you do this stuff, and eventually they let Damien sign the NDA that was needed, and Johnny posted the development board to Damian's dev box, and a week later, Damien had it running. He had a REPL, and you could make LEDs blink, and it would detect button presses, and at that moment, I have to admit, I did a kind of little happy dance, because I knew.

23:30 Michael Kennedy: This is going to work.

23:30 Nicholas Tollervey: This is going to work, we had Hello World. So the rest is just polishing, well, through access. You know, we've done the first, Damien had done the first 90%, we just have the next 90% to go and get done.

23:30 Michael Kennedy: That's really amazing. So this was a project by the BBC. Why does the BBC, the second B is for broadcasting, right? Like why are they trying to make these social contributions? It's good that they are, but where does that fit in?

23:30 Nicholas Tollervey: Man, you're going to love this. It's going to be all very Games of Thrones. It's 'cause you have a queen, and she issues royal charters. And the royal charter for the British Broadcasting Corporation, which comes up every seven or eight years, part of the charter it says that the BBC is supposed to inform, educate, and entertain. And this fits in educate.

23:30 Michael Kennedy: Right, okay.

23:30 Nicholas Tollervey: So, however, the BBC has to be very careful, and they have been on the receiving end of various legal challenges, where if the BBC turn up and say, we're going to do educational resources, computing, then everybody who, every private company in the UK who does computing resources is going to be...

23:30 Michael Kennedy: Yeah, yeah, you're undercutting us, right? You're killing our business, right? Yeah.

23:30 Nicholas Tollervey: This is why the BBC acted as the umbrella organization, and it was the partners actually who delivered the micro:bit itself, so this is why it was Johnny From ARM, and not Johnny From The BBC.

23:30 Michael Kennedy: I see.

23:30 Nicholas Tollervey: While Microsoft was doing their PXT stuff, and why they asked us to do MicroPython, and Damien did that work, and I did a whole bunch of other work by the same institute as micro:bit, so.

23:30 Michael Kennedy: Yeah, that's cool.

23:30 Nicholas Tollervey: Yeah, but kings and queens and royal charters. If you dig deep enough, it's by the grace of God and Her Majesty and that sort of stuff, so.

23:30 Michael Kennedy: Yeah, yeah, wonderful. So, wait, so this thing was handed out to millions of kids in the UK, and there's actually some really cool research that came from it, but, people who are listening, if they're a teacher, or if they're a student, or somehow interacting with, even a university, school district, whatever, you can go get these, right? I could go to NewEgg.com or somewhere like that and buy them for 25 pounds, 20 pounds, something like that?

23:30 Nicholas Tollervey: Yeah, yep, exactly. So, somewhere like Adafruit, they'll sell you a kit. You can also get one in classroom bundles as well, so if you teach you can get a group of 30, or you can just buy hundreds of them all at once, and the micro:bit website has a browser-based Python editor, it also has kind of a block space thing, which is what Microsoft PXT turned into, and so they make it very easy for kids to sit down, you plug this in via a USB cable into your laptop or school computer, you use the browser-based editor, you get what's called a hex file, you drag that onto the device, it flashes the device, what we call when we put the software on the device, and then it runs, it's very simple.

23:30 Michael Kennedy: Yeah, that's cool. And some of the programming can even be, like you said, that blocky type stuff. You don't have to be able to type, or barely read, right? Okay, like, move, I'm going to put a 10 here, and then loop, and say put a three in the little loop block, and I think that's great. So that makes it super accessible. I did an Hour of Code project at my daughter's school, when she was in, gosh I'm trying to remember what grade. She was quite young, first or second grade, something like this, and almost every kid in first or second grade was able to just completely build something meaningful for them within an hour, in that little environment, which I thought was amazing.

23:30 Nicholas Tollervey: So what she probably used was something called Scratch?

23:30 Michael Kennedy: Yes, um, I think it was, maybe, it was on the Grok Learning platform, I think, hour code thing, so it may have been, I think it was Scratch-like, but I don't think it was actually Scratch. I don't remember what it's called.

23:30 Nicholas Tollervey: Yeah, so I know the folks at Grok, and they've used the the same block-based library that Scratch uses, so drag and drop blocks, it's just a JavaScript library, but they emit Python code, and then that Python code is running, I think, in the browser, in Grok's case, so you have...

23:30 Michael Kennedy: Brython or something, yeah.

23:30 Nicholas Tollervey: Yeah, exactly, and you have your little turtle or something like that. But, yeah, it's, you might be asking yourself, so where do I, how do I get a block face editor for Python on a micro:bit? Well, here's a cute story. There's a 13-year-old kid in the north of England, in a place called Preston, which is just north of Manchester, called Josh, and he has created a coding environment for kids, because he's a kid, and the stuff that he was being given at school wasn't meeting his expectations. And he figured it out himself.

23:30 Michael Kennedy: That's cool.

23:30 Nicholas Tollervey: He's taken this JavaScript library, and it emits Python and he's done all this work, and so he created this project called EduBlocks.

23:30 Michael Kennedy: Yeah he presented at the PyCon US Education Summit, which is, I think, the day before regular PyCon.

23:30 Nicholas Tollervey: Yeah, yeah, so this is the other thing. Josh is a great presenter, as well. So it was a kind of a vindication of the effort of investment that's happening in the UK, that even only this few numbers of years after we start concentrating on getting computing properly on the curriculum, you've got kids stepping up and autonomously building solutions for the next generation of kids, who are following them.

23:30 Michael Kennedy: I mean, he's following exactly in the tradition of so many people who became programmers are like, the stuff around me is crummy. I know I can make it better. I'm just going to improve the world. Give me a week, I'll be back, right? And then, oh look, I've made something better than we had before, right? Like so many people actually become more skilled so that they can just fix these types of problems.

23:30 Nicholas Tollervey: Exactly, exactly, and Josh has the wind in his sails, and it's wonderful to see this community that he's building, as well, around EduBlocks so it'll flourish and grow. So whenever I see Josh, I just smile, both inside and outside, 'cause it's just so wonderful to see this young person really flourish. He's a credit to himself and his family really support him. I go and visit schools sometimes or coding events in UK for kids, and inevitably there's an EduBlocks happening somewhere or other and I smile and think that if Josh could see these kids having such good fun with the code that you've written, he'd feel good about himself.

23:30 Michael Kennedy: That's awesome. So, kind of in the same vein, let's talk a little bit about the impact. So on the micro:bit website, there's some nice research findings, summarized and whatnot, and one of the major impacts was that this is cross-curricular, and that means coding is not just contained into the computing class. You don't go to computer class, do computing, and then go back to pen and pencil, or whatever. I feel very strongly about this, actually. I think most of coding and most of programming skills are to amplify other things. My biology research is better, my music is better, my whatever is better because of this. And this is kind of related to that.

23:30 Nicholas Tollervey: Yeah, oh, man, if we were in the same room, I'd be giving you a big hug and high five. I can't agree more with you there. I totally see where you are with that. Couldn't agree more.

23:30 Michael Kennedy: That's awesome. So yeah, it seemed like this helped there. This portion of Talk Python to Me is brought to you by, us. Have you heard that Python is not good for concurrent programming problems? Whoever told you that is living in the past, because it's prime time for Python's asynchronous features. With the widespread adoption of async methods and the async and await keywords, Python's ecosystem has a ton of new and exciting frameworks based on async and await. That's why we created a course for anyone who wants to learn all of Python's async capabilities, Async Techniques and Examples with Python. Just visit talkpython.fm/async and watch the intro video to see if this course is for you. It's only $49, and you own it forever. No subscriptions. And, there are discounts for teams as well. This is not just a UK thing, right, the BBC started it, lot of the folks there, like you mentioned, yourself and Damien George and so on, but this is now a global thing. Like I was reading about it being used in Arkansas, for example, with a bunch of 900 schools or something cool like this, and Canada as well.

23:30 Nicholas Tollervey: Yeah, if you remember back to PyCon, Tamisha gave her outstanding keynote, and she's using micro:bit in her Detroit library to get these kids into programming. It's such a wonderful thing to see. You just don't know where these things lead, really.

23:30 Michael Kennedy: Yeah yeah, it's amazing.

23:30 Nicholas Tollervey: When they take off, they take off, I guess.

23:30 Michael Kennedy: Yeah, so, let me maybe summarize some of the research findings really quick, just highlight them, and then you can comment on 'em. So there was some follow-up research, and there's actually a research paper, on this, at least within the UK, around, this is millions of kids, so this is a great sample size, not three or something, and it said 90% of the students felt that micro:bit showed them that anyone can code. This is not like the genius hacker, like we talked about, right?

23:30 Nicholas Tollervey: Yeah, exactly.

23:30 Michael Kennedy: Some other, one that really resonated deeply with me is that 70% more girls said that they would choose computing, computer science, as a potential subject after using this, and as the father of three daughters, that is really awesome. So there's some other ones as well, bunch of the teachers enjoyed it, and so on, but those two definitely resonated with me.

23:30 Nicholas Tollervey: If nothing else, if the technology is a dead end, the device disappears without a trace because something new comes out next year, if nothing else, just those two things that you've mentioned, that coding is for everybody, and especially for girls, for whom, I guess since the 1980s, programming especially has been stereotyped as a boys thing, and stereotypes stop you from doing stuff. And if this can counteract that stereotype, then it's a good thing. I guess because the micro:bit makes it so incredibly easy to make something funky, and it's something you can hold in your hand, and that might be, I'm thinking of a friend of mine, David Wale, who did a project with a little girl, one of his neighbors, I believe, and the micro:bit would do dance instructions. It would flash an image on the screen, and you had to either YMCA or Big Fish, Little Fish, or Macarena, or something like that. But it'd show you what the moves were you had to do. But the important is, is that the micro:bit gives you ownership of your digital world. You're not just sitting there consuming a YouTube video. You're making a dance machine that you can share with your friends when they come 'round. And they can say, oh that's cool, let's invent a new move and have a new icon, or something like that. So it's giving the young people, or anybody else for that matter, who's coming into programming, the mechanism for just taking control, as soon as possible, of programming, rather than having to, okay, today we're going to learn about loops and then tomorrow we're going to learn about functions, and then maybe in about three weeks' time, you'll be able to do something that's vaguely useful, because technology's hard. This is within five minutes, you can, it's literally a line of Python to make it scroll, Hello, my name is Nicholas on the display. Play a toon, it's got a speech synthesizer built into MicroPython, which is hilarious, because of course as soon as kids realize there's a speech synthesizer...

23:30 Michael Kennedy: Then it's on?

23:30 Nicholas Tollervey: Speech dot say, and then a string. Obviously the teacher uses a polite example, but within seconds, the kids are being rude to each other via the medium of squeaky Dalek voices. But they love it, and of course the first kid, I saw this a couple days ago when I was visiting a school, the first kid who figures out that thing, it's like a gold rush. All of a sudden it's like, you seen what Susanna's done? No, listen, listen, listen. It's talking, wow! How did you open that? Let me see, let me do this thing, so it's like pebbles in the water, you know. They sort of echo out, and then the kids teaching other kids, then the school things, but they all want to do it, and it's just capturing moments of that enthusiasm and building on that. So you go wow, do you know how the speech sync starts yet? Or, what else could you do with a speech synthesizer? You could make it sing. Okay, so how do you do that? Well, you pass another argument in, which is the pitch of the voice. Well what's an argument? And what actually are we doing? Well we're calling a function here, yeah, and so you see the string in the brackets? You've got string, which is what you're going to say, and the next one is a number, which tells you what the pitch is going to be, so that's two arguments. So they now have the notion of what an argument is, because that's the important, essential piece of information that's going to let them get the micro:bit to sing some goofy song.

23:30 Michael Kennedy: What you're touching on here is one of these fundamental things that we've been doing wrong teaching programming for the last 50 years, and by that I mean, what we do is we say, okay well, what do they need to know how to write of a whole program? Well they need to know functions, and they need to know loops, and they need to know variables. So we're going to teach variables, loops, functions, classes, and then eventually, like three weeks later, like you say, they're going to be able to do a thing, and I think things should be taught from the outside in. Like an onion, right? You see how amazing it is on the outside, you peel back the onion, you learn on part of why it works, and that just connects so much better.

23:30 Nicholas Tollervey: Yeah, this jives so much with music education. Because of course, you get handed your violin, now can you imagine my wife's a string teacher, so she says this day in and day out, and she's amazing at it as well, and watching how she works is another thing that inspires me, because her early access violin stuff that she does sounds like hell, 'cause it's like 30 six year olds all armed with a violin. Now that's not going to sound nice.

23:30 Michael Kennedy: Like you're killing a goose or something right?

23:30 Nicholas Tollervey: It's like strangling cats for a very long time. But, what Mary does is introduces gradually, as in a outside-in sort of a way, various violin playing techniques. And so, she might be playing something really funky on her cello, a kind of a top-off blues walking bass, which the kids really like, and she says, well if you go, it'll fit with what I'm doing. And so they all go but it kind of sounds okay, and what they're focusing on is the fact that Mary, she has a beat on, with a drum machine, she's playing top-off blues bass line, and they feel they're part of it, and so in their eyes, they're making a song. And it gives them the momentum, just as we were just talking about with kids learning how to code, and so, starting from, do I see a need for learning this, I have a reason for wanting to learn this thing, is perhaps the primary way that music teachers, especially, but perhaps people who teach code, should go about inspiring those beginners for whom they're not, how can I put it, already inclined for programming, see what I mean?

23:30 Michael Kennedy: Yeah some people have a crystal clear, laser focus. I want to build this thing, and they just know, I'm just going to plow through the technical stuff 'til I get to that thing, but a lot of people just have a general interest, and then it's harder to plow through when you don't have a target.

23:30 Nicholas Tollervey: Yeah, yeah, and so providing a little gizmo or a project or something like that that allows somebody to go wow, yeah, I really do want to have a cat-watering flap, or something, I don't know, I'm making this up, but you know what I...

23:30 Michael Kennedy: I know exactly what you mean.

23:30 Nicholas Tollervey: Yeah yeah, there's a switch, it detects a thing, the thing works, and the cat is wet. That's an awesome thing I'm certainly going to build. In that moment, that's when you've got them. And you can start to...

23:30 Michael Kennedy: Now they're willing to learn the stupid syntax of a loop or something, because that's their steps.

23:30 Nicholas Tollervey: That's what you need.

23:30 Michael Kennedy: Their staircase door is their goal, yeah?

23:30 Nicholas Tollervey: Yeah, exactly, exactly.

23:30 Michael Kennedy: Cool, so you're speaking of projects. Actually, on the microbit.org site, there's a bunch of ideas or projects. Maybe I'll throw some out, and we can just comment on them. So one was a combination lock. What was the idea of that, do you remember?

23:30 Nicholas Tollervey: So you know, I wasn't involved in many of these projects.

23:30 Michael Kennedy: Alright, well let me just throw them out there so people, yeah yeah, let me just throw 'em out there so people have an idea of what people. So you can go to microbit.org/ideas, and they've got many many projects. I just grabbed a few I thought were interesting. So you can build a digital combination lock with your micro:bit, a Morse code phone, if you have two micro:bits.

23:30 Nicholas Tollervey: Okay yeah, so I can tell you about that, because it was my kids who did that.

23:30 Michael Kennedy: Really, okay, you got to tell us about that one.

23:30 Nicholas Tollervey: At Python UK, there is an education track that I used to be involved in, and we had a kids' day where kids would turn up, and the way the kids' day would work is there would be like, lessons in the morning where kids would try different projects, and in the afternoon it was like, you are now let loose, think of think you found most interesting in the morning, and go do more of that, and 5:00 we're going to present to the whole of the conference, just before lightning talks, the stuff that we have been doing. And, so, two of my kids and one of their buddies came up with, my daughter had actually been teaching herself Morse code, and so, the A button was a dot and the B button was a dash, and there's a radio on the micro:bit, and so she said, to the audience, she was probably about 15 at the time, she said "So, uh, give me a message." Saying was like Hello World, so she went yeah, okay, well that's obviously, now I don't know Morse code. And you could see that they're all going how does she know all this? But you know, that was kind of her thing.

23:30 Michael Kennedy: Yeah, cool.

23:30 Nicholas Tollervey: And it was just transmitting the dots and the dashes, and then Bedford, he held us his micro:bit and it scrolled across, Hello World.

23:30 Michael Kennedy: Nice.

23:30 Nicholas Tollervey: It's such a fun thing to do, fun thing to do.

23:30 Michael Kennedy: Yeah, that's another cool one. One that was interesting was live data logging with Python and Mu, the editor, which drew graphs and stuff of whatever's receiving, so you could do cool, hey, I want to graph the weather through the summer, or how tall my plant is, or anything you can hook some kind of measure to, right? Every single...

23:30 Nicholas Tollervey: My dog's activity, or something like that.

23:30 Michael Kennedy: Yeah exactly, how many times did my frog jump, if I can stick a sensor to my frog. So, you control little traffic lights with the micro:bit? One that was cool, that talks about this blocky type of programming was, the Hour of Code has a Build a micro:bit virtual pet, which is pretty cool, and you can drag and drop the little boxes on there and stuff.

23:30 Nicholas Tollervey: It's kind of like a Tamagotchi, from, I don't know, the mid-90s, you remember those.

23:30 Michael Kennedy: Yes, oh my gosh, I got to tend to my Tamagotchi.

23:30 Nicholas Tollervey: Feed 'em, yeah.

23:30 Michael Kennedy: No, no, you don't have to, it's really not necessary. And then one that was not on there, but I would love to do with my daughter is, I want to get her into model rockets. You know, they put the little disposable engine, you go up like 500 feet, and then they shoot off. Yeah exactly, Etsy, exactly. It would be so cool to put one of these in there and be like, well this rocket went this fast, this high, whatever, and it'd be fun.

23:30 Nicholas Tollervey: Yeah, so the accelerometer that is gravity, obviously, so what you should see, if you're logging, take a reading every whatever milliseconds, microseconds, whatever, and take the reading, store it on the local file system, get the log back, stick it to a graphing program, and you'll see takeoff, you'll see this big spike. And then you'll see free fall as well, which would be a big spike on another axis as well.

23:30 Michael Kennedy: Right, that's awesome, and then you probably can do a little calculus to actually figure out altitude, and top speed, and things like that. Obviously my 10 year old daughter's not going to do the calculus, but she can be part of the project, and then I go oh, you feed that number here and it tells you how fast it's going or something, right?

23:30 Nicholas Tollervey: Yeah, the thing there is, you might be using Python, being that it's on a micro:bit, but if you talk to some of the folks at NASA, they use Python. So there's this, obviously they don't use Python for space-bound payload, although there's a story in there, ask me about that in a second, but they do use Python for all sorts of other things. There is this sense of continuity from me as a 10 year old girl, through to someone that my dad knows at PyCon, who was at the space museum, and who were using Jupyter Notebooks to analyze this thing, and you're like, well man, I'm just like a space scientist.

23:30 Michael Kennedy: Yeah that's so awesome, right. Like the person I met at JPL or Space X or whatever is like, they actually write the same code as I do, not just I'm simulating programming and they do it for real, right. That's actually one of the things that's super awesome about Python isn't it? That is can be used by these kids and then it can scale up to be used at that level, for Nobel Prize, like multiple Nobel Prizes have been awarded for work done with Python now.

23:30 Nicholas Tollervey: Yeah, exactly, I'm still on the same page as you with that. Eben Upton, who founded Raspberry Pi, you know the reason it was called Raspberry Pi was because they wanted the Pi to be P, Y, and it was originally going to run Python.

23:30 Michael Kennedy: Oh wow, okay, I didn't know that.

23:30 Nicholas Tollervey: Yeah, but he told me that the reason they chose Python was because of this continuity. You could start with create Hello World, and it was as simple as 8-bit basic back in the day. Or you could write YouTube.

23:30 Michael Kennedy: Exactly, yeah, exactly, or Instagram or whatever.

23:30 Nicholas Tollervey: Yeah yeah, exactly, the skills that are learning as an eight year old in primary school, ultimately would be useful in the industry 10, 15 years later when you're out there.

23:30 Michael Kennedy: Right, now you imagine telling engineers that for the first 12 years, they're going to study this type of calculation and math and numbers, and then, well those numbers don't work anymore, you have a new set of numbers. A new way of doing arithmetic and math, and there's just, why am I doing this, right? Like why would I switch?

23:30 Nicholas Tollervey: That's a really great point, and there's something that Alan Kay, he's the, for people who don't know, he's the creator of Smalltalk and he was also part of the Xerox Park thing that came up with divisional Windows, Windows icon could match in points if that's what Steve Jobs saw, and he's one of these elders of the Internet type people that you hear, but he has a great quote, where he talks about, the thing that you need to do is let kids do the real thing. They do this in sports and they do this in music. Kids are always doing the real thing. It might be a simplified thing, but it's still the real thing at their level of development. And I think there's a danger with programming, because people make ABCs, very basic programming environments, that aren't the real thing, and so, like you said, kids get six months in, they've invested all this time, and then they get onto their next academic year, and the teacher who they had last year goes, so that's the stuff that we did with Scratch. That was all fun, the cat was great, but now we're going to learn Python. And all that knowledge of that, how Scratch works, is just gone. And so this is the advantage Python has, is that you can start with kids who are very young, because Python is such a beautiful, simple, and easy-to-learn language, and a lot of the credit for that has to go to Eben, because in the late 90s, he was, I can't remember what he called the project, but he had something for an educational project, Python for Everybody or Programming Is for Everyone, and thinks like Idol came out of that, and the Turtle module, and stuff like that. But also the fact that Python is based, in part, on ABC, that kind of goofy language that he was originally working on that made him think, just like we were talking, ah, man, just give me a week and I'll have an improved version of this. Which is kind of what happened over Christmas is...

23:30 Michael Kennedy: 1991?

23:30 Nicholas Tollervey: 1989 or something like that.

23:30 Michael Kennedy: Yeah yeah.

23:30 Nicholas Tollervey: Around 1990, so the legend says, Eben was like, ah, man, can't be that hard. I'm going to do ABC but the bit's access, and it's a white space-based language. I want it to be easy to learn, because ABC was a teaching language but for students learning, coming to programmers at that time, and so the fact that Python has all those attributes, and the sort of Venn diagram of great stuff for teaching people, it's firmly in the middle. And the fact that it's so popular and widely used in the industry means a basic continuity for learners, and that is a real great stroke, that we have.

23:30 Michael Kennedy: Yeah that's, yeah I think it's a real positive. So, one thing I did want to give you a chance to talk about, because it's really related to this whole conversation, are your two books. And to be honest, I, one of them, the first one, Python Education sounds super interesting, but I hadn't even heard of it. Tell everyone about what your O'Reilly books.

23:30 Nicholas Tollervey: Alright, so, I've written four books for O'Reilly. But two of them are not sort of lost in the mists of time because technology moves on, and things. But a couple of years ago, if you go to PyCon, O'Reilly have little reports that they hand out to people for free, and I did one of those about Python education. It's about 30 or 40 pages long. It's essentially like a little manifesto about Python in education, and why you'd want to use it, where you should go to learn more about it, and things like that. And also for programmers who might be interested in learning how they might help support educators, colleagues who are teachers and things like that. So I did that book, and it's free to download from the O'Reilly website. So if you just Google Python Education, it's a free download. Takes about half an hour to read. And the other one, which I wrote most recently, published about a year ago, is Programming with MicroPython, and that was an awful lot of fun to write, because the more I've found I'm a Python programmer, I'm not an embedded expert, as it were, until I met Damien, of course. The presence he has is sort of infectious. You get these devices and you suddenly realize how remarkable the achievements Damien has managed to do is. He shrank Python 3 right the way down to something that could work in 16K of RAM.

23:30 Michael Kennedy: Right, on a $5 chip.

23:30 Nicholas Tollervey: Yeah, yeah, exactly, exactly. And the fact that it's also fun to work with various different protocols, hardware level protocols, from what, what are you doing is bit flipping, or you're using very low level post cost to make a buzzer sound, or to draw a picture on a very simple screen, and so it reminds me an awful lot of the programming that I did as a kid, when the 8-bit machines were, the memory address, you could poke into that and turn the pixels the right color. Do you know what I mean?

23:30 Michael Kennedy: Right, right, there was no protected memory, you just get in and do it.

23:30 Nicholas Tollervey: Yeah, exactly, so we are so far away in terms of layers of abstraction when we're working in Python normally that you don't even get to think about what the computer really is doing, or if it's MicroPython, you're saying yeah, switch the voltage on a lift GPIO pin, and the LED works, and then if you switch the voltage, on and off, so you're using something called port switch modulation, you're switching the LED on and off for only half the time, but very very quickly, so it dims to 50% and then dims to 25% and you can make it glow and throb and all, I'm geeking out here, but it's...

23:30 Michael Kennedy: It sounds fun.

23:30 Nicholas Tollervey: It's really good fun, it really is good fun. Just to feel that you're back close to the hardware.

23:30 Michael Kennedy: Yeah, that's wonderful. Alright, so we only have a few minutes left, and I have a whole bunch of stuff that I want to talk to you about. We don't have time to cover it, but I do want to let you just quickly briefly touch on two things. One, the Mu code editor, which is sort of an IDE, maybe that's a bit of a strong word, but like a code editor for beginners. You want to tell people quickly what that is, and how it's related here?

23:30 Nicholas Tollervey: Yeah, so, third time this has been mentioned here. How hard can it be? Give me a week, I'll come back with something better. So I did pretty much all the tooling for Python for the BBC micro:bit, so the browser-based editor is the thing that I wrote, along with a whole bunch of other stuff, and, as any good software developer would do, they tested with their target audience, and so I traveled thru the UK, working with teachers and programmers, and observing them using early versions of this browser-based editor, and it didn't really work. Whilst they appreciated the fact that it was on a browser and it was easy, it was also a pain in the backside because it was on a browser, and browsers had limited connectivity with the device, and you couldn't bring up the Python record on the board and things, and so I kind of got a list of requirements that teachers and developers really wanted, and Sunday afternoon it was raining. I remember thinking, how hard can it be to use PyCubes or something like that to build the world's simplest editor? And so that happened, and people enjoyed it. And then the Raspberry Pi Foundation graciously said, well, if we give you some money to support your work, could you take some time to turn it from a micro:bit-only editing thing to a generic Python editor, so I went back. It now has a simple debugger, classical debugger, it has a Jupyter Notebook built in as its REPL, IPython type thing. It works with Adafruit's amazing line of circuit Python-based boards. There's a Pygame Zero mode, so it makes it very easy to write games, but it aims at beginners.

23:30 Michael Kennedy: Nice.

23:30 Nicholas Tollervey: It's been rather wonderful over the last few months to see the community coalesce around this editor. All these educators realize that there's this thing that they can use, it shrinks down low. We've got lots of people providing translations, so, for example, I met some French teachers, who said, the fact that Python has key words in English isn't a problem, the problem is that IDLE is in English, or whatever code.

23:30 Michael Kennedy: The user interface itself and being used and whatnot are, yeah.

23:30 Nicholas Tollervey: Exactly, and so we'd love an editor that was simple enough that they're weren't that many menus, but also it was in French. Well, I think that's about 150 strings to translate, to get Mu into a different language. And so, somebody did it over the weekend, and hey, presto, Le Mu is born.

23:30 Michael Kennedy: Le Mu, wonderful.

23:30 Nicholas Tollervey: And for Germany, and El Mu for Spain, and so on. I heard today from a friend in France that they'd run a Girls Can Code course, and they were all using Mu in French, and it was nice and easy, so Mu is, I guess, the outcome of a whole bunch of people getting enthusiastic about building an editor for beginner programmers, because if you ask a programmer, what do you think should be in an editor? You'll get a programmer's editor, rather than a beginner's editor. And so one of the important aspects of how we made Mu is that we put beginner as the focus. Now, the interesting side effect of that is that we tend to get bug reports, and in fact, I can see in my alerts, somebody saying, I think you should have this feature in our chat channel. That's not going to happen, because if you know enough about programming to ask for a feature to give in Mu, then you are beyond Mu. You should use Atom or Visual Studio Code, or whatever. You have graduated beyond Mu. So Mu is just the stage where you're toddling.

23:30 Michael Kennedy: Yeah it's the springboard into the real editor, right? Okay, that's a super cool story. The other thing that you had mentioned previously was Code Grades, as an analogy to musical paths, or even, like Taekwondo or something like that. Tell us about that, and that has its own site, doesn't it?

23:30 Nicholas Tollervey: Yes, right, so Code Grades is an experiment. I want to see if this works, really. In the UK, and elsewhere in the world. I'm not sure in the US, but, you'll see what I mean. We have these things called music grades. If you remember back to the how to draw an owl, you get draw two circles and then draw the rest of the owl. Well, music grades are the steps in between that take you from the very simplest to the most complicated, and in music, this is, you prepare and build concerts, you go along and you play this to an examiner. They give you helpful feedback and say, yes, you have played the piece to the level that's required for grade four, trumpet, or grade seven, flute, and the higher the grade you get, the more difficult they become. And so my idea is to apply that to programmers. At the moment, this week, we started grade one Python, where the class is 15, and in eight weeks' time they're going to sit down with a friend of mine, called Tim, who's a Python core developer and is also an enthusiast about Python education, and they're going to present a project that they have built. If it matches, if it meets certain requirements for grade one Python, they get to pass, and then they can do grade two Python, which will have slightly more difficult or involved requirements, up to grade eight Python, where we want to see documentation on readthedocs. We want to see a separate .py that works with PyPI. All these things that we might expect to found it for a Python project. These steps will get you to there, and so Code Grades is this experiment to see if it works, and we'll find out in, well hopefully, eight weeks, when these folks take their grade one, and if that works, then well, I need to make a decision and see what I do with the idea. It might be a great way of funding people who contribute to open-source software. Because of course we need people to examine these beginner graders, and these people need to be experts. So if you can pay examiners to do this, then that's a source of income for some of the people that I'm thinking off off the top of my head who would rather be working on their open source code than having instead a job writing, just pounding out code for...

01:00:02 Michael Kennedy: Right, to optimize interest rates for stock trades or some weird thing, right, some weird angle there.

01:00:09 Nicholas Tollervey: Yeah, exactly, we'll see what happens. It's early days, very early days. So far, the feedback that I've had from coders, who might act as code mentors who will be proven as examiners has been good. The feedback from teachers has been really great. I was at a teacher's meeting a couple weeks ago where I introduced the concept, and they were like, well, where do I download the curriculum? How do I enter my students for this? Hold on, hang on, we just got this...

01:00:38 Michael Kennedy: We're not there yet.

01:00:39 Nicholas Tollervey: Yeah, exactly, and the first class on Tuesday evening this week, at the end, this has never happened to me before, I'm really quite proud of it. They gave me a round of applause, when I said...

01:00:48 Michael Kennedy: Oh, wow.

01:00:48 Nicholas Tollervey: That's it, good work today, and what I had tried to do was use the techniques from music education, so it wasn't a case of, today we're going to do loops, next week it's going to be functions. We were working on projects and electing the requirements of what a loop or a function is, fall after interacting with these projects, and so these folks were really, you know, they've never programmed before, but they managed to get their pink alien to stroll across their screen using Pygame Zero, and you're like, 10 rounds of Python, and I set them a challenge, which was, well, can you change the way the alien moves? Or can you change the sound effect that happens when you click him, or something like that. And so they've got an existing solution, the onion analogy that you used, and that peeling back the layers and changing it, and discovering the things that they need to know to do that, so that's what Code Grades is about. To be confirmed as to whether it works or not, but I'll certainly let you know if it does.

01:01:44 Michael Kennedy: Yeah, it sounds really interesting. I'll definitely link to it in the show notes so people can check it out. Cool, I think we should probably leave it here for this topic, but it's been great to talk about, Nicholas. Now before I let you go, two quick questions for you. If you're going to write some Python code, what editor do you use?

01:02:01 Nicholas Tollervey: I use VI, for historical reasons.

01:02:03 Michael Kennedy: Yeah, awesome, right on. And then, a notable PyPI package, not necessarily the most popular, but one you've come across, you're like, people should know about, whatever.

01:02:13 Nicholas Tollervey: Hmm, that's hard. That's really hard. I'll tell you what, it's a popular package, and it's requests, and the reason I'm saying that is because I know some of the commentators. I'm thinking of Cory here, and they do amazing work on a module that has an API that is just so beautifully simple, and it works. And I know from talking to Cory that HTTP is a real gnarly type protocol to have to work with.

01:02:43 Michael Kennedy: Yeah, oh yeah.

01:02:44 Nicholas Tollervey: You mess up the file so many times by finding a web service that you have no idea whether it's going to come down or inactive, and yet the code that he's written using hyper, the project that sits underneath, requests, is the actual HTTP stuff, is incredible, really. It's a great way of, again, focusing on the user, where the user is the programmer. I just want to get this web page. Okay, well there's JSON at least at this end, so it just works, I love that. And the documentation is great, and the community around it is good, too.

01:03:15 Michael Kennedy: Yeah, it's definitely one of the special ones out there. So I see your requests, and I respond with a Responder, have you heard of this, Responder?

01:03:23 Nicholas Tollervey: No, no.

01:03:24 Michael Kennedy: So, Kenneth Reitz just came out with a brand new web framework called Responder, that pulls in a requests. It's literally came out on October 8th, so it's going to be interesting to see how his take on the micro-framework like Flask-esk, but not Flask.

01:03:41 Nicholas Tollervey: This is good, because, and I'll tell, so one of the things that I'm thinking of improving in Mu, the next version of Mu, is a way for beginners to very quickly write a web application.

01:03:53 Michael Kennedy: Right, right, like the easiest path forward on the web app, yeah?

01:03:56 Nicholas Tollervey: Exactly, exactly, because Mu has this notion of modes, and if there's a website mode, and I was thinking of maybe doing something like Bottle, you know, you create a function for your endpoints, that directs you to your template, go do some stuff. But if Responder is there, I hadn't heard that, oh man.

01:04:15 Michael Kennedy: It's only a few days old, so yeah. You have to check it out, I don't know.

01:04:19 Nicholas Tollervey: I'm going to definitely, you know what I'm going to do this evening, I'm going to check this out.

01:04:23 Michael Kennedy: python-responder.org, so yeah, pretty cool.

01:04:27 Nicholas Tollervey: Cool, thanks for letting me know that.

01:04:29 Michael Kennedy: Yeah, right on. Alright, so people heard about the BBC micro:bit, all of this education stuff. We've heard about Code Grades. Final call to action: what should they do just to get involved or to make this part of their world?

01:04:43 Nicholas Tollervey: Okay, so if you need any motivation about should I be doing this, think of this way: you're talking with your future colleagues here, and how your future colleagues turn out depends on who turns up to do the education with them, who turns up to teach them, who turns up to show them the way to code. And I don't know about you, I'd like to be going to Python in 20 years' time, so it's kind of incumbent on us to make sure that we help foster the community of tomorrow, and the way you do that is through education. The other motivation is that if you really want to become an expert at something, teach it, because you have to introspect, then. And you have to think, why do I do it like this? And I need to be able to explain it in a simple enough way that I demonstrate my own clarity of thoughts about this thing, and that is not only a great skill for you to have to help your colleagues, you know, you need to explain this API you've created, but it's also good for you, because you have to sit back and think about what you're doing. So teaching, educating, might not necessarily be the first things that come to mind when people think of career progression, or helping their company out, but in the longterm, they are totally at the core of what you should be doing.

01:06:05 Michael Kennedy: Definitely, yeah yeah.

01:06:05 Nicholas Tollervey: My great speech.

01:06:08 Michael Kennedy: It's a great speech tonight, definitely, I agree with it. So it's awesome, thanks for saying it. Alright Nicholas, thank you for being on the show. It's been great to have this chat and share ideas with you.

01:06:18 Nicholas Tollervey: Yeah, thank you so much, it's been great to be here.

01:06:19 Michael Kennedy: You bet, bye. This has been another episode of Talk Python to Me. Our guest on this episode was Nicholas Tollervey, and it's been brought to you by Datadog and Talk Python Training. Datadog gives you visibility into the whole system running your code. Visit talkpython.fm/datadog and see what you've been missing. They'll even throw in a free T-shirt for doing the tutorial. Want to level up your Python? If you're just getting started, try my Python Jumpstart By Building 10 Apps, or our brand new 100 Days of Code in Python, and if you're interested in more than one course, be sure to check out the Everything Bundle. It's like a subscription that never expires. Be sure to subscribe to the show. Open your favorite podcatcher and search for Python. We should be right at the top. You can also find iTunes feed at /iTunes, Google Play feed at /play, and direct RSS feed at /rss on talkpython.fm. This is your host, Michael Kennedy. Thanks so much for listening, I really appreciate it. Now, get out there and write some Python code!

Back to show page