 Hello, everybody. This is the Circuit Python Weekly Meeting for November 13, 2023. I'm Jeff Epler, and I'm sponsored by Adafruit to work on Circuit Python. Circuit Python is a version of Python designed to run on tidy computers called microcontrollers. Circuit Python development is primarily sponsored by Adafruit. So if you want to support us, consider purchasing your hardware from Adafruit.com. This meeting is hosted on the Adafruit Discord server. You can join any time by going to adafruit.it-slash-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 the U.S. holiday. In the notes document, there's a link to a calendar you can view online or add to your favorite calendar app. We also send notifications about upcoming meetings via Discord. To receive these notifications, ask us to add you to the Circuit Python East Discord role. There is a notes document that I just mentioned to accompany the meeting and recording. If you're watching this after the fact, that notes document includes time stamps to go with the video so you can skip around to the parts that interest you the most. This meeting tends to run 45 to 60 minutes, but it's highly variable depending on how much folks are participating. Anyway, after each meeting, we put up the link with the next meeting's notes doc so that anytime during the week, you can add your notes and hug reports. If you wish to participate but can't attend or prefer not to speak, you can leave your hug reports and status updates in that document and I'll read them out during the meeting, or rather whoever the host is that week will. All right, so the meeting structure next up is community news where I will pick out a few choice items from the Python and Microcontrollers newsletter that goes out every Monday thanks to our wonderful Ann, engineer, Ann B. Next up after that, we take a quantitative overview of the entire project. It's called the State of Circuit Python, the Libraries, and Blanca. The third part is hug reports. That's the first round, Robin, in which we invite anybody to highlight the good things that folks are doing in the community around us because we believe it's important to take the time to recognize the awesome folks in our community. The fourth part and kind of the meat of the meeting is status updates. It's an opportunity for each person to tell us what they've been up to. You can take a few minutes to talk about what you've done in the last week or since you last checked in with us as well as what you hope to do in the near future. If you come every week, then that would mean, you know, over the next week. And then the final part is called in the weeds. If we have something that doesn't fit one of the other section that would benefit from a little community discussion live rather than on an issue or in just a text chat, this is the place for it. And, yeah, that covers how the meeting will go. So next, I will tell you about community news. There is so much stuff in every weekly newsletter. I can just pick a few items. But the headline was an invitation to join the official Python Developers Survey 2023. The Python Software Foundation and JetBrains are conducting the seventh iteration of the official Python Developers Survey. The goal is to capture the current state of the language and the ecosystem around it. By comparing the results with last years, they can identify and share with everyone the hottest trends in the Python community and key insights into it. The PSF encourages you to contribute to the community's knowledge by sharing your experience and perspective. Your participation is valued. After the survey is over, the PSF will publish the aggregated results and randomly choose 20 winners among those who complete the survey in its entirety who will each receive a $100 Amazon gift card or local equivalent. And CircuitPython is a perfectly valid kind of Python. So even if it's the only kind of Python that you work with, you can fill out this survey. In fact, we at Adafruit would love for you to do that. Next up, making music with CircuitPython and the Raspberry Pi Pico. This one is apparently from the Pensacola Maker Faire. Anyone looking to do synth music must take a look at the work done by Cooper Dalrymple. Introducing the Pico Synth Sandbox, a new development board for CircuitPython Synthio, which was featured this past weekend at the Pensacola Maker Faire. And there are some links there in the notes document, both to the creator's website, to YouTube and GitHub. And then I think this is an extract from one of those pages. It says, want to dive in and start programming your own digital synthesizer? The Pico Synth Sandbox might just be the root for you. Leverage the power of the RP2040 and the simplicity and versatility of CircuitPython in the Synthio library to get your ideas off the landing strip and into the sky. And then the last item that I picked out is another synthesizer related item. This is from the Adafruit Playground by our very own C Grover. And it is a little document about using EuroVac control voltage signals from Synthio. And I haven't actually read this page yet. I will be taking a look at it after the meeting. So anyway, this is just a preview of the CircuitPython Weekly newsletter, also called the Python on Microcontrollers newsletter. It is a community-run newsletter emailed every Monday. You can check out the complete archives on AdafruitDaily.com slash Category slash CircuitPython. And AdafruitDaily.com is also the site to go to to get an email subscription so it shows up automatically every week in your mailbox. It highlights the latest Python on hardware related news from around the web, including CircuitPython, Python and MicroPython developments. I mentioned it's community run. So to contribute your own user project, you've got a number of ways to do it. You can edit next week's draft directly on GitHub and submit a pull request with the changes. You can also tag a tweet with hashtag CircuitPython on X or you can email cpnews at Adafruit.com with some basic information. And we really do welcome all your contributions. You are what create our newsletter. So thank you for that. And that wraps up the news section. So next up is the state of CircuitPython, the library and BlinkUp. So this is kind of a qualitative overview. Excuse me, a quantitative overview because it's centered around numbers, mostly of activity on GitHub. And this is reporting over the previous seven days because, you know, whatever reason, occasionally stuff is missed, but this gives us a good way to get an overview of what is going on. So we had 41, excuse me, overall in the whole project, we had 40 pull requests merged from 21 authors. And let me look through this list very quickly. I don't recognize the name of Fexivan, G Grisel, Musco M, Jesse Jones, Look Forward, Supik, Haugen Mitch, Andy Bing. So a big thanks to those newer or less frequent contributors. As well, we had eight reviewers, mostly from within the Adafruit umbrella. So thank you to those reviewers. We use code review as a way to keep the quality of the code that we incorporate in CircuitPython as high as we are able to. And so that is a very valuable kind of contribution. As well, the contributions from people who comment on issues and pull requests, although those aren't directly recognized within this report, that is also very helpful. And Tim will be talking a little bit more about that further down, when we talk about becoming a reviewer. Next up, Scott, are you able to tell us about the core? Sure, I'd love to. Okay, stats for the core. We had 19 pull requests merged from 12 different authors. I won't go name the new folks just like Jeff just did. We have three reviewers as well. Dan, Jeff and myself. We have 21 open pull requests. So we're comfortably under that one page limit of 25. We have 15 closed issues by four people and four opens by four people. So we're net down quite a few, which is awesome for a total of 664 open issues. We use milestones to track prioritization for Adafruit funded folks, along with the releases that we plan on doing. So we have one open issue on 10.0. We have eight open issues for 8.2x. So 10.0 is things we'll do in the future when we start circa 5.10. 8.2x fixes to the latest stable release. And then we have 62 open issues for 9.0, which is the next major feature stable release that we'll do. So lots of work to do there. At the time that these stats were grabbed, we had one issue not assigned to milestones, so we have some triaging to do as well. And that's it for the core. All right. Next up, Tim, I hope you can do the library section for us today. Yeah, definitely love to. So this section covers the Circuit Python libraries. Those are all on GitHub under the name Adafruit underscore, Python underscore, and then whatever the name of that specific library is. These are the Python layer of code that allows you to interact with various different bits of hardware and provide helper functionalities to make it easier to create Circuit Python projects. Across all of those libraries this week, we had 21 pull requests merged by 10 authors. The names that were newer or less frequent or just names that I didn't recognize were many of the same ones Jeff mentioned. I did want to also say Timonskoo. I don't recall seeing their name pop up for libraries before, so thanks to them as well as all the other newer and less frequent contributors, as well as all of our more usual suspects in contributing code. For those 10 authors and their 21 pull requests, we had seven reviewers take a look at those. So thank you to all of our reviewers. That does look like the usual team there, so thanks to all of those folks for continuing to keep our reviews going. Of the merged pull requests for this week, the oldest one was only 11 days old and the newest one was just one day, so we were on to some newer pull requests mostly this week. That leaves us with 57 pull requests still open, the oldest of which is 452 days and the newest is just the one day. Over the past seven days, again, we had 10 issues closed by three people and 10 new issues open by eight people, and that leaves us with 679 open issues, of which there are 19 that are labeled good first issue. You can find all of those good first issues over on circuitpython.org slash contributing. On that page, it's going to list out all of the open pull requests and there are some tabs across the top that will let you click over to issues if you'd like, and on the issues tab, there's a dropdown filter that will let you select which tags you want to look at and a good first issue as well as a couple other tags are in there, and that is always a great place to go if you want to get started with circuitpython if you don't have experience, but you want to get involved in contributing. Head there and also join us here on the Discord as well. For PyPy stats this week across all those libraries, there were 106,100 downloads from PyPy across those 321 libraries, and the top 10 list is listed here in the notes doc if you'd like to take a look at that, as well as the list of seven libraries that had updates in the past week, and that's what we have got in library land this week. Thanks, Jeff. All right, I will just add one thing on top of that. Two of those libraries are new. There is a new library for the Qualia board, as well as for the ADS 7830, which I'm guessing is some kind of sensor, but I'm actually not sure. All right, but with that, Melissa, do you want to jump in and read us the block about Blinka? Yeah, so Blinka is our circuitpython compatibility layer for MicroPython, RaspberryPy, and other single board computers. This week we had zero pull requests merged. There are currently three open pull requests amongst other repositories. There were zero closed issues and zero open issues, leaving a net of 77 open issues. There were 12,981 PyPy downloads in last week. There were 8,960 PyWheels downloads in this month, and we are at 125 boards. Thank you. And next, we move on to Hug Reports. And I just need to find my blurb. Hug 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 in the order it is in the document to give everybody a chance to participate. If you're text-only or are missing the meeting, I'll read your notes when I get to them in the list. And I've been away for a while, so all I have for y'all is a group hug. And next up is Dan. Okay, I have a bunch of things here. So thanks to Romkey and ADCC, who have been characterizing this problem we are seeing with Mathorex and Oma, where there are delayed writes to the circuitpy drive, which makes it not work properly. That's very helpful. And thanks to ADCC for doing all kinds of file system work over the past few weeks, like figuring out if it's possible to pretend that a FAT-12 drive is FAT-16, how to put six pounds of potatoes in a four-pound sack that has increased the file space available on tiny 64kb circuitpy drives by removing some of the base allocated for file system metadata. And then finally, making circuitpy drives mountable on Android, which is a big improvement, and that means people can plug their boards into an Android tablet or phone and edit the files directly, which is great. The latter two things are already in CircuitPython 9 Alpha 4. Thanks to Look Forward for adding I2SM clock support on Espressive. That's very useful. And thanks to Retired Wizard, who's doing a lot of alpha testing of the 9.0.0 release. Thanks to Jesse Jones and Supsic, who are new contributors to the French translation. Thanks to you, Jeff, for yesterday approving a PR build fix, so I could get 9.0.0 Alpha 4 out yesterday. Thanks to Bill88T, who just fixed ESP32C6 Wi-Fi on 9.0.0 Alpha 4. And thanks to Ina James, who's doing a lot of work on Async.io, adding functionality to it. Okay. All right, next I've got notes to read from a couple of people. After that, we'll be on to FOMI Guy. But first, DJ Devon 3 has the following hug reports. Make a Melissa for the Qualia Library and all your contributions lately. We'll be nice to see all the new displays wrapped up in a library. A hug to the Ruiz Brothers for a beautiful little Christmas tree made of nudes and 3D printing. One for Dan H and Team for releasing CircuitPython 9.0 Alpha 4 this week. To Scott for all the work on Dynamic Memory and Split Heap Voodoo. To Retired Wizard and Jacob Marble for helping track down heap and pystack bugs. And finally a group hug. And then from 88CC. We have a hug for Dan H with me on Discord providing useful feedback and suggestions. And one for Ennecdata for cooking up the test from my wifi.stopap pull request. All right, and now we come to Tim and then Katny. All right, thanks Jeff. Hug reports for me this week. Thank you to Vladak who added support for the web workflow to circuit, which is really cool to see. I definitely have come to use circuit quite a bit. So it's nice to see that working on those devices that don't have USB drives. Thanks to Dan for keeping the new releases coming. Thanks to Scott for a super helpful tip about installing PIP with the dash E argument as well as sharing some thoughts on the circuit changes I was working on during deep dive. And a group hug to everybody. Thanks. Thank you. Next up is Katny. All right, I have a hug report to Paul Cutler for a lovely chat and more ideas. To Melissa for a great chat. To ADCC for pointing me to a specific workaround for circuit Python and macOS Sonoma and for jumping in to let me know that running a macOS VM in parallels won't help. To Romkey for letting me know that an Ubuntu VM works in Sonoma with some caveats. To Rose for spending the last few days elbow deep in JavaScript and Python working to make image handling in the Pelican powered static site generator better and easier to do. And a group hug for everyone. Thank you. Next up is Liz. Hello. So hug report to Scott for working with me on the ADS 7830 library which is a four, sorry, it's eight ADC inputs on a STEM a breakout. Jepler, welcome back from vacation. Thank you to DJ Devin for documenting his large matrix panel project. The tiling diagram was very helpful for someone I was assisting on the team and group hug. And next is maker Melissa. I wanted to give a hug to Jeff and welcome back and I wanted to cat me for a great chat and group hug to everyone else. All right. And then we have Paul Culler. Hi Paul. Hi Jeff, I've got a hug report from Dan for all their work troubleshooting the macOS Sonoma file system issue and a group hug. All right, we're nearly at the end of hug reports. I have some firm retired wizard. One for R Grisel for the Lilligo TDAC pull request. After I blew up my now unattainable keyboard feather wing, I had plans to get the Lilligo TDAC working with circuit Python but thanks to R Grisel's work I was able to just pick up and start Python coding for it. This is a group hug for all the Adafruit developers and community contributors. And now it is time for Scott to wrap up the section. Go ahead. Hey Jeff, welcome back. Thank you. Hug report to Foamy guy for deep diving while my schedule remains uncertain. And it was fun. I got to catch some of it on Fridays. Thanks Tim. It's your time to tell folks what you're up to. I will start and we'll go through the notes document in order. When I call on you take a couple of minutes to talk about what you've been doing since the last meeting and what you'll be doing until the next meeting. If there's a quick tip or trick that you want to offer please feel free to do that but if the discussion becomes more of an exchange then we'll move that too in the weeds. And with that I will start off with an update. I did a few small things while I was on my trip just here and there but nothing really of note. But what I'll be doing this coming week is digging into some camera issues that have been raised. We have some in the issues tracker and some that I've kind of been getting verbally and so just going to work on those followed by some other version nine bugs if I managed to clear out the list of the camera backlog. Also please have another group hug. Next up is Dan. Hello again. Okay. So as mentioned I released CircuitPython 904 on Sunday. There was an alpha 3 build and it was fine. I mean the what was in it was fine but it failed to build the labeled binaries that as alpha 3 was due to some internal problem in the build system. So I fixed that and we're just skipping alpha 3 that's all. And this release has the new split heap storage scheme which may need tuning to resolve storage issues with larger programs but Scott I think has just this moment figured out how to fix one of the major issues that we're seeing right now. I worked on some more minor display IO factoring changes mostly just changing readme files and example files and now I'm just plugging away at the list of 8.2.x and 9.0 bugs of which there are 5 or 6 dozen. Okay. Alright now I have notes from DG113. Submit in my ESP32-S3 feather weather with MQTT project to the playground. Documentation isn't as fun as building the projects. For a personal house project I designed in 3D printed 9 feet of white U channel for a side lit LED strip. The house builder in their infinite wisdom decided to only install a hallway light at the end of the hallway. It uses a PIR sensor to automatically activate the LED strip installed along the top edge of the base board and in the note stock there is a photo of that. The 8.2.x adscc writes resolved the circuit python USB mass storage not mounting on android recovered about 25% of flash file system space for boards with tiny flash for example M0 trinket. As part of my RP2 BLEIO work updated the CYW 43 driver to see if it resolved any open RP2 Wi-Fi issues. It didn't but the work point of me to a resolution for Wi-Fi dot working on RP2 underscore BLEIO it's got my full attention this week. Next up is foamy guy hello again. Alright thanks Jeff. So for the past week most of my time went to the learn guide code repo updating all the projects to use the new display IO APIs and then this morning I went back through the actual learn guide pages the ones that contained the same code but in non embedded form that needed to be updated inside learn system over on that side and I've done those this morning as well so I think all of the display IO API updates are behind us on the learn guides but I will do another check at some point because when I ran the original list it was a couple of weeks back I don't know if any new ones snuck in since then so I'll check in again but the vast majority of those are taking care of I think at this point which is nice the other stuff that I did get into was in circuit working on the proposal to add web workflow in the circuit there was one bit that wasn't functional yet which was the auto tag which allows circuit to install stuff based on the contents of your code pie so I've been adding that functionality and working through the issues that pop up as I do and then for this week the only thing I know for sure that's so far is to do a bunch more testing of the USB and web workflow in circuit I've been working in web workflow with it for a lot so I need to go back and make sure that I haven't broken anything which I imagine that I have because I've already fixed a few other things but that's what I have got so far for this week thanks thank you and next is catney hello so I've been blocked on releasing content due to image handling on my blog it turns out the image situation in the pelican static site generator isn't that great my wife's been working on writing a new plugin that makes it a lot more straightforward I was able to understand the python side of it but I know nothing about javascript so a huge piece of figuring out that puzzle on my own is way outside my wheelhouse I have a series of posts written up that are waiting on images and I'm hoping to start getting those out this week my office currently looks like someone set off a glitter bomb full of parts I finally decided to organize everything and fortunately or unfortunately for me that means gathering everything and sorting it it also means deciding how I want to organize it I already have the microcontrollers handled how I will handle the rest depends on how much of each thing I have I ordered a bunch of component bins ahead of this project so I'm not lacking in places to put things but I am looking forward to stacks of labeled bins on my shelf and being able to see my floor again I identify with you about how stuff just explodes everywhere I think everybody in this world it goes through that continuously in their lives but anyway now it is Liz's turn hello and I can confirm that I currently have no control of my desk so I wrapped up the ADS 7830 ADC library and made a PR to add it to the bundle when I wrote my notes about an hour ago a guide was in moderation but since then it is now live so check it out if you're interested about that breakout I also updated the Metro ESP32S3 guide to reflect the RFB hardware changes and then over the weekend I soldered up some breakout boards for my patch bay project and happy to report they are working as expected and I used 3mm pink LEDs on them so I'm currently waiting on the acrylic mounting panel to come in from Senkut Send and then I'll be able to start fully assembling it thank you and I'm just, yeah it confirms that that stuff goes everywhere and you gotta be ruthless to stay on top of it but anyway, maker Melissa you are up hello, let's see I'm giving for the last 2 weeks because Discord went to the man last week because of updates so I wrote the PCA 9554 driver I wrote the 8XX driver for Arduino which was my first new Arduino library I updated the quality guide with 2.1 inch round display touch screen usage I added the 4 inch round display to the guide I finished writing the 8x4 quality library which allows easy changing of displays and touch drivers just by changing the display ID as well as accessing all the peripherals I helped Aaron with writing code for a matrix portal project I started looking into revamping the PiEye's fondant stuff so that it will run better on modern library Pi hardware and this week's gonna be a short week for me because I'm taking some time off starting on the 16th and so I'm gonna finish up helping Aaron and continue to update the PiEye stuff I'm not sure if that's gonna be done before I take off I'm gonna try and update any new boards on CircuitPython.org with the new releases over the weekend and I need to write a script to list any hidden boards on CircuitPython.org so I can easily see if new info has popped up for those boards since adding them and for personal projects I'm working creating my first CircuitPython board to work with LEGO Mindstorm sensors and motors but I'm still in the prototyping and phase and learning key CAD better and then I'm repairing and operating an old Dell Inspiron 1545 laptop run better and that's for me You sound busy but alright it's fun projects though Next is Paul Cutler Thanks Jeff I'm happy to share that after way too long of a break and then show is coming back I'm recording 2 episodes this week and hope to have the first one out next Monday Thanks I have notes from Retired Wizard Spend a lot of time coding a command line history slash editor for the Lilligo TDAC PyDOS keyboard handler as well as special character sequences for generating characters missing from the keyboard like spare brackets and an equal sign Next I plan to add all the same features to my touch screen and BB20Q I2C keyboard handlers need to put aside the fun coding projects and get back to compiling the silly full build equals zero PR for various port slash board configurations so it can be taken out of draft and considered for merging and once again it is Scott who gets to round out the section Alright Thank you Jeff I'm still off and on because my mom is still in the hospital so I'll be doing that I try to do that a little bit every day along with working a little bit every day I've got the Metro S3 RevV to test SD cards with so I was just thinking I might bring that in case she's napping when I'm there I said I'll likely look into the PyStack exhausted reports it was supposed to stay the same size with the split heap stuff but I must have missed something and it turns out I did I found the issue and I just tested it right now in a brand new poll that I just made $85.98 The problem was is that we used to pointer math is tricky so if you have a UN32 star and then you add a number to it it's that number times the size of UN32 bytes that it ends up moving but with the split heap stuff I made it UN8 star so I was inadvertently making the PyStack a quarter of the size that it was set for whoopsies and the initial heap actually suffered from that as well so I just made a PR for that which will be good and I fully expect that we'll see memory allocation errors due to the split heap stuff still but this should get us past all the PyStack exhausted issues which will be good and just a heads up for deep dive Tim is planning on doing the next two weeks for me still since I don't know what my schedule is so thanks to Tim for doing deep dive again and that wraps up status updates the last section is called in the weeds it's the time for long form discussion of issues that need a little bit of community back and forth and there is one topic it is mine and I want to talk about what weeks we skipped the meeting during the upcoming holiday season so in the US the very important holiday of Thanksgiving is coming up I believe that is next Thursday and Friday and that doesn't fall on a Monday but often people are taking off an extended period of time so I just wanted to to float the idea of skipping one or the other of those and then in a second I will talk about Christmas which is of course in December so let's see anybody want to jump in with thoughts I was just going to look who is scheduled to host so like Scott is scheduled to host the Monday before Thanksgiving and then let's see Dan the Monday after Thanksgiving so do you all want to have those meetings or do you want to skip one of them what do you think um I'll be back by I'll be around on the Monday that I would do it yeah I'll be around too but my variability comes from my mom's situation did we skip Thanksgiving in the past I don't actually know the answer to that I guess I can page back real quick to 22 I don't feel like we have I don't think we did alright so we can plan to do around Thanksgiving as per usual if that's good for everybody alright then both Christmas and New Year's fall on Mondays so I think that we will hold the last circuit Python meeting of the year on December 18th and then return to be January second a Tuesday how's that sound to people that makes sense to me I don't think I'll be back in January yet though I think I guess it's marked till the third so yeah I wouldn't be able to do the January one wait January 8th I could make that so we would skip the 25th and the 1st we would skip the 25th and the 1st but we'd skip the whole the whole week of the 25th and we'd just move the that 1st January meeting by one day to Tuesday and that again is a day that Dan is scheduled to host I should be around then so I don't think I mean probably there'll be two weeks worth of news it may be thin but that's okay but I agree that we could skip it we could skip the whole week in there skip the 25th bump the 1st to the 2nd we need to do some swapping around that's fine I don't think I'll be able to make the 2nd but that doesn't mean we'll figure out how to swap you out of the 8th well no I think we could just cancel me and give me a break right now I'm on Christmas so we could just cancel that one and then shift yours to the next oh I see okay alright we'll figure it out well I'm happy that that was easy to settle so yeah that means that we will see everyone as per usual next Monday the 20th at the usual day and time and let me get my notes for what else I say to wrap up this meeting this has been the circuit python weekly meeting for November 13, 2023 thank you to everyone who participated if you want to support Adafruit and 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 is available on major podcast services it also invariably gets a link in the python for microcontrollers newsletter visit adafruitdaily.com to subscribe and also remember we want your stories and projects for the newsletter I already covered that the next meeting will be on the 20th at the usual time of 2pm eastern 11am pacific it will be on the Adafruit discord you can join at any time by going to adafruit.it slash discord to get notices about each meeting including changes to the time or day just ask us to add you to the circuit pythonista's role on discord and that is all I have we hope to see y'all next week thanks everybody