 Hello everyone, this is the Circuit Python Weekly for August 14th, 2023. This is the 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. 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 anytime 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 those notifications, we ask us to add you to the Circuit Python Nistas Discord role. There's a notes document to accompany the meeting and recording. The final notes document includes timestamps go along with the video so you can use the doc to skip around and view parts of the video that interest you most. The meeting tends to run 45-60 minutes. After each meeting, we post a link for the next meeting notes document to the Circuit Python Dev Channel on the Adafruit Discord. The 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. The second part is the state of Circuit Python, libraries and Blinka. This is a quantitative overview of the entire document. The second part is the state of Circuit Python, libraries and Blinka. This is a quantitative overview of the entire document. This is a quantitative overview of the entire project. It's a chance to look at the project by numbers separate from our status updates. The 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 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. The fifth part is in the weeds. In the weeds is an opportunity for more long form discussions. These discussions can come out of status updates or be something you've identified ahead of time as too long for status updates. And that covers how the meeting will go. With that, we'll get started with community news. And I think the biggest news is Circuit Python Day 2023 is nearly here on August 18th. That is this Friday. The day highlights all things Circuit Python and Python on hardware. And there is a big list of events. It's going to be going from 10 a.m. till probably 9 p.m. Eastern. There's going to be special streams, special panels. Show and tell will be happening at 7.30 p.m. that night, followed by Ask an Engineer. And programming note that if you normally tune into 3D Hangouts or John Park's workshop, those are also happening on Friday as well. There will be a special stream from Maker Melissa, a special Circuit Python Day game stream with FOMI guy. It's going to be action packed. So stay tuned to the Adafruit blog and Adafruit social media for links including YouTube. Interaction with shows and progress will be held on the Adafruit Discord server where this meeting is taking place right now. And if you're working with Circuit Python, tag your projects with hashtag Circuit Python Day 2023 on social media and Adafruit will look to highlight them. Next, Nicholas Tolarvy and Fabio Pliger give an update on PyScript. One of the most exciting initiatives in the Python space these days is PyScript, which enables Python running natively in a browser with consistent support from the folks at Anaconda. This project has been making solid strides since its initial release. On the latest episode of Talk Python, host Michael Kennedy catches up with Fabio Pliger and Nicholas Tolarvy to see where they are with the PyScript progress. And then Project of the Week was the ADA. The AI display assistant is a beginner-friendly project for using chatGPT on an ESP32. This project uses chatGPT and an Afruit MAGTAG and ESP32 with an eInk display to display interesting facts and inspirational quotes. You can adjust the refresh frequency to whatever frequency you want or need, and this was seen on Haxter.io. This and more is available in our weekly Python for Microcontrollers newsletter, which goes out via email on Monday mornings. That was this morning. 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, tag AnnEngineer on Twitter with hashtag CircaPython, or email cpnews at AdaFruit.com with a link. And that is the community news. Next up is State of Circuit Python, Libraries, and Blinka. This is a quantitative overview of the entire project. It gives us a chance to look at the health of the project separate from our status updates. We'll talk about the project overall, then separately discuss the core, Libraries, and Blinka. So first up overall, there were 17 pull requests merged by 16 authors. There were eight reviewers and seven closed issues by six people, ten opened by ten people. And now we will go to Dan for the core. Okay, thanks. Okay, in the last week or so, we have eight pull requests merged from nine authors. Jeanne Zoiburg is a new name, maybe. Thank you, everybody. Three reviewers. There are now 24 open pull requests. Some of them are really old and some of them are drafts that are blocked on other things, but we try to keep it under 25. 25 are under. There were five closed issues by four people and four opened by four people. So we're sort of almost even. There are now 683 open issues. We've got six acts of milestones. 8.2.x has zero open issues. 9.0.0 has 48 open issues. A lot of those are just being deferred until there are changes that we made in 9.00 as we need to. 22 open issues labeled as libraries. 593 open as long term. 15 labeled as support. We're not sure if they're actually bugs. Eight issues are dependent on third party things, so we're blocked on those. And two issues need to be triaged. They haven't yet been assigned a milestone. So that's it for the core. Thank you, Dan. Next we'll go to Katny for the libraries. Thanks, Liz. So the section applies to all of the Adafruit Circuit Python libraries, as well as all of our Circuit Python libraries in the community bundle. So that we had across all those repositories, nine pull requests merged from eight different authors, a few of the new names mentioned earlier, and six reviewers. The oldest one that was... There were two older ones at 293 days and 235 days that were closed, which were great. The rest were much younger. And it leaves us with 47 open pull requests, which is also down at least eight from the last time that I recall it being a little bit higher. So that's excellent to see. And we had two issues closed by two people and four open by four people, leaving us with 631 open issues. 19 of those are labeled good first issue. If you're interested in contributing to Circuit Python on the Python side of things, check out circuitpython.org slash contributing. You'll find all of this information and more, including a list of open pull requests and a list of the open issues. If you're interested in reviewing, check out the open issues, leave a comment, 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. See if anything interests you, leave a comment and let us know you're working on it. If you're new to contributing to open source, we do have a guide on contributing to Circuit Python using Git and GitHub. So don't let the process intimidate you. We want to make sure that you can contribute in a way that works for you. We're always available on Discord as well to help. In terms of library PyPI Weekly download stats, we had over 312 libraries, 138,266 PyPI downloads, and the top 10 are listed in the notes if you're interested. We had one new library in the last week, USB host descriptors, and a couple of updated libraries that I will not read off, but they are in the notes. That's what I have. Excellent. Thanks, Katni. Next we'll hear from Melissa about Blinka. Hello. Nice here. Okay. Blinka is our Circuit Python compatibility layer for MicroPython, Raspberry Pi, and other single board computers. This week, we had no pull requests merged. There are currently five open pull requests amongst the repositories. There were zero closed issues and two open by two people. There are currently 102 open issues amongst all the repositories, and there was 11,694 PyPI downloads in last week, 10,248 PyWheels downloads in last month, and we are at 119 ports. And that's it. Thank you, Melissa. And that is the state of Circuit Python, the libraries, and Blinka. Next up is Huggerports. Huggerports 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 alphabetically to give everyone a chance to participate. Next only or are missing the meeting, I'll read your notes when I get to them in the list. So I will start. I would like to give a hug report to Carter for many rapid PR reviews last week as I was working on a product guide and a group hug. And then next we'll hear from Dan. Okay, thanks. Thanks to Scott for last Tuesday we had a detailed discussion about the MicroPython merge from MicroPython V1.19.1 into Circuit Python to catch up, and that was extremely helpful and sort of set me on a good path to getting toward the end of the merge. And thank to Jeff, who this morning diagnosed a bunch of problems in the draft PR that I submitted last night. I knew that it would break, but I wasn't sure what the fixes would be and he had already fixed up a bunch of things by the time I got up. So thank you. And that's it. Thanks. Next I'll read for David Glauze, text only. A hug report to TAC, who's a tiny USB author for the great contribution to Circuit Python, ease of use, and now USB host things, to Vladimir Smitka for the PicoPad support in Circuit Python, and educational content he is working on, and a group hug to the Community and Learn Guide writer-reviewer. I have been and am still learning a lot about software development, get usage, automation, thanks to you all. And then we'll hear from DJ Devin. I have a hug for Jepler for help with a syntax, translating a syntax snippet about shifting and truncating binary and hex values. It was a really neat little snippet of code that just blew my mind. And I'll echo a big hug to Scott for his deep dive this week. It was an excellent deep dive. Thank you. And a group hug. That's it. Great. Thank you. And now we'll hear from Fome Guy. All right. Hi, guys. Hi, reports for me this week. Thanks to Katny, who's been doing lots of great work organizing Circuit Python Day. Hi, report for Michael Melissa, who added some more new functionality and image load to support even more types of RGB images, which is really cool and a group hug for everybody. Thanks. Thank you. And now we'll hear from Jepler, who I see is adding even more hugs. I am. You know, as people acknowledge things, I'm like, oh, yeah, that's kind of important. So I just want to echo their words. Yeah. So first up, Dan, thank you for the merge. I know it was a long time that you were working on it. And I'm glad that it's reached this milestone of being there for GitHub to chew on until some of the remaining problems. To Katny for a wonderful chat last Friday, just hanging out some friend time. I'm really pleased to have made some friends within this community who are really dear to me. Todd Bot, thank you for sending me one of your PCB designs. It is a synth, naturally, and that's going to come later this week. I'm excited. Katny, thank you for organizing Circuit Python Day. And David, thank you for back porting that board definition to Circuit Python 8. As you identified that could be really helpful for folks who have the board, for instance. And that's what I've got. I'll think of more. But yeah, that's for now. Excellent. Thank you. And now we'll hear from Katny. Hello. So back at you, Jeff, for a wonderful chat. I have a hug report to Todd Bot for a synth hardware care package with one thing that I was expecting and three surprises. There was all sorts of fun going on there. To Paul Cutler for hosting a synth IO panel on Circuit Python Day. This is a bunch of people hosting stuff on Circuit Python Day. To Meagher Melissa for hosting a stream. Foamy Guy for hosting a stream. To Jeff and Dan for joining me in a chat. To John Park, Noah, and Pedro for hosting their weekly streams. And to John Park for taking on doing the introduction. And to Scott for hosting a stream as well. And a group hug. Great. Thank you. Looking forward to all that Circuit Python Day content. And now I'll read for Kmatch, who is text only. To Jepler for taking on the challenge of the ESP32S3 dot clock displays. Can't see what's possible for these big touch screen displays. And hugs to all. And now we'll hear from Meagher Melissa. Let's see. I wanted to give a hug to Jepler and Pinker Dragon for laying the groundwork for the Matrix Portal S3 and Bitmap Tools. And a group hug to everyone else. Great. Thank you. And now I will read for Mark. Hug report to Katni for the Circuit Python Day organization. Hope to attend some of it. And a group hug. And then we'll hear from Scott. Hello. First, a hug report to Microdev, who did a ton of work to do an ESP IDF 5 update for Circuit Python. I'm dusting that off and it's been awesome. It's a huge boost. So thanks to them. Thank you to Katni, like other folks have said, for organizing Circuit Python Day on Friday. Hug to Dan again for the 119 merge PR. And lastly, also to David for some board back ports. Great. Thank you. And that was 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. What 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. I'm going to provide some tips and tricks relevant to what people are working on. If a discussion becomes too long for status updates, we can move on to in the weeks. With that, I'll get started. So I've been working on a few product guides, PC Joystick seesaw breakout and the Arduino pages for the Metro RP2040. I had never actually used a PC joystick before, so I had to procure one on eBay for testing, but luckily it worked really well and I'm hoping I maybe will do a project with it. I've also been putting together some code for upcoming project collab with Noi. We are redoing our MX MIDI guitar project to be a synth guitar. We're using the prop maker feathers since it has the onboard I2S amp and the LIS 3D H accelerometer, which we'll use for some effects controls. And then we'll hear from Dan. Okay, so on Friday I released circuit byte on 8.2.3. This is just a bug fix release. The only changes were a protomatter update for RGB matrix. If you're using like matrix portal M4 this release is helpful for certain RGB panels. It's not needed for matrix portal S3, the new board. And there was also a fix because of some changes in the read-the-doc site. We had to change how we generate that documentation. Thanks to Jeff for that. As I mentioned, I discussed the MicroPython merge with Scott. And we actually talked about backing out some of the changes that we made over the years in upstream. Mostly having to do with something called long-lived storage. Which was increasingly in conflict with stuff upstream. So the result of that is that after working on it for several more days I finished most of the merge and it was at a point where most of the builds worked. I admitted a draft PR and wrote it up. You can find that if you want in the PRs. And so there's a long discussion of a brain dump of what I worked on during the merge. Jeff looked at this this morning and suggested a bunch of changes and I incorporated those or equivalent changes and a lot more things are working now. There's the things that are the tests are still breaking but I think we can figure that out. There are a very large number of file changes a large number of them of recent changes just have to do with formatting but there are also a bunch of really significant changes further back. And as I mentioned we're going to see about taking out this long-lived storage thing which we've had for many years it reduces fragmentation which is especially needed on small words like Circuit Playground Express and we want to see how badly taking turning this off whether it breaks too many things on Circuit Playground Express there are ways to put it back in that are less in conflict with the way storage management now works in MicroPython. So we'll look at that when and if the time comes. Okay, that's it. Thanks Dan. Now I'll read for David Glau's text only so CircuitPython, PicoPad and GitWeek contacted Vladimir Smitka see if he could do a back port PR for PicoPad support into the 8.2.x branch decided to do it myself and learn about Git Cherry Pick for back porting and the proper way to take PRs from one branch and apply it to another branch keeping the original author accredited. Checked the 20 to 25 layers boards in CircuitPython.org downloads and that together with PicoPad the Metro ESP32-S3 was the only other board about a stable release download option. Made a blind, I don't have the hardware to test back port PR of Metro ESP32-S3 to 8.2.x branch so that if there is an 8.2.4 it could contain both boards. Also found out that what I did the previous week for the DS10-X20 and photo cell sensor was not needed since Vladimir has a lot of educational content in CircuitPython with code covering these sensors. And then in non CircuitPython Feather-RP2040-USB host week. Tested the latest release and feature of J. Fedor-2's HID Remapper project that is a really cool project. Finally tested my IntelliQ key membrane with Feather-RP2040-USB host and firmware from TAC. Found an uppercase lowercase bug in one of the overlays and made a PR, now approved without installing Arduino but tested the result with the resulting artifact. And now we'll hear from DJ Devin. Thank you. This week I started working on a matrix portal S3 project with two matrix panels and I want to stack them vertically. Quickly found out that the included IDC cable isn't long enough to reach if you vertically stack them. Had to jump on Digi-Key, try to find the right ribbon cable out of the tens of thousands of IDC ribbon cables. I think I got the right one and ordered 10 feet so I could just cut and splice into the existing connectors because they just kind of crimp on. And then Jebler just told me that I've been doing it wrong and there's actually a way to easily use the included IDC cable with the way that I want to do it. You just have to invert the second row and that should work. I didn't realize that would work but thank you very much Jebler. I will definitely be working on that now. I'm working on a jewelry box birthday gift for my sister that incorporates a graph display of Fitbit heart rate data. The TFT will be mounted inside the lid and when opened will play a song and display the last 15 minutes of heart rate data on the display TFT display. My sister will have a dedicated display to see my mom's heart rate data anytime she wants. All she has to do is input her wifi details into settings.tomo and there you go. Nice birthday grid. That's all I got. Cool. I've been enjoying seeing what you've been doing with the Fitbit stuff. Next we'll hear from Fome Guy. Thanks Liz. I just messed up my stuff. There we go. Over the past week or so I knocked out a few more of the older library PRs and I've got another couple lined up to look at this week. I probably think I spent the most time over the last week was wrote some scripts to compare a full list of the PIDs that are in the different store against all of the data that is inside the Oshawa database to try to find the ones that are not in there yet. And then once I had that list of all the ones that are not in there yet to go through it and find the ones that are kind of like quote unquote real that actually need to be submitted because lots of them are like variations of different hardware that's already there or other third party stuff. So I've been working through that list and just wrapped it up actually before that's nice. And then the other stuff that I got into over this past weekend on the stream is started prepping a little bit for the game that I'm going to make on stream on circuit python day. So far I've built out a test map and started working on some helper classes that will get used inside of that game. And so I will be continuing on with mostly the same things this week. Thanks. Cool. Thank you and thank you for working on Oshawa stuff and looking forward to your stream. Next we'll hear from Jepler. Hi again. So my main activity over the last week was to continue to work on the dot clock displays. It's still not actually doing anything yet, but I'm getting really close. Most of the register setting code is implemented. Most of the pinboxing code is implemented. The main thing that's left is code to do the actual DMA of the data to the display, which is always a big bug bear for me, but I'm getting close, I think. And like Dan discussed, I've been helping out with problems in the MicroPython merge. We solved several items together already this morning. Sadly, I seem to be coming down with a cold. My spouse is like a day or 36 hours ahead of me and it may be minor or it may knock me out for part of the week. So we'll just see how it goes and yeah, that's what I'll be up to. Alright, I hope you're able to rest up, Jeff. Next, we'll hear from Katny. Alright, so last week and earlier today, published the MetroRP 2040 guide, took care of some guide feedback on the PropMaker Feathering Guide, which reported some code that wasn't working among some other things and also related a GitHub issue where someone is reporting the same thing. Also wrapped up a few other GitHub issues that I had been assigned that have been sitting around for, you know, years. They're gone. So this week, Friday I'll be on Paul's panel chat and then also chatting with Jeff and Dan. Jeff's cold willing as well as coordinating folks throughout the day and during the week. I need to write up the CircuitPython day intro. It is going to be streamed by John Park but I promise to write it up. So I have to do that and then in between all of this, I will be writing the MetroESP32 S3 guide, which is in the shop coming soon. So hopefully that guide I actually don't know the ETA and what it's supposed to be in, but the guide will be done within a week. So within this week, I guess. So if it goes into the shop sooner, you might have to wait, but it will be available very soon. That's what I've got. Cool. Thank you. Next we'll hear from maker Melissa. Hello. Let's see. Last week, I worked on, I finished the alpha button changes for the CircuitPython core board. And I submitted a PR for that. I added the field compression support to the image load library so you can now load images created with GIF or GIMP, I mean. I updated the matrix portal M4 and S3 simple test. In fact, we reset images and put them in the respective guides. Worked on finalizing code for the message board project. And I started a guide for the message board. This week, I'm going to get the message board finalized in PR and I'll just get it PRed, I guess. I'll work on the guide for the message board and I'll do my CircuitPython live stream on Friday. And that's it. Looking forward to that project and your live stream. Thanks. And last we will hear from Scott. Hello. Thanks Liz. I'm going to be kind of bug hunting for USB host back and forth with TAC this week. He's out last week because he got sick. I'm doing a demo thanks to some code from ToddBot that is a USB host MIDI keyboard plus a synth IO. And I've got a little bit of initialization code to write for the 1060 EVK but I'm kind of excited to get that working end to end. And I'll be testing some fixes from TAC through that. And then on top of that, I'm also doing an IDF-5 merge. So I'm updating MicroDev's PR and starting with that. And that's been super helpful, like I said. So we'll be updating the IDF-5 and then I'll follow up once that is in with an update to 5.1. I have a PR out to the Black Magic project which is a debugger sort of thing. And they gave me feedback and I haven't got back to them on that. So I need to do that as well. So I'm updating for Circuit Python Day, DeepDive starts a half hour later than normal and then next week, Monday through Wednesday, I'm out. So it'll be a short, super short week for me next week. But having vacation with family. So that'll be good. Great. Looking forward to USB MIDI host and enjoy your vacation. And that was Stass Updates. Next up is in the weeds. We're here for long form discussions that either come as Stass Updates or the 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 waiting around to see if anyone has topics. It looks like today there aren't any topics. So, I think with that we're going to wrap things up. This has been the Circuit Python Weekly for Monday, August 14th, 2023. Thank you to everyone who participated. If you want to support AidaFruit and Circuit Python and those of us that work on Circuit Python, consider purchasing from the AidaFruit shop at AidaFruit.com. The video of this meeting will be released on YouTube at youtube.com slash AidaFruit and the podcast will be available on major podcast services. It will also be featured in the Python for Microcontrollers newsletter. Visit AidaFruitDaily.com to subscribe. The next meeting will be held next Monday as usual at 2pm Eastern, 11am Pacific. The meeting is held on the AidaFruit Discord which you can join by going to AidaFruit.it slash Discord. To be notified about the meeting and any changes to the time or day, you can ask to be added to the Circuit Python NISAs role on Discord. We hope to see you all next week. Thank you everyone.