 It's time for Python on hardware. Yay, Blinka. What's new in Python on hardware? Glad you asked. So let's go over to the newsletter. OK. So Scott was on the Real Python podcast. And this was building with CircuitPython and constraints of Python for microcontrollers. And tune in. I'm going to talk about Linux in a second. We're going to get to that. And a little bit of a congratulations. 150 issues altogether. We've done this days over the last five times. That's so cool. We have almost like 10,000 subscribers, right? That's like 9,000? Yeah, we're crossing the 9,000 mark. I think it's the most popular Python on hardware newsletter out there. It's for sure. And it's free. And there's no ads. And we try to always put good stuff in it. I send stuff that I see. There's stuff that makes it to the blog. And some stuff that actually does it, that I'm like, oh, this is kind of for the newsletter, not the blog. So this is a, it doesn't replace the blog. It's good to have both. Because there's some overlap, but not fully. Yeah. We have Arduino embracing Python. That was good to see. We talked about that last week. Yeah, Professor John Gallagher has the Circuit Python School. This is a full video course for the fall. Yeah, that's kind of nice. Talk about our different issues. Oh, I love this MTA sign thing. MTA sign. So they did the thing that's really hard. So by the way, anyone who's like, how hard can it get? Could it possibly be to get proper MTA data? Actually really fucking hard. They use like this crazy protobuf format. And it's like, it doesn't tell you when the train's coming, just what track segment. It's like bonkers. So they simplified it and they give you an endpoint that you can use to get the data you want, which is very nice of them. All right. You can see some really neat Circuit Python powered games. So this is Asteroids-like. But it is a really, really, really neat. Yes. And we've updated, we've been updating and improving the keyboard stuff, which is going to affect gaming. Because now you can catch key presses, even if you miss the button press. Like do we have a, it's kept as an event. OK, so a lot of this more. And of course, there's still a ton and ton of new bits of hardware that supports Python. And then there's also a lot going on with what you can do once you have Python on hardware, lots of keyboard stuff, lots of machine learning stuff, lots of LED stuff. So this week's topic, Lady Aida, that I want to talk about, it's in the newsletter, is Linux turned 30 years old. That's right. And we have a little bit of a post about it. Famous use net post. Linus was doing this 30 years ago. So I have a two-part question for you. First up, why has Linux been so important? I'm not going to say innovative. I'm not going to say valuable, because those are words that are normally not associated with an open source. Yeah, I don't think those are. I mean, I think those are like, you know. Why did it work out? They're clickbaity. I think, you know, Linux, you know, one thing I will say is Linux did not really make to the desktop. And I think that's actually OK. I mean, it did, in a sense, you know, Linux and BSD. Chromebooks, really? Yeah, it's Chromebooks and underlying, you know, MacOS 10. And of course, you know, there's the Windows sub-system Linux that's available in Windows 10 now. So, you know, every operating system that you would use on the desktop does have access to Linux or Unix-like operating systems underneath. I mean, it turns out that people just, they want more from an operating system, and that's fine. I think that where it's totally one, of course, is the servers and embedded machinery like that. It's just totally dominated by Linux. And why do you think that is? Because that's the leap I don't see a lot of these, like, Linux 30 years. Like, why do you think it's used for that? I think, you know, it is free. It's easy to develop for. But I think the thing that makes it so powerful is that you can strip apart. It's very modular, in a sense. And you can strip it apart and strip it down to run on, you know, very simple hardware, but also build it up to build, you know, to create fairly complicated user interfaces. I mean, like, you know, you, of course, still see blue screens of death, lots of things are still running Windows, because Windows is essentially free with a computer. But, you know, one thing that's nice about Linux is it can really be customized in a way that, of course, Windows you'll never be able to, because with Linux you can create, you know, we had a custom distribution that we did. You can really customize it. You can write device drivers. You can do the specialty stuff that is very hard to do with Linux. Every, sorry, hard to do with Windows or Mac. With Linux, you know, the moment you install Linux, you have access to all the tools you need to plug into it, to extend it, and customize it. And you see that a lot, you know, a lot of embedded Linux distributions have custom binary blobs. You can argue whether that's good or bad. But it is something that you can do, you know, if you want to, it's possible for a single individual to port Linux to something like the Raspberry Pi, right? Whereas porting Windows to the Raspberry Pi, it's just not possible. You know, you have to get Windows involved. You have to get Microsoft to sign on to it. You don't have access to that. And I think that customization, that ability, it's such a small, it's a thing that not many people need to do, but if you want to have hardware that has an operating system underneath it, and you need to have an operating system to do IoT stuff now. It's very, very hard to connect to the internet to deal with mass amounts of data without the underpay. Yeah, it's just, I mean, you can have individual devices that are not Linux based, but like, you know, people always come to us and they're like, okay, you know, I want to have ethernet with SSL, what should I do? And I just say like, just get a Raspberry Pi. You know, if you're just, unless you are so power and size constrained, honestly it's cheaper just to get embedded Linux to do what you want because you have access to like all of the tools, you know, you can parse data. You don't have to reinvent everything over and over again. So I think that's where, from a hardware point of view, that's where I think it's powerful. Shout out to Bunny who saw this coming with the Chumbi where he was doing Linux on hardware before all of us. Yeah, I mean, I love the Chumbi was amazing. It wasn't the, you know, the PC 104s, I think had Linux beforehand. It wasn't the first embedded Linux board, but it was the first one where the idea was, you know, here is a development board that has GPIO and that has Linux and that has just enough hardware capability to interface. You can still see our first Chumbi guide where I was like, oh my God, I connected an accelerometer to Linux and I could read accelerometer data and then send that over TCP IP to something else. I don't even know that people were using MQTT at the time. So it wasn't like I sent it to, maybe there was people that sent it to Patch Bay or something, but it was kind of amazing. It was like, okay, we've got hardware and you've got software and you can actually, that firmware, firmware got eaten by software. Just, you know, I have opinions about device drivers. Part two of my question is, so we're the, not the only authors, but we've tried to do something, I think pretty important with Linux and Python and we called it Blinka. How does that all interact? Cause Linux had to happen for this to happen and CircuitPython had to happen. Yeah, I think the computers just got fast enough, embedded Linux computers got fast enough that they can run Python. And to me, that's really powerful because I've spent, I know Python isn't perfect with versioning and packaging, there's flaws with it, but it's not nearly as, for a lot of simple things, it's not nearly as extraordinarily frustrating as trying to cross compile C code from computer to computer, especially when you're dealing with stuff like GPIO, now we have the GPID, but historically you would have to memory map stuff to get access to some of this hardware, which just kind of really made it very unportable. And so having a layer like Python made it easy and I kind of, I like to pearl a lot more, but we saw Python sort of winning the interpreted language fight and so we're like, okay, we're gonna go in on Python and you can see my Linux Australia talk, there's a Linux conference Australia talk and it goes into this for like 45 minutes of the evolution of why I decided to have a circuit Python compatibility layer on Linux. Suffice to say, we only really want to have one driver for every, I don't like to have four different drivers, one for MicroPython, one for C, one for SDK, one for Arduino, you have one that's C-like and one that's Python-like and we're done. Everything else just try to stick to a standard and so for us, circuit Python and Blinka was that standard that we're now- 76 different boards and- Porting. And here's the thing, it actually works really well. We get very little support questions for all of the different boards. I mean, we get more questions asking to support, new boards, but for the most part, you can pick up any of these devices and then pick up any of our I squared C sensors and plug them in and they will just work, which is like pretty cool. Making it easy. Pretty cool. And that's, I want to spend a little time on this because this part of Linux is 30 years. Check out the LCA, I really, maybe someone can post the link because it really like, I spent a lot of time on it and it was, I did, I think, on January 21st or something, it was mid January and because I remember you were helping me with the talk and it really goes into people like, why did you decide to do this? I explain everything of why you can, you can argue with me that I didn't decide right but I'll explain to you why I decided it. And while we're in here, people were asking about CircuitPython and are there third party libraries? And yes, we have the community bundle and a bunch of the contributors happened to just be in the chat too, so. I really, look, I mean, I know a new standard is a standard, which means you have now another standard but really, if you're going to write driver code that you want to run on Linux, please, please, please write it using our CircuitPython compatibility layer. We will take care of all the nonsense of making it work from board to board and even I squared C, you often need your GPIO pan for reset or for address select or for interrupt and that stuff is not well exposed in Linux. That's what the annoying part is. Each board has a slightly different way of doing GPIO and so we kind of abstracted that away for you and yes, you can use Sisyphus but sometimes Sisyphus isn't available or they don't use it or it's very slow. So it's like, it's a solution looking for a problem or vice versa. I'll put a one more question in for this. Is it safe to assume that any CircuitPython board that's in there now will be supported forever? To some extent, I think that the, it might not be physically available. The SAMD-21s will eventually just not be able to support a lot of the stuff that we do because the chips are just small. So I think, you know, if you're, I think the bigger chips, you know, they're going to last longer. It's a little bit like Arduino. Like we still, we still sell the original Trinket with the AT tiny 85, but I really don't recommend it. We tell people don't buy this. People do and we tell them do not buy it. It's only for old projects. Yeah, but to flip that around, it's when we do an update with CircuitPython, hundreds of boards get all updated now right away. Okay, and that's Python on hardware this week.