 I'm going to take just a couple of minutes to get started here. Hello. See how it was going. Oh, yeah, my keyboard. I forgot about that. I tweaked my streaming settings just a little to be the main profile instead of the high profile to see how that changes things. Hopefully, we won't drop frames. I set it at the same frame rate. I just changed the compression profile. We'll see. Hello, Mr. Who. Good evening. Hello, DCD. I'm just going to take a couple more minutes before we get started. So I'll say hello to folks. I assume you can hear me. And then it looks OK. Hello, Beata. Hello, Ham's Labs. Things are pretty good. Yeah, pretty good. Rainy. Let's go to Windowcam. Windowcam. Oh, earlier when I had it, I had drops on it. But you can't see any drops right now. You can't actually see the light reflections on it, which is interesting. Hello, SC. All good. Thank you. OK, hi, MC Quinman. Thanks for stopping by. Hello, Charles. Ham's Lab says it's snowy where they are. Well, it's 2 o'clock. I think we've given folks a little bit of time. I've gotten the confirmation that everything seems to be running, which is good. Good afternoon, DJ Devin3. Hello, everyone. My name is Scott. I go by Tan Newt online. And I work for Adafruit on CircuitPython. CircuitPython is a version of Python designed for microcontrollers. Microcontrollers are little inexpensive. And this is where I look at my desk to find a picture of them. So here's a Feather RP2040. So the microcontroller here, and I'll switch it up. This black chip here is a microcontroller. And this microcontroller in particular is under $1. It's a full-fledged computer, kind of all in one. And this particular board is manufactured by Adafruit, who I work for, and whose channel you're watching. This is the DVI Featherwing. So it's got an HDMI connector that actually has DVI video going out over it. And this runs, I don't know, what $20? Less than $20? Where you can have a small program running in Python or CircuitPython outputting to an HDMI display. So yeah, so I work on CircuitPython. I do the low-level. So CircuitPython is implemented in C. So there's a gap between what Python code can do and what the hardware expects you to do. And I work in that zone. So if you, yes. That's why it's a deep dive, because we're actually usually talking about C code that under-route pins Python code rather than the Python code on top. Now, FOMI, who usually fills in for me, does kind of the higher-level Python stuff. So check out some of the deep dives that FOMI guys done for that. And thanks to Tim for filling in for me last week when I was out on a long weekend. If you want to support me, you can do it by going to Adafruit.com and purchasing cool things like that Feather DVI. And we'll pull it up and we'll, $15. Yeah, so pretty inexpensive. You may be like, oh, but if I can get it cheaper somewhere else, then I'll do that. But Adafruit products do also come with support on our support forums. So don't discount kind of what I would think of as non-tangible. Oh, and I turned off. You can see that I have the YouTube chat hidden over here. Let me turn it back on in OBS. There, now you can't see it. Yeah, arg-cad-arg-wire-rap-yay-blink-and-light-yay-usb, question mark. Not sure exactly what you're talking about. DCD did mention, oh, and hi, DCD. I forgot to say hi to you. DCD mentioned that I showed off the USB host feather wing working on Show and Tell. And I can talk about that if folks are interested, but I actually haven't been working on that today or yesterday. I kind of got it so far and then went, hey, TAC, who does tiny USB, I actually kind of need some more support in tiny USB to make that work well. So I've kind of handed the USB host feather wing stuff off back to TAC temporarily. Hi, Timon. DJ Devon three points out that on the Discord, you can get CircuitPython help in the Help with CircuitPython channel. And I should say I have two chats above me. One is Discord, and then above that is YouTube. If you want to join the Discord, you're welcome to by going to the URL adafru.it-discord. The nice thing about that is that it doesn't go away at the end of the stream. So that was like the original motivation to make a Discord server was that we could chat with the folks in our community outside of Adafruit streams. So it's super lots of helpful people there if you have ever have questions. Yeah, so this is deep dive. I think I talked about what the deal is. I do really like to answer questions. This is a two hour stream. It's pretty informal. So if you have questions about CircuitPython or electronics or whatever, I'm more than happy to entertain those and try to answer them if I can. I may not be able to, but I'll give it a shot. And I love, I really do like kind of being driven that way. I'm not great at writing documentation. So it's nice to, this is a chance for people to ask me about things that I may not have documented well. And I'm putting hand lotion on while I'm talking. So yeah, I was out last week since I streamed. So the thing that I thought we'd start with is doing kind of a recap of CircuitPython 9. So the last streams that I've done have been me hunting bugs for CircuitPython 9. And we actually kind of ran, I ran out of bugs. I kind of ran out of bugs to do. And we decided that at that point was the time to do the stable release. So we did two release candidates and then last week, Tuesday, Monday, Tuesday, Dan released it as stable. So 9.0 is stable in CircuitPython. And that's a big deal. We do a major stable release. So that like leftmost digit or that leftmost number, we tend to do it about once a year. So CircuitPython 8 came out in February of last year. And now CircuitPython 9 is out in March of this year. And thanks for the links, DJ Devin3. That's a great problem to have. Yeah, running out of bugs. Well, see, I only ran out of bugs for the ones that we had marked for 9.0. There's a whole backlog of stuff. There's a long deal of bugs there, but kind of like both ran out of bugs and ran out of steam. So the last week and a half has been kind of like a bit more of like me trying to figure out what the next big thing is for me to work on. And in that vein, yeah, I wanna talk about nine, but I guess I could also tease kind of what I've been working on in case folks want me to go there later. So one thing I've been working on is the USB host feather ring, which I just talked to, already talked about. And I'll just show that. So let me switch back to again. So this is a feather ring here, and we'll just turn the presentation mode back on. Product showcase mode. So this is a feather ring here that has a USB-A connector on it. So this is what you typically plug like a keyboard into. But it's a feather ring instead of just a feather. So what I've got under here is an nrf, and these are my, this is just debugging stuff, but I have an nrf52840 feather here. So instead of like reusing the native USB for host because then we wouldn't be able to use it as a device, we have this feather ring that Lamar designed that you can plug on top and then you'll be able to do USB host stuff. So I, tiny USB had already supported it. I did enough to connect it up to Circuitbython, but ran into some problems where if you use, in user code you initialize it, and then when you de-initial, like there's no way for a tiny USB to be de-initialized. So that's what I asked TAC for is like, hey, can you allow me to de-initialize this? So that's what he's working on. And that'll mean that when your code restarts, you'll de-initialize everything and you'll just restart tiny USB again. So that's what TAC's working on for this. I can go into more details about that if we want to. The other thing that I've been doing is, and kind of what I have pull up back here is that I'm trying to update the ESP IDF again. So we've, in Circuitbython 9, we updated it from ESP IDF 4.4 to 5.1. That's a pretty big jump, like those major versions tend to change a lot of stuff. But I also wanted to go from 5.1 to 5.2 because I'm planning on doing more expressive work. And before I do more expressive work, I actually want to upgrade to the latest because they made 5.2 stable kind of in that period between when we didn't want to change it for 9 and now. So 9.1 will include expressive 5.2. And Dan's already found, somebody reported a bug with Circuitbython 9 that is actually fixed with this update too. So this is kind of like top priority and it's a precondition for the other work that I want to get to, which maybe we'll talk about next week. But the thing that I'm kind of thinking is going to be my next thing between the USB host stuff, which I'll return to when tack is done, I will also be doing, I want to do BLE support on expressive. Because when we were doing that 5.1 update, we noticed that they added a feature that we needed to be able to do it. So that's why I'm updating the IDF so that I can kind of target the latest stable version for bringing full BLE support to expressive, which would be amazing. And I chimed in on it, that was near the top of my list on the issue and folks actually were like, quite encouraging in their responses. DJ Devon 3's made a couple of new comments, that's newer NRF 840 with a new penguin silkscreen and that means BLE keyboard. Right, so that's something that we've heard from people that they want to be able to do is use USB host to BLE so that you can translate from like a wired keyboard to make it wireless, is something that people are interested in. And then features of the newer IDF that you want to update, it's not so much that we need any features of the new one, although we found a bug that's fixed in the new one. It's also that just like when we start like major development, we want to kind of like work on the latest stuff instead. Bruce S says, I did notice that TinyUF 2 does support IDF 5.2 now, so almost insane. Nice, I didn't notice that. I ran it, I did run into an issue with this update. I, one of the major things, okay, let me go back to my desktop. One of the major things in the IDF 5.2 update was the migration guide. They have these really good migration guides. Andrew says, why? I want more wires in my keys. Well, you can use more wires if you want, but some people want, I mean, Bluetooth is really, yeah, we've had people want to use BLE on Expressive because I kind of half did it and then realized we couldn't do everything that we wanted to because we were missing this feature. And so we've had people come and say, like, hey, I tried to do this thing and now it doesn't work. Anyway, so they have good migration guides and the major thing here is this iSquared-C. iSquared-C driver has been redesigned and I actually did the update, but then realized that the camera stuff doesn't work. The ESP32 camera library that we depend on for the major product that we just released, I think I can say, if you don't know what Adabox is, go watch the unboxing, but the Adabox is the Memento camera board and you'll actually notice that my middle board here is green because I had a prototype. But I was testing my latest IDF 5.2 changes on here and it didn't work quite right, so let's work it on that. But this ESP32 camera library uses the old iSquared-C API. So, okay, DJ Devin3 says, does the newer ESP IDF have memory stuff? Oh, thanks for the link to the Adabox unboxing that you were interested in with dynamic allocation or does the IDF not factor into that? So the IDF, I think I talked about the TLSF bug last time and it's not fixed in the ESP IDF's implementation, but it turns out that I think the IDF ends up using ours anyway, because I noticed it was linked in. It was linked into things, so I think it's actually using our fix for it. Yeah, and Bruce has a link to the migration guide as well. Timon asks a separate question that says, is there a plan to support NRF 53 and beyond eventually? I was just thinking about this. I think our Nordic work will, we just renamed, so in 9.1, in Circle Python main now, the port's name has changed. It used to be port slash NRF and now it's port slash Nordic. And the reason Dan did that is because MicroPython calls their port, NRF as well, and we wanted to be in a different folder because our implementations are separate. Is there a plan to support NRF 53? Not eminently, it really depends on our, the ports that we're working on depend on the hardware that is most interesting to us. And right now that's really like the expressive chips are definitely in that camp, especially because they've announced like the ESP C61 and like the C6, we have a new C6 Feather. And frankly, I'm like a huge, huge fan of the S3. Like it's got Wi-Fi, BLE, and native USB, that's like the fact that BLE doesn't work is a big deal to me that I want to remedy. So, yeah. Of course, if somebody wanted to work on NRF 53 support and beyond, we're happy to merge stuff in. And I was thinking that we haven't updated, we haven't updated the Nordic SOFT device recently either. Timon says, I really missed having Circuit Python available for early testing on a recent NRF 53 project. I'm happy you missed it. I'm glad you like Circuit Python as early testing. I think when the NRF 53 came out, they did not have SOFT device support. So one of the reasons we never added it was that it was gonna be a huge lift to like move off of the SOFT device. I think that's changed since then. I think they added a SOFT device for the NRF 53. But I think that was part of the reason we didn't just like incorporate it from the get-go at the time it was going to be like Zephyr only, I think. But yeah, the Nordic port for us is still SOFT device focused. So there's potentially a lot of work similar to the upgrade from IDF 4.4 to 5.0. Timon says, I thought that the Beely audio support with NRF 53 could be really interesting, but I can see that not being very important right now. Yeah, I mean, I'd really like to get to a world where we have one Beely stack. Like in the same way that we have one USB stack, there's no reason we can't have one Beely stack. Like the Beely stacks are pretty well separated between host and controller, and we should be able to have one host stack that we use for everything. And I know that's what Zephyr wants to be, but Zephyr also wants to be so many other things. So I'm actually a little interested in getting into the ESP IDF's Beely work because they use their own version of Nimble, which is kind of like, was the competitor, does Zephyr and kind of like the bigger project there kind of like didn't get traction, but Espressif is using Nimble, their copy of Nimble for all of their Beely work. So potentially what we could do is take the Espressif Nimble and like make it more generic and use it for more than just Espressif, potentially down the line. DJ Devon3 says some of Nordic's new chips also have Thread, Matter, and Zigbee, which might have licensing issues that are afraid to, Adafree isn't a fan of. Yeah, I mean, we're watching Thread, Matter, I don't know if we're thinking about doing Zigbee because Zigbee, I don't know if it's still popular, but yeah, Thread and Matter is kind of on our radar as maybe things that we want to do, but it's not clear to me exactly how we would. Damones says, I love Circuitbython, I use it loads, that's why I'm here, ha ha. For more complex projects, I tend to use it to try out stuff and do board bring up before I move to C. Is that so much quicker for proof assumptions in Circuitbython? Yeah, and I think that's a great way, you know, my argument with Circuitbython is really like start with it and see how far you can get, and if you can't get all the way, then you know a lot more about your project than you did before, at least. Your brain's in NRF land, take a look, it may not be that bad. It may not be that bad to upgrade our soft device to the point where the NRF 53 is not too hard to sport. You should take a look at it, I really haven't looked at NRF 53 sport much. I have dev boards that I got from when I came out, but it hasn't been a priority. Sam Blenny is going to be my guess how to split your name asks, is there a plan to make a risk five port for the ESP32 C3? Context is I'm interested in exploring how to do Circuitbython ports for RV32 SOCs, and wondering if ESP32 C3 might be a good starting point. It probably isn't a good starting point, and I'd love to know what SOC you're interested in. So we already have C3 support, we also support the C6 and the H2, those are all risk five, but the deceptive thing is that the hard part for Circuitbython support is not the CPU or the instruction set architecture. It's actually everything else in the system on a chip, which is what SOC is for. It's actually all of the peripherals that are the hard part. It's not the instruction set architecture itself that's the hard part, because compilers do that for you. There's very small amounts of assembly in Circuitbython that you'll be able to reuse, but generally the hard part of doing a port is not the CPU. It's everything else. So the main question I would have for knowing that you want to do a different SOC is actually what USB peripheral does it have? And is it supported in tiny USB already? That's the major question is actually what peripherals are in use on it? And I have this long-term vision of actually trying to get us away from, right now we have this port structure where it's ports Raspberry Pi, ports Nordic, ports ST. There actually are third-party vendors that license peripheral IP that can occur in more than one vendor's chips. So I have this long-term vision of moving away from vendor specific stuff and actually just having different peripheral specific drivers, but that's a long ways away. So yeah, I'd love to know what chips you're specifically interested in supporting. Tawin says, I tend to use CircuitPython where I used to use Arduino in the past. Now that library support is so good in CircuitPython, there's often little reason to use Arduino as the starting point. And DJ Devon 3 says, you can't beat CircuitPython's fast iteration cycle for rapid development. Yep, I agree. Ellie and LinkedIn says, I definitely would like to know the next time you have a live. And I'm a live what? I know I'm a little behind on that comment, but if you're still around, let me know, clarify and I'll do it. Okay, so I talked about IDF updates and it's really just wanting to start from the new thing before we do some more work on top of it. And then we found at least one bug that's fixed by the new version as well. But before I get into that and the state is that I'm having problems getting it to fully build and I had a problem running it on the camera. I talked about the Hunter stuff before, so I'm going to close that. I wanted to kind of celebrate and recap to go by the nine, which I guess wasn't released last week, but it was released earlier this week. I missed a part about NRF port. Did you mean that there's now options to implement 53 plus without Zephyr? My last info is that they went Zephyr only for support. See, that's what I thought too, but I thought the Nordic, I thought they added 53 support to the soft device. I was just looking at this. I guess not. Yeah, I'm not sure. I thought they did, but that's the major hurdle. Soft device controller is a RTOS agnostic library built for the Nordic semiconductor devices that support Bluetooth. Soft device controllers distributed in different variants containing different features. They're available as soft float, soft fp float, and hard float builds for the NRF, the NRF 54H and the 54L series, and a soft float build for the NRF 53. So, oh, you know what? I think this is the newer documentation. I think that older pages is no longer used. So it looks to me, oh wait, what are the new docs? Let's see what the new docs say. Hey, we got back the two float energy. I don't know. It's been a while since I've, it's been a while since I've looked at Nordic, but you missed the whole host interface bit of the stack. Not sure how much changed. Hmm. Bruce says a friend was starting a home assistant project using ESP 30 base board. I recommend to microfire them for all the above reasons, faster iterative development. Ah, DJ Devon 3 says, what's the difference between soft float and hard float? Never heard those terms before. It's the ABI, soft versus hard ABI, float ABI. It's about what registers the compiler can assume it has, I think, where like, right, so this is, this is a good soft, this is pure software. So software is doing all your division stuff. Soft FP, this supports a hardware FPU, but the ABI is soft compatible. And then the hard is that the ABI uses float or floating point registers. Sam Blaney says, what's soft for RV 32? Things like precursor, peak RV 32 FPGA soft cores and Litex. Hey, we have a Litex port. It doesn't do much and nobody uses it, but we do have one. So yeah, it's, start there. There's port, Adafruit, CircuitPython, ports, Litex. The only board that it is for is for the FOMU, which is, I don't even know what image it runs on. But yeah, start there. I was thinking that it would target all of the peripherals on the Litex ecosystem. Yeah, so I would, I don't think we'll get back to NRF until we have a reason to. Like the NRF 54 looks pretty neat, but as far as I know, it doesn't exist yet. I don't think you can actually get it. Multiple N33 processors up to 320, multiple risk five co-processors, two megs, non-violet on memory and one thing, RAM, high speed USB, like that's great. And they say they're sampling it, but I don't know. I don't know. I haven't been able to get it at all. Like this, like a mega RAM is pretty awesome. But I don't really, I try not to get too excited about, I try not to get too excited about chips until I can actually get them. Once I can get them, they'll be more excited. The other one I'm very excited about that I can't get yet is the P4 from Expressif. Like they revealed it in January of last year and you still can't get it, but they're doing a lot more work on, they're doing a lot more work on in the IDF for the P4. That's partly why they're doing it. They were at Zephyr support three weeks ago for the H4, for the NRF 54. I don't know. That prioritization also for the 80 fruit funded folks comes from like what LaMoure thinks she can actually design into a board. A lot has changed from eight to nine. We'd be here all day to list out the new features and commits. Yeah, I haven't even got to that yet and that's 230. Randall asks, what does it take to add display IO to the UNIX port? What's your goal? Why do you want display IO on the UNIX port? Because if you're running on Linux you could just, there's a blink of version of display IO that runs in CPython. I don't know. I think with the NRF 54 we would have to decide if we want to try to get ourselves dip or toe into the Zephyr world and worry about getting sucked into that or whether we want to do something like use a soft device in conjunction with like nimble as the host side to unit test display IO. I think if you want a unit test display IO you probably just want to mock it out or you want to unit test the create static images. I don't know. That would be cool. There's definitely a lot of code in display IO that is not hardware specific. I think you should talk with Jeff because I think Jeff's been thinking about this too. Talk to Jeff Epler because he's been working on what he calls a POSIX port and I think his idea is that he can run more of that separately than two. Taya says, do you ever request early samples like the P4 or wait for Adafruit to send you things and slash they become purchasable? I do get early samples from time to time. There was like some Twitter post for the C3 I think where the espresso person was like send me an email and I'll send you some C3 hardware. And so I did that. So I got like some of that early. The Raspberry Pi folks came to us for the RB2040. We got that early. I think we early, early on we actually knew early about the Sandy 51 and we got early hardware there. So it's not just a matter of getting hardware early, but it's also wanting to actually, like LeMore wanting to design hardware around stuff. Do ping me a Zephyr every becomes relevant? Clearly give back some Linux display work for LeMore, but happy to do Zephyr meets CircuitPython if need is there. Yeah. I mean, if the, if the NRF stuff becomes more of a priority for LeMore, then you should talk with her about that. I'm not sure that Zephyr is the way I would go, but I don't know, we're thinking about it. Two big projects colliding is kind of like recipe for a black hole. Like Zephyr is opinionated about how things should be done and then like CircuitPython's in this weird position that we interface with a lot of different vendor SDKs that all want to get you suck, get your code sucked into their like build system and ecosystem and stuff and it's a pain. All the vendor SDKs just assume that you're working with just their vendor or with their thing. And Zephyr is like cross vendor, but it still has that same kind of gravity to it. Yeah. P4 is really interesting to me also because it has these like Mipi, CSI and DSI, which are pretty cool, more modern camera and display things. So yeah, this is one chip I'm excited to get my hands on. It's the P4. And one reason to stay up to date with IDF. Maybe ripping out some aspects of Zephyr. Yeah. I don't know, like Espresso's Nimble is like better, better like segmented, which branches the most two days ago, nine hours ago. I think this version of Nimble is probably more common or more updated than the original. No, I guess not. It was the original was updated 54 minutes ago. We tried to contract with this person, but it didn't work out. MCQuitman asks, how big of a micro SD card can the Memento camera handle? I saw from the guide that it says 32 gigs, but I'm actually, I haven't done a lot with the Memento. So there's other folks that are better to answer, but I was just looking at it myself because I finally put it together. Jeff Epler did a lot of the software work for this, Espresso messing with a graphical boot loader had P4 added recently too. Interesting. I also saw that they have this bridge, USB bridge thing that they're working on too. They asked for IDs for, like you have two IDs for some new chips and I was like, why do you need that? Those chips don't have native USB and they're like, actually we have this thing that they're working on probably for their new dev kits where they slap a S2 or an S3 in front of the new thing and then copied over. Be honest, as I think it's limited by fat 32, anything over that is going to be X-FAT. I thought we had X-FAT though. Circuit Python, I think does have X-FAT support. So I thought it was enabled. Jonathan says, on LinkedIn says multiplexing and I'm not sure what a context there is. Anyway, let's talk about 9.0. So 9.0 is out. It's the new major release of Circuit Python. It was kind of facilitated or motivated by the desire for us to update core MicroPython versions and we have a desire to update our major version whenever the NPY format changes. So the NPY files are kind of like a somewhat pre-compiled version. Okay, DJ Devon 3 says I have 128 gig SD card in my Memento and it seems to work fine. Espressive has their own vendor ID, that's correct, but they were getting a UF2. The UF2 stuff has a separate ID for a particular chip family. It's not a USB-V ID. It's something else. It's for the UF2 files. So 9.0 was primarily, it wasn't 8.4 or 8.3 instead. It was 9.0 because when we wanted to say that it's like a major change, but also that we wanted to do MicroPython updates that required NPY version updates. Because we structure all of the NPYs that we distribute as a like, here's the major version that they apply to. So anytime we update that, we will update our major version of Circuit Python. And actually I was talking with Jim who works on MicroPython and the current version, the new version that we're not updated to, the one that's about to come out and the one after that probably won't update the NPY version at all. So theoretically we could actually have 9 live quite a while, at least based on that constraint. Okay, so incompatibility warnings, new storage management, internal, I'm not sure what that's talking about. The file systems such as SD cards need to be mounted on an existing directory instead of not having anything there. Sockets must also be made explicitly reusable. Display.show has been removed. You now have to assign to root group. And the reason we did that is because you can now read root group as well, which is handy. And then I started to keep peripherals now renamed to I squared C target. And the reason that renaming happened was because the I squared C standards folks actually came out with terms. Some nice as a future warning ePaper display move from display to ePaper display. Yeah, so this is not an incompatibility. It's a future incompatibility and I was complaining. I'm not happy with the way that we did this rollout. So yeah, I'm just going through a 9.0 upgrade now. You can disable the prints for warnings and then they'll just go away and it'll still work. But by default, the prints are on. I don't think I'll do it. I don't want to do it the same way next time because everybody sees this future warning and says, oh, I got an update. But that means that your code has to either be complicated to work on eight still. You have to like do a version check to know what to do or you won't or you don't work on eight to do the update. But I want to so what I wish we did was to introduce the new names for those modules. So we moved to these classes so display was really a bus display because it required you to give it a particular display bus. So it moved to bus display and got renamed, ePaper display got moved out. So display Ion now only has core kind of structures for the way that you have a tile grid and a palette and a color converter. All that stuff that's not specific to the type of display is in display Ion proper now and then all of the different types of display things live outside of it. And that gives us more flexibility in the long term to disable certain ones, which is especially handy if your board has a native display. So you could have display Ion and the particular type of display bus that you need for your board, but nothing else. Which we kind of went we did for later additions to display Ion, but for those first ones that we had originally like we didn't break them out. So what I wish what we had done is move everything but make it still work. Don't have any warnings and then get it stable, get people using it, get to this point where we're like nobody's going to nobody really should be using eight anymore. And the maybe 10 is like in the works. And that's the point where we say we're going to add these warnings now to the current stable release nine so that people have this motivation or this knowledge that they're going to have to update. Because we want people to update before it break, like without breaking it or like we don't want to break it. We want them to update before it's broken. But I think it's a little we did we did the warnings too early. We should have waited on the warnings. We should have added the warnings when we could realistically think you didn't care that it was backwards like that that you didn't need to maintain backwards compatibility. Which is kind of where we're at still. We still really want everything. We still want to kind of support eight until we're more confident in nine. So yeah, it's kind of annoying. It freaks people out a little bit. It's actually like a standard. Andrew says the way CPython declaration warnings work by default is nice. They're hidden by default, but you can opt into getting the messages. See, I thought CPython defaulted to showing them. My intention was to copy how CPython does it. So if CPython actually defaults to not showing them, show me, send me a link and we could change it. We talked about actually changing it because people have been freaking out a little bit about it. But it still works just fine. It just causes these kind of sporadic prints. But I kind of do like I'm okay turning it on by default. In that future where people can just change it without worrying about being backwards compatible, like we've had a lot of learn guides updated already. And like the way that they have to update is they have to do this check for like eight or nine. And it's kind of a pain. DJ Devon three says having buses separated from display does require one more import, but the modularity is improved because of it. The shape who says the idea was that you would enable the warnings in your CI, but few people test their circuit by the diagrams. Yeah, circuit. Oh yeah, I don't even run CI for stuff. Okay, let's keep going down here. Audio, SynthIO got a lot of improvements. I2S M clock pin support signed amplitude in SynthIO. The warnings module, so it does the future warning stuff does. Dexter says, how about a migration tool to help identify such issues? Yeah, potentially. I actually thought about writing a learn guide. You know how I've been referencing this ESP IDF migration guide? I've been thinking maybe what we should do is we should have a running learn guide that's like every major version changes. Why weren't that the different display bus types made as sub modules of display IO? Um, it's a good question. There's only one case. There's only one case where we have a sub module for native modules, and it doesn't work that well. And that's actually microcontroller.pin is a sub module. There's some, at least there were some limitations about having like native sub modules there. And it would be a little weird if you could import display IO, but display IO did or did not have attributes. I think it would be a little weird. But yeah, we're certainly getting like more and more stuff in that top level for sure. Dexter says it's very hard to make such migration tools robust. The plan was for Python 2 to 3 to be migration, for example, but it turned out that how dynamic Python is, it's really difficult. I don't know. I kind of, I like this pace of like once a year doing a once a year doing a major update. I kind of want people to understand that like once a year, we're going to have this like slightly more difficult update process. But I also, people shouldn't realize that like all the old versions are still available. They should run on hardware they ran on before. They may have bugs that we fixed, but they also may not have bugs that we introduced. So you could always run. If you have a project that works on an old version, there's no reason for you to update. Unless you want to change it and get some new feature. Yeah, display was removed. Yeah, here's the the naming structure changes. JPEG IO was added, bitmap filter image manipulation was added. So now that AdaBox has been unboxed, you can see that actually like a lot of this work for bitmap filter and JPEG IO was work Jeff was doing for the camera. New split heap internal dynamic storage. I'm very happy that we did this. I don't think a lot of people have run into problems with it, but we'll see. Merge MicroPython 119, 120 and 121, which is awesome. And the expressive update from 4.4 to 5.1 were all internal like big tasks, like not like multiple weeks worth of work kind of each one of those things. SD cards available over web workflows, something that I did. I also required this explicit reuse because somebody had done an error. Some fixes to Android, incompatible changes. You have to make sure that you're you mount to an existing directory now. Rebel.py is new, webcam supports new, HID can wake up a sleeping computer now, USB host support is new, and you can set the USB header face. So those are all highlights that Dan has pulled out. Dan did these release notes. On the running old versions, how can one establish which version of a library should work with which circuit Python version? So when we turn off the bundle, I think it's in the FAQ. There's somewhere where you can find the oldest or the last version of the bundle that worked. Using older versions, yeah. So there's an FAQ link. I'll copy the link too. You have to run as fast as you can just to stay in place. Yeah. And this is probably little known that we actually do maintain links to old versions. Does it work? Yep. We just downloaded it. So yeah. Basically, while we produce bundles for a particular version, we want the libraries to work on the old version as well. And then when we turn that off, so say we're working on 10 now and we need a new MPY version or not, or we're like 10 starting to be pre-released, we'll turn 8 off in the bundle and we'll kind of flag what version was the last bundle with those MPY files in it. And then after we do that, then we can go through libraries and delete any code that was like, if 8, do this sort of stuff. That's the intent is that we kind of always have these two releases that we're tracking. Early on in a stable release like 9 is, we'll do 8 and 9. And then at some point when we're moving on to 10, we'll disable 8. And new to me is Connection Manager. Yeah, Connection Manager was done by community member Justin after he realized that there was a lot of duplicate code between requests and mini MQTT around tracking, not necessarily sockets, but like sockets that have been opened for two given servers. That's why it's connections. So Justin's been doing a ton of work in that area, which has been great. And that's why when request was switched to Connection Manager, it was a major version of that library as well. So to try to highlight that like, and that's something that people should be aware of that we don't quite market or communicate as well. Like we do have independent versioning for libraries. And when they do major releases, there may be breaking changes between major releases of individual libraries as well. So that's the highlights that Dan has been, that Dan pulled out into the release notes. And you'll notice that like these release notes kind of just kind of like evolved over time. These are stable, these are unstable, changes since 9.1, not much. So yeah, that's the highlights. I don't know if there's any other, like Synthioga a lot better. Lots of fixes. I'm just like scanning this. Like the changes since are like the more exhaustive things. Connection Manager added the things. Lots of camera support in 9. And that was part of the reason, and now that we've had the 8-a-box unboxing, I can say that too. That is like one of the reasons we've wanted to push really hard to get 9.0 stable is because for the 8-a-box for the camera, for this, like you don't really want to use 8 with it. Like there's so many new things that we wanted people to use 9 with it. Todd says most of the Synthioga changes were done in 8.2, but did not exist this time of last year. Yeah, there was some iteration in 8. I think that, yeah, that sounds right to me. Synthio actually was originally originally originally a community member contribution. And then Jeff was working, like kind of just ventured off into Synthio land for a while. And I think Todd thought was one of the folks kind of giving him ideas on ways to make Synthio better, which worked out really well. I think people have been really happy with how Synthio works now. Yeah, so like in my mind, if I remember right kind of how last year went, it was like, you know, we did 8.0 in February, we did 8182. I don't even remember what made those new. But then like kind of when you run out of like things you want to do there, at some point you're like, we want to upgrade my micropython again. And we had to do an MPY version so that and then we also wanted to do the IDF change. So like those two things were kind of like, okay, we're going to call main 9.0 now. And we actually had quite a while between doing that and doing that and releasing a first alpha of 9.0 because we wanted to do all three of those micropython updates so that we were on, we actually did two versions of MPY files in those updates. So that's why we delayed the alpha. We didn't want to release an official 9.0 until we were on the MPY version that we were going to have with the stable. Which I think is kind of interesting as well. Talbot says, yeah me, see Grover, JP and a few others. Yeah, that worked out really well. I'm kind of having that collaboration. Look how that get local, are there any other related language string and inner realization stuff? Not that I know of. There were some build tweaks about whether we compressed strings or not but no, we don't do any sort of pluralization or anything. It's all just like remapping one string to another and a lot of boards. That's the other thing. Folks notice that we're like almost a 500. 484, 500. Okay, any other questions on 9? I think that's all I wanted to do. It was a lot of work. Like the IDF update and the microbyte that updates were a lot of work and then Jeff Dit was doing a lot of work around the camera stuff. Can a device support monthly language via some set locale? Not currently, no. Right now we actually build just the language strings in there. We've discussed splitting out the language strings so that we can either store them in the flash file system or change them dynamically and not have so many builds. Because that 484 number, we build all 11 languages with it too. It's kind of ridiculous. Yeah, we'd have to re-engineer how it. Andrew says, I had forgotten a detail that makes a difference or a circuit if I thought on the definition warnings. Ignored by the default warning filters except for the main module. Yeah, the filter logic in the warnings as I implemented it is very, very basic. It's just like switching whether it's do you raise an exception? Do you print it out or do you ignore it? I didn't add any like further filtering. Yeah, I wanted to be compatible with CPython warnings but as a subset not fully, because it's complicated in CPython. Okay, so updating the IDF 5.2, I had this draft and I've been trying to get it to build. And I think I'm down to four failing ones and I was working on this one and it looks like it just succeeded. Andrew says, you should plug your PyCascades talk. It would be good to see some circuit Python people there. Yeah, are you going to be there Andrew? Because you'll be the first person I've heard that is interested. So PyCascades is two weeks away. I was actually debating starting working on my slides. I will probably be working on my slides next week. So we'll talk more about this. But I'm giving a talk on cutting the cord, cutting the USB cord for circuit Python. It's all about circuit Python workflows, Bluetooth, USB host and Wi-Fi. Wi-Fi's the last one. I'll be talking about that at 2 p.m. on Sunday, the 7th, which is actually my dad's birthday too. But I was actually planning on, PyCascades is a regional Python conference that, thank you Todd, what is PyCascades? It's a regional Python conference that switches between Seattle, Portland and Vancouver, British Columbia. So it is in Seattle this year. It is running April 7th, the weekend of April 7th, which is two weekends away. 6th and 7th. I will be there, but not the whole time because I have a two-year soon to be two-year-old. So if you want to meet up with me, Andrew and anyone else who's going, please coordinate with me so I can coordinate with you. I can't dedicate the whole weekend to it just because I have a two-year-old. So I actually need to figure out which one of these I want to try to make. And I was actually debating this early morning section. I might actually bring the toddler with me because I typically watch him on my own in the Saturday mornings. So you may be able to find me that I may have a toddler running around with me. Yeah, and then I'm giving a talk on Sunday afternoon. And I'm probably going to be working on slides for that next week. I wanted to take some time and actually figure out how I was going to create the slides. So if folks like, oh, let's talk about me giving talks. If you go to my website, tanute.org, I did update it at some point with links to talks that I've given. And I also have a GitHub TANU presentations repository. So when I did this Python next decades in us, I did, I was using Dexset on Mac to do this, like mark down to things. I'm like, this is like dusting off. Looks like that's what this is too. So yeah, I'm dusting off my presentation skills after the pandemic, basically. Pandemic and having a baby. But I did update my website with links to all of those. All of the talks that I've given, if you want to see that. Gary says, I'm looking forward to watching the talks after assuming they're available afterwards. They should be. But unfortunately, for this example, they did it the 2021, which was like right before the pandemic really hit the US. It was already going because it was February of 2020. But like my talk is like eight hours into the stream. And I'm really quite sad that they've never split it out. And I actually rewatched the talk and I was very proud of myself for it. But my website's got a link to the specific time code there. And then to shape it also pointed out that Python US is in two months. I'm not planning on going to Python US, but Jeff is giving a talk at Python US, so he at least will be there. And I'm sure he'd be happy to meet up with folks. I'm not able to go see Note about Toddler, whose birthday is on Monday. He turns two on Monday. But yeah, if you're in town for PyCascades and want to meet up, or if anybody is in Seattle and you're watching this, reach out to me. I'm happy to meet up and get a coffee or tea or what have you. It's way easier for me to meet people in town than it is to travel. I'm actually planning. I think I mentioned it already as well. I'm actually planning on going to the Zephyr Dev Summit, which is also in Seattle here two weeks, I think two weeks after PyCascades, but it's during the week. So it's easier for me to go during the week when we have daycare. I'm planning on attending that as well. And yes, time does fly. I agree. It's also the Invented Open Source Summit. I kind of like, oh yeah, so it's like a week and a half after PyCascades, because it's during the week. But I will be at this one as well during the day. Not giving a talk, but I'm excited to try to link up with more like industry folks. Okay, that was a fun tangent. Let's, looks like I got this building. Let's build the other one. These MixGo CE builds were not working because they have these frozen modules. Oh, and I turned AESIO because I don't think anybody actually uses it. But it's also like a software implementation of AES encryption. So that freed up enough space. So let's just, right now I'm just trying to get everything building so I can merge it in. Which was surprisingly difficult. Tanugent. I used to have an underscore and I'm kind of wishing I did. What I really wish is, I thought about having my username be, I can't wait. I kind of wish I had kept that, but I think it had been taken on Twitter already. But yeah, I kind of wish I had stuck with that. The nice thing about Tanu is that it's like super unique. So I can get it everywhere. It was literally like randomly generated in 99 from what I can remember. You know, I found this adjective noun generator and got tan nuke. And I thought it was kind of a funny image of a nuke tanning. And then I dropped the underscore, which I kind of wish I hadn't. But I wish I hadn't because then it would be easier for people to pronounce. This will probably overflow. We're going to probably have to do the same things here. So I did a couple changes to reduce the code size of it. I turned these two modules off because I don't think anybody, most people don't use them. And then I also set the compression level, which will slow the build down, but mean that it runs like more compression. Yeah. So this build is 5000 bytes short. Like the IDF update just made it bigger. So let's just copy the same changes. And that makes probably a lot of sense too to copy the same changes so that these two boards by some manufacturer are work the same way. And this I've enabled co-pilot. I went down a huge rabbit hole around editors last week or the week before. I went down this whole like whole rabbit hole of switching to Tmux and Nvin and all this stuff only to come back to sublime text because I really like sublime text. And I think that bug, I think it's fixed. I actually filed an issue on sublime text, but I don't think I had. I didn't hit it at all today. It's been really, it was really annoying where the cursor wouldn't click around. But I think it gets fixed now. I updated like Wayland protocols or something. I think it fixed it. Anyways, let's we set those settings. But I went down this rabbit hole looking for another editor because I really do want to try like integrating co-pilot a bit. Not to like write code for me, but the autocomplete could potentially be a lot better. And I just set that up today in sublime text. After I got a message on my sublime merge that I was no longer supported, turns out when you purchase sublime, it only covers three years of updates. And I'm actually over my three years. So I just spent more money to get the newer versions. Autocomplete and the command line too. I use the fish shell is pretty good for autocomplete and the command line. Although like coming up with magic voodoo CLI stuff could be nice on the command line. We'll see. I'm also experimenting with, I also set up like I set up all the language server stuff. So it actually has like clang D running now, which I'd like to get us working with clang. But right now it's it's probably not very helpful because it's not aware of all the include pass and stuff. Yeah, we'll see. I am open. I am open to like this commit this co-pilot and do it quite a bit for autocomplete. The other thing I the other reason I went down the rabbit hole is I do have this like right now that I have this office space working from home means I have to like make sure I've committed and push changes, which I can do over SSH. It's not too bad. But like VS code is that Python code. This right here is C code. This is C that is under the hood of the Python that's certified. Terrell asked that on X. So this is a deep dive in where we generally talk about the C code that underpins the Python code in CirclePython. But right now we're just trying to get these builds to fit, which this does. And so speak of supply merge, I'm going to pull up supply merge, which I like quite a lot. And I like it for this reason. I was also wanting to try get Butler. I linked this on the Discord. There's two really good Git talks. Scott Chacon did them. Did them recently. Currently working on Git Butler. And this part too, he just hasn't updated the link. It's actually on there too. But this so you think you know Git is a quite good talk. Beware, beware, beware, beware. That there's one command in here to fetch the, to fetch heads of poles. But I set that setting. I set that setting and then none of my branches got updated. So like don't use like one of these commands that he puts in here. Because it will break your branches. Like my, my copy of a different main was no longer being updated. Yeah. So Git Butler looks really interesting. But yes, it doesn't support, doesn't support sub modules right now, which is heavily used in circuit pipeline. Oh, they have a Discord. I like collect Discord servers. I will add that to my own. Onboarding. That's pretty neat. All right, enough of that. Something that I'm subscribed to the sub module issue. Because at some point they will support things with sub modules. The other thing that I was looking at was the Z editor. And that kind of got me down the Vim rabbit hole. Because they have more co-pilot integration. But I'm actually quite happy slash interested in the, in the co-pilot integration that how it looks in, in sublime text. So that should be, I really like sublime and sublime both merge and text. And like I filed an issue about that cursor thing. And the guy tested it and found that he couldn't reproduce it. But like got right back to me still. And that makes me want to like as somebody who's paid to do software, I wanted to support them in that. Okay, so this is how I use sublime merge. Mainly to stage individual pieces. So if, if I'm ever doing two things, like this is the pitch for git butler. Like sometimes I have like debug prints and stuff that it's really easy to just discard those changes in here. And then you can even like highlight certain lines and then discard just those lines. But in this case, this is instead of like using git add. Instead I just like use this. And now if I go back to my git, I can see that I get status and I have these three things staged. Neo Vim is probably more polished than Zed still and also has better completion LLVM integrations in stock VIM. Yeah, so I think I do use VIM. If I need to edit something quickly through the, on the command line, I am trying to do that. I am trying to use Neo VIM instead. And I found that, like I said, it went down this rabbit hole. And there's like distributions of different like default settings for Neo VIM. I, yeah, I ruined, I like ruined my YouTube. My YouTube recommendations right now are all Neo VIM and it's just not. Like I backed out a lot of a lot of that. So they're not very useful to me right now. One is this like Chad, like Chad, Neo VIM and V Chad is like one distribution of settings. And I will tell you that I really struggle with all of this command line only stuff because it's all hotkey based and having a way to discover what the hotkeys are and remember what they are is actually really a pain for me. So I really like things that are labeled. Andrew says, you should start with an empty config and choose your own. Don't do the distro thing. I watched a video that used this one. And then I think there's something to be said for good defaults. But the one that I actually found more appealing was the one that's lazy VIM. And I like added the compiler integration, but it does a better job of like explaining things. So if I do end VIM make file or something. So now it's lazy VIM and it like pops up this thing, which kind of drives me nuts. But if I just hit the leader, now I get a pretty good listing of like what other characters I can type. And I also like that if I do the colon, it's not showing at the bottom anymore. I like that it actually popped up like a thing there. So if you want to go into this new event world, this is kind of like where I landed is that like, yeah, I'll try to use it instead of in now. I also went down the like new terminal route and like vaguely Tmux. And I just don't I couldn't do it. It was too it was too hockey driven and I can't find the things. And I probably the other reason is like I don't have any labels on my keys. So it is hard for me to remember like control like hot control alt locations and stuff. And and because I don't have labels on my keys, I can't confirm I'm pressing the right button to like get some behavior. So yeah, I went down that rabbit hole, I learned some stuff, but I got over like because I had no like license expire for sublime text, I kind of re re upped my commitment to using sublime text, which I I like a lot and Sublime Merge is good too. It cost me like 150 bucks for a three like, you know, two, three year licenses for each one, I got the bundle, just got the personal licenses. I think I was Scott Chacun talks talked about how some modules are the devil. They had people I don't think anybody really likes some modules, but there's no better way to do it in my opinion. I really I prefer some modules over even like well because I'm I'm usually dealing with source. So I like to just have the source. Taya says that's probably my favorite feature in VS code on stage lines. Yeah, I actually installed code VS code again, but it just it always had these pop ups for like getting everything configured and like and this is part of my gripe about all of this helpful stuff is like it assumes you're in this clang world for all of if you're doing see it's assuming clang D is like your language server, I'm like we don't build with clang and we also don't like build with this build system that gives it all of the metadata currently, so it doesn't work that like the clang stuff doesn't work that well right now with circuit Python. Yeah, so you can discard debug lines on a commit and that sounds so good. Yeah, slow to finish loading platform. I am so painful compared to just using VS code to open a json file. Yeah, that's the other reason I like sublime text is that it's like it's very quick. And just says yeah, good defaults are good, but don't address your issue with discoverability, whereas putting it together yourself you've learned to keep on eggs as you go. Yeah, but the distros also include that like helper thing that kiss you the option. I don't care. I've been using sublime text for ages and I'm generally a dumb text editor and printf debugging person, which is nice in that it works across languages and thanks. It was kind of mind boggling to me to do embedded and realize I didn't even have like serial connectivity. So I actually did blink based debugging, which is like, well, there's something that's like even less savvy than like printf debugging, just blink debugging, which can be handy from time to time. Anyway, so I did what did I do? I did the commit. No, I haven't committed it yet. A couple other boards. Scott Chacon in his two talks that are that are newest references that he likes the merge approach instead of like the glean clean get history approach, but he doesn't tell you why. And I wish that he had a reference which is like here's the reason you should do merge instead of rebase. He's probably done it before and I just don't know what talk he did it in. But that's kind of like an issue that I see between like how I use get and how like even micropython is more kind of specific. Oh, another thing I like that's a little slow because I have a lot of branches, but I should figure out how to truncate it. But he has this formula for this get bb command, which tells you like which branches you worked on most recently, which is really helpful. Yeah, to one says it's most bigger ideas don't work well if you deal with lots of different languages. Yeah. Okay, so I pushed here. If I refresh, we should see that. But yeah, apparently I've been using sublime text for three or three plus years. I've been really happy with it except with that bug that I hope has been fixed. I haven't run into it today. We have about half an hour. Do folks have preference on what we talk about work on? The other thing I could do is do a new build for this and see if it works. I probably should like the camera stopped updating once the SD card was in there and I wasn't sure why. Actually, maybe I'll load. I was going to load 9.0 to see if that happened on 9.0 as well because then it's not my problem if it works that way on 9.0. Did I not push? I committed but I didn't push. I think partly also because I don't do type script or JavaScript, I'm just not sucked into that world either. VS code is in that world because it's all JavaScript under the hood and a lot of the tools use Node to run JavaScript and I've never really been in that world. And then the nvim, tmux, super modern terminal world is very heavily Rust. And there's some awesome Rust command line stuff. I love that they're coming for like, I use RG and FD that are like Rust tools for the command line. Those are great. And I think Fish just did a rewrite in Rust. But I'm also not super sucked into the Rust world either. That's not all I want to do. Yeah, let's do this camera stuff. I want to get this done because it's Friday afternoon. I have to think, how do I want to set myself up to get a lot done next week or make some more progress next week? Especially if I want to start on the BLE ESP stuff, I want to get this in. And now that Dan's found a bug that's fixed by it, we may do it quite quickly actually. We'll see. We'll at least do a beta or an alpha pretty quick for people that, like the bug that was fixed is not that. UV plus rough are super nice for CPython too. Yeah, UV is a replacement for PIP, right? We've had lots of discussion recently about rough, using rough. MicroPython switched to rough for Pylint. And then they also, and we were doing, like Justin, I think, was doing some import related stuff for CPython. So we're talking about doing rough for CPython as well. Now we have a ton of libraries, and it's quite a big thing for that. Not sure if VS Code is necessarily really VS Code-ed. I find it great for the same reason that I love Sublime, but I added some low friction goodies that helped my workflows. What low friction goodies did you like with VS Code? All right. You're using Sublime? Did you move from Sublime to VS Code to Mo? Simplified IntelliSense works really well without ever needing to set up much. Sam changes. For people new to CircuitPython.gov, do you have any ideas of issues, issue tags that would be good for getting to know the code base? Like maybe boring maintenance stuff that hasn't been getting much low of lately. If you're doing FPGA stuff, I've wanted to get into that vein for a long, long time. Doing more on the Litex port and also having like standard SOC images that people could load would be super cool. The ones that I've always wanted to work on are the OrangeCrab. They're feather-shaped ECP5 boards. I think that'd be really cool. The main thing, if you're wanting to get into CircuitPython development, the CircuitPython dev channel on the Discord is the place to be and get help building CircuitPython and things like that. Yeah. Litex is a huge complex thing. I've got opinions. I actually own the domain system on a chip.org because I want at some point, I want to get into the FPGA world and make a Python assemble your SOC language thing. SuperJunk says, I'll check out UV. Yeah, I haven't tried UV yet, but yeah, I've seen it making the rounds. Up5K and USIS tools. Language server support, SSH integration works super well and IntelliSense is just kind of magic for getting code hints. Yeah, I could give it a try again, but I don't know. The build system in CircuitPython, and that's primarily what I work on, is like not conducive to getting all of the tooling right either. And they've kind of taken over the world. I kind of don't. I like supporting more than one project. And actually, I like paying for software as well, as long as it's not super much. But yeah, Sam, if you want to play with the Litex port, that'd be cool. DJ Dev and 3 also asked, any updates on Hancho? Saw the Dev came into Discord, which is always nice to see happen. I've been talking, so Hancho, I think I talked about last week. I've always wanted, yeah, I talked about it last week. I've always wanted a build system, a better build system for CircuitPython. It's like this amalgamation of make files, and you have to say at the top level what board you're on. And then I saw this Hancho thing go by on Hacker News, and it really resonated with me or what I want, which is it's all Python. It's pretty simple. So I've been going back and forth with Austin, who's the guy that created it, who actually used to be on like a sister team to me when I was at Google. Him and I have been going back and forth. So you see, there's like updates here. And a lot of this, these updates have been kind of caused by me trying to use it. So yeah, him and I have been going back and forth. And it kind of like actually got him set up with CircuitPython. And like my, I have a branch, it's my Clang18 branch, but I have a branch where I was, I've been working on it kind of off and on. But I've been waiting for him to kind of get back and like do another iteration of Hancho to see how well it works for me. So yeah, you can see that like three days ago, I did some fixes to it. So this is this, if you want to follow along with that, you can follow this branch. I've been mostly playing with the Ice 40 up 5K and the OSIS tools. The other thing that is really neat to me is the, yeah, these, the boards that are RP 2040s and up 5Ks, I don't know how much sock you can fit on an up 5K on its own. Like I don't think you're, it's not going to be very compelling CircuitPython experience on an Ice 40 because you don't have that much RAM, which is why like the ECP 5 has been more interesting to me because it has more RAM. BSM, other issues, I don't know. I don't know what other things that people want. We have lots of issues to get to know the code base. You could try doing this, getting the alarm running on expressive stuff. I don't think that would be too, too hard. But yeah, I mean, if you're in the FPGA world, I've always wanted to do, I've got lots of ideas on, I'd love to see CircuitPython on a soft sock. I think that'd be super cool. But I've always thought that one of the barriers to entry for FPGAs is actually building the sock. And then you suggest like having pre-built socks to people and they're just like their mind explodes, right? Like the point of the FPGA is it's reconfigurable, right? So, yeah, I would say I would love to see CircuitPython running on ECP 5s in particular because that I think is where you're going to find more use. But you need to have pre-built FPGA images in addition to pre-built CircuitPython images. Tya says, what's the story with external RAM and FPGAs? Can that bring CircuitPython while keeping the cost down? Yes, yes. Yes, you can use external RAM with FPGAs and in fact like the orange crab like I'm talking about actually has like DDR. They cost about, yeah, I've got lots of opinions about this. I've thought about this quite a while. These cost about a hundred bucks. It's really hard to compete price-wise with a hard microcontroller. DJ Devon 3 says, I got an ElectroSmith C-Daisy that has an STM chip with 65 megabytes of RAM. Yeah, so that's like the higher end microcontrollers will generally have DDR controllers in them. So that's probably what this is. Here's the STM chip and then here's like a giant DDR chip as external RAM. It shouldn't be that hard to support. Those are famous last words. Like it's a good price, 20 bucks. That's pretty interesting. What is this? ElectroSmith boards LBR. I don't know what that is. Getting started. Technical datasheet. Oh, so it uses SD RAM. So that's what the SD RAM chip is. M7 at 480. Somebody was talking about this. Like what ST chip it is. In theory, it shouldn't be too hard to port circuit Python to something with ST. This is all audio person speak. 20 bucks is a good price. Hardware revisions, STM32. I'm sure it's well documented in terms of hardware revisions. Oh, here's a schematic. It's not a full schematic. Part of the reason to get one of these though is that like they have really good software. And in fact, they may not be telling us what ST part it is because it may change. Like it's possible that they actually want different ones. That's not the one that's on there. The MP2 is not the one that's on here. The MP2 is interesting. But it's also Cortex-A. It's not quite surprised that it doesn't tell me. Here's a picture of it. 750? H750? Like they have this like fancy library stuff, which is what they expect you to do. They have a Discord server. At some point, I'm going to hit my 200 limit. I just added two more. Part of the reason I pay for Nitro is I collected them. Just got one. It's awesome. MP2 is just announced. I saw it not that long. I did see this go by 835, 1.5 gighertz. Can you get it? Can you buy it? See, it's like available in 2024. Can you buy it? Okay, STM32 H750. Do I have one of those here in my boxes? I'm not sure I do. Oh, I do. I have an H7 box. It's the value line. It only has 128K of embedded flash. And I don't know if the board does the board have... Does it actually have more flash? It might. This other chip might do it. But there's only... There's this chip, which is the ST part. There's this chip, which is the RAM, for sure. And then this is probably the audio codec thing. So I think there's probably only this 128K flash in here. You're going to have a problem with that. That's not going to be good enough for CircuitPython. The smallest builds we have of CircuitPython are on the Sandy21s that don't have external flash. And those are 256K flash, internal flash. And we use 64K of that for the file system. So whatever my 192K is, the smallest image we got. So yeah. So we could support that microcontroller, but that board, we wouldn't have enough flash to actually support a Store CircuitPython. So yeah. It'd be cool. The other ones I'm looking at are like the U5s. How much RAM again? This has a MEG internal RAM, and then it has 64 megs external RAM, which is mind-blowing. But the IMX, the IMX RT series can do this as well. Yeah. 65 megabytes of RAM. So one MEG internal, and then 64 megs external. But their system is... Andrew says a combined SOC bitstream and CircuitPython build system would be fun, though a lot of work. Yeah. But I don't care. I don't care to have it be dynamic. I would be fine if you just produced an image for an FPGA that was both the SOC bitstream and CircuitPython, and just chip those together. DCD says if the processor was connected to a PC, one could soft load the RAM. You could, but what's the point? 8.7 looks interesting, but they're so pricey. Yeah. Yeah. A lot of the new chips are really pricey, except if you get the very limited flash and or RAM ones. Yeah. Let me show you. I've done my digikey thing this week to the point that I have items in my cart that I was interested in. So this is the ESP32 C2 dev chip. These C6s, I got the pre-one, so I was thinking if I got new ones. And then this H563 looks kind of interesting, this U585 looks kind of interesting, and then a display cable for Raspberry Pi. I didn't pull the trigger. It's just sitting in my cart. This MP2 I was actually interested in looking at the dev kit for it to see how they're doing and if they're doing a HDMI output because the chip itself doesn't do HDMI. So I was curious if what chip they're using to go from like RGB output to HDMI. That's more interesting to me than the MP2 because the MP2 is going to be really expensive as well. STMP2 dev kit. This is the same page that has this image but no like I'm not sure it's actually out yet. Right. Doesn't exist. Doesn't exist until you can buy it. Hopefully you're subsidizing it a lot. Otherwise I won't buy it either. Yeah. The U0 ultra low power seems to have up to 256 flash. I was really interested in the C0 and the G0. Analog has some neat ICs for that. Neat ICs for what? Oh for the oh yeah to the do the HDMI. 32 k bytes of flash. 56 megahertz. Yeah. What's the appeal of the U0? I haven't actually looked at that. The G0 and the C0 were on my radar. These are just ultra low power static consumption. Ultra low power. Somebody wants to work on the RGB to HDMI. If somebody wants to work on making our ST support better that'd be awesome. It's just never kind of been a focus of what we're doing. And then they'll like chip shortage hitting the price shot up for ST parts. I love the charts that they make. This chart this style chart that they have where it tells you flash and it usually tells you RAM as well. The RAM is down here 12 or 40. Like 12 is too small 40. But but but the reason I was interested in the C0 while the C0 and the while the G0 there are so many different parts. The G0 was interesting because it comes in very small packages and it has up to 144 k SRAM. So if we look at this G0 I wonder how much these cost now. But I was thinking like wouldn't it be cool to like actually have a new version of the trinket? Like the trinket and the Gemma were these form factors that haven't been updated in a while. And the reason is that they don't have like really small packages to fit on them. But we'd want something with more RAM. So like this G0 B0 line is like a lot of flash and RAM but still in the 32 pin package. It's not that much more performance than like a sand V21 but like could give you more RAM in that form factor. But it's they're not that cheap. I don't think these like they're the value line but they're still not like two bucks. They're two bucks but like an RP2040 will cost you like under a dollar. Under a dollar because the chips are 50 cents but then you have to put flash next to it. But then you get more flash. And you'd need flash next to this for a circuit pie drive anyway. Anyway these are rabbit holes I've come down. All right we're almost out of time. Orange crab FPGA stuff. This is the one that I would target if I had the time in interest. Oh yeah this is Tyus thing. It would be cool to do alarm on C6. In fact I tried to turn it on on the C3 and then ran into some some APIs that weren't available on the newer stuff. So that would be cool. That would be cool to support the newer C series. They don't have USB. They don't have full USB which is unfortunate but they do have Wi-Fi and our wireless workflows are getting better. Hey I got a green check mark. Oh you know what let me test this. This is maybe what I'll do right now. Yeah it's a little more expensive but it's it's all open tool chain still. So if you've been doing Iced 40 stuff it's going to be all the same open tool chain stuff. It's just like a more it's a bigger FPGA. So it is more expensive but it's like the well supported open source a larger open source tool chain supported FPGA. And orange crab is in feather form factor which is kind of like 80 fruits form factor. I would love yeah I would love to and this is another reason that I was looking at the build system and the client stuff is I'd love to be able to have circuit Python builds for specific soft risk five cores if they have like like if a compiler has all these little like risk five extension like assembly extensions that it supports like being able to build circuit Python that takes full advantage of like all of the extensions that something else. DJ Devon 3 says I'm too used to the S2 and the S3 having 2 megabytes P SRAM I didn't even think about that spec. For some reason I just figured I actually had 65 megabytes of RAM to put circuit Python on it. Yes RAM and flash are needed. They're doing all of the daisy stuff is pre-compiled so that's why they've spent their like bomb they've spent their bomb cost on RAM instead of flash because they're doing it all compiled ahead of time. I mean theoretically we could take their open source code and try to merge it into circuit Python too but I mean Sylvio's gotten pretty good. All right board equals 80 fruit USB 32 camera flash. I'll clean it flash. I just want to try this again. Oh I was going to try the I don't like nine ones got to work on this because we just released it so I need to make sure it works. Yeah it even gets more complicated than that so like Sam is saying Clang plus or RV 32 sock like oh RV 32 EC build or an RV 32 iMac etc. Yes and I'll tell you why I was wanting this because one core I have my eye on is this Hazard 3 core and it's an RV 32 iMac ZB Star processor so if you look here it's got MAC and then CSR access and then all these other extensions and then you cross reference that with Clang risk five I found it before and it will tell you what user guide. Yeah so now you can see the extensions that the Clang compiler supports so like ZBA ZBB ZBC they've got notes so yeah I went down this rabbit hole as well and my conclusion was and like usually what happens is that you get a compiler and it also has a couple libraries that it uses it has like libc lib gcc or or compiler runtime which has the built-ins that the compiler will link against and then what you have to do is you have to get like ARM GCC and ARM GCC builds for all the different versions of ARM all of the different floating point like we talked about floating point APIs like all that comes when you install GCC but with this risk five stuff it's like you're going to get a few like kind of standard sets but you're not going to get the like weird like set of things that you actually support so my conclusion was I'd rather have a build system that's just built the version I wanted instead of having to like find a distribution that gives me all the different variants I just like I'll just build it myself it's it's actually not that much code but yeah so that's one thing I wanted to get from the like the honcho build stuff is to actually build like libc myself just as part of the circuit by phone build and yeah I don't even know like I think pico risk five pico rv32s are in like are the you'll the risk five u lp's in some of the expressive chips I don't actually know what the risk five core is on that c versions um yeah esp idf ships with compilers for each chip for theirs is there a weird trick I could do to load circuit python within the 65 megabytes of ram instead of in flash I feel like I just wasted $20 um it's possible no I sorry return it like you're not going to have any space for circuit pi right so you're not going to have any place to store your code um I guess you could try to set it up to be an in-memory circuit pi drive where it's like every time you boot you have to copy things over but it's probably not worth it I think that the challenge that I have and I see people do is like I got this $20 board and I'm going to spend 20 hours working and get it running it right it's like that's not worth your time um yeah it depends on what you're trying to do if you just bought it for all the ram then like buy yourself a teensy like a teensy four is much better ram is definitely volatile how big is circuit python take up in flash it varies a lot based on the build so the sandy builds are going to be like 256k to I think 512k on some of the sandy 51s but like we're running into issues on expressive where like 1.4 megabytes is not enough because all the networking stuff is gigantic so all the wi-fi stack all of the ip stack tcp stack um all the ssl stuff it's just a ton of code so like um generally we want and that's true for even like the pico w because it has all the networking stuff takes up a lot um so yeah it's anywhere from like 192k at the smallest all the way up to like two megs it's kind of like as high as it goes right now and then on most expressive boards we actually have two slots for circuit python so we can do OTA in the future so like download a second version and switch to it um which you can't actually do but we don't kind of like teach you how um but yeah yeah or if you want a lot of ram just buy the like you know the eight meg the eight meg esp boards as well we'll get you a lot to ram but then your questions like what are you using a lot of ram for and with that we're pretty much out of time do folks have any other questions or comments um happy to see some new folks today welcome hopefully you'll stick around the discord if you want to join the discord that's a good segue you can go to the url adafru.it slash discord um let me know if you're going to be at pie cascades or if you're just ever in seattle and want to meet up i'm open to that just don't stalk me um and what else um if you want to support me you can do it by going to adafruit.com and purchasing hardware there i work for adafruit they pay me to do all those circuit python work uh thanks everybody who's done uh testing on 9.0 and gotten help to get it out the door really appreciate it i'm excited to see kind of what the feature releases that we do from him but no r um good luck with blink and light spiata um and uh sam i'm excited to see if you pick up fpga stuff because that has been something that's been really interesting to me i just never uh never could justify it um never could just justify doing a lot of work on it um yeah i mean you could try this fit synth iam 128k but again you're gonna you're gonna have a lot of trouble with like the file system stuff it's going to be a pain too so nice as thanks scott and congrats to all on 9.0 thank you thank you thank you um now's a great time for people to update to 9.0 if you haven't already it should be stable it should be better than eight uh there's lots of cases where people have said hey there's i have this bug on eight and we asked them to try it online and it fixes it so lots of good fixes there um print some thanks to dcd for taking time codes and also another thank you to the foamy guy for doing uh deep dive last week while i was out um i should be back next week and like i said i'll probably be working on my presentation for pie cascades um so we'll cover that information next week as well um and with that i think we'll do a window cam and get out of here um it stopped raining which means that i should probably go for a run um i probably should go for a run i haven't i've been i've been bad about it so we'll see all right folks with that have a great weekend we'll talk to you next week