WEBVTT

00:00:00.001 --> 00:00:04.580
How can we make learning Python and teaching Python more real for students, especially younger

00:00:04.580 --> 00:00:10.760
students? The BBC in the UK had a great idea. Make it more physically real with actual devices.

00:00:10.760 --> 00:00:16.000
That's where Nicholas Tolerwey got involved. He helped bring the BBC, Microbit, and Python to

00:00:16.000 --> 00:00:22.500
millions of kids in the UK. Join me to hear a story on this, episode 184 of Talk Python To Me,

00:00:22.500 --> 00:00:25.240
recorded October 12, 2018.

00:00:25.240 --> 00:00:43.360
Welcome to Talk Python To Me, a weekly podcast on Python, the language, the libraries, the

00:00:43.360 --> 00:00:47.960
ecosystem, and the personalities. This is your host, Michael Kennedy. Follow me on Twitter

00:00:47.960 --> 00:00:52.660
where I'm @mkennedy. Keep up with the show and listen to past episodes at talkpython.fm

00:00:52.660 --> 00:00:57.180
and follow the show on Twitter via at Talk Python. Nicholas, welcome to Talk Python.

00:00:57.180 --> 00:00:58.720
Thank you. Good to be here.

00:00:58.720 --> 00:01:02.520
Yeah, it's great to have you here. We've been trying for a long time. And finally, after,

00:01:02.520 --> 00:01:08.260
you know, summer vacations and all sorts of traveling, we've managed to get together here on the show.

00:01:08.260 --> 00:01:10.440
Yeah, it's going to be good. I'm looking forward to this.

00:01:10.440 --> 00:01:14.600
Yeah, so am I. It's going to be a lot of fun. Now, we're going to talk about teaching and education

00:01:14.600 --> 00:01:19.920
and IoT and Python and all sorts of cool stuff you've been involved in. But before we get into

00:01:19.920 --> 00:01:22.240
that, let's start with your story. How do you get into programming in Python?

00:01:22.240 --> 00:01:29.080
So a long time ago, perhaps not in a galaxy far, far away. When I was a child, I grew up in the 80s.

00:01:29.080 --> 00:01:35.620
And every school in the UK was given an 8-bit computer for the BBC Micro. And my dad was a

00:01:35.620 --> 00:01:43.240
head teacher, a school principal. And one school holiday, he brought this machine home to try and

00:01:43.240 --> 00:01:48.820
figure out how am I going to use this in school. And it took about half an hour for my brother and I to

00:01:48.820 --> 00:01:55.180
grasp it from his hands and take over and do the, you know, print, you are an idiot, go to line 20 type stuff.

00:01:55.660 --> 00:02:01.100
Yeah, yeah. My brother is an idiot or, you know, some other insult you can inflict on your siblings.

00:02:01.100 --> 00:02:06.120
Yeah, it's funny enough, Andrew, my brother, he's also a programmer. It can't have been that bad.

00:02:06.120 --> 00:02:20.600
But the point I'm trying to make is that as kids, we had computers around. And then when I was, I don't know, 12 or 13, I started doing music stuff and ended up being a professional musician for a while.

00:02:21.080 --> 00:02:32.800
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.

00:02:32.800 --> 00:02:39.120
So I took a year out, did a master's in computing, and that got me my first job as a software developer.

00:02:39.600 --> 00:02:53.220
And that was actually as a .NET developer. And I ended up working in 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.

00:02:53.220 --> 00:02:57.180
And you're like, hey, maybe we'll just teach them all C-sharp. No, maybe not.

00:02:57.440 --> 00:03:01.340
No, exactly. Oh, man. These are very, very clever people, these quants.

00:03:01.340 --> 00:03:16.900
But it was around this time that Iron Python was coming out. And so in my naive sort of way, I typed in scripting language for the common language runtime, and Iron Python came out on top.

00:03:16.900 --> 00:03:22.360
And I ended up going to the very first PyCon UK in 2007 at that time.

00:03:23.360 --> 00:03:29.920
And I was welcomed by a rather jolly gentleman called John Pinner, who sadly passed away now.

00:03:29.920 --> 00:03:36.940
But he, I guess he was like the founding force of nature for Python in the UK when it comes to getting the community together.

00:03:36.940 --> 00:03:40.160
And it was such a wonderful place to be.

00:03:40.160 --> 00:03:48.160
And so after about another year, I decided, well, .NET's fun and everything, but Python's even more funner.

00:03:48.160 --> 00:03:49.260
I'm going to do Python.

00:03:49.260 --> 00:03:49.960
Totally agree with that statement.

00:03:49.960 --> 00:03:50.960
Yeah, exactly.

00:03:51.260 --> 00:04:03.120
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.

00:04:03.920 --> 00:04:12.080
And I found that within about three weeks, I was more productive in Python and Django than I was as a sort of expert level C-sharp developer.

00:04:12.080 --> 00:04:14.800
And the rest, as they say, is history.

00:04:14.800 --> 00:04:20.600
I started again at the bottom of the program, a stack as a junior Python developer.

00:04:20.600 --> 00:04:26.760
And since then, I've been working mainly in Python as my full-time freelance job.

00:04:26.760 --> 00:04:28.500
Yeah, that's a great success story.

00:04:28.700 --> 00:04:40.400
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.

00:04:40.400 --> 00:04:42.880
And I said, but I kind of like Python more.

00:04:42.880 --> 00:04:43.840
Yeah.

00:04:43.920 --> 00:04:50.860
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?

00:04:50.860 --> 00:04:57.660
And, you know, not just in my knowledge, but in my maybe career position and things like that.

00:04:57.660 --> 00:05:03.940
Like, 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.

00:05:04.280 --> 00:05:09.480
I kind of don't want to wreck this, but I know over there is a better peak if I could get to it.

00:05:09.480 --> 00:05:09.780
Yeah.

00:05:09.780 --> 00:05:10.960
I got to go through the valley.

00:05:10.960 --> 00:05:12.520
Was that scary or is it okay?

00:05:12.520 --> 00:05:13.160
It was okay.

00:05:13.160 --> 00:05:13.980
And here's why.

00:05:13.980 --> 00:05:19.120
Because I was expecting until I was about 22 that I was going to be a classical musician.

00:05:19.120 --> 00:05:24.040
And in terms of jobs, that's probably the least secure job you could possibly ever have.

00:05:25.100 --> 00:05:27.180
But anything else sounds better.

00:05:27.180 --> 00:05:42.060
And I guess the outlook and the attitudes that I developed as a student musician or a freelance musician when I was starting up my music career, you are literally living for your art, as it were, rather than making an awful lot of money.

00:05:42.060 --> 00:05:43.980
Anything else feels good.

00:05:43.980 --> 00:05:47.580
And I knew that, well, what's the worst that can happen?

00:05:47.580 --> 00:05:51.900
I tried Python for a few months and it doesn't work out.

00:05:51.900 --> 00:05:57.720
I can become another C-sharp developer doing more bank-related boring stuff.

00:05:57.720 --> 00:05:58.020
Yeah.

00:05:58.020 --> 00:05:58.420
Yeah.

00:05:58.420 --> 00:06:03.580
That's a super attitude just to say, like, okay, what is the worst failure position?

00:06:03.580 --> 00:06:05.840
The failure position is I'm where I am.

00:06:05.840 --> 00:06:11.480
So if the worst case scenario is I just keep doing this, like, why don't I try for something I'd rather do, right?

00:06:11.480 --> 00:06:11.900
Yeah.

00:06:11.900 --> 00:06:12.780
So, excellent.

00:06:12.780 --> 00:06:13.020
Yeah.

00:06:13.020 --> 00:06:15.720
I'm happy to chat with that about it.

00:06:15.720 --> 00:06:16.180
That's really cool.

00:06:16.180 --> 00:06:21.080
But the point is that we're in a very privileged position as software developers.

00:06:21.080 --> 00:06:21.700
Yes.

00:06:21.700 --> 00:06:29.500
The skills that we have are relatively rare and people are prepared to pay us plenty of money to do this sort of thing.

00:06:29.500 --> 00:06:32.260
So it's definitely a developer's market.

00:06:32.260 --> 00:06:43.400
And so for anybody thinking, well, should I make that jump and go do that thing in startup land if I'm in enterprise land, if it were, totally go for it.

00:06:43.400 --> 00:06:48.660
Because, like you said, the landing position is always, well, I did that for six months.

00:06:48.660 --> 00:06:52.280
I'll just go back to doing, you know, I'll phone up my old boss to see if he still wants me.

00:06:52.280 --> 00:06:53.560
You know, that sort of thing.

00:06:53.560 --> 00:06:54.780
Chances are they do, right?

00:06:54.780 --> 00:06:55.600
Chances are they do.

00:06:55.600 --> 00:06:56.020
Exactly.

00:06:56.480 --> 00:07:06.620
You know, that's very different than saying I have a, you know, first string position at the London Symphony Harmonica and I want to try becoming a professional runner.

00:07:06.620 --> 00:07:07.080
Right?

00:07:07.080 --> 00:07:09.480
Like that would be a very different thing to quit upon, right?

00:07:09.480 --> 00:07:10.900
Yeah, exactly.

00:07:10.900 --> 00:07:12.360
So it's got to keep it in context.

00:07:12.360 --> 00:07:12.920
But yeah, awesome.

00:07:12.920 --> 00:07:17.100
I guess one more question before we get to the main topic is, you know, what do you do?

00:07:17.100 --> 00:07:18.360
You said you do consulting now.

00:07:18.360 --> 00:07:21.460
What do you do day to day just to give people a concept of where you're coming from?

00:07:21.600 --> 00:07:21.760
Okay.

00:07:21.760 --> 00:07:25.960
So I guess I feel old for maybe over a decade now.

00:07:25.960 --> 00:07:28.300
I've been a freelance Python programmer.

00:07:28.300 --> 00:07:34.540
I'm starting out as a sort of a junior freelancer and now I tend to work in senior type position.

00:07:34.540 --> 00:07:39.100
I will do a, what I call a gig for a few months for a client.

00:07:39.100 --> 00:07:45.760
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.

00:07:45.760 --> 00:07:50.180
Some of the educational stuff was as a result of that sort of working practice.

00:07:50.780 --> 00:07:54.980
So I'm a jobbing freelance Python programmer.

00:07:54.980 --> 00:07:56.180
I give training.

00:07:56.180 --> 00:08:01.040
So next week I'm giving corporate training to a client in London for a couple of weeks.

00:08:01.040 --> 00:08:04.420
I'm also working with another client on the West Coast of the U.S.

00:08:04.420 --> 00:08:07.340
Working remotely on some Python project that they have.

00:08:07.340 --> 00:08:12.660
So what I like about this job is that I have flexibility because I'm my own boss.

00:08:12.660 --> 00:08:15.980
So I don't have to ask permission if I want to go to Python, for example.

00:08:15.980 --> 00:08:16.720
I can just go.

00:08:16.720 --> 00:08:18.080
Yeah, just go.

00:08:19.960 --> 00:08:22.020
So I'm going to enjoy this.

00:08:22.020 --> 00:08:28.060
But I also get to work with a real diversity of industry as well.

00:08:28.060 --> 00:08:29.300
Everybody needs programmers.

00:08:29.300 --> 00:08:41.300
So it's rather interesting to be 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 startup.

00:08:41.580 --> 00:08:43.120
It's good, fun work.

00:08:43.120 --> 00:08:45.300
But there's always something new.

00:08:45.300 --> 00:08:45.640
Yeah.

00:08:45.780 --> 00:08:53.500
It's really a special place to be because so many people in their jobs, they're at a company for five or ten years and they see that world, right?

00:08:53.500 --> 00:08:58.780
But as a person, as a consultant or as a trainer, I had a lot of similar experiences doing in-person training.

00:08:58.780 --> 00:08:59.460
Yeah.

00:08:59.460 --> 00:09:02.120
You, every week or every month, there's a different experience.

00:09:02.120 --> 00:09:06.660
And it really gives you, I think, a broader view of the software industry.

00:09:06.880 --> 00:09:08.180
Oh, I totally agree with you there.

00:09:08.180 --> 00:09:14.680
I think to begin with, it feels frightening, a little bit scary because you're always just a little bit out of your comfort zone.

00:09:14.680 --> 00:09:15.620
Yeah.

00:09:15.780 --> 00:09:21.600
You know, you always, you know, if you're established in the company, you kind of know, who do I need to ask about this?

00:09:21.600 --> 00:09:22.620
I'll just ask Bob.

00:09:22.620 --> 00:09:23.040
He knows.

00:09:23.040 --> 00:09:29.560
You've established your network in that company, whereas this sort of stuff, you don't know who Bob is.

00:09:29.560 --> 00:09:32.220
And you're kind of treading water a little bit.

00:09:32.220 --> 00:09:34.100
But at the same time, that's kind of exciting.

00:09:34.100 --> 00:09:35.120
And I like that.

00:09:35.120 --> 00:09:35.640
Yeah.

00:09:35.640 --> 00:09:38.240
And with the life of a musician, at least I've got a job.

00:09:38.240 --> 00:09:40.340
Exactly.

00:09:40.340 --> 00:09:41.400
That's awesome.

00:09:41.400 --> 00:09:42.420
That's what I thought in the back of my mind.

00:09:42.420 --> 00:09:44.620
I'm like, I could be starving as a musician here.

