 Okay. Hello everyone. This is the CircuitPython Weekly Meeting for February 21st, 2023. This is the time of week when we get together to talk about all things CircuitPython. I'm Dan and I'm sponsored by Adafruit to work on CircuitPython. You might ask, what is CircuitPython? It's a version of Python designed to run on tiny computers called microcontrollers. CircuitPython development is primarily sponsored by Adafruit. So if you want to support Adafruit and CircuitPython, consider purchasing hardware from Adafruit.com. This meeting is hosted on the Adafruit Discord server. You can join anytime by going to adafru.it slash discord. You hold the meeting in the CircuitPython Dev Text Channel and the CircuitPython Voice Channel. Typically this meeting happens on Mondays at 2 p.m. U.S. Eastern Time, 11 a.m. U.S. Pacific Time, except what coincides with the U.S. holiday. That's what happened this week. And so it was on Tuesday this week. In the note stock, there's a link to a calendar you can view online or add to your favorite calendar app. We also send notifications about our coming meetings via Discord. If you would like to receive these notifications, ask us to add you to the CircuitPython East as Discord role, and then you'll be notified when that role gets a message is mentioned. There is a Google notes document to accompany the meeting and recording. The notes document contains timestamps to go along with the video. So you use the doc to view. You can use the doc to view only the parts of the video that interest you most. Meeting tends to run 45 to 60 minutes. So this gives you the option to skip around. After each meeting, we post a link for the next meeting's notes to the CircuitPython Dev channel on the native root Discord. You can check the pinned messages in that channel to find the latest notes doc. If you wish to participate but cannot attend, you can leave hug reports and status updates in the document for us to read during the meeting. All right, I will skip over explaining the meeting structure because we're going to do that each time I come to the item so it's probably not worth it. So now we'll begin. Let me start with some community news and I'll make a timestamp. Community news is news that comes from our weekly Python for Microcontrollers newsletter, which goes out on email Tuesday mornings. Visit aidafruitdaily.com to subscribe to the newsletter. Thanks to Ann for putting the newsletter together. If you have any Python on hardware projects to share or find content you'd like to see included in the newsletter, please consider contributing. You can open a PR on GitHub to the newsletter repo. You can tweet to at sign Ann underscore engineer on Twitter with the hashtag circuits python or you can email cpnews at aidafruit.com with the news and links if you have them. And if somebody can paste the newsletter in LinkedIn, that would be great. Now I'll start with the community news, which is the sort of the top headlines from this week's newsletter which already came out this morning. First of all, the Raspberry Pi organization has released the Raspberry Pi Debug Pro which has cost $12 just came into the aidafruit store yesterday and I have one on order. This is a plug and play debug kit for debugging Raspberry Pi Pico's and probably other other boards that use SWD. We'll use open OCD under the covers. So it contains a USB to serial SWD bridge. It contains a generic USB serial adapter and cables to hook up to the host computer and the debug target. And as I said, while it has been designed with Raspberry Pi Pico and other 20 RP2040 based targets in mind, the Raspberry Pi Debug Pro can also be used to debug any ARM based microcontroller that provides an SWD port with 3.3 volt IO. And I'll be interested to see how this works compared with a Jlink because it's now certainly cheaper than getting a Jlink. Next news item is that CircuitPython 8.0.2 was released. This is a bug fix release for 800 and we found some bugs. There are links to the release notes for this and the announcement and there will be an 803 soon also. I'll talk about that later. Next news item is about using an iPad or Android to code MicroPython or CircuitPython. You need to write some MicroPython or CircuitPython code for your board but don't have a PC around. How about using your phone or tablet? iSIST Incorporated provides their solution with their BlueIO832 mini and BlueIO term app for iOS and Android. So this is interesting. This is an app and a small Bluetooth adapter for any CircuitPython board or MicroPython board. We also have CircuitPython organization also provides Bluetooth support for boards that have built-in Bluetooth and we have an app. We have apps for this. You can find out about that in our Learn Guides. I don't have any links in right now. So finally, as I mentioned, those are the top news items and I'll just we mentioned again that you can contribute to this newsletter and these news items by sending emails to cpnews.atifruit.com or Twitter or sending a poll request to the newsletter. All those things are appreciated. All right, the next major section today is the state of CircuitPython libraries in Blinka. This section is a quantitative overview over the entire CircuitPython project. It gives us a chance to look at the health of the project separate from what we're up to. We'll talk about the project overall and separately discuss the core libraries in Blinka. First up, the overall idea of what's going on. In the past week, I think this is as of Monday midnight or maybe Sunday midnight, there were 30 poll requests merged with 19 authors. There are some new people here I don't recognize, P. Jeffrey Shultronics, maybe Dave Citi, Matsu Jerushi. Thank you very much. If those are your contributors or thank you if you're contributing, continuing contributors. Of these 30 poll requests, there were seven reviewers of these poll requests and there were 29 closed issues by 13 people and 24 opened by 20 people. So we closed net five, which is great. All right. Next up, we have some information about the CircuitPython core and Scott, if you were available to read about the core, that would be great. Yeah, happy to. Okay, so for the stats for the core of CircuitPython, we had 22 poll requests merged from 14 different authors, which is awesome. I feel like that number is higher than it usually is. So thank you to all of our authors. I think some new folks here or infrequent folks are Nerodoc, Gina Rove, Atlantor, Bergdahl, WTour, Bill88T, lots of new folks. So thank you to those folks for contributing to the core. We had four reviewers, myself, Micronev, Dan, and Lady Aida. We have 31 open poll requests. A number of those are drafts. Many, many of them are drafts and a lot of these have to do with boards or hardware. So if you want to help contribute to the core, it's great if you are able to do testing for new boards. A lot of these are boards that are not Adafruit boards and therefore those of us paid by Adafruit don't necessarily have them. So please take a look at that. I'd love to get it under 25, which is the cap for having it on a single page. That's kind of my metric. So taking a look at those poll requests would be really helpful. Issues-wise for the core, we had 17 closed issues by eight people and 15 opened by two. So we're net down two as well. And lots of people are involved. So thank you to those folks. We have a total of 618 open issues. We have eight active milestones. Two on 802 issues are open and 80x, which is like the most immediate things that we want to fix. We have 12 open issues for 8.1, which will be our next major feature stable release for 80. And we have 499 long-term issues. We have eight open support issues, which would be wonderful if folks would take a look at and close those as well. Those are kind of a bucket for questions that usually should end up on the forums instead or on the Discord. So it's likely that those are ready to be closed. We have five issues, assigned a milestone, which means that we have some triaging to do. And that's the state of the core. Okay. Thank you, Scott. Yeah. And I'll just note that I assigned a number of these board PRs to draft status because they're mostly awaiting USB product IDs or vendor and or product IDs. And they're kind of hung up because of that. And so I marked them as drafts so they wouldn't inadvertently be merged because they're otherwise many of them are off or otherwise complete. Just trying to distinguish them easily. Okay. Next up is the libraries. And Katny is not here this week. So perhaps I will go ahead and read the libraries section. So in the past week, there were seven pull requests merged from five authors. There were five reviewers. There's a lot of work in the mini NQTT library right now. That's really great. A lot of people working on fixing things in there. There are currently 48 open for requests. And there were 12 issues closed by 10 people and nine open by eight people. So again, we have more issues closed than open, which is great. There are now 597 open issues in the libraries and there are 76 issues marked as good first issue. You can use GitHub to find those issues. And those are issues that are probably good for a person who's making their first contribution to working on a library. It's a very good learning experience and we're happy to mentor you in help with CircuitPython channels and Discord to help you out with that. In the past week, in terms of library stats, there were or totally there were 188 almost 189,000 PyPy downloads for libraries. And I won't read the top 10 libraries or the library updates. But I'll just mention again, if you'd like to contribute to CircuitPython, look for issues in the libraries that are good first issue or that appeal to you. There are more issues there than people who were paid by Adafruit to work on libraries can work on and we really appreciate your help in that. So thank you very much. Okay, next up is the section on Blinka and Maker Melissa, if you could read that section. Thank you. Yeah, can you hear me? Yep. Okay. So Blinka is our CircuitPython compatibility layer for MicroPython, Raster, Py, and other single board computers. And this week we had one pull request merged by one author and one reviewer. There were there are currently six open pull requests among the different repositories. There were zero closed issues. We currently have 90 open issues, and there were 27,162 PyPy downloads in the last week, 7,075 PyWheels downloads in the last month, and we are at 101 boards. Okay, that's it. Thank you very much, Melissa. Okay. Yeah. Our next section, our next major section is Hug Reports. Hug Reports is a chance to highlight folks in the CircuitPython community and beyond for doing awesome things. I'll start as host, and then we'll go down the list, which is mostly in alphabetical order. If you're text only or missing the meeting, but you wrote a hug report, I'll just read them off as I get to you in the list. So as I said, I will start. So I'd like to thank Alan Mitchell for finding a QTPy M0 UART bug in 800, which has been present since 800 alpha one apparently, but nobody spotted it. So thanks, Alan, for that. And I have a fix for that, which will be in 803. Thanks to Dave Putz, who's working on TLS and MQTT. And as usual, is extremely good at finding obscure things and figuring out how to fix them. Thanks to Gambler21 for a fix for the color converter and display IO. There were uninitialized fields in there, and you would get random results depending on what was in memory when the object was allocated. Thanks to Greg Nevereaux for continued fixes on the core. And thanks to our translators, who are keeping up with a number of new and changed messages, especially as we moved to a new major version, there were quite a few new messages that have appeared in the past few weeks. And we really appreciate them doing translations very quickly. Okay, next step is anecdata, and I'll read theirs. Thanks to Dan H for developing the safe mode that pie mechanism. Thanks to Genevra for fixing the Pico W LWIP MDNS issue. And I second that. Okay, next up is DJ Devin 3. Hello, thank you. I have a hug for JP for a very informative stream about circuit bending using the Miowsic toy piano. That was a lot of fun to watch. To Liz for an awesome octoprint learn guide that I'm still trying to digest. And for taming the breadboard spaghetti monster with new well designed PCBs. Congratulations. And a hug to Lady Aida and Phil T for staying up late on Sundays to teach us the ways of good PCB design. That's it. Okay, thank you. Okay, and next up is Jeff. Hi, I want to start off with a group hug, but also some in particular one for Liz, Blitz City DIY for helping out with some guides. I'm working on, I'm doing some product guides, and she created the downloads page with the schematic and fab print and all that good stuff, which I don't know how to do. Another hug for Phil B, paint your dragon for commiserating with me on the fritzing in one of those upcoming guides. It's got an uncommon number of wires. And for that one, you're just going to want to read the pros and not look at that wiring diagram as the way to create your project. And finally to Genevra for continuing to ask good questions offer suggestions and the most important thing offer working code. I really appreciate that. Thank you. All right. Thank you, Jeff. Okay, next is Jose David, who's not in the meeting. So I'll read theirs. Thanks to Matsu Jirushi for a PR to improve the ADT-7410 documentation. Thanks to Bill80AT for persisting using an RPi4 to get the stackless PR going. Yes, Bill80AT is very patient with their compiles. Thanks to Genevra for core work and thanks to PJ Jeffries for correcting documentation and type hints in the BNO055 library. And next up is Maker Melissa. And just on GIF group. All right. Thank you. Okay. And Mark Gambler, you're up next if you were able. Otherwise, I'll read yours. Okay. I think I will read. No voice today. Okay. So Mark says, thanks to FOMI guy for continuing to look at the GIF work and finding an issue with color converter. Thanks to Tanu and Deshipu for the GIF PR review and API suggestions. And thanks to everyone who expressed appreciation to me for the GIF PR. This is the animated GIFs. It's not required, but amazing how much a kind word can make your day. Yes, we all appreciate being appreciated. Thank you. All right. Next up is Scott. Hello. A couple of quick ones. Mark and FOMI guy for the color converter fix. And also INOPOL tech who filed an issue having to do with a caching issue on STM flash reads, which looks pretty serious to me. And so thanks to them for, for adding a kind or filing a kind issue about it. And hopefully they'll fix it as well. All right. Thank you. And finally, TechTrick is up and not here. So I'll read theirs. Thanks to Dan H for safe mode that pie. Super neat. Thanks to Dan H and maker Melissa for feedback on how to back handle the broken stats page on CircuitPython.org, which we just removed. We decided it wasn't worth it. Thanks to Wakwi for the core of the RP2040JS node.js emulator code, which is a very interesting thing that you can run an emulation of RP2040 in your browser. Thanks to Tanute, Naradak, and MicroDev for interest and feedback on using ideas for using RP2040JS and GitHub actions. And a group hug. Okay. That's it for hug reports. Next up is status updates. Status updates is our time to sync up on what we're doing. I will start and we'll go down the list alphabetically as usual. When I, the idea is that when I call on you, you'll take a couple of minutes to talk about what you've been doing since the last meeting and what you're doing until the next meeting. This is also an opportunity to provide tips and tricks relevant to what people are working on. If a discussion becomes too much for status updates, we can move it to in the weeds. And so this is the things that you can be doing relevant to CircuitPython or just things that you're doing in general that are interesting. It does not have to be, it could be that you're renovating your kitchen and you didn't get to do a lot of CircuitPython this week. All right. I will start. So I've been working on the UF2-SAMD121 bootloader, which is not strictly CircuitPython, but a user found several issues with it. I've made a version that enables brownout detection, which can cause inadvertent flash writes and that user is testing that right now. I did SafeMode.py, that's merged, and it will be in 8.1.0, the next beta, hopefully. I'm writing a guide on it right now. As I mentioned, the user found a series URD Bargon 802 on the QDPy M0. It has to do with which pins are assigned, why it was particularly relevant on the QDPy M0. There's a fix, which will be put in the 803 bug fix release. And finally, I made a board definition for the plain old Huzzah 32 breakout, which is a plain ESP32 room module. This should be useful for a lot of generic ESP32 boards or kind of bare module use. And this should be in 8.1.0, the first beta that comes out for 8.1.0. All right. Next up is DJ Devin. Thank you. This week, or just an hour ago, I shipped batch two of the TR cowbells. If anyone has any components that are missing, please let me know. This time, I got some small four by 12 cardboard boxes to make the packaging a little bit more respectable and rugged with bubble wrap, so it's not just going to come in like a custom flat pack box kind of thing. Completed, my first printables make this week, which was Brent Rebell's IoT Gmail box. While the code in the learn guide is deprecated due to Gmail's API no longer working for that particular thing, the 3D printing files themselves made the physical project of 3D printing the cute little mailbox very, very easy. And it's an adorable little mailbox, I love it. The small flag design is honestly easy to miss, so I wanted something bigger and louder that will definitely get my attention. So I am currently printing a full size mailbox in ClearPetG as it will also test my 3D printers full build volume, biggest thing I've ever printed. The estimated time for the print just for the main shell is 90 hours or four days, and it's been printing for four days straight and should complete in a couple hours actually. It will use an ESP32 S2 with an RFM95 slash Laura Featherwing and a TFT display as an all-in-one notifier, so it will notify me of mailbox activity at my actual mailbox outside, as well as Octaprint and MQTT integration from Liz's learn guide for my 3D printing status. And I'm hoping that stuffing a whole bunch of neopixels in the translucent mailbox should make it look pretty and definitely get my attention when that goes off. So that's, I think that's, oh wait, no, oh yep, I guess I wrote more. I might add an amplifier with large speakers, that's an idea. Put it on the flip tops is just bolt some speakers because it's audio you got to. And I have kind of tentative plans to call it a boom mailbox. Like I've never heard of anybody creating that kind of thing and it just, I thought that was a cool idea. The STL files are, well, they will be available on my printables page when I'm done and make sure that the design works. And also this week I created a 3D printer bed calibrator PCB that came on the slow boat from China and arrived. It's based on an e-leveler PCB by CHEP, which is like a manual bed leveling thing if you've ever leveled your 3D printer with a sheet of paper kind of thing. This takes away the need to use the sheet of paper and you just have an LED that goes off and everybody knows that LEDs that come on are instantaneous. So the accuracy when you press the button on the nozzle for the LED is highly repeatable versus the feel of a sheet of paper which can introduce human error. So I thought that was a really neat idea and I took it, ran with it, created my own and also created one that has a gantry level associated with that. So that's what I've been up to this week printing and doing 3D stuff and PCB stuff. That's it. Thanks. All right. Thank you very much. Okay. Next up is G. Nevarov. Hi. So I've been getting back to working on exploring what we can do with async APIs and now doing it in the context of audio and just to give myself a goal there. I'm trying to get a program to stream the audio over the network and play it and have that sort of run smoothly like in an async loop that doesn't block other things and also like happening at the same time like flashing a LED or something. So I'm not really there yet but that is what I'm working on. All right. Thanks very much. That looks like that will be very interesting. I think that's kind of a use case we haven't been able to do at all yet. Okay. Next up is Jeff. All right. So for it feels like about two weeks now I've been working on the OV 5640. That says featherwing guide but it's OV 5640 breakout guide that's currently in moderation just as we were starting to meet and let me know that she had some requested changes. So I'll be looking at that soon but with any luck that will be out for Wednesday and I'll be talking about it on the Chontel if you should tune in. On Friday I took a look at the Pico DVI text mode in Arduino but I didn't get it working I think Philby is still working on it and it's not ready yet. This week is working on the floppy featherwing guide and these are some let's see this was a question that I asked in our internal meeting and I just copied these notes over. It's going to cover the very basics of using grease weasel and flex engine which are for archiving floppies onto your modern PCs. It'll cover some Arduino code including a mass storage device sketch and it will cover the circuit python code for mounting an MS-DOS MFM floppy drive and for decoding raw flux into RAM and after that if I get done with all that I will have my hands on some upcoming products. These are like products that were teased two years ago and were not feasible to manufacture due to availability but once I have these prototypes in hand I'll do some testing and coding on them either when I'm done with the floppy guide or when I need a break and that will certainly keep me busy until the next time we have one of these meetings. All right thank you Jeff. Okay next is Jose David who's not here so I'll read theirs. Last week made small dock improvement for the PCA 9685 testing some displays the PR to add the temperature reading feature for the MLX 90393 magnetometer work in an example for the community library CSV that helps you deal with CSV files easily and some small amount of testing. This week community libraries discover and work on the verbose option for display text library. Okay and next up is maker Melissa. Hello uh so last week I finished up the majority of the circuit pipeline installer which includes hunting down and fixing a bug with a blasting with lockup. I'm just going to finish up the PR for that and then making the last minute like fix this to the installer. I'll probably focus a bit on getting some of the subtly bigger GitHub issues fixed and possibly working on a small JavaScript library or function that is able to combine binary files similar to ESP tools merged in function and that's it. Okay thank you and next is Scott. Hello um first on my list is I need to reply to Dan on the BengalJSPR thanks for getting back to me and I want to get back to you soon aka today if I can. I'm mostly working on PWM out on the IMX RT so this is a similar vein to what Jeff's talking about is upcoming products that we made a few years ago that we can now actually get out are the IMX RT chips which are 500 plus mega Hertz Cortex M7s so working with a prototype metro with that and starting to go through kind of the core circuit pipeline APIs and making sure they're up to snuff. While I'm doing that I'm working on an implementer's guide to circuit pipeline API so this is kind of a module by module info with tips and tricks and test scripts it's not meant to go over it's not meant to go over every single API but it's meant to be like here's which you need to know about implementations for this thing and then the other thing I want to do since we're about to have the IMX RT in the shop is I'm going to briefly look into the performance counters on the M7 basically we're using the 1011 chip has 128k of memory and we're we're setting aside 64k of that for what's called tightly coupled memory and so the heap on these chips is not actually that big and I just want to kind of have a story about why that is and demonstrate that it it's good to prioritize using that for a tcm tightly coupled memory in order to get the performance out of the chip that we want so that's on my to-do list for this week. All right thank you and finally Tektrick who's not here I'll read theirs last week figured out how to get a file system working in rp2040js and pushed example code for that upstream remove the stats page from circuitpython.org since it was defunct updated some of my own libraries to keep the infrastructure up to date this week creating a github action for rp2040js to look how library changes affect RAM usage so it's a really interesting application for this we know exactly since it's an emulation we know how much RAM something we can easily tell how much RAM something uses without using an actual board to figure it out and currently six so we'll see how much gets done sorry to hear that okay so that's the end of status updates the next section is in the weeds where we would have long-form discussions if there was some topic that we felt like we needed a more extended discussion about instead of just a report but we have nothing for in the weeds this week unless anybody has anything in the last minute but i don't see anything and finally um and i'll wrap up this has been the circuit python weekly for february 21st 2023 thank you all for participating if you want to support eta fruit and circuit python and those that work of us that work on circuit python consider purchasing from the eta fruit shop at eta fruit dot com the video of this meeting will be released on youtube at youtube dot com slash eta fruit and the podcast will be available in major podcast services it will also be mentioned in the next python for microcontrollers newsletter the next meeting is not on a holiday it'll be next monday as usual at 2 p.m. eastern 11 a and pacific us time and as usual you can go to adafru dot it slash discord to uh hang out in the meeting when we're having it and remind you again if you want to be added about notifying about the meeting you can be asked to be added to the at sign circuit python east as role on discord so we hope to see you all next week thank you everyone and i will stop recording now