 Hello, everyone. This is the Circuit Python Weekly for January 29th, 2024. This is the time of the week where we get together to talk about all things Circuit Python. I'm Scott and I'm sponsored by Adafruit to work on Circuit Python. If you don't know, 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 the URL adafru.it-discord. We hold the meeting in the Circuit Python Dev Text 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, which tend to happen on Mondays. In the Note Stock, there's a link to a calendar you can view online or add to your favorite calendar app. We'll also send notifications about upcoming meetings via Discord. If you'd like to receive these notifications, ask us to add you to the Circuit Python. He says Discord role. There's a notes document that accompanies the meeting and recording. You can contribute to this document beforehand. The final note stock includes timestamps to the video to go along with the video so you can use the doc to skip around and view the parts of the video that interest 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 on the adafru.it Discord. Check the PIN messages to find the latest note stock 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 document for us to read during the meeting. This meeting is held in five parts. The first is community news. This is a look at all things Circuit Python and Python on hardware in the community. It's a chosen set of items from our Python on microcontrollers newsletter. The second part is the state of Circuit Python libraries in Blinka. This is a quantitative overview of the entire project. It's a chance to look at the project by the numbers separate from our status updates. Third, it's kind of the reverse. This is hug reports. Hug reports is an opportunity to highlight the good things folks are doing, taking the time to recognize the awesome folks in our community. Fourth is status updates. It's an opportunity to report on what we've been up to. Take a couple of minutes and talk about what you've been doing in the last week since the last meeting and what you'll be up to over the next week. Lastly, the fifth part is in the weeds. It's an opportunity for more long form discussions. These discussions can come out of status updates. It would be something you've identified ahead of time as too long for status updates. And that is how the meeting will go. With that, we'll begin with Circuit or Circuit Python is community news right after I take a time code. So the community news is a glimmer or glimpse at the top articles from the Circuit Python community newsletter that is sent out every Monday morning thanks to Ann, who makes that process run. So here's a few things. First up, the Circuit Python 2024 first posts were posted. Actually, let me take another time code for that. The Circuit Python 2024 effort allows the community to share goals for Circuit Python in 2024 and beyond. The developers would like everyone in the Circuit Python community to contribute by posting their thoughts to some public place on the Internet. You can see the first two posts by the community incredible little bee and DJ Devon three here. I also posted mine as well. And it looks like your house missing. It's also on the blog and there's finally a link to the welcome post about how to post your own Circuit Python 2024 message. Pretty much put it in some public place on the Internet. Use the hashtag Circuit Python 2024 and also email CircuitPython2024 at Adafruit.com. That goes to me and Phil and I will aggregate them into kind of blog posts on Adafruit blog so that we kind of have a record of everything that everyone said. So it's a cool way to kind of do collaborations similar to status updates but on the annual scale, not on the week-to-week scale. Okay, that's Circuit Python 2024. Next, we have eight Raspberry Pi attachments that radically... I turned on the markdown thing and now it's making it disappear. Eight Raspberry Pi attachments radically expand its powers. PC World highlights eight Raspberry Pi attachments which radically expand its powers. Want to use your Raspberry Pi for Lego Mindstorms, AI research, handheld gaming and more? Check out these hat and quote expansion modules from PC World. Next up and hopefully it won't make me disappear. UVC video is coming to Circuit Python 9. Tiny USB, the USB driver used by Circuit Python has recently added UVC support which is the USB video device class. It is a USB device class that describes devices capable of streaming video like webcams, digital camcorders, analog video converters and still cameras, still image cameras. Jeff has been doing preliminary work to integrate UVC into Circuit Python 9 so devices can act as webcams. For example, there's a YouTube video there from Jeff and poll request is out as well. Basically connecting, just making it a display IO display which is really neat. Okay. Newsletter details. The Python and Microcontrollers Weekly newsletter is a Circuit Python community run newsletter emailed every Monday. The complete archives are available at AdafruitDaily.com slash category slash Circuit Python. It highlights the latest Python and hardware related news from around the web including Circuit Python and MicroPython developments. To contribute your own news or project at the next week's draft on GitHub at GitHub.com slash Adafruit slash Circuit Python dash weekly dash newsletter and there's a drafts folder there. You can submit a poll request with the changes. You may also email cpnews at Adafruit.com or tag a post with hashtag Circuit Python on Mastodon, Blue Sky or X. All right. Let's go to the next stage. Taking another time code. Next up we have the state of Circuit Python libraries in Blinka. This is a kind of statistical overview of the health of the wider project. Kind of broken down amongst the three pillars of it. First and foremost we'll go overall. So overall we had 36 poll requests merged from 21 different authors which is quite a lot which is awesome. Some newer names to me are Gebhardt, Gebhardt J, Tyler Winfield, Anonymous Cowhead, Supkick, D-Lazot, U-W-O, Yalstowewski, I like Cake, Andy Bing, Hexthat, Sidespoilinem are all new. We had six reviewers across all of the projects that thanks to our reviewers. As always we're looking for more reviewers so if you want to start helping out we can support more authors with having more reviewers. We have 34 closed issues by 11 people and 17 open by 16 people so we're net down 17 which is great. And so that's for overall. I will move on to the core stats. In the core we had 26 poll requests merged which is a lot. Three reviewers and we have 25 open poll requests which is kind of the top number that we want to see. We want to fit on one page on Geb. We have 27 closed issues by six people and seven open by seven people so we're down quite a lot as well for a total of 682 open issues. We prioritize the issues for CircuitPython Core development by Adafruit-funded folks using the milestone system on GitHub. The more urgent things end up as 8.2x which is the things we want to fix in a stable release but we have no open issues there. We have 47 open issues for 9.0 which is the future major stable release which is where a lot of my focus is going right now. And we have 10 open issues for 9xx which is things we want to do after 9.0 is stable. And lastly we have two open issues for 10.0 which is just remember to do this for the next major version sorts of issues. We have two issues not assigned to milestones so those will need to be triaged as well. And with that let's kick it over to FOMI guy for some numbers for the libraries. Yeah, thanks Scott. This section covers all the CircuitPython libraries which are the Python level of code. You can find all these libraries published over on GitHub under names like Adafruit underscore, CircuitPython underscore and then the name of some library. Across all of those libraries this week we had eight pull requests merged by seven authors and I believe a couple of those names were newer to me that Scott read out before so some of those were library authors as well thanks to those newer or less frequent contributing folks. We did have five reviewers which look like mostly the usual suspects thanks to Jeff Scott, myself Dan and Tech Trick this week. Of the pull requests that were merged this week the oldest one was 43 days old and the newest ones were just one day old. That leaves us after the week with 55 pull requests open and the oldest of those is 529 days and the newest is one day. There were five issues closed over the last week by five people and there were nine new issues opened up by eight people which leaves us with 729 open issues and of those there are 19 of them that are labeled good first issue which you can find over at circuitpython.org slash contributing. If you are interested in contributing to CircuitPython that's a great place to head especially on the Python side of things and as Scott mentioned a few moments ago we're always looking for reviewers so if you want to help get involved with reviewing at circuitpython.org slash contributing you'll find a list of open PRs which are waiting for folks to take a look at them so you can check out the PR look at the code maybe try it out if you've got the right hardware and device for it just leave a comment with what you found or what you saw anything you think about the change and once you get comfortable doing that testing and leaving comments we can get you leveled up to the review team so that you can leave kind of the official reviews over on GitHub. If you want to get involved but you don't have much experience with GitHub that's no problem either we've got some learn guides that can help get you going in that direction there are learn guides to learn about GitHub and Git and the ways that we use them with CircuitPython libraries and lastly what I would say if you want to get involved the Discord is a great place to be there's folks around throughout the week who are more than willing to help new people get involved in reviewing or contributing so if you would like to do that but feel that you have some barrier in the way head over to Discord ask around I'm sure we'll be able to to get you going. The library PyPI stats for the week we had one hundred fifteen thousand and ninety eight PyPI downloads across those three hundred twenty four libraries the top ten list is here in the notes if anybody would like to take a look at that and then over the last seven days the looks like we had just the one new library which is a soft keyboard library that DJ Devon three and myself have been working on is now up in the community bundle and there were a couple of other community bundle libraries as well as PI camera and mini qr that were updated this week as well so that's what we have got for libraries this week thanks thanks for the guy alright next up we'll ask Melissa about Blinka Hello so Blinka is our CircuitPython compatibility layer for MicroPython, Raspberry PI and other single board computers this week we had two pull requests first by one author and one reviewer there are currently six open pull requests amongst all the repositories there were two closed issues by two people one up and by one person leaving a net of 81 open issues there were thirteen thousand two hundred forty six PI PI downloads in the last week eight thousand three hundred ninety nine PI wheels downloads in the last month and we are one hundred twenty nine boards thank you Melissa yeah alright next up we have hug reports this is the first two round Robin sections where I will start and we'll go through the list of the folks in the notes document so it gives everybody a chance to speak if you don't know you're able to participate in these even if you're unable to attend the meeting by adding your comments to the notes doc and the host will read them off for you just make a note that your text only or out and then we'll read them off so this first section is hug reports and it's a chance for us to say thank you to folks in our community for doing some really great work it both helps to recognize folks and also reinforces kind of what we value as a community so first I will start and then I'll have a few other folks to read before we get to another live live caller so to speak for myself first hug to PR Cutler for creating the circuit python podcast hug to Dan H for releasing 9.0 beta 0 hug to Justin for all of the web related libraries and refinements around circuit python and then last up a hug to Mark Jeff, John Hind, Wave Sailor and Liz for their circuit python 2024 posts over the weekend and next we have notes from Dan who's out says hug to myself for help with debugging two different issues hug to Miso Kim for the HID wake up PR allowing you to actually wake your computer up from the keyboard which is cool and then last a hug to Furbrain for the NRF 52 I squared Z timeout enhancement alright next up I have another set of notes to read off and then we'll go to Foamy Guy so first hug to hug to myself from DJ Devon 3 for a deep dive this week it's nice to see you back in action and reflecting on where circuit python is headed in 2024 hugs to Dan H and Jeff Boyer for enlarging the RGB matrix frame buffer to 32 bits for larger RGB matrix displays this should raise the limit of matrix panels to about 50 for the RGB matrix frame buffer the matrix portal S3 will run out of RAM before hitting the new frame buffer ceiling this opens the door for a more powerful matrix portal in the future to reach the new ceiling and next up we have foamy guy and then we'll have Jeff after that alright thanks Scott hug reports for me this week thanks to DJ Devon 3 and Todd bot who both been doing some great help over on discord to folks in the help with channel and thanks to whoever fixed my misspelling of Todd's name just now I didn't see hug report to Justin and you Scott for the discussions around the board module Stubbs for pin names last week and a group hug for everybody thanks thanks foamy guy next up is Jepler hi there so I have a group hug for all you wonderful folks but a particular person I wanted to call out I think they are a new contributor e whore y'all let's ski on github made some importance to the usb keyboard handling and usb host mode a lot more keys are supported in particular the function keys and control function keys and even the print screen key I also learned there is a unique escape code assigned to the print screen key just in case you ever needed to use that in your terminal application and that's what I've got thanks Jepler next up is catney hello and so I have a hug to all cutler Todd bot and you Scott for helping out with some hurdles and getting my code and project running properly to Todd bot forgetting or for the update to the remount script for Sonoma where you can give it a different drive name that was really helpful and a group hug thanks catney next up is Liz hello I scrolled too far down here we go hug report to Mark gambler for his age are a circuit python library Todd bot for his code just showing bitmap bitmap tools roto zoom and a group hug thanks Liz next up is maker Melissa I just have a group for everyone thanks Melissa and lastly we have Paul cutler have a group hug for everyone who has been a guest listened and supported the circuit python show over the last two years thank you all right that is it for hug reports take time code will move on the status updates this is done in a similar fashion around Robin but now we are going to give a brief glimpse at to what we've been working on in the past week and what we plan on working on in the coming week this is a great way to just kind of have a picture of what everyone's doing and what they're interested in and it's also a good opportunity to give tips or tricks if somebody is working on something that they've that you worked on previously or if it's something you're interested in working on you could potentially collaborate as well so that's what status updates are like I said before it's around Robin so I will start I'll read it off folks that are out and then hand it off to folks who are in the voice channel okay so for myself the SD card over BLE in Wi-Fi was merged in and I should just give a warning that this does change how storage that Mount works catney ran into this today you actually need to make a directory where you're going to mount things now so it's in 9.0 because it's a breaking change just be aware of that I did a number of other small changes for 9.0 and I can't remember exactly what they all were but yeah check that out I'm working to re-enable parallel display bus on the ESP 32 or all the ESPs the PR will go out later today because I did get it working right before the weekend I just have to polish it up I in my kind of spare time I was dabbling in LLVM which is a compiler tool kit and Clang and LLD are the compiler and linker that are built in LLVM I'm working to add a no execute in place attribute so it makes us easier makes it easier for us to manage code that we want to be able to run when like the flash is being erased or written it's it's quite challenging and there's no good way to do it yet so I'm exploring that in my free time otherwise I'm doing more 9.0 issues we still have like 40 something so I've got got a lot lots of work to do but the goal is to get 9.0 stable I posted my circuit Python 2024 post covered it on the deep dive on Friday and I will do a summary post today from the folks that we got over the weekend so if you if you want to participate in circuit Python 2024 let us know what's interesting to you what you want to do this year kind of where circuit Python should go please do that use the hashtag circuit Python 2024 wherever you publicly post it and then email circuit Python 2024 at Adafruit.com as well so that I can find it and and list it with all of the others thank you and yeah I guess the deadline for that is the 31st so do it on Wednesday if you can because I'll do one final post on Thursday saying like here's all the ones that we got and it will be done for the year okay that's my update a little bit long-winded next up I'll read off Dan's update he said released circuit Python 9.0 beta zero it does not have the UVC stuff but has a bunch of other stuff we'll do an 8.2.10 release soon and he says Scott and I debugged a problem with subclassing dict there was a fix made and then I made another further fix after the micro dot authored did some testing and found another bug reviewed and merged community fixes for the nrf 52 ice-cream sea hangs and the HID host computer wake up which is very cool as well next up I have notes from DJ Devon 3 who says I help discord user syndrome over the course of about two weeks with a 25 matrix panel project for an RC car race tracks scoreboard this week they discovered about 20 matrix panels was the maximum number for the matrix portal S3 this was the first matrix project to surpass the 16 bit frame buffer boundary of the RGB matrix library on bit depth one a noteworthy achievement and milestone it prompted a core update to raise the new ceiling to 32 bits and allowed their 25 panel project to be a success and that is quite wild I didn't fully appreciate that it's how many panels that is that's very cool it's like the size of a table got published on github as contributor to a new library before its release my first time contributing library library level code learned a lot watching from the guy set up cookie cutter to get it included in the community library looking forward to helping improve the circuit pipe on soft keyboard library and next up let's talk with only guy all right thank you Scott me get back to my spot here last on Friday the 1d chopper learn guide that I was working on last week got published so that is out there now if anybody wants to check it out I am already starting to brainstorm what I would like to make next next cardboard arcade game maybe I will call it card arcade which was amusing to me at the time but I have a couple ideas for what to make next and I have a steady supply of these boxes and they make for great projects so I think I'll try a couple more games in those I over the weekend use cookie cutter to create all the infrastructure files for soft keyboard so that that could get added to the community bundle and there were some new steps on high pie and read the docs that were new to me at least because I think they changed some of their policies since the last time I've done it so I work through that stuff and got that added to the community bundle and then I have also been looking into library PRs mostly in many MQTT library largely a bunch of them centered around the blocking versus non blocking behavior and how you set the time out when you call the loop function in the process of testing many variations of that I noticed a difference in ESP 32 spy socket versus the native socket in circuit python and the one in CPython and I intend to do a little bit more testing to figure out if it's possible for us to match the CPython and the native socket behavior but I don't know for sure if it will be possible it might be tied to something deeper if it is possible though then I'll release I'll put up a PR so that we can have that match a little bit closer and that's what I have got this week. Thanks. Thanks for the guy. All right. Next up is Jeff. Hi again. As DJ Devon three covered I did a tiny little bug fix for RGB matrix and it was really fun to see that that photograph of the actual screen because yeah that is big. I've never worked with anything near that big obviously because it didn't work. So anyway other stuff I did bitmap filter is finished up and merged and it is in the new beta so go check that out. The UBC work I believe is close to mergeable with the caveat that initially I'll just work on RP 2040. I'm going to take a little more time to try and get it working on the ESP 32 S3 and if I don't then we'll just I'll just disable it everywhere except for RP 2040 because that's the only place that we know that it works. This week is a short work a short week for me and I'm here through Wednesday. So the other stuff I want to get to is finish up Lamar's time lapse pull request in the pie camera repository. She added some cool new capabilities in support of the time lapse mode. So at the Python API level you now retrieve your white balance exposure and gain settings and then restore them so that you can get consistent photographs across you know multiple different exposures. So that's a really nice feature. It's like you it's almost like putting the camera into manual mode or it's like an exposure lock. So anyway and then if time is available. The other thing I'm going to work on is another function for bitmap filter. There's kind of an abstraction. So in bitmap tools we have an older alpha blend function and that lets you blend a fraction of image and a fraction of image be if you open up your favorite photo editing program. There are many different layer blend modes and what I'm working is basically creating a framework that will allow you to write a little Python snippet that gives the mathematics of the blend mode and then this will perform that blend efficiently in C. I don't know how that'll turn out but that's kind of what's on my mind. But the other thing is on Thursday I'm off for an approximately 10 day vacation in the south of California including Northwest of LA and also the Joshua Tree National Park. So I will miss the next two Monday meetings. You folks have a lovely time while I am gone. Thanks Jeff. Alright next up is Katnie. Hello. So I got my inky frame and 7.3 inch last Thursday and finally had a chance to mess with it today. We remembered that Sonoma is totally messed up for circuit Python. Managed to get it displaying a bitmap off of the SD card albeit upside down using the A7 I think it is library and circuit Python for the Pico W that's on it. The next step is to test the existing PR for adding the inky frame itself to circuit Python to see if it's working. It's old enough that there are no build artifacts on it anymore. So I think I'll have to pull it down and build it myself unless somebody can trigger another thing. I don't know how that I don't remember how that works. But like there's no logs or build artifacts anymore. Do you need a custom build for it? Well to run the to run the code in the pull request I would wouldn't I? Yeah if you want to test it but if you haven't working from the library then shouldn't that be enough? Well I wanted to like because the buttons aren't you know like there's other stuff on it that having the having it actually added to circuit Python would be easier. So yes ideally. Anyway that's that's kind of my next step is to test the board def and so on. And the person who wrote it said it was working except for the PS RAM which now that I understand better how circuit Python would treat the PS RAM I don't think it's necessary. And there was one other thing but busy pin maybe but the display seems to work without adding the busy pin. So if those if that's the only thing that's holding it up then I can test it and maybe get it maybe get it back up to because it's it's got merge conflicts and so on right now. Okay yeah that'd be great it's always good to have another board. All right that's what I've got. Thanks Catney. All right next let's go to Liz. Okay I finally published the qualia s3 compass project last week it was definitely adventure not just because it was a compass it involved a lot of new to me math for determining heading with a 9 DoF sensor and creating intuitive accurate graphical display for the compass with a round display. Since I've been working on a few new product guides and I also wrote some code for a simple RTC based digital clock this will be an upcoming learn guide with the Ruiz brothers uses the 1.2 inch 7 segment display and it has a seesaw rotary encoder that lets you reset the hour minute without having to edit the code to reset the RTC so I think they'll be handy for folks. I also wrote a circuit Python 2024 post too long didn't read of it is more cool skateboard tricks with accompanying accessible documentation. Awesome thank you Liz no problem next up is maker Melissa. Hello let's see I'm so I've been exploring Raspberry Pi Wayland interface to try and get the touch screen to rotate on the pi t up to display I could get the display itself rotating but the touch screen itself was off ended up realizing that the only way was to update the overlays themselves so submitted overlay updates to Raspberry Pi I'm I've also updated the pi tft installer script to assign the appropriate options for the touch screen rotations at least not the capacitive one at the moment and I'll temporarily add the updated overlays to the pi tft installer and then I'll remove once the pull request is merged and the overlays are updated in the official Raspberry Pi release and then they also need to update new boards on circuitpython.org. Awesome thanks Melissa last up we have Paul Cutler. It's got today I released the final episode of the circuit Python show with guest host Todd Kurt chatting with me if you do like the two of us together we're going to resurrect our old podcast the bootloader which will also have a bit of a circuit Python focus as well. Thanks. Thanks Paul right and that is it for status updates. Let's go on to in the weeds except we don't have any in the weeds topics just as a reminder it's a chance for us to have longer form discussions if we have questions to talk about but since we don't I'll take another time code for wrap the wrap up time and read us out so this has been the circuit Python weekly meeting for January 29th 2024. Thanks to everybody who's participated it's very cool to see what everyone's up to. 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 the podcast will be made available on major podcast services. It will also be featured in next week's Python for microcontrollers newsletter. Visit AdafruitDaily.com to subscribe to that. The next meeting I think is on schedule. Looks like it check my calendar. The next meeting will be next Monday as usual at 2 p.m. Eastern 11 a.m. Pacific. The meeting is held on the Adafruit Discord server which you can join by going to the URL adafruit.it slash Discord. To be notified about the meeting and any changes to the time or day you can ask to be added to the circuit Pythonistas role on Discord. With that we hope to see you all next week. Thanks everyone. Have a great week.