Transcript: Teaching Python - Nicholas Tollervey
Hello and welcome to another episode of Django Chat.
This week we're joined by Nicholas Tullivy to talk about teaching Django and all the many hats he wears in the community.
How are you, Nicholas?
I'm good.
How are you?
Good.
And also Carlton is here as always.
Hi, Carlton.
Hello, hello, hello.
Hi, Carlton.
So we met, well, if you call it meeting uh at PyCon, though, I I've been a fan of your work for a long time from afar, and you have such a broad background.
I wonder what's the quick version of you know why are you at PyCon?
How do you do all these hats?
And then we'll get into teaching Django and all the rest of it.
Okay, so So who are you?
So who am I?
I often ask myself that question.
Um okay, so uh the thumbnail sketch is uh as a kid growing up in the UK in in the 80s, uh we had 8-bit micros, and I was the recipient of all the work that went on in schools.
Then my mum and dad were both teachers, and they used to bring home the school's BBC micro.
And my brother and I learnt BBC Basic when I don't know, I'd be about eight or nine, and it was a case of you know, 10 CLS, 20, print you're an idiot, 30, go to line 20, um, that sort of stuff.
Uh and then
Carlton, was this for you too, Carlton?
Just because I'm smiling because that is exactly my experience.
Um, but
were you a Spectrum guy, a Commodore guy, or a BBC guy?
I was a BBC guy, and later on I was an acorn guy, acorn Archimedes guy.
Uh yeah.
Okay, so our stories are exactly the same.
I graduated.
Oh, good, cool.
Nice to meet you.
Fantastic.
It has a lot to answer for, the uh BBC Micro.
So that's not the case in the US, so that's why the uh BBC.
Well, the thing is that there was a report uh published a few years ago, uh, the sort of 20th anniversary of this thing, and uh they think that the the reason that there's so many video games um in the UK, video games companies in the UK, uh that a lot of it is down to the fact that you know the people who are working in them and designing these games all started on the on the BBCs and the spectrums and the Commodores and things in the 80s.
So uh uh it has a lot so lots of all.
The stuff you've done with the microbit project, you sort of brought that to the new generation, right?
I mean that's you put a physical device in the hands of what a million secondary 11-year-olds.
Okay.
Yeah.
So we should quickly say what the micro-bit project is here to introduce.
Yeah, I'm I I'll I'll I I I'm happy to do that.
Uh so um the BBC again wanted to do some intervention um in this in the spirit of the BBC micro from the 80s.
Um so they asked themselves, well, what would it look like for today?
Um, you know, it would need to be small, handheld, mobile, um, communicate, that sort of stuff, uh, maybe an Internet of Things sort of thing.
And so they came up with the uh the concept of a microbit.
Um and they invited uh at the end of 2015 um partners to become a part of the microbit project.
Now the BBC, because it's funded from the license fee, have to be very careful about interventions that they make because, of course, if the BBC say we're going to go into the computing education world, then those companies in the UK who are in the computing education world are going to be uh rather frightened because there's rather a large organization with huge amounts of resources.
So the way they got around that was by having a partnership which was under the umbrella of the BBC, and it was individual companies and organizations such as the Python Software Foundation who uh contributed to the partnership to deliver the project.
And so in the spring of 2017, a million of these devices were given out to kids in the UK, so uh every 11-year-old in the UK got one.
The Python Software Foundation uh was a partner in this project, and Damien George, who's the creator of MicroPython, uh, volunteered a huge amount of time and effort in making MicroPython run on the device, and uh I built a whole bunch of tools that went around it, and there were, I guess, about 80 volunteers in the wider, mostly UK Python community, but we had some international contributions as well.
So about 80 volunteers to a greater or lesser extent submitting resources, code, time, that sort of stuff.
And the device itself is about the size of a playing card, it has a 5x5 LED screen, a couple of buttons, an accelerometer, GPIO pins, a compass, and very simple networking as well that could be Bluetooth capable, except they forgot to put enough memory in the device.
So nobody can make the damn thing work with Bluetooth properly.
Fine.
And uh are these available to buy still?
Like if you wanted one, if because lots of people are into that kind of thing.
Yeah, go
go grab it from Adafruits, uh, for example, or some other uh online shop like that.
Um but you know the perhaps one of the uh things that makes me most happy about the legacy of microbit is that you now have a whole bunch of other folks doing something very, very similar.
So you have uh in in China there's the SinoBit, uh which is uh based on the microbit but has a rather a uh a larger LED screen because of course the characters in Chinese are a lot more complicated than the um Western alphabet.
Uh there's the Calia P in in Germany, and of course, as we've been at PyCon, uh we all got an Adafruit Circuit Playground Express.
Uh and Adafruit have been that that's just amazing, uh, that board.
Um and and and this sort of um Python for embedded uh is is is gaining momentum and it's a wonderful thing to see.
Yeah, and can you explain about MicroPython?
Because that's a really interesting project and you mentioned it that.
Yeah, so uh MicroPython is the creation of Damien George.
Uh Damien uh is a physicist by training.
Uh he was based in Cambridge in the UK, um, and uh he worked uh on stuff to do with the large hadron collider, and that's about as much as I'm prepared to say because it gets a lot more technical after that, and I don't know.
But it sounds very impressive if you go look him up on his Cambridge University website.
Um so he's uh obviously an academic, um, but uh whilst an undergraduate he had an interest in robotics and he wrote a very simple scripting language for the Robo World Cup uh entry from his university in Australia when he was an undergraduate.
And uh and this involved him writing a compiler for embedded systems and things like that, and that experience uh and his interest in robotics and the fact that he was looking at the computing ecosystem, wondering, well, what scripting language is popular and well known that might attract people to this sort of project led him to decide to create MicroPython.
And so uh he he had a proof of concept working, um, and then he did the famous Kickstarter where he said you'll get a pie board if you support more than $50 or whatever it was, and then he was expecting to maybe raise $10,000 at the most and uh $100,000 later.
The world obviously wanted uh MicroPython, um, and he's done other stuff, uh other um Kickstarters since.
Um, but MicroPython is a full re-implementation of Python 3 for embedded and microcontroller-based uh devices.
It can run in as little as 8k of RAM.
Um and uh the way Damien has written it is uh a feat of uh software engineering.
Really, it is.
Uh you've got yeah, pretty much the whole language there.
And if you're used to working in embedded systems and you're working in C, and every time you do a new project, you have to reinvent the wheel, um, and then you get Python and you have the data structures, exception handling, um, you know,
the strings,
the strings, or or or you know, memory management, all this sort of stuff already there, then uh it's a revelation.
Uh uh when I was uh working with Damien, he was telling me that he had sort of C programmers saying, you know, this thing, it's taking me like a couple of hours this afternoon, it would normally take a week in C.
And this speaks to MicroPython's power because people will often criticize it and say, well, you know, MicroPython, it's interpreted, it's got to be slow and what have you.
But um actually it's often fast enough, and it's possible to write the bits that you need to be fast in C and import them as modules into MicroPython.
But most importantly, um it's software developers who are the most expensive part of often of this equation.
And MicroPython makes this so easy, so quick, so fast.
Um, and such a joy to write in this.
We know you know Python's a beautiful language.
Well what you just said is the story of Python at every level, not just MicroPython, Python regular.
You know, you can write it faster in Go or Rust or C or whatever, but Python will be fast enough, and your software developer time is much more expensive by an order of magnitude, and you know it's a joy to write, and you're more productive.
And that you know, it's almost it's brilliant that at every level that applies exactly the same.
Yeah, it's it's it's Python's it's one of Python's secret weapons, really.
It's the it it'll come into a uh I don't know, if I was a business type, it comes into a particular market and um and uh and what's been there before is uh it it is often difficult or fiddly uh or time consuming and and Python, um because you know Guido's great insight readability counts and and the other sort of set of Python uh tropes that we have, um, they really are important.
Um and the community is awesome as well.
Um it's it's a fantastic community who wouldn't want to be a part of it.
Right.
Well, let's see, I I took us a s a field from your background, but yeah, let me if I could let started.
I mean, my 10 second take, and and you've given many, many talks, so partly I didn't want you to have to say the same things is you know, classically trained in uh tuba, um musician, then you taught and were what head of music at numerous schools throughout your 20s.
Yeah.
And then you got into C sharp ASP.net, right, before Python?
Yeah, so uh so whilst I was a teacher, uh I was using Linux um uh to uh uh uh uh because the Windows 3.1 machine that I had inherited from my father-in-law kept crashing, and I'd installed naively this this Linux thing, and I was using it to plan my work and do my kind of paperwork and things.
Uh but uh I was having a lot of time, so I was aware of open source free software.
Um, and uh when my children arrived, I did an MSc in computing as a conversion to allow me to sort of step out of teaching and into computing because it was something that I was interested in.
Um, and my first job was uh using C sharp, and because I only had commercial experience in C sharp, the only jobs I really went for were C sharp jobs.
Um, but uh my my last job as a C sharp developer was at an investment bank in London.
I was working with a bunch of quants, they wanted to script the tool that I had written for them, and IronPython, this is I don't know, 2007, 2008, Iron Python was becoming a blip on people's radar, and um Microsoft had been investing time in what they call the DLR, the dynamic language runtime.
Um I have no idea what's become of that, but I encountered Iron Python.
I went to PyCon, the very first PyCon UK, uh met John Pinner, who gave a free course um in Python.
It was an incredibly welcoming community.
Uh and John was uh who's part since passed away, sadly.
Um without John, the UK Python community would be um would be nothing really.
Uh but that autumn um had a big uh big effect on me, and I thought, well, okay, uh I've got enough money to spend maybe three months of my time uh retraining in Python and doing something uh and and and uh and getting a new job in Python.
Um and uh interestingly for this podcast, the the mechanism, the vehicle for that was via a Django website.
Brilliant.
Yeah, what was that like back in the day?
Because obviously I'm aware of sort of current yeah, you know, it feels like there's not a lot of ways to learn Django currently.
I mean it's growing, but I mean 10 years ago, right?
What was the landscape like?
Why and why and why Django, right?
Because it wasn't necessarily you know, there were still a there are a number of other options that Django hadn't had the sort of supremacy that Django and Flask have today.
Yeah, that's right.
So uh I knew Python was the language.
Um I'd used Ruby on Rails, and Django felt close-ish because other options were things like Plone and Zop and things like that.
Uh I I wanted to use the web because um I've been an ASP.net developer.
I'd done an awful lot of work um in addition to the Windows Forms work I've been doing at the bank.
Um so I I knew HTML and and uh you know how to write a website um uh in broad terms.
And what I found was that uh I I I just the documentation for Django has always been extraordinarily good.
Um a touchstone, I'd say, for for other projects to copy.
Um and so I just followed the tutorial.
Wrote what I can't even remember, it might even have been a blog.
Um I think it's was it polls back then, or it probably hasn't do you know Carlton?
I assume it hasn't changed.
It's been the same as long as I can remember, but
yeah, I I it it was some you know, something ABC.
Some CRU thing.
Yeah, yeah, ABC CRUD thing.
Um, and uh so that took about a week because I was whilst I was doing the tutorial, I was also reading around the the technology that I was using as well.
And um, so what I decided to do was uh create a a um a job website where people could post jobs and people could apply for them.
Um again, a simple crude thing as a kind of an academic exercise.
And I found that within about three weeks uh I was more productive using Django and Python as a beginner Python developer than I was as an ASP.net uh C sharp developer with you know six or seven years experience of doing that.
Um and this was a real revelation to me.
Um that's even with um the tooling.
Yeah.
Microsoft additionally provide good tooling and
oh oh uh do they?
Uh the number of times Visual Studio managed to rewrite my code to meet in it up, um, and then you know, uh you know, readability counts.
Um we know this with Python Easters, and then seeing sort of code spaghetti as as Visual Studio has munched your HTML.
Um uh I yes, it's a double-edged sword.
Um, if I'm honest with you, I'm quite old school and just use Vim.
Yeah, right.
Uh and uh and the tooling.
Um I'm healthyly cynical about it, um, but we use it when needed.
Um I I saw that one of the projects, you mentioned the job board, one of the projects you worked on was at the Guardian on their dating site, right?
So that's I mean the logistics of that are was was that because you knew you were gonna be working on that that you did the job board?
That's sort of pretty similar.
I mean, job board dating site, or no,
it's the best sorry, that's the best segue ever.
Jobs to dating.
It's remarkably similar, actually.
Makes sense to me, Carlton.
It's okay.
I mean, uh think about it.
You've got a person and you need a funnel of people who are approaching you for whatever reason to get a job or to go on a date.
And you sift through them and you either give them a job or you go on a date, and then so on and so forth.
But it rinse and repeat.
Um, no, uh, the the Guardian stuff came came after I'd I'd done quite a bit of Python programming.
I'd been a Python programmer four or five years, maybe when I did the Guardian.
It was an interesting place to work, I can tell you, because I was there when the Snowden revelations were happening.
And uh every morning they have a like a morning conference, and I got our um morning stand-up moved so that uh so that we could all go.
Um, and there you'd see sort of Rusbridger, the the uh the the the editor and all the other folks in the room discussing what the day's news was.
Anybody could attend, and it was just fascinating watching a newsroom.
And thinking about it, it was uh it was their morning stand-up, um, except that they were talking about Snowden and uh what was happening in US elections or you know the way Downing Street was dealing with such and such a thing.
So it was uh it was um it was a fascinating place to work.
And are they still Django Stack or something like that?
When I was there, uh the dating website was Django uh and it was backed by MongoDB.
Um the main website is a Java app though um which was built which is built in-house.
I think no, not Java, it's JVM, so Scala um is what they used.
Uh but it could have all changed by now.
Um I was there 2013, 2014, something like that.
Okay.
Well, and I know you're incredibly involved in Python and teaching realm, and I want to talk about that, but I'm also you have this perspective of you know, where do you see Django fitting into all that?
Because my sense was this is my my first PyCon, I know you've been to many, that maybe four or five years ago Django and the web was a bigger presence.
Whereas now, you know, I went to a talk that uh Jacob Kaplan Moss gave, and not that many people there.
Fantastic talk.
I mean, it was very much a secondary citizen, which you know, I'm in the Django world, so it was eye-opening to me.
I'm curious how you've you know seen that evolution of the web and you know, just Python and there's hardware and what you make of all that with your experience.
Because it's you know, I it's all new to me.
I was like, oh wow, maybe like where do they get their data for the web, you know, for all this stuff?
I was like, well, I don't know, somehow.
So I guess that's not that that's just that's that's more of a thought rather than a question.
I guess the question would be when were your first PyCons and how have you seen those develop over time?
Because it was a fantastic experience and it's a little bit different than a Django Con.
Yeah, so um my first my first PyCons were 2007.
Um I think I've I went to my first Django Con.
It was a Euro DjangoCon, that would have been 2010 ish, 2019.
That's before Carlton, right?
Yeah, no, but I I've I was in the um the closet for years.
I you know I've been using Django forever, but I never went to a Django event until like 2017, and then I was like, wow, why have I not been before?
This is
yeah, I I I think I was lucky because I experienced the community very early in my sort of Python um story.
Uh when I I remember EuroPython in 2010, which was held in the UK, Django was everywhere because I think 1.0 had just been released.
Um and uh yeah, uh Django this, Django that, Django the other.
Uh it was all over the place.
And this made me very happy because I was earning a living making Django stuff.
Um in terms of the evolution, and you you mentioned um, you know, Django seems to sort of be a second-class citizen.
I and also its relation to education.
I don't see that.
Um, I think this is just a natural sort of life um story, the journey of a piece of software, in that it starts, you know, um, as being kind of uh under the radar, and then all of a sudden it's uh it becomes the next shiny new thing, like MicroPython perhaps is, or CircuitPython uh currently is, and then things mature.
It's like the Gartner hype cycle, really.
Um, and I think Django uh as a project has uh been extraordinarily um, well, at least from the outside, uh from my perspective, well run and uh and steered so that you you have this solid stack that uh that folks um you know have no problem using.
It it's uh it's so good at its job, it's almost sort of uh boring.
Plumbing is kind of like the plumbing now.
Yeah, exactly.
I know I don't mean it's boring, you know, yawn boring.
I mean it's business as usual sort of stuff.
You know, I want to write a Python website.
Well, my first thought is okay, I'll use Django for that.
Um because uh and I understand what the steps are likely to be or what the stack might look like.
So it it's it's not an unexpected proposition, and um and this is in a sense a good thing because uh there are no surprises.
Um but to speak of Django and education, the sort of elephant in the room with that is uh is Django Girls and the work that Ola and Ola um have been doing with that, which uh is phenomenal.
Um I well, I it always gives me a huge Cheshire cat like grin to think of um to think of the stuff that they've done.
Uh but um I I think the genius that they have is they realize that people want to be able to write their own website because it's a kind of a hey mum, you see what I've built, then you can point your granny or your mum or your dad or your uncle or your son or your daughter to to this thing into this very simple blog so people get it.
And in in a day, you've you've um you've created something that you can feel proud of.
It it feels like I don't know, I and I've been a mentor on several Django Girls, um, but looking at the uh at the end result at the end of the day, people feel proud of their work.
And what's more important is that people can see how they might change their blog and customize it, and that's what you want, is that they've been given the foundation, they've got the skills now to start experimenting and they feel ownership over this code.
So um, so it's Django Girls Forever, that's what I say.
Yeah, yeah, no, entirely, entirely.
There's two, I just uh I did mentoring at Django Girls Barcelona, and yeah, kind of two moments that really stuck out.
What stuck out for me, stuck out, what's that?
Um stuck out for me.
One was um when they cracked open the shell, and uh, you know, they've created these models, and all of a sudden they're in the shell and they're using they're querying the ORM, and then all of a sudden they're like they're flying the ORM and you see the spark and they're like, ah, and it's like, yeah, you're driving it, and that was magic.
And then the second for my group was towards the end of the day when they started to push beyond, and they said, Oh, I could put a map in here, and you know, they've just gone on to Google and you know, got the snippet from Google and embedded in the HTML, and it's like, look, I put a map on my blog.
So that what what I really like.
I'm gonna step back and do a kind of a meta thing here, is it's not only that mentors like the um uh uh at Django Girls um see the sort of the joy of coding in the in the Django girls who turn up to learn.
But what I like to see is what you've just done, which is um seeing people who are usually professional coders who have been asked to to mentor at Django Girls, they everybody has their favorite story about that time when you well you just said I could put a map in here, I could do this thing.
Um, so it's it it speaks to me because I having been a teacher, I know what a rewarding experience that can be.
And I think that as software developers, as part of our career development, perhaps at some point we're always going to have to mentor somebody else, a junior programmer or a new hire that needs to understand how the system works and get up to speed or repair programming, and you need to develop the skills of being able to explain and listen, importantly, listen.
Um, and uh and listening to you just now was uh you know another one of those moments.
So um it's good.
Good that this happens.
Django Girls facilitates so much good stuff in lots of
yeah, more power to it.
So let's maybe here how's this for a segue?
So Mew, I want to ask about that because seamless.
So see, Carlton, we're learning something over time.
So this is awesome because one of the takeaways from anyone who's tried to use Python is it's can be challenging to install and everyone's on different computers.
And so this is not just web-based, but uh deliberately simplified, right?
So we'll link to the website.
And you you want to
basically it's it's not web-based, it's a native code editor.
Oh, oh, sorry.
Um don't worry.
Um although I have
I'm not afraid to be ignorant on the podcast.
No, no,
no, don't worry.
Um so uh it was written as uh part of the PSS contribution to microbit.
Um I wrote a browser-based Python editor for microbit.
Um and uh being a good engineer, I I hope, I I took it out and tried it out on teachers and students and developers and things.
And the feedback I got was whilst it's convenient to have a Python editor in a browser, actually, um because of the limitations of a browser being a sandbox and things, um, we can't connect to the REPL thro through USB serial, or you couldn't back then.
Um and you couldn't do this, that, and the other.
And so I sat down one Sunday afternoon thinking, you know, how hard can it be to write to write a simple code edit for users?
Yeah, you know, I I've got PyQutes, that's a mature platform.
There's QCintilla, so I could use that as a widget.
Uh we just need some you know, new load, save, run, type buttons.
That's all you need.
And uh and and mu was was born, and people started using it, much to my surprise.
And after a while, uh people started asking, well, could rather than just being a micro-bit editor, native editor, could you make it a generic Python editor?
And so uh the Raspberry Pi Foundation were very gracious and supported me uh in um a block of time where I was able to do the refactoring and turn it into a generic beginner's Python editor.
So it's uh it also has a debugger and um uh the the the REPL is in iPython, um REPL and so on and so forth.
Um, and so it's sort of grown from there.
Um, but what we did or what I did at that time is uh went around lots of schools to observe how teachers were using the Python stack, and they were using Idle, and Idle's great because um it's always going to be there.
Um but it's based on TK Inter, so it really looks like it's from 1997.
Um this is off-putting to you know uh um teenagers who might not be used to that uh sort of GUI widget set.
Um, and there are other sorts of uh how can I put it pedagogical problems with Idle.
Kids are forever losing the two windows behind each other.
Um and so uh you know, idle is an amazing tool, but you know, there are certain ways in which it could be improved, or it it it's not it needs UX love and things like that.
So I did all that stuff, and um and the next generation of Mu, the next version of Mu, sorry, was was created.
And the the the other interesting revelation was that I I got to to meet with uh with school network admins um who generally live in some dark room in the basement of a school, and even the teachers only hear of them via rumor.
But uh I managed to find several of them and entice them with a cup of tea to just have a chat with me about what their work entailed.
And essentially, uh and unsurprisingly, it was just make it as easy as you can for us to be able to install this thing in such a way that the students won't be able to take down my network.
Um so uh so Mu actually, if you use the package version of Mew, um the installer um for Windows and OS 10, um, comes with Python bundled in it.
So it doesn't use system Python if you have Python already.
Um, because a lot of schools, the the attitude of the network admins was, you know, I'm not letting children anywhere near Python on my shiny school network.
It's taking me years to make it like that.
And a kind of a classic aside here is uh I was at a school in Northampton recently where um the the the network admins, you know, Python was a was like a swear word for them because a student had worked out that that in the sys module you could automate the shutting down of the operating system, and so they'd written a little script that did the equivalent on Windows of shutdown minus H now, you know, hard shutdown.
So just close everything, switch it off.
He emailed it to a friend, and he double-clicked it, and his machine switched off.
And if you're 14 years old, this is hilarious.
So he switched his machine back on and then emailed it to everybody else in the year.
This is the second kit, not the kid who originated the script.
Um, and of course, uh what happens is that everybody in his year clicks this thing, and people were losing their work because they had Word open or they were on a website filling in a form or something like that.
Um I pointed out to the network admins that actually this kid should be congratulated because he's only automating something that you know you're allowed to do anyway.
You can click start and then shut down to close the machine down.
It's just he'd done what uh any programmer does, which is feel a bit lazy and automate something.
So it was a good life lesson.
But what I'm getting to is that network admins, um, they are small c conservative and very, very risk-averse because their job depends on it, really.
Um, and so putting a programming language that makes it easy for children to um do interesting things with computers, it's like their worst nightmare.
Um, so uh what we do uh with mu is uh Python's bundled with it, and so the kids can't actually they can only use Python via Mu, really.
So um, and it also means that the network admins, if they want to install Mu on a computing suite or several classrooms, uh they only have one thing to install.
They don't have to first install Python, then install the dependencies, and then install mu.
It's just a single package.
So um I might be laboring a point here, but this is so incredibly important for the folks who actually administer things in schools.
Um that
it's just this is something that Python more generally could learn from as well.
Oh yeah.
People come to it and it's like install Python.
Ah, okay, that's non it's still non-trivial.
And then you know
Yeah, packaging is is hard, and especially if you want to create a standalone Python app on the desktop.
Now I realize that that's not a typical Python app, but you know, I'd say maybe a typical Python app is, say, for example, a Django website or something like that, in which case you're accessing the Python assets through a web browser, um, you're interacting with the website.
But um, if you want to have a desktop app, um, you know, Russell Keith McGee's Beware uh is an astounding project, and I recommend uh everybody go listen to his keynote from PyCon 2019 this year.
But his um his keynote, yeah, you just mentioned it.
His keynote here uh exactly about this.
He's like, what happens when you know everybody hasn't got a laptop where you know we've got a tablet, and well, you know, is Python going to be available on that tablet?
Can I code in Python on that tablet?
And if I can't, am I gonna choose Python?
Yeah, yes.
Well, yeah, I was talking yesterday, somebody wanted a cross-platform mobile-friendly app, and essentially uh the simplest way to do it is to um shim a website within an app.
You know, you get various frameworks where they uh they use the browser uh as a way of delivering a mobile app.
And so you write JavaScript and HTML, and then it's packaged up for iOS and iPads and Android and things.
And uh, well, where's the Python story in that?
Um we're in danger of missing the whole mobile thing and um and packaging and embedding Python within your uh application assets so that it runs properly.
That's that's a non-trivial problem.
And I spend I have spent an inordinate amount of time feeling the pain of packaging new so um so that teachers and network admins don't have to uh you know uh that they get an easy story at the end of it.
And it would be so good if we could do the same sort of thing for um uh if there was a well, as they say in the center of Python, there should be one and one obvious way of doing it.
There needs to be a standard story that you know, oh I want to I want to I want to bundle Python, here's how you do it.
Yes, exactly.
A tool or a way of doing it that um that that's a no-brainer that that covers most you know most things apart from the difficult edge cases.
So you you've got sort of the 80 to 20 rule going on there as well.
So for most people it will work.
Um and run Russell is um is is making significant inroads into that.
His briefcase uh project, which is part of BWare, is something that Mu uses.
Um and uh it was just beautifully simple to to package things for for OS 10 using using Keith uh Russell Keith McGee's work.
And uh he's put a huge amount of effort into it.
So kudos to him.
He he deserves all the respect and um and celebration that he's getting at the moment.
Um and he needs help as well, financial support and uh ways of folks paying for the work uh that needs to be done to make this fundamental sort of infrastructure work.
Um, but now I'm just echoing his keynote, and he does it so much better.
So go and watch his keynote.
He does, he did, he sets a high bar.
Yeah, we'll we'll link to that talk.
I was able to be in the room for it.
Um well, so one of the takeaways I had from uh well, I actually I wanted to say so that the teaching tracks at these Python events, because um I know you were involved with setting up the first one at PyCon UK, right?
That's right, yeah.
Um and then uh it's one of the things I heard teachers say, again, this won't be new to you, is that they keep repeating the same content over and over again.
Yeah.
And I know you have what are your thoughts on that?
I don't want to
so we're going into code grades territory here, aren't we?
Yeah, I I'm staring at the code grade site, so I was sort of I wanted to get at that too.
Um I'm gonna use a friend of mine as a typical example, and um she's uh she's called Dawn Hewitson, and she is the lead tutor, the person who runs the course um at Edge Hill University in the UK uh that trains computing teachers.
And Ofsted, we have this thing called Ofsted in the UK.
So the Office for Standards in Education, and they are basically the school inspectors.
And Dawn's course is rated the highest in the whole of the UK for computing teacher education.
And Dawn made a fantastic point a few months ago when we were chatting, which was that we have so many beginner Python things.
Um, you know, make an LED blink, uh, say hello world, make a simple blog, that sort of stuff.
And yet, as professional software developers, um the sorts of learning that we do are perhaps based on an in-depth technical discussion on Stack Overflow or reading something on Read the Docs or uh auditing the source code and what have you.
And so this continuum of educational resources, uh, everything's on either side.
There's nothing kind of in the middle.
How do you get from one end to the other?
And this reminded me of the problem of how you train musicians.
You know, how do you get the five-year-old little girl scratching away on the violin and entertaining the local cats to uh become Nicola Benedetti, a sort of a concert uh violinist, virtuoso violinist.
Um you know, at some point she got a little bit better and then a little bit better, and then she was kind of average, and then she was good, and so on and so forth.
People have to go through this process.
You're not just born a violin virtuoso, you have to figure out where to put your fingers and how to hold the bow and things like that.
And so the way we do this in the UK, and it's a very successful system, it's been around for about 150 years.
And this also speaks to the fact that music education, I have 500 years of music education I can draw upon.
Whereas in programming education, I don't know, 20 years, we've only been programming, I don't know.
Yeah, and the violin hasn't changed.
It doesn't change every nine months.
Yeah, and there's been a there's been enough time in the world of music to have revolutions, counter-revolutions, and consolidations and different schools of thought and so on and so forth.
And that's not so much the case in in programming.
And so I I think being a music having been a music teacher, I thought, well, what could I borrow from the world of music and transpose um no pun intended, transpose into the world of technical education?
Um, and so this notion of music grades uh is is is is the first thing that that happened, although that it's a rich vein, and I have lots of ideas about how we could use techniques using music pedagogy to help in technical education, computing education.
Um but music grades work like this um grade one is easy enough that most people who practice semi-regularly will be able to take a grade one after only a few months.
Okay.
Um and what happens in a grade?
Well, what you're doing is you're practicing what a musician actually does.
You go in and you give a performance, and you have to give a performance that has three pieces in it, and then you're also asked to sight read music, which is something else that musicians have to learn to do.
And then you get some oral tests, so we sort of check out your listening ability, and you might have to sing back as well because musicians are always doing that sort of thing.
And finally, you might be asked to play some scales and arpeggios or an orchestral exort or something, because scales and arpeggios are like the Lego bricks building blocks of how you play and perform your instrument.
And so for grade one, you have three buckets containing, I don't know, about ten pieces each, and you choose one piece from each bucket so that you'll get a nice little recital out of it.
And those pieces are appropriate for grade one.
So grade one is very, very easy, okay?
And then by the time you've taken grade one, you've you've got a feather in your cap, you've had some feedback from the examiner who listened to you.
This examiner is a professional musician, they're probably an expert in your instrument as well, and you get a mark so you can see which aspects of your performances were good and which need work on, and that sort of stuff, and you get written feedback as well that tells you uh in an encouraging and a supportive way uh the sorts of things that you should perhaps think about, or well done in that first piece.
You really set the tempo and the mood really well.
I really enjoyed what you did at letter J, but think about the tuning at letter Z or something like that.
It's that sort of feedback.
Letter J, I like that, yeah.
Well, uh, these are rehearsal marks in music, um, so we know where uh we know where we are, so we can talk about a specific bar in a piece of music.
And so you take your grade one and then grade two comes into view.
It doesn't seem so impossible uh because you've acquired the skills for grade one.
You've uh as it were, you've passed.
No one could take away from you the fact that you are now a grade one pianist or trombonist or you know, flute player or something.
So you take your grade two and so on and so forth, rinse and repeat, until you get to grade eight, and grade eight is kind of I don't know, like black belt at karate uh in music.
Um and
one of my lasting memories of six form is uh all my musical friends stressing to death about their grade eight, uh you know, whatever.
And uh
yeah, well, if you get to grade eight, um so to audition for music conservatoire, you need to be grade eight.
Um, the important thing is that in music education and in the wider musical world, folks will say, Oh, I'm grade six at such and such a thing, and people kind of know what that level is.
Um, and so if you're joining a like a youth orchestra, they might say you need to be grade five or above.
Um, and so it's also a signal to those people who might not be confident, but they are grade six, so they're one grade better than the minimum requirements that perhaps maybe I will audition for it.
Um uh so it's also important because it's a trajectory as well.
Um, you can see where you're going to, you can see um when you go to music school on a Saturday morning and you're only grade three, and you see the grade eight six form as your buddies from school um doing amazing things, you you you can see what you're what you're aiming for, um, and what sort of skills and what sort of music you're playing and and how cool they sound when they do that electric guitar riff or they're playing in their jazz combo or the string quartet plays this beautiful piece of music.
And so I thought, well, if we were to do that with programming, what would that look like?
And this is where co-creates um comes in.
And like music, it's it's eight grades.
Um, what I wanted to do uh so far uh in its early days, uh I wanted to test whether the idea would work.
So before Christmas, I um helped uh a cohort, um uh a handful of folks learn grade one Python, um, which is very basic Python.
Um what they were asked to do was prepare a project of their own uh devising so they had ownership of this code, it was something that they were passionate about, or it was a problem that they wanted to solve, or in one case it was a game that they wanted to play.
Um, and they needed to show some core concepts that matched to the level of attainment for grade one.
Okay, so we need to see that you understand what loops are, or that you can call functions, or you understand how assignment works.
These are very basic things, but with that sort of stuff you can make very simple projects, and then uh I asked a friend of mine, Tim Golden, who's a um core developer, Python core developer, uh, to play the part of an examiner.
And these rather nervous um beginner programmers came along and they did two things.
They presented their project to Tim one-to-one, uh, and it was like a code review where you stand up and you say, This is my piece, uh, this is my um this is my project, this is uh this is why I wrote it, this is how it works, um, let me show you the code.
And Tim would ask them questions and make sure that they were uh sort of ticking all the boxes for the requirements.
And then the second thing that they did is they did a paired programming task where they were given a short fragment of code and it had two errors in it for grade one: a syntax error and a runtime error.
Um and they had to just sit there and debug it together so they could ask questions of each other, but it allowed Tim to get a feel of uh how this person approached code, watch them make mistakes, see what sorts of questions they asked, see how they were actually getting into the code and interpreting and reasoning about it.
Um, and then at the end he filled in a Google form and uh they would give marks and uh and that and and that was uh an entirely positive experience for them.
They would arrive very nervous, they would go in and do their stuff, they would come out and sort of wipe their forehead and go, Phew, I'm pleased that's over.
And I say, Well, how did it go?
And they said, Oh, I forgot about this, or I didn't do that.
You know, you go through all the things that you wish you'd said, um, and then they'd go, but actually the demo went really well.
And he laughed when my game started, and he really liked the way that I used the loop within the loops to do the thing.
So actually it wasn't that bad.
Um, and when we uh put together the the feedback for the people who took the grades so that they could see um how their project had gone and how their pair programming task had gone, um, the feedback we got from that was was universally good because they really liked the fact that somebody was telling them where they were making mistakes, giving them ideas about what they should improve.
It allowed them to see where their weaknesses were and things like that.
And so all of them said, Well, when can I do my next code grade?
And so since the new year, uh you know, grade one Python before Christmas was me making it up as I went along.
Uh now I've been working on eight grades for Python.
And I've
got eight.
Go on, sorry.
There are eight.
There are eight.
There will be there are there will yeah.
There are eight.
I'm I I would say I'm about 60% through this process of of making the syllabus for it.
Um so there are eight grades.
Um when you write a syllabus um uh uh or educational resources, uh you don't just make it up as you go along.
Um you have to make sure that things line up in the right way.
Um, and you also need to make sure that you ri revisit things as well.
Um so uh so I I've been sort of going back to my geeking out as a teacher, putting on my teacher hat and uh thinking about when I was writing a school curriculum for a music department and thinking about and going through that sort of a process, analyzing what sort of knowledge, what sort of skills, what sorts of social interactions, because this is important to software developers, should the people taking grades encounter, and when should that happen on their story, and what needs to be in place before they can get to
that place.
So the way I did it was I started with grade one.
Um, what would the first step look like so that it was appealing to people?
And then I did grade eight, you know, what's the end point?
And grade eight, if you're grade eight, you are a competent junior developer, you understand GitHub, you understand how to merge code, you uh you you understand object orientation, you could write unit tests, you can write a test suite, you know what continuous integration is, you can take part in the code review, uh, you have written a website, you have done you know all this sort of stuff.
So somebody who's turning up to a an open source project or their first job in code and they have the skills necessary to build on those.
Um so that's
what I love about this idea is um the point you made earlier about having the confidence because yeah, they're only asking for grade five, and I'm grade six, and so many people I see uh are unwilling to bet on their own ability, and they're you know, and that's natural, and it's you know, we the imposter syndrome is a real thing, but yeah, you know, to find it to get to give be given an objective measure that helps you overcome that is just phenomenal, fantastic.
It's um well, thank you.
Uh it's uh imposter syndrome, as you say.
I mean, I have that.
Um, you know, I'll be honest, I'm a classically trained musician.
Um and whenever I'm stood up, I'm forever thinking, just when are they gonna find out?
You know, I might be really good at playing the tuber, but um, you know, this programming stuff is stuff I've picked up as I've gone along, um, really to be honest with you.
Um I think musicians make the best coders though.
I mean, here in here in Boston, there's any number of, you know, there's a Berkeley College of Music, um, you know, folks who've you know, who self-taught and just they have, as you said, they have that structure, they had the idea of dedicated practice, yeah, um, and just that progression, right?
Because when I'm yeah, no one can even say what level you're at.
I mean, at at PyCon, I met a number of people who'd read my book or were learning Django, and they just have this sense of they just don't know where to put themselves.
And so, yeah, that leads imposter syndrome when it looks like an ocean of knowledge and there's no um well that yeah, it's such a brilliant idea.
Yeah, well, the I I had a conversation yesterday where I was talking to a a friend who is an exceptionally talented software developer, she's a very talented software developer, and she said to me, she confided in me, she said, you know what?
Um I'm not sure I understand this or that about Python, but people think I do.
Um, and it's like, oh, imposter syndrome, it's terrible, terrible, terrible.
Uh, we were sprinting on something, and at this point, um, she's involved in this particular project.
Some random person came up as they do in sprints and said, Hey, uh, you know, I've got this problem.
There's a thing that does a thing, but it doesn't do the thing which I was expecting to.
And and my friend said, Ah, yeah, that's easy.
What you want to do is blah, blah, blah, blah, blah, blah.
And beautifully and succinctly gave the technical support required for this person to be able to sprint.
And I said to my friend, you know, you know what?
How could you possibly say, you know, you're worried about you know your technical competence when not 10 seconds later you beautifully answer this email in a sub this um this person's query in the sprint in a supportive um and technical way.
Um and so the code grades are uh it's like an initiation.
You've you've got your grade five.
No one can take that away from you.
And by taking grade five, you've shown you've done A, B, C, and D.
Um, and so uh hopefully it will be a confidence-building thing because, like music, you need to have a lot of confidence in coding as well.
Um, it can be quite a frightening proposition.
Yeah, it can.
I have to ask one question about it.
In in the music grades, there's this um great barrier, this great um milestone, which is the grade five theory test.
So, is there an equivalent of the grade five theory test where you have to learn about binary trees or something silly like that?
No.
Reversal link list, yeah.
Yeah, yeah, exactly.
On a wayboard, only on a wayboard, not in a computer.
Uh no.
So the the other important aspect of this is that uh the the syllabus curriculum, whatever you want to call it, is written.
It's not just me who's writing, although I'm doing most of the legwork, I'm getting help.
But it is professional working, jobbing Python programmers who are contributing to what they believe uh should be in code grades.
Right, good.
Rather than a professor of computer science doing, you know, which research or, you know, um, you know, uh, I can't think of something there.
Um you just did.
You just did.
It was a telcore recursion or something like that.
You know, you're you you've got to learn about this stuff, and you do have to learn about this stuff.
But this is more practical focused.
It's about giving people the nuts and bolts and skills and the social morals and conventions so that they can engage uh initially with the Python community um and and become um become part of it and feel that they have the technical chops to be able to do the things that they want to do that they're interested in doing um themselves.
It's a kind of an emancipation exercise.
Yeah, I love that roadmap.
I mean, I often think of that when I'm teaching of you know, for web, right?
Because there's so much involved with web, and you know, I think you mentioned you'd already sort of learned some of the basics of web stuff.
But you know, if some people as people do come to me and say, I don't know anything, I want to build a website, you know, the what is that progression, what is that hierarchy?
You know, if I can point to things, and also as a teacher, like it's so much more helpful to agree upon the concepts that we're gonna cover.
I love that idea because when people come in and volunteer, it's like, yeah, they're they're gonna you know hop into Vim or something, but if it's like nope, we're talking about this discrete level of concepts, yeah.
That really helps, yeah, helps volunteers.
That's a really great point because in the UK, and I'm imagining all over the world, um, computing teachers often don't have a computing background, they are business studies teachers who have been co-opted into teaching computing, and they don't know anything about perhaps some of the more technical aspects of that subject.
Because obviously, computing isn't just programming, it's that there's a whole bunch of other stuff that kids do.
But in the UK, there's a a large part of it though is learning to code.
And you have a bunch of teachers who are like, well, they're not professional coders, they they they've not seen what it is to be a code or experienced writing a piece of code and releasing it and all the life cycle of of what code is.
And so um, so being able to share in a helpful and constructive way what it is that software developers, what coders expect coders do, is useful for teachers because then they can start to write resources that that speak to that, that that meet these requirements.
Um, and it also shows teachers, well, what sort of things, what sort of skills do I need to become a computing teacher as well?
Um Yeah.
Yeah, I I found that uh again, picking up coding uh well, I think even later in life than than you.
I mean, the the hardest thing was the lack of good educational resources and a sense of progress.
It's all just who knows.
And and I think maybe combined with the fact that I I mean I also play musical instruments.
My daughter's six, so I'm hearing her scratch out these scales.
Um you know, there's in a way, as a as programmers, we sort of write the script and then we don't practice the scales.
Yeah.
Right?
Like as a musician, you know, you sp a professional musician spends hours every day, and you kind of you're like, oh, I do know how to play this, like it makes it better.
But in programming, at least it's I'm tempted to I've completely forgot something I learned because I just wrote a script and now I move on.
And yeah, so that sort of yields the imposter syndrome because I go, Well, I I haven't done that thing in a year.
Yeah.
Right?
Like I, you know, that's sort of I think expert level is you you have a concept and you've done it once, but you know, like, well, I gotta go look it up.
You know, I don't I can't sort this all in my head.
Whereas you know, whereas a musician, you know, right, it's uh whatever, you know, it's half the day is is the fundamentals.
I a violinist, anyways.
My I I know some of those professionals, you know, they're just doing, you know, so I sort of wonder what is that you know, I know there's like code cottas and stuff, but I
I think that's a perhaps the difference between music and coding, though, is that uh as a when I was playing the tuba professionally, I kind of knew what sort of things I would be doing and the scales and you know all that sort of stuff, and the breathing and the posture and the getting yourself into the right mental state as well.
Music is an incredibly intense experience when when you do it properly, um uh at a high level.
Um, but for the nature of our job in programming is that we are going to be ignorant of most of our subject area.
You know, I I know Python relatively well, but not as well as many other people, but I don't know Go, I don't know um, you know, Rust, I don't know C or anything like that.
Um I don't have a although I have an MSc in computing, that was um uh that wasn't uh an amazingly technical degree, so I don't have like a computer science background, I don't know about the academic aspects of this.
Um and like you say, there's kind of a half-life of knowledge, you know.
I I learn about this thing, and then find I met somebody who is the chair of the XMPP foundation, you know, Jabba, that sort of stuff, um, at PyCon a couple of days ago.
And I said to him, um, oh, we used uh XMPP as a protocol for some federated system that I'd built in 2012 or something in a startup that I was working for.
He went, Oh, right, oh excellent.
So did you use this, this, this, or this?
And I was like, well, I have no idea.
I can't remember.
I remember XMP was really helpful in this particular problem.
But um, so it being ignorant is part of our job.
Um, and knowing knowing that you're ignorant is an important aspect of that.
I mean, Socrates said, you know, why is this that they that know they know nothing?
Um I think that holds very well for programmers.
Um one one good test of a program is how quick they can get the docs open.
Yes, yes, exactly, exactly, exactly.
Um, and I think as programmers mature, I I know, and I'm speaking for myself only here, is that I've done enough different things that I know you could potentially do a thing, and I once did a thing like that, and so I have in the back of my mind the right words or concepts to Google, or or where the documentation might be, or the name of the person who was maintaining that library so that I might be able to drop them an email because we once had a beer at PyCon three years ago, that sort
of thing.
Um, but it's certainly not, you know, I have now retained the specification for XMPP um from 2012.
Um, that's certainly not the case.
Um and the distance to be able to do that.
Strategies that might work, you know.
You sort of, as time goes by, you kind of learn to to start in the right way.
It's not that you've got a solution, but you kind of think, well, that kind of shape is gonna be about right here, and this kind of shape will be about right there, and a little bit while later it fits together, and that happens, and that's nice.
Yeah, but there's also scar tissue.
I mean, that's the I was talking to uh yeah, some educators, and they were telling me the things they wanted to build, you know, they didn't know web, but they knew Python, things they wanted to build, and I'm just sitting there thinking, oh my god, you know, they're like a third-party API call, this enterprise system, and I'm gonna have 12 of those.
And you know, it's it was great for me.
I was like, I love your optimism and your ignorance, right?
Because it may have gotten better, but I'm just seeing all the problems.
And there is a little bit of a uh you know, EOR aspect to programming where you're just thinking of problems.
Yeah.
So there I think that you know, that's Gar tissue.
I love having those conversations with people who don't know anything because they you know they open my mind and they're so excited.
And you know, I usually in those cases I can sort of say, well, maybe let's let's you know let's uh narrow it down a little bit, but just that like anything's possible, right?
Instead of well, as we do go, oh well I felt you know I wasted two weeks fiddling with that thing one time and I don't want to go anywhere near that again.
Yeah, I I uh Damien, MicroPython Damien, um on several occasions on the microbit project, uh I'd say, you know, would the because I'm not an embedded programmer, you know, would it be would it be possible to do this?
And he'd say with a sort of a wistful smile, you know, Nicholas, anything's possible with a computer.
It's just whether you've got enough money and time, um, is the answer.
Uh, but the what you've just spoken of again speaks to education here, because as software developers, we are constantly learning and forgetting and um reconciling and um and and retrieving and um synthesizing knowledge and skills and things.
Um it's just part of the job.
We're always learning, there's always a new API, there's always a new technology, there's always a new cool thing.
Um, and we're also, and and this speaks to your point just now, we're we're kind of learning how to learn.
And that's I think what I'm trying to do with code grades is give people a safe place where they're learning the right sorts of learning skills so that they can become effective by the time they're grade eight and understand I'm new to a project, I'm gonna read the docs, I know where to look, I know how to ask for help, that sort of stuff.
Yeah, and the ability to pick up a new language or a new library or you know the how to get through the README, how to get it installed, those kind of things that you pick up, and you're like, I can get started with this new technology because I've done it lots of times.
Not with this one, but with similar.
So if people are interested in uh in Mu uh also link to the madewith.mew website as well.
So that's a blog where we we put all the goofy projects that people make with Mew or things that um that folks have done with Mew.
Um I would say uh to developers, if you have an opportunity to volunteer in a school or just go in for an hour to tell people what you do, or you you have kids and um uh and the teachers asking for help, go and and volunteer if you can, because it's an extraordinarily um rewarding experience to work with with beginner coders.
Uh like you say, there's the there's the perhaps naive optimism, um, but also there's the energy as well.
And sometimes if you're a darkly cynical Eeyore, I like that, I'll use that again.
Then uh then it kind it's a yeah, yeah, but it it's a it counterbalances things.
It's like Aristotle, you know, when he's talking about you to be brave means to be a little bit foolhardy, but not too foolhardy, and careful but not coward, coward-like.
You know, you you've got to kind of try and find the the the mean, as it were, in this.
And so you do want to be naively optimistic in some sense, but at the same time, that needs to be tempered with a sense of mm-hmm, and how long's that gonna take you then?
You know, uh so uh you know, and you learn that as you as you go along.
And working with other people, especially beginner programmers, it's a great way to kind of bring those sorts of feelings to the fore.
Um, and finally, it's an unambiguously good thing to do.
Yeah, well, and teaching is I mean, in some ways too, I see this with you know, I get you sort of get used to doing certain things, but like having as a parent having kids, you know, my daughters will make brushing teeth so much more interesting and creative and challenging than I thought it could be.
Yes, you know, that's what and so it just makes it interesting, right?
Instead of me just you know zoning out, it's like, oh, I never thought about it that way.
Yeah, exactly, exactly.
The capacity of uh of creativity um when people see an opportunity um is is wonderful.
Well, thank you so much for coming on.
Well link to all these things we've mentioned.
Um and if if people want to follow up to help, is there what's the best way for them to get in touch with you?
Okay, so if they have questions about code grades, um uh there's a form that they can fill in, and uh, when I'm ready with more information, I will just ping people, or they can reach out to me on Twitter.
Uh for Mew, we have uh GitHub, um code with dot mu is the um user facing website, but mu.readthedocs uh is if you're a developer, is where is where you can go if you want to get involved and help there.
Um and I think that's it.
Yeah.
Super great.
All right, well, thanks so much for being on.
Thank you very much.
Thanks for having me.