00:09:45.160 --> 00:09:46.040
I'm working.

00:09:46.040 --> 00:09:46.580
This is good.

00:09:46.580 --> 00:09:49.300
No, it sounds like you're doing awesome stuff.

00:09:49.300 --> 00:09:49.920
All right.

00:09:49.920 --> 00:09:53.500
So let's talk first a little bit about teaching Python just in general.

00:09:53.500 --> 00:09:54.100
Yeah.

00:09:54.100 --> 00:09:59.020
And then more focused on the IoT side of stuff that you've worked on.

00:09:59.020 --> 00:09:59.880
Yeah.

00:09:59.880 --> 00:10:07.180
So it sounds like with your training experience, you've done a little bit of teaching, certainly, at least on the small school.

00:10:07.180 --> 00:10:10.360
And you said you were a teacher before, so you've actually done a whole lot of it, right?

00:10:10.360 --> 00:10:11.000
Yeah.

00:10:11.000 --> 00:10:11.600
Yeah.

00:10:11.600 --> 00:10:19.360
So what are some of the keys for people to get interested in programming, to become confident, things like that?

00:10:19.360 --> 00:10:19.740
Yeah.

00:10:19.740 --> 00:10:23.400
So in terms of do people want to learn to program?

00:10:23.400 --> 00:10:25.100
I think the answer is hell yeah.

00:10:25.100 --> 00:10:25.920
Of course they do.

00:10:26.320 --> 00:10:30.000
People who are not programmers see what programmers do.

00:10:30.000 --> 00:10:32.940
They see also the stuff that we were just talking about.

00:10:32.940 --> 00:10:36.280
But it's a highly desired skill set for people.

00:10:36.280 --> 00:10:50.300
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.

00:10:50.820 --> 00:10:52.940
And that was just word of mouth is me tweeting.

00:10:52.940 --> 00:10:56.980
So getting people motivated to learn to program is not a problem.

00:10:56.980 --> 00:11:08.460
I guess one of the damaging aspects of the stereotypes that programmers, the stereotypes associated with programmers is that people tend to think that this is going to be highly mathematical.

00:11:09.140 --> 00:11:15.200
You need to be a particular sort of, how can I put it, loner type mentality.

00:11:15.200 --> 00:11:20.480
You know, like the loner genius, the kid who could totally just nail the homework, but was kind of awkward.

00:11:20.480 --> 00:11:21.580
So just stayed behind the computer.

00:11:21.580 --> 00:11:23.400
That view is not necessarily.

00:11:23.400 --> 00:11:24.720
Someone like that.

00:11:24.720 --> 00:11:25.000
Yeah.

00:11:25.600 --> 00:11:30.560
And you and I, and I guess listeners of the podcast will know that that is completely not the case.

00:11:30.560 --> 00:11:34.500
But if you're not part of the programming world, it's hard to see that.

00:11:34.500 --> 00:11:45.920
So people, and again, this resonates with this work that I was doing yesterday with beginner programmers, is getting them to realize that this could be me as a programmer.

00:11:46.160 --> 00:12:02.720
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.

00:12:02.720 --> 00:12:06.080
Typically in green, on a green terminal.

00:12:06.080 --> 00:12:06.960
Exactly.

00:12:06.960 --> 00:12:07.680
Exactly.

00:12:07.680 --> 00:12:11.700
And things like, you know, I've bypassed the firewall to the mainframe.

00:12:11.700 --> 00:12:13.640
Oh, it's a joke.

00:12:13.640 --> 00:12:14.420
It really is.

00:12:14.420 --> 00:12:19.780
But if that's all you know about programming, then it can be a very intimidating place to come to.

00:12:19.780 --> 00:12:29.060
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.

00:12:29.060 --> 00:12:32.800
You know, if you enjoy Sudoku, for example, you might enjoy programming.

00:12:32.800 --> 00:12:34.880
It's also about being expressive.

00:12:34.880 --> 00:12:39.900
You know, we talk about having beautiful code, especially in the Python community, the Zen of Python and things.

00:12:40.020 --> 00:12:47.380
And so there are lots more ways than just the Hollywood hacker stereotype to get into programming.

00:12:47.380 --> 00:12:48.940
You can be a different sort of programmer.

00:12:48.940 --> 00:12:49.680
That's okay.

00:12:49.680 --> 00:12:50.640
Absolutely.

00:12:50.640 --> 00:12:52.400
And I think that's a really important thing.

00:12:52.400 --> 00:12:58.240
And it sounds like from your microbit stuff that actually that was one of the big takeaways.

00:12:58.240 --> 00:12:59.340
I thought that was really interesting.

00:12:59.340 --> 00:13:00.760
And we'll get to that in a moment.

00:13:00.900 --> 00:13:05.800
But did you actually teach Python in school or when you were a teacher, what were you teaching?

00:13:05.800 --> 00:13:06.780
Okay.

00:13:06.780 --> 00:13:13.640
So I did what many musicians who are out of work do, and that is they go and teach music.

00:13:13.640 --> 00:13:14.120
Okay.

00:13:14.120 --> 00:13:19.700
I went through in the UK, you have to go through additional training to be allowed to be.

00:13:19.700 --> 00:13:26.600
I'm sure it's the same in the US because you need to prove that, you know, you're both competent and not a danger to children for a start.

00:13:26.900 --> 00:13:32.240
So we have a thing called a PGCE, Postgraduate Statistical Education, which makes you a qualified teacher.

00:13:32.240 --> 00:13:41.000
And when you have done a year's worth of teaching and been assessed as being good, so basically you've got two years.

00:13:41.000 --> 00:13:45.940
You've got the training itself and then what's called the NQT years, a newly qualified teacher year.

00:13:46.200 --> 00:13:52.500
When you've gone through that training and they're a useful teacher, then you can become a proper teacher in the UK.

00:13:52.500 --> 00:13:53.800
So I went through all of that training.

00:13:53.800 --> 00:13:59.080
And my first job was as a secondary head of a music department.

00:13:59.080 --> 00:14:06.580
So I was teaching at what I guess in the US you would call the upper years of junior high and senior high.

00:14:06.580 --> 00:14:12.220
In the UK, we only have primary and secondary, and they change over when kids turn 11 years old.

00:14:12.220 --> 00:14:14.560
So I was teaching 11 to 18-year-old music.

00:14:14.940 --> 00:14:19.800
I enjoyed that an awful lot, although it's probably the most challenging job I've ever had to do.

00:14:19.800 --> 00:14:28.920
Because not only were the kids sometimes a challenge, because I was generally teaching it in inner city schools at the wrong end of town, if you see what I mean.

00:14:28.920 --> 00:14:34.240
But, you know, there's all the marking and the bureaucracy and all the other stuff that goes with teaching.

00:14:34.240 --> 00:14:36.360
So I've done a lot of classroom teaching.

00:14:36.360 --> 00:14:39.460
I've done adult education in terms of music as well.

00:14:39.460 --> 00:14:43.840
And I've also done some sort of music therapy, I guess you would call it.

00:14:43.840 --> 00:14:51.380
I was working with little kids, so five, six, seven-year-olds in primary school, helping them to learn how to compose at their level.

00:14:51.380 --> 00:14:55.300
I mean, you know, they weren't churning out Mozart or something like that.

00:14:55.300 --> 00:14:57.160
But it's something fun for them to do.

00:14:57.160 --> 00:15:02.180
So in terms of music education, I did a lot of that all the way through my 20s, really.

00:15:02.440 --> 00:15:05.960
And then the switch came over when my children arrived.

00:15:05.960 --> 00:15:11.900
This portion of Talk Python To Me was brought to you by Datadog.

00:15:11.900 --> 00:15:17.600
Get insights into your Python applications and infrastructures with Datadog's fully integrated platform.

00:15:17.600 --> 00:15:23.980
Debug and optimize your code by tracing requests across web servers, databases, and services in your environment.

00:15:23.980 --> 00:15:31.840
Then correlate and pivot between distributed request traces, metrics, and logs to troubleshoot issues without switching tools or contexts.

00:15:32.000 --> 00:15:36.400
Get started today with a 14-day trial, and Datadog will send you a free T-shirt.

00:15:36.400 --> 00:15:40.100
Visit talkpython.fm/Datadog for more details.

00:15:42.600 --> 00:15:51.200
What's the similarities and difference from, like, sort of traditional teaching to, say, teaching a programming class like this eight-week one you talked about?

00:15:51.200 --> 00:15:51.960
Okay.

00:15:51.960 --> 00:15:52.740
Say it different.

00:15:52.740 --> 00:15:54.120
Ah, okay.

00:15:54.120 --> 00:15:55.960
So here's – this is a really interesting thing.

00:15:55.960 --> 00:16:03.620
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,

00:16:04.260 --> 00:16:08.520
it's always been very traditional chalk and talk type stuff.

00:16:08.520 --> 00:16:10.120
Somebody stands at the front.

00:16:10.120 --> 00:16:13.380
They have their deck of slides.

00:16:13.380 --> 00:16:17.120
And the very worst are basically PowerPoint karaoke.

00:16:17.120 --> 00:16:20.420
And some of the good ones are I'm going to talk a bit.

00:16:20.420 --> 00:16:21.780
You might be able to ask questions.

00:16:21.780 --> 00:16:24.780
Then we'll do a practical session and rinse and repeat.

00:16:25.320 --> 00:16:31.640
Now, in music education, we've been doing music education for 500 years in the kind of Western classical tradition.

00:16:31.640 --> 00:16:39.000
And that's enough time for there to be a reformation and a counter-reformation and a revolution.

00:16:39.000 --> 00:16:43.400
And then, you know, some guy called Suzuki in Japan says, this is all wrong.

00:16:43.400 --> 00:16:44.420
We've got to do it this way.

00:16:44.420 --> 00:16:52.120
But we've got so many schools of thought about how to do music education that have been around for literally hundreds of years.

00:16:52.220 --> 00:16:55.420
One of my textbooks when I was at music college was 300 years old.

00:16:55.420 --> 00:16:57.640
I had to write counterpoint.

00:16:57.640 --> 00:17:01.280
So we still, these techniques have been established.

00:17:01.280 --> 00:17:04.360
We're still using, we've been programming, what, 50 years?

00:17:04.360 --> 00:17:05.200
Yeah.

00:17:05.200 --> 00:17:09.020
Let alone, we're only just starting to think about, well, how do we teach programming?

00:17:09.780 --> 00:17:25.480
So what I've been doing very recently, and it's been a rich vein of creativity for me in terms of my practice as an educator, is I think to myself, well, first of all, I thought to myself, what if we taught music like we teach programming?

00:17:25.480 --> 00:17:31.280
That was such a terrible thought, but I quickly switched the question around.

00:17:31.280 --> 00:17:36.940
I said, well, what happens if we teach programming using some of the techniques that we use for music education?

00:17:37.120 --> 00:17:43.360
Now, there are some similarities because music, you're reading and manipulating symbols all the time.

00:17:43.360 --> 00:17:51.260
You're also practicing a skill that takes a long time to actually develop enough so that you actually sound any good.

00:17:51.260 --> 00:17:53.860
And the same with programming.

00:17:53.860 --> 00:17:55.400
That's similar, yeah, similar to programming, right?

00:17:55.400 --> 00:18:05.740
Like, you might get Hello World working, but if you can, you know, put together a well-tuned web app, that's a very different, that's a long way down the path, right?

00:18:05.740 --> 00:18:06.180
Exactly.

00:18:06.180 --> 00:18:11.740
And so, hey, do you know the how to draw an owl means?

00:18:11.740 --> 00:18:14.120
So it's how to draw an owl.

00:18:14.120 --> 00:18:18.660
First, start with two circles, and then the second box is draw the rest of the down owl.

00:18:18.660 --> 00:18:21.200
And that's how programming education is.

00:18:21.200 --> 00:18:25.000
You've got huge numbers of resources that are draw two circles.

00:18:25.460 --> 00:18:32.680
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 the bug.

00:18:32.680 --> 00:18:35.240
And that's a professional level, and there's nothing in between.

00:18:35.240 --> 00:18:39.900
Whereas what the music world has managed to do over this sort of 500 years is bridge that gap.

00:18:40.900 --> 00:18:50.840
And so, like I said, this is a rich theme of inspiration for me to think, well, what techniques can we transplant from the world of music into programming education?

00:18:50.840 --> 00:18:56.660
But we'll probably come on to that later on, actually, when we talk about code grades, because that's very much to do with that.

00:18:56.900 --> 00:18:58.820
Yeah, that's a very interesting concept.

00:18:58.820 --> 00:19:01.400
You're right that it's so new.

00:19:01.400 --> 00:19:04.500
I mean, 50 years is really not that long, right?

00:19:04.500 --> 00:19:09.760
So compared to the history of music or mathematics or philosophy or whatever.

00:19:09.760 --> 00:19:12.580
Yeah, we're at the cuneiform play tablet stage.

00:19:12.580 --> 00:19:15.700
You know, I'd love to see what a program is.

00:19:15.700 --> 00:19:16.720
We're etching in stone.

00:19:16.720 --> 00:19:18.300
Yeah, exactly.

00:19:18.300 --> 00:19:24.040
I mean, but can you imagine from that, we have Shakespeare, you know, but it's a long term thing.

00:19:24.120 --> 00:19:27.980
And it's easy for us to forget how short a time we've been doing this.

