 Okay, hello everyone. This is the Circuit Python weekly for November 21st, 2022. This is time of the week where we get together to talk about all things Circuit Python. I'm your host, Liz. I'm sponsored by Adafruit to work on a variety of things. And this is also the first time I will be hosting a meeting. So thank you all for allowing me to host. What is 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-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 Notestock, there's a link to a calendar you can view online or add 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 Python NISO's Discord role. There is a Notestock to accompany the meeting and recording. It's pinned in the channel if you need to access it. Notes document contains timestamps go along with the video so you can use the doc to view only the parts of the video that interest you most. The meeting tends to run 45-60 minutes, so this gives you the option to skip around. 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, find the latest docs so that you can add your notes for the following meeting. If you wish to participate but cannot attend, you can leave hug reports as updates in the document for us to read during the meeting. And this meeting is held in five parts. First part is community news. This will look at all things Circuit Python and Python on hardware in the community. It's a preview of our Python on microcontrollers newsletter. Second part is status Circuit Python, libraries in Blinka. This is a statistical overview of the entire project. It's a chance to look at the project by numbers separate from what we're all up to. And third part is hug reports. Hug reports an opportunity to highlight the good things folks are doing, taking time to recognize the awesome folks in our community. Fourth part is status updates. Status updates is an opportunity to sync up 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 last meeting and what you'll be up to over the next week or until the next meeting. Fifth part is in the weeds. And 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 run. And with that, I'm going to go into community news. So we have the Python on microcontrollers newsletter. We're also very close to 10,000 subscribers, which is very exciting. And some highlights for this week's newsletter. Mu editor version 1.2.0 is going to be released, has been released rather. The Mu team has released a new version of the Mu Python editor. This release includes snake mode, fixes some minor bugs, addresses some usability gremlins and adjusts some capabilities to make things tidier. Personally, I enjoy using Mu, so I'm excited with that. Project of the Week is a general purpose chip debug interface using Serger Python, that was from Macedon. And then there's going to be a new micro Python course coming soon from Kevin McAllier, and he is looking for beta tester. So if that's something you're interested in, you might well look into that post in the newsletter. The microcontrollers newsletter goes out via email on Tuesday morning, so you can visit Adafruit daily to subscribe to the newsletter. And 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 help a PR on GitHub, tag Ann at Ann underscore engineer on Twitter with hashtag SergerPython, or email cpnewsatadafruit.com with a link. And I'm just going to quickly put the link to the newsletter into Discord. And up next, that's good for community news. Next up is State of Serger Python, Libraries, and Blinka. So for State of Serger Python, there were 33 pull requests merged, 20 authors and 10 reviewers, and some new folks that were contributed were S-OL, D-O-M-D-F coding, Aaron Selinkus, and Jingle Man's Sweep. There were also 23 issues closed by 13 people and 21 opened by 16 people. And then up next is going to be the core, and I meant to ask who was going to be reading the core. I can read it, if you like. That'd be great. Thank you, Dan. So in the last week, there were 20 pull requests merged by 12 authors. I think I recognize those people so far. And there were five reviewers. There are 27 open pull requests. About half of these are drafts, a third to half of these are drafts. So it doesn't mean that we're just sitting in our hands or anything. There were 12 issues closed by six people and 10 opened by eight people. There are 572 open issues, and those issues are classified in milestones. There are no issues in the 7.3.x milestone, so there's no really urgent bug we feel like needs to be fixed in the 7.3.x stable release. There are 29 open issues in 8.00. There are 15 open issues in 8.xx, which means post 8.00. There's one issue open in 9.00. That's probably just a reminder that we're going to make some change when we start on 9.00 development. Probably an API change. There are 20 open issues in libraries, 501 long-term issues. The port has four open issues, and there's one issue in third-party software that means we're awaiting something that we have no control over. And two issues need to be triaged and haven't been assigned a milestone. And that is it. OK. Thanks so much, Dan. Next, we're going to go to Catney for the report on libraries. Thanks, Liz. This section refers to all of the Adafruit Circuit Python libraries, which is everything that starts with Adafruit underscored, CircuitPython underscore, and a couple of extras like the community bundle and our cookie cutter. Across all those repositories, we had 13 pull requests merged by nine authors and nine reviewers. In terms of timing, most of those were only either a few down to zero days old, so we spent some time keeping up on new pull requests. And that leaves us with 141 open pull requests. There are some changes being made across the libraries, and that's why that number jumped so high since last week. Those, I think, are simple and should be merged soon. There's 10 closed issues by nine people and 10 opened by 10 people, so we are even this week with 591 open issues. We have 99 good first issues. If you're interested in contributing to CircuitPython on the Python side of things, check out circuitpython.org slash contributing. You'll find all of this information and more, including open pull requests and open issues. If you want to contribute by reviewing, check out the open pull requests. If you have the hardware, test it. If you don't, look at the code. Let us know if you see anything. Leave a comment that's always helpful. And after 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. If you're new to everything, good first issue is a great place to start. There's a guide on contributing to CircuitPython using Git and GitHub, and we're always available on Discord to help you out. We want to make sure that you can contribute in a way that works for you. In terms of library PyPI weekly download stats, across all the libraries, we had 256,320 PyPI downloads. The top library has 31,000 downloads to give you an idea. Some changes from last week. I see mini MQTT on this list of top 10 and mini QR as well. Most of the time, the top two or three are going to stay the same, but the rest of them seem to bounce around. So in terms of library updates in the last seven days, there were no new libraries, and there was a whole host of updated libraries that I will not read off, but they are available in the notes document, and that's what I've got. Thanks so much, Katni. Up next, we're going to go to Melissa for the update on Blinka. Hello, so Blinka is our CircuitPython 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, which I believe is down a little bit from last week. Let's see, there was one closed issue by one person and went open by one person, a leaving net of 85 open issues. There were 37,259 PI downloads in last week, 9,579 PI wheels downloads in last week, and we are at 98 boards. And that's it. Thanks so much, Melissa. Next, we're going to go to hug reports. Hug reports is a chance for folks in the CircuitPython community and beyond to recognize them for doing awesome things. I'll start and then we'll go down the list alphabetically to give everyone a chance to participate. If you're text-only or missing the meeting, I have hug reports in the notes document. I will read them off as well. So I'm going to start off by saying belated hug report. I missed the meeting last week to Scott returning from parental leave. Hug report to Katni for some good chats and feedback on guides and other work. We've been working closely together the past couple of weeks, and also a group hug. And up next, it's going to be Dan. Okay, thanks. So thanks to Jeff and Scott. We had a bug triage meeting last week for the remaining issues for 800. That was very fruitful. We moved some things out of there. We closed some things and we assigned some things and we said we have to scratch our heads off and things. So that's what we're doing. Thanks to Katni. We had a meeting to catch up on things, both work and social. That was a very nice meeting. Thank you. Thanks to Microdab, who's continuing to do PRs and reviews. And because of their time zone difference, we often get reviews overnight, which is really nice. Circuit Python is a 24-hour-a-day business. Thanks to Michal Pukuska, who's working on rewriting the Circuit Python HTTP server, something that I wrote in a big hurry when we were trying to make a hurdle clone. And they're reworking it completely, or not completely, but a lot. It's really helpful. And thanks to Antic Data for testing and for comments related to that. I'm really appreciating people picking up, working on these libraries, these network libraries, because there are people with a lot more experience than I do on this kind of thing. Okay. Thanks, Dan. Next is going to be DJ Devin 3. I'd like to give a hug to Neridoc, him, DeShippu, and Antic Data for troubleshooting a multiplexer I2C address conflict that I was having that dealt with seven-segment STEMO backpacks. A hug to JP for a really neat Ask a Bachelor episode that he had to do to fill in a time slot, obviously. He did a great job. A hug to Liz for hosting show and tell last week and the Circuit Python meeting today. Great job and good luck with your new Synth project. At, well, Scott, for letting me know I don't need a VID or PID for every personal board hack that I do. And welcome back from bonding leave. It is great to have you back. And Dan H for explaining that my understanding of the dead feed was incorrect and helping me figure out, get a little bit more. Very helpful. Thank you. Thank you very much. Next is going to be FOMI guy. All right, thanks. First hug. Thank you to you, Liz, for hosting the meeting and congratulations for hosting your first one. And thanks for joining the group of us. A hug report for DeShippu, Neridoc, and Scott for ideas, feedback, and discussion around the Display IO APIs that we talked about last week. A hug report for DJ Devin for working through the difficult OAuth and other issues in the Twitch API that made it a little bit more difficult than some of the prior ones. I think that's a great start for people to work from before though. And a group hug for everybody. Thanks. Thanks, FOMI guy. Next is going to be Jephler. Hello. I didn't write it here, but a big hug report to you for hosting the meeting. I also want to thank everybody contributing to the core of it, particularly Bill, 88T, and MicroDev. A hug report for picking up some items that need attention. A hug report to you, Scott, for diving back in and picking up the web workflow for Raspberry Pi Pico. And finally, a group hug. As many of us in the US are considering what we're thankful for, this community has been on my mind. Some of you I know well, some of you I'd like to know better. Let's keep on making the software that enables so many cool and lovely projects that we see weekly in the newsletter and beyond. And that's what I got. Thanks, Jeff. Next is going to be Katny. Thanks, Liz. First up, hug report to you for hosting this meeting for the first time. Thanks so much. Next, hug for Tammy makes things for a lovely chat and turning a hilarious joke into an actual project idea. To Dan for a wonderful chat, it was nice to catch up. To Liz also for reviewing my recent guides and finding things I missed, writing up the code for my two upcoming projects, multiple lovely chats, and last and probably the biggest hug for being so willing to help me in many, many ways as I've been struggling lately. You are always supportive, positive, and provide excellent suggestions and feedback. To my dad for coming out this past weekend to guide and help us through putting down 400 pounds of rubber flooring into the basement office. To everybody I missed and a group hug, this community never ceases to amaze me. I joined mid 2017 and I am incredibly grateful for both my experience and the community itself have evolved. Thank you all for being you and making this community what it is. That's what I've got. Thanks so much, Catney. Next is going to be Melissa. Hello, I wanted to give a hug to Fumbi Guy for reviewing my circuitfifon.org DRs last week. To Catney for quickly reviewing some other PRs I submitted to Scott for a good catch-up talk about code.circuitfifon.org and to you Liz for hosting your first meeting and a group hug to everyone else. Thanks, Melissa. Next is Mark Gambler 21 who is lurking. He has a hug report for Jeffler for the NeoPixel 8 and Core Pixelmap PR for speeding up NeoPixel animations a lot. And Mark had a really cool demo on show and tell if you folks wanna check that out. And then next is Tammy Makes Things who is also text-only, a hug report to me for hosting the meeting. Thank you. Catney for a good combo and interesting project idea and a group hug for being an awesome community. And next up is Scott. Hello, first a hug for you Liz for hosting the meeting and also for helping test Glider and PiWeep which hopefully we'll get more people using soon. And then also a hug report to Catney for helping keep the internal meetings organized with Phil and the more out. I really appreciate you sending docs and stuff out so thank you. Thank you, Scott. And that was hug reports. Thanks everyone. Next up is gonna be status updates. So I don't normally do a status update cause I don't really do dev things but for today I will do a first time, it's my first time hosting the meeting and I'm working on guides for NeoPixel BFFs. There is a new driver board in the shop and a five by five grid and they kind of sandwich onto the QT Pi boards which is fun. And then personal projects, SergerPython, I do a lot of Eurorack things. So I have this idea for doing a four input for output quantizer melody maker for Eurorack. So this weekend I did some initial breadboarding and coding. So far it's going pretty decently. I had one channel working so just gotta expand from there. But next up is going to be Dan. We can't hear you, Dan. Are you there, Dan? It looks like his headphones are off too. So maybe he can hear us here. Okay, should I read for Dan? Yeah, why don't you just go ahead? Okay, yeah. So Dan's status update. Jepler, Tan New and him had an 8.0.0 issue triage meeting. He fixed spy polarity equals ones by modes two and three on RP2040 found while debugging a mode three problem on expressive. He's still investigating the expressive problem. Fixed an event channel management on SAMD21. Bug caused errors on soft restart. He also fixed off by one TIMX timer reference and STM port which caused incorrect PWM speeds. He reviewed and sometimes tested several PRs. And he's continuing of 8.0.0 issues this week. Maybe he should do another beta, so that's coming up. And next is going to be DJ Devon three. Thank you. Last week, my circuit Python powered dragon Skull mask made it into an episode of DigiKeys maker update and Donald Bell and team made it look pretty epic. That was pretty cool. I updated my seven segment social media tracker project and added two more segments using a PCA 9548 multiplexer for a total of 10 backpacks. So by default, you only get eight addresses and adding two more means you need a multiplexer. Kinda, but okay, anyway, moving on. Unfortunately, the backpacks and multiplexers use an identical and conflicting I2C address range of 0x70 to 0x77. And everyone who helped troubleshoot the issue and discord collectively decided that if you're gonna use backpacks with the multiplexers that had the conflicting addresses, just use half of the channels for multiplexers and half for the backpacks. You will still get 64 possible backpacks. So it's not like you're, you know, unless you're running doom on seven segment displays, which someone has done, it's not really gonna be an issue. I revised an unfinished project modding a 16 megabyte flash chip onto an eight megabyte blue fruit sense. Instead, we'll be going with Adafruit's new Q-Spy flash breakout, which comes with the 16 megabyte chips at that. And it's really cheap. It's only like two or three bucks and you get 16 megabytes of flash on a breakout. Great deal. And it comes with an existing NVM toml definition, which is the most important part. The chip was not available when I started the project due to the chip shortage, which is why I had to do the whole try and make my own with my own definition. It's much safer to use an existing known good chip and configuration that Adafruit came up with plus their breakout board. It just makes the mod so much safer. You can test before you solder the chip onto the board. So if you're gonna do, you know, hardware hacking with a spy flash, especially Q-Spy flash, Adafruit, they have a product for that. I helped Dan H clean up a final beta test for the QDPI S2 Wi-Fi scanning bug. Both the Feather ESP32 S2 and QDPI S2 are now stable in terms of Wi-Fi scanning. That's the only thing that I tested was just the Wi-Fi scanning. Close the issue, submit the bug, good to go. Designed a QDPI BFF specifically as a ground pin expander will allow more LEDs without having to add proto board or perf board to a small project because of the footprint, you only get one ground. So the only way to add more things is to add a perf board, which is what I stuck into the dragon skull mask with this big perf board thing. So I designed my own, basically my own ground plane so I could add a whole bunch of LEDs to stuff into the dragon mask. That's where I'm at. Thank you so much. Next up is gonna be FOMI guy. Right, last week I started on the display IO changes that were discussed during the previous meeting. Got that working minimally inside the core on Monday and then throughout the week added little bits to it and got it tested on three of the different types of displays, the ePaper frame buffer displays, rather ePaper and frame buffer are two different kinds and then the standard ones, which I don't know if they have a name, but the kind of built in ones like Pie Portal and everything, it's been a nice process. I've been continuing to learn and get more comfortable with different parts of stuff inside the core by making these changes, so it's been a lot of fun. I set up a Twitch developer app in order to get a token to test out the example that DJ Devon submitted for the request library, tried that out and then also poked around through the Twitch API docs to look into some of the other possibilities that are available and I think there will be some fun stuff that we can make with that integrating CircuitPython into Twitch API. And then for this week, I'm gonna look into the adaptation of the PixelMap class that's inside LED animation to try to work with the new one that Jeff is working on inside the core. Thanks. Thank you. Next up's gonna be Jeff. Hi again. So a reminder for those of you using Mastodon, I'm on Mastodon, my tag or whatever it is is in the node stock. So I welcome a follow from anybody in the community. I don't necessarily post a lot of CircuitPython stuff. I do post a lot of computer generated images and boost a lot of posts by people who are doing stuff that sounds interesting to me. But now down to business. The big thing is we identified this problem where the internal buffer, like if your CircuitPython program is running but not reading from the UART and you dump a bunch of data through the USB connection, then there's really no way to control C because we can't receive that control C when the buffers fall. There is a serial protocol like back to the RS232 days called a break signal. And so I added support for everything that uses tiny USB and for the ESP32S2 so that we can use this break signal as an alternative keyboard interrupt source. I hope that programs like Thaunianmoo that make USB connections and want to send keyboard interrupts can switch to using this as an alternative. But I haven't opened a dialogue with MicroPython seeing if they want to add support for this or to Thaunianmoo's telling them this is an option that you'll have with CircuitPython8. So I don't know how that will actually play out. And also it looks like it may not work on the C3 so which is a board that uses its own internal USB to serial converter and doesn't have full USB HID. Anyway, so that was kind of the most interesting thing. I made draft pull requests for three upcoming products. The board designs are expected to change which is why those are in draft status but in most respects the boards worked well. One way they did not work well is ESP32S3. I squared C had a problem with the Max 1704X battery gauge chip. There is a workaround and I open an issue about that. I also did a number of other pull requests and acted on other people's pull requests. In NeoPixel8 library that now supports from one to eight strings, the reason you would want to use that with just one string is it allows you to write the pixels in the background while you're updating your animation. So you can still get a speed list from it even when you're using just one strand of LEDs. There's more in the note stock if you wanna check that out. Anyway, onto this week, I'm gonna concentrate on the next keyboard to USB HID adapter project on this short week. I'm gonna try to be out on Thursday through Sunday although usually I have discord open. I pick up circuit Python stuff for a little bit here and there. So I'll be around but yeah, that's what's up with me. It seems like plenty. Thanks, Jeff. Next is gonna be a catnip. All right, so last week, the quick STEM IQT hub guide went into moderation. I reviewed all of Liz's guides and guide update. By the end of the week, the Pi Cowbell guide and the STEM of hub guides were published. Blogged up the last three guides I published. Added a NeoPixel rainbow IO simple test to the NeoPixel library. It's obviously geared at the five by five BFF NeoPixel grid, but changing a pin would make it work with any NeoPixels. Fixed up the ESP32 circuit Python install template that I wrote per one more notes in our internal tracker. Started the code of conduct update process document. This is going to be linked in the code of conduct and it will explain the process that we go through every time we make an update to the code of conduct because we use GitHub and we use pull requests so that anyone in the community can be involved and provide suggestions and feedback and so on. But not everybody knows how to use GitHub and not everybody knows that we do all this stuff publicly. So I want to provide a document that we can link to that actually walks through the entire process so that folks who want to be involved can be even if they're new to the whole concept. And I received and looked over Liz's code for my project guides. I have two project guides coming up. Liz was doing the code for both of them. I made comments and we'll be chatting soon, which is actually after this meeting. This week, short week, obviously, chatting with Liz after this meeting, starting on the holiday countdown project. It's three 14-segment LED stomach QT backpacks all wired together and it will be scrolling the countdown to Christmas. And to that end, I need to talk to Noah and Pedro who are doing the case for this project. I'm possibly going to put a PR in for the code of conduct updates, which doesn't include the update process document. We did make some updates recently, but I haven't put the PR in for them yet. And on Tuesday, I'll be meeting with Alec about his latest data about PyPI stats PR, but that should be pretty quick and that's what I've got. Thank you, Katni. Next is going to be Melissa. Hello, last week I added more features to the Python shell library and I continued updating installer shell scripts over to Python. And then I added an edit link fix to circuitpython.org, which wasn't working for some boards. I updated the UC8151D E-ink Circuit Python driver and updated the 2.9 inch tri-color E-ink guide. This week, I'm starting on more getting back into the code.circuitpython.org work. And I still need to update the Circuit Python EPD library and the Python part of the guide for the 2.9 inch tri-color E-ink. And that's where I'm at. Thank you. Next is Tammy makes things stats update. She's tech-only, so I'll read for her. Last week, she worked a bit on figuring out how to add NRPM support to the Adafruit MIDI library. She's still researching this. She's at a town for a memorial celebration for a friend, so didn't get much time to work on circuitpython this past weekend. This week, hoping to move forward with the NRPM stuff for Adafruit MIDI and do some PR reviews. Researching the HDMI-CEC Consumer Equipment Control Protocol and designing a Bluetooth-activated HDMI kill switch. Also, investigating the existing HDMI-CEC bridge chips that exist to see if she can find one that can be controlled over I squared C rather than implementing the protocol herself. So I was going to be making a scrolling text Christmas tree ornament for a coworker who made a lovely laser cut ornament for her. Very nice. And then next up is Scott. Hello. As of Friday, I was caught up on email, the forum, and Discord. I have not done that today, so I'm not caught up yet. I met with Jeff and Dan for issue triage for 8.0. I met with Melissa for code.circuitpython.org stuff. And I'm going to try it with the PicoW this week, which I dove into getting Web workflow working on the PicoW and got pages loading and serial terminal working. That's all without doing MD&S. So the Circuitpython.local thing doesn't work yet. But you can do it by IP. There's a working branch there, and I'm hoping to have a PR out by the end of tomorrow that will emerge it in without MD&S. Because I will be out Thursday, Friday, and some of Wednesday. I tend to make Apple Pie on Wednesdays before. Thanksgiving, so I'm not always around. I also made comments on two issues, one for the coprocessor API and one for the analog buff.io API. So I may follow up with those issues later, like next week or the week after to get those updated for 8.0 as well. So that's it for me. Thank you, Scott. That's going to do it for status updates. Next, we're going to go into in the weeds, which right now I'm not seeing anything in the weeds, but feel free to add things while I read the description. In the weeds is an opportunity for more long form discussions that either come out of status 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, see if anyone has topics. And I'm not seeing anything in the weeds, but I'll give folks maybe a second or two to chime in via mic just in case. All right, then we're going to go into the wrap up. So this has been the Circuit Python Weekly Meeting for November 21st, 2022. Thank you everyone who participated. If you want to support Adafruit and Circuit Python, those of us at work on Circuit Python, consider purchasing one 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 Microcontroller newsletter. Visit adafruitdaily.com to subscribe. We'll be out tomorrow. The next meeting will be held next Monday, as usual at 2 p.m. Eastern, 11 a.m. Pacific. And this meeting is held in 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 the Circuit Python needs to roll on Discord. We hope to see you all next week. Thanks, everyone, and a big thank you to everyone since this was my first meeting I hosted. Hope everyone has a good rest of the week.