 Hello, everyone, and welcome to the Circuit Python Weekly Meeting for June 21st, 2021. It's that time of week that we get together to talk about all things Circuit Python. This meeting happens at 12 p.m. Eastern Time, 11 a.m. Pacific Time on Mondays. You can check the Circuit Python channel on Discord for notices of a change in time, as well as add the meeting times to your calendar by visiting the Adafruit Circuit Python Weekly Meeting GitHub repository and using the link there. If you want to participate in this meeting by speaking, you will need to be added to the Circuit Python Easter's roll on Discord. Please ask any one of the moderators or admins to add you if you'd like to join. Development of Circuit Python is sponsored by Adafruit. Please support them by purchasing hardware from Adafruit.com. And just to recap, I think I skipped over this. Circuit Python is a version of Python designed for tiny little computers called microcontrollers. And as I mentioned, it is sponsored primarily by Adafruit. This meeting is held in five parts, which is why we put timestamps in the notes document so you can skip to the parts that interest you the most. The next part is community news and a preview of the Circuit Python and Python on microcontrollers newsletter. After that is the state of Circuit Python, the libraries and Blinka, a numbers based overlook of how the project is doing. Third and the first of two round robins is the hug reports section, a chance for people to thank those in the community around them who are doing great things and helping one another. The second round robin section is status updates where we invite you to let us know what is up in the past week. What you've been doing with Circuit Python and beyond, as well as let us know what you hope to get up to before we meet again. Then the fifth section, if we need it, is called in the weeds. It's a time for longer form discussion. Anything that is just a little bit too long to fit in status updates. And that is how the meeting will go. So I will head over to community news. And this week, I kind of focused on the big headlines, but a reminder there are a lot more community projects and all sorts of cool stuff in the newsletter. So please subscribe and get that in your inbox every Tuesday. So first up, MicroPython 1.16 has been released. It includes a bunch of new stuff, including a new command line tool called MP remote, which is a way to access the serial terminal and the file system and so forth. It works on Linux, Windows, and Mac. And as part of this improvements were made to Pieboard, including opening serial ports in exclusive mode. In the Python core, OS error exceptions now support the Erno attribute. And here's one that they have upstreamed from Circuit Python into MicroPython. The repo was improved so that tab completion is better. It doesn't include private methods and it will tab complete built-in module names after import is typed, which we are very happy to see them able to take features from us. I'm not sure who prepared that to go up into MicroPython, but thank you very much for that. Next up, there is a June 2020 release of Python in Visual Studio Code. This release of the Python extension includes support for VS Code's Workspace Trust, jump to source code with the PyTorch profiler, and completions for dictionary keys with PyLance. And there is a link to Microsoft Dev blogs right there in the notes. Next, Python 3.10 Beta 3 is out. They do a calendar-based release schedule. So things are working towards Python 3.10 as a stable release. There are links to Twitter and the Python mailing list, and I'm sure they would love it if you would test it out with your software and give them feedback. And next up, Circuit Python Speedy Key Switch Handling, thanks to our very own Dan Halbert. We've added Speedy Key Switch Handling. It can handle vector and matrix keyboards all done in the Circuit Python core. It'll make your keyboard projects a lot easier and a ton faster. We do this work in the background and it handles all the work for you and just tells you when you get a key press or a key release event. Lamour did a video which shows her running it on the 12th key macro pad, which is an upcoming product. Last but not least, the Circuit Python deep dive stream with Scott has been offline for a couple of weeks, although I suspect he will let us know that he is back on very soon. And that's what I've got for this week. For more, subscribe to the Circuit Python weekly newsletter at AdafruitDaily.com or check out the complete archives. The link is in the notes document. We like to highlight the latest Python on hardware related news from around the web and we invite you to contribute your own news or project. You can edit next week's draft directly on GitHub and submit a pull request with the changes. You can also tag your tweet with hashtag CircuitPython on Twitter or email cpnews at adafruit.com and thank you very much to whoever is putting those links in the chat. Alright, we go to step two, phase two, the state of Circuit Python, the libraries and Blinka. So I will first give the overall and then hand it off to some other members of the community to talk about the different parts of the overall project. So overall we had a small number of pull requests merged in the last week, 16 of them from 10 authors. The name on weHV is new to me. Reviewers, we had eight and we had 25 closed issues by eight people and 14 open by 13 people. So although our activity and pull requests is lower numerically than in a lot of other recent weeks, we see a lot of good activity on issues and we had a net decrease in the number of issues. That all seems promising. And now I will pass it to Scott to tell us about the core. Although if you don't feel you can do the core overall, you can pass it back to me or we'll put Dan on the spot, your choice. I'm happy to read it off. Okay. So for the core, we had four pull request merged from four different authors. So thank you to all our authors. We had two reviewers. So thank you to our reviewers. We have 24 open pull requests. The oldest, we have three, they're older than 200 days. So again, if you want to get started and help contributing, take a look at some of those old PR. Some of them are just for boards. So they're like relatively easy to take a look at. Although they do require you to have the boards themselves. So please take a look at that. Issues wise, we had 14 closed issues by four people, six open by six people. So we're net down, which is great for a total of 459 open issues, which you can see by going to github.com. We have five active milestones. We have zero six X X bug fixes. We have 75 7.0 issues and we have two issues not assigned to milestone. We track how many issues are not assigned to milestone as a way to know how we are doing in terms of triaging. So that's that. Overall, I would say things are going good. We were just chatting in our internal meeting. I think the next step for 7.0 is to take a look at these 65 open issues and decide which ones are a priority prior to the next stable release, which we would like to start working on and driving the bug countdown so that we can do a 7.0 stable release. That's it for me. All right. Thanks, Scott. And next, I will pass the baton to Ketney to give us an overview of the libraries. Thanks, Jeff. So this applies to all of the Adafruit circuit Python libraries as well as a couple extras. So that's everything that begins with Adafruit underscore circuit Python underscore and includes our cookie cutter in the community bundle as well. So we had six pull requests merged by four authors and four reviewers. We have a total now of 48 open pull requests. We have eight closed issues by six people and six opened by six people leaving us with 312 open issues across all of the libraries. If you're interested in contributing to circuit Python on the Python side of things, go to circuitpython.org slash contributing. You'll find all of this information and more a list of open pull requests, a list of open issues and a list of library infrastructure issues. You can go and search the issues by label. The first issue is a good place to start if you're new to everything or consider bug or enhancement if you're looking for something a little more complicated. You can also take a look and find if you have hardware for something specific and you're interested in doing something with that library. You can check out and see if there's any issues there. In terms of PRs, take a look at any open PRs, see whether or not there's anything in terms of syntax or spelling or that sort of thing if you don't have the hardware. If you do have the hardware, give it a test. That's a great way to get started reviewing and once you're comfortable, leave a comment that you did that and once you're more comfortable with that we can consider upgrading you to our actual review team. So that's a good way to get started reviewing on the Python side of this. In terms of new libraries, we didn't have any this week, but we had a number of updated libraries which are listed in the notes doc. I don't know that I have much to say overall. We've been trying to get through all the open pull requests. The oldest one right now is 549 days old. Jose David has been going through has a bead on every open pull request right now, but we need to discuss his suggestions about what to do with them. So we're trying to get through those. If you have a PR that's open and you're waiting on us to comment or waiting on something, please feel free to comment on it and let us know so we can pick that up and make sure that things don't languish. And other than that, thank you to everyone who's been contributing. And remember that we are always available to help you get started if that's something you're interested in doing. Thank you, Katnie. The next subsection is about Blinka. And for that, I will let make her Melissa tell you what's what. Thank you, Jeff. Blinka is our circuit Python compatibility layer for my Python and Raspberry Pi and other single board computers. This week we had six open or six pull requests merged by three authors and four reviewers leaves four open pull requests. I think a couple of those are mine. There are were three closed issues by one person and two open by two people leaving a net of 57 open issues. There were one. Wow. 11,257 high wheels downloads in the last month. And there were there are 75 boards currently supported. And that's it. Thank you, Melissa. And that brings us to hug reports. I will start off and we will go around in the order that I find things in the notes document. And we're inviting you to tell us about what the people around us are doing to improve our community and make things work better. So I wanted to start off by thanking Dan for some good memory size optimization ideas, although it came to my attention that at least one of these ideas was also from Scott that I will mention a little bit later. I wanted to thank the micro Python team for another release version 1.16 that I talked about earlier. A hug report to foamy guy for chiming in with useful issue, useful information on an issue, a group hug in celebration of reaching pull request number 4900 in the core like to see those double zeros will have a triple zero soon enough. And lastly, hug report for summer soft and Dylan for keeping the adabot running smoothly. There is a little maintenance work required over the weekend, but they completed it in time so we had our numbers for the state of circuit Python section. And with that, I will pass it to catney and after that to Melissa. Thanks Jeff. So my first report is to summer soft for fixing the library reports after breaking them. Sure, but they're fixed now to Dylan for figuring out where the issue was an adabot so summer soft could fix it to JP Noah and Pedro for chatting with me about creating video content making excellent suggestions and agreeing to provide feedback and assistance to Jeff for taking care of the post meeting tasks last week so I could meet a deadline to everyone contributing to the circuit Python community code of conduct PR and to Jeff and in and Mr certainly for suggesting an update to the Adafruit community code of conduct and to and in and Mr certainly for agreeing to put together a draft of the success suggested update here here I should have thank them as well. All right, with that we will go to make Melissa and then to Tanute. Let's say for my ag reports, I just wanted to start by giving one to the samurai corporate for your work with the duplicating code and platform to take the group of different else. That's it. All right, Scott, you are up next. Then it's anybody's guess who is at the top of the alphabet. Hello, just a group from hug from me because I was disconnected from the circuit Python world as I was on vacation. So, all right, we muddled through as best we could without you, but it's nice to see you back. All right, I have notes from C Grover and Charles and then after that it'll pass to Dan so C Grover has a hug report to paint your dragon Phil B for his history of producing awesome graphics code. He makes it easier to understand some very complex ideas and approaches and also C Grover has a group hug and Charles Barnford has a group hug. So Dan, go ahead and then I will read notes from David. Okay, thank you. Okay, I'd like to thank a higher effect for taking over sleep. I think I've thanked him before, but he's really keeping track of how each chip family can do sleep and what are the problems between them. They're all idiosyncratic in various ways and it's hard to find out if you're at a common API and he's working on how to achieve that. That's great. Thank you, Jeff, for getting the bug to take on yet another way of shrinking our firmware even more. And if we keep this up then everything will fit in 20 bytes. Thanks to Lady Aida who has tested my new keypad module in multiple ways with new hardware that she's designing. It worked out great. That's very nice. And she had some suggestions for the API and thanks to TAC for fixing an NRF issue where it took a long time for the REPL to come up for mysterious reasons. And that's fixed now. It may have also caused other things to be fixed. We'll see. Okay, I will read notes from David and then I will pass it to Dylan. So David Goud writes, a hug to Brent for thinking about me as a beta tester for Whippersnapper. A hug for Dan H for the keypad module and to me for the camera library both as demonstrated by Lady Aida. And a hug to Fumiguy for streaming about the GitHub CI. All right. Take it away, Dylan. Then I will read notes from Fumiguy. So hug report to Carbonated Water for lending me a CNC and helping me get it working, which was a lot harder than I expected. Hug report to Sonarsoft for all their awesome work on AidaBot and then in Groupalk. Thank you. All right. Notes from Fumiguy and then Hyrofect gets to round out the section. Fumiguy writes, a hug to Noa M Pedro for making and sharing so many neat 3D printable parts. A hug to Ketney for making the simple text display library to make it easier for people to quickly display text without needing to understand display I.O. as much. And a group hug and Hyrofect, it's up to you. Alrighty. Thanks this week mostly to Dan for his reviews of the incoming PRs that I'm looking at and just a bunch of sleep sanity checks and just thinking about sleep and helping me out with that. And then a group hug to all others. A little quiet over here on the summer I feel like. It is a little bit quiet, but it's also good to be a little bit laid back for a brief moment. So it is. I'm not complaining. That's how I'm feeling. All right. Well, we'll move on to status updates, which is around Robin in a similar vein to hug reports. And by the way, if you wanted to help out the meeting by running one of the round robin sections, just contact the meeting leader in advance and work that out with them. We would be happy to have any one of you do this so that we can just relax and enjoy the meeting a little bit more, if not, no worries. Anyway, so last week was a pretty productive work for me or productive week for me. I substantially completed the library for the OV 2640 camera. I merged MicroPython 1.16 that PR is ready for review and Scott kindly offered to review it. I implemented an idea that was maybe Dan's or maybe Scott's for reducing the size of property objects in the core, but the net savings was pretty small and it probably affects performance in a negative way. So we're likely to leave it out for now. I think that idea was solidly Dan's. It's the second idea that was maybe Scott's to split up the type structure for types in the core. I got this working on the trinket M zero and it saves one and a half kilobytes, which would definitely be enough to let us enable some of the features we want. But it requires more discussion. It requires coordinating with MicroPython and MicroLab about a new way of declaring these type objects in the core, even if we decide we want to do it. And I also need to benchmark whether it affects the speed that also there is a PR on GitHub. It's not ready for review in the sense that I don't think we should say yes to that PR in its current form. It needs more work. So anyway, up this week, I will finish up the OV 2640 library, which I think is just tagging a release. And I will get that added to the bundle. So next week, we will have a new library to list off. I will start writing a guide that will cover the OV 2640 and OV 7670 cameras in Circuit Python. The OV 7670 works on three of our boards, the Metro M4 Grand Central, the ESP 32S2 where I've tested on the Coluga and the RP 2040 where I've tested on the Pico. And then the 2640 doesn't work on the Grand Central for reasons that we're not going to explore for now, but it works on those other two systems. And so those are the five combinations that this guide is going to cover. And then in between that, I'm going to start working on a project for an upcoming guide. I'm excited to do a project guide again. It's been a while and for this one, I get to design and order a PCB. So this will be a lot of fun, but also a little bit of waiting for printed circuit boards. So next, I will read notes from Jose David, and then I will pass the stick to Catney. Jose David, who's missing the meeting this week, wants us to know that this week he'll be working on the PRs and would like to discuss that with Catney. So next is Catney and then followed by Micro Melissa. Thanks, Jeff. So last week I published the Slider Trinky Guide, started the QT2040 Trinky Guide, and along with that created the CircuitPython I2C template. I also managed to figure out a sort of concurrency in Arduino, which is not CircuitPython related, but was definitely a big deal for me. This morning I completed my first successful rebase without help. That was excellent. So this week finished up the QT Trinky Guide. Update the Slider Trinky Guide with a MIDI example. I need to test a PR on PyPixelBuff. That should be a quick one. I'm going to continue working on the CircuitPython Community Code of Conduct PR, discuss open PRs with Jose David. And then something I didn't add here, but will, is that we are going to, after the QT Trinky Guide and the rest of those miscellaneous is taken care of this week, start going back and replacing the, which was the whole point of the templates in the first place, the CircuitPython Essentials pages in other previous board guides with the templates. So that basically instead of a generalized page that has wiring diagrams for seven or eight different boards, it will be a page that is specific to the particular board that the guide is for. And that was the original plan, but we're going to actually start going back through it. So outside of CircuitPython, PyOhio accepted my top proposal the first five minutes, which will be pre-recorded and the conference happens on July 31st. And I received my second COVID vaccine last week after a bit of a debacle, but I have it and it's good. And that's what's going on with me. Thank you, Catney. So PyOhio is pure virtual this year? Yes. Okay. Next up is Maker Melissa and then Scott. So go ahead, Melissa. Okay, last week I finished fixing the remaining repos from the moveover from Master Domain. I figured out how to reassign chip-enabled pins on the Raspberry Pi boards to avoid de-assert conflicts with Blinka. And I wrote a script to assist that and update the Raspberry Pi Blinka guide. I also refactored the Web Serial ESP tool to allow better reuse of the core programming for use of Whippersnapper. And this week I'm going to be testing ESP Home with a recently updated Arduino ESP32 package to see if I square C and Wi-Fi are working. We'll be working on the Whippersnapper package to a Whippersnapper package to create a file system from a table using JavaScript. And I'm going to be starting a guide with Microsoft Flow. And that's it. Thank you. All right, Scott, you are up. And then we'll go back to the top of the alphabet. So last week was vacation for me. So basically I'm buried under a pile of email. Those of you may not know, but I do like this zero inbox thing. So I have no email on red after I do my email every morning. So I have seven work days worth of email to go through. So it'll be lots of reviews and catch up and all of that stuff. I'll also do the forums. So lots of that probably today and tomorrow if not leaking into Wednesday. And then after that it's back to polishing up the BLE workflow code and getting a pull request out for that. And I got to sync up with the folks doing the apps as well to see how well my code that I threw over the wall before I left worked out. That sounds good. And I do think I'll stream on Friday as well. I think a lot of people will be happy to see your return. I may not have anything to work on this. You may still be getting through your inbox. Hopefully not. Hopefully I'm done by then. All right. So I have notes from Sea Grover and then we will hear from Dan. Sea Grover converted another legacy Arduino project to circuit Python. This week's challenge was one of my favorites. Phil Burgess' fake TV for engineers. A successful conversion working on the documentation now. An unrelated ish preserved and reinstalled two interior doors in the 1940 section of the house. This was a week for legacy projects indeed. I think a legacy 1940s door is more legacy than Arduino but anyway. All right. Next is Dan and I'll have notes from David. Thank you. All right. I finished the keypad module as was mentioned which supports scanning keys in three different ways. Lady A did functionality testing of this with some upcoming products. And PR is now ready for review after multiple changes to the API and some more additions over the past few days to kind of flesh it out completely. We talked just before this meeting in an internal meeting and we'd like to try to make a 7 0 0 another alpha or perhaps even a beta if we decide that the APIs are not really going to change. So we could start a beta series so that we can include all the stuff that's been happened in the past few weeks. And now that I finished this I'll be going back to 7 0 0 bug hunting which we'd like to either defer some things or fix them in time to get 7 0 final out. Okay. Thanks. Well David writes this space is left intentionally blank. It's not even top secret. It's just nothing. So I hope you're able to get back to doing some projects soon. David. But next I'd like to hear what Dylan has been up to. And then I will read some notes from some folks. Also before you start I just have to read what Katny said. She said to see Grover. I'm not picturing you having decade themed sections in your house. Anyway, decorating ideas from Katny. Thank you very much. Go ahead Dylan. You're fine. So last week I borrowed a CNC from a friend. And just this morning I actually finally got it working which was really exciting. Just a case of terrible documentation and a bunch of broken download links. But got it working. I did a lot of cutting for the alarm clock. Now I just need to get it from 3 quarters of an inch thick to a quarter of an inch thick. Which is going to take so long. But yeah. And then just 8 about stuff. A bunch of random stuff with that. And then this week I'd like to finish doing the stuff with the CNC. And I have like a bunch of different guys I'm working on right now. Great. Thank you. I will read notes from Alvaro and Foamy Guy. And then pass it to Hirofact. Sorry your name is now Hirofact. Hirofact to once again wrap up the section. Anyway Alvaro fed a two rights last week porting Glinka to two risk vboards. But having issues with Lib GPIOD on both. This week looking into whether this is a kernel issue or a Lib GPIOD issue. No idea at the moment. And next month building a house and moving out of the city. So mostly AFK. And then Foamy Guy also has notes for us. Last week learned a ton about PyPI version strings and GitHub actions. Finalized code and the 3D model for Neo Trinky Brightness Crank. New commits to Stubbs PR to handle the PyPI uploading for separate stable and dev versions of the Stubs. I believe it's ready to have their credentials added to the environment and to be reviewed again. And this week work on the Neo Trinky Brightness Crank guide. And trying to create a bundle library for this. A bundle repository for the Circuit Python organization. And now my last chance to say Hirofact's name for the meeting. Hirofact you are up. Alrighty this last week I merged in and modified the set next file PR. This is a PR that allows you to make Circuit Python start from a different file than code.py on your file system. The next time it restarts and has a bunch of different things. This is intended for use with menus. So you can make a menu or well it's intended for a couple things. But one of the uses is you make a menu and you can select the like a game or something sort of sub program and it'll start that up next. I've brought that up to speed but there's still some work to do because there's a bunch of complications with how this interacts with deep sleep. Deep sleep is basically a reset and so storing the file for the set next for the next file to run is a little bit tricky because deep sleep will basically destroy all of the RAM. And so we have to figure out where we're going to put this file in a non volatile memory. So I'm I have a little perspective new API for how that's going to work across all these different ports which all work differently. And assuming that Scott is all good with that. I'm going to be working on this week that this week which will have kind of a bunch of bleed over work related to sleep memory across all these different ports. So that's my big job for this week. And as kind of a little side thing just because this is the second oldest PR that we have would be rebasing and refactoring the exception tracking. So that's a that's a kind of a related PR that allows you to see what the last exception was on Sir Python. And that's what I'll be working on this week. So a bunch of cross cross run information storage basically. Thank you. It will be nice to have those PRs finally merged so it's good to see that work that you're doing. Yeah, we'll have we'll have fewer in the in the code. The core report it'll shorten the number of months associated with the oldest one. And with that we are ready to wrap up status updates and move to in the weeds. I will actually interrupt in the weeds. And I want to mention that we have settled the date for a circuit Python day 2021. And it is going to be August 6, which is a Friday. We will be getting more information out about that soon, probably in the newsletter and also on the Adafruit blog. And we'd like to invite you to think of ways to celebrate circuit Python day with us because it's not just an Adafruit thing. It is a community thing. And yes, 86 2021 if you want to write it as the Europeans do. And unless anybody wants to add a comment to that. David says, what about the calendar from Digi-Key? We decided for a number of reasons that August is a better time. And so we are going with it. Unfortunately, we didn't have a discussion with Digi-Key before they set the calendar that way. They took the date from 2020. And it's what happened. And this is what we're doing. So yeah, no hard feelings, but your Digi-Key calendar does require revision and celebrating twice is also a great idea. I believe that the Digi-Key calendar placed it on 9.9, which was the day in 2020. But historically it's been in August and we're returning to that this year. All right. So yeah, I will pass it to Dylan, who has a topic about the Adabot. Yeah, so over the last, I guess, probably a year or so, based on some initial work that Fome Guy did, then making a lot of scripts that just speed up things that I've been doing with library sweeps, getting the list of all the library stuff like that. And I was wondering what people thought of the possibility of kind of like either maybe like putting some of those scripts in the Adabot repository, making them in their own repository, maybe like writing died on just like using Adabot for those sort of things. Yeah. Are they all related to Adabot? Pretty much all of them are, but not all. Okay. I think including scripts that are related to Adabot in the Adabot repo, perhaps in a folder that's separate so that it keeps it clean would be fine. Okay. Sorry. And then I think it might be alright to have a separate repo for scripts that are unrelated to Adabot. Okay. What I would suggest is maybe create a repo on your own account. Put the stuff in there and we can take a look at it and decide whether it makes sense to transfer it to Adafruit is basically what I would think would make the most sense. Yeah. Okay. Sounds good. Well, those were the two in the weeds topics. So unless anybody has anything else, I will go ahead and wrap up the meeting for the day for the week. This has been the Circuit Python weekly meeting for June 21 2021. Thank you everybody who joined us live and if you're watching this or listening after the fact. Thank you very much for that. We will hold our next meeting on the 28th at the regular date and time, but then the subsequent meeting will be moved a day later due to the American holiday of the 4th of July also known as Independence Day. It's the other part of the end notes that I always forget so pardon me while I look at the document. 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 will also be available on major podcast services. We'll also feature it in the Python on microcontrollers newsletter. Visit AdafruitDaily.com to subscribe. The meeting is held on the Adafruit Discord which you can join at any time by going to adafru.it slash discord. If you'd like to speak in the meeting or just to be notified about the meeting and any changes to the time or day you can ask to be added to the Circuit Python Easter's role on discord. We hope to see you all next week. Thanks everyone. Thanks everyone.