 Okay, hello everyone. This is the Circuit Python Weekly for January 2nd, 2024. It's the time of week where we get together to talk about all things Circuit Python. I'm Jebler, and I'm sponsored by Adafruit to work on Circuit Python, which as you may know, is a version of Python designed to run on tiny computers known as microcontrollers. Circuit Python Development is sponsored primarily 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 at any time by going to adafruit.com. 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. U.S. Eastern Time, 11 a.m. U.S. Pacific Time, except when it coincides with the U.S. Holiday, as it did yesterday when we celebrated New Year's Day. In the Notestock, there is 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. If you would like to receive these notifications, or if you'd like to speak in the meeting, ask us to add you to the Circuit Python Discord role. There is a Notestock that accompanies the meeting and recording. Before the meeting, we all add our notes to the document. Then after the meeting, it is uploaded to GitHub and linked from the video, so you can check around in the show notes to find the part that interests you the most. This meeting tends to run 30 to 60 minutes, although I'm guessing we will run shorter today as we've got a fairly small number of people in just after the holiday. After each meeting, we post the meeting, the link to the next meeting document. Melissa, if you could mute that would be very helpful. After each meeting, we post the link to the upcoming notes document so that you can add your notes at any time during the week. And of course, if you wish to participate but cannot attend or it's just inconvenient to speak live or for whatever reason, you can leave your hub reports and status updates in the document for us to read during the meeting, and the host will read those out. All right, so this meeting is held in five parts. Next up is community news where we take a look at the Python on hardware newsletter. After that is the state of Circuit Python, the libraries in Blinka where we look at some numbers that describe the project health. Then it's time for y'all to participate with me and we continue with hunger ports, an opportunity to highlight the good things that folks in this community have been doing because it's really important to take the time to recognize the awesome people around us in the community. The fourth part and really the meat of the meeting is the status updates where we want to hear what you've been up to since we last got together and what you're going to be up to in the near future. So please take a couple of minutes and update us on what is going on with you. And the final part is called in the weeds if there's something that doesn't fit within the structure. For instance, because it calls for more discussion, then this is when we do it at the end of the meeting. If you do have one of these topics, please add it at your earliest convenience and we just take those in the order that they are in the document and that covers how the meeting will go. So I'm excited to start telling you about some community news. MicroPython version 1.22.0 was released over the holidays. The latest release introduces SSL and TLS support to async.io for both client and server and the interface is the same as on standard CPython. Custor pools are now sorted and this provides a performance boost. And the final item that might be of interest is that this was also the fix for a security vulnerability known as CVE 2023-71-58. And I also just want to note that CircuitPython is not affected by this in any of our binary builds because the vulnerability exists when you enable a feature that CircuitPython does not use. So for your CircuitPython machines you don't have to worry about that. Alright next up we have a magazine review of one of Adafruit's products. The title is CircuitPython powering Adafruit's Memento camera board makes programming vision apps a snap. And in the notes doc you can find a link both to the product and to the review on Hector.io and cnxsoftware.com. Alright next we have a project. The CT6 is a Raspberry Pi Pico W-powered four-port home energy monitor running on a Raspberry Pi Pico W with MicroPython. And there are links to Hector.io and GitHub if you want to learn more about that. And that rounds out the extracts from the newsletter that I picked. There is a lot of stuff in this community-run newsletter that is curated by our very own Anne B also known as Anne Engineer. And it is emailed every Monday. You can also find the complete archives on adafruitdaily.com slash category slash CircuitPython. And the aim as always is to highlight the latest Python on hardware related news from around the web and that includes CircuitPython, Python and MicroPython. We really want to have news and projects come from the community and you can do that by editing next week's draft on GitHub and submitting a pull request with the changes. You can also email CPnews at adafruit.com or tag a post with hashtag CircuitPython on Mastodon, Blue Sky or X, formerly known as Twitter. All right. Next up is the state of CircuitPython, the libraries and Blinka. So we have a little bot called Adabot that runs every night or in the wee hours of the night and summarizes seven days of activity. And this is actually the report that was generated Monday morning, just so that we take the time to recognize everybody when it shifts by one day, then we might miss a day. So this won't include any activity from Monday. It includes the previous seven days, which were pretty quiet because of the holiday that many folks observe. All right. So overall, we had 17 pull requests merged from 10 authors and five reviewers. And there are a couple of names here that are less familiar to me. So I really want to thank, in particular, HowToFlow, TeenNiche and JINST Komoda for your contributions, whatever those were. And of course, thank you to the reviewers. Tektrick, nice to see you popping up on this list. And issues-wise, we had 11 closed issues by six people, while 19 issues were opened by 17 people, which of course puts us net up on issues. So next, I'm going to tell you about the core, which is the part of CircuitPython that is written in the C language that you load onto your device, typically as a UF2 file. In the core, we had four pull requests merged from four authors and two reviewers. We've got 20 open pull requests at the moment, about half of which are draft and half of which are not. And of course, we encourage you with those older PRs to move them out of draft state if you can. And if you're waiting on us for action, please ask because we don't always understand that you're waiting for something from us. It's really good to see some of those move forward. Issues-wise, we saw five closed issues by 13 people. No, five issues closed by three people while we saw 13 issues opened by 12 people. So it's within the core that most of those additional new issues were. And that leaves us with 690 open issues. We organize those by milestones to keep people apprised of what work Adafruit is prioritizing. And so the important ones right now are the 8.2x milestone, which are bugs that we plan to fix in the stable version of CircuitPython. And that stands at zero open issues. So that's great. It means we may not see another 8.2 release unless we become aware of new problems. Next up, the 900 milestone. These are the issues that we want to address before we release the stable version 9, which is our kind of next big feature upgrade. It's got lots of good stuff in there, but it also has 49 open issues that we need to address before that is ready for folks to use. Finally, we've got 13 issues not assigned to milestone. And this is in part because a bunch of us are on vacation. And Scott and Dan are continuing to take some time off. So we may not be categorizing those in the near future. But that doesn't mean that we don't appreciate your issue reports when you follow them. And this is also to say those 573 long term issues that represents that Adafruit doesn't prioritize that right now, but we would love anyone to pick up some of those issues and work on them and improve CircuitPython in a way that is relevant to your use cases. Alright, and with that said, I'm also going to read the library section today. The libraries are the part of CircuitPython that's implemented in Python code. Traditionally, it's much easier for folks to pick up how to contribute to the libraries than how to contribute to the core. And that is one reason that we separate these out. Anyway, statistics, we had eight pull requests merged from four authors with two reviewers. And there is a list of merged pull requests in the notes document. That leaves us with 57 open pull requests ranging in age from one to 501 days. And issues wise, we saw two closed issues, and six open issues by two and five people respectively, that leaves 711 open issues, 19 of which are tagged as good first issue. You can see this and a lot more information at circuitpython.org slash contributing. And I have a little more to tell you about contributing to CircuitPython. If you're interested in contributing to CircuitPython on the Python side of things, check out that link I just mentioned circuitpython.org slash contributing. You'll find a list of open PRs and a list of open issues. If you're looking to contribute, this is a great place to start. If you're interested in reviewing, check out the list of open PRs. Take a look at the code. If you have the hardware to test it, do so. Otherwise, you can have a look at the syntax, spelling, etc. Leave a comment to let us know you looked at it. And once you're comfortable with that, we can talk about leveling you up into the review team. If you're interested in contributing code or documentation, check out the open issues. You can sort by label. So you search for good first issue if you're just getting started, or bug or enhancement if you're looking for something a little bit more complicated. We have a guide on contributing to CircuitPython using Git and GitHub. And we're always available on Discord to help you get started with that. So let us know if you need any assistance. Don't let the process intimidate you. We want you to be able to contribute in a way that works for you. And something that isn't on this list is we have a bundle called the Community Bundle. If you want to start selling totally new in CircuitPython, it doesn't exist yet. You've got an idea for washing machine interface in CircuitPython. You can also create a whole new Python library and later contribute it to us via the Community Bundle where you retain full control of your project. But it becomes easy to install with tools like Circuit. So that's yet another way to contribute. All right. And with that, I've got a few more statistics to tell you about. We track our PyPI Weekly downloads. And in the last seven days, there were 90,423 PyPI downloads, which is down a little bit from our usual. I think we usually top 100,000. But no surprise, as a lot of people were taking some time off. And there is a list of the top 10 libraries by download count in the document. And last up, library updates in the last seven days. We saw four updated libraries. The list is in the notes document. And one new library that is in that Community Bundle I was mentioning to you. And that is from our very own Cedar Grove, Cgrover, who has contributed the Wave Builder library. And I believe there's also a write up of Wave Builder in the newsletter this week. So check that out. It is kind of cool. And with that, I am going to get to take a brief break from talking as Melissa tells us about Blinka. Hello, so Blinka is our Circle Python compatibility layer for MicroPython Raspberry Pi and other single board computers. This time we had five pull requests merged by two authors and two reviewers. There were there are currently eight open pull requests amongst other repositories. There were four closed issues by one person and zero open by zero people leaving a net of 80 open issues. There were 10,635 PI PI downloads in the last week. 9,225 PI wheels downloads in the last month and we are 128 ports. I think a bunch of the people who took time off from Circle Python were working on Blinka because that is those are some higher numbers than we've been seeing in a while. But anyway, that wraps up this new Circuit Python the libraries on Blinka. If you want to respond to that, no, Melissa, please. Yeah, actually, I think a lot of that is because I've been working on focusing on Blinka these last couple weeks. Yeah, very cool. It's nice to see some stuff happening there. Yeah. Okay, with that, I will move on to Hug Reports. Hug Reports is a chance to highlight folks in the Circuit Python community and beyond for doing awesome things. I'll start then we'll go down the list in the document order to give everybody a chance to participate. If your text only are missing the meeting, I'll read your notes when I get to them in the list. And if I happen to skip over you by mistake, please drop a note in the text channel and I will get back to you. And so I have a group hug because I've been spending a little time away from y'all and it's just nice to be back and getting back into things. But I also have a hug for Paul Cutler. He interviewed me last week for his podcast with any luck. I think that episode is airing in about two to three weeks. So look for it. And if I understand correctly with this episode, Paul Cutler will have interviewed all the Adafruit folks who are working on Circuit Python at the moment for some definition of everybody because we've got a lot of people who chip in on that. Anyway, next up, a hug for Cedar Grove. I mentioned your Waveform library and I think it's really cool. And I also didn't know about the project you talk about down in your status updates CG35. That also looks very cool. And also a preemptive hug to everybody who will share your ideas with Adafruit and the community about your Circuit Python 24, Circuit Python 2024 vision and goals. And I'm going to say a little bit more about that down in the in the weeds section when we get there. But now I've got notes from folks to read. So Antic Data writes thanks to me for figuring out the proper fix for getting hashlib onto a broader array of boards. C. Grover says a hug for M. Martin Ortiz on GitHub for comments and suggestions regarding the range slicer repo. Thank you. And a group hug to the team and the community. Then I have some notes from DJ Devon 3 who has a hug for Jose Posada for the Touch Slider library. One for Delci for an excellent GUI design of an Elkar's theme touch display. To Justin for a neat idea for consolidating repeated code across libraries that use sockets. One for Dan H for helping in Discord and doing some last-minute holiday bug report reviews. A hug for Fumiguy for streaming work on a grid layout soft keyboard. Because a touch display keyboard requires so many cells it brought up some inefficiencies in the way grids were previously loaded. He tackled that as well. It's been awesome watching him improve grid layout and creating the foundation for touch keyboard related projects. And finally a group holiday hug. All right. More notes from Fumiguy who has hugs for Bear and Dated and DJ Devon 3 all for helping folks on Discord in the Help with channel. To me for the font bundle. A hug for Melissa for adding vector IO implementation to Blinky Display IO. And a group hug. And rounding out the section. I don't know that I've ever read every hug report in a meeting before but understandably people are still taking their holiday time and their family time and that's super important. So anyway Scott Tan Newd writes a hug for Jebler for keeping things going while Dan and I are out and one for Fumiguy for doing the next two deep dives. And that concludes our reports and brings us over to the status updates. I actually forgot to write mine in there but I wanted to give a group hug to everyone. Thank you very much. All right well if you haven't written your status updates now's a great time. Anyway so status updates it's time to tell folks what you're up to as an individual. I will start and again we'll go through the 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. It's also an opportunity to provide quick tips and tricks related to what folks are working on. But if it becomes a discussion then we'll move it to in the weeds. And I don't uh yeah. Of course we also want to hear what's going on outside of CircuitPython to know each other a little better as people. But anyway I will get started. So last week I mostly did some small things. I was kind of not working but I kind of was. So there was a problem that you could run the build command called make translate which you need to do when you change certain things in the Cpy in the in the CircuitPython source. But if you didn't do another step before that you could create a file that was missing some stuff that needed to be there. So I made this make translate check for the problem and automatically resolve it. So hopefully that won't trouble people in the future. Next up I have a PR into enable hash lib on a bunch of boards. This was brought up by a community member and Anecdata offered a pull request to to do this but the build wasn't quite right so I went and did it in a different way. And once this PR is merged hash lib will be supported on basically every board where it fit within the available flash size. So that'll be really cool. I helped review some pull requests and I also made a pull request to merge the changes from version 8.2 into main and I'm blanking on what that particular change was but there was a particular change to do with socket handling that we wanted there was made in 8.2x and we also wanted in main. The week before that I was working on jpeg enhancements and those are now merged to the main branch. There's still I don't think they're in a release yet I'm not sure and I also made some bundler enhancements related to that. So up this week I'm looking at how to integrate the jpeg decoding into the portal based library on boards that support it and I need to figure out who to talk to internally so that we can use the font bundle in learning system guides. There's that link download project bundle and it does not know to look in the font bundle for necessary libraries and so they just won't be there so we can't use that functionality yet and then I will probably be coding the changes to the screenshot builder which is a python project that's just on github and then I had another random thought about you know what are things where we have a binary file that's associated or you know that we want to use in circuit python and and the idea is what if you could just import waveforms to use with synthio I think that would be really cool. There are a couple of libraries of free waveform samples out there one is called akwf and it would be neat if somebody created a bundle that just incorporated all of those and made them easy to install with circup and import but anyway next up we have notes from a bunch of other folks so cgrover writes continue to refine the synthio waveform object tool wavebuilder updated the playground notes to include some experimental sounds and release the class to the community bundle designed a basement add-on board for JP's fader wave PCB this add-on provides an i2s amplifier or stereodact connection when using the itzy bitzy rp2040 next on the list is to prototype a port of the cg35 reverse polish calculator for use with the new 3.5 inch capacitive touch tft display hoping that will work more reliably with the tiny on-screen keys I assume the other board is a resistive touchscreen and if you don't know the cp35 emulates the iconic hp35 calculator and in the note stock there is a link to the github repo for that check it out it looks it looks cool it looks good all right next notes from djdevin3 who says continue to integrating touch features into feather weather using circumpile on slider by jose mozada for tft pwm brightness control really excited to work with foamy guys new touchscreen layout to create a fully self-contained device no need to connect via usb or web workflow to change ssid password or preferences it can be done on the touch display itself albeit it is still a work in progress the change from display dot show to display dot group group equals group has created a different syntax to switch between display groups i'm using it in a way that i hadn't seen as an example in a learn guide yet and it's easy enough for absolute beginners to understand eventually i'd like to write a touch gooey playground note and finally update a jp's weather matrix display to work with updated nine point x code on the matrix portal s3 it also uses the newer open weather map two point five one call api there's a link to dj devin's example on github it's obviously not an official thing just a personal project based on a user support question all right next up i have notes from fed a2 i've ordered the new risk 64 milk v duo linux microcontroller there is a new release with a new version of the chip and they now support Arduino IDE for the smaller core i'm trying to put circuit python on these boards as they are quite powerful very cheap and pin compatible with the raspberry pico i hope i can get a memento so that i can test an i naturalist library i've been working on on the portal and other esp32 boards this allows to download images from i naturalist no api key required and now with the camera it will be interesting to upload images as well and next is foamy guy these are their updates confirm the existence of an issue in adafruit request and tested the fix in the proposed pull request worked on the soft keyboard helper library and worked on pie game display library for use with blinker display i o solve the major show stopping issues with the latest versions but a few smaller quirks remain mostly around manual refresh calls will poke a little further but plan to make a release even if i can't get it perfect so that will be compatible with the latest versions of blinker display i o and with that maker melissa we're ready to hear from you on it i this last week or a couple weeks i added vector i o to blinker display i o and removed pillow as a requirement i figured out a workaround for an issue with the raspberry pi 5 where the c e 0 and c e 1 pins were in use i fixed some of the raspberry pi installer scripts and i will be testing out the speaker bonnet with pi 5 probably today and i'll look at that working if it isn't and that's from that thank you melissa and we'll round up this section with notes from scott who writes my mom passed away peacefully just before christmas we're headed on a delayed family trip january 4th to the 15th back in my office on the 16th and picking things up then kicked off circa python 2024 yesterday and will go all month there is a link to the adafruit blog in the uh notes document scott writes i'll try and post updates every few days when i get emails from circuit python 2024 at adafruit.com submitted a talk proposal to pi cascades about circuit python workflows the deadline is january 4th in case anyone else wants to apply and finally got the 13-inch e-ink working with circuit python but it will need another keyword argument in e-paper display because it addresses pixels in both directions and there is a link to a mastodon post about that all right and that concludes status updates and brings us to the in the weeds section and um justin has the first item so um if your mic is uh if you're talking today please go ahead yeah uh good morning everybody and happy new year um i guess my first question is going to be is it worth talking about these two things this week with so few people or would it be better to just move them on to next weeks when we have more people back i think you know definitely it would be helpful if dan and scott were here because i would kind of look to them for for guidance on this stuff but if you want to go through it just to let people know what you're up to since you didn't do a status update kind of tackle it from that point of view might be useful yeah i would be happy to um so this first one so basically based on some feedback i had originally created a socket manager in from requests and basically got some pr feedback on a high level to kind of separate stuff out had some back and forth and rebuilt a new library called connection manager that does all of that there is the pull request there with some pretty high level comments for anyone who wants to review it in that pull request also has the two prs for the changes in both the requests and mqtt that people can go look at and see i worked pretty hard to make sure that there wasn't a lot of increase in size and also did some things with logging and things like that so feel free to look at that pr make comments if you are someone that's got some general expertise there that would be awesome and appreciated and kind of as a side note on this second bullet point i'm a heavy pie charm user have been for a very long time and so whenever anyone asks comments on it i usually ask or i respond and someone had asked if there were stubs for specific boards for the pins i had been making them by hand for the small handful of boards i have and it was a holiday and i had a lecture time and i was like i wonder how hard it would be to automate this and so i put together a quick script again you can look at it here it's linked here and it actually goes out and builds a custom board stub for all of the boards that are in the repo that can be used and would love to talk to people about potentially automating this and actually having them all get built even going as far as making sure that other things that weren't on the board were removed from the stubs as well i had looked at some stuff from how the matrix is built as well so so feel free to look at these two things if you're interested make comments if you can and i will bring these back up next week where we can go into them a little bit more detail all right the second one looks pretty neat i have helped with some with the stubs and i had not come up with a good idea around how to provide different files for each board so i'm curious would this mean like there would be a different pip installable stubs library for each board that circuit python supports or how would that function yeah so there would be two ways to me that would be the most ideal way in that way as you're building things for different ones you can kind of see on the last thing so instead of circuit python stubs you'd have circuit python stubs adafruit feather esp32 s3 i know there was lots of talk i didn't follow it all the way with the fonts and things and trying to figure out like do we want to have all of the you know just adafruit want to have all of these different things up on pi pi and things like that the other option would be to have them go out and trying to find a way that you could easily copy them so right now what i've always done is i just copied into the root of my project and rename it borr.diy pyi and then it works fine and then it's a small file at the end so even if it lands on the microcontroller it's not going to hurt anything and so i think there's options so it'd be interesting to find out if people are willing to you know if adafruit wants to have all of those on their pi by account or not or if there's something else so i'm happy to tackle and try to figure out what makes the most sense so yeah and i would actually review the repo for someone to pull down manually so i'd have to review like how do we actually build how do we do the releasing process of the circuit python stubs i'd have to refresh my memory about that and i you know would worry that you'd hit some kind of rate limit on pi pi when you want to upload upload 400 packages in quick succession but i think it's a cool idea i'm really glad that you did this you can also i can also try to do some research and i will just go do this i know you can have secondary comments when you install something and so we might be to do them as like sub versions or modules and so you would do what you know you would install circuit python stubs like with adafruit feather esp32 or whatever and it would know to grab that particular board so i can definitely do some looking into that to see if we can get it all into one package so i'm thought of the rate limiting of you know 400 simul boards and which will just go up from here so yeah yeah all right well thanks for that yeah i'm i'm interested in that idea but yeah when uh when scott and dan are able to participate i think and tim you'll you'll just get more more useful info about particularly the request stuff than i can provide but thank you very much all right and then i just wanted to talk a little bit more about circuit python 2024 normally scott would do that and as you heard he is out spending family time so anyway this is based on a blog post on the adafruit blog and for a number of years we've solicited anybody in the community to kind of give us your vision for where circuit python should move in 2024 or what it is you hope to accomplish with circuit python in 2024 and um yeah so just talking about some goal setting and on the adafruit blog and linked in the notes document you can find um links to recaps of the past years and you can also find instructions on how to contribute to this year so the the top way is to email a special email address that is in that blog post and that will help scott kind of pull those into his wrap up although i think we're also talking about taking um comments on social media such as mastodon and we really just want to hear from folks what is your vision for circuit python and we're not going to all come to one collective vision because we all have different different things that are important to us but it's really helpful to know what what are people wanting to do with circuit python what are the weaknesses that they see and that that helps us that helps everybody because you know we talk about this stuff and anyway yeah so head to the Adafruit blog and look for that circuit python 2024 post and let us know your thoughts and with that I am going to wrap up this meeting um I want to thank everybody who left their notes and those couple of you who were here to participate live this has been the circuit python weekly meeting for january 2nd 2024 to support folks like me who work on circuit python it's really helpful when you purchase your stuff from the Adafruit shop at Adafruit.com if you're outside of the U.S. there is a link to distributors in various countries it's at the bottom of the Adafruit page and we love it if you would buy from them as well the video for this meeting is released on youtube at youtube.com slash Adafruit and the podcast will go up on major podcast services it will also be linked in the python for microcontrollers newsletter which has all kinds of cool python on hardware stuff visit AdafruitDaily.com to subscribe the next meeting will be held next monday as usual at 2 p.m eastern 11 am pacific that'll be monday january 8th 2024 the meeting is held on Adafruit discord which you can join at any time by going to adafru.it slash discord to be notified about the meeting and any changes to the time or day and to be unable to speak in the meeting you can ask to be added to the circuit python needs to roll on discord we hope to see you next week thank you everybody