 Hello, everyone. This is Circa Python Weekly Meeting for Tuesday, January 17th, 2023. This is the time of the week where we get together to talk about all things Circa Python. My name is Liz. I'm sponsored by Adafruit to work on Circa Python. And Circa Python is a version of Python designed to run on tiny computers called microcontrollers. Circa Python development is primarily sponsored by Adafruit. So if you want to support Adafruit and Circa Python, consider purchasing hardware from adafruit.com. This meeting is hosted on the Adafruit Discord server. You can join any time by going to the adafruit.it-discord. We hold the meeting in the hashtag Circa Python-dev text channel and the Circa Python voice channel. This meeting typically happens on Mondays at 2 p.m. Eastern, 11 a.m. Pacific, except when coincides with a U.S. holiday, as yesterday was MLK Day in the United States. So today, we're meeting on Tuesday. We also send notifications about upcoming meetings via Discord. If you would like to receive those notifications, ask us to add you to the at Circa Python-NESA's Discord role. There is a notes document to accompany the meeting and recording. The notes document contains timestamps to go along with the video, so you can use the doc to view only a part of the video that interests you the 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 in the Circa Python-dev channel on the Adafruit Discord. Check the pin messages, 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 Huckerport stats updates in the document for us to read during the meeting. This meeting is held in five parts. First part is Community News. This will look at all things Circa Python, Python on hardware in the community to preview of our Python on Migrant Controllers newsletter. Second part is the State of Circa 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 the third part is Huckerports. Huckerports is an opportunity to highlight the good things folks are doing, taking time to recognize the awesome folks in our community. Fourth part is stats updates. Stats 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 the last meeting and what you'll be up to over the next week until the next meeting. And the fifth part is in the weeds. In the weeds is an opportunity for more long-form discussions. These discussions can come out of stats updates or be something you've identified ahead of time as long as too long for stats updates. And that covers how the meeting will go. And with that, we're going to go to Community News. And the big community news is Circa Python in 2023. Let the devs know your feelings. So as the year starts, Circa Python development team would like to take some time to share their goals for the Circa Python in 2023 and beyond. Just like past years, and we have links to 2019, 2020, 2021, and 2022, they'd like everyone in the Python hardware community to contribute by posting their thoughts to a public place on the internet by Wednesday, January 18th, 2023. And that is tomorrow. There's a few ways to post. You can do a video on YouTube, a post on the Circa Python forum, a blog post on your site, a post on Macedon with tags, hashtag Circa Python and hashtag Circa Python 2023, a gist on GitHub. They want to hear from you. When you post, please add hashtag Circa Python 2023 and email Circa Python 2023 at Adafruit.com. Let them know about your post so they can post it on the Adafruit blog. And post can cover a topic related to Circa Python. There's a suggested list in the Adafruit blog post and also includes suggestions or comments related to the Python microcontrollers newsletter as well. And then other highlights from the newsletter this week were what to expect from the Raspberry Pi Foundation 2023. And then there's also Project of the Week, which was Castle in the Sky, Lupita Stone. Castle in the Sky is iconic animated film by director Hayon Miyazaki, set in the fictional late 19th century, follows the adventures of a boy and girl who are trying to keep a powerful crystal form in the army. And Steve Casuya has recreated part of the movie in the form of a mysterious black stone with engraved glyphs. When a crystal passes over it, it lights up strings of glyphs. It uses Raspberry Pi Pico programmed in micro Python and it looked very, very cool. So the Circa Python weekly newsletter is a Circa Python community run newsletter emailed every Tuesday. So Ari went out today. Contribute your own news or project edit next week's draft on GitHub. You may also tag a tweet with hashtag Circa Python on Twitter or email cpnews at Adafruit.com. And with that, we're going to go into the state of Circa Python libraries in Blinka. So overall, there were 35 pull request merge by 24 authors. 12 reviewers and 30 closed issues by 11 people and 20 opens by 16 people. And next, we're going to go to Dan with the core. OK, thank you, Liz. Thank you. OK. In the core of Circa Python, we had over the past we had 11 pull requests merged by 10 authors. There were four reviewers, new reviewers, new contributors, I know I think our Connor Burns and we right right now got 21 open pull requests of which one, two, three, four, five, six, seven, eight, nine are drafts and so they're hanging out because we're still not sure whether we're going to merge them or they need further work. There were 13 closed issues by seven people, nine open by eight people, which is great, and that of four issues closed. We've got 590 open issues. Those are broken down by Milestone. There are no pending issues for the seven point three point X release. You've got seven issues we want to deal with before the eight or release. You've got 36 issues which are nominally assigned to 8XX, which would be fixed either post eight or maybe pushed to nine or depending on our schedule. We've got 20 open issues that are tagged with a library. 515 are long term. Those are both enhancements and maybe minor bugs or inconsistencies. There are seven issues that are marked support, which means they may not really be a bug. And there are four open issues which are third party, which means that we're depending on something that's out of our control to be fixed before we can close that issue. And there's one issue that needs to be triaged and has not been assigned to Milestone, or at least it wasn't out of as of Sunday night. And that is it for the core. Thank you very much, Dan. Next, we're going to go to Katni for the libraries. Thanks, Liz. So this applies to all of the Adafruit Circuit Python libraries, which is everything that starts with Adafruit underscore circuit Python underscore or as well as our community bundle and our cookie cutter, and I think a couple others as well. Across all of those repositories, we had 22 pull requests merged from 13 authors, a few names that I'm not familiar with are greatest Gatsby, Vladak, Jan Delgado, Butter and Rick Sapasap. Thank you to our new contributors and thank you obviously to all of our consistent contributors. And we had nine reviewers. In terms of timing on those merged PRs, there are one, two, three, four, five, six, seven, eight, 10 days and older and three of those are over a month old. So it's good to see that we're still getting through older PRs and keeping up with our current PRs. And that leaves us with 35 open pull requests. We had 17 issues closed by five people and 10 opened by eight people. Which is excellent. And that leaves us with 596 open issues. 88 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 the list of open pull requests and the list of open issues by repository. So if you're interested in contributing by reviewing, check out the open pull requests. If you have the hardware, test it. If you don't, check out the code. See if you see anything that looks a little bit weird or something misspelled or indentation, et cetera. And leave a comment and let us know what you did. And that's super helpful. And if you get comfortable with that and you're interested in continuing, we can talk about leveling you up to our review team. If you're interested in contributing code or documentation, check out the open issues. Find one that speaks to you and leave a comment that you're working on it and let us know. And if you need any help, we're always available. If you're new to everything, good first issue is a great place to start. And we have a guide on contributing to Circuit Python using Git and GitHub, so don't let the process intimidate you. We are also always available on Discord to help out. So we want to make sure that you can contribute in a way that works for you. In terms of library PyPI weekly download stats, the last week there were 98,985 PyPI downloads over 306 libraries. And in the notes is listed the top 10 for, the top 10 repositories by PyPI downloads. The top four-ish are almost always there, but the bottom six seem to move around and change. So it's always a little bit interesting to see. In terms of library updates in the last seven days, we had a number of updated Adafruit Circuit Python libraries, but we also now have our community libraries listed here and there was one new community library, JLed Circuit Pi by Jen Delgado and two updated community libraries as well. And all those updates are available in the notes if you're interested and that's where we are at the libraries. Thank you very much, Ketney. I will be reading Blinka today and Blinka is our compatibility layer for Circuit Python on single board computers like A.R. Asbury Pi. There were two pull requests merged by one author, four open pull requests, 87 total open issues, PyPI downloads in the last week were 23,370, PyWheels downloads in the last month, 7,889, and the number of supported board is now at 101 and that is the state of Circuit Python, the libraries in Blinka. And next up is going to be Hugger Ports. Hugger Ports is a chance to highlight folk 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. If you're text only or missing the meeting but have Hugger Ports in no document, I will read them off as I get to you in the list. I will start. I have a hug report for Tectric for reviewing PR for the PCA 9548 library that I had and I'd also like to give a group hug to everyone. Next is going to be C Grover, who's text only, to GitHub user Socano for discovering an issue with the NAU 7802 simple tests that led to finding a conversion cycle ready register flag timing error to TANute and Tectric for help with Git to rename a community bundle library folder. And next is Dan. Okay, hold on scrolling. Okay, thanks to Scott for a discussion we had about problems with expressive network sockets. And I successfully fixed that, I hope. And thanks to Katnay who has been, we have a notes document here. We also have notes documents for internal meetings and Katnay has been handling those internally. Thank you very much. Okay. Thank you, Dan. Next is David Glau, who's not speaking, has hug reports for Jekler and Paint Your Dragon for the work on Pico as a DVI co-processor. And then the FOMI guy and ANiC data for stream and work on the network stack. And then next is DJ Devin. I have a hug report for FOMI guy for some really tough sledding this week with the Wisnet library for the Ethernet feather wing. Dealing with network stack issues is very complicated. A hug for 2JP for an excellent episode on single and double-click timing examples with the bouncer, which has been needed for quite some time, filled a gap there. Yeah, they do exist, but that one was particularly good. Also an amazing guide on building a 16-step drum sequencer, which is obviously, I'm kind of biased, I think that's kind of amazing. A hug to Liz for another great vlog episode on CV and MIDI. Congrats on designing some PCBs and I always look forward to watching your project videos and also thank you for hosting the meeting. To C Grover for continuing to improve his work on pallet shaders and graphics projects, the stuff he's doing with pallet shaders, very complicated voodoo magic, really cool stuff. So big hug to C Grover for continuing his efforts on that. That's it. Great, thank you so much. Next is going to be Fome Guy, who I'll be reading for. GitHub user E28 ETA for watching along with my live streams, working on the Ethernet library and jumping in to submit a contribution of their own for an improvement to one of the examples that we discussed and looked at on the stream. A hug to Catney for coordinating with the RTD team about an issue we are facing with example code on docs pages. Anecdata, Al Harris, David G, Dan J, and anyone I may have missed who all helped me understand some lower-level networking details and testing procedures, and then a group hug. And then next is Catney. All right, first up to Fome Guy for finding an issue with the library documentation where copying code from a code element was also copying the line numbers for filing an issue on GitHub about that and working with Read the Docs to sort that out. The Read the Docs, hug report to the Read the Docs support team for being incredibly responsive, super helpful, excellent to work with, and willing to make changes to over 300 projects to get us up to date. To Jeff, Tammy, and Keith for some excellent chats. To Alec for adding the community bundle stats to the library section of the Circuit Python Daily Report, and that's what we use for the state of Circuit Python libraries in Blinka in this meeting. To Liz for meeting up to sort out what I should be working on next in terms of product guides. Also to Liz for doing the final reviews on my new guides and guide updates and a group hug. Awesome, thank you. Next is gonna be Keith the EE who's text only as hug report for Catney for a lovely conversation about LEDs and finding ways to make LED projects more engaging to an audience, new electronics and to the community for being fantastic. And then next is Scott. Thank you, Liz. One quick hug for me for Catney for pointing me to easygift.com last week at the end of the week when I was taking some screen recordings and making some fun gifts. Excellent, thank you. And then next is Tectric, who I'll be reading for. Has hug reports for Jepler and Carter for some help with the PR to the Adafruit Motor Library. Vladek for the recent PRs in a few different libraries that fix assortment of issues. C Grover for more great submissions and fixes to the community bundle. Always nice to see it grow cool new things and a group hug. And that was hug reports. Next up is going to be status updates. And status updates is our time to sync up on what we're doing. I will start and we'll go through the list alphabetically and give everyone a chance to participate. When I call on you, take a couple of minutes to talk about what you've been doing since the last meeting and what you'll be doing until the next meeting. This is also an opportunity to provide tips and tricks relevant to what people are working on. If the discussion becomes too much for status updates, we can move it to in the weeds. So with that, I will begin. So I'm starting to work on a robot heart project for Adafruit. It will use a lyre, which is kind of a small harp-esque instrument and 16 servo motors with a PCA 9685. So it's going to take in MIDI similar to I built a robot dial phone a couple of years ago now where solenoid motors kind of automated the playing of the glockenspiel. This is going to be the same thing, but with a harp. And I'm excited because I've never done something like that with a string instrument. I've only done robot instruments with percussion instruments. So hopefully that goes well. And then for personal projects, I had some PCBs come in for modular melody maker project I'm working on, which is basically a kind of a Eurorack sequencer thing that has four inputs, four outputs. And I made some breakout boards for the ADC and the DAC so that I wouldn't have too much breadboarding going on. And they came in and they are working, which is always exciting. If you've ever done PCBs and you await all that time and then they actually work. So that's my status update. And next, we're going to go to Seagrover, who is text only. And a GitHub user found an issue with the NAU 7802 24 bit ADC example that at first glance was a simple fix. However, it revealed a deeper data transfer timing problem regarding setting time and data conversion after a channel change that wasn't documented in the data sheet. A few hours later, the driver and simple example were successfully tested, but it was quite the radical journey. The Eurorack Precision VCOs PCB design is progressing nicely. Like most all projects, the nice to have requirements spawned a new project idea, a circuit Python driven ADSR envelope generator with selectable preset voices. ADSR envelopes are to the notes of a musical voice as palettes are to a bitmap image. That sounds really awesome. Next, we're going to go to Dan. Okay, thanks. So in the past week, I fixed a problem with the expressive sockets that were hanging when used with the HDTV server library. In a certain way, it seemed to be more true when used with certain browsers. And the problem was that if you're acting as a server, you can get a new socket, the accept call will give you back a socket and internally we'd set sockets to be non-blocking all the time and do our own timeouts. That's so we have control over the blocking and can do things in the background. And the socket that was returned from accept was not always being set to be non-blocking internally. I researched another problem that was reported in the past week about problems with USB CDC data.read, or actually not true necessarily just as a data channel, but the idea is that the user was having trouble reading from a particular connection from the host computer. And it turned out to be an error on the host side. On Windows, you can open a COM port in C-sharp or in the PowerShell language, which does not assert DTR data terminal ready, which normally would be asserted. And that is confusing to USB and caused this problem. There's another consideration about whether if a connection goes down, you should be able to read the remaining characters. And I thought I had like a workaround for that, but it doesn't work at all. Probably because of state that tiny USB keeps internally. But it's not really worth fixing right now. Nobody's complained about it. Another thing that I did was kind of at Jeff Epler's suggestion, I cleaned up a bunch of error messages, which would normally tell you that you were passing in something of the wrong type. And now it tells you that, and also tells you the type of the thing you passed in. So it's even clearer about what's right and what's wrong. I reviewed a whole bunch of existing PRs and I'm still heads down working on issues to try to get ARO out. We have, we are seeing crashes on ESP32 S3 in long running programs that are kind of mysterious and somebody reported such a thing on S2 this morning. And there's still a unresolved problem with I2C support on ESP32 S3, which I've mentioned many times here. And it's supposedly fixed in ESP version five, ESPIDF version five, but it needs more testing. I tried to fix and it didn't seem to fix the problem. Okay. Thank you, Dan. Next is David Glau who I'll be reading for. Searched and found a European distributor with a Pimeroni PicoDB demo base in stock to replicate Jeff's show and tell demonstration of a DVI coprocessor. Now back in stock. Worked on my circuit Python 2023 and publish on the learn system is an update of my circuit Python 2021 using PT's idea of an RP2040 keyboard mouse and Jeff's RP2040 DVI coprocessor. Recovered my C64 keyboard and a PS2 keyboard. I plan to revisit Jeff's learn guide that is for another very similar Commodore keyboard. And then a personal update on Monday I lost a birch tree in my garden and that makes me a bit sad and I see that just added the picture in chat and I'm sorry about the tree, but that also makes me sad. Next is gonna be DJ Devin. Thank you. This week we're continued working on the enclosure design for the TR cowbell started printing the second prototype enclosure at 20 hours per section that comes out to 80 hours of printing just for one full enclosure. I decided to go with a thin intermediary mounting plate for the top. And if you look at the included image, there's two really thin small sections at the top. One is the section that's on the actual top enclosure and then the other is just a base plate for the modular mounting bracket system. And that way you don't have to like reprint the entire top enclosure every time you want to change the bracket design for the interconnects. So this allows me to explore modular bracket design without having to reprint the entire top section every time. There's been no progress with the TR cowbell software beyond what FOMI guy has done and there's a link to FOMI guy's GitHub code for the TR cowbell, which just blows my mind how awesome that is. I plan on rolling this code into my TR cowbell repo someday. I just haven't gotten around to it, been so busy with the enclosure and learning Fusion 360. If FOMI guy, if you want to push a PR, I would gladly accept it. Probably wouldn't even have to review, just push. I spent every day for the past two weeks working on the enclosure and I'm looking forward to a day, which seems like forever. I've been working on this thing that I can actually make some music with it. That's it. Thank you very much. It's been nice to see your progress with it. Keep going. You got it. Next is FOMI guy, who I'm reading for. Last week, library PR views, mostly Wisnet 5K. Struggled a bit, but made progress in the end. Looking into example code docs issue and trying out different versions of Spinks RTD theme to resolve it. Checking in on the docs pages after RTD updated our projects to behave the same regardless of creation date. Then wrote CP 2023 posts and published a GitHub today. This week, a few more Ethernet PRs to work through, soldering the adapter and try using iSpy display connection for the first time. Print a few more Stemma Lego adapter pieces and work on getting it embedded into my table foosball game in a way that doesn't make the ball get stuck. Trying out multiple distance sensors that once use an iSquared C hub that arrived in my latest order. And then looking into bus IO in the core to see if there is some way it can return the already initialized spy bus on default pins if user code attempts to initialize it after the core already did it, i.e. for a device with a built-in display. And then next is going to be Catney. Hello. So for last week and yesterday, I got caught up from being out for the holidays, started my circuit pipe on 2023 posts, updated the SHT-40, now SHT-40 and 45 guide to include the new SHT-45. It's a temperature and humidity sensor. The only difference between the two is that one of them is more accurate than the other. And the only way to tell the difference is to look at the board and see what it says. I worked with the support folks at Read the Docs to get the theme version updated on all of our projects. Everything before October, everything created before October 2020 was running a very early version of the theme and I was off yesterday. So this week, a shorter week, obviously, already got caught up on messages from the long weekend. No guarantees on finishing my circuit pipe on 2023 posts by tomorrow. I will be starting a template for all of the iSpy revisions of displays that can be used in every guide and explains the iSpy connector and wiring, et cetera. We have added a ribbon connector bit onto our displays to make it super simple to connect displays to microcontrollers using a breakout or eventually possibly something built in. And so we wanna make sure that the changes are obvious and the best way to do that is to include a page that's very similar in all guides but then I will also be creating a couple of text blocks that are meant for copying into other pages in the iSpy revision display guides such as pinouts page and overview. And that'll be the thorough update of any given display guide when it has a iSpy rev. And then add all this to one of the display guides and that is so Liz and I have a canonical guide to work from to update the others and we'll be working together on that. And I think that's all I've got. Thank you, Katny. Next is going to be Scott. Hello again. Obviously out Monday for the holiday. I'm hoping to have more dedicated time this week although I will still be doing some childcare during the day. I did most of my CircuitPython 2023 post on Friday. It included testing and doing some screen recording of PyLeap, FileGlider and code.Circupython.org both on iOS and Android for the first two. I want to set aside time each week to do that because as you'll see in my CircuitPython 2023 it's kind of like the headline thing and keeping on top of where those projects are and what they're able to do and encouraging people to use them will be important to make that happen. I'm gonna finish my CircuitPython 2023 post this afternoon and get it out along with kind of like a the summary post for the couple that I've gotten in I think Ann and Foamy guy got to me so I'll get those out today as well. Trying to remind people that tomorrow, sometimes tomorrow's ideally the last day but if it doesn't matter. It was meant to be a forcing function so if folks wanna do it but don't have time by tomorrow that's totally cool. So let's say on the end of the week is when I'll wrap it up. I sent out fixes for the start and end element keyword argues on like read into and write from or read from into and write on IceGridZ and Spy and PIO. They now work correctly with multi byte element arrays. So I basically only test it on byte arrays which only have one byte elements. So start and end will work as expected with arrays now. I also have a fix for sharing the web workflows MD&S object with the user. So we create one for the web workflow and now when the user tries to create one, the first one they'll get a copy of that to share and hopefully the sharing works okay. That's out for review. I think Jeff's on there. So Dan, you'll wanna tickle it because I think Jeff's out all week. And then after that, I'm gonna just try to hammer through the rest of the 8.0 fixes so we can get to release candidate as soon as we can because I'm ready to move on to some longer things and not be bug fixing. That's it for me. Thank you, Scott. Next is Tectric, who I'll be reading for. Last couple of weeks, lots of PR reviews looking into ways of speeding up Adibot which would speed up both the generation of the weekly reports as well. The checks done when updating Adibot. Submitted PR to improve how Adibot checks for new and updated libraries in the Adifree bundle and a few type annotation fixes. This week, writing up my circuit Python 2023 posts this evening, still trying to figure out what medium I'll use but will likely be either Macedon or a GitHub just prototyping a CI update to the test repository to get ahead of some GitHub actions deprecation warnings and then propagating it to the bundle libraries if successful. Begin working on fixing some older bugs I submitted, start working on allowing the thermal printer to print images, a pull request was previously submitted but was not suitable for circuit Python as it used libraries such as NumPy and personally use starting a new class about sensors should be fun. That does sound fun and that was status updates and next up is in the weeds. In the weeds is an opportunity for more long form discussions to 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 to see if anyone has topics. I'm not seeing anything in the weeds so I will wait to see if anyone adds anything by once again saying that the deadline for that circuit Python 2023 post is tomorrow, Wednesday, January 18th. So if folks wanna get those in so they can be compiled, I'm sure that would be useful to the folks compiling them. I'm not seeing anything for in the weeds. So I guess it is time to go into the wrap up and this has been the circuit Python weekly for Tuesday, January 17th, 2023. Thank you to everyone who participated. If you want to support Adafruit and circuit Python and those of us that work on circuit Python, consider purchasing from the Adafruit shop at adafruit.com. 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. Next meeting will be held next Monday as usual 2 p.m. Eastern 11 a.m. Pacific and that is Monday the 23rd, January 2023. This meeting is held in the Adafruit Discord where 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 role on Discord. We hope to see you all next week. Thank you very much everyone. Thanks everyone.