00:19:27.980 --> 00:19:33.700
We've not had the equivalent of a revolution in programming where they've just thrown away everything.

00:19:33.700 --> 00:19:35.140
Or do you know what I mean?

00:19:35.140 --> 00:19:37.080
It's just we're doing it long enough.

00:19:37.080 --> 00:19:37.700
For sure.

00:19:37.700 --> 00:19:44.860
So one of the things I think can make programming hard is it's relatively abstract.

00:19:44.860 --> 00:19:45.520
Yeah.

00:19:45.520 --> 00:19:50.180
I say relative because compared to, say, like a math proof, like programming is super concrete.

00:19:50.180 --> 00:19:56.400
But compared to, you know, other disciplines, it can be pretty abstract.

00:19:56.400 --> 00:20:09.520
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.

00:20:09.520 --> 00:20:13.600
So I guess that brings us to the BBC micro bit.

00:20:13.600 --> 00:20:14.620
You want to tell us about that?

00:20:15.360 --> 00:20:15.720
Yeah.

00:20:15.720 --> 00:20:18.920
So I mentioned the BBC micro when I was a kid.

00:20:18.920 --> 00:20:20.660
And it holds.

00:20:20.660 --> 00:20:21.720
That was a computer, right?

00:20:21.720 --> 00:20:25.240
That was a big beige box that bleeped at you.

00:20:25.640 --> 00:20:29.260
And it cost like, well, the equivalent of thousands of pounds in today's money.

00:20:29.260 --> 00:20:33.520
And that holds a special place in lots of British geeks' hearts.

00:20:33.520 --> 00:20:49.000
And the BBC could see that with the change in the computing 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.

00:20:49.600 --> 00:20:53.340
But they wanted to make a contribution that was relevant for today.

00:20:53.340 --> 00:21:01.080
And so the micro bit being a small Internet of Things type device with some, which has a couple of buttons.

00:21:01.080 --> 00:21:03.200
It has a five by five LED display.

00:21:03.200 --> 00:21:04.240
It's got a little radio.

00:21:04.240 --> 00:21:11.040
It's got an accelerometer and a compass like a mobile phone and GPIO pins so you can plug things into it as well.

00:21:11.040 --> 00:21:25.220
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.

00:21:26.860 --> 00:21:36.280
Towards the end of 2015, the BBC announced that they were going to be doing some sort of computing project, computing and education.

00:21:36.280 --> 00:21:39.920
And it mentioned Python in the blurb that they sent out.

00:21:39.920 --> 00:21:41.700
And they were looking like, what is this?

00:21:41.700 --> 00:21:44.420
Yeah, they're looking for partners.

00:21:44.420 --> 00:21:46.120
Now, I'm a PSS fellow.

00:21:46.760 --> 00:21:57.900
And at that time, because I've been doing a lot of work in Python and education in the education track in Python UK, lots of people got in touch with me and said, what's this Python thing?

00:21:57.900 --> 00:21:59.120
Have you anything to do with this?

00:21:59.120 --> 00:22:00.600
And I wasn't.

00:22:00.600 --> 00:22:02.840
But I knew somebody at the BBC who was.

00:22:02.840 --> 00:22:08.300
So tapping some back channels, as it were, he wouldn't reveal to me what was going on.

00:22:08.300 --> 00:22:09.820
But he said, you should totally get involved.

00:22:10.000 --> 00:22:22.480
And so with the blessing of the PSS board, I applied for the Python Software Foundation to be a partner in this project.

00:22:22.480 --> 00:22:24.900
And fools, they said yes.

00:22:24.900 --> 00:22:31.320
So this is how the Python community, especially in the UK, got involved.

00:22:32.040 --> 00:22:44.820
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.

00:22:44.820 --> 00:22:47.860
I know plenty of Python people who also teach.

00:22:47.860 --> 00:22:52.100
This is going to be a jolly weekend sometime where we can all sit down.

00:22:52.100 --> 00:22:53.460
We'll knock this out by next week.

00:22:53.460 --> 00:22:53.840
It's all good.

00:22:53.840 --> 00:22:54.520
Yeah, yeah, exactly.

00:22:54.520 --> 00:22:57.820
This is classic how hard can it be type thought that it's dangerous.

00:22:59.280 --> 00:23:02.980
And so the BBC were set up for us to do this.

00:23:02.980 --> 00:23:09.120
And we were all involved with the meetings so that we could see as an educational partner what was coming.

00:23:09.120 --> 00:23:16.040
And then in the May of 2016, I was called into a meeting at the BBC.

00:23:16.040 --> 00:23:22.560
And they said the organization that was going to provide Python on the micro bit has dropped out.

00:23:22.560 --> 00:23:25.820
We must have Python on the micro bit.

00:23:25.820 --> 00:23:27.480
And we want you to do it.

00:23:28.040 --> 00:23:29.820
This has gone up a level of difficulty.

00:23:29.820 --> 00:23:30.540
Yeah, yeah.

00:23:30.540 --> 00:23:33.600
And I was like, well, you realize that we're all volunteers for a start.

00:23:33.600 --> 00:23:35.320
Python is a volunteer-led community.

00:23:35.320 --> 00:23:39.100
And so they said, well, could you try it?

00:23:39.100 --> 00:23:40.760
I said, well, let me have a look.

00:23:40.760 --> 00:23:52.520
And their idea was for us to build a version of Python on top of a Microsoft technology called PXT, which Microsoft were still building at the time.

00:23:52.660 --> 00:24:02.660
And essentially, the way it would work was we would emit a JSON-based abstract syntax tree that we would post somewhere.

00:24:02.660 --> 00:24:04.440
This would get compiled.

00:24:04.940 --> 00:24:07.780
And then a hex file would be returned back to the user.

00:24:07.780 --> 00:24:11.240
And they would drop that onto their micro bit and see their code run.

00:24:12.000 --> 00:24:20.380
And I remember a weekend, there was about five of us looked at this code and decided that we didn't have the time.

00:24:20.380 --> 00:24:23.560
We didn't have the expertise because it was all written in TypeScript.

00:24:23.560 --> 00:24:27.920
And Microsoft, it was still a moving target because Microsoft was still building this.

00:24:28.780 --> 00:24:36.260
However, by a stroke of luck, that very same week, I met a gentleman called Johnny from ARM.

00:24:36.260 --> 00:24:37.980
That's how he introduced himself.

00:24:37.980 --> 00:24:42.260
And he was the person who was leading the development of the hardware of the device.

00:24:42.260 --> 00:24:45.360
And I was explaining to him what I've just told you.

00:24:45.360 --> 00:24:46.620
And he was like, what?

00:24:46.620 --> 00:24:49.560
Why don't you just use MicroPython?

00:24:49.560 --> 00:24:51.760
And I said, oh, you know about MicroPython?

00:24:51.760 --> 00:24:54.160
He said, yes, I live next door to Damien George.

00:24:54.160 --> 00:24:54.840
Oh, wow.

00:24:54.840 --> 00:24:56.200
Small world.

00:24:56.660 --> 00:24:57.260
Yeah, exactly.

00:24:57.260 --> 00:25:01.680
Damien was living in the UK, in Cambridge at the time.

00:25:01.680 --> 00:25:08.260
And so I had a little bit of a kerfuffle with the BBC where I basically said, look, you should use MicroPython.

00:25:08.260 --> 00:25:10.360
And they were like, no, we want to use the Microsoft stuff.

00:25:10.360 --> 00:25:13.140
And I said, well, no, MicroPython will let you do this stuff.

00:25:13.140 --> 00:25:17.960
And eventually they let Damien sign the NDA that was needed.

00:25:17.960 --> 00:25:21.840
And Johnny posted the development board through Damien's letterbox.

00:25:21.840 --> 00:25:24.800
And a week later, Damien had it running.

00:25:24.800 --> 00:25:26.020
He had a REPL.

00:25:26.560 --> 00:25:28.440
And you could make LEDs blink.

00:25:28.440 --> 00:25:30.640
And it would detect button presses.

00:25:30.640 --> 00:25:34.900
And at that moment, I have to admit, I did a kind of little happy dance because I knew.

00:25:34.900 --> 00:25:36.980
This is going to work.

00:25:36.980 --> 00:25:37.900
This is going to work.

00:25:37.900 --> 00:25:38.740
We had Hello World.

00:25:38.740 --> 00:25:40.760
So the rest is just polishing.

00:25:40.760 --> 00:25:42.200
Well, the rest.

00:25:42.200 --> 00:25:43.780
You know, we've done the first 90%.

00:25:43.780 --> 00:25:45.260
Damien had done the first 90%.

00:25:45.260 --> 00:25:47.460
We just had the next 90%.

00:25:47.460 --> 00:25:49.220
Get done.

00:25:49.680 --> 00:25:50.440
That's really amazing.

00:25:50.440 --> 00:25:53.160
So this was a project by the BBC.

00:25:53.160 --> 00:25:53.980
Yeah.

00:25:53.980 --> 00:25:55.700
Why does the BBC...

00:25:55.700 --> 00:25:58.260
The second B is for broadcasting, right?

00:25:58.260 --> 00:26:00.640
Like, why are they trying to make these social contributions?

00:26:00.640 --> 00:26:01.880
It's good that they are.

00:26:01.880 --> 00:26:02.600
Yeah.

00:26:02.980 --> 00:26:04.740
But where does that fit in?

00:26:04.740 --> 00:26:06.040
Oh, man, you're going to love this.

00:26:06.040 --> 00:26:07.260
It's going to be all very Game of Thrones.

00:26:07.260 --> 00:26:08.640
It's because we have a queen.

00:26:08.640 --> 00:26:10.380
And she issues royal charters.

00:26:10.380 --> 00:26:16.380
And the royal charter for the British Broadcasting Corporation, which comes up every seven or eight

00:26:16.380 --> 00:26:23.560
year, part of the charter, it says that the BBC is supposed to inform, educate, and entertain.

00:26:23.560 --> 00:26:27.260
And this fits in educate.

00:26:27.260 --> 00:26:27.760
Right.

00:26:27.760 --> 00:26:28.020
Okay.

00:26:28.020 --> 00:26:31.440
So, however, the BBC has to be very careful.

00:26:31.440 --> 00:26:38.320
And they have been on the receiving end of various legal challenges where if the BBC turn up and say,

00:26:38.460 --> 00:26:43.640
if we're going to do educational resources, computing, then everybody who...

00:26:43.640 --> 00:26:48.380
Every private company in the UK who does computing resources is going to be...

00:26:48.380 --> 00:26:48.400
Yeah.

00:26:48.400 --> 00:26:48.820
Yeah.

00:26:48.820 --> 00:26:50.500
You're undercutting us, all right?

00:26:50.500 --> 00:26:50.740
Yeah.

00:26:50.740 --> 00:26:52.020
You're killing our business, right?

00:26:52.020 --> 00:26:52.260
Yeah.

00:26:52.260 --> 00:26:52.460
Yeah.

00:26:52.460 --> 00:26:57.240
So this is why the BBC acted as the umbrella organization.

00:26:57.240 --> 00:27:01.780
And it was the partners, actually, who delivered the microbit itself.

00:27:01.780 --> 00:27:06.020
So this is why it was Johnny from Arm and not Johnny from the BBC.

00:27:06.020 --> 00:27:06.580
I see.

00:27:06.740 --> 00:27:13.680
Why Microsoft were doing their PXD stuff and why they asked us to do microbit and Damien did that work.

00:27:13.680 --> 00:27:17.180
And I did a whole bunch of other work as well with Damien to do his microbit.

00:27:17.180 --> 00:27:17.880
So...

00:27:17.880 --> 00:27:18.020
Yeah.

00:27:18.020 --> 00:27:18.440
That's cool.

00:27:18.440 --> 00:27:18.840
Yeah.

00:27:18.840 --> 00:27:20.780
It's kings and queens and royal charters.

00:27:20.780 --> 00:27:24.580
And if we dig deep enough, it's by the grace of God, her majesty, that sort of stuff.

00:27:24.580 --> 00:27:25.340
Yeah.

00:27:25.340 --> 00:27:25.600
Yeah.

00:27:25.600 --> 00:27:25.880
Wonderful.

00:27:25.880 --> 00:27:26.920
So...

00:27:26.920 --> 00:27:28.000
Okay.

00:27:28.000 --> 00:27:32.380
So this thing was handed out to millions of kids in the UK.

00:27:32.380 --> 00:27:34.720
And there's actually some really cool research that came from it.

00:27:35.020 --> 00:27:45.500
But people who are listening, if they're a teacher or if they're a student or somehow interacting with, you know, even a university, school district, whatever, you can go get these.

00:27:45.500 --> 00:27:46.040
Right?

00:27:46.040 --> 00:27:54.320
I could go to newegg.com or somewhere like that and buy them for, you know, 25 pounds, 20 pounds, something like that.

00:27:54.320 --> 00:27:54.600
Yeah.

00:27:54.600 --> 00:27:56.020
Yeah, exactly.

00:27:56.020 --> 00:27:56.920
So, I don't know.

00:27:56.920 --> 00:28:00.300
Visit somewhere like Adafruit and they'll sell you a kit.

00:28:00.300 --> 00:28:03.180
You can also get them in classroom bundles as well.

00:28:03.420 --> 00:28:08.320
So, if you teach, you can get a group of 30 or you could just buy hundreds of them all at once.

