 Hello everyone! This is the Circuit Python Weekly for Monday, September 25th, 2023. This is time of the week where we get together to talk about all things Circuit Python. I'm Liz, and I'm sponsored by Adafruit to work on Circuit Python and other fun things. 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-slash-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. In the note stock, there's a link to a calendar you can view online or add to your favorite calendar app. We also send notifications about upcoming meetings via Discord. If you would like to receive these notifications, ask us to add you to the Circuit Pythonista's Discord roll. There is a notes document to accompany the meeting and recording. The final notes document includes timestamps 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 45 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 Adafruit Discord. Check the pinned 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 STAS updates in the document for us to read during the meeting. This meeting is held in five parts. The first is community news. This will 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. Second part is the state of Circuit Python, libraries, and 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 part 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 part is status updates. Status updates is 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. Fifth part is in the weeds. In the weeds is an opportunity for more long form discussions. These discussions can come out of STAS updates or be something you've identified ahead of time as too long for STAS updates. And that covers how the meeting will go. And with that, we will get started with community news. So Hacktoberfest 10 starts October 1st. This year marks the 10th anniversary of Hacktoberfest. Hacktoberfest has grown from 676 participants in 2014 to nearly 140,000 participants last year. What is Hacktoberfest? Join forces in virtual and in-person events to get your project's pull, merge requests done as a team, learn new skills, and meet lifelong friends. This year we're partnering with Major League Hacking to help the community connect. Open-source projects maintained by community-minded coders make the modern internet function, supporting that essential work, and the folks behind it is what Hacktoberfest is all about. As in previous years, Circuit Python will be participating in Hacktoberfest, marking some pull requests as Hacktober eligible. Keep an eye on the Adafruit blog for details as October approaches. Fast approaching. And Circuit Python pieces getting ready for version 9. Circuit Python team has been getting key features into Circuit Python ahead of a new version 9. These include updating to the expressive ESP IDF 5.0 goal, is to get to 5.1, and merging changes from MicroPython version 1.20. Goal is to get to the latest version and excellent work to folks who have been working hard on that. And then featured project making a single button keyboard with Circuit Python. MagiClick S3 is a single button keyboard with a color display and is based on a expressive ESP32 S3 microcontroller. The display features a .85 inch color screen, very small, 128 by 128 resolution. The main control board is currently designed with an ESP32 S3 which supports Wi-Fi, Flash, and RAM, large enough to hold functional scripts in Circuit Python and that has been featured on Hackster IO Adafruit blog and the GitHub repository for the project is also public. This and more is available in our weekly Python for microcontrollers newsletter which goes out via email on Monday mornings. Visit adafruitdaily.com to subscribe to the newsletter. Thanks to Ann for putting the newsletter together. If you have any Python on hardware projects to share or find content you'd like to see included, please consider contributing to the newsletter. You can open a PR on GitHub, mention Ann, engineer on Twitter with hashtag CircuitPython, or email cpnews at adafruit.com with a link and that is the community news. Next up is the state of Circuit Python libraries and Blinka and 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 will talk about the project overall and then separately discuss the core libraries and Blinka. So first up for overall, there were 48 pull requests merged by 11 authors, Maker Melissa, Maker M0, Blitz City, that's me, Cavs, G-E-H, D-Hand, Halbert, Jepler, Tanute, Repad, Biffo Bear, Foamy Guy, and Niridoc. There were six reviewers, Maker Melissa, Tanute, MicroDev, Catney, Carter Nelson, and Dan Halbert, and 11 closed issues by 11 people, 20 opened by 17 people. And next we will hear about the core and Scott, would you like to read the core? Yeah, I'm happy to. Thank you. I'm distracted. So let me just pull off here. Okay, numbers for the core, eight pull requests merged from five to four authors, Maker M0 is a new author along with Repad, Repad are new authors. So thank you to them. We have 18 open pull requests, which is lower than we've had in a while. So that's awesome. The oldest is 447 days old. I think that's the dual logical unit thing for mass storage on USB, which we should get back to because that'd be cool. Issues wise, we had four closed issues by three people and 13 opened by 11. So we have a lot of new issues from a number of new folks. I haven't had a chance to look at those yet. We have 724 open issues and six active milestones. We have 10 open issues on 8.2x and 55 open on 9.0. We use these milestones to prioritize 8.2x funded work generally. So if you're not paid by 8.2x and find something that's not necessarily a prior choice, feel free to work on it. We're still happy to support you. Lastly, we have four issues not assigned to milestones. So we have some triage work to do. That's it for the core. Thank you, Scott. And next, we're going to hear about the libraries and the FOMI guy. Would you like, are you reading the libraries? Yeah. Yeah, thanks, Liz. For the libraries this week, we had 29 pull requests merged. Let me, before I jump right into the numbers, also mention a few things. This section covers the CirclePython libraries. All of those are found on GitHub under the name Adafruit underscore, CirclePython underscore, and then whatever the name of the library is. This is the Python code that allows your CirclePython device to interact with various bits of hardware or provides helper functions for completing higher-level projects and things like that. So all of this section pertains to that sort of stuff. We did have 29 pull requests across all of those libraries. There were, from those pull requests, four total authors. So thanks to our authors, including you, Liz, Biffle-Bear, and Nirdak as well. We had four reviewers. So thank you to Melissa, Scott, Carter, and Dan for the reviews this week. There is a list of the pull requests merged here. If you check out the list in the note stock, what you'll notice is a number of them are one-day old. That was kind of cleanup from the patch that was run last week. So a lot of our action this week in terms of stats was from that. But we did have a couple other pull requests merged, including one that was up to 130-ish days old and another one that was 80 days old. So we're still working through other pull requests in the past week as well. That leaves us after this week, with 43 pull requests open, the oldest of which is 403 days and the newest is one day. Although I think the oldest one is a draft as well. At some point, I'll try to look into the stats and see if we can filter those separately. There were over the past week six issues closed by five people and seven new issues opened up by six people, which left us with 640 open issues, 19 of which are labeled as good first issue, which you can find listed at circuitpython.org slash contributing, which is the website that you can head to if you'd like to start getting involved contributing to Circuitpython. There are lists on that page of open pull requests and open issues. There are also filters to find those good first issue ones if you are newer to the process and want to get started. Also, if that description fits you, I'd encourage you to head over to the Discord where this meeting is occurring. There's always folks around there who are willing to help new people get involved. Rounding it out, we got a couple of Pi Pi weekly stats for this week. There were, let's see, is that 70,124 Pi Pi downloads from the 313 libraries in the past week and the top 10 is listed here if you'd like to see them in the notes docs. And that's what we have got this week for libraries. Thanks, Liz. Great, thank you. And thank you for doing that patch for mass releasing all those libraries. Next, we're going to hear about Blinka from Melissa. Hello. So Blinka is our second Python compatibility layer for MicroPython, Raspberry Pi and other single board computers. This week we had 11 pull requests merged by two authors and three viewers. That leaves a net total of three open pull requests amongst other repositories. There were eight closed issues by four people and zero opened, leaving a net of 78 open issues. And there were 16,235 Pi Pi downloads in last week, 3,542 Pi Wheel downloads in last month, and we are at 121 boards. And that's it. Excellent. Thanks, Melissa. And that is the state of CircuitPython libraries and Blinka. Next up is HuggraPorts. HuggraPorts is a chance to highlight folks in the CircuitPython community and beyond for doing awesome things. I will start, and then we'll go down the list alphabetically to give everyone a chance to participate. If you are text only or are missing the meeting, I will read your notes when I get to them in the list. So I will begin with a group hug. Everyone's awesome here. And then next we'll hear from Dan. Okay. Thanks to Jeff for working on the MicroPython v1.20.0 merge. So he made MPY cross and you export both work and fix some test failures and there are more to do. But thanks a lot for, and also thanks to Jeff for working with me on we did pair merging, which is not pair coding, but was kind of that. And got a lot of like very confusing merges done. Like there were eight files in particular that were hard to merge. I appreciate that. And thanks to Scott for doing the ESP IDF version 5.0 and 5.1 merges. Now it's really great to be caught up on ESP IDF now. Okay. Great. Thanks Dan. Next I will read for David Glau who is present. We have a hug report for Lady Aida, Jephler, and Aaron for the work on Teddy Ruxpin as I will be trying to do a Halloween Ruxpin. Very cool. And a group hug. And then we will hear from Fome Guy. All right. Thanks Liz. Hard reports for me this week. Thanks to Scott for reviewing and merging the read the docs theme fix PRs. There were a handful that Aida bought for whatever reason was unable to do automatically. And Scott got the PRs merged for those I do. Very much appreciate it. Thanks to DJ Devon 3 hug report this week for sharing the mega sized matrix portal or matrix panels I should say on show and tell. It's been super cool to see the evolution of that project. And it's very impressive how many panels you've managed to get together. It's super cool to see. And then thanks as well to Melissa for reviewing the PR for non blocking marquee on the led matrix controller library. And that's what I've got for this week. Thanks. Great. Thank you. And next we'll hear from Jephler. Hi there. So I want to give a big thanks to Scott and micro dev for the IDF 5.1 merge. That was a long time in coming. And of course to Dan for doing the review on that reviews of that scale are never easy to do. Meanwhile, Dan, thank you for the micro python 1.20 merge. I know we're working on it together, but you are really doing the lion's share of the work to Paul. It's been lovely to have you as a meeting host. Sorry to see you go from the rotation, but I understand that sometimes the day job takes precedence over the stuff we'd rather be doing. Melissa, I'm looking forward to having a chat with you. It's been too long since we've talked. And finally, a group hug. Thanks, Jeff. And now we'll hear from Catney. Okay. That is fine. Catney has a group hug for everybody right back at you, Catney. And now we will hear from maker Melissa. I want to give a group hug. I mean, I'd like to Dan for a reminding me review for me guys non blocking marquee PR. I'd like to Catney for continuing to participate in the community and a group hug be around us. Great. Thank you. And then I will read for Michael Pakusa, not present. A foamy guy for helping with cookie cutting the Adafruit template engine, which should be ready later this week. Very cool. And now we will hear from Scott. Hello. I'll report to micro dev again for the 5.0 update work and also reviewing the PR. Thanks to Dan for reviewing both the 5.0 and the 5.1 update reviews. And also hug to Bill88T for the 50 review and testing as well. Great. Thank you. And that concludes hug reports. Next up is status updates. Status updates is our time to tell folks what we're up to individually. I will start and we'll go through the list alphabetically. When I call on you, take a couple minutes 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. If a discussion becomes too long, status updates, we can move it to in the weeds and that I will get started. So I was out sick at the end of last week, very unexpectedly, but I'm feeling better. So I'm starting to get back into things today. I'm starting to work on a product guide for the HUSB238USBCPD, which stands for power delivery breakout. And what that is is it lets you set the desired power delivery voltage for USB-C wall adapters that can provide multiple voltages. So pretty cool. And the guide will be out for that hopefully pretty soon. And now we'll hear from Dan. Okay. So as we talked about, we finished reserving the merge conflicts for the MicroPilot and V1.20 merge and I committed that to my branch and Jeff is now has permission to push to that branch. So we're doing that. He pushed a whole bunch of changes. I pushed a few changes. And my work this week is going to try to build some simple boards like Trinket or something and see if I can get them to work at all. And as mentioned, I also reviewed Scott's ESPIDF version 5 merge PRs. And those are merged. So now we're caught up in terms of ESPIDF, which is great. Okay. That's it. Great. Thanks, Dan. Next I'll read for David Glau. For non-circupython Teddy Ruxpin week, receive the two Teddy Ruxpin I ordered from eBay, but only one is the right model. Recover the old code from Lady Aida that is not published anymore. He links to that. Started to use file and issue and send PR to the Jepler version, trying to go beyond the learn guide from Erin by trying to change the eye images like Lady Aida did. Very cool. It's, they are very, the Teddy Ruxpins are, is wild how prolific they are on eBay. So if anyone wants to work on that project, you definitely can. And then Circupython related checking my ultimate mouse jiggler with the new version of the USB HID 6.0 library. I feared the breaking change was going to hit me, but it still works fine. And thinking about ways to use Circupython and Teddy Ruxpin, like using USB hosts to change the Teddy content present, present itself as a USB mass storage and remotely trigger it. Well that'd be cool. All right. And then next I'll read for DJ Devin, whose text only went on show and tell with the correctly working 12 panel display driven by a Matrix Portal S3. Special Heartworks animation for Catney. Lady Aida said 12 is about the maximum I'll be able to run. We'll start working on a wooden frame to hang on the wall when I return from vacation. Haven't done any beta testing this week due to the merge. Everything is in the 9.0 alpha will be in a state of flux for a while. I feel it's best to stay clear and let the devs concentrate on non point 9.0 merges instead of adding new and most likely temporary bug fixes. Spent most of the week in Fusion 360 and Kira for 3D printing for a jewelry box project that will involve a TFT display, SD card, NeoPixels, and a mirror. And then we'll be visiting family for next two weeks and will not be as active. Well enjoy your break DJ Devin. And next we'll hear from FomyGuy. All right. So last week I ran the patch with AidaBot to resolve read the docs theme issue and then started working on a way to release all those libraries because now we had a new commit and need to release the libraries as well. So the latest version gets built with MPY and so that the bundle gets updated and all that good stuff. So there were a couple bits and pieces scattered about in various places that did some parts of this and I managed to kind of bring them all together to make a tool that will reuse some parts of AidaBot to check and make sure each library needs a release and then go ahead and do a release automatically with some preloaded titles and release notes built by templates and things like that. So I got that stuff put together over the weekend and then ran it this morning after a bit more testing and a bit more fixing. And then I have PRed that to AidaBot so that we can make use of it in the future as well or tinker with it to do other stuff if we need it to. Some other stuff that I have in mind to work on this week, I did notice from that patch there was a handful of libraries that reported failed actions runs when it got pushed out. I want to say maybe a dozen or so libraries got failures so not too bad out of all 300 plus but I'm working on going back through those and figuring out what's up with them and getting those fixes put in as well so that those can be back to a passing state. Projects that I have in the works is on the FunHouse I mean, I'm working on an IoT dashboard that will use the HTTP server library along with the new template engine library that Michael had mentioned previously and this will show a slick web interface that shows the sensor data from the FunHouse as well as information about the pins like when the things were tapped or buttons were pressed and stuff like that all in a nice little web page just as a demonstration of the server and the template engine working together. Aside from that, I also intend to start and submit an initial board simple test which was a concept that was discussed a couple of weeks back in the weeds and I want to get one or perhaps a few of those created and submitted in order to iron out any issues that might arise from it and then we can potentially have that as like a thing for Hacktoberfest that things that folks could be working on if they are not as experienced but happen to have hardware that maybe we don't have access to so that's a good cool way I think to get new folks involved and then last thing for me is for the latter part of this week I'll be headed out of town so there will be no stream on Saturday at my usual time but I'll be back next week for that so that's what I've got for now thanks all right thank you and next we'll hear from Jepler hi again so for ate a fruit last week I worked on dot clock displays as well as the micro python 1.20 merge one exciting thing is today I verified that with the updated espidf you can set the dot clock of the displays much higher which just refers to the refresh rate of the display this is still not while running ram or cpu intensive code but it is clearly a big improvement over the previous espidf which is something that we'd hoped for anyway let's see other stuff that I've done over the last week this next one is with circuit python I had gotten the unicomp mini m keyboard which has an rp2040 built into it actually a pico module is soldered directly under their circuit board and I've continued enhancing the firmware and so two big things about it are I improved how it detects ghosts and and allows a few more combinations of keys to be pressed that couldn't before and I also wrote it so that it does no python memory allocations after the initial startup so there's never a gc pause while you're scanning the matrix or sending messages to the computer so hopefully you don't experience even those minor glitches when circuit python pauses to do garbage collection and this is more important than with like a traditional keyboard that can be scanned with the key matrix because it actually does the scanning all in python and then the still python thing but not circuit python is that I worked on my program called chap which is a program for talking to text generating large language models like chat gpt I added some new functionality including being able to talk to gpt4 as well as to talk to local lm's with llama.cpp which is something that like it will run just on your cpu it will run on your gpu apparently works really well on current max and the model called vicuna seems to be one of the best that you can run at home right now and all right so back to work there's a link to that project so back to work I'm basically doing the same thing as last week working on dot clock displays as my top priority and then spending time resolving problems with the micro python 1.20 merge as I have idle time so that yeah the goal is to wrap up dot clock displays because soon I will be gone for about six weeks it's a 50-50 whether I will be at next monday's meeting and after that I will be back on monday november 13th so it will be a little time away from y'all and I can't wait to hear about what all you did while I'm gone thank you thanks thanks Jeff really excited to use the dot clock displays and also hope you enjoy your vacation next we'll hear from catney hello so this past weekend I put up one of two new blinds in my office to replace the terrible projector screen like ones that came with the house they never work if you move them you you end up pulling them down for 100 years before they ever decide to go back up they're terrible and I got new blinds and they look amazing I'm really excited the first one is at least the right size I ordered them online so hopefully the second one is as well and I finished building a custom table for my new tool chest it turns out putting something heavy on top of a small table even with solid legs on carpet makes for a tippy situation boards underneath the legs fix it well enough to call it good I just need to find nicer boards because they're awful scrap pieces of 2x4 that we had sitting around so upcoming my next steps so my plan is to start doing tech related and otherwise general information content I'm going to be doing videos tutorials eventually live streams I'm starting a patreon I'm going to be refreshing my github sponsors page my goal is to be ready to start releasing content about two and a half weeks until then I have a huge amount of preparation to get through and I will keep everybody posted on what I'm up to over the next few weeks and I will definitely let everybody know when I'm ready to get started and then the rest of that is continuing building up my office workshop and putting up the second blinds which hopefully goes faster but I bet it doesn't and that's what I've got awesome thanks catney and looking forward to seeing what you do uh next we're going to hear from maker melissa hello melissa last week I went through some uh more blinca issues and submitted prs for those and they got merged in I also went through the every post and updated the documentation and organized issues much better um I started going through blinca display IO code and updating it to be more to be current and much more complete in order to just support monochrome and grace growth displays uh and this week I'm currently debugging the blink of display IO code changes I made and I think I've narrowed it down to something in my palette code uh after that I'll look at optimizing the code a little bit and possibly adding in support if it's not too involved and that's where I'm at all right very cool uh and next we'll hear from Scott hello uh melissa always ping me if you have trouble with the ink I'm happy to help you with that stuff um okay uh updates uh updating the IDF to 50 and 51 were merged in last week uh so expect to find some issues on ESP um so please test and file issues however I want to say that uh there's a lot of rando ESP boards and I don't have them all so if you can reproduce any issues you find on adafruit expressive or unexpected maker boards that will make it easier for me uh to reproduce them on my end um I don't have all of unexpected maker I don't have all the expressive ones either but uh please try to target those if you can um so I wanted to caveat that because there are some random ones that I just don't have um I was trying to test the matrix portal s3 uh and re-enable rgb matrix support but I found a crash while I was doing that so I've got to fix that first uh so that's the first thing I'm doing this week and then uh also note that Friday's gonna I'm gonna be off and on uh so no deep dive this week as Tim said he's out so no deep no deep dive this week all right thank you and that was staz updates next up in the weeds uh in the weeds is an opportunity for long-form discussions that either come out staz updates or that folks have identified ahead of time if you have any in the weeds topics please make sure they get added while we're discussing other things so we're not weighing around see if anyone has topics uh and with that uh there is one uh by David Glow who's not present so I will read uh the Adafruit learning system repo has more than 1,000 entries in its root one folder per project and that makes the github web UI not let you browse it so I was hoping for a way to fix that and open an issue maybe uh and then there's a note maybe someone can summarize the previous discussion what possibilities or bring new ideas not sure if folks have thoughts I know we had discussed it a little bit I can't speak much to any prior um discussions but it is something that I've run into as well and thought a little bit about one idea that came to mind it for me at least was hosting a html page essentially just hosting our own html page that's effectively a copy of a giant list of links to everything that's in the learning guide and then that html page as long as as long as that page will render the entire thing it can just be a giant hard coded list of links that gets generated by actions or some other automatic tool every time a new thing is committed um that was the idea that came to mind for me I don't know if there were other other thoughts originally or yeah the other thing we could think about is talking to the learning team uh if if it's hard to go from the learn guide to where the source is on github that's something we could probably talk to Justin about or or you know the learn team so that when you're actually reading a learn guide we could try to get you straight to straight to the source file that you then it comes from rather than having to go to that like first page to start yeah I don't think I don't think any folder helps you sorry David proposed the new 2023 folder for for new guides and like it's still gonna end up below the fold which is yeah unfortunate um I mean for for folks coming from learn I think it does a good job already of not not sending them to that giant list um they can either they can like click to follow through to a link that goes directly to the folder for that project or they can just use the project bundler which downloads everything they need and lets them skip github all together yeah the actual if you click the view on github link in a guide for code that's been embedded it brings you to that like code file and then you can go one level up if you want to see the whole folder um and I also want to read what Jeff wrote in the chat um big technical problem is that changing a location on github means changing links on the guide right now I don't think there's a bulk link change and learn so um yeah I think um personally just as someone that writes a lot of project guides where we're embedding the code um I think changing like fundamentally how we're doing it could cause some problems but I like for me you guys idea of having like a generated list kind of similar how internally we have the tool to have that snapshot of what the circuit pie drive should look like I'm not sure if folks have anything else to say on the topic it can kind of be an ongoing discussion maybe I would also note that there's there's a go to file link at the top of the list um so you can always type in a few characters from the directory name and you'll go out you'll you'll see everything that's good too yeah thanks folks for that discussion um looks like that is the last in the weeds topic so we can start wrapping up today's meeting this has been the circuit python weekly for Monday September 25th 2023 thank you to everyone who participated if you want to support adfruit and circuit python 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 available on major podcast services it 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 and this meeting is held on the adafruit discord which you can join by going to 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 circuit python nisa's role on discord and we hope to see you all next week thanks everyone