 I'm starting recording. Hello everyone. This is the Circuit Python weekly for June 26, 2023. This is the time of the week where we get together and talk about all things Circuit Python. I'm Dan and I'm sponsored by Adafruit to work on Circuit Python. You might ask, what is Circuit Python? It's a version of Python designed to run on tiny computers called microcontrollers. Circuit Python development is primarily sponsored by Adafruit. If you want to support Adafruit and Circuit Python, consider purchasing hardware from Adafruit.com. That's where the money comes from to pay us who work on Circuit Python. This meeting is hosted on the Adafruit Discord server. You can join anytime by going to adafru.it-slash-discord. That's a Discord invitation. 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. U.S. Eastern time, 11 a.m. U.S. Pacific time, 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 AdSign Circuit Pythonistas Discord role in the Adafruit server. I mentioned the notes document. There is a Google doc called the notes document that accompanies this meeting and recording. If you're watching this on YouTube, it's in the description. There's a link to it. The final notes document includes time stamps 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 notes doc so you can add your notes for the following meeting. If you wish to participate but cannot attend, you can leave hug reports and status updates in the document for us to read out loud during the meeting. This meeting is held in five parts. I won't describe them in detail because we'll get to each of them. Community News, State of Perker Python Libraries at Blinka, Hug Reports, Status Updates, and In the Weeds, which is optional at the end. All right. With that, we will get to the first item which is Community News and I will add a timestamp. There we go. It looks like it's on track. Okay. So, this news comes from our weekly Python for Microcontroller's newsletter which goes out via email on Tuesday mornings. You can visit adafruitdaily.com to subscribe to the newsletter. Thanks to Anne for putting the newsletter together. If you have any Python or hardware projects to share or find content that you'd like to see included in the newsletter, please consider contributing. You can open a Twitter account or email us at adafruitdaily.com. All right. So, we'll go ahead. So, some of this is taken from the draft newsletter and I add something about the 8.2 Python, 8.2.0, at least candidate at the top here. All right. So, we'll go ahead. So, some of this is taken from the draft newsletter and I add something about the 8.2, sort of Python, 8.2.0, at least candidate at the top here. So, first item. Sort of Python, 8.2.0, release candidate zero was released last week. As with the last beta, the notable changes to 8.2.0 since 8.2.0 are a bunch of bug fixes and minor enhancements, some new boards, but mainly continued enhancement of SynthIO and RP2040 Alarm.SleepMemory has been implemented. Okay, next item. Our two things about podcasts that involve CircuitPython. So, Catney Rembauer was interviewed on the Teaching Python podcast. We're excited to have Catney Rembauer. I'll just quote from the blurb for that. We're excited to have Catney Rembauer from Everfruit as our special guest who has contributed extensively to CircuitPython platform from beginner guides who advance projects. We delve into CircuitPython, a version of Python designed for microcontrollers. Created for beginners and educational purposes, it provides a unique approach to learning Python. Catney lightens us on the vast applications of CircuitPython ranging from environmental sensing to assistive technologies for people with disabilities. Alright, next up is about Todd Kurt who appeared on the RealPython podcast. Christopher Bailey at the RealPython podcast interviews CircuitPythonista Todd Kurt. Todd has been working with embedded electronics for a long time and has been an active member of the Arduino community. He really started to build projects using CircuitPython and it has become his preferred prototype method. So, check out the RealPython podcast for that. And then finally, we'll mention about Adafruit hacking commercial toys currently baby toys. Adafruit's lady Aida has been hacking the baby Einstein toy for baby Aida. She now has a custom ESP32-S2 board with an SD card to replace the original board. With CircuitPython it now plays any song selected on the SD card. So this baby Einstein toy played music and flashlights and it now does all that 10 times better than it did before. So check it out. There's a link in the notes for that. So as I mentioned, all this stuff comes from the CircuitPython Weekly newsletter. The archives are on AdafruitDaily.com category slash category slash CircuitPython. Feel free to contribute as I mentioned before and there are more details about how to contribute in the notes document. Alright, so now we'll move on to the next section, which is the state of CircuitPython, the libraries in Blinka. This report contains information of the previous seven days. Any changes made today are not included in this report. So first of all, we'll give our overall statistics. So this section is a quantitative review of what's been happening in CircuitPython in the last week, mainly having to do with what's been happening on GitHub. So that's kind of most of what happens besides learning guides and stuff and what happens outside of Adafruit. So in the last week, there were 15 poll requests merged by 10 authors. One new one that I see, or two maybe two, Strider 21 and also Tushui and not by nine reviewers. There were nine reviewers and there were 17 closed issues by eight people and 20 open by 15 people. So we're kind of keeping up but people are finding new things that are wrong. Next up is about the CircuitPython core section and Scott, if you have time to read that, that'd be great. Yeah, happy to. Okay, so for the core, the numbers are 12 poll requests merged from seven different authors. So thank you to all of our authors. We had five reviewers, so thank you to those folks as well. Thank you to everyone and Bill88T for being infrequent reviewers. We really appreciate you commenting and reviewing current stuff. We're always looking for more reviewers because the more reviewers we have, the more authors we can support. We have 26 open poll requests. A number of those are draft. So we're getting near that bound that I like to have of fitting all of our open poll requests on a single page. So as always, please take a look at any poll requests that you're involved with and see if you can close them. Issues-wise, we had 13 closed issues by five people and 13 opens by 10 people. So we're net zero, which is good for us. And generally we have a number of folks involved, so that's been great. We have a total of 661 open issues. This does tend to go larger and larger over time. Milestones have changed since last week. We have six active milestones right now. We closed 8xx because we're almost to the point where we're going to work on 9.0. So as of these stats, we had zero open issues for 8.2, which is the next stable release. And likely the last stable release before 9.0 work begins. We have 38 open issues on 9.0, lots to do there. These numbers say six issues not assigned to milestone, but that number should be lower. Not assigning a milestone or issues without a milestone are ones that have yet to be triaged. So those are always really good to look at. And the milestone marks are prioritization for generally 8x fruit funded folks. So we don't want to deter folks from picking up any issues that are marked kind of long term, which is our bucket of like 8x fruit folks are going to do it immediately. As a reminder, we're always happy to review stuff even if it's not kind of in our most important category. So that's it for the core. Okay, thank you Scott. Okay, next up is the library section at Katyn. You can read that. Yep. Alright, so this section applies to all of the Circuit Python libraries, which includes all the Circuit Python libraries in the community bundle and all of the 8x fruit Circuit Python libraries as well as a couple extras. So across all of that, we had two pull requests merged by two authors and three reviewers that leaves us with 63 open pull requests, the oldest of which is a thousand days old, but I did notice that this says it's a thousand days old and if you check CircuitPython.org slash contributing, it says 999. So I think maybe it just stops there. So don't go search by date number if it's four digits, I guess. And we had four issues closed by four people and five opened by three people, leaving us with 623 open issues. 46 of those are labeled good first issue. If you're interested in contributing to Circuit Python on the Python side of things, you'll find all of this information and more including a list of open pull requests and a list of open issues. If you're interested in contributing by reviewing, check out the open pull requests. If you see something you have hardware for, test it. If you don't have the hardware, take a look at the code, see if it looks right for syntax or spelling or other things that you do not need the hardware to figure out and leave a comment and let us know. And once you're comfortable with that, we can talk about leveling you up to the review team. If you're interested in contributing code or documentation, check out the open issues. They are spread out by repository and you can do a find in page to search for keywords if there's something you're interested in or if you're new to everything, you can use the drop down at the top to search good first issues. Those are issues we identified as good for people who are new. If you're new to everything, we have a guide on contributing to Circuit Python using Git and GitHub and we're always available on Discord to help out. So don't let that part of the process intimidate you. In terms of library Pi PI weekly download stats, across 310 libraries we had 80,564 downloads and the top 10 library downloads are in the notes. In terms of library updates in the last seven days, we had one updated library Circuit Python, a different Circuit Python ESP32 SPI and no new libraries. That's what I've got. Alright, thank you Kat and Dee. Alright, next up is the Blinka section by maker Melissa. Melissa, I'm not able to hear you. Okay, so I will go, why don't I just go ahead and read it? Is that okay? So just to explain about Blinka Blinka is our compatible later for Circuit Python and single board computers like Raspberry Pi. So it's really, you'll see and you'll see by that as we go along. So in the past week there was one full request merged by one author to Shui and one reviewer was maker Melissa. There are four open full requests for the Blinka related libraries. There were zero closed issues by zero people and two open by two people. There are 98 open issues currently. And last week there were 8,074 Pi Pi downloads which is impressive. And there were 6,409 Pi wheels downloads in the last month. Currently we are at 119 supported boards. So that's Raspberry, all Raspberry Pi boards and many, many other kinds of boards. So if you're running Circuit Python, you can run what looks like Circuit Python on a non Circuit Python board by using the Blinka compatibility layer. Works really nicely. Alright, next up is the hug reports section. Hug reports is a chance to highlight folks in the Circuit Python community and beyond for doing awesome things. I'll start and then we'll go down the list which is an alphabetical order mostly to give everyone a chance to participate. If you are text only or missing the meeting I'll just read your notes when I get them in the list of notes. So starting off here is me and I'd just like to thank Scott and Jeff for this triage meeting we had last week for 820 and 8XX issues. So we cleared out all the 8XX issues pushed a bunch forward to 900 or long term or said this is we can't reproduce this and we assigned all the 820 issues and they're all finished off as we'll find out later. So thanks a lot folks. Okay, next up is DJ Devin 3 who's text only so I'll read there. Thanks Fomy Guy for a great display IO deep dive and ended up with him stumbling across a display IO.shakesbug rabbit hole and a really neat git bisecting bug hunt. Okay, and next up is Fomy Guy. Right, thank you Dan. Hug reports this week for me thanks to Tyeth who helped me in figuring out how to use some of the older ways to update sub modules when I was having some trouble. Hug report for DJ Devin 3 for starting up the process on migrating the newer requests API examples to start using settings.toml file. Thank you to Mark Gambler for helping me troubleshoot some errors that were related to sub modules as well as for taking a look at the Shapefix PR and a group hug to everybody. Thanks. Okay, thank you. Okay, next up is Jeff. Hello there. So this is there we go. My hug reports for the week are a group hug one for you Dan for the 8.2 release candidate. Thank you to the more Lady Aida for continually furnishing interesting projects for me to do. To Scott and Lamar for bringing a little idea I had all the way to being a product in the store and that is the Sorrel Mountain grid. And finally to Scott for offering to let me get in the USB weeds with him after my Teddy Ruxpin work is wrapped up. And that's what I got. Alright, thank you and the cat is next. Alright, so first up a hug report to you Dan for help with code on a personal project and for looking into and getting in a Shapefix for a bundle release issue over the weekend. To Foamy Guy for looking into the same bundle release issue before I realized that Dan was working on it at the same time. To Jeff for a lovely chat and a group hug to all. Alright, and I'll read maker Melissa's. Okay, I just turned the changes setting on there. New computer syndrome. Okay, yeah. Anyway, so I'm going to give a hi to Blitz City DIY for by adding the updated seven segment backpacks and parts so quickly and a group hug to everyone else. Okey-dokey. Alright, and next next up is Scott. What's going on here? Okay, first hug to Lady Aida for testing the web workflow and to maker Melissa for filing issues and following up with fixes on her end. Hug to Jepler for the pipe wire tip. I complained about having audio sync issues and the pipe wire thing caused me to look at Arch and Arch is like a rolling distribution so it never like kind of moves over wholesale. So I finally fully switched and removed pulse audio and my audio is synced again and it's so, so nice. So thanks Jeff for the tip about that. And then lastly hugs to Katnie and Todd Bot for talking Circuit Python on podcasts. I listened to Todd Bot's podcast over the weekend and it was always interesting to hear other perspectives on Circuit Python. Alright, thank you Scott. And lastly I'll read Todd Bot's reports. Thanks to Jeff for looking at a perennial, usually USB triggered audio glitch and offering a possible listening of it. Okey-dokey. So next up is status updates. Let me add a timestamp. I accidentally reset my timestamp in computer so it started over again to zero. So my timestamps will be manual. So what is status reports? It's our time to tell folks what we're up to individually. I'll start and we'll go through the list as before in high reports. When I call on you, you could take a couple of minutes to talk about what you've been doing since the last meeting and what you'll be doing until the next meeting. This is also an opportunity to provide tips and tricks relevant to what people are working on. If the discussion becomes too long for status updates, we can move it through the in the we need section. Okey. So starting out I'll start out. So last week I did some pull requests for the remaining A2O issues. They were basically documentation updates. And I moved a couple of other A2O issues to the future because they weren't really critical for A2O. I released A2O RC0. That's released candidate zero. Since then there are a couple of new fixes and some translations and things like that and so we'll update that. I'll include them in a final release or make it RC1. Maybe I'll make it RC1 later today so that the transition from RC1 to the final would be nothing. And maybe we could do a final on Wednesday. As usual if you have time please try the RC0 release because we don't know if there are some major regressions on some of the boards that I didn't smoke test. Now I also made a preliminary board definition for the toy hacker bar board. That's the stuff that I mentioned at the top where we were hacking. Lady Aida was hacking the baby Einstein toy and it's running circuit python and what's nice is that it took about 20 minutes to make a new board definition. That's how well it can be done in circuit python. I did some more micro python merging last week to merge in version 1.19.1 of micro python but later the A2O took over for me. So as I mentioned this week I'll probably do A2O releases and then go back to micro python merging and try to get that ready for checking the domain. Okay next up is Jeff. Hello again this time I haven't lost my spot so that's nice. Last week was primarily spent on the Teddy Ruxpin project and right now I have a script that can take in mouth movements that are generated by the rhubarb software which is a free github software for making animations that we repurposed for this and take in audio created by running the audio codec on an android phone and then add in customized eye movements so that those LCD eyes are doing something useful. So this is pretty much feature complete for what Lamor is looking for except that the eye animations were running way too often in the demo that I did last week on show and tell. Basically what I have left to do on that is to make the eye animations occur less frequently and document it just a little bit in preparation for handing off to a guide author who will probably ask me follow up questions. Over the weekend and then today I had this audio problem on the RP2040 on my mind I realized the cause had to do with how RP2040DMA descriptors work when you chain to them without having reset the DMA address and that explains what we were seeing or what we were hearing. And so then the question becomes what do you do and what I did was made the internal flash write always pause all the audio channels before it started and that makes the problem largely go away and Todd Bot gave that stamp of approval in his testing so I marked it as ready for review. So this week the other stuff that I want to do is test the Pico DVI library updates against the run CPM project that's not a circuit python thing but I do want to help out Phil B by checking out his changes since I'm the one who instigated them. And then the other thing I'm doing is making up a USB host BFF that you could put on a QDPI RP2040 to add USB host capability in a very small form factor and in fact that board is small enough that the A connector won't fit so it will probably use a micro B connector and require an OTG style cable I'll maybe have those manufactured and give it a try but also while just getting started Adafruit store has a USB A to header pins or jumper cables that I'll be digging out for use this is not needed this is just a would be nice and that's what I will be up to thank you. Ok thanks Jeff. Next up is DJ Devin who's not here so I'll read theirs submitted first PR to start the process of importing all Adafruit requests and examples from secrets.py to settings.toml going slow with the process intentionally only submitted one example PR to ensure I'm doing everything correctly before going forward I'm starting with the 10 examples in the library I contributed which start with requests underscore API underscore that do not have learn guides associated with them. I don't expect to get into examples which require learn guide changes for a few weeks and will notify catting when I get there realistically a month from now this is part of a 9.0 milestone so plenty of time to do it in phased steps. Next up is FullyGuy Alright thank you Dan. Status reports for me this week I have continued working on the ESP32 spy socket compatibility. I've done a boatload of extra testing since last week submitted a few more PRs in other various related libraries like WSGI and the request library that will go along with the ESP32 spy one During that testing I also tried out the Wizznet library using the changed request library from above and in doing so noticed an incompatibility over on that side in the Wizznet socket that was different from the way that the CPython and now the compatible ESP32 spy sockets behave so I submitted a PR to fix that and tested it out with various different examples and while working on that so we're kind of went down the wifi rabbit hole a little bit but while network rabbit hole I guess I should say but while working on that one of the things I wanted to test was HTTP server library I found there was no example for that that I was able to find at least so I created one of those that uses HTTP server over ethernet in order to run your server so I submitted a PR with that as well The other major thing that I worked on that wasn't in the network stuff was some display I.O. examples that draw various different pride flags I think I ended up with about 10 different examples that all draw different pride flags and then all use different APIs and functionalities within display I.O. so it kind of serves as example code showing how to do a bunch of different stuff but obviously also showing support with the flags for pride month while I was working on that one of the flags I was trying to do was with display I.O. shape which is one of the probably lesser used APIs and I discovered that that was no longer behaving how it used to track down where it changed and figured out how to get it fixed and submit a PR for that to get back to normal behavior and that's what I have been up to. Thanks. Okay, thank you. Alright Next up is Katni Hello again. So last week published the I2S BFF guide, finished the DVI Feather review update. Lamour had done a final review on it and I hadn't gotten back to updating it and started the gamepad QT guide. This is a new board that is a really connectable gamepad with six buttons and a joystick on it. I updated the seesaw library to support it. Submitted the Circuit Python seesaw library, submitted a Circuit Python demo to the library along with the update and the Arduino code is already set to go and went through trying to fix a bundle release issue over the weekend. This week finished up the gamepad QT guide Next up is the Stema Audio amp. One of my pressing objects has an errant ground pin on it. It's not a high priority, but it is on my list. Personally, simplified the numpad build I'm doing because extending the micro B port from the NRF Feather to the back of the case was turning into a bit of a dongle nightmare. It's now a Feather RP2040 standalone with the matrix wired directly to it, oriented so the USB-C port is already facing the back and the reset button is broken out to a button next to the cable on the case. So after rewiring this at least three times, I have no concern about soldering up a new V2 when the time comes. Tested the code, everything is working as intended. My wife is working on the case, which is apparently taking longer than expected, but the design is basically done and it looks great. Learned that Mac keyboards with numpads do not have num lock and sending a num lock key to macOS does absolutely nothing. And finally I soldered up a QTPi RP2040 and a NeoKey BFF to build a standalone numpad enter key because it turns out I used that even more than the numpad overall. Once it has a case that'll live next to my keyboard on my mouse pad for happy fun thumb use. And this will come after the numpad is finished and also there will be a guide for the enter key. And that's what I've got. Okay, thank you. Okay, next up we have maker Melissa. So last week I finished updating the RGB Matrix Gradle game learning guide to work on with I2S Audio. I updated the 1.2 X7 segment LED backpack guide and I'll fix the tab key and some hotkeys of CircuitPython code editor. So I'm going to continue working on some of the CircuitPython code editor bugs and need to update the missing boards on the network. Okay, thank you, Melissa. Okay, and Scott is up next. Alright, hello. I've been in USB host land. I started in the IMX RT and I've gotten it somewhat working like I showed it on Chantel but it's still kind of flaky. And I suspect it's due to missed cache invalidations and cleans which is really fun to run down. So what I did is I started working the RP2040 USB host support which it will be nice to have another implementation to compare to and it's one that we know we want to do so it's fine to spend the time on. It has its own challenges because it's using two PIOs and running the interrupt on the multicore so I've made pretty good progress and I'm still debugging it. Kind of relatedly, my brain's been thinking a lot about how the linker could do a better job of moving code that we want to say. Run this code without when Flash is busy. I've been thinking about that and hacking on LLVM to make it do that. And then I've also been trying to figure out why code size when compiled with LLVM also known as Clang Clang is the command you actually run. Why code size is larger because if I made LLVM work I would probably want to switch this whole hog over. So I've been plugging that kind of in my like I need to break time. So that's the main things I'm doing. A late thank you to FOMI guy for making the ESP32 spy socket CPython compatible. That's something I wanted to do ages ago and running all these issues down and doing all this testing is exactly why I didn't do it. Thank you FOMI guy for doing that. I really appreciate it. It's great to have things be all compatible. And then just scheduling note for me. I'm out Thursday, Friday and then Monday, Tuesday for a long 4th of July weekend which is Independence Day here in the US. In addition to that next week, Ari, my son is starting daycare. So we're going to figure out that schedule and it may be a bit fragmented next week as well. So in the end it'll be good because he'll be going to daycare but we're in a transition phase the next couple weeks so I may be around off and on a bit more than I normally am. Okay, thanks Scott. Okay, next up I'll read Todd Bott's contribution. Worked on supporting some of my MOSI experiments, tools to synth toys, to synth IO, it can be done and sounds pretty great. Examples up on my YouTube and there's a link in the note stock. And that's it for status updates. Finally we have in the weeds and right now that's probably just a logistical question. Jeff you want to go ahead and pose that question. Sure, I realized that I think it's next week is, as Scott was mentioning, the US national holiday on Tuesday the 4th. And I just wanted to find out if anybody else was going to be out on Monday the 3rd and if so maybe we should move the meeting possibly to Wednesday or we can still hold it on Monday. All right, Ketney says I will be out but I don't think moving it to Wednesday makes sense. We can just have a small meeting. Let's see, I guess Liz isn't here today to touch base with her and make sure she'll be here. If the consensus is not to move it and Liz can't make it I can run the meeting and it'll probably be a small group. Will you be around Dan? I will be here but we have a house guest and we're going to have a barbecue the next day so it might be a light day. For me, I mean we could cancel it so that's a possibility too. Well I think it would be best if we could make a decision now. I mean if it's likely to be a low attendance meeting we should probably just skip it and remove it from the calendar. Yeah, because we've done that around the December holidays so I think we could just do that. All right, Ketney also says cancelling is what she would suggest. Yeah, that's fine to me too. All right, I will go edit the, after this meeting I will go edit the calendar ICS to reflect that and then Dan you'll create the note stock with the correct date. That'll be the 10th then, yeah. All right, thank you. Thanks a lot everybody. This has been the Circuit Python Weekly for June 26th, 2023. Thank you to everyone who participated whether live or by contributing notes or even by watching our videos or the podcast. If you want to support Adafruit and Circuit Python and those of the work on Circuit Python consider purchasing from the Adafruit shop at Adafruit.com. We will release a video of this meeting 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 to the newsletter. There is no meeting next week. There will be a meeting in two weeks, Monday, July 10th, 2023. And also to remind you this meeting is held on the Adafruit Discord. You can join by going to adafruit.it slash discord. If you want to know more and be notified of scheduling and ask to be added to the AdSign Circuit Python East as a role on Discord. So we hope to see you all in two weeks. Thank you everybody. And I will stop recording.