 Hello everyone, this is the CircuitPython Weekly Meeting for October 23rd, 2023. This is the time of the week where we get together to talk about all things CircuitPython. I'm Dan and I'm sponsored by Adafruit to work on CircuitPython. You may 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 a meeting in the CircuitPython DevText 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 when they coincide with the U.S. holiday. In the notes doc, there's a link to a calendar you can view online or add to your favorite calendar app. You also send notifications about upcoming meetings via Discord. If you would like to receive these notifications, ask us to add you to this AdSign CircuitPython Easter's Discord role. I mentioned the notes doc. There's a notes document that accompanies the meeting and recording. It starts out as a Google doc, which you can enter your notes into each week and then gets turned into a final form that's linked to. And it includes timestamps to go along with the video so you can use the doc to skip around and view the parts of the meeting that interest you most. The meeting tends to run about 45 minutes, plus or minus 15 minutes. After each meeting, we post a link for the next meeting's notes document to the CircuitPython DevChannel on the Adafruit Discord. Check the pinned messages in the CircuitPython DevChannel to find the latest notes doc so you can add your notes for the following meeting. If you wish to participate but cannot attend, you can leave hub reports and status updates in the document for us to read during the meeting. This meeting is held in five parts. I'll explain part as we come around to it. Just not to be too redundant. So we'll start out with community news. I'll take a timestamp. There we go. So community news is just a look at all things CircuitPython and Python on hardware in the community. And it's usually a set of chosen items from our Python and microcontrollers newsletter, which I'll talk about in more detail in a minute. So the first item up is Raspberry Pi 5 capabilities emerge. We've been hearing more and more about the RPI 5, a single board computer. And there are a couple of items that are a particular note to CircuitPython users. The one I'll mention here is that there's a difference in how GPIO pins are handled on Raspberry Pi 5. It used to be before Raspberry Pi 5, all GPIO pins were memory mapped. But now access to those pins goes through the new RP1 bridge chip, which is on the Pi 5 board. This means they're no longer mapped to the processor's memory, and so it can break some software that relies on the old way of doing it. So the Raspberry Pi people have updated the GPIO 0 library as being able to properly access the GPIO pins on the Raspberry Pi 5. And we're working on that to make sure that the software that we use uses the updated library and that it works properly. So there's some links in the note stock and in yesterday's, in today's newsletter, Python or microcontrollers newsletter, which you can take a look for more details about that. And the next item up is that we released CircuitPython 8.27 last week on Thursday. It's the latest bug fix revision, the latest stable revision of CircuitPython. It's a new stable release. There's a link to the details. There aren't too many changes in here. There are a couple of bug fixes, fixing a problem with MVNS and fixing a problem with RGB matrix memory allocation. So if you have trouble with RGB matrix on, say, the matrix portal S3, for instance, update to this latest version, and there were also three new boards and some board fixes, board pin fixes in here. So I mentioned that all these details come from the CircuitPython weekly newsletter. It's also called the Python or microcontrollers newsletter. It's run by CircuitPython, edited by our very own Ann Grella, and it's emailed every Monday. There's a link in the notes to where you can find the archives for this newsletter. It highlights the latest Python and hardware related news from around the web, including CircuitPython, Python, and MicroPython developments. We'd love to hear about things that you think should be in the newsletter. You can do this in a variety of ways. You can submit a PR to the draft of the next week's newsletter that's held on GitHub. You can also tag us on X or on Mastodon or some other social media site with the hashtag CircuitPython, or you can email cpnews at Adafruit.com. Any of those things work, we're happy to take any of them. So thanks very much. All right, now we'll go on to the state of CircuitPython libraries in Blinka. This is a qualitative overview of the entire project. It gives us a chance to look at the health of the CircuitPython project, separate some of the status updates. We'll talk about the project overall, then separately discuss the core libraries in Blinka. So first of all, we'll look at the overall numbers in the past week. In the past week, there were 18 pull requests merged by 14 authors. I see some new names I haven't seen before, SYMM and C010 and Ilario. Thanks very much if you're new or AXEIA also. There were three reviewers of these 18 pull requests. And the result of these pull requests was that there were 11 issues closed by six people, but 18 issues opened by 17 people. So we've got some catching up to do on issues. That's fine. I would also note that work that you do during October in GitHub is applicable to the Hacktoberfest celebration or competition or whatever you want to call it. So go Google Hacktoberfest to find out how you can participate in that. And next up, we'll do the core, Certified Fund Core and Scott, are you able to read that? Yeah, happy to. Thanks, Dan. OK, so numbers for the core. We had 10 pull requests merged from seven different authors. Thank you to all of those authors. I'll highlight AXEIA as a person who's been doing a number of board PR. So thanks to them for that. We had two reviewers, myself and Dan. We had 25 open pull requests, which is that one one page barrier. But I bet we'll get through these days on Monday. After all, we haven't had time to do a bunch of reviews. Our oldest is still 400 and well, it's older now is 475 days old. And that's the dual LUN logical unit mass storage thing, I think. And then we have another a number of others that have been open for a bit of time. So if any of those are board related, please take a look and take a look at those PRs and see which ones you can close or get across the finish line and merge it in. We had five closed issues by three people and eight open by eight people. So we're up three, which is not too bad, but and pretty typical for a total of 729 open issues. You can check those out at github.com slash Adafruit slash CircuitPython slash issues. We use the milestone system to triage the issues as they come in deciding prioritization for Adafruit funded work. That's to say that if you find an issue that is marked long term, but still want to work on it, we're happy to support you to do that. It's just unlikely that an Adafruit funded person will do the work themselves. The highlights for milestones is that we have 11 open issues for 8 to X, which is the version of the current stable version. We have 55 open issues for 9.0, which is the next major stable version. So lots of the work into main right now is going into 9.0 work. And lastly, I wanted to highlight that I created a 10.0 issue as well. Right now that's basically for any related deprecation stuff. So filing issues for like delete this thing or remove this thing in 10.0. So that's why I added 10.0 there. There's currently no issues open underneath it, but we should make those as we need them. And six issues not assigned to milestone at the time that these stats were taken. So we'll need to do a little bit more triaging on this Monday. And that's it for the core. All right. Thank you, Scott. And next up is the library section, which Tim can read for us. All right. Thanks, Dan. This section covers the Circle Python libraries, which is the Python layer of code that allows you to interact with various different pieces of hardware and offers helper libraries that make it easier to do different things at a higher level. All of these libraries, you can find them on GitHub. They'll all start with the name aterfruit underscore, circle python underscore and then have whatever the name of the library is. Across all of those libraries this week, we had eight pull requests merged by seven authors and two reviewers of those authors. The couple of names that stand out to me that might be newer or less frequent contributors are C010, Sim and Ilario. I think don't recall seeing those names before. So thank you to those folks who, again, might be newer or less frequent contributors. Thanks to all of our other authors as well who do contribute more frequently to some of the libraries and things. We had two reviewers. So thank you to Scott and myself for keeping the reviews going this week. Of those, let's see, it was eight pull requests merged. The oldest one of those was 22 days and the newest several were all just one day. So we're working mostly with newer pull requests this week. After those, it leaves us with 40 open pull requests across all those libraries. The oldest of those is 431 days, but I do think that one is a draft and the newest is just a single day old. There are, excuse me, over the past week, I should say there were six closed issues by five people and eight new issues open by seven people. All of our repos have the Hacktoberfest label on the repo repository itself. So issues and PRs and activity do count towards that. There are a total of 660 open issues right now across all those libraries and 19 of those are labeled as good first issues, which are identified for folks who have either less experience or perhaps are newer to programming, newer to contributing to Circuit Python. If you'd like to get a look at those, you can go to circuitpython.org slash contributing on that page. It lists out the open PRs and issues. If you click on over to the issues tab, there is a drop down there to filter by good first issue. If you're interested in getting involved, that's a great place to do that, as well as joining us here on Discord, like where this meeting occurs. In PIPI stats across the libraries this week, we had 68,930 downloads across those 314 libraries. The top 10 list is here in the newsletter, if you'd like to check that out. And there was one new library in the last week that was over in the community bundle. And there are a couple of updated libraries here as well, if you want to check out the links to those in the newsletter. And that's what we've got in library land for this week. Thanks. All right. Thank you very much, Tim. Go on to the Blinka section, which Alyssa reads. Hello. So Blinka is our circuitpython compatibility layer for MicroPython, Raspberry Pi, and other single board computers. And this week we had zero pull requests merged. There are currently four open pull requests amongst other repositories. There was zero issues open and two open by two people. There are currently none with the Actoberfest label assigned, but since it's assigned at a repo level, all of them would count towards Actoberfest pull requests. Let's see. There are currently 75 open issues and there were 11,692 Pi PI downloads in the last week, 6,827 PiWheels downloads in the last month and we are at 121 supported boards. And that's it. All right. Thank you very much. OK. Next up is Hub Reports. Hub Reports 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 everyone a chance to participate. If you are a text only or are missing the meeting, I'll read your notes when I get to them in the list. So as I said, I'll start. First of all, thanks to Scott for discussion about the merges that are underway for MicroPython and for fixing issues both of the MicroPython V1.20.0 merge, which we finished last week, and the V1.21.0 merge, which is underway at the moment. And thanks also to Scott for splitting up Display.io, which is going to happen in 9.00 to be able so we can turn more parts of Display.io on and off and so it's organized in a more reasonable way. Thanks to Snipi who noticed and fixed an interrupt issue in RP2040 Pulsein and we're working at PR right now. And then thanks to Unexpected Maker, who is very good, they introduced new boards and then also those boards, sometimes there are changes that they need, they push changes for those boards, both to the eight and nine branches right now and they're different right now, so it's more work but we appreciate Unexpected Maker keeping up with those changes. Okay, next up is C Grover, I'll read theirs. Thanks to Foamy Guy and Scott for quickly fixing a Git error cascade I caused with a typo and a community bundle submission. And then next up is DJ Devin, who's here but can't read at the moment. Thanks to Scott for improving memory allocation for the Matrix Portal S3 and fixing hard faults on File Save. Thanks to the Circuit Python developers for all their work for ESP IDF and MicroPython merging and pushing a minor A27 release update this week. Thanks to C Grover for a new audio breakout board that should be arriving this week. Thanks to Tim Foamy Guy for streaming the task of changing all display.show instances to root group in library examples and learn guides for the 9.0 release. And thanks, and also a group hug for everyone doing awesome things for Circuit Python. And next up is Tim. All right, thanks, Dan. I have hug reports this week. Thank you to C Grover who last week let me know that I had music going in my audio during a live stream. I very much appreciate that, caught it early and deleted it to avoid any copyright issues. Thank you to you, Dan, for pointing me towards some information about the Let's Encrypt certificates this morning and confirming the usage of the problematic type on a specific URL that I was looking at. And then thank you to Jeff, who looked over a library patch and caught an issue that was introduced by my IDE editing some white space inside the code that I had not caught on. I appreciate that as well. And that is what I've got, thank you. All right, thank you. All right, Jeff, are you able to speak? I think so. I'm just dropping in real quick. I'm traveling for a little while in Spain and Portugal, but I wanted to stop in with a group hug. And thank you, Dan, and also Scott for working on the merge. Melissa, thank you for the quality guide. I worked on some of that stuff before going on the trip and I appreciate you getting that all, you know, just in great shape to share with the public. And finally, Ann, I really love your track-themed PCB art project. And I know that there's a lot going on that I'm not aware of, but those are some of the highlights that I did notice from over here in Europe. Thank you. All right, thank you, Jeff. And next up is Liz. Hugport Scott for a good discussion and feedback on design of circuit Python libraries and FOMI guy for the flip-clock library. I used it for the first time last week. I remember when you were working on it, but I was able to actually use it. It's really amazing, especially the script for generating the spreadsheets. All right. And that's it. Thanks, Liz. And next up is Melissa. So I'm going to give a hug to Carter for helping me with updating guides and scripts for Raspberry Pi Bookworm to Jeff for addressing my issue about the buttons on the qualia while I'm on vacation and to prepare to run else. All right, thank you. And next up is Scott. Hello, just to hug to ADCC for doing a number of investigations related to circuit Python. Really appreciate you looking into a variety of things. All right, thank you. All right, thanks to everybody for giving hugs. Next up is status updates. This is the time, our time to tell folks what we're up to individually. I'll start and then go through the list as usual. People take a couple of minutes and talk about what they've been doing since the last meeting and what they'll be doing until the next meeting. You could also provide tips and tricks relevant to what you're working on. And if we end up with some having some significant discussion about something, we can move it to the in the weeds section in case it requires more discussion. So I will start. As I mentioned, I released circuit Python 8.27 last week. It's got some new boards, fixes and a fix for the RGB matrix storage issues that can cause errors. And I'm in the process of merging MicroPython v1.21.0 into circuit Python. That's Scott's working with me on that. It appears close to done. We have a few more tests that are failing and we'll make a PR and then see whether we can get everything to be green on the continuous integration tests. Next up is C Grover. I'll read theirs. Completed the testing and published the BNO 0559 DOF sensor calibration and double tap methods submitted a PR to the driver repo with the sensor calibration example. All also created a circuit Python method for detecting taps. And there's a link to some notes about this in the notes. Submitted an issue of how to format a circuit dependency in the requirements dot text list of a circuit of a community bundle repo. Listing a core circuit Python module is straightforward but it's not clear how to reference the dependency on a second community bundle library. So that would be very helpful to document that, yes. Okay, next up I'll read DJ Devans. Submission finished designing an enclosure for the three and a half inch TFT feather wing. I'm extremely happy to see Lady Aida revising the three and a half inch TFT. They haven't been available in the store for over a year. It is by far my favorite Aida for TFT for rapid prototyping and beta testing because you can plug any feather into it. Upon request, designed to stand for a single P5 matrix panel and returned from tweak vacation and fixed a lot of issues around the house before starting on multiple Halloween related projects. Next up I'll read some stuff from ADCC. Improved make translation data dot pie efficiency which in turn improves the build times by about 33%. I'm working through improving Custor compression given the current compression dictionary escaping short Custors isn't always the best choice and we'll submit a PR when I'm satisfied. Bad news on the Mac Sonoma problem. Mac OS SIP and sandboxing is blocking my user agent approach to modifying mounts putting it aside for now. And in case anybody wants to know Mac OS Sonoma delays rights to disk drives maybe just USB drives, maybe all drives and it causes circuit pie not to work very well it causes auto-regulate not to work very well. It's bad and we're trying to get to pummel Apple into fixing this. But first they have to even acknowledge it and chunking along on the PicoW underscore BLEIO. And next up is Tim Flomy Guy. All right, thank you Dan. Last week I started updating learn guide codes to use the new DisplayIO root group API. There's a draft PR in with I think around 20 or so of those changes in them, but I'll be continuing this week and there's quite a few to do. So I'm not sure exactly how long it will take to get through all of them. But once you get in the rhythm they do start to go pretty fast because it's not that big of a change. So that's the good news there. I have been over the weekend this last time I worked on it but I've been continuing on this Funhaus IoT dashboard project that I started a little while back. It's approaching the point where it has all the functionality that I had originally envisioned. I have basically one or two more things that I wanted to add and then basically happy with where it's at. This project can basically serve as a more advanced example for the HTTP server library as well as just something showing off the new template engine library that I was working on a few weeks back. So I'm excited to get that into kind of the finalized state and publish it and maybe try to pop on show and tell or something to show it off. Beyond that, today I started investigating the issue that's been reported with the Cleveland Art project which is a pie portal project that's in the learn guide system. I've been trying to narrow down to see if I could recreate the same issue. I did eventually get to the point where I can do that and I think I now have an understanding. Again, thanks to Dan, I think I have an understanding of what's going on with it and my next steps there, my next intention is to start working backwards through the recent versions of the NINA firmware and see if I can find one that's even remotely recent that still works to at least have a kind of workaround that would allow that project to be usable in the meantime. But that is all I've got for the week. Thanks. Okay, thank you. All right, Jeff has stepped off. So I'll read their computation now. One small PR to do less aggressive string compression on builds with plenty of free space for now on RP2040 and expressive. And then Jeff says also I'm halfway through my vacation in Portugal and Spain approximately posting occasional photos and there's a link to where the photos are on a metapixel.com. Can follow me on Macedon or read with RSS Reader if you're interested. And next up is Liz. All right, so last week I continued working on some Serger Python libraries. Scott met with me and gave me some great feedback and resources on thinking about software design. And then last week's episode of embedded FM podcast also discussed software design, which felt a bit kismet and definitely check out that episode if you're into podcasts. They really went in depth on things. And I'm starting to feel pretty comfortable with them how to write a library. So over the weekend, I continued adding to my large matrix display project. This started as a sports scoreboard learn guide and I hung out my wall for photos and since then I've added open weather data and a clock to make it a little bit more useful and not just sports. This past week, my partner and I started playing chess and he wanted to have a way to keep track of and display in our house how many wins each of us had. So I'm using the SMS messaging in Adafruit IO. So that we can ping a feed. We each have a feed for each of us any time we win and we put the move that we won with too. So we can reference that later if we want to. And then the makeshift portal gets account of how many entries are in the feed and displays account below our name. And I also used vector IO to show a chessboard pattern. And that's what I've been working on. All right, thank you. And next up is maker Melissa. Hello, so over the last couple of weeks because I was about last week, I updated the Kualia ESP 32 S3 guide with additional pages on using touch and figuring out the timings. I added missing analog pins to the Kualia ESP 32 S3 and circuit Python. I went through the Blinka and Pi TFT guides and started updating for Bookworm. And they should be working but I heard some people still have an issue so I need to test that more. I updated the focal touch driver to work with the CST 826 touch chip. And I tested various potential fixes to GPIO not working on the Raspberry Pi 5 and decided to go with the GPIO D. I added the Raspberry Pi 5 support to Blinka and I kind of, I have a PR but I haven't tested a square C and spy on that yet but they should work. And then I fixed the pull-ups and pull-downs for the GPIO D in Blinka in that PR and I'm gonna continue going through the guides and testing on the latest Raspberry Pi OS which is Bookworm. And then I'll try and get the, I also need to try and get the Kualia buttons working through the IO expander. Hopefully I can get that working without any code changes. And then I'll update my focal touch pull request to improve the chip detection since it's not a focal touch chip. That's it. All right, thank you Melissa. Okay, and finally, Scott has gonna do SAS. Hey, okay, so I sent a PR for splitting what is now called bus display, formerly just display. E-paper display, four wire and I squared C display out of display IO in the separate modules. I squared C display also gets renamed to be I squared C display bus because it's not the display object itself. And I renamed parallel display to parallel display bus as well for the same reason. I also removed to display IO shape which is being a bit aggressive but I'm pretty sure no one uses it. We'll find out. I found one library that uses it and we can update that but nobody uses shape and there's no real reason to leave it in there. In this PR, I fixed an issue with root group in 9.0 as well. It works just fine in eight but it was broken in nine. So that fix is fixed in this PR as well along with some changes to the PDF output of the docs. Basically the PDF output got so large like in particular the support matrix got so large that the PDF build wasn't working anymore. So I split it into two PDFs. One for like all the APIs and docs and stuff and then one for the support matrix. So hopefully that'll give us some more time for that to work. I sent out a PR to merge in 8.7 in the main. Specifically this brings the RGB matrix fixed in the main which will be good. DJ Devon three asks a lot of people use display shapes is that a different library that is a different library that is a Python library which is part of the reason I'm like we don't need this thing that's native. I also am working with Dan on the 121 merge. I pushed some test fixes and I plan on coordinating with Dan later today on getting that finished up and 121 merged in. There is an issue with NeoPixels right now on main with has to do with being able to get the transmit function. And this has to do with being able to, yeah. I think I know what the fix is and I wanna make sure I add a test this time because Dan and I have been and Jeff have been really good during merges to make sure all our tests work. So we're finding circuit by them broken in places where we haven't added a test to make sure circuit by them work still okay. So I'll probably take a look at that as we're working on 121 or similar so that we should hopefully get that fixed before we do an alpha just because that's gonna cause a lot of havoc I think. But yeah, lots of merge related things and we did discuss and I didn't put this in the list but we also did discuss being more for both for warnings. In particular, with show going away, we thought we'd add a show implementation back that just tells you that it doesn't work anymore and to use your group. So we're gonna have that, we'll have that nine and then we'll remove that in 10 completely. And then I'm gonna look into doing something similar for this like reorganize display out thing too. Yeah, for shape, for not using shape generally, either just a bitmap or vector IO could work. That's all for me. Okay, thank you Scott. Okay, that's it for status updates. Our in the weeds section is empty. This would be an opportunity for longer discussions but we don't have any this week unless someone has something last minute. But I don't think so. So we'll just take a time stamp for this approximately. And then so finally, I think that's it. We'll wrap up now. This has been the Circuit Python Weekly for October 23rd, 2023. Thank you to everyone who participated. If you want to support Adafruit and Circuit Python and those of us 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 be available on major podcast services. The meeting will also be featured in the Python for Microcontrollers newsletter. Visit adafruitdaily.com to subscribe. The next meeting will be held Monday as usual at 2 p.m. Easter and 11 a.m. Pacific time. And the meeting will be held on October 30th, 2023. That's Monday. You can join this meeting by going to the Adafruit Discord, A-D-A-F-R-U-D-I-T slash Discord. And if you want to be notified about this meeting and any changes to the scheduled time per day because of a holiday or other reasons, you can ask to be added to the 8th at sign Circuit Python Easter's Roll and Discord. So we hope we'll hear from you all next week. Thank you, everyone, and I'll stop recording.