Summary
There are a number of resources available for teaching beginners to code in Python and many other languages, and numerous endeavors to introduce programming to educational environments. Sometimes those efforts yield success and others can simply lead to frustration on the part of the teacher and the student. In this episode Nicholas Tollervey discusses his work as a teacher and a programmer, his work on the micro:bit project and the PyCon UK education summit, as well as his thoughts on the place that Python holds in educational programs for teaching the next generation.
Preface
- Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great.
- When you’re ready to launch your next app you’ll need somewhere to deploy it, so check out Linode. With private networking, shared block storage, node balancers, and a 200Gbit network, all controlled by a brand new API you’ve got everything you need to scale up. Go to podcastinit.com/linode to get a $20 credit and launch a new server in under a minute.
- Visit the site to subscribe to the show, sign up for the newsletter, and read the show notes. And if you have any questions, comments, or suggestions I would love to hear them. You can reach me on Twitter at @Podcast__init__ or email hosts@podcastinit.com)
- To help other people find the show please leave a review on iTunes, or Google Play Music, tell your friends and co-workers, and share it on social media.
- Join the community in the new Zulip chat workspace at podcastinit.com/chat
- Your host as usual is Tobias Macey and today I’m interviewing Nicholas Tollervey about his efforts to improve the accessibility of Python for educators
Interview
- Introductions
- How did you get introduced to Python?
- How has your experience as a teacher influenced your work as a software engineer?
- What are some of the ways that practicing software engineers can be most effective in supporting the efforts teachers and students to become computationally literate?
- What are your views on the reasons that computational literacy is important for students?
- What are some of the most difficult barriers that need to be overcome for students to engage with Python?
- How important is it, in your opinion, to expose students to text-based programming, as opposed to the block-based environment of tools such as Scratch?
- At what age range do you think we should be trying to engage students with programming?
- When the teacher’s day was introduced as part of the education summit for PyCon UK what was the initial reception from the educators who attended?
- How has the format for the teacher’s portion of the conference changed in the subsequent years?
- What have been some of the most useful or beneficial aspects for the teacher’s and how much engagement occurs between the conferences?
- What was your involvement in the initiative that brought the BBC micro:bit to UK classrooms?
- What kinds of feedback have you gotten from students who have had an opportunity to use them?
- What are some of the most interesting or unexpected uses of the micro:bit that you have seen?
Keep In Touch
Picks
- Tobias
- The Dark Materials Trilogy Audiobooks by Phillip Pullman
- Nicholas
- Moon Dust by Andrew Smith
- Totally Wired by Andrew Smith
Links
- ntoll.org
- Tuba
- Royal College of Music
- Fry IT
- MicroPython
- MicroPython Book
- Mu
- Scratch
- Jupyter
- John Pinner
- London Python Code Dojo
- Alan Turing
- Tim Berners-Lee
- Charles Babbage
- REPL (Read-Eval-Print Loop
- Daniel Pope
- PyGame
- Raspberry Pi Foundation
- PyGame Zero
- Network Zero
- GPIO Zero
- Computing At School
- BBC
- PSF
- TouchDevelop
- TypeScript
- Damien George
- ARM
- Code Kingdoms
- micro:bit
- Barclay’s
- PyCon US Education Summit
- Raspberry Pi Foundation Code Club
- Qumisha Goss Keynote
- Adafruit
- CircuitPython
- NeoPixel
- PyBoard
The intro and outro music is from Requiem for a Fish The Freak Fandango Orchestra / CC BY-SA
Hello, and welcome to podcast dot in it, the podcast about Python and the people who make it great. When you're ready to launch your next app, you'll need somewhere to deploy it, so check out Linode. With private networking, shared block storage, node balancers, and a 200 gigabit network, all controlled by a brand new API, you've got everything you need to scale. Go to podcastinit.com/linode to get a $20 credit and launch a new server in under a minute. And visit the site at podcastinit.com to subscribe to the show, sign up for the newsletter, and read the show notes. Your host as usual is Tobias Macy, and today, I'm interviewing Nicholas Tollerby about his efforts to improve the accessibility of Python for educators. So, Nicholas, could you start by introducing yourself?
[00:00:54] Unknown:
Well, hello, everyone. I'm a freelance Python developer, which means I write code for anybody who'll pay me. I also do training, as well. I also have a background in classical music. My undergraduate degree is, from the Royal College of Music. I was a professional tuba player for a while. I also, went on to read philosophy at university as well and, ended up, like many musicians who need to make money as a school teacher. And when my own children arrived, I decided I needed a career break from school teaching. And that's how I got into software development. Because as a child in the 19 eighties, with the old 8 bit machines, I taught myself, programming.
And, so that's how I got into programming and ultimately into Python. So it's a bit of a convoluted story, but, but, I I I'm here now, speaking with you folks. Yeah. Some of the people who have nontraditional backgrounds
[00:01:57] Unknown:
in terms of how they got into programming are often the ones who end up producing the most interesting works because they have so many different experiences to draw from.
[00:02:06] Unknown:
What can I say? Music and philosophy and computing and things, it's, it's quite a varied background. And I think, especially music, that was a real privilege to to to be on the receiving end of that education. Yeah. And it's funny too how much of a crossover there is between programmers
[00:02:24] Unknown:
and musicians because of a lot of the sort of computational thought necessary to be able to read and understand music as far as the rhythm and timing and meters. Yeah. And the fact that music theory is pretty complicated
[00:02:37] Unknown:
as well. So I guess you're used to reading, like you say, symbols, is perhaps 1 way to to put it. And and then Arbitrary notations. Yeah. Exactly. Exactly. And, yeah. And you're working with other people as well as a musician, which is always a good thing to be able to do as a software developer, especially in free software.
[00:02:59] Unknown:
And do you remember how you first got introduced to Python?
[00:03:03] Unknown:
Yes. I do. I was, my first programming work was using .net, Microsoft's, platform. And I ended up being a senior developer in an investment bank in London. And I wrote some tools for the quants, in in the investment bank, and they wanted to be able to script these tools. And that led me to IronPython, which, as I'm sure you know, is is a version of Python for the for the common language runtime .net platform. And around that time, this would be, I guess, 2, 007, the very first PyCon UK was happening. So I trundled up, and I met a remarkable gentleman, by the name of John Pinner, who gave a a free introduction to Python course during the conference. And I had such a good time and, worked, back at the bank on on this I'm Python stuff that, well, about a year later, just before the financial crash, I hasten to add, so that was nothing to do with me.
I I left the investment bank, and I took maybe 2 or 3 months off to properly learn Python and then started again as a junior Python developer at a company called Fry IT, in London. So again, another kind of convoluted route, but I guess, the most important aspect of this is that I had very early contact with the wider Python community. And I could see what a friendly place it was, and I could see people like John putting in a huge amount of effort into the community as volunteers. And and that's sort of part of the DNA of Python, I guess, as well. So, again, I was privileged to, to be on the receiving end of that sort of an experience.
[00:04:45] Unknown:
And as somebody who has a background in teaching software in general? That's a really great question. I'm
[00:04:59] Unknown:
software in general? That's a really great question. I guess after dealing with teenagers, I'm extraordinarily patient. So teaching, I guess, was a baptism by fire. And so anything that I've ever encountered as a software engineer is, relatively speaking, at least, not that serious. For example, you know, the server has gone down well, at least nobody's been injured or anything like that. So the the important aspect of being a teacher is that you are very much, on the front line, and there are all sorts of interesting, issues and situations that you might find yourself in, which perhaps other, professions don't don't get to to be. And so that that perspective, I guess, is is 1 thing that I I bring to software engineering.
In a more specific way about the the the skill of being a teacher, I guess, teaching forces you to learn how to explain things in a, in a simple yet coherent unfolding of, of telling a story or or or demonstrating a movement of thought. And, and this is actually a very useful skill, as a software developer because we have to break down problems and tasks into, into their constituent parts, and we have to also simplify because nobody wants to create a spaghetti code. So so this this skill, as applies to problem solving is, I guess, a very useful thing, to have. And I guess the final thing teachers develop is what I call teacher mode, which I guess pretty much most students will recognize. And that is when, teachers go into a full on organize all the things type state.
And it means that when I'm triaging things or having to deal with lots of different things that are coming at me. As a software developer, you know, there are bug reports, there's a deadline coming up, somebody needs this this release cut in this particular time, then, having the organisational skills that, that you develop as a teacher, are generally a good thing to apply in this situation too. So yeah. And teachers are it's a sociable job as well. You have to get on with people. And, I'm firmly of the belief that being a software developer is also as a social job. You need to be thinking about your users. You need to be collaborating with, with with your, with your peers. And being able to do that in a, in a jolly cooperative sort of a way is an important, professional
[00:07:47] Unknown:
outlook to have. And I imagine too that it is useful in terms of having a more formal training of how to sort of, collect and present information rather than some of the ad hoc way that a lot of developers come across it as far as scribbling down various pieces of documentation that may or may not be comprehensible to the target audience.
[00:08:09] Unknown:
Yeah. So I guess that 1 of the things that the teacher is always doing is trying to put themselves in their students' shoes. And, what you've said, hits the nail on the head in that, at least when I'm writing documentation, I'm trying to think of, well well, who am I writing for at the moment and depending on what sort of documentation it is. And that documentation might be just comments in code or it might be something that you might find on read the docs or it might be on a project website. That will change as you as the, audience, changes as well. These are beginner docs, so you write in this particular way, and you would assume these particular skills.
It's an interesting, interesting question, really.
[00:08:50] Unknown:
And as practicing software engineers, there is a lot that we can offer to students and teachers who are interested in becoming more computationally literate. And in some ways, you can consider it maybe an obligation to help introduce newer generations and new people to some of the concepts and capabilities that computing can provide, not necessarily to become professional developers, but just to make them aware of the unknown unknowns as far as what is possible with a computer. And so from your experience, what have you found to be some of the most effective ways that practicing engineers can help to support those efforts for teachers and students as they are are working towards becoming computationally literate.
[00:09:42] Unknown:
The points that you just made are spot on, especially the stuff that you said about, helping beginners, not necessarily young people, understand the unknown unknown, as it were, to channel Donald Rumsfeld. And the the important point I'd like to make about that before I answer your question properly is, that we're potentially talking to our future colleagues here, and this is why education is so important. If we don't do a good job of it, our future colleagues won't be effective, won't be the future colleagues that perhaps you want to work with because, they've missed out on the socialization of how how do you submit a useful bug report or something like that. So, I I think it's incumbent on those of us who are in the profession, certainly, to to help people understand what it is that we do so that they can engage with us. In terms of what practicing software engineers can do to help beginner programmers, the first thing I would say is is actually go out and meet some teachers and beginner programmers or maybe kids at at a at a computer club. And then when you're there, well, just listen, watch, and learn, about what they're up to. What what is it that they are hoping to get from this situation?
Why are they why are they there? Why do they want to learn to program? And then and then you should try and address their needs on their terms rather than, explain stuff at them as it were. It's very easy, and I've seen this done several times for people to turn up. And I've been guilty of this myself. You turn up, you're introduced as the expert in the room, and you start. And, you know, after 10 minutes, you can see the teacher who invited you trying to get your attention to stop. Because all of a sudden you're talking about rest based APIs, and you had no idea how you got onto that subject. And then you remember that you're talking to a group of 14 year olds.
And so, by listening and observing and trying to work out what, they want from, from this interaction, then you'll be able to provide the best possible, interaction, educational interaction for them. I guess it's a bit like doing user research for, for an application. You're you're trying to work out what motivates the user and how they currently go about it, how they might go about it in a more efficient way. And so if you apply some of those techniques to to learning, then you'll get a better sense of, well, who are these people? What do they want to do? And how can I help them get to where they need to be, in the best way possible? And also, you you shouldn't just well, you should also be able to play your I'm an expert Trump card as well because I've seen many teachers especially who believe they well, how can I put this? It's a situation of a little bit of knowledge is a dangerous thing, and teachers spend all of their time in the classroom being teachers and get very little time to keep up to date with current software engineering practices.
And so what they might be teaching is is is not orthodox. It's it's not, Pythonic. It's it's not particularly good perhaps, although it's getting the job done. So 1 way that you could help is by, like I say, playing your I'm an expert trump card and saying, well, let let me help you with that. Have you not thought about doing it this way or that way? Or or, I see what you're doing here. Have you, have you heard of blah blah blah? Some of the technology that perhaps they could be using instead. So it's all about support and learning about your learners and then figuring out what the best interaction could be, really, rather than turning up, pushing on a mortarboard and explaining things to people. I I I'd also like to point out that whenever I've done workshops where we've had developers in the room acting as my teaching assistants, we have a rule, which is they aren't allowed to touch the keyboard. They're allowed to point at things, so we have lots of pointing going on, but it's very easy for, engineers who know exactly what needs to happen at this point in time if only the beginner would give them the keyboard and they could type very fast and the solution would be there on the page in code, actually having to explain what to do and allowing the, the the learner to experience typing in those instructions is it's in itself a valuable experience.
And I guess the best advice anybody involved in education can get was 2 words that were given to me by, my line manager in my first job as a teacher, and those 2 words are assume nothing.
[00:14:31] Unknown:
And so we've discussed a little bit already on the sort of benefits of computational literacy and how a lot of that is just understanding what are the capabilities of any given platform. But in your experience, what have you found to be some of the most difficult barriers that need to be overcome for students who are starting down that path of obtaining computational literacy and some of the maybe non obvious benefits that result from it? Students
[00:15:04] Unknown:
come with lots of different backgrounds. And in terms of a teacher or a software engineer helping, it's it's being able to address those differences that is initially the the biggest hurdle. So you will find many kids, if we're talking about beginners who are children, may have used their parents iPads and things, won't have refused a keyboard. So asking them to sit down at a computer and type Python code is something that is going to be incredibly painful for them. So another aspect of the problems that you encounter with with people who are at the very beginning of their journey as a as a as learning about programming is is the unrealistic expectations they have of it. Because if all they've seen of programming is, what they get from Hollywood movies or TV serials or things like mister Robot, for example, or colleagues at work where they talk, talking to kind of a techno babble, go away and do stuff and come back with solution, then I guess the, type really fast and, you know, bypass the mainframe's cryptographic firewall blah blah blah gobbledygook gobbledygook, that you get in Hollywood movies is is is very different to the, well, let's think about this problem and break it down into stages. And most of your time might be spent actually researching how to, solve the problem in terms of code, and looking up, sites like Stack Overflow, which quickly end up in their bookmarks, it's it's an it's another aspect of, of the mismatch between what beginner developers expect and what what they actually get.
Another aspect, I guess, and this is 1 that I've tried to address with Mu, which is the codos that I've recently, released as 1.0, is the the tools for creating code are created by developers for developers rather than for beginners. So, it's a bit like trying to teach somebody to fly by putting them in a 747 rather than in a training aircraft. So finding the right tools is is an important aspect of this. And you you get lots of other different programming environments like scratch and block based, programming that that that goes some way to address this. But, Scratch isn't a, how can I put it, professional programming language, but it's a wonderful tool? Yeah. And that's 1 of the
[00:17:37] Unknown:
difficulties that I've seen, when trying to introduce particularly Python programming to my own kids is the the necessary ability of having to be able to type without having that be too much of an encumbrance to being able to get their thoughts out into the editor. Yeah. Because that's a necessary skill that needs to be obtained before you can go to a full text based environment such as Python, whereas things like Scratch or other block based environments will help sort of delay that need. So I'm wondering what your preference is in terms of order of operations, whether you should just try and get people engaged immediately in text based environments, and just help them overcome the barrier of typing, sort of, as early as possible, or to leverage block based programming to delay that necessity and introduce them to some of the capabilities of a computational platform that will then potentially motivate them to put in the extra effort to be able to engage in a more full featured environment? It's a complicated situation,
[00:18:44] Unknown:
and I think that a blended, for 1 of a better word, approach is is the best 1 to take. So let's think about block based programming, to begin with. Blocks eliminate syntax errors. So the problems that you were just describing, about being able to type and get your thoughts down in code without having to think about it is something that can be, very frustrating if you can't do that. So, like I said, blocks eliminates all of that sort of stuff. But at the same time, blocks are very limited computing platforms. Although you can plug in lots of interesting things into, platforms like Scratch, you know, RobotArms and and make it do all sorts of incredible things.
This is always contained within the Scratch ecosystem as it were. So I I've used the analogy before, from music education where you have, in the UK, anyway, everybody has, an hour of music lessons every, every week until they're about 14 or 15 years old. And this is classroom based music. And so what a lot of teachers use are electronic keyboards, so they can plug headphones in. And, these electronic keyboards are the equivalent of scratch in that they make it very easy to sound good. You get stuff done very quickly. You know, they've got a preselection of beats and chord patterns and all this other stuff. So what these allow the teachers to do is motivate students into the potential, of being able to make music. However, we don't have concertos for Casio keyboards, for good reason. They're in in that they these are beginner tools as it were. So if you want to be a an effective musician, you need to learn what real musicians do. And this is the same with code, And this is where Python has has such strength and that it's, it's such an easy language to learn. So whilst a lot of people might have their first experience of coding via blocks and Scratch and things like that, those who show an aptitude or an interest or they they get the potential by using things like Scratch, should also be allowed or encouraged even to use Python as early as possible because the sooner you you you get to, to be able to practice these skills, the the the sooner you will acquire them and be able to see, the more full range of potential things you can do with Python, than you can do with with Scratch, if that makes sense. So it depends. I know that's not a great answer, but I hope that, you know, the the this sort of blended approach makes sense. At the back of my mind, I'm also thinking since, I don't know, 2010, the UK government has been saying, you know, everybody should learn to code, and this has been echoed around the world. I don't actually agree with that. I think it should be everyone should be given the opportunity to code, to learn to code because coding isn't for everybody in the same way that, music isn't for everybody or soccer isn't for everybody. At school, you're given this sort of a selection of things that you could try and, coding might be 1 of those things that you take to. But, if you force people to learn to code, you're going to get a whole bunch of disgruntled people who perhaps coding wasn't for them, if that makes sense.
[00:22:10] Unknown:
Yeah. I I definitely agree with that sentiment of, you know, that there is this prevalence for everybody to want to introduce code everywhere into the classroom, into various environments, you know, upscale people to be software engineers where that's why I think that the concept of computational literacy is a much better target because you aren't necessarily saying you need to understand everything there is about software and be able to write programs from scratch, and that's what you're going to do for all of your work. But at least just introducing them to these are the things that are possible. If you really want to, you can put in the time and effort to build some sort of script or utility or automation to improve whatever it is that you're doing in your other work. And if you really wanna be a software engineer, then there are these paths available, and just leaving that door open for people as opposed to, you know, putting software on this pedestal that is unattainable, except
[00:23:11] Unknown:
Yeah Yeah. It's for me, education is all about facilitating autonomy. So as you put it, the the ability having come across software and computing and being able to have the vision to be able to see the potential of these things doesn't necessarily mean that you will follow them up and become a software developer. But because you have seen that and you perhaps have some signposts about what you could do should you ever need to develop those skills, then you have that autonomy, that control, self control to be able to go, okay. I've got this spreadsheet. It's a CSV thing. I need to be able to do some analysis. I heard there was this thing called a Jupyter notebook. I've seen some examples.
I think I know enough to be able to do the thing that I needed to do. And who knows? Maybe you'll enjoy it and develop those skills further. Maybe you don't, and you go off and do whatever else it is that that that you're passionate about. But, yeah. It's, it it would be a terrible world if we inflicted coding on everything. Everybody. Can you imagine the frustration?
[00:24:21] Unknown:
The cries could be heard for miles.
[00:24:24] Unknown:
Yeah. Exactly. I mean, the I mean, professional programmers spend, you know, a good part of their life cursing at computers, I guess. So, spreading that love.
[00:24:37] Unknown:
And going back briefly to to the idea of what some of the ways are that software engineers can support, new learners, and students, and teachers is to consider the interfaces that they provide to whatever tools that they're building or tools that they're working with so that it is possible for somebody to come in, maybe read some documentation, and be able to find their way through the the system rather than having them be these opaque objects that require some special knowledge gained only by hours of reading source code to be able to make anything work, and that's going to benefit everybody who uses the system, not just new people who come into it. Yeah. And it yes. Exactly. Exactly. Exactly. I couldn't agree more. And you became involved fairly early on with the teacher's day that became part of the education summit at PyCon UK.
So wondering if you can talk a bit about how you got introduced to that and what your experiences were in the early days of that being part of the conference and, how that has evolved in subsequent years?
[00:25:49] Unknown:
So, I actually founded it. And the way that happened was the the the aforementioned John Pinner who gave the introduction to Python course at the very first Python UK attend that I attended. I'd become integrated enough in to the Python community that that John knew me. And and I've been running something called the London Python Code Dojo, which is where software developers get together and we learn from each other in a kind of a social coding situation. And John found out that I used to be a teacher. And this whole 2010, 2011 period of time when Eric Schmidt came to the UK and essentially said, this is the land of Alan Turing and Tim Berners Lee and, you know, Babbage.
Yet your computing education sucks. You know? Sorted out. And the government sort of got a kicking for it, and hence, everything kicked off. So this was in the air. He said, Nicholas, you were once a teacher. You're a Python programmer. What can we do for teachers at Python UK? And, I think this was 2011, maybe 2012. The 1st teacher's day happened, and we had, I guess, about 10 teachers turn up. And we had, maybe 15 developers turn up. And from the very beginning, this was an exercise in bringing together a community of people interested in education.
So you didn't have to be a teacher to be attending as a teacher. You you could be, you know, running a code club or something like that. But we had about 30 people in the room, and I naively started with, what I thought would be a teacher's introduction to Python. And within about 5 minutes, it became very clear that all the laptops that the teachers had brought in from work were the oldest, most locked down, crummiest machines you could possibly ever come across. And all the developers who were sat next to them to sort of pair with them were spending a lot of time trying to figure out how do you install Python on this thing. Because, of course, you you can't install Python on a machine that's locked down. Oh, I know. Let's go and use Python anywhere because that's Python in your browser. Oh, no. It doesn't work with this version of Internet Explorer. So what precisely could we do?
And so the the first hour was spent where both sides of this educational fence, the teachers and the developers, eyeballed each other. A little bit like the, the scene in West Side Story where you have the jets and the sharks on either side of the dance hall, and there's this goofy social worker in the middle trying to make people dance with each other. That was me. And after a while, the the ice was broken, and it became clear that we had to essentially abandon the practical aspects of this workshop because the tools weren't good enough. And the teachers spent most of their morning going, yes. I know. Tell me about it. Yeah. Yeah. Yeah. I know. We didn't do that either. But I'll need to talk to technical support about that. Well, they don't know about that either, yet tell me about it. While developers were just sort of pulling more and more hair out as they were screaming, why can't I do this? Why have you got the oldest possible version of Internet Explorer 6 installed on your machine and things like that?
So, we we sort of abandoned ship at that point and decided that perhaps the best thing we could do in the afternoon was some practical work where teachers would come with problems that they have in their classrooms, and they would write them up on post it notes. And then developers then they would pitch these ideas. And then people who were interested in these particular ideas, developers, would buddy up with these teachers and sit down. And by the end of the afternoon, they would have some sort of solution or some presentation or something that they could share with everybody else. So the afternoon became a a sort of an ad hoc programming workshop.
So I seem to remember we had an adventure game being written because somebody wanted to introduce text based programming. A text based adventure game was all about you type a command, something happens, you type another command, and so on and so forth. So this could introduce a sort of situation. We had Dan Pope, who, is big in the pygame world. He he decided he would, help some teachers, write a game. I think Tim Golden, 1 of the Python core developers who was in the room, went through an example, answer to an a level question. A levels are the exams that you take in the UK when you're 18 years old, and, they are what you take just before you go to university. So, many teachers didn't know how to answer this particular programming problem that had been set as part of the a level paper. And Tim, as a tame developer in the room, sat down and did that thing that you do when you learn to drive a car where the instructor will say, now they miss it, I want you to tell me exactly what you're thinking as you're driving down this road, and I would say something like, okay. I can see there's a pedestrian crossing coming along. I'm going to check my mirror. I'm going to apply the brakes and so on and so forth so that the instructor gets to see what's going on in your head and you get to practice the maybe little checklists that you need to do as you're driving. He was doing that, and the teachers were looking over his shoulder and seeing how professional programmer would would solve these problems. We had all the other sorts of things. And at the end, we had this rather glorious show and tell, which was which hilarious because, of course, when it comes to show and tell, nothing actually works or things go wrong. So for example, Dan presented his game, which was about 500 lines of Python.
1 of the teachers in his group said, essentially, this is wonderful. This is brilliant, except we can't use it because just having, you know, 10 lines of code in in an hour's lesson is is something remarkable. So 500 lines is is basically impossible. And as a direct result of that comment, Dan went on to produce pygame0, which is a cut down version of pygame. And within about 10 lines of code, I e a lessons worth of code, you can have quite an effective gain, going on. So that was the 1st year. Another memory of that first time was meeting Carrie Anne, Philbin, who's now the director of education at the Raspberry Pi Foundation. She was still a teacher then.
She came along. She she just she was just dipping her toe into the Python waters, And and, she was magnificent after lunchtime in herding unsuspecting developers into the education room, then thinking that we're going to see something about programming and others really knowing that it was all about education because she realized, and she's magnificent at doing this, that it's important to get developers involved with teachers, because developers have the current knowledge and the skills, and teachers are the ones who are supposed to deliver this. If these 2 sets of people aren't talking to each other, then we have a significant problem. And from then, from what did I say? About 10 teachers? We have about 50. I stopped organizing Python UK's education track.
My last 1 was 2015. We have about 50 teachers turn up. And then we also introduced a kids day in the 2nd year we ran this, and we have about a 100 kids turn up. So it's it's it's grown an awful lot, and it's lovely to see, to see this happen. And
[00:32:50] Unknown:
in the subsequent years that it has been going on, how has the teacher's portion of the PyCon UK conference changed, and what are some of the additional learnings that you have been factoring in and plan to factor in for upcoming years? The teacher's day was has always been
[00:33:10] Unknown:
a a morning of lessons and workshops, and then an afternoon of creative coding with real software developers. The important thing is trying to get a crossover between developers and educators. In 2016, the Raspberry Pi Foundation took over the the teacher's day as it were. And, they run a Pi Academy, which is run on very similar grounds and that they they have a whole bunch of workshops. And they also have a section where people can play and make and things like that. So, and they do that training up and down the country for teachers, and in the US as well. So they run 1 of these workshops at PyCon UK.
So to recap, essentially, the teacher's day is a morning full of interesting workshops that teachers can attend and choose what they want to do depending on their particular interests. And then in the afternoon, teachers will find, others who share similar interests to them and developers who are interested in helping them do that. And they will come together and try and create solutions or make a presentation or just talk about things. The important thing though is that by the end of the day, there's a sort of a show and tell where people can share what it is that they've been been up to. So, in that space is more formal learning in the morning and in the afternoon, an opportunity for informal exploration rather than, you know, let me teach you how to make a website sort of thing.
And this is particularly useful as developers get to see into the problems that teachers have. And whilst everybody's been in school, and therefore thinks that they understand what happens in school, you'll just have to trust me when I say that it's a very different perspective, from the teacher end of things than it is from the student's end of things. And, and giving developers an opportunity to opportunity to see this and to hear the teacher's perspective is is invaluable.
[00:35:15] Unknown:
And what have you found to be some of the other beneficial aspects of the teacher's day, and how much engagement has been occurring in between conferences, between teachers, and the developer community? The developers
[00:35:31] Unknown:
who turn up generally very passionate about education in the first place, either they have children or they're already involved in a code club or something like that. So this sort of subject pushes their buttons already. And some of the wonderful outcomes have been things like Dan Pope's pygame0 library. This 0 thing has taken off a little bit, in that, others have created network 0, GPIO 0. There's a crypto 0. So these are libraries that a beginner can use with Python that introduces them to the core concepts. So this development has generally happened after Python UK and after a developer who might be working with with crypto based aspects of their day job has been talking about this with a teacher, and the teacher's gone, well, we can never do anything like that. And, of course, if you say, well, we can never do anything like that to a developer, the first thing they're gonna do is bite me. Let me let me show you.
And, and and so we've had quite a number of of really useful libraries that could be used in classrooms. And these developers have also realized that, you know, we have meetups as Python developers, while teachers have meetups as well. In in the UK, there's a wonderful organization called Computing at School, CAS for short. And they organize meetups every week for compute every month for computing teachers in particular areas. And, our developers have have found that they they can go along, give presentations, meet more teachers, or sometimes they're invited by perhaps the teacher that they met at PyCon UK to turn up to 1 of these teachers meetups, to act as the, captive developer in the room and be bombarded with questions and, you know, how do you fix it when such and such such thing happens?
So the interaction is sustained, between Python conferences in the UK, But it does take effort. And on the flip side, we've had teachers turn up to things like the London Python Go Dojo, and teachers, arrange usually pub meets if it's teachers, where they, where where the intention is to try and entice some developers to come along, because they had such a good time doing that at Nikon UK. So in a big city like London where you have lots of teachers and lots of developers, this this happens quite well. Out in the sticks where I live in the countryside, it's it's happening in large towns, but,
[00:37:57] Unknown:
it it's certainly not a uniform thing across the country. Another way that you have been engaging in helping to bring Python to the classroom is through your involvement with the micro:bit program that the BBC put, put together. So how did you, get introduced to that initiative, and what was your role and some of the feedback that you've gotten as it has rolled out to these various classrooms?
[00:38:25] Unknown:
Okay. So micro:bit, and Python is is a glorious accident. So I know various people who work at the BBC, because they are Python programmers. And I knew that they were up to something. And the BBC announced that they wanted partners. This was back in the end of 2014, beginning of 2015, partners to help them bring a computing and education project to fruition. And part of the blurb that they had in there was it mentioned the Python programming language. Now I'm a PSF fellow, and I also volunteer time for the PSF. I'm on the grants working group and do other things for them. And so I emailed the board and said, look. The BBC wants to do something with Python. Perhaps the PSF should, should apply to be a partner for this. And the board said, okay. See what happens.
And I put together a proposal, and we were invited to become an official partner. And at that point, it was revealed what the nature of this project was. You know, the micro:bit was a small device. It needs to be programmed. And so we had hardware partners, we software partners, and we had educational partners. And the PSF was classed as an educational partner because we agreed that we would provide Python training resources and material. And that was me thinking, well, I'm sure me and a few of my friends in the UK Python community can put together something, you know, some lessons, as a kind of educational sprint at some point. And, a few months into the project, I was called into a meeting at the BBC.
And essentially, they said we must have Python on the micro:bit, but the organization who said that they provide Python for the device have pulled out. We want you to do it. So this was this was rather shocking, for want of a better word. And what they wanted was Microsoft had developed this platform called touch develop. And they the BBC wanted all the programming languages to emit an abstract syntax tree for this touch developed platform, and so everything should just work. Now, unfortunately, this platform was written in TypeScript that none of us knew, those of us who'd been interested in this project. And there was already MicroPython.
And I'd, I knew of Damien because he was living in the UK at the time. Damien George is the creator of MicroPython. And, he'd he'd come along to Python UK. But in a remarkable stroke of luck, the person who was running the team at Arm, the chipmakers, who were designing the hardware for the micro:bit, he was based in Cambridge. Daniel was based in Cambridge. And in fact, they were next door neighbors. And so we were able to get them. I know it's complete look, total look. And so, Johnny, the guy from Arm, was able to get a development board to Damien, post it through his letterbox.
And within about a week, Damien had MicroPython working on the micro:bit. So we knew it was possible, and I went back to the BBC and said, look. It's great that you want us to do this stuff with Microsoft, and Microsoft was still developing this platform. And so their notion of what should be in the abstract syntax tree and how it works and so on and so forth was changing all the time because they were still building it. But why don't we just drop that idea when it comes to Python and we just use micro Python because it's already written and it already works, and there we go. And we had a little fight, but eventually the BBC came around. And so MicroPython, Damien, I must say, has put hours and hours and hours and hours of work, voluntary work, unpaid work into making micropython work on the micro:bit. And he's done a remarkable job. The fact that you only have 16 k of RAM and you have pretty much a feature complete version of Python 3 running on the board. So you get, you know, date structures, dictionaries, lists, sets, arithmetic, the math module, exceptions, you know, all this stuff that we take for granted as a Python developer, obviously, not the standard library, but we created a micro:bit module that allowed you to have access to the device's hardware. And from then, we created, I wrote most of the tools around micro Python on the device. So Damien looked after the device itself, and I wrote the editors and the other things that would be needed to allow people to interact with the device.
And, you know, several months later, it was released. So at that point, we had what was called the school drop. So there are about a 1000000 children who are between the ages of 11 12 in the UK. And, in 2016, that particular million all got 1 of these boards. They were delivered to schools. And, so a million of these devices got into the hands of teachers and students, and they started using MicroPython and the other platforms that were made available, for programming the device. So there's a a blocks based JavaScript thing by, by a company called Cokeindoms, and there was a touch develop platform that Microsoft developed as well. And the BBC did a whole bunch of programs and things. So Doctor Who, got to use a micro:bit.
And and and there were, like, adverts on UK terrestrial TV about the microbit so people could see that it was coming and that their children would have 1 and it's not a bomb and it's safe and, you know, you you should encourage them to use this. So that was lovely to see. And it was lovely to see that a a large partnership of diverse partners ranging from academics, for example, Lancaster University did amazing work on the hardware abstraction layer through to big corporations like Microsoft, and banks like Barclays who helped bankroll it, all come together and produce this thing. And since then, the microgrid foundation was created to support the device, and they're doing sterling work to help the device get rolled out elsewhere in the world. And you asked what's the most amazing thing that you've seen people use the Microbiq for? I've seen it used for all sorts of weird things, but, I'll use a recent illustration as as as an example. I was a couple of weeks ago in a library very close to where I live, and a local software engineer was running a code club for a bunch of 11 year olds, and he organized a treasure hunt. And so the micro bit has a radio on it, and he had the class split into 2, those who programmed the the treasure and those who programmed the detectors.
And, he gave them example code that they typed in. And the way it worked was essentially the radio was turned down to its lowest power level. And if you if the device was a treasure microbit, it would keep transmitting a message that essentially said, I'm here. I'm here. I'm here. I'm here. And the detector microbit, would be listening on the appropriate radio channel for such messages. And you had to wave it around, on the end of a stick. It it reminded me a little bit like that scene in the original Ghostbusters where they're in the library and they're waving around a kind of a thing trying to find out where the ghost is in the in the library. So it was a bit like that, but it had a speaker attached to it. And as the radio signal, increased in strength, I. E. You were getting close to 1 of these treasure microbit devices, hidden around the library, the bleeping would get louder and higher. And so you must imagine, what a sleeply sleepy English country library is like. You have kind of the the women's institute knitting circle in 1 corner of the library and a pensioners jigsaw club armed with cups of tea and biscuits in another and then this hoard of children hits the library. Half of them secreting these micro bits in all sorts of different parts of the library, including the knitting circle and the and the jigsaw and the pensioners jigsaw club. And then 5 minutes later, another horde, waving sticks, basically rubber rubber, plastic tubes with microbits on the end, with attached speakers all bleeping and whistling and waving them around trying to find the treasure. Actually, the whole library got involved in it. So it was rather wonderful to see these 11 year olds bump up against these other groups that use the library and for these other groups to just see, you know, what the kids of today are up to. And, you know, these these computer things aren't aren't all violent video games and stuff. Stuff. It's actually a bunch of kids learning some really useful skills.
And, my my favorite moment was seeing the sort of the the insane grin of the librarian, who who was just seeing their library come to life. The stereotype of the librarian is, you know, don't talk. But this was absolutely not the case. And it was wonderful to see this this place come alive. So there are lots of experience lots of examples of this sort of experience happening with the micro:bit because it makes engaging with physical computing,
[00:47:17] Unknown:
so easy to do. And so as an outcome of your work with the micro:bit project and helping to build all of the tooling around using MicroPython on that device, you ended up authoring a book that was published with O'Reilly. So for anybody who wants to learn more about how to use Python on hardware devices, I'm sure they can check that out. And for anybody who wants to, help to contribute to the accessibility of Python in education, what are some of the resources or projects or,
[00:47:53] Unknown:
activities that they should look into and contribute to and get involved with? If you are in the US and you're going to Pycom, you should totally go to the Education Summit, which is lots of fun, and it's presentations. So it's but it's a good way of finding out, what's going on. Another thing that you can do is the Raspberry Pi Foundation run something called code clubs. They provide you with a sort of curriculum in a box, just add to children type setup, where if you can find a teacher who is generally willing to to help you, you can be the expert in the room. The teacher can be the the sensible adult. And I'm sure it's the same in the US, but in the UK, there are very strict rules around who is allowed to work with children. And so by having a teacher in the room, they are the, the blessed person to to be looking after the the kids whilst the the developer is actually delivering the resources.
So if you go look at Code Clubs, you will find all the resources you need, to start a Code Club locally. Places like your library, like the story I mentioned, or with your local school, are are are good places to, to investigate this. If you're interested in finding out about the work or that other people have been doing, I think that Kamisha, Kamisha Goss is, keynoted this year's, 2018 PyCon, where she talked about her work, as a librarian in Detroit, is 1 of the most inspirational keynotes I've ever seen. She got a a resounding, standing ovation, and I heard later that there were people crying and all sorts of things. It's a it's an incredible story that she tells. So if you're looking for inspiration, go go go look at that. If you want to, contribute code, pygame0, network 0, gpio0, projects that you could you could help with. I've authored an, code editor for beginner programmers called Mu.
That's m u. So if you go and visit the codewith.mu website, and, by the way, mu is the top level domain for Mauritius, then, you you'll find details of of the of the project there if you fancy contributing to, some of the tools that educators might use. Translating things as well is important. I spent some time in Paris last year talking to a whole bunch of teachers. And 1 of the questions I asked was, you know, does it matter that Python is an English programming language, as it were? And they said not at all. But what really matters is that the resources that we have, are in French.
So kids, they get that for and if or while are English words, and they understand how how they are used and how to apply them. But, it would be great if documentation or educational resources were were were in French as well. So if you're, if English is an additional language for you, then creating resources in your native language is is a extraordinarily useful thing that you can do for your teaching colleagues.
[00:51:10] Unknown:
And there's also the Python in Education website that I came across recently that appears to be still under construction. So can you speak a bit to the the plans there and ways that people can get involved in that effort? Yes. So that needs to be finished off.
[00:51:29] Unknown:
And that's that's something I needed to help make happen. So at the end of the micro:bit project, before the micro:bit foundation was set up, it wasn't clear that there would be a place where all the work and the efforts to do with Microbit from the PSF's point of view could be placed. So Python Education website was created, and it soon became clear that it could be used as a general place for people to be able to contribute resources and other things. And so I think we're, I'd say about 60% there, and, that needs looking at. So if anybody would like to help, I would love to hear from you.
[00:52:13] Unknown:
And are there any other aspects of the projects that you're working on or your efforts in bringing Python to the education environment and teachers and students that we didn't discuss yet that we should cover before we close out the show? I'd like to speak a little about MicroPython.
[00:52:31] Unknown:
Sure. And often because people hear me speak about micro:bit, people tend to think that micro:bit and micro:bit are, it's a 1 to 1 mapping. Actually, that's not the case at all for either instance. Obviously, micro:bit has other languages you can run on it, but micro Python runs on an extraordinary wide range of devices. And Damien has been doing amazing work on that. Adafruit as well, needs to be mentioned here as well. They have, it's not so much a fork of MicroPython as a a distro, if you see what I mean, of MicroPython. And that they produce a line of boards that can run MicroPython and they wanted a unified API so that you could move between your boards and everything would just work the same depending on the hardware capabilities.
And so CircuitPython takes MicroPython and wraps it in, in a standard API. And their boards are just incredible. If you were at PyCon this year, you will have had, 1 of their, little Gemma boards, which I don't know, about the size of 10 p in UK money. No idea what it's small, basically. I'm not sure how that translates to the US or anywhere else in the world. But these are very, very small boards, and they can, you know, drive things like neopixels and and all sorts of things through the GPIO pins. They have a a a a a wide range of boards that that that are fascinating to to use.
Also, Damien is gonna be releasing PyBoard, the the next iteration of PyBoard, which is an incredible machine. So small yet so powerful. Incredible what you can do with that. And there are also all sorts of other ways in which people are they're using MicroPython all over the place. So I hear Intel are embedding it in their BIOS So you'll be able to program your bios in micro Python. I know Damon is doing work with the European Space Agency. So, what the ESA calls space bound assets or we would call satellites, will be programmable in micropython, which I find really quite fun, to think about.
So, yeah, I would encourage people to have a look at MicroPython. It's a fascinating project, and, it's interesting to see, what people can build with it. Because as in in my day job, I, you know, might use AWS to provision a whole bunch of computers to do a whole bunch of stuff. But messing around with electronics and embedded systems, and you can actually make something blink at you or or bleep at you or, transmit something across your garden so that the sprinkler comes on or something. There's something really quite a lot of fun about being able to do that. So I encourage people to take a look at it. And for anybody too who wants to learn more about
[00:55:25] Unknown:
the, sort of initial history and architecture of it, I'll add a link to the show notes for the interview that I did with Damien in a previous episode as well. Yeah.
[00:55:37] Unknown:
Damien, Damien is an amazing engineer. I can't sing his praises high enough.
[00:55:44] Unknown:
And for anybody who wants to follow the work that you're up to or get in touch, I'll have you add your preferred contact information to the show notes. Yeah. And so with that, I'll move us into the picks. And this week, I'm going to choose the audiobook version of the dark materials trilogy by Philip Pullman. So The Golden Compass, The Subtle Knife, and The Amber Spyglass. I started listening to The Golden Compass recently with my family, and it is a phenomenally produced audiobook. It has different voice actors for each of the different characters, as well as a, narrator who does a phenomenal job. So I definitely recommend checking that out if you are into fiction or audiobooks, and it's a great listen with the family. So with that, I'll pass it to you, Nicholas. Do you have any picks this week?
[00:56:29] Unknown:
I have 2 books by the same author. The author is Andrew Smith, and the books are Moondust and Totally Wired. So, the reason I'm suggesting them is because they're really great reads. Moondust, asks, what did the Apollo astronauts do next? So you've just landed on the moon. How do you top that? And, it's a great example of gonzo journalism. So it's not only Andrew trying to figure out what Buzz Aldrin did next and how his life has gone since, which is a fascinating story in itself. But it's also a fascinating story trying to track down the remaining Apollo astronauts and, and interviewing them. So, and the Totally Wired book, the second book, is about the collapse in around 2000 the the the dotcom crash and, and how that's, the exuberance that led up to it and and the fallout after it and how that affected various people to do with, Silicon Alley, I believe it was called in New York. And, again, that's a good example of gonzo journalism.
The reason I'm mentioning Andrew by name is because Andrew has recently written a piece for The Economists, where he called Code to Joy, where he talks about what it's like to learn to code. And, that article was so well received that he's just been commissioned to write another book, about learning to code. And he's doing that at the moment. And he was at PyCon. I met him at PyCon. And Python, will feature, heavily, I guess, because that's the language he's learning to code in. So, it's interesting. I read read his books because I was interested to see what sort of style of writing he had, and it'll be interesting to see what the end result will be when he finally publishes this book about learning to program Python.
[00:58:31] Unknown:
Alright. Well, thank you more people and bring them into the more people and bring them into the world of what computers can do. So I appreciate that, and I hope you enjoy the rest of your day. You're welcome. Thank you very much. You're welcome. It's been fun. Thank you.
Introduction and Guest Introduction
Nicholas Tollerby's Background
First Encounter with Python
Teaching and Software Development
Supporting Computational Literacy
Challenges in Teaching Programming
Block-Based vs. Text-Based Programming
Importance of Computational Literacy
Teacher's Day at PyCon UK
Evolution of Teacher's Day
Micro:bit Project
MicroPython and CircuitPython
Python in Education Website
MicroPython Beyond Micro:bit
Closing Remarks and Picks