00:28:08.320 --> 00:28:13.580
And the microbit website has a browser-based Python editor.

00:28:13.580 --> 00:28:18.800
It also has a kind of a blocks-based thing, which is what Microsoft PXT turned into.

00:28:19.580 --> 00:28:22.920
And so, they make it very easy for kids to sit down.

00:28:22.920 --> 00:28:28.920
You plug the thing via a USB cable into your laptop or school computer.

00:28:28.920 --> 00:28:31.540
You use the browser-based editor.

00:28:31.540 --> 00:28:33.880
You get what's called a hex file.

00:28:33.880 --> 00:28:36.100
You drag that onto the device.

00:28:36.100 --> 00:28:41.340
It flashes the device, what we call when we sort of put the software on the device, and then it runs.

00:28:41.340 --> 00:28:42.720
It's very simple.

00:28:42.960 --> 00:28:43.480
Yeah, that's cool.

00:28:43.480 --> 00:28:47.280
And some of the programming can even be, like you said, like that blocky type stuff.

00:28:47.280 --> 00:28:50.240
You don't have to be able to type or barely read, right?

00:28:50.240 --> 00:28:51.480
I need to say, okay, move.

00:28:51.480 --> 00:28:56.140
I'm going to put a 10 here and then like loop and then say put a 3 in the little loop block.

00:28:56.140 --> 00:28:57.080
And I think that's great.

00:28:57.080 --> 00:28:58.180
So, that makes it super accessible.

00:28:58.180 --> 00:29:01.100
I did an hour of code project at my daughter's school.

00:29:01.100 --> 00:29:01.740
Yeah.

00:29:01.740 --> 00:29:04.820
And she was in, gosh, I'm trying to remember what grade.

00:29:04.820 --> 00:29:05.940
She was quite young.

00:29:05.940 --> 00:29:07.760
First or second grade.

00:29:07.760 --> 00:29:08.380
Yeah.

00:29:08.380 --> 00:29:08.900
Something like this.

00:29:09.380 --> 00:29:20.300
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.

00:29:20.300 --> 00:29:23.020
So, what she probably used was something called Scratch?

00:29:23.020 --> 00:29:23.280
Yes.

00:29:23.280 --> 00:29:28.300
I think it was maybe it was on the Grok learning platform.

00:29:28.300 --> 00:29:29.640
I think the hour of code thing.

00:29:29.640 --> 00:29:32.160
So, it may have been Scratch.

00:29:32.160 --> 00:29:34.760
I think it was Scratch-like, but I don't think it was actually Scratch.

00:29:34.760 --> 00:29:35.940
I don't remember what it's called.

00:29:35.940 --> 00:29:36.560
Yeah.

00:29:36.720 --> 00:29:42.760
So, I know the folks at Grok and they use the same block-based library that Scratch uses.

00:29:42.760 --> 00:29:45.440
So, drag and drop blocks is just a JavaScript library.

00:29:45.440 --> 00:29:47.260
But they emit Python code.

00:29:47.260 --> 00:29:53.680
And then that Python code is running, I think, in the browser in Grok's case.

00:29:53.680 --> 00:29:55.020
So, you have Brython or something.

00:29:55.020 --> 00:29:55.240
Yeah.

00:29:55.240 --> 00:29:55.660
Yeah.

00:29:55.660 --> 00:29:55.800
Yeah.

00:29:55.800 --> 00:29:55.940
Yeah.

00:29:55.940 --> 00:29:56.100
Yeah.

00:29:56.100 --> 00:29:56.500
Exactly.

00:29:56.500 --> 00:29:59.520
And you have your little turtle or something like that.

00:29:59.520 --> 00:30:00.820
But, yeah.

00:30:00.820 --> 00:30:08.420
So, you might be asking yourself, well, where do I, how do I get a block-based editor for Python on a microbit?

00:30:08.820 --> 00:30:10.660
Well, here's a cute story.

00:30:10.660 --> 00:30:18.740
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.

00:30:19.540 --> 00:30:29.860
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.

00:30:29.860 --> 00:30:31.620
And he figured it out himself.

00:30:31.620 --> 00:30:37.600
And so, he's taken this JavaScript library and it emits Python and he's done all this work.

00:30:38.100 --> 00:30:40.360
And so, he created this project called EduBlocks.

00:30:40.360 --> 00:30:40.600
Yeah.

00:30:40.600 --> 00:30:47.900
He presented at the PyCon U.S. Education Summit, which is, I think, the day before regular PyCon.

00:30:47.900 --> 00:30:48.200
Yeah.

00:30:48.200 --> 00:30:48.840
Yeah.

00:30:48.840 --> 00:30:49.560
Yeah.

00:30:49.560 --> 00:30:51.080
So, and this is the other thing.

00:30:51.080 --> 00:30:52.880
Josh is a great presenter as well.

00:30:52.880 --> 00:31:00.200
So, it was a kind of a vindication of the efforts of investment that's happening in the U.K.

00:31:00.480 --> 00:31:13.340
that even only this few number of years after we started 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.

00:31:13.340 --> 00:31:14.440
This is pretty good.

00:31:14.440 --> 00:31:22.080
I mean, he's following exactly in the tradition as so many people who became programmers are like, the stuff around me is crummy.

00:31:22.080 --> 00:31:24.000
I know I can make it better.

00:31:24.000 --> 00:31:25.840
I'm just going to improve the world.

00:31:25.840 --> 00:31:27.040
Give me a week.

00:31:27.040 --> 00:31:27.660
I'll be back.

00:31:27.660 --> 00:31:28.020
Right?

00:31:28.020 --> 00:31:28.240
Yeah.

00:31:28.240 --> 00:31:30.920
And then, oh, look, I've made something better than we had before.

00:31:30.920 --> 00:31:31.120
Right?

00:31:31.120 --> 00:31:35.620
Like, so many people actually become more skilled so that they can just fix these types of problems.

00:31:35.620 --> 00:31:35.860
Right?

00:31:35.860 --> 00:31:36.440
Exactly.

00:31:36.440 --> 00:31:36.960
Exactly.

00:31:36.960 --> 00:31:39.420
And Josh has the wind in his sails.

00:31:39.420 --> 00:31:46.900
And it's wonderful to see this community that he's building as well around EduBlocks sort of flourish and grow.

00:31:46.900 --> 00:31:55.820
So, whenever I see Josh, I just smile both inside and outside because it's just so wonderful to see this young person really flourish.

00:31:56.100 --> 00:31:57.980
He's a credit to himself and his family.

00:31:57.980 --> 00:31:58.880
He really supports him.

00:31:58.880 --> 00:31:58.980
Yeah.

00:31:58.980 --> 00:32:05.120
But I go and visit schools sometimes or, you know, coding events in the UK for kids.

00:32:05.120 --> 00:32:08.320
And inevitably, there's an EduBlocks happening somewhere or other.

00:32:08.320 --> 00:32:13.360
And I smile and think, oh, if Josh could see these kids having such good fun with the code that you've written.

00:32:13.360 --> 00:32:14.420
Yeah.

00:32:14.420 --> 00:32:16.200
That's awesome.

00:32:16.580 --> 00:32:20.120
So, kind of in the same vein, you know, let's talk a little bit about the impact.

00:32:20.120 --> 00:32:27.800
So, on the micro bit website, there's some nice research findings summarized and whatnot.

00:32:27.800 --> 00:32:32.840
And one of the major impacts was that this is cross-curricular.

00:32:33.360 --> 00:32:37.220
And that means coding is not just contained into the computing class.

00:32:37.220 --> 00:32:41.660
You don't go to computer class, do computing, and then go back to pen and pencil or whatever, right?

00:32:41.660 --> 00:32:43.700
I feel very strongly about this, actually.

00:32:44.460 --> 00:32:50.100
I think most of coding and most of programming skills are to amplify other things.

00:32:50.100 --> 00:32:51.900
My biology research is better.

00:32:51.900 --> 00:32:53.300
My music is better.

00:32:53.300 --> 00:32:55.180
My whatever is better because of this, right?

00:32:55.180 --> 00:32:56.760
And this is kind of related to that, huh?

00:32:56.760 --> 00:32:56.960
Yeah.

00:32:56.960 --> 00:32:58.500
This, I, oh, man.

00:32:58.500 --> 00:33:01.660
If we were in the same room, I'd be giving you a big hug and high five.

00:33:01.660 --> 00:33:04.080
I can't agree more with you there.

00:33:04.080 --> 00:33:06.420
I totally see where you are there with that.

00:33:06.420 --> 00:33:07.200
Couldn't agree more.

00:33:07.200 --> 00:33:07.620
That's awesome.

00:33:07.760 --> 00:33:09.700
So, yeah, it seemed like this helped there.

00:33:09.700 --> 00:33:15.140
This portion of Talk Python To Me is brought to you by us.

00:33:15.140 --> 00:33:19.380
Have you heard that Python is not good for concurrent programming problems?

00:33:19.380 --> 00:33:24.980
Whoever told you that is living in the past because it's prime time for Python's asynchronous features.

00:33:24.980 --> 00:33:29.540
With the widespread adoption of async methods and the async and await keywords,

00:33:29.540 --> 00:33:34.660
Python's ecosystem has a ton of new and exciting frameworks based on async and await.

00:33:35.000 --> 00:33:39.800
That's why we created a course for anyone who wants to learn all of Python's async capabilities,

00:33:39.800 --> 00:33:42.220
async techniques and examples in Python.

00:33:42.220 --> 00:33:48.100
Just visit talkpython.fm/async and watch the intro video to see if this course is for you.

00:33:48.100 --> 00:33:50.580
It's only $49 and you own it forever.

00:33:50.580 --> 00:33:51.620
No subscriptions.

00:33:51.620 --> 00:33:54.360
And there are discounts for teams as well.

00:33:54.360 --> 00:33:58.240
This is not just a UK thing, right?

00:33:58.240 --> 00:33:59.840
The BBC started it.

00:33:59.840 --> 00:34:04.040
A lot of the folks there, like you mentioned yourself and Damian George and so on.

00:34:04.240 --> 00:34:06.640
But this is now a global thing.

00:34:06.640 --> 00:34:10.560
Like I was reading about it being used in Arkansas, for example,

00:34:10.560 --> 00:34:13.540
with a bunch of 900 schools or something cool like this.

00:34:13.540 --> 00:34:14.040
Yeah.

00:34:14.040 --> 00:34:15.220
And Canada as well.

00:34:15.220 --> 00:34:15.440
Yeah.

00:34:15.440 --> 00:34:17.620
If you remember back to PyCon,

00:34:17.620 --> 00:34:21.100
Kamisha gave her outstanding keynote.

00:34:21.640 --> 00:34:27.900
She's using micro bits in her Detroit library to get these kids into programming.

00:34:27.900 --> 00:34:30.280
And it's such a wonderful thing to see.

00:34:30.280 --> 00:34:32.060
You just don't know where these things lead, really.

00:34:32.060 --> 00:34:32.820
Yeah, yeah.

00:34:32.820 --> 00:34:34.760
When they take off, they take off, I guess.

00:34:34.760 --> 00:34:35.140
Yeah.

00:34:35.200 --> 00:34:39.080
So let me maybe summarize some of the research findings really quick.

00:34:39.080 --> 00:34:41.380
Just highlight them and then you could comment on them.

00:34:41.380 --> 00:34:45.400
So there was some follow-up research and there's actually a research paper on this,

00:34:45.400 --> 00:34:47.620
at least within the UK, around them.

00:34:47.620 --> 00:34:49.100
This is millions of kids.

00:34:49.100 --> 00:34:51.720
So this is a great sample size, not three or something.

00:34:51.720 --> 00:34:52.360
Yeah.

00:34:52.440 --> 00:34:57.940
And it said 90% of the students felt that micro bits showed them that anyone can code.

00:34:57.940 --> 00:35:00.480
This is not like the genius hacker like we talked about, right?

00:35:00.480 --> 00:35:01.260
Yeah, exactly.

00:35:01.260 --> 00:35:06.640
Some other one that really resonated deeply with me is that 70% more girls said they would

00:35:06.640 --> 00:35:11.480
choose computing, computer science as a potential subject after using this.

00:35:11.480 --> 00:35:16.020
And as the father of three daughters, like that is really awesome.

00:35:16.020 --> 00:35:16.780
Yeah.

00:35:16.780 --> 00:35:18.620
So there's some other ones as well.

00:35:18.620 --> 00:35:20.720
A bunch of the teachers enjoyed it and so on.

00:35:20.740 --> 00:35:22.560
But those two definitely resonated with me.

00:35:22.560 --> 00:35:22.980
Yeah.

00:35:22.980 --> 00:35:29.640
If nothing else, if the technology is a dead end, the device disappears without trace because

00:35:29.640 --> 00:35:31.600
funky new thing comes out next year.

00:35:31.600 --> 00:35:36.840
If nothing else, just those two things that you've mentioned, that coding is for everybody

00:35:36.840 --> 00:35:43.700
and especially for girls for whom I guess since the 1980s, programming especially has been

00:35:43.700 --> 00:35:49.420
stereotyped as a boy thing, then stereotypes stop you from doing stuff.

00:35:49.420 --> 00:35:54.220
And if this can counteract that stereotype, then it's a good thing.

00:35:54.220 --> 00:36:00.620
But I guess because the micro bit makes it so incredibly easy to make something funky and it's

