 Hello everyone, this is the Circuit Python Weekly Meeting for November 27, 2023, a Monday. This is the time of the week where we got together to talk about all things Circuit Python. I'm Dan and I'm sponsored by Adafruit to work on Circuit Python. Circuit Python is a version of Python designed to run on tiny computers called microcontrollers. Circuit Python development is primarily sponsored by Adafruit, so if you want to support Adafruit and Circuit Python, consider purchasing hardware from Adafruit.com. This meeting is hosted on the Adafruit Discord server. You can join any time by going to adafruit.it.discord. You hold the meeting in the Circuit Python Dev Text Channel and the Circuit Python 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 it coincides with 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 to keep track of when the meeting times are. You also send notifications about upcoming meetings via Discord. If you would like to receive these notifications, ask us to add you to the Circuit Python East as Discord role. As I mentioned, there's a notes document to accompany the meeting and recording. This notes document starts out as a Google Doc you can edit and then is published later on GitHub. The final notes document includes timestamps to go along with the videos so you can use the doc to skip around and view parts of the video the interest of you most. The meeting tends to run 30 to 60 minutes. After each meeting, we post a link for the next meeting's notes document to the Circuit Python Dev Channel in the Adifruit Discord. Check the PIN messages in that channel 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 hug reports and status updates in the notes document for us to read during the meeting. The meeting is held in five parts. I'll explain each part as we get to each part. We will now start with the first part, which is community news. This is news that comes from mostly the Python on my controller's newsletter, which I'll talk to you about more later. First item I've got is that Raspberry Pi Compute Module 4s are coming back into the retail channel. They've been rather scarce since 2021. Jeff Girling notes that supplies are easing in line with what Evan Upton predicted, and there's some links in the notes document about this. Jeff also discusses alternate CM4 form factor words and the state of the ecosphere. And then another item related to Raspberry Pi is Raspberry Pi Review. There's a comprehensive review of the new Raspberry Pi 5 board, and there's a link in the notes doc from Brit, which is on Brit.dk. And then finally, there's an interesting note, which says, the Morph reads code is often a de facto standard and now ChatPT is using it. So this describes a short write-up in IEEE's spectrum about how the Morph read, also known as Lady Aida, has found, has been able to use ChatPT to write things like Arduino drivers or circuit Python code. What she finds is often that it's cribbing from the code that she wrote already, and she has a number of prompts that she uses to get it to behave well in doing this. And there's some links in the notes document about both from IEEE's Spectrum Magazine and also on our blog about what she does. It's also useful to note that she's an expert, and she uses it in a way that saves time for her being an expert, but for people who are just getting started, as we know, things like ChatPT don't necessarily give you the right answers. So even though it may appear to be very confident, it may not be correct. So be careful if you're going to use it and consider trying to find something written by a human first. All right. So where does all this news come from? It comes from the CircuitPython Weekly newsletter, also known as the Python or Microcontroller newsletter. It's a community-run newsletter emailed every Monday. There are archives available at a link that's shown in the notes doc. It highlights the latest Python and hardware-related news from around the web, including CircuitPython, Python and Micro-Python developments. You can contribute to the newsletter, and we'd love to have you supply things that look interesting. You can email cpnews at Adafruit.com, or you can tag us on X, formerly known as Twitter, or also we have some presence on Mastodon and on Threads. So both of those are interesting. And the newsletter is edited by Anne Varela, who works for Adafruit and does a terrific job creating this newsletter every week. So subscribe and enjoy. All right. The next section is the state of CircuitPython, the libraries and Blinka. This is a quantitative overview of the entire project. It gives us a chance to look at the health of the project separate from our status updates. We'll talk about the project overall, and then separately discuss the core libraries and Blinka. So first of all, overall, in the past week, there were 16 pull requests merged. There were 12 authors of those pull requests and five reviewers. And there were 11 issues closed by 10 people and 14 to open by 13 people. And now we'll talk about the CircuitPython core firmware itself. And Scott, no, Scott's not here today. Yeah. I'm happy to do it. Oh, there you are. Okay. Okay. Yeah. Yeah. Yeah. I was looking for an S. Oh, yeah. All right. Go ahead. Thanks, Dan. Okay. So numbers for the core, we had 10 pull requests merged from six different authors. Some infrequent names here are Bill88T, retired wizard, Cooper Dalrymple, and Jesse Jones. So thank you to those infrequent authors. We're happy to see you do that. We had three reviewers, myself, Dan, and Jeff. We had 21 open pull requests. So again, we're comfortably under that 25 PR single page limit. We have, so that's for pull requests. Issues-wise, we had seven closed issues by six people and four opened by four people. So we're net down three for a total of 658 open issues. And we use milestones to prioritize and track the issues as they come in. The prioritization generally just applies to the us Adafruit funded folks. So if you want to pick up something that we marked long term, we're happy to support you in doing that. We have one open issue for 10.0. We have two issues open for 82X. So those are things we would like to get into this table sooner rather than later. And then the main focus of the Adafruit funded work right now is on 9.0. And we have 60 open issues under 9.0. We also have two issues not assigned to milestone at the time that these stats were taken. So we'll just, I think generally we are keeping up with the triage, but that's what that number is useful for. That's the core. All right. Thank you, Scott. And we'll move on to the libraries, the state of the libraries, and the Foamy Guide. Yeah, definitely. This section covers the CirclePython libraries, which are the Python layer of code that provide either drivers to help you interface with certain bits of hardware or helper functionality to allow you to achieve stuff without having to write as much code. All of these libraries start with the name Adafruit underscore, CirclePython underscore, and then whatever the library is, the driver or helper will come after that. Across all of those libraries this week, we had six support requests merged with six authors. The names in here that are newer or less familiar to me, at least, are Leon Anavi, Dirtobias, and Miller Kamamat. So thank you to those folks who might be newer or less frequent contributors. Thanks to our other authors as well, Babalak B. Vladak and Ella Pekinen. And then with those six pull requests that were merged, we had two reviewers. So thanks to Liz and myself for the library reviews this week. Of those merged pull requests, the oldest one was 87 days old. So getting back into some of the older ones, and the newest one was just one day. So also keeping up on some of the new ones. That leaves us at the end of the seven-day period. That leaves us with 60 open pull requests, the oldest of which is 466, and the newest is just one day. In that same seven-day period, we had three closed issues by three people, and eight new issues opened by seven people. That's leaving us with 692 open issues. And of those, there are 19 of them that are labeled good first issue. You can find those 19 on circuitpython.org slash contributing, which is a great place to go if you are interested in contributing to Circuit Python, in particular on the Python side of things like these libraries that we've been talking about here. Check out circuitpython.org slash contributing. On that page, you'll find a list of the open PRs and open issues. You can also use a dropdown to filter those issues, specifically to the good first issues, if those are the ones you're interested in. If you're looking to contribute, that's a great place to start. If you want to get into reviewing, you can check out the open PRs, click through those, test any that you have the hardware for, or just take a look at the code for syntax and spelling, et cetera. You can leave comments on those PRs. Let us know that you looked at it once you're comfortable with it. We can also get you leveled up to the review team so that you can leave reviews. If you are interested in contributing code or documentation, you can check out the issues on that contributing page to find issues that look like they're up your alley that you'd like to work on. Again, the good first issue filter is on there. If you'd like to take a look at those ones, if you are interested in getting involved but you don't have much experience with Git or GitHub, we have a guide on the Adafruit Learn system that will walk you through how to make those contributions with Git and GitHub. If you just don't have experience with that but want to be involved, don't let that stop you. We can definitely help get you up to speed on that sort of stuff. On the PyPy stats side of the house, we have in total on PyPy 79,179 downloads across all of those 321 libraries in the past seven days. The top 10 list is noted here in the docs if you want to take a look at that. And then also in the note stock is the list of libraries that were updated as well as new libraries in the last seven days. On the community bundle side of things, we had a new library for Tamil support. Thanks to Ellie Pakinan for that. And on the Adafruit bundle side of things, the one that caught my eye this week was in display shapes. So check out that stuff for the latest on libraries. And that's what we've got for this week. Thanks. All right, thank you for me guys. Okay, next up is the Blinka section. And made by maker Melissa. Hello, so Blinka is our Secret Python compatibility layer for MicroPython Raspberry Pi and other single board computers. This week we had zero pull requests merged. There are currently five open pull requests amongst other repositories. There was one closed issue by one person and two open by two people leaving a net of 79 open issues. We had 16,970 PyPy downloads in the last week. 6,908 PyWheels downloads in the last month. And we are 126 supported boards. And that's it. All right, thank you, Melissa. Okay, our next major section is called Hygge Reports. Hygge Reports is a chance to highlight folks in the certified community and beyond for doing awesome things. I'll start and then we'll go down the list alphabetically, give everyone a chance to participate. If you are text only or missing the meeting, I'll read your notes out loud when I get to them in the list. Okey-dokey. So first up, myself. And I'd like to thank Jeff for fixing various recalcitrant build problems of various kinds in the past week and continuing to pursue them as they come up. All right, next is DJ Devon 3. No? Blue, thank you. I would like to send a hug to Rimwolf and Anecdata for helping with an out-of-fruit request socket error. And Anecdata again for more help on the same issue and introducing me to the traceback module. Okay, great. Thank you. Next up is ABCC, already there. I'm seeing a huge improvement in fetch port submodules on main. It no longer does a bunch of redundant checkouts when I run it in a second port. The big hug to whomever is responsible. And that was Jeff, who consolidated some code that had to do with fetching submodules and made it more precise. Thank you, Jeff. All right. Next up is FOMI guy. All right. Thanks, Dan. Hug reports for me this week. Thanks to Dexter, who tested my changes in circup on Windows. Very appreciative for that. Thanks to maker Melissa for making the qualia helper library that has the built-in initializations for all the different displays, the out-of-fruit stocks. It made it super easy to get up and running with a new display. Thanks to Jeff for working on dot clock display support in the core. I think this was a little while back, but I just got around to trying it for the first time. And it's pretty awesome. Thanks to Liz for publishing findings and instructions on developing on-circupython devices from Android mobile devices. There's a playground post that shows how to do that, which is really great information to have updated in current. Since Android is changing all the time, this has changed a couple of times throughout the years. Different ways you can do this. So thanks to Liz for that. On Discord, thanks to the user bear. Over the weekend during a live stream, he shared some Stack Overflow link with me that turned out to be the exact thing I needed at the time. Also he hung around during the stream and gave me several other tips and ideas while I was working on different stuff. Thanks to Bablock B for adding support for ARCs into the Display Shapes Library and Group Hug for everybody. That's what I've got for now. Thanks. All right. Thank you. All right. Next up is Jeff. Hello. I have a Group Hug, but I want to call you out down specifically for reviewing some of my PRs on the weekend. It's not always healthy to be working on the weekend, but we do it and it makes the stuff, you know, this back and forth. It's nice that you're there to review those when I'm feeling like doing it. So thank you. You're welcome, man. I like moving things forward, so we don't have to wait all the week. All right. Next up is Catty. Hello. So first up, I want to thank my folks for everything that went into an amazing dinner last Thursday. And to my housemate for helping me with cooking my two contributions to the meal, which was cranberry sauce, which was not too difficult, and dressing or stuffing, depending on which obsessive camp you're from, was far more difficult, but turned out perfectly. Thanks to my wife Rose for fighting the good fight with responsive image processing on the web. Turns out it should be easier than it is in 2023, but it absolutely isn't. But we have kind of sorted out a truce with it, and I'm really excited. To everyone who's being super patient with me, is ideal with getting everything going with my latest project, and a group hug. All right. Thank you. Next up is Liz. Hello. This week I've got a group hug, and anyone that's celebrated Thanksgiving, hope you had a good holiday. Okay. Thanks. And next up, maker Melissa. See, I wanted to give back to Jeff for addressing the issue with the project rules out that I worked on, and group hug to everyone else. Okay. Okay. All right. Thanks. Next up is Dexter, and I'll read theirs. Thanks to Dan H for the Building Circuit Pipeline Guide. You're welcome. And a group hug. And finally, we've got Scott Tannard. Hello. First, a hug to I'm Not James for the Async ILO work that they're working on. And then a holiday related one to my partner Becca for doing a ton of work. Thanksgiving weekend was delicious. We had her mom and my parents there as well. So it was a wonderful weekend, and thanks to her for doing a lot of that work. Thank you very much. All right. That finishes off hug reports, and we'll move on to status updates. This is the time of the week when we get to, we tell folks what we're up to individually. I'll start and we'll go through the list alphabetically as before. 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. This is also an opportunity to provide tips and tricks relevant to what people are working on. And if we get into, if there's a discussion that you want some feedback on, we can discuss it in the in the weeds section that's come to after status updates. So I will start. So first of all, I'm continuing to fix circuit Python 8.2x and 9.0o milestone issues, which are all kinds of things. Sometimes it's just retesting something and realize that it's been fixed in 9.0 and sometimes it's more complicated than that. I discovered within the past couple of weeks that ESP32 S3 BLE was not really very functional at all, even acting as a central. I thought that you can connect the things, but I did some debugging and got it working and talking to a simple peripheral. In my case, I tested it with a false leximeter, and that works in 9.0o builds. So previously you could use it as a central, but only advertising and scanning. It didn't really work to connect and discover services. It still does not work as a peripheral. So if you want to do something more sophisticated with BLE, use one of the NRF boards. And finally, a simple thing that I've been working on, which doesn't quite work yet, is that I'd like the absolute newest builds to include more information other than a timestamp and the commit. I'd like to include branch name and the PR number, and I got that working for the builds of a PR, but not for the merges, and I have to figure out what's wrong with that. But it should make it easier to say, like, oh, you should use this commit, and it should be easier for people to do things like bisects that is testing intermediate versions of things to figure out what's wrong or when something went wrong. All right, so next up is DJ Devon. On a related note, that sounds very handy. I woke up to temp bands from open weather map and Adafruit IO due to a socket error was reloading every five seconds. Use the opportunity to improve temp band error handling. Spent some time using Moose emoji support to make a serial hierarchy visualizer to see where it's failing in the loop. Catching the exception and then doing a supervisor reload which fixes the issue temporarily, but it's not an ideal solution. Haven't been able to track down what the cause is. I'm trying to communicate this one in an issue report. It's difficult because it's very intermittent and it can fail between five hours and five days. And I submitted a PR to update Adafruit requests. Twitch API example, as there have been some breaking changes with their API. The current example no longer works, and the PR should fix that. And also now use settings.toml with web workflow variables as a default. All right, thank you. Next up I'll read ADCC's status report. We'll be taking a look at whether or not the Sonoma problems see issue 8449 affects iOS 2. This is a problem where Mac OS Sonoma has puts and right delays of tens of seconds sometimes between rights and it really messes up using the certified drive. Later this week when my Lightning USB adapter arrives, I'm also planning to do some more in-depth tracing to see if greater than eight megabyte file systems really work around. If it is, I've got a method of faking a greater than eight megabyte file system working that I'll drop to the draft poll. And I'm continuing to work on RP2040 underscore BLEIO. I'm well into adapter now. Thank you very much ADCC for working on BLEIO for the RP2040. All right, next up is FOMI guy. Okay, last week I had a shorter week but I enjoyed some yummy food and time with family and loved ones over Thanksgiving so it was really nice. The stuff that I did do in Cirque Python world though I got the initial setup of Qualia S3 and one of the round displays tried that out for the first time and it made a perfect display to test out the new ARC functionality from the display shapes library and showcase that. So I got that working on Friday, I think it was. Over the weekends I dove back in a bit to the Blinka Display.io Pi Game Display which is a way to use Blinka Display.io on PCs like a regular Linux or Windows PC in order to display stuff inside a Pi Game window. That had been broken with the newer version of Blinka Display.io. I took one crack at trying to fix it a little while back but wasn't successful and so I got back into that this weekend. I did have some more success this time around. I was able to get it drawing properly but it does still have some other issues to work through. I think there's some weirdness going on with threads because sometimes when you run it you get a different outcome even though you didn't change the code any. So I still need to kind of trace through and figure out what's going on and probably fix a few things but the other thing I was really happy about was I was also able to get away from using PIL which in the old version of Blinka Display.io it was using PIL internally to keep track of like bitmaps and things but it doesn't anymore and when I had made my first attempt at doing this a couple of weeks back I had tried to hold on to using PIL thinking that it would make it easier to convert the images how I needed but I eventually found a way to go straight from the bytes that we have now in Blinka Display.io and get them into Pi Game without actually needing that intermediate extra dependency of PIL which is super cool I'm happy about. So a little bit more to to figure out but it's looking really good on that front now. The other major thing that I did was finished up refactoring the web workflow support in Circa. This is now separated into back-end classes that manage the interaction with the hardware device be it USB or web workflow respectively. In doing that refactoring I ended up breaking it on Windows but I have now gone back and fixed that and tested on Windows 11 so I think that's good to go now. And then for the upcoming week the only thing that I have on the top of my head to look into right now is libraries testing and reviews getting back into that. There's still a couple more mini MQTT ones to look at and then I'll probably branch out further from there because at some point I'll want to do something a little bit different. So that's what I've got for now. Thanks. All right, thank you. All right. Okay, thank you. Next up we have Jeffler. Hello. I have a belated hug report for everybody who put fixes in between 9.0.0 alpha 2 and now. It is much more stable than alpha 2 was on the project I've been working on which is camera and HTTP server on the ESP32 S3. So anyway, on to what I'm up to. Last week I finished up some very simple demos for the Pi camera including a web interface for changing the camera settings. Had a marvelous Thanksgiving dinner. My own food experiment which was a pastry wrapped vegetarian roast was a success and I met some new people. And finally I made a pair of flash size saving pull requests to both circuit Python and MicroPython. And I need to double back and update the one in circuit Python based on Gemma's review of the MicroPython commit. It just, you know, saves 100 150 bytes of flash but sometimes we need every byte we can get. I need to this week make the a different circuit Python PI camera repo public edit to PI PI read the docs bundle all that stuff. And that a prerequisite of that is getting this last demo committed. The hardware is still unreleased. Don't ask when it will be out but we've certainly been teasing it a lot on Adafruit sometimes on ask an engineer and random one minute videos. I think we're getting close but who knows when it will come out. All right, then I am for my next project getting the scope of adding a JPEG decoder to circuit Python probably initially for only expressive family microcontrollers and then using that to do some kind of demo or project with a Quilia board. I don't know what that will be. And I really, really I've been saying this for months need to tidy up my space but now it's become important because I ordered some Christmas gifts for myself this weekend and they need space. So I have to find some horizontal surfaces that will remain clear so I can put the new stuff there. And you know in a month when I get that I'll work and I'll let you know what it is I got. And that's all from me. Okay, thank you Jeff. Next up, Katny. Hello. Speaking of tidying, it took over a week but I have essentially all of my parts and project kit organized and labeled. I went through something like 140 feet of label tape. There is some waste involved but there are also a lot of labels. Everything is in compartment bins, regular bins, tool chests, or drawers. Through organizing I also reclaimed a ton of space. All of the regular bins and drawers were full and there are now 10 empty drawers out of 36. The final piece is moving frequently used tools to the closer tool chests and the less frequently used ones to the further away one. That is in process and will probably evolve over time anyway. I'll do a post or series of posts on how I opted to organize everything in case anyone is interested or it helps someone out with their organizing plans. Image handling is finally sorted out for my blog and it's incredibly straightforward to do now. My wife put a lot of work into this and now I can do very simple inline images and then a very easy to do gallery that shows multiple images and you can click on different images and if you click on the main image it pops it open in a light box. It's amazing. It's exactly what I wanted. I'm super excited about it. I use Pelican. It's a Python powered static site generator and we will be turning this into a plugin for Pelican. So if that's ever anything you're interested in, keep an eye out for that. And then my first post project post on applying acoustic panels to my office door will go out this week. There was enough that it turned into a series of posts and the series will go out in subsequent days following the initial post obviously. And that's what I've got. All right, thank you. And next we have Liz. All right. I was out most of last week due to the Thanksgiving holiday but I did have her finish assembling the patch bay I've been working on for the KeyStep Pro and have you say that it is working well. So I had the patch bay mounted above my Eurorack modules which makes patching very ergonomical. I did run into one minor issue where I realized I hadn't ordered enough PCBs. I have a short two of them but luckily my partner has an other mill and has milled a lot of PCBs before and was able to mill two additional PCBs for me. Just took a little reworking and eagle and changing from service mount resistor to a through hole. And then this week I'm documenting the Quality of Space Clock project. I'm excited to get this guide published finally and Noia has done an excellent job with the enclosure design. It's very retro space. Yeah. All right. Thanks. Next up, got Melissa. Hello. Let's see. Lost Noia went down. Oh, here he is. This week I took this past couple of week and a half I took the some time off. And I added it. But before that I had added a bunch of missing boards to circuitpython.org. I've just about caught up on emails and get items now. I'll be updating the main quality guide with more info here shortly. And then I'll update a bug that Aaron and Jeff ran into with the code from my message board guide. And possibly I'll write up a guide to document the Quality of Help for Library. And that's all I have. I'll end it at this point. All right. Thank you. All right. Next up, Dexter. I'll read theirs. Missing Tony D. That's Tony Nicola. He wrote some great guides. He did some videos too. I would add if you're not aware that he did pass away not too long ago which is quite sad. Got the UNIX port of circuitpython working with the chat GPT code interpreter. Now I can write a function and ask chat GP to test it using the scriptpython interpreter. This is limited but useful. And finally we have Scott. Thanks, Dan. So my schedule has been really off and on but this week looks like I'll be here most days this week except for Wednesday where we're going to go visit my family over across the water. My parents are at home. My mom as I have said is diagnosed with cancer so she's living out her last days here as happily as she can. So she's going home which is awesome. I did some retail therapy and I got a new framework laptop so I get to do Linux on my laptop now and it's working pretty well. I took time this weekend to get it going. The start of this week is getting caught up in chats and emails. I'm also getting a flu shot this afternoon. And once I get through that I'm going to be looking at web workflow fixes and improvements. There's about three issues designated for 9.0 that I'm going to take a look at. Some of them are pretty easy to knock off but then there's also reliability things that I kind of expect to hit as we go through. I'm hoping to stream on Friday that's a little bit of a question mark but it's been a minute since I have and I'd like to. We've got an electrician coming Thursday, Friday as well and of course we'll see how my mom's health is as well. But yeah, hope in the stream on Friday and I will let folks know if that changes. That's my week so far. All right thank you Scott and you wish your mother an easy time. Yeah she's getting lots of family time which has been awesome. That's great. And finally we have in the weeds section which is for long term discussions but it's empty so we'll just skip it and we'll move on to the wrap up for this week. So this has been the Circuit Python Weekly for Monday, November 27th, 2023. Thank you everyone who participated. If you'd like 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 which is the audio part plus screen capture of Discord will be released on YouTube at youtube.com slash Adafruit and the podcast will be available in 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 next Monday as usual at 2 p.m. Eastern, 11 a.m. Pacific U.S. time and a reminder that you can go to the meeting by going to adafru.it slash discord. If you want to be notified about the meeting and any changes to time or day, you can ask to be added to the AdSign Circuit Pythonistas role on Discord. So we hope to see you all next week. Thank you everybody and I'll stop recording.