 Hello, everyone. This is the Circuit Python Weekly Meeting for June 12, 2023. It's the time of week that we get together to talk about all things Circuit Python. I'm Jebler, and I'm sponsored by Adafruit to work on Circuit Python, which is a version of Python designed to run on tiny computers called microcontrollers. Circuit Python development is primarily sponsored by Adafruit, so if you want to support Adafruit and Circuit Python, consider purchasing hardware from Adafruit.com. This meeting is hosted on the Adafruit Discord server. You can join any time by going to adafru.it-discord. We hold the meeting in the Circuit Python DevText Channel and the Circuit Python Voice Channel. This meeting typically happens on Mondays at 2 p.m. Eastern, 11 a.m. Pacific, except when it coincides with a U.S. holiday. In the Note Stock, there's a link to a calendar to view online or add to your favorite calendar app. We also send notifications about upcoming meetings via Discord. To receive those notifications, ask an admin or community moderator to add you to the Circuit Python East's Discord role. There is a notes document to accompany the meeting and recording, and the final notes document will have time stamps to go along with it so that you can skip to the parts of the meeting that you are most interested in. After each meeting, we post a link for the next meeting's notes to the Circuit Python Dev Channel in the Adafruit Discord. Check the pinned messages icon in the upper right corner of the screen to find the latest Note Stock so you can add your notes for the following meeting. And if you wish to participate but can't attend, just a reminder, you can leave your hug reports and status updates in the document for us to read during the meeting. This meeting is held in five parts. Next up is community news. A look at all things Circuit Python and Python on hardware in the community. And it's a preview of our Python on microcontroller newsletter compiled by our own Anne B. Thank you, Anne. Then we have the state of Circuit Python, the libraries and Blinka, where we look at the numbers that tell us the health of the entire project, separate from what we're up to in kind of a narrative fashion. The third part, and when you all get to start participating, is called hug reports. Hug reports is an opportunity to highlight the good things folks are doing and to take the time to recognize the awesome folks in our community. The fourth part is status updates. It's really the meat of the meeting, an opportunity to report on what you've been up to. We invite everybody to take a couple of minutes to talk about what you've been doing since the last time you dropped in and what you hope to get up to over the next week or whatever time frame is relevant to you. And the fifth and optional part is in the weeds. If we need a more long-term discussion, that is where it happens. So we'll take those in the order that they are in the notes document when we get there, and that covers how the meeting will go and now a preview of the Circuit Python and Python on hardware newsletter called Community News. Number one, Circuit Python 8.2.0 Beta 1 has been released. It is a beta, so we invite folks to try it out and let us know about any problems. There are links to the Adafruit blog as well as the release notes on GitHub, and thank you, Tim, for getting those links into the Discord channel. So the highlights are continued enhancements of Synthio, the addition of alarm.sleep memory on the RP2040, and reduced size of stack frames, which sounds a little technical, but it will help on some of our lower capacity devices. Next item is Focus on Risk 5. A major tectonic shift away from arm to risk may be in the works for Qualcomm, Samsung, Google, NVIDIA, and Apple, says an article at Patently Apple. You can get started with Risk 5 quickly without using an FPGA or Logic Simulator with the RV32i Risk 5 Simulator, which can run MicroPython 1.19, and analyze the emulator to understand Risk 5, and there are some links to Twitter and GitHub. Next up, and the last item that I picked as a preview, is a video cast. Ardan Labs talks Adafruit Engineering and Forest Service, with Anne Borrella. They spoke on a number of topics, and there is a link to the YouTube broadcast. So if you want to learn a little bit more about Anne, she's a very colorful character, check that out. The CircuitPython Weekly newsletter is a community-run newsletter emailed every Tuesday. The complete archives are at AdafruitDaily.com slash Category slash CircuitPython, and it highlights the latest Python on hardware-related news from around the web, including CircuitPython, Python, and MicroPython. To contribute your own news or project, edit next week's draft on GitHub and submit a poll request. There are links in the notes document. You can also tag a tweet with hashtag CircuitPython on Twitter, or email cpnews at Adafruit.com. And yeah, we love hearing about your projects. We love just anything, any news item. Please hit us up with those tips and make this newsletter the best newsletter that it can be. And that is community news. Next up is the state of CircuitPython, the libraries, and Blanca. This is data that we retrieve from GitHub based on a seven-day period. It runs early in the morning. So anything that has happened today, poll requests merged, issues open or closed are not reflected in the report. But anyway, overall, our numbers were 17 poll requests merged from 14 authors and nine reviewers. And some names that are less familiar to me, Riza Almanda, Mario Broderman, GTB Coding, GarberW, OptionalLion411, AppleCuckoo, and a reviewer name that I didn't recognize was Milo's MNS. So thank you to those people who are newer or less frequent contributors. We'd love to see you chipping in and making CircuitPython better. And also a big appreciation to the people who are steadily working on CircuitPython. Issues-wise, we had 19 closed issues by nine people and eight open by seven people. It's always nice to see the issues number trend down a little bit across our GitHub repositories. And with that, Scott will tell us the updates on the core. Awesome. Thank you, Jeff. Let me just pull it up. Okay. So for the core, we had eight poll requests merged from seven different authors. So thank you to everybody who's contributing to the core. We had six reviewers as well. So thanks again to them. We have 21 open poll requests. So we're comfortably under that one page limit of 25. But a number of these, maybe eight or nine of them are 100 days or older. So we definitely should take a peek at those and see what we can finish. It's always good to have fewer open. A number of these are drafts, but still I'm a numbers person. Issues-wise, for the core, we had eight closed issues by four people and three open by two people. So we're net down five, which is awesome. For a total of 655 open issues, github.com slash Adafruit slash Archbithonyne slash Issues for all of those. Oh, sorry. For Adafruit folks, we have milestones as a method of prioritization. We have one issue for 8.2 stable. We have 37 open issues for 8.xx. And we have 30 open issues for 9.0. So we have our work cut out for us. We have two issues not assigned to Milestone. That number will hopefully have gone down because these numbers were taken overnight. But that's where we're at with the core. Thank you, Scott. And are you going to need the libraries or would you like me to? Oh, why don't you go ahead? Yeah, Ketney had a conflict at the last minute, so please feel free to continue on with the libraries. All right. I can continue. Okay. So numbers for the libraries. This is anything on github that is prefixed with Adafruit underscore-sugar-python underscore. These libraries tend to be run both on the core and on top of Blinka. And we'll go through that. So for library stuff, we had nine pull requests merged from seven different authors. So thank you again to all of those authors. Four reviewers. And number was, it looks like, nine merged pull requests. A number of those were only open for a single day. So thank you to our authors for being responsive there. There's also an issue that was open 81 days and that got closed. So thank you for following up with issues or pull requests that have already been open. Issues-wise, for all of our libraries, we had 55, actually there's 55 currently open pull requests. The oldest is 986 days old. The newest is at a single day old. Issues-wise, 10 closed issues by five people and five open by five people. So net down five as well. For a total of 612 open issues across all of those libraries, 46 of which are good first issues. If you'd like to help with these, there's a great landing page at circuitpython.org slash contributing to help get you started and cover what those issues are. Now, for download statistics, these cover the usage of these libraries in CPython via Blinka. So the total library downloads for 310 libraries from PyPI is 114,658 downloads in the last week. The top libraries are pretty typical with Bust Device being the top and requests up there as well. Request is interesting given that there's actually a proper request library in CPython as well. Library updates in the last seven days. There's one new library in the community bundle or two new libraries, sorry. One from Todd Bot, PS2 controller and an H3 LAS-200DL from J-Pasada 2020. Updated libraries, display notification, Matrix keypad, EPD, RGB LED, MagCal and PS2 controller. And that's it for the libraries. All right. And you talked a little bit about contributing. So yeah, check out circuitpython.org slash contributing if you would like to get a list of all pull requests, all open issues, as well as a list of rather dry library infrastructure issues. If you want to contribute for a first time, this is a great place to start. You can sort the issues by label. So you can search for good first issue if you're getting started or bug or enhancement if we're selling a little more in depth. We have a guide to contributing on Git and GitHub and we're always available to help you get started with things. Here on Discord is a great place to ask. So let us know if you need any assistance. And now to round out the section on the numbers, we will hear about Blinka from Melissa. Hello. Hello. So for Blinka, which is our circuitpython compatibility layer, for MicroPython Raspberry Pi and other single board computers, we had zero pull request merge this week. There are currently three open pull requests amongst the repositories. There was one closed issue by one person and none opened. That leaves us at 94 open issues. There were 13,682 Pi PI downloads in the last week, 6,903 Pi Wheels downloads in the last month, and we are at 119 boards. And that's it. Thank you, Melissa. And next section is called Hug Reports. This is a chance to highlight folks in the circuitpython community and beyond for doing awesome things. I'll start and then we'll go down the list alphabetically to give everybody a chance to participate. And as a reminder, if you're text only or missing the meeting, I'll read your notes when I get to them in the list. I want to give a hug to the community helpers and moderators as we dealt with a moderation issue last week. A hug to Maker Melissa for doing some very thorough testing on a pull request of mine. To paint your dragon for the Protomatter Library and working hard to make it work with circuitpython. And we just had a few things to change about the ESP32S3 support. And finally, a hug to Dan for the newest beta release. It's always nice to see the incremental improvements in circuitpython. With that, I will hand it to Dan and then read notes from a few folks. Okay, thanks. So thanks to Scott for trimming the size of C-stack frames, which is really well... It's going to save a lot of space, I think, in RAM. Not just make it possible for the CPX library to work. I think it'll actually help in a lot of ways. Thanks to Carter, who's been tested out how to update NRF boards that have old bootloaders on them, really old bootloaders that can't self-update. But there are ways to do this that are less trouble than I thought. And we're going to write this up as pages on the appropriate guides. Excuse me. When we get the chance. And thanks to FoamyGuy, who has been looking at some existing PRs and made some of their own, so that the API for ESP32 SPI is more like other network APIs, I think specifically the Socket API. They're sort of needlessly different and kind of non-standard, the ESP32 SPI. And it's nice to see this coming together. It will be a major version change and people will need to update their code. But it's really worth it. Okay. Yes. Thank you, Dan. And a belated hug report to Naradok and to you for help over the weekend with this NRF issue, which I ran into and needed to update the bootloader. All right. Next up, I have notes from David Glode, who writes group hug, especially those working on new releases, new features and synth. And then I have notes from DJ Devin3, who has a hug to Katni for being you, a hug for everyone involved with CircuitPython development in any fashion. Thank you. It's a wonderful language and everyone in the Adafruit Dev community is exemplary. Hugs for JP, Liz, Todd Bot, Gambler and me. Thank you for wonderful bleeps and bloops. One for Naradok for being a Keystone helper with CircuitPython. And finally, for Lady Aida and PT, thank you for everything you've created. And that brings us to FoamyGuy. Hello. All right. Thanks, Jeff. Hug reports for me this week. Thank you to Michael Pokusa and Naradok, who both helped me and offered some discussion around HTTP post request argument formats. Another one, thank you to Naradok, who also helped me this week with some questions about running a server and broadcasting Wi-Fi AP at the same time. And a hug report to Mark Gambler, Tyeth and DJ Devin, all of whom offered up some ideas for troubleshooting some weirdness that I was seeing with USB devices when my PC boots up. And that's what I've got for now. Thanks. All right. Thank you. Next, I have notes from Katny, a hug to Dan H for putting together a rainbow cycle key switch press demo for me when I couldn't figure it out. And a group hug. And then we've got Maker Melissa and Scott. So go ahead, Melissa. Yeah. I just wanted to get back to you, Jeff, for fixing the RGB matrix modules so quickly and group active emails. You are welcome. All right. Scott, what's on your mind? Hello. OK. So hugs firstly to Naradok to Shippu, DJ Devin III and Carter for helping folks on Discord and the Help with CircuitPython channel. Always awesome to see that folks can go there and get help. I really appreciate everybody who does that. And then hug to you, Jeff, for the swirl idea for mounting Stemma and other feather boards on what looks or what was originally a 0.2-inch grid, but you had the great idea of how to add some slots to make it a lot more flexible. So I really appreciate it. All right. And finally, I have notes from Todd Bodd, who's text only today. A hug to Foamy Guy for helping with weird community bundle Gawk bug with PS2 controller. I think Gawk is the name of a program in this case. To Gambler for Synthio testing and to me for Synthio filters. And that completes hug reports. Next is status updates. Status updates is your time to tell folks what you're up to. I will start and we'll go through the list in the document order. When I call on you, take a couple of moments to talk about what you've been doing since the last meeting and what you plan to be up to in the near future. It's also an opportunity to provide any quick tips and tricks relevant to what people are talking about. But if it is lasting more than a few sentences, we'd prefer to move it down to in the weeds. And with that, I will get started. I integrated an updated version of the Protomatter library in CircuitPython. This is the library that makes the Hub 75 style RGB matrices work. And the heavy lifting is done by Phil B. And it's done in a way that we can reuse the library in CircuitPython even though it's designed first and foremost for Arduino. And this version, among other things, had really improved support of the ESP32S3 microcontroller, which is important for an upcoming Adafruit product. And there are pending pull requests in Protomatter and CircuitPython for that. Second item is I've been putting the finishing touches on a non-CircuitPython guide, the Run CPM emulator with RP2040. If you're interested in what that is, I've shown it at least once on show and tell. And next up we'll be working on this Teddy Ruxpin stuffed animal animatronic thing that Lamora has done some engineer segments on, reverse engineering it, and I'm going to help with creating new story files by putting together disparate pieces of information such as the eye movements and the mouth movements and the specially transcoded audio file. And so these other items, the Synthio guide and the MicroPython merge, those will come after that. Teddy Ruxpin will be the next thing that I'm working on and I never imagined in my life that I would say I'm working on reverse engineering Teddy Ruxpin. But here we are. And next up is Dan. Okay, so last week I released Beta 1 of CircuitPython 8.2.0, mostly to get the last bit of Synthio changes in it. There'll be another, we hope to have a release candidate or another Beta really soon for 8.2.0. I started merging MicroPython V1.19.1 into CircuitPython. I went through that and then I said, I kind of realized that I wasn't sure about a bunch of things so I restarted it and will be more careful doing this. This has happened before. It's kind of what you expect when you're looking at a whole bunch of changes that you're not sure what they correspond to. And we do have a bunch of bugs, a bit of a backlog of things to look at to see if we should fix them quickly or not, or more quickly. So I need to look at some of those too. They're a variety of different ones. Okay. Thank you, Dan. I'll read notes from a few people. Then the next person after that will be Tim. So David Globe writes, CircuitPython quickly added a teams mute button to my mouse jiggler with a twist. Control Shift M works on QWERTY, but I replaced M by semicolon for azzer T. The learn guide is Arduino only. There's a link in the note stock. And I found this to help me. It's a link to furscene.com. And yeah, check out those links in the notes document if you're interested in the teams mute button. David goes on to write, I've not been here since months, mostly because I've not written a piece of code since then. I try to stay in sync with streaming or listening to podcasts. And in non-circuit Python, playing with HID remapper on the Feather RP2040 USB host, and wasting time on blocky football programming games at supercollidingball.com, as well as Advanced Wars 1 plus 2 reboot camp. And next I have notes from DJ Devon 3. Who writes, Updated my MQTT featherwing with better graceful fails with Wi-Fi connection, API server fails, or Arduino IOMQTT fails. It's been my main project for about three years and has evolved a lot since starting on an Arduino Uno. Thank you to everyone who has helped me along the way. My participation in the community will become more limited in the weeks or months ahead as I'm dealing with a personal matter. Downsizing where I can and waiting for the inevitable move. Being part of this community has been time well spent. And of course, DJ Devon, we will be here and happy to see you back when you are able to spend more time and absolutely take care of yourself and all that stuff. And now I will pass the talking stick to Fome Guy. All right, thank you. Over the past week I did some more digging into core display I.O. I made many different builds with many different additional print statements added to try to figure out how the internal fields for area, a previous area and current area inside of tile grid behave. I think that I have an understanding of that now and I have also a proposed solution for the issue of the hidden things taking extra time to render. But it is still in my local branch. I need to clean it up and get it pushed into the PR to get feedback on it. So that's what I'll be doing this week for some part of the time. I also did some work over the past weekend, Friday and Saturday tracing through the Request Library as well as PyPortal and Porterbase libraries to figure out more specifically like what happens and what controls what when you download larger files with chunked downloads. Specifically there was some difference in behavior between the two different socket APIs like ESP32 Spy versus the other one. So I have a note down in the weeds to talk about that a little bit more. I yesterday had a much needed personal organizing and putting things away party so I've got a lot of my microcontrollers and things a lot more organized and away now, which is really nice. Outside of the CircuitPython world, I deployed a rocket chat server this week, which is an open source kind of thing like Slack or Teams type environment, but it's self-hosted. You can run it on your own server. It is not really related to CircuitPython, my reasons for using it, but once I did get it deployed and started digging in a bit, I noticed that it does have what looks like a pretty easy to use API. So maybe I will make some things where CircuitPython can interact by like sending in sensor readings into the chat rooms or maybe vice versa, like controlling IoT lights or things like that from the chat rooms look like it'd be pretty easy to do. So that's what I have got going on. Thanks. All right. Thank you. I have notes from Katni. Last week she worked on the Feather RP2040 DVI guide and that is now published and continued work on the Neo-Key Breakouts guide. This week she will wrap up the Neo-Key Breakouts guide, do the TRRS Jack breakout guide, the StemAQT gamepad guide, and the I2S BFF guide. And next we have maker Melissa. Hello again. Hello. So this last week I added a bunch of new boards to CircuitPython.org. I updated the portal base and matrix portal libraries to work on chips other than the M4. I tested and updated the CircuitPython code editor and fixed some CSS issues. And I also updated to work with the latest version of the JavaScript CircuitPython level library. I tested Jeff's RGB matrix and protomatter updates for CircuitPython and I started going through all the matrix portal guides after the changes. This week I'm going to finish going through all the guides and then I'll continue working on some GitHub issues and probably some minor guide updates as well. And that's it. Thank you. All right. Now we have Scott. Hello. So as Dan had mentioned, I investigated the issue with importing the CPX library on the CPX. I did a couple of changes. One, I prevented some inlining into the VM call, like the big VM function. There's multiple, like if you call multiple Python functions that gets called multiple times recursively. So I made that use less stack, which means you should be able to recurse more now after that. I also reduced the max file path link. This is something that's computed during imports and also prevented or has also happened recursively if you're importing one file which imports another file. It can get stacked as well. So there should be improvements there. I rebuilt the PySigRock Pico binaries. They seem to work okay, which I thought they weren't working and now they work, which is great. I added proper board desks for Scorpio and the pirate boards for that as well. And that was the motivation is getting the pirate board supported. I did a detour into KeyCAD generation and created a generator for the swirl mounting style that Jeff came up with. I really appreciate that and I'm excited to see more ordered like 200 of them. So hopefully they came out okay. I'm working on the USB host on the IMEX RT. I did get it reading HID reports, which is great, but I do think I'll wait until after A2 is merged and where it is out because it includes a tiny USB update. This weekend may look into getting it working on the RP2040 feather as well. Friday, I think I spent some time getting CircuitPython building with Clang 16. Clang is the C compiler in the LLVM project, which is a larger tooling compiler tooling project, which is pretty awesome. I did it for Clang 13 as well. So I do want to make a PR this time because I'm making a lot of the same changes again. It's things like all functions need to have void in an empty print sort of thing. And if you're doing a macro to disable or enable, you need to do it in an if macro, not in a C macro that gets the static value. So I'll probably do a PR for that, maybe not with full Clang building, but at least with some of the fixes. My goal is to get a branch building with Clang so that I can go to the LLVM embedded folks and be like, here's the blockers for us. We'd love to adopt it, but this is what we need help with. I'm particularly interested in adding better memory region support so that we can more easily say like this function that writes flash needs to go in RAM and have it implicitly do everything that that function calls as well. Because right now it doesn't, and it's just a huge pain to get right. And I'm sure a source of bugs. I'm looking into Odroid Go issues today, which Dan I think identified as some blockers for 8.2. And then on Wednesday I'm heading to New York to meet up with eight different folks and Dan and have just kind of a vacation as well. I'm back on Monday, so I will be kind of around consistently outside of that. And that's it for me. All right, thank you. And last, I have notes from Todd Bot, who writes, old PS1 and PS2 controllers are pretty rad and cheap. Too bad their connector is bonkers. Not sure how useful this will be, or if it will live here, but Circuit Python Tricks now has a Synthio Tricks section, and there is a link in the notes doc. Two small Synthio examples yet to be integrated into the above. There is a two-voice drone Synth and dueling band pass filters. I've seen the video of the latter one, by the way. That video is pretty cool, Todd. Also links in the notes document. And finally, we'll be looking into potential USB raw HID issues. The USB, excuse me, the lib USB devs are having trouble as they're trying to create repeatable test hardware. And that is also one last link that's in the notes doc. And that completes status updates. Thank you, everybody. It's lovely to hear what you're all up to. And now we will finish up the meetings with the in the weeds section. And Scott's got the first topic, so go ahead and let us know what's up. Yeah, so I was just looking at the list of open issues on 8.2. I thought the CPX1 was there because I put it there, but apparently this Ojo goes the other one, and I just wanted to briefly have a chance to talk 8.2 release. Because I know Dan's working on the MicroPython merge, so we're going to want to do that after 8.2. Yeah, I was just wondering, we can continue, we might even have an 8.3, because if going to 9.0 takes a long time, we might want to have more stable releases in between, so we might want to kind of stop doing work on main, or else I was thinking of putting the merging, the 9.0 stuff on its own branch, so then we can merge it back or something like that. I mean, I think the question there is, we have good infrastructure for testing the latest main, which I think is really valuable. Yeah. I guess I'm in the camp of let's just move to 9.0. Yeah, the question is, so if we can always backport things to 8.0, right, or have people do it. Yeah. Yeah, for bug fixes. Right, I think we talked about, we don't want to do a pre-release 9.0 until we have the right MPY version. Right, right, yeah. It would be great to get those merge, the MicroPython merges in. Be good too. So I think if you look at the Odroid thing, and as I said in our internal meeting, if we look at what else is on the 8XX list, and see if there's anything that really seems like it is more of a showstopper, which I think not, because it would have been put on 8.2.0. Right. Then we can go ahead and release 8.2.0 soon, like a release candidate this week, or excuse me, early next week or something. Yeah, that sounds good to me. Any other thoughts? So I think there's the possibility that this upgrade in the RGB matrix thing would be disruptive, but Melissa has done a lot of testing, so she tested across all of the different supported microcontroller families. But that's something that, because it'll support this new product, I think we'll want that in an 8.0 and not have to wait for 9.0. But there are ways to manage that, so I don't think it should be a barrier. But I also think it should be resolved this week and all merged. So maybe that would be the thing to hold final for. I don't know. Yeah, we have. Go ahead. I was just going to say, do we have an issue for that? I don't think there's an issue. There's only a pull request. So can mark the pull request 8.2.0? Yeah, I get it. In the milestone list. Yeah. That's a good idea. Thank you, Dan. All right, I marked it. That's it for me, just to figure out 8.2. Our second topic then is from FOMIGuy. All right, thank you. I figured this would be easiest just to ask about because I didn't know the history of the stuff. So essentially, this all relates to the PR that's open in ESP32 Spy, which was an effort to make the socket be compatible with the other sockets, like the built-in socket for the other ports, like ESP32S2 and PicoW, as well as the socket on CPython, I believe, all behaved the same, but they were different from ESP32 Spy. I figured out eventually where the code that I think is responsible for the difference in behavior lies, and it was ultimately in the request library. Some of the code in there is referring to stuff like backwards compatibility, so it will do some check to decide if the socket is backwards compatible or not, and if it is, it will behave one way, and if it's not, then it will behave a different way. I wanted to bring it up, though, like my best guess there was that that backwards compatibility is essentially talking about that different behavior on the ESP32 Spy. That seemed to be the case from what I could tell, but I didn't have any of that actual history or anything to know if that's certain what it was. To go along with that in the request library, there's also some test scripts in the test folder, and some of those refer to, like, legacy tests, like legacy testing the socket, and I was also coming to the conclusion that those legacy tests that have that term in the name were referring essentially to the same quirk. Those were testing to make sure that the backwards compatibility or what I'm thinking is the different behavior from ESP32 Spy, those were testing to make sure that behavior was working. If that is, in fact, the case backwards compatibility and legacy are referring to that difference in behavior in ESP32 Spy, does it make sense to go ahead and remove it entirely, or do we need to try to keep the tests working for that legacy mode, or is it possible that I'm just off the trail and that the backwards compatibility and the legacy are actually referring to something else? I figured it would be easiest just to ask the group if anybody had insight to that. So I think it is the case that it's because of the quote legacy is ESP32 Spy. There might have been some other things that were like that too. You see that pull request, pull 167, I did it over a year ago and it was because I was frustrated by how it was different and it was making eight of requests not work right and it was also there was this random web server code there that wasn't like other web servers and that was also a problem. So I was trying to clean all that up and it kind of got into something larger and then you came along and it looked like it almost worked except it didn't and now you figured out why, which is great. So I think it would be great to continue that. I agree that it should happen at the same time. I was thinking about whether, well, the test for backwards compatibility right now checks whether receive into exists and that isn't a good test anymore but there are some other things that you could test for like realign. But then I thought, but anybody who does this, we don't really want people to update one library and not the other. So I think we should just say that those two things go together and this is a breaking change on both those libraries and we'll release them on the same day and they'll get into the same bundle. Okay. I don't know if there's anything else to test There's Wisnet. Is Wisnet maybe also different and special? I don't know about that. That's a good point. Wisnet, off the top of my head, I think it is its own third case and I think it, well, maybe it's not, maybe that's not the best way to refer to it, but I think that its socket behaves the same as CPython and built-in do rather than like the ESP32 spy did. But I can also test that. I have the Wisnet stuff set up somewhere that I can grab and easily check. Another thing to test, I don't know if it's worth it or not, but it may, whether ESP32 SPI with these new changes now works with HTTP series, the new HTTP series? Yes, I did have that thought as well. I did try it out. It does not work as is. There is an error about something, but I don't, I didn't dig any further just yet other than like trying to run the simple test. If you're willing to look at that, that would be great. Since I made that poll so long ago, part of it was also trying to make the thrown exceptions be the same in the two libraries or in like built-in Wi-Fi and the other thing and maybe there's some updating that needs to be checked. That might be causing some incompatibilities. I don't know. Part of the regularizing of the exceptions was already, somebody already did part of that work. I don't remember the details. If you're willing to keep working on this, that would be great. We'll have a big bang and then it'll be better. We won't be living with this. It's so much trouble and people keep complaining. It's a support issue that ESP32-SPI is different. It would be nice if it was not. Yeah. I can definitely do that. I'll confirm, I will double check the errors that are raised and make sure those match the socket as well. And then I will plan on removing that legacy test then for now to get that PR to pass because that is, I believe, the only thing keeping it from passing. Did you want to try to test the HTTP server on the... I will keep going on that one and see if I can get it working. It also comes to mind the other major socket library would be the MQTT library and whether it has had to work around the differences of ESP32-SPI or whether it didn't have to. So that might also be worth just taking a quick look at to make sure you didn't break compatibility. Yep. Thank you. That is definitely a good thought. I had not considered MQTT. I definitely want to make sure. And like Adafruit I.O. will depend on that as well. Yeah. I think most things that do network are going to do it by importing libraries. There may be another one that I'm not thinking of either, but that's going to be, you know, HTTP is going to be the most of it, requests and MQTT is going to get the next huge fraction of whatever is left. Yep. Okay. Cool. Yeah. I think that gives me the next couple of things to work on, so I should be good to keep going on it. Thank you. I'm excited about this work which I hadn't heard of till now, so I appreciate it. Yeah, for sure. Next up are in the weeds section and so I'm going to wrap up this meeting. This has been the Circuit Python Weekly for June 12, 2023. A big thank you to everybody who participated. Remember that if you want to support Adafruit and Circuit Python and folks like me who work on Circuit Python consider purchasing from the Adafruit shop at adafruit.com. The video of this meeting will be released on YouTube at youtube.com slash Adafruit and the podcast will follow on major podcast services. It will also be featured in the Python for Microcontrollers newsletter. You can visit adafruitdaily.com to subscribe. The next meeting is moved by a day. Next Monday, many parts of the U.S. observe the Juneteenth holiday and so the meeting is moved to Tuesday, June 20 at the regular time of 11am Pacific 2pm Eastern. So we'll see you in 8 days. The meeting is held on the Adafruit Discord, which you can join at any time by going to adafruit.it slash discord. To be notified about the meeting and any changes to the time or day, you can ask to be added to the Circuit Pythonista's role on Discord. We look forward to seeing everybody next week. Have a great week everybody.