 Hello, everyone. This is the Circuit Python Weekly Meeting for Thanksgiving week, November 20, 2023. It's that time of week where we all come together to talk about Circuit Python and what we're all up to, and learn a little bit about the Circuit Python world. I'm Jeff Jepler, and I'm compensated by Adafruit to work on Circuit Python. To support the development of Circuit Python, a great way to do that is to buy your electronics at adafruit.com. And of course, if you are international, we've got a list of international resellers at the bottom of that front store page. So check out if you can find it locally, but get Adafruit stuff that makes Circuit Python happen. This meeting is run in several parts. Next up will be community news where we take a look back at our weekly email newsletter. After that, we go by the numbers in the state of Circuit Python, the libraries and Blinka. Then it's time for everyone to participate with hug reports and status updates. And finally, if we need it, we have a section called In the Weeds for longer form discussion. If you're watching or listening to this after the fact, in the show notes, you will find a link to the notes document with some timestamps so that you can skip around to the parts that interest you the most. All right. And with that, I am going to tell you about community news. This is a weekly newsletter that we publish on adafruitdaily.com and by email. And it comes out Mondays. And I like to just highlight a few of the items in it. There's a lot more to give you an idea of what is up. So we had Circuit Python 9.0.0, Alpha 5 and Circuit Python 8.2.8 release. So we've both got the next set of bug fixes out. And we've also got the next experimental version with new features, incompatible changes and all that stuff. And in the notes document, there is, yeah, in the newsletter, there is a link to the Adafruit blog and the release notes. Next up, GitHub has recognized Adafruit's Lamar Freed with the Hardware Hacker Award. That is the GitHub Awards 2023. And there's a link onto the GitHub blog. Next up, the fun stuff y'all are doing with Circuit Python. First, I picked a project by our own mark known as Gamblr to show animated GIFs on a matrix portal. And there is a new page on the Adafruit playground all about that. Next project is on X and GitLab by an individual named Brandon Lane, the Circuit Python Touch Wheel Library. And I'm guessing from this screenshot that maybe it also teaches you about how to create capacitive touchpads in your own PCB design. So that's pretty cool. And there was also a good list of upcoming conferences. The one that I chose to spotlight is PyOhio 2023, which is a one day streaming conference on Saturday, December 16th. That one is free to attend. There will be a Circuit Python talk as well as three PyScript talks in addition to all the other activities. And if you don't know, PyScript is interesting because one way that you can use PyScript is with MicroPython. So that's why that is particularly highlighted. So this has been a little overview of our weekly newsletter emailed every Monday. The complete archives are at adafruitdaily.com slash category slash Circuit Python. You'll also find after the fact a link to this issue of the newsletter there in the show notes. We aim to highlight the latest Python and hardware related news from around the web, including Circuit Python, Python and MicroPython developments. We really need your support to gather these stories that are of interest. So if you have a project, if you know of somebody who's doing something, just anything of interest, you can submit a pull request on GitHub. With the changes, you can also tag your tweet with hashtag Circuit Python on X, formerly known as Twitter, or email cpnews at adafruit.com with your scoop. Okay, next up is the state of the Circuit Python libraries and Blinka. We use our bot called adabot to gather numeric statistics from GitHub over seven days of activity and review that in this section. So I'll start by giving the overall statistics and then we'll break it down by different parts of the project. Overall, we saw 36 pull requests merged by 30 authors, which is a huge number. And some names that are new to me that seem unfamiliar, How to Flow, Danny BD, Rizal Manda, Okaro, let's see, Unid, CKOCYIGIT, SUPSIC, and Alex Tremblay. Some of you may have contributed before, but those are names I'm less familiar with seeing. So thank you for that. And we had nine reviewers. In addition to the usual people, I want to particularly highlight Bill88T. Thank you for doing some PR reviews and also anecdote. And finally, we had 30 issues closed by 12 people and 14 opened by 13 people. So Net, we were able to bring in a lot of good changes to the software and also reduce the number of issues by a small amount. So next, we will zero in on the core, which is the part of CircuitPython that is written in the C language, and Dan is going to let us know all about that. Alright, thanks, Jeff. So in the past week or so, we had 30 pull requests merged by 28 authors and there were five reviewers. That is a lot of pull requests. Some of this is fixing some bugs that came up during the release process or just before the releases, but it's an impressive number of pull requests. So we had 25 issues closed by eight people. Oh, they're 18, sorry, they're 18 open pull requests. Some of those are really old, and some of them are not so old but are still in draft status because they're in progress. And then there are a few that are still open, mostly new board requests, I believe, at the moment. So over the week, we had 25 closed issues by eight people and six open by five people, which is a nice decrease in the number of closed issues. There are now 659 open issues, and those are divided up into milestones. There's one issue for the 10-00 release, which is something that is pending that we would do in that release. Three open issues left for A2X, 56 open issues for 9-00, two open issues for 9-XX, and so forth. There are two issues not assigned a milestone, so we have to triage those. So that's it for the core. Thank you, Dan. Next up, Tim, we'll tell us about the libraries. All right, thanks, Jeff. For this stats here, covers the last seven days or so across all of the circuit Python libraries. These are the library Python layer of code that allows you to interact with various bits of hardware, like drivers to make different sensors and things work, or provide helper functionality just to make stuff easier to code at a higher level. Across all those libraries this week, we had four pull requests merged by four authors. I think this list of names is mostly the usual folks. I'll say thanks again to Retired Wizard. I'm not James, and to Liz as well, who are newer, but definitely have appeared in these lists before. We had four reviewers for those pull requests, and those do look like mostly our usual reviewer suspects there. Lady Aida popping in the review list. Thanks to her for this week. There were, let's see, the list of merged pull requests. So the timeline here, our oldest pull request merged this past week, was only 11 days old. The newest one was just one day old, so mostly sticking again with the newer pull requests this week. Leaving us after the week with 57 open pull requests, the oldest of which is 459 days, and the newest is just one day. And then over that same seven days, we had four issues closed by four people, with another new eight issues opened by eight people, and that leaves us with 686 open issues total now. 19 of those are labeled good first issues. You can find those 19 under the good first issues filter on circuitpython.org slash contributing. That page will list out all the open PRs and issues. There are some tabs across the top. You can click over to issues, and then there's a dropdown where you can filter by the tags, including that good first issue tag, which is the one that we assign to issues that we identify as being good for folks who are just trying to get started and maybe don't have as much experience with programming or Python or circuitpython so far. So check out those if you are interested in getting involved. In PyPy stats for the week, we had 115,056 PyPy downloads across those 321 libraries. The top 10 list is here in the note stock if you'd like to take a look at it. And then the new libraries this week or the newer updated libraries this week were Async.io, WeClassic, and the 8569x. So I think we got updates. I believe all of those are existing libraries, but that is what we've got for libraries this week. Thanks. All right. Thank you, Tim. And I think also at that contributing link you'll find information on getting started if you don't know much about Git and GitHub. And of course, here on Discord and help with CircuitPython channel, we would love to help you get up to speed so that you can improve CircuitPython in the ways that are relevant to you and hopefully contribute that back to our core or our libraries. All right. Rounding out this section is Blinka, which I will read today. Blinka is our CircuitPython compatibility layer for MicroPython, as well as Python running on single board computers. And this week there were two pull requests from one author, How to Flow, and one reviewer, which was Melissa. She is usually the one spearheading the development of Blinka, but she's off this week. That leaves three open pull requests, all of which have been open for over 150 days. Issues-wise, there was one closed issue and no new issues opened, leaving 77 open issues. The number of PyPI downloads of the main Blinka library over the last week was about 14,500, and the number of PyWheels downloads over the last month was 7,500, and the number of supported boards is 126. Okay. Next up is the section we like to call Hug Reports. 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 alphabetically to give everyone a chance to participate. If you're text-only or are missing the meeting, I'll read the notes for you when I get to them in the list. And just to reiterate, if you would like to tell us something outside of CircuitPython that you are grateful for in this week of Thanksgiving, we'd really welcome getting to know you a little better as a member of our community. So anyway, I have a group hug for this whole community because y'all are great. I say that almost every week, but it's true. A hug for Ann. It's always so much fun to look through the newsletter and see all the stuff that people are doing, and I really appreciate the work that you do to gather and collate that. We have a new contributor on GitHub who I believe is working through their first submission to the core. It's an improvement to SynthIO, and their name is Cooper Dahl-Rimple, and just thank you. You've been awesome to work with and collaborate with so far, and I hope that you'll continue doing more. To Bill88T, I really appreciate how you've dived into creating libraries for CircuitPython. You did your first one over the weekend. It looks great, and again, I appreciate working with you on that pull request. And finally, in terms of what I'm grateful about, I'm grateful for some friendships that I've deepened over this last year, both online and in person. And with that, I will read notes from a few people who are without microphone. So, Anecdata writes, a hug for Dan H for helping me over a conceptual speed bump with AsyncIO. Carter says, a hug for Dan H for quickly helping resolve an issue resulting from SPI Flash Part Swap. And then from Seagrover, a hug to Paul Cutler and Todd Bott for the latest CircuitPython show podcast, to the team and community for all the work on version nine, and as a lifelong learner, I'm thankful for the openness of the maker community that enthusiastically shares and teaches. And that brings us to Dan, once you've finished typing your notes. Yeah, so thank you, Jeff, for fixing several translation and build issues after you returned from vacation, which were really technical debt and improve the quality of the build and how the translations work. And then in the Thanksgiving theme, I am grateful for the community and for a job where I can work directly with the people who use what I do and also that part of the job is to help people as opposed to being at the end of a long type and not being able to interact with the people who are the clients and the customers. Okay. Thank you, Dan. Next, I have notes from DJ Devin3, a hug for Deshipu, for helping with an error handler workaround for an intermittent minus two GAI error during get requests. One for anecdote for a make a label function that dramatically cut down on the amount of lines needed for a label heavy TFT project reduced by 94 lines to be exact. Thank you. To L.Penkin, for refining a time calc function, reducing it to 95 lines. A hug for Paul Cutler, for helping picking out a PSU for the Raspberry Pi 5, though eventually I was able to find an official Pi 5 power supply on DigiKey. A hug to Ed G. Junior for turning a complicated issue into a simple one by recommending a ribbon cable. And last for Fummy Guy for deep dives on Friday and Saturday. I am starting to understand the use of self in classes. I always learn something new about Fummy Guy. I always learn something new about Fummy Guy. And next, ADCC writes, I am grateful for the shelter from the storm this project and its community offers. And now it is time for Fummy Guy. All right, thanks Jeff. Hug reports for me this week. Thanks to Scott for feedback on the circuit changes, which I just mistyped there. The circuit changes as well as prompting with those changes. It's not something I typically take on when I'm left up to my own devices, but I've learned a bunch about circuit and even more broadly Python object oriented stuff. So it's been a good experience. Thanks to Paul Cutler for the new circuit Python show podcasts coming out. Thank you to Vladek on Github who submitted many improvements in the mini MQTT library and a group hug to everybody and then I would say that I'm thankful for this community, the friendships and other social connections that have arisen out of it for me as well as the endless amounts of creative inspiration and opportunities for learning and problem solving. So thanks to you all. Thank you Tim. Next up is Liz. Hug reports for Fummy Guy for assistance with Android app suggestions for working with circuit py drives and a group hug and on the theme of Thanksgiving I'm always thankful to be working at Adafruit. Those don't know before this, I worked in higher ed specifically at a medical school and especially during COVID there was some really dark days. So I'm always happy now to be working in a really positive, nice environment with very supportive folks and yeah, happy Thanksgiving everyone. Thank you. So happy you're here. Next I have notes from retired wizard who writes that they have hug report from maker Melissa for keepingcircupython.org updated with all the cool new boards added to circuit python as well as the new Blinka single board computers and that brings us to I'm not James. Hello. Hi there. Hi. Yeah, I wanted to give a hug report to Dan and really anyone else has helped me being really patient with learning about circuit python internals asyncio internals answering a bunch of questions and Dan specifically you pointed me at the general PR for UASyncio like some re-factors and it was really incredibly helpful. And I also wanted to give a hug report to maker Melissa for adding the health tech board pictures and information to circuit python.org and of course all the other really cool boards. Thank you. Nice to have you at the meeting. All right. I'm rounding out the section as it so often happens is Scott. Hello. First hug to Jeff for running the meeting for me. I was scheduled this week but my life's been a bit unpredictable lately so it's been nice to not have to worry about that. Thanks to Dan for all of the releasing. It's great to get things that I get fixed pushed out so I really appreciate that and I'm thankful for being able to spend lots of time with my family especially my mom in the last couple weeks. That's huge. I'm thankful that Adafruit supports me in doing that and also the full circuit python community. Thank you Scott. And now we will move on to status updates. Status updates is our time to tell folks what we're up to individually. I'll start and then we'll go through the list in the notes document 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 are any quick tips or tricks that you want to give please feel free to do that but if it is at all long discussion we'd prefer to move that to in the weeds. And again in the theme of Thanksgiving if you feel like it I would love to hear about a Thanksgiving or other holiday tradition that is important to you. So yeah with that I will get started and then I'll have some folks to read who are text only but I've been doing a lot of very minor seeming stuff that ends up taking more time than expected. One of those things is what Dan was mentioning with internationalization it's just you make a change and then a little while later a problem pops up and that can be a little bit discouraging but that's just the way it goes and we'll get all those things worked out which is great. Besides that the main task I need to work move forward for this week is a web page that serves up images from an OV5640 camera and lets the camera settings be adjusted via the same web page so the vision is you'd have a little rectangular picture probably not too big and then you'd be able to for instance set the exposure up or down or turn it from black and white to color those kinds of things and immediately get feedback on what those various modes work for. And I guess I should rewind and say a piece of work that I did last year or last week were some other of these things that we want in the basic library for the the OV5640 camera on the ESP32S3 microcontroller. And anyway, my favorite thing about Thanksgiving is that my family and friends do it as a potluck because I find it very rewarding to make food for other people and I'm excited this year I have a new vegetarian protein recipe that I'll be making and not everybody will eat it because I think it's a good recipe and I'm excited to be making that. So, next up we have notes from Seagrover continued to develop a set of synthiographic symbols for creating project documentation. The collection builds on patch symbols from patch and tweak adding synthio objects of course creating the documentation revealed more about synthio than I previously understood opening new creative design possibilities. Details in the published but work in progress in the background note. Converted the IOT Winchheims code to work on a miniature Qtpi ESP32S2 stack that includes an I2S amplifier and lipo charger. The smaller package can be more easily hidden inside a garden gnome in my office. We'll update the code and the playground note in a few days. Updated the PCB design for the PCM510XA I2S stereo DAC to hopefully reduce some of the MHz boost converter bleed through. Completely inconsequential in practical use but a nagging design detail. Looking forward to pasting, assembling, and testing later this week. Holiday tradition today is the day the Dutch cakes and chocolate letters arrive for sending to family spread across the continent. Yum. Alright, then next up is Dan. Okay, as mentioned I released last week circuit python 900 alpha 5 and also 828. So 900 alpha 5 includes some fixes from Scott to the new split heap storage allocation. So we fixed some, Scott fixed some bugs that made it difficult to use larger programs and things that's a lot better now over alpha dot 4. And then 828 has a number of smaller fixes but most importantly it works on sort of new production Metro M4 airlift light boards which had a different flash chip substituted because things run out and so you'll need that in order to use that board but we also updated it for a bunch of other boards so future substitutions will just be, will work automatically. And my main job right now is to just fix issues in A2X and also on the low main branch so that we can get 9-0-0 final release out whenever we do that. Another thing that's come up recently is that people have been trying to use ESP32 S3 BLE as a BLE central and it doesn't actually seem to have ever worked. I tried a bunch of back versions and it didn't work and I think that it's just that ended up being stuck on a certain deficiency and nimble which we talked about we may be able to get around later but that's probably why it's not working right now so it's not clear whether we might work on this right away or just wait. One thing that I saw while debugging the BLE issue was I saw some errors on the Linux side when I was copying a bunch of files to an S3 board running a 9-0-0 version so I would want to reproduce that and if you've seen something like that on 9 but not on 8 or both if you've seen it on both feel free to file an issue. And I've done a lot of reviewing of PRs and other things recently and in the Thanksgiving vein my usual contribution to Thanksgiving dinner we go to is that I make something called a cranberry cake which is from a recipe my mother got from the Chattanooga Times probably in the 1950s or 60s and has the exciting headline batter is poured over cranberries. Okay. Alright, save a slice for me. Next up I have notes from DJ Devon 3 who writes, Wifi at different sleep points. After 9 hours it randomly triggered a GAI error and thanks to Dishapoo's error handler he shared in no longer crashes on that specific request. 4 days later it triggered another GAI error I missed adding an exception for. Added the exception handler and it's been perfect since. Now I'm confident feather weather is almost bulletproof. And also, Q jealousy from everyone else here in the room I got a Raspberry Pi 5 I'm using an external 1TB NVMe SSD to USB 3 adapter as the boot drive which should get about 60 MB per second in theory. Then I found out about an M2 hat using the PCI eBus directly which should achieve much higher speeds. Looking forward to diving into Blink out when the USB PD power supply arrives. I also have notes from ADCC who writes Continuing RP2 underscore BLEIO work. Got a sniffing working with an NRF 52840 dongle working through CYW 43 driver issues rationalizing CYW 43 configuration including driver SDK and BT stack hoping to have something at least partly functional late December or early January. And next up is Tim hello. All right last week I finished up changing the learn guide pages specifically the code that's not in GitHub but on the learn guide pages themselves for the updates to display IO API that came along with 9.0 The other major thing that I got into last week was refactoring in CIRCUP in the PR that adds support for web workflow we're trying to split up the interaction with the devices be it web or USB workflows and we're trying to split that away from the actual command line functions into their own back-end classes that way the command line functions that click implements can use either of them without really worrying about it too much and then ultimately it will provide a nice way to create a new BLE back-end and hook up the ability to use that workflow as well inside CIRCUP so lots of neat stuff on the horizon there. The other little project that I took on over the weekend just for fun was a little scrolling esports fan sign it displays a couple copies of the team logo and the player names and they just scroll indefinitely on a matrix portal S3 and aside from continuing on with the CIRCUP refactoring the other thing I have my eye on for this upcoming week is to test out a stack of proposed changes in the mini MQTT library and that's what I've got for now, thanks. Thank you. Next is Liz. So I worked on writing up a quick playground note on using a CIRCUP high drive with an Android device and I did a quick video to post up on the AFruit socials about it that went live this morning. Otherwise I've been working on a few miscellaneous things before I take a few days off for the Thanksgiving holiday this week and related to Thanksgiving traditions, this year is the first year that my partner and I will be spending the holidays together so I'm excited to start some new traditions with him this year. Thank you Liz. Next is, I'm not James, hi. Oh, yeah. I had added and got the Hiltek ESP32 Lora V3 board definition which I was excited about just because I had not done that before and it was kind of learned some new stuff and then continuing to work on the tasks getting some changes to how tasks work in async.io, particularly just some extra helper functions and so I moved that PR over to the MicroPython side of things which in doing so and talking with them I found a way to make it work without moving all the error definitions around too which Dan I talked about a little bit but once the PR gets a bit of a preliminary review back in the MicroPython side I want to move it, I want to copy that PR more or less back to CircuitPython if it works out that way and we'll figure that out and then I am really hoping to be adding support for some of the other async.io helpers like Wait, Queue so my couple days off this next week so that's my plan Thank you, I appreciate your work on that and last up is Scott Hi again Hello So last week I fixed two major issues introduced in the SplitPR one was a pointer math problem that led to PyStacks being a quarter of the size that they were supposed to be and then the other one was where we weren't allocating CircuitPython heaps on the PS RAM on ESP which is why people were running out of memory pretty quick on ESP so thanks to Dan for releasing those fixes today I'm getting caught up in email and Discord, I'm mostly out this week both because of the holidays and just because as I've been mentioning my mom is sick and so we're we're spending a lot of time with her and in that vein for Thanksgiving I think our plan is that my mom will hopefully make it here and stay at our house for a little while and we'll have a big Thanksgiving dinner here with my kind of immediate family and I should late hug report for my mother-in-law for coming out and helping watch Ari as well and then today I think while he's in his nap I'm going to walk down to the office because my desktop has stopped booting again so I'm hoping to actually like learn about the Linux boot process and figure out what's going on I'm going to try to get that going so I can leave that computer on and SSH to it when I need to alright the last section in the weeds doesn't have any topics in it so I will move ahead to the wrap up this has been the circuit python weekly meeting for November 20, 2023 thank you to everybody who participated if you want to support Adafruit and circuit python and those of us that 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 is also available on major podcast services you'll also invariably find a link to it in the python for microcontrollers newsletter we all think you should visit AdafruitDaily.com to subscribe the next meeting will be held on Monday November 27th as usual at 2 p.m. Eastern 11 a.m. Pacific time this meeting is held on the Adafruit discord server which you can join at any time by going to adafru.it slash discord to be notified about the meeting including any changes to the time or day you can ask to be added to the circuit python easter's roll on discord there's also in the note stock way at the top a link to a calendar you can add to your favorite calendar app that we keep up to date and with that I just want to say hope to see y'all next week thank you everybody