 Hello everyone and welcome to the Circuit Python weekly for May 23rd, 2022. This is the time of the week where we get together to talk about all things Circuit Python. I'm Katny and I'm sponsored by Adafruit to work on Circuit Python. Circuit Python is a version of Python that's designed to run on tiny computers called microcontrollers. Circuit Python development is primarily sponsored by Adafruit, so if you want to support them and Circuit Python, please consider purchasing hardware from Adafruit.com. The meeting is hosted on the Adafruit Discord server. You can join anytime by going to adafru.it.discord. We hold the meeting in the Circuit Python dev text chat and the Circuit Python voice channel. If this meeting typically happens on Mondays, 2 p.m. Eastern, 11 a.m. Pacific, except when it coincides with US holiday, which it does do next week. In the NoteSoc, there's a link to a calendar you can view online or add to your favorite calendar app. We also send notifications about the upcoming meetings via Discord. If you'd like to receive these notifications, ask us to add you to the Circuit Pythonistas Discord role. There is a Notes document to accompany the meeting and recording. The Notes doc contains time stamps to 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 30 to 90 minutes, so this gives you the opportunity to skip around. After each meeting, we post a link to the next meeting's Notes document in the Circuit Python dev channel and the Adafruit Discord. Check the pinned messages to find the latest Notes docs 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 during the meeting. This meeting is held in five parts. The first part is community news, which is a look at all things Circuit Python and Python on hardware in the community. It is a preview of our Python on microcontrollers newsletter. The second part, the state of Circuit Python, the libraries, and Blinka, is a statistical overview of the entire project. It's a chance to look at the project by the numbers separate from what we're all up to. The third part is hug reports, which is an opportunity to highlight the good thing folks are doing and taking the time to recognize awesome folks in our community. Next section would be status updates. Status updates is an opportunity to sync up on what we've all 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 until the next meeting. And finally, the last 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 as ahead of time is too long for status updates. And that is how the meeting will go. So with that, I will get started with community news. First up, there are now over 300 Circuit Python compatible microcontroller boards. There are now over 300 microcontroller boards that support Circuit Python. They include boards from many manufacturers and these are boards from the community, companies that are not Adafruit and entirely new businesses, makers using and shipping boards with Circuit Python. Supported chips include Espressif, MicrochipSAMD, Nordic, NXP, RP2040, ST, and more. From Wi-Fi to BLE to Lora, there is an easy and fun way to program microcontrollers with Circuit Python and there is a link to the blog. Next up, Ann Barela on Tom's Hardware PICAST. Check out the article on Tom's Hardware. Tom's will host your editor Ann Barela on the PICAST video Tuesday, May 24th at 2.30 p.m. Eastern. Check out the Adafruit blog for more information there. MicroPython surpasses original GitHub sponsorship target. MicroPython has been using GitHub sponsorship to raise funds for development with over 100 donors, they fell short of 5,000 a month. Adafruit has already been a sponsor since corporate sponsors were added and they promoted this worthwhile effort to other MicroPython users. The efforts recently surpassed the 5K mark and MicroPython has increased to target to 10K a month to hire an additional developer. Are you a user of MicroPython or Circuit Python, which is a MicroPython derivative? Please consider sponsoring some of your money per month and there's a link to GitHub. MicroPython 7.3.0 release candidate released. MicroPython 7.3.0 RC2, the third release candidate of 7.3.0 was released. It's considered stable and is available as a release candidate for testing before the final release. There's a link to the Adafruit blog and if you were playing along in the Circuit Python channel, I believe you will see that the news tag 7.3.0 has been created. So we are on our way to 7.3.0 final. So this has been the Circuit Python weekly newsletter preview. It is a Circuit Python community run newsletter emailed every Tuesday. The complete archives are available at adafruitdaily.com slash category slash Circuit Python. It highlights the latest Python on hardware related news from around the web including Circuit Python, Python and MicroPython developments. You can contribute your own projects and ideas in multiple ways including making a PR on GitHub. You can also tag a tweet with Circuit Python on Twitter or email cpnews at adafruit.com. And that has been community news. Next up, the state of Circuit Python, the libraries and Blinka. So this is an overview of the entire project by the numbers and first we will look at an overview of the entire project and then we will discuss the core, the libraries and Blinka separately with more detail for those individual bits. So first up, overall, we had 36 pull requests merged from 20 authors, some names I don't recognize, which again is always different than anyone else's names they don't recognize. Dahan Zemin, Kuthula Hoops, HDR, PaulSKPT, Sabbanon32 and Co-Plate I believe are the ones that are new to me. And 11 different reviewers, which I don't see any super brand new names there, but thanks to all of our reviewers, we can't do things without authors and we can't promote authors without reviewers. In terms of issues, we had 30 issues closed by 13 people and 12 opened by 9 people, which is excellent. We'll get to see who's responsible for the most drop-in issues. And with that, I will turn it over to Scott to talk about the core. Hello, thank you, Katni. Okay, the numbers for the core, we had 8 pull requests merged from 7 different authors, so thank you to all the authors. Dahan Zemin I think is new along with Fabeth. Fabeth has done a lot of work on circumvent.org, so it's great to see them doing core work as well. And we have four reviewers, so thank you to all of our reviewers. We have 18 open pull requests with a number of the, or three of those are over 100 days old, two of those are over 200 days old, so we should definitely look at those. And then a lot of younger ones as well, which I think we've probably merged since these stats were pulled. With the tag for 7.3.0, we tagged main as 8.0 as well, so some of these pull requests were waiting for 8.0, and so we should be able to get those in too. Issues-wise in the core, we had six closed issues by four people, five open by five, so we're in net down one. We're a total of 511 open issues. We've got seven active milestones, 7.2x and 7.3.0 are both zero open issues. That's why 7.3.0 was just tagged. We'll probably get some 7.3x issues, which we should make that milestone for, would not be surprised if, we get a lot more testing done on stable releases, so we may find something we'll see. And we had 34 open issues for 7.xx, so we should probably make that 8xx as well. And we have a bunch of 8.0 issues, where we have 12 8.0 issues that we can now also actually fix and close so that we can, now that we're marked main as 8.0. So that's the status for the core. Thanks, Scott. Next time, I will talk about the libraries. So this applies to all of the Adafruit Circuit Python libraries, which is everything that starts with Adafruit underscore, CircuitPython underscore, as well as a few extras, such as our cookie cutter and the community bundle. We had 25 pull requests merged across all of those repositories. By 15 authors, looks like I called most of the names that have been tagged here as possibly new, and nine different reviewers. The oldest pull requests merged were 12 and 13 days, which is good to see. And most of them were one or zero days old, which is also great to see, because it means we're keeping up with things. And that leaves us with 23 open pull requests across all of the libraries, which is pretty amazing. There's 350 of them or something to that effect. In terms of issues, good to see here, 23 closed issues by nine people and five opened by five people. I'm also glad that we're having so much involvement from separate people, because all the new issues are from different people, which is great. Leaving us with 639 open issues, 188 of those are 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. If you're interested in reviewing, check out the open PRs. 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. We have a guide on contributing to CircuitPython using Git and GitHub, and we also are available on Discord to help you out. We want to make sure you can contribute in a way that works for you. In terms of library updates in the last seven days, there were no new libraries, but there is a list of updated libraries available in the notes document, and that's what I've got there. So next, I will turn it over to Melissa to talk about Blinka. Hello. Blinka is our CircuitPython compatibility layer for MicroPython and single board computers like the RaspberryPython. And this week, we had three pull requests merged by two authors and one reviewer. There are currently four open pull requests, and there was one closed issue by one person and two open by two people leaving a net of 79 open issues. There were 9,249 pie wheels downloads in the last month, and we are currently at 88 boards that we support. That's it. Thanks, Melissa. And that is the state of CircuitPython, the libraries, and Blinka. Next up is Hug Reports. Hug Reports is an opportunity for us to call out folks for doing great things, highlight the amazing things going on in our community by our community members. I will start, and then we'll go down the list in the notes document. So first up, I have a hug report for Deshipu for coming up with a bunch of ideas for library issues, for the library file types guide page. By issues, I mean problems that folks might run into when working with the libraries in terms of, relative to the file types and so on and how to deal with those. I came up with one and was kind of blocked on that, and Deshipu came up with another six or seven, I think. So that was really great. And also, Naradok jumped in to help and provide further ideas for the same guide page. So that was greatly appreciated. Thanks to DNH for proofing the same page for me, for content. I was genuinely surprised that he only came back with six things, and at least three of them were just missing words, because it's a very long page and there's a lot of content to it, and I learned all of it to write the page, or most of it anyway, to write the page. So anyway, thanks for doing that. I didn't really get a chance to make a list beyond this, so group hug to everyone else. Next up is Dan. Thanks, Cathy. Thanks to Thomas F. and Kurt E., who are noticing problems with busio.ur about whether it returns none or the empty byte string. We've got to fix that in the long run. Thanks to Naradok for looking at the issue about the third argument, the mysterious third argument to int.frombytes. We have something we should fix there too, and thanks to Scott for reviews for the upcoming or now done release, and for version planning discussions, where originally last week we said we weren't sure whether we would go to 80, but it's clear that we are, so that's what we did, and that was a very helpful discussion. Okay, thank you. All right. Next up, I have notes from David Glauda. He says, group hug, sorry, I have not been following this week. And next up is FOMI guy. All right, thanks, Catney. Hug reports this week. Thank you to C Grover, who tracked down and figured out the root cause of an issue with the Piportal Titanium brightness. Thank you to Naradok, who has done some work to free up some space in some of the most tight circle playground builds, and thank you to Tectric for improving the typing library with more protocols that we can use throughout the libraries. Thanks. Excellent. Thank you. Next up is maker Melissa. I wanted to give a hug to Dan for your help with figuring out the seven segment display bullet issue. Hug to Tectric for helping with user with adding grayscale support to the UC8151D display IO driver. Another hug to Tectric and FOMI guy for helping me to hit the link at display IO repo to Anne for your helpful reviews of guides and group hug to everyone else. Excellent. Next up is Tammy. Whoops. All right. Hi everybody. I have hugs for Catney for hosting for Dan and for everybody who's watching from the releases. And then a group hug because I'm getting what my boss called a soft promotion at my new job in the next couple of weeks and my involvement with CircuitPython in the community has really helped me to improve and level up some of the technical skills that made that happen. That's all I got. Excellent. Congratulations. Thanks. All right. Next up is Scott. Hello. Thanks to the Shippu for thinking about graphs with me. Graphs in terms of networks, not charts. And hugs to Lady Aida for continuing to guide Aida and CircuitPython through the chip shortage. It's tough. It's really tough and she's working really hard to make sure that we're going the right direction and with the things that we can get. And then last up, Jerry mentioned this last week that he's going to be less involved, but I just wanted to say publicly a huge thank you to Jerry for all of his help with both CircuitPython, the code and testing and also the community over the years. CircuitPython started in 2016 is when I started working on it. It evolved out of MicroPython, of course. And then, you know, 2017 was really a formative year. That's when Katny came on board and Dan was here and Jerry was one of those folks too. So, Dishapoo I think is another long-term person, but just a huge, huge, huge thank you to Jerry again for really being their testing crew and being so helpful with folks. It's been a, we wouldn't be where we are without Jerry's help, so I just wanted to do another hug report even though he may not get it but just want folks to know. And that's it for me for now. I agree entirely. Thank you, Jerry. I have some notes from Tectric to wrap us up. So, Huggerport to Naradok for pointing out an issue with the type of notations to FOMI Guy for quickly patching the majority of those libraries, to Dan H for helping me pick a solution regarding f-strings in a PR in the Whiskey Library and a group hug. And that wraps up Huggerports. So, next up is status updates. This is an opportunity for us to sync up on what we've been up to since the last meeting and what we're going to be up to until the next meeting. I will start and then we'll go through the list the same way that we did for Huggerports. Again, if your text only make a note and I'll read things off, etc. So, get started. Last week published a new page in the Welcome to Circuit Python Guide, the library file types and frozen files page or frozen libraries I don't remember now. This is a very important page. We answer the questions that this page details, the answers to like we get asked those questions constantly. And it's important information, understanding the difference between an MPy file, a py file and a frozen library, how they work, how they interact, how you can override them for testing purposes, how do you create your own MPy file if, you know, something doesn't fit otherwise, etc. And it's all in a guide page now. So, if you are troubleshooting with someone or get asked that question, you now have a guide page to point folks to. It's in the Welcome to Circuit Python Guide so it will be easy to find. It's under advanced setup and it's just it's got a lot of great information about all of that. I learned quite a lot writing the guide page and those who have read it are real excited about it. So, just be aware of that. You no longer have to regurgitate that information. I also, along with that, added a new section to the Circuit Python Libraries page in the Welcome Guide about the Adafruit project bundle because we never actually updated the guide to mention it. And I wanted to explain how the project bundle worked with frozen libraries. So, I needed to write up a small section in another page that said what the project bundle even was. And then I continued testing PyLeap and I started a PyLeap guide on how to add a project to PyLeap. So, this week I'll be updating the Feather V2 guide to install the WHCX driver. There's a chip on the board that is going to be possibly replaced or added to that requires a separate driver. So, that will be added in there to just say just install it anyway because you're going to run into it soon. The QtPyPico guide, continue working on the PyLeap project guide. I'm going to be creating a repo for the iSquad C addresses guide. We're going to move the content of the guide from the learn system to markdown files on GitHub and then embed those files and then tell people to make PRs to add new iSquad C addresses instead of just leaving feedback and expecting us to go through all the feedback and just add it manually. It's always some kind of bonkers chip we've never heard of and instead now folks can add their own stuff. I will be talking to a couple people on whether or not they're interested in doing the actual move to markdown. And then I'm going to be doing a fancy GitHub profile guide. And a tool that uses markdown to make your GitHub profile kind of fancy. And I'll be writing a guide on doing that. And then finally the next guide on my list is the GitHub action status alert guide with a tower light that is red, yellow and green. And it'll reflect what your action status is on a particular repository. So we'll start with CircuitPython, but you can obviously modify it to any repository you want. And that is what's going on with me. So next up is Dan. Okay, thanks. So last week I released 730RC1 with two significant bug fixes. And then over the weekend I did 730RC2 as an experiment I turned on F-strings on all the builds including the tiny ones. And it worked except for one obscure board which I fixed. So the 730 release is in process. I tagged it as you saw in GitHub and it'll take a few hours before the builds catch up. But there should be a release by this evening. So that's great. That's all I could say. It's been a long process. I'm happy to move on to 8. Now I'm sure there'll be 730 fixes also. I did some work on trying to regularize all the error messages and also doing some internal tricks to use what were called validation routines that check to see like as an integer and range and things like that. Instead of doing that check by manually so to speak in the code and so I was able to save a bunch of space on all builds by doing that. And that'll be in the 8.00 start in the 8.00 builds. And then finally I'm working on debugging some network code. There are some problems with chunked responses when used with Adafruit ESP32 and SPI. I'm just starting to work on that. I have print statements that show the problem but I don't know what's going on yet. Okay. All right. Thanks, Stan. Next up I have some notes from David Glauda. Today running CP natively on bbq20 kbd which is there's a link to it from solder party with RP2040 stamp firmware. Rappel is working scanning the internal and external firmware, scan the keyboard, PWM the backlight and figure out the mouse maybe I squared C 0x33 address. And next up is FOMI guy. All right. Thanks. Last week I tested out a couple of changes in the circuit playground library as well as some tweaks in the core to change the way that that gets frozen in to try to save up some space on those builds. I made a tweak in the core to the initialization of the display backlight PWM. There was an issue on the titano and it turned out that changing the frequency on that PWM was the fix. I fixed a few instances where typing imports wouldn't work on Python 3.7 specifically across a couple of libraries. And then this week this morning I tested out ESP32S2 making requests from a Node.js server over and over again to see if it would have any trouble over time. Some other stuff I want to do this week is look into WebSockets capabilities with CircuitPython. I think Nerodoc has an example project out there so I'll probably dive into that this week. And then the other thing I have is to fill in some high level details about CIRCUP on the library's learn guide page and bring it over to the other guide and just mention what it does and why it's helpful. So that's what I got. Thanks. Great. Thank you. Next up is Melissa. Hello. Let's see here. Last week I finished writing the 2.7 inch e-ing guide and that came in helpful with a support question I had over the weekend. I went through guide feedback with the guides that I had made significant contributions to but were under other authors' names and I worked on adding new feathers and feather wings to the guide that provides an overview of everything available and this week I'm going to finish updating that guide and then catch up on some GitHub repos I haven't worked on in a while. And that's it. All right. Excellent. Thank you. Next up is Tammy. All right. Unfortunately this week, this past week I didn't work on anything with CircuitPython. I had a bunch of work stuff going on and also dealing with a personal emergency. My air conditioner dying in the middle of a 100 degree week here in Phoenix which wasn't super fun. So this week I'm hoping to get back to my card deck library doing some more CircuitPython PR reviews and again trying to figure out a consistent approach consistently and hoping to make progress on at least one of those this week. Excellent. Next up is Scott. Hello. So last week I wrapped up the NTP changes. The .env PR is out but it was having code size issues. I also broke the 64-bit build was broken so I just fixed that as well. So I just merged the main thanks to Dan's message optimization pass. I'm hoping it's enough file savings for me to squeeze in there of course. Last week I also started exploring analysis of code size. So one thing we do when we build all of our builds is that we split data and functions into their own sections and sections are kind of like the unit that the linker decides to keep code or throw it away. So we have this F function sections feature and then we have GC sections which is what deletes them. And so I'm working on determining how all of our sections in Circuit Python are related and hoping to find kind of dependencies between sections that we don't actually need so we can potentially get a bunch of space back if we optimize things. So I'm playing around with that. I made a repo with the Python file and figures all that out. So I'm going to work on that. I also started Auto Connect Wifi based on the environment variables. That's kind of an extension of the .env work. This week I'm going to continue the graph analysis because I think it's interesting and hopefully I can get it to a place where it makes it pretty easy to figure out to visualize all of the data that we're using. In particular there's an AI thinker board with a 2 megabyte flash for C3 and it's already filled up which is unfortunate. And of course web workflow is going to add more code size so I'd like to be able to take a look at that stuff and figure out. If we can't optimize our ESP builds better then this tool will apply more broadly as well. I want to get the .env data that we are in and hopefully follow it with the Auto Wifi one as well. However one thing that crossed my mind is I really I don't have a great way of telling people what the Wifi status is and we kind of don't just ignore this with BLE as well. But I've been thinking about for a while I had thought about this originally for the Raspberry Pi where you have a screen and stuff but I'm thinking about switching right now we have the blink in the top left and then the left hand column is empty for the default terminal. I'm thinking about switching us to having a status bar at the top so the first column of characters would be a status bar and then below that would just be the scrolling output as normal and what we could do there is we could dynamically kind of decide what goes in the leftmost spot of that status bar so that we can put your IP address if you're on Bluetooth or if you're on Wifi or your Bluetooth status if you're broadcasting or stuff or kind of prioritize what to show there to be most useful rather than having like four print statements in the scrolling text to say like oh your Wifi's on your BLE's on, your USB is disconnected and there's no keyboard it'd be cool to have a more concise place to put that so I think I know it could be cool to rethink that status bar and I'm happy to hear what folks think of that idea but that's what I'm playing around with or we'll be playing around with later this week. Alright, thanks Scott. Next up I have some notes from Tectric. Last week added more typing protocols to CircuitPython underscore typing helped patch the Python 3.7 compatibility issue with type annotations got set up with Adabot for running library patches submitted a PR to turn Adafruit logging into a subset of Cpython's logging module started working on getting image transfer set up on the Bluefruit Connect Library this week. Start rolling out library patches with Adabot and the post patch cleanup continue working on data class like library and continue working on getting the Bluefruit Connect image transfer working and that is status updates which leads us to in the leads in the leads is an opportunity for more long form discussions, questions anything like that that didn't really make sense for status updates if you do have a topic please add it now while we're going through the first topic otherwise we will wrap up after this is done because we don't want to have a bunch of dead time while we're waiting for folks to come up with a topic so the first topic is from Foamy Guy and I will turn it over to him you are muted if you are talking yes thank you let's see yeah I probably didn't hear any of that so I put the link in the chat there mostly I just want to get thoughts on this circuit playground library PR I kind of think it's ready to go or ready to merge anytime we want I know there's a one in the core that can come later on after this one but I just wanted to get more eyes on it to see if there were parts maybe that I wasn't considering just because it is definitely like a very high visibility library obviously the only thing I could think of I don't recall seeing before on any of the rest of the libraries is having like code that doesn't necessarily get or doesn't need to get put at least in the MPY for the library bundle or the project bundles I didn't know if the way that your linked would cause any trouble with those or not I don't think it will because it pulls from like the bundle pulls from the actual like library right and this other this other directory even though it's linked I don't I think it's going to be ignored yeah that was my thought as well well that's it because we that was actually something that comes up on the guide page I just wrote is that the project bundle downloads every library it thinks it needs even and it doesn't know the difference between a board with frozen libraries and a board without them because the project bundle is board agnostic so I do explain in the guide like hey these files will be downloaded but they won't be run because of you know the file priority that you just read about so the only reason you would need to do anything about it is if you find you're running out of disk space you know so as cool as it would be to get the bundle to like recognize frozen modules I think that's a whole other huge long down the road beast but I think that both of those setups are just going to ignore this other directory and treat everything else fine that said we should definitely once we merge this wait for the next bundle make sure it's right you know and then go to a project bundle guide that is for that is for the circuit playground and download it and see if you get everything okay sounds good otherwise yes I'm I'm ready for this to be merged well yeah I will take another peek at it this afternoon and merge it and then keep an eye tomorrow I guess we should get a bundle so I'll check on that in the morning as well perfect I was a little worried about whether I mean I'm not sure this should prevent it but that so Windows doesn't have links in the same way as Linux or Mac and I think it treats the links correctly but I'm just I was a little worried if somebody was going to try to like work on this library in Windows whether and they submitted PR whether they might mess up the links but I think we can just I think we can just watch out for that okay yeah I think so too yeah I think it's probably shouldn't interfere with building circuit Python on Windows which a few people do because it doesn't matter if they're duplicated like it doesn't really matter if it's a link or it's a copy of the file because you never do anything with it right right but you're also not doing anything with the links technically I guess right when you're updating the library they just exist but Windows might like bite them or something is what you're saying Windows what Windows might do is in the sub directory which has links in it it might convert those links into copies of the original file so we would just have to say please don't commit that yes we have to we have to watch out for that okay somebody that's basically what we have to watch out for okay that makes sense good to know okay all right okay great all right perfect thank you you good to go on that then I believe so all right then with that I'm gonna wrap up this meeting so this has been the circuit Python weekly meeting for oh my gosh I have to go find the date May 23rd, 2022 this has been the time of the week that we talk about all things circuit Python 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 the video of this meeting will be released on youtube at youtube.com slash adafruit and the podcast will be available on major podcast services it will also be featured in the python for microcontrollers newsletter visit adafruitdaily.com to subscribe the next meeting will be held on Tuesday May 31st so note that next week is on Tuesday this meeting will be held or is held on the Adafruit discord which you can join any time by going to adafru.it slash discord to be notified about the meeting or any changes to the time or day you can ask to be added to the circuit Python and we hope to see you all next week thanks everyone