Transcript Track 2 [0:21]Hello, and welcome to Teaching Python. This is episode 156, When Code Leaves [0:30] Welcome to Physical Computing Track 2 [0:28]the Screen. I made that up before we got on the show. And today we're going to talk about physical computing and hopefully a little bit of Circuit Python and what happens when code leaves that screen and starts interacting with the real world. My name is Kelly Schuster-Paredes, and I'm a teacher who codes. And that's your cue. Track 1 [0:46]And I'm Julian Sequeira. I'm a coach that gets people to learn to code. Track 2 [0:52]Yeah, that's so weird. I'm usually the second one in this scenario. So Sean's always the coder who teaches. Julian is getting us somewhere today. But today we're really excited to be here and we're joined by a very special guest. We're Todd Kurt. Todd is a... Yeah, hello, Todd. Todd's an engineer, maker, and you're a longtime contributor of hardware. I think I see all kinds of hardware behind you, too. And you contribute to the open source community, I think, right? Oh, yes. Track 3 [1:25]In all different, in all many varieties. Track 2 [1:27]I love that. And we're so excited to have you. And I think this is like one of these topics that a lot of educators might be curious about right now, especially with AI in the classroom and this ability to do hardware is like a whole different monster. And we're just excited for you to have to come here. So thank you. Track 3 [1:47]Awesome. Thank you. Track 1 [1:48]So, Todd, why don't you start by telling us about yourself? You know, what is it that you do with CircuitPython and everything like that? Track 3 [1:56]So, yeah. So, I'm an engineer by training. But right when I graduated, the web was exploding. And so, I became a web guy for about a decade and did a lot of that. And then for the last, you know, decade or two, I've been doing engineering again. I have a little company that makes, at the time we called ubiquitous computing devices. Now it's called Internet of Things. back when that idea hadn't gained much traction yet, and it was a really hard sell. So our company kind of scaled back and became essentially a producer of fun little LED devices, first for Arduino, and then later for just normal computers, these little visual enunciation lights that we call BlinkOne. And it lets you hook up some event out on the net to this light. So you get new email or a build finishes or something and the little light goes off. So instead of a ding, you get a little light. And... All of this stuff has been open source. It was one of the first open source hardware projects that was like a real commercial project. We had two very successful Kickstarters. She's like 15 years ago, I think now. Track 3 [3:03]And and yeah it's been it's been going pretty good lately i've been doing a lot of hacking on circuit python which is an embedded version of python that is very similar but not quite like normal desktop python and it is a fork of micropython which you guys have talked about in past episodes which is also another embedded version of python and one of the main differences between CircuitPython and MicroPython is that CircuitPython tries to be more like Desktop Python to help ease the transition of people who are already Python fluent to come into the embedded to the hardware world. Whereas MicroPython says, you know, the embedded environment is sufficiently different that we're going to take some shortcuts that are not necessarily Pythonic and because that'll make the execution of the code faster or more efficient or something. And so for better or worse, CircuitPython is more like DesktopPython and it's also got a stronger bent towards teaching, whereas MicroPython is like, hey, we want to make a good, efficient product that can be embedded in many different things. Track 2 [4:12]And I'm going to stop you there before Julian asks you a question because you know what, before we get into it, because I have so many questions, but I want to go back to where our wins of the week, because we always like to start the show with the wins of the week. Track 3 [4:23]Yes. Track 1 [4:25]Nice. Nice. Fair enough. Track 2 [4:27]But I love this because that's a good segue before we get in, because I'm going to break down everything about CircuitPython and MicroPython with you. Track 3 [4:34]Sure. Track 2 [4:35]Yeah, yeah. But something that went well for you recently inside or outside of the classroom or the work. [4:40] Signing Code and Builds Track 3 [4:41]Okay, this is inside work, and that is, When you run programs on a Mac or a Windows computer, they have to be cryptographically signed. You might have come across sometimes if you use Macintosh, you click on a program, it'll say, this program is damaged or something. That means the cryptographic signature is not present or whatever. Same thing on Windows. Apple has an additional thing called notarization where the developer has to upload their code to Apple servers for it to be checked for malware. And then it gets an official little notarization note that you have to stick on to your application when you distribute it. And so all of that is a big hassle. If you're an open source person, you just want to like compile the code and let it go, let people try it out. But of course, we kind of live in antagonistic software world now. And so you have to do this sort of digital signing of your compiled programs. And I've done this many times in the past, but I finally, my win this week is that I finally got a GitHub Action set up for both Mac and Windows that does all this signing and notarization stuff for me so that I can just release a new build of my software and it gets all properly blessed. Track 2 [5:57]That's pretty cool. Is that sort of, because this is not a forte of mine, but for example, when we were using MooEditor, which is an open source, I know in the very beginning when Nick Tolovey launched it, it had a lot of authentication problems with Mac. It was always a Mac issue. It was never a Windows issue. Was that like all those problems kind of tied together? Track 3 [6:16]Yeah, yeah. Yeah. It's exactly that. Yeah. Windows has historically been a little bit laissez-faire about that because their approach is more like, oh, we'll let it through initially and then we'll run virus scanners continuously in the background of your computer to see if we can find something bad. And there's like pros and cons to either approach. I kind of prefer the Apple approach, but it does mean that things can be really frustrating for us open source developers. Track 2 [6:40]That's crazy. That's crazy. I'm learning so much before it's even hardware time. See, this is why I love the wins of the week, because this just takes us all over the place. Julian, do you want to share anything? Track 1 [6:51]Yeah, yeah. Oh, look, it's nowhere near as amazing as that and life-changing as that. No, I realized that over the past year or two of running my own home lab at home, my entire home setup has become pretty much an enterprise network and enterprise setup with VMs and Docker containers and everything. So, yeah, my win is just simply that I had a massive migration to new hardware and everything, I think, yeah, last weekend. And I didn't break everything in the process. So, I was just chuffed. I took everything down. New IPs were accidentally distributed when the router had an issue, but I was able to bring things back online and remember to hard code certain things, static IP certain things. And it all just worked. So I have, you know, a newer network now. And I was like, oh, my gosh, the system works. So I was. Track 3 [7:44]Congrats. Track 1 [7:45]Thank you. Track 3 [7:46]That's no small task. Track 1 [7:47]And the biggest critics, the children, barely noticed the blip. So barely noticed. Five minutes and they were like, what's happening with the Internet, Dad? So, yeah. Track 2 [7:59]I had nothing. Track 1 [8:00]What about you, Kel? Track 2 [8:00]I had nothing exciting. I came back from spring break and Monday was a Monday. I don't even know what happened to Monday and Tuesday. and here it is Wednesday. But you know what? This comes from the text that I texted you with. I've been working on Lovable, trying to play around with that to see really what it's about, because it's a big hype of it's a no-code AI app builder. And I had some really good ideas. I probably shouldn't share one because I don't want to steal it because I probably won't make it anytime soon. But I had this really good idea to do something for class. And then I started digging into this app and I'm making all these databases and about, Three years ago, I took a data science course, and I'm like, oh, my God, SQL, and oh, these tables, and I don't know where all these connections are. And so I feel like I have to go back and learn some more SQL and stuff and back end things with this AI stuff. But I think the win is that it opened the door to all this stuff that I learned three years ago, and I was just like, oh, this makes sense why I had to learn it. And I think as more people get involved in this no code and trying to read someone else's code or something else's code, it's going to open a lot more doors to really what you need to learn. And I kind of get a happy vibe off of my vibe coding. So that was like a win, like an epiphany win for me. [9:22] CircuitPython Versus MicroPython Track 2 [9:22]But we digress. Now we get to go back into this meet because so many questions. You said MicroPython is the harder one and the CircuitPython is the easier one. Explain that again. Track 3 [9:34]Well, this is the intent. Sorry, I guess it depends on what you classify as harder and easier. MicroPython explicitly doesn't try to stay with CPython, with DesktopPython. It just kind of goes on its own path and it does some things that normal Python people would consider bad form. Because it does that for efficiency sake because certain certain things in python, cause lookups in the the python infrastructure and those take time and if you can do it do a quicker version of that it doesn't look as nice it doesn't look as pythony but but it is it is the faster better way and so you'll see a lot of micro python programs do that approach whereas circuit like like one of the most the one of the most notable ones is is uh properties like when you create a Python class and you have a, you have the app property, a little, what's that called? Tag. Track 2 [10:32]The little, the little, the generator. Track 3 [10:35]Yeah. Track 1 [10:36]Yeah. Track 3 [10:36]Yeah. Track 2 [10:38]Decorator. Track 3 [10:38]That's like the, the decorator. That's the term. Normally, MicroPython will often just use functions or just accessing the property directly rather than have the attribute directly rather than have the app property decorator to create a function that does all the setting and getting and stuff. Where CircuitPython will do all that because that's the way desktop Python does things. But that's slower. Track 2 [11:05]That makes sense. Track 1 [11:06]Got it. Track 3 [11:06]So it's. Track 2 [11:07]I just. Because isn't it. This is totally off topic. And this is what happens. This is why Todd says, what do you talk about? I'm like, I don't know, whatever comes to mind. This is why, and I think I read this a long time ago, didn't they use MicroPython to send packets up into space? Because it's smaller and a little, somewhere I read it a long time ago, they were able to send packets. You have to Google that somewhere. Track 3 [11:30]Oh, well, I'm pretty sure both CircuitPython and MicroPython have been on these little CubeSats that get launched every so often. and these little about the size of a half a loaf of bread satellites that get bundled up with a bunch like 50 other ones and all get sent up at once. And some of those run Arduino. Some of those run MicroPythons. I think a couple of run CircuitPython. And they do little experiments before they fall into the atmosphere. Track 2 [11:55]I find that so cool because that's what happened when we started working with the BBC Microbit is a nice little thing for school. But I'm going to transition to CircuitPython. Tell me more, because I have... So Sean loves CircuitPython. He brought them into the classroom. He bought like 500 of them. And we have some friends at Adafruit, and he was an Adafruit... I think he still is an Adafruit subscriber. He gets that box every time. And I... For many years, wanted to throw the boards up against the wall because there's a lot going on with hardware. Track 3 [12:31]Yeah. Yeah. So so one of the one of the really nice things about the micro bit is because it has the backing of BBC and and and to a lesser extent, still Microsoft Research, there is a lot of effort to make it work well kind of out of the box. And so they've made like their own version of the micro bit the the micro python for micro bit that just kind of works whereas with circuit python there are so many different boards that circuit python supports adafruit can only can only put effort onto some of them and so the version of circuit python for micro bit is okay but it could be so much better and so what really needs to happen is someone needs to sort of like take the standard of like i'm going to make micro bit circuit python really good and and fix all the little niggly things and make it so it works better but then there's still the problem of and this is the problem with pretty much every board they're in circuit python you have to get you have to get circuit python onto the board and this is true of micropython too but you can find boards that have micro that ship with micropython it's hard to find boards that ship with circuit python and so if that's a problem for you if getting that that initial step step of like getting to the bootloader putting putting copying the uf2 file for circuit python onto the bootloader yeah it's it's kind of a it's kind of, a real momentum stopper if you're trying to teach a class i can imagine or if you're not you're. Track 2 [13:55]Not that intuitive and you accidentally buy a whole bunch of like blue fruits with arduino installed then you can't switch i've done that mistake so that's like a newbie mistake where you've ordered the wrong boards and then you have arduino on. Track 3 [14:09]Them and. Track 2 [14:10]You're like okay what do i do next but I think there are really. Track 3 [14:13]Great boards. Track 2 [14:13]And I love this as a teaching person, As a teacher, right, working with CircuitPython, we have the Blue Fruit because I just love the idea that it can connect to the Internet and do all these little things with it. But it's teaching kids to have perseverance of just getting the UTF, the bootloader on there. Track 3 [14:39]The UF2, yeah. Track 2 [14:40]UF2, that's right. And then getting them to do that. So sometimes I normally put that on, but then letting them understand that they have to pull in a library. Like, oh, if we want the NeoPixel library, we have to pull it in. Or if we want the sound, we have to pull it in. And we can't put the whole entire folder of libraries because then the CircuitPython won't work. And it's all these things. Oh, and then I plugged it in with not a data cable. [15:07] From Blinkies to Hardware Track 2 [15:03]I plugged it in with a charging cable. So I love this, that teaching. And so tell me how you got like actually passionate about working with hardware. Track 3 [15:14]Well see this the thing is is uh when i first started like things are so much nicer now because when i first started you had to spend a thousand dollars on basically the equivalent of an arduino board or circuit playground express or a circuit blufer board the little like dev kit then you had to spend fifteen hundred dollars on software that only ran on certain versions of windows 95 or whatever. And then you spent a week finally getting everything installed and hooked up. And finally, at the end of that week, you maybe could blink a single little LED. Track 3 [15:45]You know, that was the sort of, that's the sort of hello world of embedded computing. I can finally, yeah, yeah, I can finally get the LED to blink, you know. And nowadays, sorry, and then it became so much easier because Arduino happened in like 2006 or so. And we could suddenly, with a very simple program that looked like an artist tool almost and a very simple board that was like like cost 20 bucks you could get to that blinky step in about maybe 45 minutes install this one little java program run it install the serial driver i mean this was like but even then even installing oh no i have to install a serial driver install a program and plug in this board and make sure to press the little reset button right before i press upload you know this is this is the way things were in the mid-2000s. And that was amazing. Things have just gotten easier and easier. Nowadays, you don't have to have a special app to talk to these boards. You just need to be able to save a file. Any text editor can edit a CircuitPython or a MicroPython program, and the board just shows up as a thumb drive to your computer. So you could even use a tablet. Track 3 [16:54]You wouldn't be able to, on iPads, you wouldn't be able to see the serial REPL, I don't think, because I don't think iPads let you talk serial. But you can still save code and watch the code change on just a tablet. And so, and so, and, and, and they do work great on Chromebooks, which are all over schools. And so it used to be, you couldn't run Arduino on Chromebooks because of all the serial weird things that the older, the original Arduinos did. And so things just gotten easier, easier, and so much better. And it's, it's funny when I hear you talk about these problems and now because I'm like, Oh my God, these are like such easy problems, but, but you know, but yes, My experience is like 30 years out of date in some ways. Track 2 [17:35]It kind of reminds me of when Matt came in, right? And now the kids don't even know how to do anything. They just drag and drop. Track 3 [17:42]Everything's well this is so so so one of the interesting things is that to me the the uf2 drive the the way that the board shows up as a fake thumb drive that you just drag a file to to reprogram it that makes that that's like a that's like an explosive amazing thing that that was, pioneered by the micro bit and microsoft research like i think maybe 10 years ago and and that's really great, but it assumes you understand the concept of files and that files live in places and can move places. And I've noticed a lot of kids today don't really understand files. They just like, Oh, I just opened my, my, my program and my program knows where the files are. If I even, if I even think about different files, I just got to open recents or, or I just opened the program and there's the last thing I was working on. And so there's this extra now extra your step now of teaching people that there are files that there's a file system here or here there's a file system. Track 2 [18:41]Yeah you i actually did sorry julian i actually did this the other day i stood up because kids really honestly don't know and someone recorded a video and i they had to upload it into into our online learning management system but it would only take in a url and he's like, well, I just put it in from my computer. And I was like, do you understand? I'm holding this computer up. This is a local. This is the cloud. This cannot get to this. So yeah, they don't understand. And I think that's why I have this love-hate with hardware because of that kind of thing. There are so many skills to learn. Track 1 [19:23]But it's the same with web development and Django and things like that. I was chatting with someone who was kind of fresh out of high school into their early uni days, and they were dabbling with some web development. And the idea of having like an app hierarchy in their web development app, in their web app, to have a folder for this app, and then in there you have .py file for this, this, this. But then you can have those same replicated files, duplicated files, in another folder of a different name for that app within Django. Just this whole notion of forming and having structure to your code and its file system was mind-blowing to them. Because, again, to your point, they used to just downloading anything to their phone, having it just be a huge data pool mess in the background. And then apps like gallery and contacts and file whatever just showing it up with the way that they want it right so i feel that pain. Track 2 [20:19]It's crazy i totally get it so since we have this expert here i have to ask you everything about because i was i got inspired when you said yes i saw your guys website and i was like oh man i gotta pull out these circuit python one more time i'm gonna do this with the robotics kids because i really do love i i hooked up a gemma this was probably like the only project that i absolutely loved i hook up hooked up a gemma and it was inspired by sean he was like just sit down and do this project i'm like okay whatever i made this blobby thing out of the fairy lights and i stripped the stripped the wires off and i connected it to my gemma and it blinked like with us you know has that code from the circuit python that does the the leds rainbow and i had a blob lighting up on my desk didn't really do any of the code But the whole just getting the stupid thing connected with Gemma and running, I swear it took me a couple months. So explain to me, explain to me. I know it's really bad. I told you it's a love hate. Explain to me how that bootloader file works and why when you drag it in, [21:27] Bootloaders and UF2 Files Track 2 [21:25]it's supposed to just work. Turned a circuit pie. Explain to me that and tell me the most efficient way to make that happen. All right. Track 3 [21:34]Well, I mean, I think I think you've probably just in your in your trying to teach this to kids, I think you probably have discovered a very efficient way. But but this so it used to be in order to program these little these little microcontroller chips that run programs. It used to be yet you had to have a special programmer board that was distinct and would connect your computer. And then that would connect to the board and you'd have to talk to the programmer, which would then program the chip or program the board. And the sort of cool swizzle concept was, oh, what if we could have the chip program itself, which used to be not possible. It used to be you had to program, you had to have something else kind of, you know, stick tendrils onto the brain and reprogram it. But now we can have it reprogram itself. And so that's what a bootloader is. It's a way of presenting some interface to... Track 3 [22:28]Your computer or something else that lets it accept a new program and will save it in a way that will stick like to its flash ROM. And one of the first bootloaders were serial port things. So you'd use basically something like, you know, like a serial cable back when we had serial ports on our computers, but now there are USB bootloaders. And usually these, these speak weird protocols that you do have never heard of. But the cool thing about the UF2 protocol is that it looks like a thumb drive. And so even though you're copying this UF2 file, you're not actually copying a file. What you're actually doing is just starting this data transfer, this programming the chip. And so it's really confusing because you're thinking, oh, I'm moving this file from here, my computer, to here, this little board. But you're not really doing that. You're just instantiating a data transfer. And so people can get really confused because it's like, well, where is it? I copied it to the thumb drive. Where'd it go? In fact, the normal process of when you copy a UF2 file to program one of these boards is that the board will just reset and the computer will say, hey, the USB disconnected. Track 3 [23:40]And so it looks like an error to people because they'll be like, wait, normally that happens if I pull out the USB too quickly. I didn't pull anything out. Why is it giving me this USB disconnected error? And it's like, that's just how this UF2 protocol works. It's a little bit abrupt. It doesn't really like say, congratulations, you did a good job. It just resets. Track 2 [24:02]So then when it resets and you don't see the C-Play boot, Like, isn't it supposed to automatically go CircuitPy? Like, is that what it... Track 3 [24:10]Yeah, at that point, if everything worked, then it should come up in a few more seconds and say CircuitPy if you've copied on a CircuitPython firmware to it. Because you can copy other UF2s. You can copy... Like, when you're using Arduino on these boards, the Arduino IDE will create a UF2 file of your little Arduino sketch, and it will copy it over. Or you could copy it by hand. And so that's what I do. I make these little synthesizers that are based off of the Raspberry Pi Pico. And I distribute these UF2 files. And sometimes they're written in circa Python, sometimes they're written in Arduino. But all you see is the UF2 files. All you have to do is just drag it over to the Pico when it's in bootloader mode. Track 2 [24:54]I have tons of those. Track 3 [24:55]Too. Track 2 [24:55]I have like 500 of those in my classroom, too. Track 3 [24:58]Yeah. Yeah, no, no. I'm a big fan. The Raspberry Pi Pico is another great invention. But that's but if you don't see that if like if you're if you're trying to like set up circuit python on your board and you copy over this uf2 file and it resets it just says usb disconnected and then it comes back and you don't see circuit pi then it could be a couple reasons it could be that uf2 file is bad like sometimes i've when i've downloaded it my browser messes up it doesn't download the whole download the whole file or and this is more common you actually got the uf2 file for the wrong board. Track 2 [25:34]Oh. Okay. Track 3 [25:35]I do this all the time because there are so similarly named boards. You know, there's, like in the Adafruit world, Adafruit's really bad at this. They've got the Circuit Playground Express and the Circuit Playground Bluefruit. And they look very similar, but they're totally different. And they both have UF2 files. And if you get the wrong one, it'll do the copy process that's not the same. But then it just won't work. And there's no indication that how it failed because there's no mechanism for it to tell you how it failed, really. And so it's really frustrating if you do that. And I've repeatedly dragged the same file going, like, why isn't this working? Why isn't this working? And then you realize, oh, I got the wrong stupid file. Like for me, it mostly happens with the Pico versus the Pico 2, the new version of the chip from Raspberry Pi. And so I think I'm programming a Pico and I'm actually programming a Pico 2. And it's like, ah, dang it. Track 2 [26:27]And this is why that's that love-hate. Julian, what's your skills on hardware? How much hardware have you, like Sean, and made a pool heater out of his... Track 1 [26:41]ESP32 is probably as far as it's gone. Ah, yes, yes. No, I mean, because I love to dabble with Home Assistant and all the electronics around the house, right? And this actually leads me to the question that's been at the back of my mind for this is I've got a Circuit Playground Express. I've got a few little micro bits and things like that. But I think the thing that's always held me back is just bridging that gap of starting. It feels like a whole new world to be diving into. And I wonder if there are teachers and educators out there who want to do this kind of thing as well, but then kind of don't know where to start or don't know, you know, how do I justify kids learning on this or students learning on this versus just sticking to rote learning through, you know, some online videos and whatever. [27:27] Starting Hardware in Class Track 1 [27:28]So, I don't know, I guess, and maybe this is also for me, but how would you recommend, I guess, people bridging that gap and where should they get started and what would you tell them? Track 3 [27:39]That's really good well for me what always works when trying to learn some of this hardware stuff because like as we've been talking about it's all these little tiny details that if you get just a little wrong will just totally stop you and so you have to you have to get really good at just looking at exactly what the details are and so for me one of the things is trying is finding a project that really inspires me that i want to get get to and so for me for the last several years it's been making little musical synthesizers and and that's that's a lot of fun because it's a definite thing that you can show to people and say, hey, look, it makes this cool noise, you know? But for teaching, how do you, But this is a question for you. How do you have interesting topics and projects that will that will engage kids? Because you don't want to just like have them run through the boring step one, step two, step three, but have like have a destination in mind with like, hey, look, at the end of this, you're going to have a really cool Wi-Fi Tomagotchi or something. I don't know, you know, or a Bluetooth friend or something. Track 2 [28:40]When Sean did this he actually had he had a student I don't know if they wrote it up on the Adafruit website but. Track 2 [28:47]They did it. Sean got them all started. He gave it to them with the CircuitPie already in there. He had the NeoPixel library already there. And I think that's the problem is going through as a teacher and getting that board ready. Track 2 [29:02]That's hard. But he had all the kids come up and design a project in very simple code. Very simple, like get the NeoPixels to light red and green. But the idea was when it was a temperature sensor. When your temperature got hot you were stressed she had like this little eye cover patches it was like a seventh grade it was so cute and so they had the circuit python onto this eye patch and as they the temperature you know got to a certain point it turned green and they were calmer or something it was a really cute little project but i agree having them come up with the idea is pretty cool i i've done it where and i had this brilliant she's she's probably like a junior now i gave them all the the codes here's here's a temperature here you can do i don't know it was like there's sound all this stuff and then we based it on sustainable goals like the un 21 sustainable goals and what could you build with this hypothetically with a proof of concept and hers was something to do with planting and growing more food and in places that didn't have a lot of water. And she had all these different programs built on it. So I do think it helps when they have a goal in mind. Track 2 [30:18]But, I mean, just getting, I don't know why the NeoPixels always make them so excited. Track 3 [30:24]Yeah, yeah. So I assume both of you teach like desktop Python as well. Track 2 [30:30]Yeah. Track 3 [30:31]I mean, so when you're teaching that to your kids, do you have them install Python? Track 2 [30:36]No. So this is the thing, and this is the thing that keeps everything easy. Well, we used to use Moo, and I don't know if anybody wants to maintain the Moo editor. They officially have not maintained it. Track 3 [30:50]Yeah, it's pretty gone. Track 2 [30:52]It's foregone, and so we're still haggling through the Moo editor, which we love, and that's already packaged with everything in Python. That's what we do with the sixth graders. But we use Colab primarily because all the libraries, you don't have to really install many of the basic libraries into Colab. And so we use that. But that's what I really miss about. We used to always have a hardware unit in our classes. And then COVID hit and we couldn't touch hardware. And so we got out of it for a little bit. But that's what I like about the hardware aspect. But it was running through Moo. So I don't know what we're going to do now. Track 3 [31:30]Yeah so so similarly in the same in a similar way that you've had you've had python sort of already pre-baked for you with collab or or whatever because like you know getting python working correctly on a desktop computer can be it's a pain really absolute pain especially if you don't it's pain right yeah yeah exactly exactly and so so i would i would recommend doing that doing what what you said sean did which was get whatever board you're using get Get it already set up with CircuitPython installed, with the libraries you need, maybe with a, USB cables pre all set up, you know, so you know, they're not charging only cables just to lower that part. If you don't want to teach them that part, you know, that's just another barrier to getting going the way that like Colab removes the barrier of getting Python going. And the problem is who's going to do that work. Absolutely. That's like teachers always, always have never enough time. And so I don't know, maybe if you've got a bright student who wants to do a little extra credit, I don't even know. Right. Like, how does someone get this extra work done? Track 2 [32:39]It's definitely a challenge. It is definitely a challenge. But then what happens is then they press that stupid middle button like three times and reset the entire board. And I'm like, don't touch the button. Track 1 [32:56]Oh, that's terrible. I didn't do that. Track 2 [33:00]It's horrible. Track 3 [33:02]Yeah, this is the fun and the challenge of using hardware. is sometimes you can fry the whole thing by accident. Track 2 [33:08]But you know what? I keep coming back to this. I know in my heart, like, using hardware is probably one of the best things that teachers can do right now, especially with this AI. And everyone's worried about AI. You know, and this is what drives me crazy. You can go to CircuitPython, you just copy the code anyway, so it's like AI wrote it, but you still have to do a lot of thinking and problem solving. And I just feel like there's a lot of good habits that get developed today. As being a builder. And you said it, you said kind of said it yourself is like going through the problems, trying to think back of what small thing you made the mistake. And I think that is a skill that is irreplaceable. And so it's kind of why I have that love, hate, passion of hardware. It's just crazy. There was no question on that. Track 1 [33:56]No, but there's a beauty to troubleshooting something physical versus software based, right and so when your python code breaks you're constantly trying to figure out where's the missing you know colon or comma or something like that but when it's something physical you're much more there's so much more interaction there so you know to your point my my son i've got a 10 year old son and he i've been trying to get him to learn python for for years and he has zero zero desire because his old man does it right and so he doesn't want to but then when they introduce some of these robotics kits in the school, he came home and was just raving on about it. And I said, that's programming. He's like, no, it's not. Yes, it is, buddy. And so, and you know, you've actually inspired me. I'm going to get the Circuit Playground Express and I'm going to plug it in and show him and get him to tinker with it. So I'm going to do that. Track 3 [34:52]Great. So one recommendation real quick. One of the problems with CircuitPython more than MicroPython is that CircuitPython has grown to be more like CPython. And so while it can still run on these, on the original Circuit Playground Express, these like m0 boards you might hear talk about they can just kind of barely run it you can't really add new libraries easily so it gets really frustrating because you run out of storage space on the board and you have to get the blue fruit and so you. Track 2 [35:21]Have to get the blue fruit. Track 3 [35:21]Yeah yeah yeah the blue fruit the blue fruit is is much better for that um even if you never use the bluetooth aspect of it uh it just has a lot more space so it's easy easier to copy on copy over libraries and stuff so yeah low circuit python don't use it on m0 boards don't use it on the Cutie Pie M0, on the Circuit Playground Express, which is an M0 board, and any other boards like that. Track 2 [35:43]Sean's pinging me. Sorry, that's Sean saying, I'm definitely not making it. I am so bummed. [35:50] Hardware Failures and Lessons Track 2 [35:51]I know he would be nerding out right now. Hey, so you've made so many cool things, but we always talk about wins, but we can't go without saying, what's your most memorable failure that taught you about about these these hardware and like how did it there's like two questions here what's your most memorable failure and how did you survive and stick with hardware, oh interesting um. Track 3 [36:18]Well, one of them, one of them, I think was when I was in college and I was learning, learning my first embedded platform, which was the 8186, which you might've heard of the 8386, just the 386. Uh there was there was a sort of embedded version of that called the 8186 and they had this huge. Track 3 [36:39]Box that was like you know three feet long that was the simulator for it or the emulator for it and i had plugged it into my circuit that i'd that i'd wired up and the whole thing just blew, and this was like this was like i think a ten thousand dollar box and and it was just like oh my god i like like like what do i do what do i do and thankfully the professor was like oh don't worry intel gave us a lot of these they expect to have some of them blow up you know and i found my problem it was it was like a very simple problem like one of the one of the biggest things you can the simplest biggest mistakes that everyone does it is you connect the voltage line and the ground I was just going to say that. Together. Yeah, yeah, yeah. No, that happens to me about once every, like, probably six months or so. It's one of the reasons why I have these, I'll show it on video, even though it's a podcast, these USB power meters. Because so much of the stuff I do is powered by USB. The USB power meter will tell me if I'm drawing too much current, which is what happens if you short ground and volt together. And so, yeah, it happens all the time. You move a wire and suddenly it's dragging across things that shouldn't be and suddenly part of your circuit doesn't work. Track 2 [37:54]Or the kid comes to you and says, Miss, this thing's really, really hot. And I'm like, oh my God. Track 3 [38:01]Yes, yes, yes, yeah. Track 2 [38:04]I'm like, put it down. Track 3 [38:06]And things are so resilient now compared to the way they used to. It used to be we had to wear little antistatic straps that you'd hook up to the ground plane of the bench. But now things are so good you can like run around with them in your hand and it's not usually a problem but but yeah that's that's not even counting the fact that you the children driving the the jumper leads across the thing when. Track 1 [38:28]They shouldn't be. Track 2 [38:29]You know it's amazing sometimes that we even get where we go i remember the first time we started soldering and and making these little boards with the neopixels on it and kids were burning themselves so yeah i can't. Track 1 [38:41]Imagine what. [38:45] Synthesizers on a Pico Track 2 [38:41]It was like before before i change subjects you want to add anything Julian sorry. Track 1 [38:46]I want to ask a question no I was just gonna ask Todd is the the the workshop behind you is like a dream come true for me um when I see all this I mean I can just picture 3d printing happening there and all kinds of soldering and um lead free and lead inclusive solder yes yes yes I prefer the lead based stuff it just melts better but anyway so um so with all of that Are you building anything interesting at the moment? Track 3 [39:18]Let's see what am i what am i building that i can show i'm not really building anything that interesting the thing that i'm currently working on is this little board here that is a tiny synthesizer driven from a raspberry pi pico i can take the top off here i know this is probably not very good podcast content but that's what i'm showing what i'm showing is a is a black circuit board with 16 touch pads on the bottom and on the top there's eight knobs to control things and then on the very top there's the Raspberry Pi Pico and a display and then an audio interface and and this I have in my tindy store well I don't have my tindy store yet but but hopefully hopefully we'll have it in my tindy store at some point that's cool and that's running all on just a Pico, all on just a Pico and it's running circuit python because one of the things I love about circuit python over micropython is it's got a really complete synthesis engine inside of it to do to do music synthesizers and it's something that i've been i've not done much coding i've not done much back-end coding for it but i was helping sort of define what was needed to the developer to the circuit python core developers who were implementing it this is like two years ago or something and it's really cool and it's been added to it's got like it's got digital effects now like like guitar effects you know like flanger and echo and distortion and stuff, and it's got audio mixers. It's just incredible. You can make almost, it's almost like having a full modular synthesizer in a little like microcontroller. Track 2 [40:48]And it's like eight bucks for a Pico, right? Track 3 [40:51]Exactly. Yeah, yeah. Track 2 [40:52]Just letting you know, you can buy a whole bunch of those, Julian. Track 1 [40:56]Oh, don't. I have a mortgage to pay. [41:01] Code That Went to Space Track 2 [41:01]All right. So I have to ask because I kept, every time I was Googling and reading about you, Todd, I kept seeing about something that you built to go to space. I have to ask, what is that all about? Track 3 [41:12]Oh, so before the web, yeah, before the web, I was working for this very small company that was a contractor for JPL. And they had their recent success before that was they had done the camera for the Mars orbiter. And so pretty much all the Mars photos that you saw up until like 10 years ago or whatever, oh, it says my network is struggling. Yeah, okay. Up until I think maybe 10 years ago, pretty much every Mars image you saw was taken with this camera that my company had worked on. I didn't work on it, but the camera that I did work on where I did a little bit of firmware for that ended up, I think still has persisted, has been on all the cameras since. And so it's been on on mars cameras it's been on cameras that went to jupiter, and and it's just it's really cool that i got to write this i think by i think by now my only contribution is maybe like one page of code for this for taking for doing some manipulations of the pixels coming off the ccd of the camera but but it was so cool to hang out with these immensely intelligent people people that were, they were geologists and they were physicists and they were computer scientists and all working together to make this crazy camera that was going out into outer space. Track 2 [42:38]Did you hide your name? Did you hide your name in like the comments in case like it gets lost and the aliens find it? And they'll be like, that Todd Kurt, that's pretty cool. Track 3 [42:47]I didn't, I didn't, but, but apparently, apparently our names are in the firmware of, of the, the camera. So it's in there somewhere in the ROM or something, I think, but, but I didn't do it. Cause yeah, that's, that's way beyond me. That is pretty cool. I was a, I was a very baby junior engineer back then. Track 2 [43:05]That's still cool. I mean, I think I've only made a couple of things, you know, not even a couple of scripts, just one script. You don't, you don't get very far when you're teaching sixth, seventh and eighth graders. You do end up doing the same stuff. So that's funny. Track 3 [43:21]Oh, totally. Well, Hey, teaching, man, that's a, that's hard. I've, exhausted the like a few times that you did it and and you're doing it like repeatedly. Track 2 [43:31]Yeah like all the time well my new my new strength apparently is robotics i love buying really really really cool robots and then giving them to the kids and making them figure them out i have i have this new one coming it's not even a robot it's the new it's like a smart watch um and i wish i it's called Yeah, it's NASA's Artemis Watch 2.0. Track 3 [43:58]Oh, yeah, I think I saw that on the net. Track 2 [44:00]Yeah, I didn't even know, like, if it's going to work, you know. It literally comes from a store called, like, Circuit Mess. So it could be a hijack of mess. But I buy all these, like, these cool little things and then give it to the kids and let them break it. Because that's really what the fun part is. And I guess when you turn this in, it's got a nice little LED screen. And it's got a cool, like, nerdy NASA band. And I don't know what it's running. I think it's running CircuitPython, but I don't know. It's an ESP, it says. Here it is. [44:33] Cheap Wi-Fi Boards Track 3 [44:33]Yeah, that's the thing is now is such a great time to get into making little hardware things. So there's one little microchip called the ESP32. There are many different variations of it, but you mentioned it earlier, Julian. The ESP32 is a Wi-Fi chip, and it can run Arduino, CircuitPython, MicroPython runs all these things. And a lot of these boards that have the ESP32 have built-in displays, and you can attach a battery to them. And having a little display that can be on the internet with maybe a couple of buttons, you can do so much with that. You know, it's just, it's incredible. And they're like, they're like $10 or $20. It's like, man, this thing can get on the internet. Track 2 [45:13]What did they hose me for for $129? Track 1 [45:16]I'm just kidding. Track 2 [45:17]Well no no but that's. Track 3 [45:19]The thing is that is that there's a huge gulf between the dev. Track 2 [45:22]Board and the product i'm just kidding i'm kidding no this one this one has a gyroscope has because they all have like that gyroscope and you can do the the tilting and the accelerometer which i love because then they like throw them they try to throw them when they're still attached to the wire and uh and then the temperature sensor so it'll be really cool um, I will see. It's supposed to be coming in. They were like sold out or backordered or something, but I'll have to look. Track 3 [45:50]Well, they were getting a lot of attention because of the Artemis action. Track 2 [45:53]Well, yeah, that's it. They put on a band that says NASA and they're like, Artemis, that's what it is. It's an Artemis smart watch. We're getting it. Track 1 [46:00]Great branding. Until they get a cease and desist. but no I'm with you though I did a price kicked off a project which I haven't finished full disclosure of course I kicked a part of the planning and the organizing was the exciting part but when it came down to doing it I had one roadblock with the 3d print and cried a little bit but anyway I'm doing the shopping for the components to your point I can't believe how cheap it was I had a shopping basket online of just like I think 10 different circuit boards Some had to be purchased in packs. Like there was a, what do you call it, RFID reader, that kind of thing like that. And I just, I couldn't believe it. I think I got the whole set for like 12 bucks Australian, which is like one US dollar at the moment, right? So it was so cheap. It was fantastic. And I just, I remember, you know, back when I was younger and learning to code and we had these little breadboard kits from our local electronics store, which was the equivalent of your Radio Shack, our version of it. And those things cost like $150 to $200 for stuff that now would cost you a couple of cents, some diodes and LEDs, right? So, yeah, I love it. This is a really exciting space. You've inspired me. Track 3 [47:15]Yeah that's the the the wi-fi stuff is so is so fun because there are lots of little json apis out in the world that you can have your esp32 pull down and then display some information about like sports scores or weather or phases of the moon or whatever you know i. Track 2 [47:32]Don't want to cut us short but i know i i know once once sean's editing and listening to you you're going to be coming back on the show and then because we only scratch the surface at the basic julian and i are like yeah we've got a light lit up there. Track 3 [47:45]Yeah. Track 1 [47:49]Sean's gonna want to dive into this. Track 3 [47:50]Sending sending. Track 2 [47:51]Code to mars and. Track 3 [47:53]We're like yeah we couldn't get. Track 2 [47:55]Past the bootloader, putting the wrong voltage, it's so bad but any questions you want to ask julian army like you know we've [48:09] Teaching Programming Concepts Track 2 [48:08]we've showed do our expertise and. Track 3 [48:09]Well i guess i i yeah it's just the the this whole teaching regularly teaching, software to kids what is what is like the most like not even the embedded stuff the the hardware stuff just just like programming like what are what are some of the things that come up, the most in terms of concepts that aren't understood definitely. Track 2 [48:35]Files i actually gonna to start teaching files. I love teaching files and movement, but it's kind of cool. I think the hardest thing right now, it's not even the concepts. It's just getting enough energy to try to work through problems. And I think that's why I got motivated to contact you to get myself motivated as well. Because if it's not easy enough, if it's not like I can drag and drop or I can push a push a button on my phone and everything lights up. It's sort of hard to get that those kids interested. But yeah, I don't know. Python seems to be very easy. I figure if I can learn it after my millions of years of teaching and teach myself, it's like a love of how to get it through. And once you get them loving it and making their own code, it's kind of cool. What I find out is after middle school, they wait a couple of years and I usually get all the 11th and 12th graders coming back and go, I have this idea or where should I go and learn? I want to learn Python. I'm like, you learned it four years ago. Track 2 [49:45]But I do, you do start to see the real computer, and I don't mean to sound mean, but like the real computer science kind of geeky sides that love the hardware, and they're helping everyone to prototype their ideas that they might have. And then the robotics kids who can just look at a robot and put it together without using any instructions. So I I think there's a brilliant mind behind anyone that can see this little tiny board and build a synthesizer. I mean, that just amazes me every single time. And so every time I meet someone like that, I'm just like, wow. So that's mine. Track 3 [50:28]How about you, Julian? For the people you teach, what are the hardest concepts? Track 1 [50:32]It's a good question. And it's interesting. I do a lot of adult education, right? So people who are either already developers, have dabbled, have always wanted to learn, that kind of thing. Track 1 [50:42]And it's interesting, the connection, based on what you said, Kelly, and what I've heard from you and Sean over the years, there is a huge similarity between teaching children or students in school and teaching adults, right? A lot of it is attention. A lot of it is making time for it. So while a child will be forced to do it in a classroom, right? On the same kind of wavelength, you're getting an adult to make the time in their day to learn to code. They might have kids, they might have a full-time job and everything. But from a conceptual perspective, it's generally past that basic, okay, I have figured out what a function is. I have figured out what a rudimentary how to write a class. I have figured out these foundational concepts of python but now what you know that's always the biggest challenges you know i have an idea i want to build something what's happening and it just comes and that's why something like this with circuit python and something physical it's the gears are turning in my head of going well this is really cool this is tangible and this is something that will make them go as soon as the kids are in bed i'm coming back and i'm gonna fix that i'm gonna get that working because I'm determined to see that light up or make my pool pump do this or whatever, right? Track 1 [52:05]But yeah, I think for me, it's not even conceptually because everyone struggles with different things. Some people will get the mathematical side, data analysis like that because they just have that brain, but they'll have no idea how to structure that into an application beyond a single page app, right? So it is different person to person, But I would say the two things were making time for it and then what to do once they get their basics down. Track 2 [52:33]I second that as an adult. Like I can write scripts, but getting it, you know, launching a product or launching it or, you know, getting it out there is definitely where you get hiccups. I don't want to cut us short, but I don't know. I think we only go to one hour and Sean will be screaming at me as he's editing over the whole thing. Yeah. This has been so much fun. I just really appreciate you taking the time, and I definitely see you coming back and getting into actual deep hardware stuff and not stuck on the bootloaders. Any news, Julian, that you have? Anything exciting? Track 1 [53:11]News? Oh, geez. Not much in my page. No, there's a couple of cool things that I'm working on. [53:23] Finding Todd Online Track 1 [53:17]I won't share it just yet, but I'm having some fun chats with JetBrains at the moment. Track 2 [53:24]Which is nice very exciting well mine's always the same may 14th and in pycon ed summit it's coming up shortly i hope to get the lineup on the talks hopefully this comes out before may 14th, but it's been great and so if there's nothing else to say i don't even know how to sign normally i sign off so julian you have to do this for me i. Track 1 [53:48]Don't know what to say but hang on before we do Todd, anything else from you? Anything else you want to add or, you know, where can people find you? We'll have you in the show notes. Track 3 [53:55]Yeah. Well, mostly I have, I have a website and a blog, just toddbot.com slash blog. I don't really update it very often. I'm more, I'm more on Mastodon and GitHub. That's kind of like where most of my brain has been going lately. So you can find me there. My handle almost everywhere is just at Toddbot, T-O-D-B-O-T. And yeah, Thank you so much for having me on. This has been really fun. It's been really interesting to hear sort of this different perspective on Python usage and people getting into hardware. Track 2 [54:25]We have lots of fun. That's why we keep doing this. Track 1 [54:28]Yeah, I'm happy to do it. And when you mentioned with that synthesizer, there's like, you might have a store for it. Track 3 [54:35]Oh, yeah. So there's this little, it's sort of like Etsy for electronics called Tindie, T-I-N-D-I-E. And unfortunately, it's been down for the last day and a half, so I can't really give you a URL. Track 1 [54:46]Well, when you do. Track 3 [54:48]But yeah, yeah. Track 2 [54:50]Yeah, when you do, we'll put it out. We'll put that on the show notes and we'll definitely put a link there because I think Julian's really interested in making some synthesizing noises. Track 1 [54:58]I already have a friend who in mind, I'm like, I got to get this for him straight away. So there we go. I'm one of my best mates. But, yeah, that's it. I've got nothing else. Track 2 [55:09]Cool. All right. Well, for Teaching Python, this is Kelly. Signing off. You're supposed to say signing off. Track 1 [55:18]I was supposed to say signing off. All right. Let's try it again. Let's try it again. Track 2 [55:21]All right. For Teaching Python, this is Kelly. Track 1 [55:31]And this is Julian signing off. Track 2 [55:34]Done. Track 1 [55:35]