00:36:00.620 --> 00:36:01.880
something you can hold in your hand.

00:36:01.880 --> 00:36:08.520
And that might be, I'm thinking of a friend of mine, David Whale, who did a project with a

00:36:08.520 --> 00:36:10.520
little girl, one of his neighbors, I believe.

00:36:11.320 --> 00:36:14.080
And the micro bit would do dance instructions.

00:36:14.080 --> 00:36:22.580
It would flash an image on the screen and you had to be on a YMCA or big fish, little fish or, you know, Macarena or something like that.

00:36:22.880 --> 00:36:25.660
But it would show you what the moves were you had to do.

00:36:25.660 --> 00:36:31.500
The important thing is that the micro bit gives you ownership over your digital world.

00:36:31.500 --> 00:36:34.080
You're not just sitting there consuming a YouTube video.

00:36:34.080 --> 00:36:38.260
You're making a dance machine that you can share with your friends when they come around.

00:36:38.260 --> 00:36:39.620
And they can go, oh, that's cool.

00:36:39.620 --> 00:36:43.180
Let's invent a new move and have a new icon or something like that.

00:36:43.520 --> 00:36:59.960
You know, so it's giving the young people or anybody else for that matter who who's coming into programming the mechanism for just taking control as soon as possible of programming rather than having to.

00:36:59.960 --> 00:37:04.160
OK, today we're going to learn about loops and then tomorrow we're going to learn about functions.

00:37:04.160 --> 00:37:10.320
And then maybe in about three weeks time, you'll be able to do something that's vaguely useful because technology is hard.

00:37:10.860 --> 00:37:12.520
This is within five minutes.

00:37:12.520 --> 00:37:16.200
You can, you know, it's literally a line of Python to make it stroll.

00:37:16.200 --> 00:37:20.520
Hello, my name is Nicholas on the on the on the display.

00:37:20.520 --> 00:37:22.580
You know, it's play a tune.

00:37:22.580 --> 00:37:31.280
It's got a speech synthesizer built into micro Python, which is hilarious because, of course, as soon as kids realize there's a speech synthesizer and speech.

00:37:31.280 --> 00:37:33.320
Say, but then a string.

00:37:33.320 --> 00:37:35.740
Obviously, the teacher uses a polite example.

00:37:35.740 --> 00:37:40.700
But within seconds, you know, the kids are being rude to each other by the medium of squeaky dialect voice.

00:37:40.840 --> 00:37:42.180
But they like it.

00:37:42.180 --> 00:37:46.180
And of course, the first kid I saw this a couple of days ago when I was visiting the school.

00:37:46.180 --> 00:37:49.940
The first kid who figures out that thing, it's like a gold rush.

00:37:49.940 --> 00:37:53.220
All of a sudden, it's like, you've seen what Susanna's done.

00:37:53.220 --> 00:37:54.680
No, listen, listen, listen, listen.

00:37:54.680 --> 00:37:56.900
What's that?

00:37:56.900 --> 00:37:57.680
She's talking.

00:37:57.680 --> 00:37:59.000
How do you do that?

00:37:59.000 --> 00:38:00.820
She's going to do this thing.

00:38:00.820 --> 00:38:03.840
And then so she's told her it's like pebbles with the water.

00:38:03.840 --> 00:38:05.900
You know, they sort of echo out.

00:38:06.200 --> 00:38:10.900
And then the kids, because another kid's done the school thing, but they all want to do it.

00:38:10.900 --> 00:38:17.120
And it's just capturing moments of those enthusiasm, of that enthusiasm and building on that.

00:38:17.120 --> 00:38:20.080
So you go, well, do you know how the speech synthesizer really works?

00:38:20.080 --> 00:38:22.380
Or what else could you do with the speech synthesizer?

00:38:22.380 --> 00:38:23.320
You could make it think.

00:38:23.320 --> 00:38:25.460
You know, OK, so how do you do that?

00:38:25.540 --> 00:38:28.440
Well, you pass another argument in, which is the pitch of the voice.

00:38:28.440 --> 00:38:29.220
Well, what's an argument?

00:38:29.220 --> 00:38:30.360
And what actually are we doing?

00:38:30.360 --> 00:38:32.000
Well, we're calling a function here.

00:38:32.000 --> 00:38:32.800
Yeah.

00:38:32.800 --> 00:38:36.180
And so you see between the brackets, you've got a string, which is what you're going to say.

00:38:36.180 --> 00:38:39.560
And then the next one is a number, which tells you what the pitch is going to be.

00:38:39.560 --> 00:38:41.640
So that's two arguments.

00:38:41.640 --> 00:38:50.560
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 microbit to sing some goofy song.

00:38:50.560 --> 00:38:58.140
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.

00:38:58.140 --> 00:39:04.000
And by that, I mean, what we do is we say, OK, well, what do they need to know how to write a whole program?

00:39:04.000 --> 00:39:05.220
Well, they need to know functions.

00:39:05.220 --> 00:39:07.220
They need to know loops and they need to know variables.

00:39:07.220 --> 00:39:09.400
We want to teach variables, loops, functions, classes.

00:39:09.400 --> 00:39:14.360
And then eventually, like three weeks later, like you say, they're going to be able to do a thing.

00:39:14.360 --> 00:39:18.300
And I think things should be taught from the outside in like an onion.

00:39:18.300 --> 00:39:18.560
Right.

00:39:18.560 --> 00:39:20.000
You see how amazing it is on the outside.

00:39:20.100 --> 00:39:20.900
You peel back the onion.

00:39:20.900 --> 00:39:22.720
You learn one part of why it works.

00:39:22.720 --> 00:39:24.940
And that just connects so much better.

00:39:24.940 --> 00:39:25.820
Yeah.

00:39:25.820 --> 00:39:31.540
But this chimes so much with music education, because, of course, you get handed your violin.

00:39:31.540 --> 00:39:32.660
Now, can you imagine that?

00:39:32.660 --> 00:39:35.980
My wife is a string teacher, so she's a fifth day in, day out.

00:39:35.980 --> 00:39:37.600
And she's amazing at it as well.

00:39:37.600 --> 00:39:47.440
And watching how she works is another thing that inspires me, because her early access violin stuff that she does sounds like hell.

00:39:47.440 --> 00:39:51.700
Because it's like 36-year-old, all armed with a violin.

00:39:51.700 --> 00:39:54.240
Now, that's not going to sound nice.

00:39:54.240 --> 00:39:57.540
Like you're killing a goose or something, right?

00:39:57.540 --> 00:39:57.880
Yeah.

00:39:57.880 --> 00:39:58.060
Yeah.

00:39:58.060 --> 00:40:01.740
It's like strangling cats for a very long time.

00:40:02.120 --> 00:40:11.220
But what Mary does is introduces gradually and in an outside-in sort of a way, various violin playing techniques.

00:40:11.220 --> 00:40:18.840
And so she might be playing something really funky on her cello, a kind of a 12-bar blues walking bass, which the kids really like.

00:40:18.920 --> 00:40:24.540
And she says, well, if you go, gee, gee, gee, gee, gee, gee, gee, gee, gee, gee, gee, gee, gee, gee, gee, gee.

00:40:24.540 --> 00:40:26.460
It'll fit with what I'm doing.

00:40:26.460 --> 00:40:29.640
And so they all go, blah, blah, blah, blah, blah, blah, blah, blah.

00:40:29.640 --> 00:40:29.740
Yeah.

00:40:29.740 --> 00:40:31.320
You know, but it kind of sounds okay.

00:40:31.320 --> 00:40:36.100
And they can, and what they're focusing on is the fact that Mary's doing, she has a beat on with a drum machine.

00:40:36.100 --> 00:40:37.860
She's playing a 12-bar blues bass line.

00:40:38.080 --> 00:40:39.420
And they feel they're part of it.

00:40:39.420 --> 00:40:41.600
And so in their eyes, they're making performance.

00:40:41.600 --> 00:40:48.160
And it gives them the momentum, just as we were just talking about with kids learning how to code.

00:40:48.160 --> 00:40:52.840
And so starting from, do I see a need for learning this?

00:40:52.840 --> 00:40:56.360
I have a reason for wanting to learn this thing.

00:40:56.760 --> 00:41:11.820
Is perhaps the primary way that music teachers especially, but perhaps people who teach code, should go about inspiring those beginners for whom, you know, they're not, how can I put it, already inclined for programming.

00:41:11.820 --> 00:41:12.540
You see what I mean?

00:41:12.540 --> 00:41:15.540
Some people have a crystal clear laser focus.

00:41:15.540 --> 00:41:16.860
I want to build this thing.

00:41:16.860 --> 00:41:20.220
And they just know, I'm just going to plow through the technical steps until I get to that thing.

00:41:20.220 --> 00:41:22.160
But a lot of people just have a general interest.

00:41:22.160 --> 00:41:26.140
And then it's harder to plow through when you don't have a target.

00:41:26.700 --> 00:41:26.860
Yeah.

00:41:26.860 --> 00:41:27.360
Yeah.

00:41:27.360 --> 00:41:38.660
And so providing a little gizmo or a project or something like that that allows somebody to go, well, yeah, I really do want to have a cat watering flap or something.

00:41:38.660 --> 00:41:39.280
I don't know.

00:41:39.280 --> 00:41:40.100
I'm making this up.

00:41:40.100 --> 00:41:40.440
Yeah.

00:41:40.440 --> 00:41:42.380
I know exactly what you mean.

00:41:42.380 --> 00:41:42.900
Yeah.

00:41:42.900 --> 00:41:43.080
Yeah.

00:41:43.080 --> 00:41:44.160
There's a switch.

00:41:44.160 --> 00:41:45.100
It detects the thing.

00:41:45.100 --> 00:41:47.680
The thing works and the cat is wet.

00:41:47.680 --> 00:41:49.000
That's an awesome thing.

00:41:49.000 --> 00:41:50.300
I'm certainly going to build that.

00:41:50.300 --> 00:41:54.180
And in that moment, that's when you've got them.

00:41:54.180 --> 00:41:56.220
Now they're willing to learn.

00:41:56.640 --> 00:41:59.160
The stupid syntax of a loop or something.

00:41:59.160 --> 00:41:59.460
Yeah.

00:41:59.460 --> 00:42:02.040
Because that's their steps.

00:42:02.040 --> 00:42:04.120
Their staircase towards their goal.

00:42:04.120 --> 00:42:04.320
Yeah.

00:42:04.320 --> 00:42:04.780
Yeah.

00:42:04.780 --> 00:42:05.260
Exactly.

00:42:05.260 --> 00:42:05.840
Exactly.

00:42:05.840 --> 00:42:06.380
Exactly.

00:42:06.380 --> 00:42:06.760
Cool.

00:42:06.760 --> 00:42:07.920
So you're speaking of projects.

00:42:07.920 --> 00:42:12.540
Actually, on the microbit.org site, there's a whole bunch of ideas or projects.

00:42:12.540 --> 00:42:14.800
Maybe I'll throw some out and we can just comment on them.

00:42:14.800 --> 00:42:17.140
So one was a combination lock.

00:42:17.140 --> 00:42:17.980
Yeah.

00:42:17.980 --> 00:42:18.480
Yeah.

00:42:18.480 --> 00:42:19.780
What was the idea of that?

00:42:19.780 --> 00:42:21.200
Do you remember?

00:42:21.200 --> 00:42:25.360
Just so you know, I wasn't involved in many of these projects.

00:42:25.360 --> 00:42:26.120
All right.

00:42:26.120 --> 00:42:30.640
Well, let me just throw them out there so people have an idea of what people.

00:42:30.640 --> 00:42:32.820
So you can go to microbit.org slash ideas.

00:42:32.820 --> 00:42:33.500
Yeah.

00:42:33.540 --> 00:42:35.220
And they've got many, many projects.

00:42:35.220 --> 00:42:35.940
I just grabbed a few.

00:42:35.940 --> 00:42:36.640
I thought were interesting.

00:42:36.640 --> 00:42:39.240
So you can build a digital combination lock with your microbit.

00:42:39.240 --> 00:42:42.600
A Morse code phone if you have two microbits.

00:42:42.600 --> 00:42:43.120
Yeah.

00:42:43.120 --> 00:42:43.420
Okay.

00:42:43.500 --> 00:42:45.700
So I can tell you about that because it was my kids who did that.

00:42:45.700 --> 00:42:45.960
Really?

00:42:45.960 --> 00:42:46.240
Okay.

00:42:46.240 --> 00:42:47.040
You got to tell us about that one.

00:42:47.040 --> 00:42:47.320
Yeah.

00:42:47.320 --> 00:42:47.700
Okay.

00:42:47.700 --> 00:42:53.560
So at Python UK, there was an education track that I used to be involved in.

00:42:53.560 --> 00:42:56.280
And we had a kid's day where kids would turn up.

00:42:56.280 --> 00:43:00.020
And the way the kid's day would work is there would be like lessons in the morning where kids

00:43:00.020 --> 00:43:01.040
would try different projects.

00:43:01.040 --> 00:43:04.260
And in the afternoon, it was like, you are now let loose.

00:43:04.260 --> 00:43:08.400
Think of the thing you found most interesting in the morning and go do more of that.

00:43:08.400 --> 00:43:13.080
And at five o'clock, we're going to present to the whole of the conference just before

