 Erיתwch. Mae ydy'r Solwysion Yn The Mi A today, I'm going to be talking about a project that I started when I was 12. I'm going to talk about problem a then talk about my solution to this problem. So, can find me in the various links on Twitter and the Internet if you really want to go that way. And I won some awards that you don't really need to know about them. So, let's do a show of hands. Who's heard of Scratch before? Okay, so most people in the room. So Scratch is a drag-and-drop programming language, if you've never heard of it before. And it is introduced to year-three peoples in England, so that's centre-eight-year-olds. And it is dependent on reading skills of children to kind of get used to how Scratch works. So Scratch, you can do a range of different things, so you can build games, you can write stories, all sorts of things. And I actually gathered a survey on Twitter the other week to see when Scratch is started. So Scratch is introduced at a very young age. So Scratch has a version called Scratch Junior, and that is being introduced to four-year-olds. So in England, the basics is being introduced to four-year-olds. And then when they get to seven and eight, they learn how to programme in a bit more of an advanced way than Scratch Junior. So when do we actually teach Python? So everyone in this room knows what Python is, or I'll be quite worried why you're actually here. So Python is introduced to year-eight peoples in England, and this is 12 to 13-year-olds. By this time, they've used Scratch for around five years, and I've found that they have started to lose interest. So this is coming from my perspective of being in school. This isn't kind of a generalising. So what I've seen is when we start to do Python, it's kind of year-eight in my school. So they've done Scratch for about five years, and we're actually told that there's no more to programming than Scratch until year-eight. So people lose interest, they don't really want to do it, and then when they launch with Python, they've not actually been prepared how to do it. So Python is introduced and people don't really want to learn it, they don't really want to do programming, and I see this as a problem because of a few things. So why don't we introduce Python earlier is probably what you're thinking, and then you won't lose interest. So there are three main reasons why this is. So there are a lack of typing skills. So you may think, oh, when you get to year-eight, then you're really good at typing, you can type 10,000 lines of code in two minutes. That is actually not the case. Children have a lack of typing skills, and this can be for a number of reasons. So when the age of tablet devices and touch screens, and I've run multiple workshops around the world, and I've actually been asked numerous times what a keyboard and mouse is. So when the age of where kids don't actually know what the basic parts of a computer is, so they have the lack of typing skills and they find it hard because obviously Python is a text-based programming language where a scratch is drag-and-drop, and you don't really have to do much typing. Teacher training is lacking, so I'll go on to this in a minute. But in the UK, a new computing curriculum has been launched, and teacher training was actually lacking at this point. The government said, oh, let's introduce computer science for everyone, and then they forgot to actually train the teachers, which is probably quite standard for the UK government, but we'll say that for another talk. So teacher training wasn't there. Before computer science encoding was introduced, they did something called IT. So IT was your standard Word, PowerPoint publisher, all that sort of stuff, and the teachers were only trained in that. In one year, they kind of got landed with computer science teaching scratch in Python, and there was no actual support from the government and no money for training. So that is a problem too. And this is a common one. Python is too scary for younger kids at a younger age. So how can we actually make this easier? So I have developed a solution. So how can we actually solve this? So we need a tool that provides a scratch-like interface that can help students get into Python with ease, something that requires no training and complex typing skills. This seems like the obvious thing to do, and when I actually developed my solution to this problem, people were like, oh, why has no one done this before? And people have done it before, but no one has actually success with it, so I tried to develop something. So introducing, this is a big reveal, drum roll. So this is the scratch-like interface for Python. So you may be thinking, oh, this is really rubbish. This is kind of teaching kids that Python is just one of those drag-and-drop programme languages that lose interest really quickly. No one will want to do it. That is not actually the case. So the way that other programmes have done it before is they've had drag-and-drop Python, but they've actually missed out a key part which is putting the Python code on the blocks. So you can see instead of scratch, so it looks like scratch, but instead of scratch you have the actual Python code on the blocks. So as you're dragging and dropping these colourful things and making these programmes, you might not know it, but you're actually learning Python at the same time. So it's getting people used to indentation with the different blocks and the different orders and how to type it out. So once you've done Azure Blocks or a year or so, you'll actually be used to how things work and you'll know your way around kind of Python. So it's an easy way to learn the Python 3 syntax. So like I said, you have the Python code on the blocks and you also way it's got that block loop button at the top. If you click that, you can actually go into a Python text editor. So once you've dragged and dropped your code into the interface, you will actually not lose your Python programmes. So you can develop it in blocks and then run it in idle or something, whatever you'd like. It's an educational tool for younger children. So like I said, it's a nice colourful interface and it's familiar to scratch. I ran a workshop in France with about 20 non-English-speaking kids and they actually did better than English-speaking kids because they'd done scratch in the school and they could code in Python by the end of the workshop. So that was quite nice to see that the kind of philosophy of the programme works. So it's for younger children to kind of get into text-based programming but in a way that's not really scary by having to type and make syntax errors and all that sort of stuff. It's also a platform for educators, so as well as providing tools for children. There's also lesson plans and stuff like that. So it's mainly for educators as well. So I've run teacher trainings and it's being used in schools across the world. So it's kind of proving to be a success. So why does this actually exist? So as I said earlier in the talk, a new computing curriculum was introduced in 2014 and this is a survey by my kind of future which has kind of changed its name now, but it was by them. And it was introduced in 2014. So this brought programming with Scratch Junior, Scratch, Python and Greenfoot, which is a JavaScript platform. So the problem with the new computing curriculum is this. So when the new computing curriculum was launched, people thought, oh, this isn't going to be a problem. Everyone's going to know what they're doing. But actually 74% of teachers in the UK had inadequate training at this time. So as a community, everyone had to come together. So people like Raspberry Pi, which I'll talk about in a minute, came together and kind of solved the problem of lack of teacher training. So the goal with edgybox is that you don't actually need to be trained in all of this because there's resources and stuff online that can help you get started. That was kind of a main key when developing the project. So how is it helping others? So like I've said in the past, it displays the Python code on the blocks. When you're dragging and dropping, you might not know that you're coding in Python, but you are. So you drag and drop the blocks, snap them together as would you in scratch, and then you build up your program, and it's nice and simple. So it kind of brings down that barrier of having to type it out, but it's also speeding up the way you develop Python as well. As well as displaying the Python code on the blocks, you've also got the option to download the Python file. So you can do whatever you would normally do as if you would type it. So you can build the singing blocks and say, look, mum, I've coded all this and not actually done it. So, yeah. And you can view the pure Python code with the click of a button. So all you need to do is click one button and it will automatically give you a text editor. So it's kind of showing what you would have to do to type it. And you can also, yeah, you can develop your code further once you get more kind of advanced with it. One question that people ask is, can you type stuff in the Python view and then it translates into blocks? That is not the case because Google Blockly have actually restricted that feature, unfortunately. So what does EduBlocks work on? So it doesn't work on PC yet. Well, it does and it doesn't. I'll come on to that. It works on the Raspberry Pi, which is the first thing we'll look at. So it works on the Raspberry Pi and the BBC Mic bit, which you may have heard of if you're in the UK. And you can access that all on a nice launcher on the website. So let's talk about the Raspberry Pi. So has anyone heard of the Raspberry Pi before? Most people. So this is the Raspberry Pi. This is the latest Raspberry Pi. And it's a credit card size computer. So you can see it's very small. And all you have to do is plug it into a keyboard and mouse and you have your own computer, an SD card, of course. And it was developed to promote basic computer science in schools and help computing in developing countries. So the Raspberry Pi is only $35. So it's very cheap and accessible. So it was made for computer science and third world countries who don't really have access to large pots of money to kind of get access to devices in schools to teach computer science. So the problem in schools at the minute is a lack of funding. You might see on the news that schools don't actually have funding to teach certain subjects. So the idea of the Raspberry Pi is to make a cheap device that you can actually do computer science on. It's capable of doing everything that a desktop computer would normally do. So as well as using it as an educational device if you wanted to get a Raspberry Pi and do normal day tasks on there, you can as well. So Edgebox for Raspberry Pi. So let's have a look at the things that you can do. So you can do basic Python programming. So like your wild true loops in Hello World and stuff like that. You can program with Minecraft, which is every kid's favourite thing to do. As soon as you go into a workshop and say, what do you want to do? And there's instantly like Minecraft. So this is providing a fun way to interact with Minecraft. So making it do things that you wouldn't normally do in Minecraft if you didn't program it. And Edgebox provides an easy interface to use the Minecraft Python API. You can do physical computing with GPIO zero. Ben is at the back if you want to know more about that. So that is an easy to use Python GPIO interface in which you can use LEDs and buttons to make cool projects. It's Python 3 to its heart. It's 2018, so it's not Python 2. And I don't plan on making a Python 2 version if anyone really wants it. So yeah, it's all Python 3, and so there's nothing else. There's no Java and stuff. So let's have a look at the features that the Raspberry Pi version can do. So you have basic Python, GPIO zero, Minecraft, Sonic Pi. So Sonic Pi is making music with code, but there's a Python interface for Sonic Pi. So has anyone heard of Sonic Pi before? Yeah, so quite a few people. You have the explorer hat, which is to build robots. So that's another cool thing, so you can put your Raspberry Pi with edge blocks on and make your own robot. The send set, so there's two of these on the International Space Station, and that was developed by Raspberry Pi to kind of make competitions for schools so that they can run their Python code in space, which is kind of cool. You have the standard requests library, so you can request websites and stuff, and you have BTO, which you can actually use the microbit in conjunction with the Raspberry Pi version. But let's have a look at a demo, so this isn't just some photoshopped image that you can... So this is the edge of blocks of Raspberry Pi version, so you can see the dragon and dropping of the blocks. If you've seen Scratch before, you can see it's very similar, and you just drag and drop the blocks of Python code underneath one another. That's a print statement. So you can see that kids won't have been able to type it that quick, but they're learning Python at the same time, and they can run it, and you have your Python program running that easily. So it's kind of lowering the barrier to entry to Python. So at the next demo, this is a Raspberry Pi add-on board called the blinked. So the cool thing about the Raspberry Pi is it has 40 GPIO pins, and different companies have developed add-ons which you can just slot onto the Raspberry Pi, and you can do cool things. So this is just a simple flashy light add-on, and it goes to the Python view, so there's the Python view there, and then you run it, and you can see that the light's turned on, but the camera's not very good, so you can't really see it. Minecraft, so let's play the video for this yet. So this is Minecraft, and you can see it follows the same process of dragging and dropping the blocks. So this will import the Minecraft library, and then post something to the chat. Now, you might be able to see it if you've got good eyesight. It'll pop up in the corner. So this is just a simple Hello World demo in Minecraft. So you can see it will connect to the Minecraft server, and then post something to the chat. So it's basically simple things that you can do with Python, but kind of providing that simple interface to do them. So let's talk about the BBC Mic bit. So the BBC Mic bit is another pocket-sized computer, and it has all sorts of different things like built-in Bluetooth, and the really cool thing about the Mic bit is it was given free to every 11 to 12-year-olds in 2016, I think it was. So year seven kids got one of these free via school. So let's have a look at the features. So you have a 5x5 display, so you can scroll messages and make games. You have two buttons, a compass and an accelerometer, so you can shake it and it'll do stuff, and Bluetooth as well, which is really cool. So let's have a look at what the Mic bit does. So you can control the onboard feature of the Mic bit, so down the side you've got all the different commands boxes where you can click on them and you'll see the different Python commands for the Mic bit. And it's all using MicroPython, so if you've never heard of MicroPython, it's a small version of Python for microcontrollers. You can build wearable projects, so the really cool thing about the Mic bit is it has these edge connector ports at the bottom, and you can actually sew into these and build your own wearable badge or something. You can again do physical computing with the edge connector, so just like the Raspberry Pi, you can plug in LEDs, buttons, and all sorts of different things, and it is MicroPython at the heart. So everything's running on MicroPython, and you can actually run this locally on your computer, or you can go to the web address, which is microbit.edgebox.org. So more demos because we all love demos. So this demo is a scrolling name badge, so it works exactly the same, but you're just running this on your computer. So this will scroll a message on the screen, and then sleep for... So it works in milliseconds instead of seconds, and you don't need a time library, in case you're wondering if I'm going to make a mistake. So it has the same Python view as Edgebox to the Raspberry Pi does, but instead you actually download the code and upload it to the Mic bit, and this works just like a flash drive would. So it flashes onto the Mic bit. This takes a short while, and then you should see a scrolling name badge. So there we go. It's nice and simple to use, and it's really effective as well. So this is kind of like a cheeky self-promotion, but I also am involved with the Mic Bit magazine, and there's lots of Edgebox tutorials and stuff if you want to get started in there. So let's take a look at where Edgebox is being used. So if you're wondering if I'm just blabbering on in like two friends using this, that's not the case. This was a Saturday afternoon project, because I was bored. So yeah, it's kind of gone a bit immense now. So it's being used in 90 countries, in schools, homes, and maker spaces, and all sorts of different things. So we're conquering the world with easy-to-use Python. A really cool thing about Edgebox is it has really good documentation. So if you want to get started, you just pick up a free resource sheet. So I didn't mention that everything is free with Edgebox, there's no catches with it. So you just download one of the resource sheets, it guides you through a project, and you're ready to go. So that's really cool. All sorts of different people contribute resource sheets. So there's lots of community projects out there as well, as I said, in the magazine stuff. So that's free for everyone to download. It's just PDFs on there. Lesson plans. I'm hoping to get a few more of these done. So these are written in conjunction with teachers. This one in particular was actually written by a trainee teacher. And she used this to pass her kind of like degree, not with degree, but to get into like the course. So it shows that Edgebox has potential there. So she wrote a lesson plan, and that's been used in schools as well. So I hope to get more of them for teachers to just pick up and you're ready to teach a lesson. It's been used in schools worldwide. So as well as schools that are also maker spaces and teacher CPDs. So I actually go out and train teachers, which is like a scare for some teachers, having it the reverse way round to what they'd normally be used to. But yeah, so it's being used across the world. So it's really showing its potential in the different things there. We have a little video from a person who runs a co-club. So hopefully the sound works. Josh asked me to talk about Edgebox to you and explain my experience of using it with co-clubs and without reach. And what I do as part of working with Pomeroni is I go into schools and I try and get children into learning STEM, learning tech and learning how to code. And one of the main problems I find as a former special educational needs teacher is that children don't necessarily grasp the syntax of coding. And all their scratch is useful and some of them have picked it up. A lot of the concepts are very abstract, whereas with Edgebox they're very, very clear as to what they mean. I find that Edgebox is great for Sonic Pi. It's great for Minecraft, which obviously draws children in because all children love Minecraft. It takes out the pain of GPIO 0 which is a great way of controlling things using your Raspberry Pi. But with Edgebox it's completely painless. Also, I work for Pomeroni so I'm kind of biased because there are so many libraries for Pomeroni add-ons also within Edgebox which is great. You're not just left to fend for yourself either. There's a whole learning portal so Josh has actually created tutorials which guide you through all these new concepts and all these new things. I described it as a work of chuffing genius and I'm not joking. Josh knows he's tested it in the field. I've seen him deliver excellent coding workshops to his peers and to people way more experienced than him. And he knows what it's like to be frustrated to have to wait for all your typing to come true, as it were. By making Edgebox he's made it fundamentally clear, fundamentally easy and anybody can pick it up. I would recommend it to anybody. Hello. That was a quick kind of use case for Edgebox there. Let's talk about what's next and where I would like to head in the future. A next step for Edgebox is to bring it to more platforms. The next platform that it's going to be calling to is the Aid of Fruit Circuit Playground Express which I'm sure you've heard of before. Aid of Fruit Circuit Python which is a fork of MicroPython that's coming to Edgebox next. Another cool thing which I will hope to do a live demo of, although it hates doing live demos, is this little board here. This is the ESP32 and it's running Edgebox with a little display there and a NeoPixel ring so it's crashed. I hope to show you how this works in a minute. The other next step is to get more learning resources which I will talk about on the next slide. I think it is. Edgebox is a completely free and open source project. It's on GitHub and I urge you to kind of contribute to the project and stuff. You can fork it, submit a pull request. Even if it's just a typing mistake on one of the documentation sheets, please do contribute because anything that you can do really helps with the project and propels it forward. You can also submit blocks so I'm working on a feature where you can build your own block libraries so if you had a library that you really wanted added into Edgebox I'm going to create a guide and an easy way to add your own libraries because I'm in desperate need of that. Have a look at the GitHub see where you can help out. All help is grateful. Patreon. Running an open source project is of course not free if you do it yourself. You have all sorts of different things that need to be put into it. Patreon is my way of getting people to help out with Edgebox. I'm going into year 10 next year which is GCSEs so it's an important time for me to focus on school. Hopefully with Patreon this will help outsource work on Edgebox to keep it going for the next two years whilst I don't have as much time as I personally had before. It also goes towards resources so getting more resources on the website so the long term plan is to have this curriculum on there so Patreon is going to help out with that so all funds via Patreon will go towards the resources. If you'd like to get in touch with me you can do so on the following platforms so you can go to the main website send me an email or reach out to me via Twitter. So let's have a demo at the ESP board now so if we go into here and it hopefully wants to work reset it so it runs its own Wi-Fi hotspot so that's how you connect to it now the battery has actually died so it is being powered off USB at the minute so once this is booting up I'll explain what you can see on the screen so this is the main interface that you get when you launch the ESP Edgebox the ESP CH2 panel so you have your standard ESP things like connecting it to Wi-Fi and stuff so if I reboot it again because it doesn't want to work because it's stage fright there we go so you can click on Edgebox and hopefully it will launch into the Edgebox environment that you will see for mic bit and stuff like that it never wants to work when it has to only when it doesn't have to oh the Wi-Fi has gone off that's good because I can show you how that works so it loads up its own Wi-Fi hotspot which you just connect to and if Windows wants to do its job correctly which it doesn't often want to do it will connect to the Wi-Fi hotspot and then you can go to the IP address at the board and it will connect so hopefully once Windows has figured out that it has no internet connection it will load up it does work after a while there we go so you can see that you get to the panel and then you load up Edgebox here so this is kind of like an early release of this this isn't final or anything but you can see that you've got all the blocks on the side here so you've got your standard blocks and this is all running off the ESP so there's no installation required you just connect to it over Wi-Fi and if we open up the program that's running the NeoPixels which is this one here so you can see that it works kind of the same as the Raspberry Pi so you pin number and set all your loops for the different colours so I'll just explain what this code does so you import the libraries a standard so your NeoPixel library and the ESP library and then you tell the ESP how many NeoPixels is actually on the ring and then you create different loops for the different colours so you can see for R in range 24 that will mean that it will do it 24 times to light all the different pixels and then it will set it to red and then print on the OLED display so there's all sorts of different things that you can do with it so if we go into the Python view you can see that this is the Python editor and it works exactly the same as if you were typing it in idle or something so yeah this is a very early release and the contributions for that as well will really help with that so yeah has anyone got any questions at all that you'd like to ask yeah oh thank you please come and queue up either of the two mics you can hear me on here this is awesome I'm a parent of a 10 year old looking at this I'm curious what tools did you use to write edu blocks yourself and also what was your path from learning to code to using those tools so I am a self-taught coder at the start but then I've had people help me along the way so I started out with Scratch as most people do my age and then I went on to learn from others at the local Raspberry Jam so if you don't know what a Raspberry Jam is a Raspberry Jam is a meetup for coding enthusiasts and people involved with Raspberry Pi and the idea of a Raspberry Jam is to kind of connect different people who want to learn coding and stuff so I kind of started out with Scratch and then I met a developer called Chris Dell who well I actually started out on edu box two years ago on my own but then I met a developer called Chris Dell who helped me develop the project to the second version to make it look a bit nicer and this is currently coded mostly in TypeScript and there's actually zero Python in there which is kind of weird but yeah so it's kind of just a wrapper for Python and the way it works is you drag and drop the blocks into the main coding space and that actually gets converted into JavaScript and then there's a Node.js server which takes that JavaScript and then runs it in a Python interpreter so that's how it works at the minute and the code is a bit messy so I hope to kind of refine it a bit but yeah it's mainly TypeScript is what it's written in yeah yeah so I'm at the sprints tomorrow hopefully so if anyone wants some help with contributing you can come and find me at the sprints and I'll be happy to help out there Thank you Josh it's always really impressive and great to see this you've aimed this at young people mainly but have you wondered about whether you might apply it not just to young people maybe for example to people who need to solve programming problems but have the same lack of experience that children might have and would benefit from something that gives them the computational power and the structure but presents it in a way that is maybe less challenging or intimidating to people who just because of their work perhaps have got a problem they want to solve that could be solved with some Python but need a different way in from the text editors and so on that they use maybe there's a different kind of market so Azure Box is as you said is mainly child based anyone can use it so it's free to download and I think I should mainly kind of say that it's for everyone more than just like kids so maybe a few resources on we're looking at doing some debugging resources so as you said like if you've got a problem ways to kind of use Azure Box to learn Python and help solve the problems so yeah I think I definitely do need to kind of look into making it more adult orientated as well as child based because I think I mean it is for everyone to get into Python but definitely focus more on that yeah that'd be a good idea thank you Is that it for questions anymore? Well if there's no more questions please give Josh a big round of applause