00:43:13.080 --> 00:43:15.300
lightning talk, the stuff that we've been doing.

00:43:15.300 --> 00:43:23.120
And so two of my kids and one of their buddies came up with my daughter had actually been teaching

00:43:23.120 --> 00:43:24.060
herself Morse code.

00:43:24.060 --> 00:43:28.560
And so the A button was a dot and the B button was a dash.

00:43:28.560 --> 00:43:30.960
And there's a radio on the microbit.

00:43:30.960 --> 00:43:34.680
And so she said to the audience, she was, I don't know, 15 at the time.

00:43:34.680 --> 00:43:38.000
She said, so give me a message saying, like, hello world.

00:43:38.140 --> 00:43:38.860
So she went, yeah.

00:43:38.860 --> 00:43:39.380
Okay.

00:43:39.380 --> 00:43:41.480
Well, that's obviously now I don't know Morse code.

00:43:41.480 --> 00:43:42.180
Blah, blah, blah.

00:43:42.180 --> 00:43:42.900
Deep, dee, dee, dee.

00:43:42.900 --> 00:43:45.180
Deep, dee, dee, dee, dee, dee, dee, dee, dee, dee, dee, dee, dee, dee, dee, dee, dee, dee, dee, dee, dee, dee, dee, dee, dee, dee, dee, dee, dee, dee, dee, dee, dee, dee, dee, dee, dee, dee.

00:43:45.180 --> 00:43:48.420
And you could see the sort of hall going, how does she know Morse code?

00:43:48.420 --> 00:43:50.640
But that was kind of her thing.

00:43:50.640 --> 00:43:51.600
Yeah, cool.

00:43:51.600 --> 00:43:54.280
It was just transmitting the dots and the dashes.

00:43:54.380 --> 00:43:58.380
And then that buddy held up his mic a bit and it scrolled across hello world.

00:43:58.380 --> 00:43:58.860
Nice.

00:43:58.860 --> 00:44:01.000
It's such a fun thing to do.

00:44:01.000 --> 00:44:01.940
Fun thing to do.

00:44:01.940 --> 00:44:03.680
Yeah, that's another really cool one.

00:44:03.680 --> 00:44:10.160
One that was interesting was live data logging with Python and Mew, the editor, which drew like graphs and stuff.

00:44:10.160 --> 00:44:10.300
Yeah.

00:44:10.380 --> 00:44:12.140
of the, like whatever's receiving.

00:44:12.140 --> 00:44:21.720
So you could do cool, like, hey, I want to graph the weather throughout the summer or, you know, how tall my plant is or anything you can hook some kind of measure to, right?

00:44:21.720 --> 00:44:23.860
My dog activity or something.

00:44:23.860 --> 00:44:24.980
Yeah, exactly.

00:44:24.980 --> 00:44:28.080
How many times did my frog jump if I can stick a sensor to my frog?

00:44:28.080 --> 00:44:28.680
Yeah.

00:44:28.680 --> 00:44:31.440
So you can control a little traffic light to the micro bit.

00:44:31.440 --> 00:44:31.600
Yeah.

00:44:31.600 --> 00:44:39.160
One that was cool that talks about this blocky type of programming was the hour code has a build a micro bit virtual pet.

00:44:39.160 --> 00:44:39.980
Yeah.

00:44:39.980 --> 00:44:41.280
Which is pretty cool.

00:44:41.280 --> 00:44:44.040
And you can drag and drop the little boxes on there and stuff.

00:44:44.040 --> 00:44:44.260
Yeah.

00:44:44.260 --> 00:44:47.560
It's kind of like a Tamagotchi from, I don't know, the mid-90s.

00:44:47.560 --> 00:44:48.060
You remember that?

00:44:48.060 --> 00:44:48.360
Yes.

00:44:48.360 --> 00:44:49.040
Oh, my gosh.

00:44:49.040 --> 00:44:51.760
I got a 10 to my Tamagotchi.

00:44:51.760 --> 00:44:53.220
No, no, you don't have to.

00:44:53.220 --> 00:44:54.540
It's really not necessary.

00:44:54.540 --> 00:45:01.620
And then one that I would like to, was not on there, but I would love to do with my daughter is I want to get her into model rockets.

00:45:01.620 --> 00:45:06.640
You know, you put the little disposable engine, they go up like 500 feet and then they shoot off.

00:45:06.640 --> 00:45:07.220
Yeah, exactly.

00:45:07.220 --> 00:45:07.920
Etsy, exactly.

00:45:08.320 --> 00:45:14.120
It would be so cool to put one of these in there and do like, well, this rocket went, you know, this fast, this high, whatever.

00:45:14.120 --> 00:45:15.240
And it'd be fun.

00:45:15.240 --> 00:45:15.860
Yeah.

00:45:15.960 --> 00:45:18.740
So the accelerometer, that is gravity, obviously.

00:45:18.740 --> 00:45:19.220
Yeah.

00:45:19.220 --> 00:45:33.680
And so what you should see if you're logging, you know, take a reading every whatever, millisecond, microseconds, whatever, and take the reading, store it on the local file system, get the log back, stick it to a graphing program.

00:45:33.680 --> 00:45:34.920
And you'll see takeoff.

00:45:34.920 --> 00:45:36.140
It will be this big spike.

00:45:36.140 --> 00:45:41.100
And then you'll see freefall as well, which would be a big spike on another, you know, axis as well.

00:45:41.100 --> 00:45:41.880
Right.

00:45:41.880 --> 00:45:42.500
That's awesome.

00:45:42.500 --> 00:45:48.700
And then you probably can do a little calculus to, you know, actually figure out altitude and top speed and things like that.

00:45:48.780 --> 00:45:53.560
Obviously, my, you know, 10 year old daughter is not going to do the calculus, but she could be part of the project.

00:45:53.560 --> 00:45:57.800
And I go, well, you feed that number here and it tells you how fast it's going or something.

00:45:57.800 --> 00:45:58.040
Right.

00:45:58.040 --> 00:45:58.280
Yeah.

00:45:58.420 --> 00:46:03.200
The important thing, though, is that you might be using Python for doing this on a micro bit.

00:46:03.200 --> 00:46:08.220
But if you talk to some of the folks at NASA, they use Python.

00:46:08.220 --> 00:46:08.800
Yeah.

00:46:08.800 --> 00:46:14.580
So there's this, you know, obviously they don't use Python for space bound payload, although there's a story in there.

00:46:14.580 --> 00:46:15.800
Ask me about that in a second.

00:46:15.800 --> 00:46:18.700
They do use Python for all sorts of other things.

00:46:18.700 --> 00:46:32.460
So there is this sense of continuity from me as a 10 year old girl through to some person that my dad knows at PyCon, who is at the Space Museum and using Jupyter notebooks to analyze this thing.

00:46:32.460 --> 00:46:35.900
And you're like, well, hell, man, I'm just like a space scientist, you know, rocket.

00:46:35.900 --> 00:46:36.820
Yeah, that's so awesome.

00:46:36.820 --> 00:46:37.200
Right.

00:46:37.200 --> 00:46:45.840
Like the person I met at JPL or SpaceX 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.

00:46:45.840 --> 00:46:46.100
Right.

00:46:46.300 --> 00:46:50.660
That's actually what's one of the things that's super awesome about Python, isn't it?

00:46:50.660 --> 00:47:01.980
That it can be used by these kids and then it can scale up to be used at that level for, you know, Nobel Prize, like multiple Nobel Prizes have been awarded for work done with Python now.

00:47:01.980 --> 00:47:02.180
Yeah.

00:47:02.180 --> 00:47:03.280
Yeah, exactly.

00:47:03.280 --> 00:47:06.060
I'm still on the same page as you with that.

00:47:06.060 --> 00:47:15.960
The Evan Upton, who founded Raspberry Pi, you know, the reason it was called Raspberry Pi is because they wanted the Pi to be P-Y.

00:47:15.960 --> 00:47:18.240
And it was originally going to sort of run Python.

00:47:18.240 --> 00:47:18.900
Oh, wow.

00:47:18.900 --> 00:47:19.220
Okay.

00:47:19.220 --> 00:47:19.620
Yeah.

00:47:19.620 --> 00:47:20.140
I didn't know that.

00:47:20.140 --> 00:47:20.680
Yeah.

00:47:20.680 --> 00:47:26.120
But he told me that the reason they chose Python was because of this continuity.

00:47:26.120 --> 00:47:28.460
You could start with print hello world.

00:47:28.460 --> 00:47:32.960
And it was as simple as, you know, 8-bit basic back in the day.

00:47:32.960 --> 00:47:34.700
Or you could write YouTube.

00:47:36.200 --> 00:47:36.600
Exactly.

00:47:36.600 --> 00:47:36.920
Yeah.

00:47:36.920 --> 00:47:37.360
Exactly.

00:47:37.360 --> 00:47:38.760
Or Instagram or whatever.

00:47:38.760 --> 00:47:39.160
Yeah.

00:47:39.160 --> 00:47:39.740
Yeah, exactly.

00:47:39.740 --> 00:47:49.300
But the skills that you are learning as an 8-year-old in primary school, you know, ultimately would be useful in the industry 10, 15 years later when you're out there.

00:47:49.300 --> 00:47:49.620
Right.

00:47:49.700 --> 00:47:59.160
Imagine telling engineers that for the first 12 years they're going to study, you know, this type of calculation and math and numbers.

00:47:59.160 --> 00:48:00.860
And then, well, those numbers don't work anymore.

00:48:00.860 --> 00:48:02.120
You have a new set of numbers.

00:48:02.120 --> 00:48:02.780
Yeah.

00:48:02.780 --> 00:48:05.380
And new way of doing arithmetic and math.

00:48:05.380 --> 00:48:05.660
Yeah.

00:48:05.660 --> 00:48:07.660
And you're like, why am I doing this, right?

00:48:07.660 --> 00:48:08.480
Like, why would I switch?

00:48:09.040 --> 00:48:10.780
So that's a really great point.

00:48:10.780 --> 00:48:26.040
And there's something that Alan Kay, who's the, for people who don't know, the creator of Small Talk, and he was also part of the Xerox PARC team that came up with the original Windows, Windows, I can imagine, pointer type stuff that Steve Jobs saw.

00:48:26.040 --> 00:48:30.960
And he's sort of, you know, one of these elders of the internet type people that you hear.

00:48:30.960 --> 00:48:37.500
But he has a great quote where he talks about the thing that you need to do is let kids do the real thing.

00:48:38.320 --> 00:48:40.680
And they do this in sports and they do this in music.

00:48:40.680 --> 00:48:43.200
Kids are always doing the real thing.

00:48:43.200 --> 00:48:47.860
It might be a simplified thing, but it's still the real thing at their level of development.

00:48:47.860 --> 00:48:57.040
And I think there's a danger with programming because people make ABC very basic programming environments that aren't the real thing.

00:48:57.040 --> 00:49:03.140
And so, like you said, kids get six months in, they invest all this time, and then they get on to their next academic year.

00:49:03.140 --> 00:49:07.600
And the teacher who they had last year goes, so that stuff that we did with Scratch, that was all fun.

00:49:07.820 --> 00:49:10.080
You know, the cat was great, but now we're going to learn Python.

00:49:10.080 --> 00:49:15.980
And all that knowledge about how Scratch works is just gone.

00:49:15.980 --> 00:49:16.420
Yeah.

00:49:16.420 --> 00:49:19.140
And so this is the advantage Python has.

00:49:19.140 --> 00:49:26.440
You can start with kids who are very young because Python is such a beautifully simple and easy to learn language.

00:49:26.640 --> 00:49:40.400
And a lot of the credit for that has to go to Guido because, you know, in the late 90s, you know, he was, I can't remember what he called the project, but he had funding for an educational project, Python for everybody or programming is for everyone.

00:49:40.800 --> 00:49:45.280
And things like idle came out of that and the turtle module and stuff like that.

00:49:45.480 --> 00:49:58.160
But also the fact that Python is based in part on ABC, the kind of goofy language that he was originally working on that made him think, just like we were talking, oh, man, just give me a week and I'll have an improved version of this.

00:49:58.160 --> 00:50:00.820
Which is kind of what happened over Christmas in...

00:50:00.820 --> 00:50:01.420
1991?

00:50:01.420 --> 00:50:03.420
1989 or something like that.

00:50:03.420 --> 00:50:03.980
Yeah, yeah, yeah.

00:50:03.980 --> 00:50:10.580
1999, you know, so the legend says, you know, Guido was like, you know, oh, man, can't be that hard.

00:50:10.580 --> 00:50:12.860
You know, I'm going to do ABC, but a bit better.

00:50:12.860 --> 00:50:14.580
It's a white space based language.

00:50:14.580 --> 00:50:21.980
I want it to be easy to learn because ABC was a teaching language for students learning, coming to programming for the first time.

00:50:21.980 --> 00:50:30.580
And so the fact that Python has all these attributes and this sort of Venn diagram of great stuff for teaching people, it's firmly in the middle.

00:50:30.580 --> 00:50:36.220
And the fact that it's so popular and widely used in the industry means that there is this continuity for learners.

00:50:36.220 --> 00:50:39.100
And that is a real great strength that we have.

00:50:39.100 --> 00:50:41.660
Yeah, I think it's a real positive.

00:50:41.660 --> 00:50:49.640
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.

00:50:49.640 --> 00:50:55.640
And to be honest, I, you know, one of them, the first one, Python Education, sounds super interesting to me.

00:50:55.640 --> 00:50:56.440
I hadn't even heard of it.

00:50:56.440 --> 00:50:58.280
Tell everyone about your O'Reilly books.

00:50:58.280 --> 00:50:58.580
Okay.

00:50:58.800 --> 00:51:07.280
So I've written four books for O'Reilly, but two of them are now sort of lost in the midst of time because technology moves on and things.

00:51:07.280 --> 00:51:13.260
But a couple of years ago, if you go to PyCon, O'Reilly has little reports that they hand out to people for free.

00:51:13.260 --> 00:51:16.020
And I did one of those about Python Education.

00:51:16.020 --> 00:51:18.700
It's about 30 or 40 pages long.

00:51:19.000 --> 00:51:27.120
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.

00:51:27.540 --> 00:51:36.280
And also for programmers who might be interested in learning how they might help support educators, colleagues who are teachers and things like that.

00:51:36.700 --> 00:51:38.240
So I did that book.

00:51:38.240 --> 00:51:40.400
And it's free to download from the O'Reilly website.

00:51:40.400 --> 00:51:44.120
So if you just Google Python in education, then it's a free download.

00:51:44.120 --> 00:51:47.520
It takes, I don't know, half an hour to read.

00:51:47.700 --> 00:51:53.840
And the other one, which I wrote most recently, published about a year ago, is programming with MicroPython.

00:51:53.840 --> 00:52:04.880
And that was an awful lot of fun to write because whilst I'm a Python programmer, I'm not an embedded expert, as it were, until I met Damien, of course.

00:52:04.880 --> 00:52:05.120
Yeah.

00:52:05.120 --> 00:52:06.680
His enthusiasm is sort of infectious.

00:52:06.680 --> 00:52:14.900
And you get these devices and you suddenly realize how remarkable the achievement Damien has managed to do is.

00:52:14.900 --> 00:52:22.340
You know, he shrunk Python 3 right the way down to, you know, something that could work in 16K of RAM.

00:52:22.340 --> 00:52:23.740
Right, on a $5 chip.

00:52:23.740 --> 00:52:24.680
Yeah, yeah, exactly.

00:52:24.680 --> 00:52:25.420
Exactly.

00:52:25.420 --> 00:52:32.160
And the fact that it's also fun to work with various different protocols, hardware-level protocols.

00:52:32.260 --> 00:52:33.920
And what are you doing with bit flipping?

00:52:33.920 --> 00:52:41.980
Or you're using very low-level protocols to make a buzzer sound or to draw a picture on a very simple screen.

00:52:41.980 --> 00:52:49.300
And so it reminds me an awful lot of the programming that I did as a kid when the 8-bit machines were, you know, the memory address.

00:52:49.300 --> 00:52:53.000
You could poke into that and turn the pixel the right color.

00:52:53.000 --> 00:52:53.900
Do you know what I mean?

00:52:53.900 --> 00:52:54.820
Right, right, right.

00:52:54.820 --> 00:52:56.020
There was no protected memory.

00:52:56.020 --> 00:52:56.640
You just get it.

00:52:56.640 --> 00:52:57.820
Yeah, exactly.

00:52:57.820 --> 00:53:10.160
You know, 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.

00:53:10.160 --> 00:53:18.580
Whereas with MicroPython, you know, you're saying, you know, switch the voltage on this GPIO pin and the LED works.

00:53:18.580 --> 00:53:28.960
And then if you switch the voltage on and off, you know, so you're using something called pulse width modulation where you're switching the LED on and off for only half the time, but very, very quickly.

00:53:28.960 --> 00:53:37.780
So it dims to 50% and then dims to 25% and you can make it glow and throb and all the, you know, I'm geeking out here.

00:53:37.780 --> 00:53:39.180
But it sounds fun.

00:53:39.600 --> 00:53:40.700
It's really good fun.

00:53:40.700 --> 00:53:41.720
It really is good fun.

00:53:41.720 --> 00:53:44.060
Just to feel that you're that close to the hardware.

00:53:44.060 --> 00:53:45.540
Yeah, that's wonderful.

00:53:45.540 --> 00:53:45.980
All right.

00:53:45.980 --> 00:53:47.460
So we only have a few minutes left.

00:53:47.460 --> 00:53:47.860
Yeah, yeah, yeah.

00:53:47.860 --> 00:53:49.920
And I have a whole bunch of stuff that I want to talk to you about.

00:53:49.920 --> 00:53:54.700
We don't have time to cover it, but I do want to let you just quickly, briefly touch on two things.

00:53:54.700 --> 00:53:59.320
One, the Mu code editor, which is a sort of an IDE.

00:53:59.320 --> 00:54:02.400
Maybe that's a bit of a strong word, but like a code editor for beginners.

00:54:02.400 --> 00:54:03.040
Yeah.

00:54:03.040 --> 00:54:05.740
Do you want to tell people quickly what that is and how it's related here?

00:54:05.740 --> 00:54:06.460
Yeah.

00:54:06.460 --> 00:54:09.180
So third time this has been mentioned, you know, how hard can it be?

00:54:09.180 --> 00:54:09.900
Give me a week.

00:54:09.900 --> 00:54:11.220
I'll come back with something better.

00:54:11.220 --> 00:54:15.840
So I did pretty much all the tooling for Python for the BBC micro:bit.

00:54:15.840 --> 00:54:21.020
So the browser-based editor is the thing that I wrote along with a whole bunch of other stuff.

00:54:21.020 --> 00:54:26.400
And as any good software developer would do, they test it with their target audience.

00:54:26.400 --> 00:54:34.040
And so I traveled to the UK working with teachers and programmers and observing them using early versions of this browser-based editor.

00:54:34.040 --> 00:54:35.500
And it didn't really work.

00:54:35.640 --> 00:54:45.020
And 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 sort of connectivity with the device.

00:54:45.020 --> 00:54:48.020
And you couldn't bring up the Python REPL on the board and things.

00:54:48.020 --> 00:54:53.080
And so I kind of got a list of requirements that teachers and developers really wanted.

00:54:53.080 --> 00:54:54.920
And Sunday afternoon it was raining.

00:54:54.920 --> 00:54:59.920
I remember thinking, "How hard can it be to use PyCute or something like that to do it?

00:54:59.920 --> 00:55:00.420
Yeah, yeah.

00:55:00.420 --> 00:55:02.460
It was simple as that as that."

00:55:02.460 --> 00:55:05.460
And so that happened and people enjoyed it.

00:55:05.460 --> 00:55:16.840
And then the Raspberry Pi Foundation very 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 editor to being a generic Python editor?"

00:55:16.840 --> 00:55:17.840
So I did that.

00:55:17.840 --> 00:55:20.840
And it now has a simple debugger, graphical debugger.

00:55:20.840 --> 00:55:25.220
It has a Jupyter Notebook built in as its REPL, an IPython type thing.

00:55:25.220 --> 00:55:29.600
It works with Adafruit's amazing line of circuit Python-based boards.

00:55:29.600 --> 00:55:34.600
There's a PyGame0 mode, so it makes it very easy to write games, but it's aimed at beginners.

00:55:34.600 --> 00:55:35.600
Nice.

00:55:35.600 --> 00:55:41.600
It's been rather wonderful over the last few months to see the community sort of coalesce around this editor.

00:55:41.600 --> 00:55:43.600
Educators realize that there's this thing that they can use.

00:55:43.600 --> 00:55:44.600
It's free to download.

00:55:44.600 --> 00:55:47.600
We've got lots of people providing translations.

00:55:47.600 --> 00:55:55.480
So, for example, I met some French teachers who said, "The fact that Python has keywords in English isn't a problem.

00:55:55.480 --> 00:55:57.480
The problem is that idle is in English."

00:55:57.480 --> 00:55:59.480
Or whatever code is in English.

00:55:59.480 --> 00:56:02.480
The user interface itself, the menus and whatnot are, yeah?

00:56:02.480 --> 00:56:03.480
Yeah, exactly.

00:56:03.480 --> 00:56:08.980
And so we'd love an editor that was simple enough that there weren't that many menus, but also that it was in French.

00:56:08.980 --> 00:56:14.720
Well, I think there's about 150 strings to translate to get you into a different language.

00:56:14.720 --> 00:56:17.600
And so I said, "Somebody did it over the weekend."

00:56:17.600 --> 00:56:20.600
And hey, presto, "Le NU" is born.

00:56:20.600 --> 00:56:26.600
"Le NU" is for Germany, and "El NU" for Spain, and so on.

00:56:26.600 --> 00:56:34.600
You know, I heard today from a friend in France that they'd run a Girls Can Code course, and they were all using NU in French, and it was nice and easy.

00:56:34.600 --> 00:56:44.600
And so NU is, I guess, the outcome of a whole bunch of people getting enthusiastic about building an editor for beginner programmers.

00:56:44.600 --> 00:56:47.480
Because if you ask a programmer, "What do you think should be in an editor?"

00:56:47.480 --> 00:56:50.480
You will get a programmer's editor rather than a beginner's editor.

00:56:50.480 --> 00:56:50.480
Yeah.

00:56:50.480 --> 00:56:56.480
And so one of the important aspects of how we made NU is that we put the beginner as the focus.

00:56:56.480 --> 00:57:00.480
Now, the interesting side effect of that is that we tend to get bug reports.

00:57:00.480 --> 00:57:07.480
And in fact, I can see in my alert, somebody saying, "I think we should have this feature in our chat channel."

00:57:07.480 --> 00:57:13.360
That's not going to happen because if you know enough about programming to ask for a feature to do with NU, then you are beyond NU.

00:57:13.360 --> 00:57:17.360
You should go use Atom or Visual Studio Code or whatever it is.

00:57:17.360 --> 00:57:18.360
Yeah.

00:57:18.360 --> 00:57:20.360
You have graduated beyond NU.

00:57:20.360 --> 00:57:23.360
So NU is just the stage where you're toddling.

00:57:23.360 --> 00:57:24.240
Yeah.

00:57:24.240 --> 00:57:26.240
It's the springboard into the real editor, right?

00:57:26.240 --> 00:57:27.240
Yeah.

00:57:27.240 --> 00:57:27.240
Yeah.

00:57:27.240 --> 00:57:28.240
Interesting.

00:57:28.240 --> 00:57:28.240
Okay.

00:57:28.240 --> 00:57:30.240
That's a super cool story.

00:57:30.240 --> 00:57:34.240
The other thing that you had mentioned previously was Code Grades.

00:57:34.240 --> 00:57:35.240
Yeah.

00:57:35.240 --> 00:57:42.120
As an analogy to musical past or even like Taekwondo or something like that, right?

00:57:42.120 --> 00:57:43.120
Yeah.

00:57:43.120 --> 00:57:44.120
Tell us about that.

00:57:44.120 --> 00:57:45.120
And that has its own site, doesn't it?

00:57:45.120 --> 00:57:46.120
Yes, that's right.

00:57:46.120 --> 00:57:48.120
So Code Grades is an experiment.

00:57:48.120 --> 00:57:50.120
I want to see if this works, really.

00:57:50.120 --> 00:57:55.120
In the UK and outside in the world, I'm not sure in the US, but you'll see what I mean.

00:57:55.120 --> 00:57:57.120
We have these things called Music Grades.

00:57:57.120 --> 00:58:02.120
If you remember back to the how to draw an owl, you get draw two circles and then draw the rest of the owl.

00:58:02.120 --> 00:58:09.440
Well, music grades are the steps in between that take you from the very simplest to the most complicated.

00:58:09.440 --> 00:58:14.160
And in music, this is you prepare a little concert.

00:58:14.160 --> 00:58:16.840
You go along and play this to an examiner.

00:58:16.840 --> 00:58:27.200
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 or something.

00:58:27.200 --> 00:58:30.240
And the higher up the grades you get, the more difficult it becomes.

00:58:30.240 --> 00:58:33.480
And so my idea is to apply that to programming.

00:58:33.480 --> 00:58:39.840
So at the moment this week, we started grade one Python with a class of 15.

00:58:39.840 --> 00:58:49.200
And in eight weeks time, they are going to sit down with a friend of mine called Tim, who's a Python core developer, but is also an enthusiast about Python education.

00:58:49.560 --> 00:58:52.800
And they are going to present a project that they have built.

00:58:52.800 --> 00:58:58.800
So if it matches, if it meets certain requirements for grade one Python, they get to pass.

00:58:58.800 --> 00:59:09.440
And then they can do grade two Python, which will have slightly more difficult or involved requirements up to grade eight Python, where, you know, we want to see code.

00:59:09.440 --> 00:59:11.440
We want to see documentation on read the docs.

00:59:11.440 --> 00:59:14.300
We want to see a setup dot py that works with PyPI.

00:59:14.540 --> 00:59:19.980
You know, all these things that we might expect as standard for a Python project.

00:59:19.980 --> 00:59:22.560
These steps will get you to that.

00:59:22.560 --> 00:59:26.400
And so code grades is this experiment to see if it works.

00:59:26.540 --> 00:59:30.820
And we'll find out in, well, hopefully eight weeks when these folks take their grade one.

00:59:30.820 --> 00:59:35.300
And if that works, then, well, I need to make a decision and see what I do with the idea.

00:59:35.300 --> 00:59:43.400
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.

00:59:43.400 --> 00:59:45.820
And these people need to be experts.

00:59:45.940 --> 01:00:01.500
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 of off the top of my head who would rather be working on their open source code than having to get a job, you know, writing, just pounding out code for.

01:00:01.500 --> 01:00:02.560
Right.

01:00:02.560 --> 01:00:07.820
To optimize interest rates for stock trades or some weird thing, right?

01:00:07.820 --> 01:00:08.840
Some weird angle there.

01:00:08.840 --> 01:00:10.000
Yeah, yeah, exactly.

01:00:10.000 --> 01:00:11.780
So we'll see what happens.

01:00:11.780 --> 01:00:13.340
It's early days, very early days.

01:00:13.340 --> 01:00:22.480
But so far, the feedback that I've had from coders who might act as code mentors who would be examiners has been good.

01:00:22.480 --> 01:00:25.440
The feedback from teachers has been really great.

01:00:25.440 --> 01:00:30.960
I was at a teacher's meeting a couple of weeks ago where I introduced the concepts and they were like, well, where do I download the curriculum?

01:00:30.960 --> 01:00:34.980
You know, how do I enter my students for this?

01:00:34.980 --> 01:00:36.480
Well, you know, hold on.

01:00:36.480 --> 01:00:36.760
Hang on.

01:00:36.760 --> 01:00:38.920
We're not here yet.

01:00:38.920 --> 01:00:40.200
Yeah, exactly.

01:00:40.200 --> 01:00:45.660
And the first class on Tuesday evening this week, at the end, this has never happened to me before.

01:00:45.660 --> 01:00:46.500
I'm really quite proud of it.

01:00:46.500 --> 01:00:49.020
They gave me a round of applause when I said that's it.

01:00:49.020 --> 01:00:49.320
Oh, wow.

01:00:49.320 --> 01:00:54.000
And what I had tried to do was use techniques from music education.

01:00:54.000 --> 01:00:57.820
So it wasn't a case of today we're going to do loops.

01:00:57.820 --> 01:00:59.280
Next week is going to be function.

01:00:59.280 --> 01:01:07.920
We were working on projects and letting the requirements of learning what a loop or a function is fall out of interacting with these projects.

01:01:08.280 --> 01:01:19.980
And so these folks were really, you know, they'd never programmed before, but they managed to get a kind of a pink alien to scroll across their screen using Pygame Zero and, you know, like 10 lines of Python.

01:01:19.980 --> 01:01:25.680
And I set them a challenge, which was, well, can you change the way the alien moves?

01:01:25.680 --> 01:01:28.900
Or can you change the sound effect that happens when you click him or something like that?

01:01:28.900 --> 01:01:38.340
And so they've got an existing solution, the onion analogy that you used, and they're peeling back the layers and changing it and discovering the things that they need to know through that.

01:01:38.340 --> 01:01:42.320
So that's what CodeGrowth is about, to be confirmed as to whether it works or not.

01:01:42.320 --> 01:01:44.260
But I'll certainly let you know if it does.

01:01:44.260 --> 01:01:46.120
Yeah, it sounds really interesting.

01:01:46.120 --> 01:01:49.540
I'll definitely link to it in the show notes so people can check it out.

01:01:49.540 --> 01:01:50.500
Cool.

01:01:50.500 --> 01:01:51.100
All right.

01:01:51.160 --> 01:01:54.520
I think we should probably leave it here for this topic, but it's been great to talk about, Nicholas.

01:01:54.520 --> 01:01:57.720
Now, before I let you go, two quick questions for you.

01:01:57.720 --> 01:01:58.320
Okay.

01:01:58.320 --> 01:02:00.760
If you're going to write some Python code, what editor do you use?

01:02:00.760 --> 01:02:03.600
I use VI for historical reasons.

01:02:03.600 --> 01:02:04.840
Yeah, awesome.

01:02:04.840 --> 01:02:05.980
Right on.

01:02:06.480 --> 01:02:13.900
And then a notable PyPI package, not necessarily the most popular, but one you've come across, people should know about whatever.

01:02:13.900 --> 01:02:16.100
That's hard.

01:02:16.100 --> 01:02:18.360
That's really hard.

01:02:18.360 --> 01:02:19.480
I'll tell you what.

01:02:19.480 --> 01:02:21.360
It's a popular package and it's requests.

01:02:21.360 --> 01:02:21.780
Okay.

01:02:21.780 --> 01:02:33.920
And the reason I'm saying that is because I know some of the core maintainers, I'm thinking of Corey here, and they do amazing work on a module that has an API that is just so beautifully simple.

01:02:34.400 --> 01:02:35.420
And it works.

01:02:35.420 --> 01:02:43.820
And I know from talking with Corey that HTTP is a real gnarly type protocol to have to work with.

01:02:43.820 --> 01:02:44.240
Yeah.

01:02:44.240 --> 01:02:44.940
Oh, yeah.

01:02:44.940 --> 01:02:50.160
It's been misapplied so many times by so many web servers that you have no idea what's going to come down the line at you.

01:02:50.160 --> 01:03:00.060
And yet the code that he's written using Hyper, the project that sort of sits underneath the request that does the actual HTTP stuff, is incredible, really.

01:03:00.060 --> 01:03:05.240
And it's a great way of, again, focusing on the user where the user is the programmer.

01:03:05.240 --> 01:03:07.780
I just want to get this web page.

01:03:07.780 --> 01:03:08.340
Okay.

01:03:08.340 --> 01:03:10.280
Or this JSON at this endpoint.

01:03:10.280 --> 01:03:11.360
It just works.

01:03:11.360 --> 01:03:11.960
I love that.

01:03:11.960 --> 01:03:13.480
And the documentation is great.

01:03:13.480 --> 01:03:15.680
And the community around it is good, too.

01:03:15.680 --> 01:03:16.100
Yeah.

01:03:16.100 --> 01:03:18.180
It's definitely one of the special ones out there.

01:03:18.180 --> 01:03:18.480
Yeah.

01:03:18.480 --> 01:03:21.840
So I see your requests and I respond with a responder.

01:03:21.840 --> 01:03:22.800
Have you heard of this?

01:03:22.800 --> 01:03:23.300
Responder?

01:03:23.300 --> 01:03:23.780
No.

01:03:23.780 --> 01:03:24.140
No.

01:03:24.340 --> 01:03:30.080
So Kenneth Wright just came out with a brand new web framework called Responder.

01:03:30.080 --> 01:03:32.020
You know, the opposite end of requests.

01:03:32.020 --> 01:03:34.260
It literally came out on October 8th.

01:03:34.260 --> 01:03:41.420
So it's going to be interesting to see his take on the micro framework, like Flask-esque, but not Flask.

01:03:41.460 --> 01:03:52.600
So this is good because, and I'll tell you, so one of the things that I'm thinking of including in Mew, the next version of Mew, is a way for beginners to very quickly write a web application.

01:03:52.600 --> 01:03:53.400
Right, right.

01:03:53.400 --> 01:03:55.900
Like the easiest path forward on the web app, yeah?

01:03:55.900 --> 01:03:56.380
Yeah, exactly.

01:03:56.380 --> 01:03:56.880
Exactly.

01:03:56.880 --> 01:03:59.540
Because Mew has this notion of modes.

01:04:00.400 --> 01:04:07.860
And if there's a website mode, and I was thinking of maybe using something like Bottle, you create a function for your endpoints.

01:04:07.860 --> 01:04:09.920
There's a directory with your template.

01:04:09.920 --> 01:04:11.240
Go do some stuff.

01:04:11.240 --> 01:04:15.040
But if Responder is there, I hadn't heard that.

01:04:15.040 --> 01:04:15.780
Oh, man.

01:04:15.780 --> 01:04:16.920
It's only a few days old.

01:04:16.920 --> 01:04:18.400
So, yeah, you have to check it out.

01:04:18.400 --> 01:04:18.800
I don't know.

01:04:18.800 --> 01:04:20.740
I'm going to definitely, you know what I'm going to do?

01:04:20.740 --> 01:04:22.560
I'm going to check this out.

01:04:22.560 --> 01:04:25.180
Python-Responder.org.

01:04:25.180 --> 01:04:26.840
So, yeah, pretty cool.

01:04:26.840 --> 01:04:27.820
Okay, cool.

01:04:27.820 --> 01:04:29.540
Oh, thanks for letting me know about that.

01:04:29.960 --> 01:04:31.020
Right on.

01:04:31.020 --> 01:04:32.300
All right.

01:04:32.300 --> 01:04:36.620
So, people have heard about the BBC Microbit, all this education stuff.

01:04:36.620 --> 01:04:37.920
You've heard about Code Grades.

01:04:37.920 --> 01:04:39.060
Final call to action.

01:04:39.060 --> 01:04:42.660
What should they do to get involved or to make this part of their world?

01:04:42.660 --> 01:04:43.100
Okay.

01:04:43.100 --> 01:04:49.340
So, if you need any motivation about should I be doing this, just think of it this way.

01:04:49.340 --> 01:04:52.620
You're talking with your future colleagues here.

01:04:52.620 --> 01:04:58.580
And how your future colleagues turn out depends on who turns up to do the education with them,

01:04:58.900 --> 01:05:04.740
who turns up to teach them, who turns up to show them the way to code.

01:05:05.360 --> 01:05:06.380
And I don't know about you.

01:05:06.380 --> 01:05:08.700
I'd like to be going to Python in 20 years' time.

01:05:08.700 --> 01:05:15.360
So, it's kind of incumbent on us to make sure that we help foster the community of tomorrow.

01:05:15.820 --> 01:05:18.000
And the way you do that is through education.

01:05:18.000 --> 01:05:19.840
The other motivation is this.

01:05:19.840 --> 01:05:23.280
If you really want to become an expert at something, teach it.

01:05:23.380 --> 01:05:25.780
Because you have to introspect them.

01:05:25.780 --> 01:05:28.960
And you have to think, why do I do it like this?

01:05:29.500 --> 01:05:37.080
And I need to be able to explain it in a simple enough way that I demonstrate my own clarity of thought about this thing.

01:05:37.560 --> 01:05:43.480
And that is not only a great skill for you to have to help your colleagues.

01:05:43.480 --> 01:05:45.880
You know, you need to explain this API that you've created.

01:05:45.880 --> 01:05:50.420
But it's also good for you because you have to sit back and think about what you're doing.

01:05:50.420 --> 01:05:58.920
So, teaching and educating might not necessarily be the first things that come to mind when people think of career progression or helping their company out.

01:05:59.020 --> 01:06:04.600
But in the long term, they are totally at the core of what you should be doing.

01:06:04.600 --> 01:06:07.360
So, then my speech.

01:06:07.360 --> 01:06:10.660
It's a great speech and I definitely agree with it.

01:06:10.660 --> 01:06:11.680
So, it's awesome.

01:06:11.680 --> 01:06:13.340
Thanks for saying it.

01:06:13.340 --> 01:06:14.340
All right, Nicholas.

01:06:14.340 --> 01:06:15.280
Thank you for being on the show.

01:06:15.280 --> 01:06:17.900
It's been great to have this chat and share ideas with you.

01:06:17.900 --> 01:06:18.120
Yeah.

01:06:18.120 --> 01:06:18.780
Thank you very much.

01:06:18.780 --> 01:06:19.480
It's been great to be here.

01:06:19.480 --> 01:06:19.840
You bet.

01:06:19.840 --> 01:06:20.040
Bye.

01:06:20.040 --> 01:06:20.420
Bye-bye.

01:06:20.420 --> 01:06:24.420
This has been another episode of Talk Python To Me.

01:06:24.420 --> 01:06:27.200
Our guest on this episode was Nicholas Tolerwey.

01:06:27.520 --> 01:06:30.760
And it's been brought to you by Datadog and Talk Python Training.

01:06:30.760 --> 01:06:34.700
Datadog gives you visibility into the whole system running your code.

01:06:34.700 --> 01:06:39.040
Visit talkpython.fm/datadog and see what you've been missing.

01:06:39.040 --> 01:06:41.240
Don't even throw in a free t-shirt for doing the tutorial.

01:06:41.240 --> 01:06:42.720
Want to level up your Python?

01:06:42.720 --> 01:06:49.780
If you're just getting started, try my Python jumpstart by building 10 apps or our brand new 100 days of code in Python.

01:06:49.780 --> 01:06:53.580
And if you're interested in more than one course, be sure to check out the Everything Bundle.

01:06:53.580 --> 01:06:55.820
It's like a subscription that never expires.

01:06:56.220 --> 01:06:58.020
Be sure to subscribe to the show.

01:06:58.020 --> 01:07:00.220
Open your favorite podcatcher and search for Python.

01:07:00.220 --> 01:07:01.460
We should be right at the top.

01:07:01.460 --> 01:07:10.780
You can also find the iTunes feed at /itunes, Google Play feed at /play, and direct RSS feed at /rss on talkpython.fm.

01:07:10.780 --> 01:07:12.660
This is your host, Michael Kennedy.

01:07:12.660 --> 01:07:14.020
Thanks so much for listening.

01:07:14.020 --> 01:07:15.080
I really appreciate it.

01:07:15.400 --> 01:07:17.020
Now get out there and write some Python code.

01:07:17.020 --> 01:07:17.400
Thank you.

01:07:17.400 --> 01:07:36.960
Thank you.

01:07:36.960 --> 01:07:37.660
Thank you.

