 Hello everyone. This is the CircuitPython Weekly for the 27th of June, Monday, June 27th, 2022. This is the time of the week where we get together to talk about all things regarding CircuitPython. I'm Dan and I'm sponsored by Adafruit to work on CircuitPython. What is CircuitPython? CircuitPython is a version of Python designed to run on tiny computers called microcontrollers. CircuitPython development is primarily sponsored by Adafruit, so if you want to support Adafruit and CircuitPython, consider purchasing hardware from Adafruit.com. We host this meeting on the Adafruit Discord server. You can join anytime by going to adafruit.it.discord. We hold the meeting in the hashtag CircuitPython-dev-text channel and the CircuitPython voice channel. Typically, this meeting happens on Mondays at 2 p.m. U.S. Eastern Time, 11 a.m. U.S. Pacific Time, except when it coincides with U.S. Holiday. In the notes doc, there's a link to a calendar you can view online or add to your favorite calendar app. We also send notifications about upcoming meetings via Discord. If you'd like to receive these notifications, ask us to add you to the CircuitPython-EastDiscord role. There is a notes doc to accompany the meeting and recording. The notes doc contains timestamps to go along with the video, so we use the doc to view only the parts of the video that interest you most. The meeting tends to run half an hour to an hour, so this gives you the option to skip around. After each meeting, we'll post a link for the next meeting's notes to the CircuitPython-dev channel, and we'll also pin it to the pin messages, so you can always check the pin messages to find the latest, a link to the latest notes doc. We hold the meeting in five parts. The first is community news. The second is the state of CircuitPython libraries in Blinka. The third part is hub reports. The fourth is status updates, and the fifth part is in the weeds. So with that, I will start with community news. I'll take a timestamp. Oh my goodness. I am not recording. Okay. Well, I'll start recording now. This anyway, we'll go ahead with community news. This is news from our weekly Python for microcontrollers newsletter. So in OBS, by the way, if you hold down the start recording button, it will stop recording again. Too bad. All right. I'll read you some stuff, the top news items from this week's upcoming weekly Python for microcontrollers newsletter, which goes out via email on Tuesday mornings. Visit AdafruitDaily.com to subscribe to the newsletter. Thanks to Ant for putting the newsletter together. If you have any Python or hardware projects to share or find content you'd like to see included, please let us know. You can contribute to the newsletter. You can open a PR on GitHub where the newsletter is, is the drafts are kept up to date. You can tag at sign Ant underscore engineer on Twitter with the hashtag CircuitPython or you can email cpnews at Adafruit.com with the news that you want to tell us about. All right. So let's start. First of all, CircuitPython 731 was released last week. It's the latest bug fixed revision of CircuitPython and it's the new, it's the new stable release. You also have 801 available. The notable changes to 731 from since 730, in fact, the only changes are I fixed a bug in, on matrix portal, which has to do with RGB matrix and it caused the, caused a lot of hangs when using the Wi-Fi coprocessor chip. So when you're using ESP32 SPI with the airlift chip and I think that has solved the problem, I hope so. Another minor problem that I fixed was on Espressif if you were trying to use multiple rotary encoders that did not work properly. There was a fix for, in NRF, we fixed a crash when you're waking up from sleep when a display is in use. And finally, we updated the frozen libraries, which is most, most interestingly for, on Circuit Playground Express. Those, those, there are some new things that were added there. Next news item is MicroPython v1.19.1 was released. Recently, and this is a simple bug fix release, which I think only fixes one particular bug. Next news item is that GitHub Copilot, which is a code writing tool that GitHub is experimenting with. It's a paid service starting August 23rd. It gives you hints when you start typing things in an editor, it will tell you, it will fill in some code that it thinks is suitable for what you say you're doing, either because you started typing code or because you started typing comments. I have not tried this myself. Because I work, we work on Circuit Python, which is a quote popular open source project. We get to use it for free. Otherwise, it's, it's, it costs money. It'll be interesting to see whether it helps you type Circuit Python code or not. We'll see how helpful it is. So, as I mentioned, the weekly newsletter is emailed every Tuesday and in the notes document, you can find out how to add things to the newsletter if you'd like. We're always looking for things to add to the newsletter. The bigger the better. Okay, and I also forgot to put in the state of Circuit Python stuff, so I will go get that right now. So, that one yourself. I'll grab it, Dan. I'm almost there. You there? I was there? All right. Thank you. Thank you, Jeff. Okay. So, overall, in the past week, we had 25 pull requests merged with 12 authors, a few new ones. I think Dandy Staplet and McGowan maybe knew, I'm not sure. Six reviewers. There were 15 closed issues by seven people and 14 opened issues by 10 people. So, we're keeping up. It would be great if we could make more, could we close more issues, but people are always trying new things and finding new issues or having new suggestions. So, Scott, you want to go ahead and give us some core, the status of the core, Circuit Python core. Yeah, just let me find it here. For the core, we had 13 pull requests merged from six different authors. So, thank you to all of our authors. X-Borbit and M. McGowan are infrequent contributors, at least, or new contributors. So, along with the merge reanimator as well. So, thank you to all of them. We had four reviewers for those 13 pull requests. Thank you to the reviewers. We currently have 12 open pull requests where four of them are older than 100 days old. So, we should go back and look at those. I did take a glance at the list and a lot of these are boards. I don't know exactly, I don't remember exactly how many, but board PRs can get a little hung up because those of us who work on the core don't necessarily have third-party boards. So, if you do have other boards, please check those PRs and see if you have them. They might just need somebody to go in and say, like, yeah, this works. Although, I think there's USB, VID, PID stuff as well. Issues-wise, we had five closed issues by four people and four open by four people. So, we're net down one for a total of 527 open issues. We have five active milestones. Two of those are kind of like the core milestones that we use as Adafruit-paid folks to prioritize. We have 7 3x, which has two open issues. Those are issues that we would like to get done sooner rather than later and fixed on the stable branch. And then 8.0 has 48 open issues. These are theoretically issues that we want to fix before we do 8.0 stable, but in practice, we've rolled a lot of these over. So, we're going to triage these really before we get into kind of bug-fix mode. So, that's the state of PRs and issues in the core. Okay, thank you, Scott. Okay, Katnie, we're happy to hear from you about libraries. Okay, so this section applies to all of the Adafruit Circuit Python libraries, which is everything that starts with Adafruit underscore circuit Python underscore, as well as a few extras including the community bundle and our cookie cutter. Overall of these repositories, we had 12 pull requests merged by six different authors and six reviewers. The oldest couple of them were 42 and 19 days old, so I'm glad to see we're still getting caught up on older PRs, and it looks like we're staying caught up on newer PRs as well. We have 23 open pull requests left across all the repositories, and that number is down from the last time I read this off, so that's good to see. There were nine issues closed by four people and 10 opened by six people, leaving us with 636 open issues. 182 of those are good first issues. If you're interested in contributing to Circuit Python on the Python side of things, check out circuitpython.org slash contributing. You have two options. You can check out the open PRs and dip your toes into reviewing. Check out the code if you have the hardware tested. Leave a comment and let us know that you did. That's super helpful, and if you get comfortable with that, then we can talk about leveling you up to the review team. If you're interested in contributing code or documentation, you can check out the open issues. If you're new to everything, good first issues are a great place to start. We also have a guide on contributing to Circuit Python using Git and GitHub, and we're always available on Discord to help. If you're looking for something a little more complicated, then you can check out the Web browser enhancement. In terms of library updates in the last 7 days, there were no new libraries, but there are a small handful of updated libraries which I will not read off. And that's what I've got for the libraries this week. Okay, thank you, Katnip. Okay, next up is Blinka. Melissa's in here, so I'll read it. Blinka is our compatibility layer for Circuit Python on single board computers, such as Raspberry Pi, and it also supports an interface layer that allows you to use Circuit Python on MicroPython. So over the past week, there were no pull requests merged. There are still four open pull requests. Some of them are quite old, probably awaiting something or other. There was one issue was closed by one person and no new issues were opened. There were 76 open issues. And there were 8214 PiWheels downloads in the last month and were supporting 89 boards under Blinka, which is fantastic. Okay, next up is Hug Reports. Hug Reports is where we thank people for working on things in Circuit Python or in general, whether it's something specifically technical or some help or support or whatever. Just whatever you'd like to say about thanking other people to help with your work. I'll start and then we'll go in alphabetical order and I'll read the text of people who are text only. So in the past week, I'd like to thank Scott for a discussion about how the SDK config files for expressive builds are produced. I'm working on a new support for an expressive board and I'll talk about that in a minute. And also I'd like to give a group hug. Next up is C Grover. I'll read their text contribution. Thanks to John Park and Jepler for help with the final merge of the Neo Trellis brightness changes. And thanks to FOMI Guy for the weekly Twitch and deep dive streams as an experiential learner and seeing how it's done has contributed to many recent aha breakthrough moments. And next up is FOMI Guy. Thanks, Anne. First hug reports this week for Scott and Jeff for reviewing my PR for Palette Index validation inside of the core and pointing me towards the validator functions that are pre-built and don't require extra strings. Thank you to C Grover for sharing a way to set up GIMP to have grid lines that are kind of drawn over the top of your thing, which is super helpful if you're working with a sprite sheet. On GitHub, user Isaac Ben submitted a typing PR for the Display Shapes Library. So thank you to them. I think that was one of, if not their first contribution. And thank you on Discord to DJ Devon3 for sharing an example about some fancy labels, some labels that had outlines and shadow effects written in Circle Python. So that was cool stuff. Thanks. All right. Thank you, FOMI Guy. Next up is Jeff. Hello. Since I've been away for a while, even though I would check in now and then and apparently review poor requests, I'm a little bit out of the loop. So I just have a group hug for everybody and I'm glad I'll be seeing more of y'all again. Thank you. All right. Thanks, Jeff. Okay. Caddy, go ahead. All right. First up, I have a hug for FOMI Guy for answering a question about query strings and helping me understand how to chain parameters within one. A hug to Mr. Certainly for helping me out with some guide content and brainstorming page names with me. Another hug to FOMI Guy for writing the code for my upcoming guide. A welcome back to Jeff and a group hug. Okay. Thank you very much. Okay. Next up is Kmatch. Thanks, Dan. First, my first hug is for Paint Your Dragon for sharing their work on the ESP32-S3 LCD peripheral and some of the tricky things they had to do to get the LED matrices to work with that. And second is for Deshapoo for guidance on how to commit changes to sub-modules that's also hidden inside of a circuit Python fork. So thanks for helping with that. Thanks. All right. Thank you very much. Next up, Tammy makes things. So I just have a group hug for everybody this week for being awesome. Thank you. Thank you very much. All right. Scott, you're next. All right. I've been brainstorming. First, a hug to Melissa Dan Deshapoo and FOMI Guy for brainstorming the Web workflow stuff. A hug report to the MDN contributors, the Mozilla Developer Network, been using that a ton for HTTP reference stuff. So it's a great resource. Thank you to everybody there. And then lastly, a hug report to Retired Wizard for working on the Wi-Fi Connect crash thing. They've been doing debug builds and getting backtraces. So that's been hugely helpful and I'm hoping we can figure it out and fix it. Okay. Thank you, Scott. Okay. Finally, Tectric who's text only and Tectric has a group hug for everyone. Okay. Thank you. Next up is status updates is what we're working on either with respect to circuit Python or if not that, something else that you'd like to tell us about. It could be that you're remodeling your kitchen or whatever. It doesn't matter. I'll start. So last week, as I mentioned, I released circuit Python 731, which has a small number of bug fixes that seemed important to get into a stable release and updating the frozen libraries. And more interestingly, we decided to get circuit Python running on the plain ESP32, which people are always asking us about. It doesn't have native USB, so we have avoided doing it before, but now that Scott is working on a web workflow and we've already have support for the ESP32-C3, which also doesn't have full native USB, we're interested. And so I'm starting with the Feather ESP32-V2, which is a very nice board with 8 megabytes of flash and 2 megabytes of PS RAM. And we'll add more boards, and I bet we'll get a lot of contributions because everybody has some favorite ESP32 board that they use. Okay, next up is C Grover, who's text-only, so I'll read it. Rather than the circuit Python-centric approach to color and palette transformation focus of late, I'm starting to look more deeply into how core display I.O. transfers object palettes and colors into the hardware display buffer, particularly with regard to RGB matrix displays. Given my skill level, it's looking like a mines of Moria adventure, and that is not a reference I know, but I'm sure some of you do. Okay, next up is FlowyGuy. All right, thanks, Dan. This, let's see, last week, I tested and reviewed some improvements to the PyPortal interface learn guide code. It was cool to see that those got submitted into the learn guide repo. Along with a couple other, I think, smaller PRs that I looked through last week, and then kind of the main thing I started on over the weekend is this game and watch octopus game. So I'm making a circuit Python version of this old school Nintendo handheld game and watch octopus game. And so that's what I have got going on most recently, and then I'm still working on that this week. I've done some more of that this morning, and once I get the actual code knocked out for it this week, then the next thing on my plate will be learn guide for it, writing up, documenting how the different sections work and everything. So that's what I'm up to, thanks. Okay, thank you very much. Okay, next up is Jeff. Hello, all right. I lost the notes document because I was busy finding a screenshot of Moria. So here we go. Well, last week I got home late on Wednesday. I've been recovering from jet lag, and then I caught a cold. It's just a garden variety because I have a negative COVID test, but it still made me pretty useless all weekend. So this week I'm trying to get back up to speed. I've got several issues and poor requests to get to work on. I investigated a problem with cookie cutter due to one of those issues and found some more issues related to a new compatibility between requests and char debt to PyPI modules that affects the tests of Adafruit cookie cutter. So there's a workaround too. Anyway, so up soon I hope to enable the RGB matrix on the ESP32S3 using code by Paint Your Dragon. Either that will be easy or it will send me into a world of pain because it will deal with the bowels of the ESPIDF and I don't know which one yet, but I hope it will be the easy one. And then once Dan gets the UART going on the ESP32 port, I will help you debug the other modules just kind of as needed. And then outside of CircuitPython, I might check in on QNK support for the RP2040. There's an unmerged PR that I guess is getting ever closer to being merged, and we thought it would be fun to see if that works on the macro pad yet. And I don't know if you can hear it in my voice, but I'm still getting over a cold and still have a touch of jet lag waking up at 4 AM when I'd rather sleep till 7. So that's what's up with me. Thanks. Okay, thank you, Jeff. And I hope you can rest up and feel better soon. Next up is Catney. All right, so last week, spent the entire week and some time over the weekend getting the Create an Excellent GitHub Profile with Markdown Guide into Moderation. I was able to get to everything I wanted to, and I'm pretty happy with how it turned out. It turned into a beefy guide by the time I was done, but I think it's worth it. It's well divided up, so folks can choose what they'd like to add and are not required to read the entire guide to find it. This week, I'm starting work on the GitHub Actions Tower Status Light Guide. I will be testing a new feature in the Adafruit Learn system for the Learn Devs. I need to set up Discord Auto Mod. I'm going to be looking at the draft PR that Tektrick put together on what needs to be patched on the Libs to get them in line with Cookie Cutter and decide how to move forward there. I need to squidge together a couple of templates that are either an update to existing ones or duplicating the existing ones as a separate template and updating that. And also today, I learned to squidge is actually a word. I need to update the alert on the I2C addresses guide to suggest making a PR instead of posting to the forum and update the PM25 Learn Guide and GitHub associated GitHub Read Me with some information provided in a GitHub issue. Over the weekend, my dad stopped by to sort out what we would need to build the long desired but well avoided room in the basement. I had resigned myself to never having it, but once my dad gets involved, it's pretty much happening. He's already put together a parts list for it and as soon as we move everything in the basement into the garage, we will be able to get started on it. So that should be fun. That's what I've got. All right, thank you, Catney. Okay, next up, Kmatch. Thanks, Dan. So I finally made a first commit to my fork of CircuitPython with my ESP32-S3 code that lets you run rgb.clock-lcd-displays. So maybe I won't lose all my code if something bad happens to my computer. Second is in the process of doing that, I realized that ESP had pushed some new code to the IDF with updates to this same peripheral. And in particular, it's curious, and I wonder if it solves some issues with multiple things trying to access PSRAM and starving the LCD peripheral. So I need to dig deeper into that to see if that solves some problems that I was having before. And just kind of starting thinking about touchscreen events related to the work I've been doing on the LCD. And wonder if there's some way of capturing these events to improve latency, which is fairly important for responding to touch events with the display. And I want to look more at the way that the keypad's event queue works. Maybe that's a good example that could be used to do that. So just starting thinking about that and we'll see if I have any ideas and bounce them off of you guys. Thanks. Okay, thank you K-Much. Yeah, it would be interesting about generalizing the event queue. I didn't do that for certain reasons, but perhaps there's a way to factor it out. Okay, and next up is Tammy makes things. Thank you. So last week I did not have any Twitch streams because despite it being a four day week because of the Juneteenth holiday, I still managed to have 34 work meetings crammed into that four days. So I was just completely exhausted all week long. I did start working on the demo that I'm planning on doing for CircuitPython at the upcoming DesertPyPython meetup here in Phoenix. Sometime in July date has not yet been determined. And I also started thinking about a project I want to build for work that grabs the CICD build status from the system that we use, which is JetBrains TeamCity, and grabs the build status of some of the builds that I'm concerned about using the REST API and displays it on a matrix portal that I can hang on my wall. So this week I'm going to be working on the DesertPy demo materials and the matrix portal project hopefully and hopefully my CircuitPython card deck library. And I also want to make a decision this week about whether I need to change my Twitch schedule right now to be ad hoc when I can, rather than having myself scheduled for certain specific days to stream and then not streaming because I'm overloaded and feeling bad about it. So that's what I'm working on. And yeah, I think that's it. Thanks, everyone. Okay, thank you, Tammy. Okay, next up is Scott. Hello. I was going to try to get the PR for the Web workflow out on Friday. I think everything's basically working. But I decided to write some docs. I have a workflows page now on the kind of top-level docs for CircuitPython. It'll cover USB, BLE, and Web workflow, which will be handy in the Web workflow stuff as the most detailed. I'm hoping to have like curl examples for being able to like test all the different things. So I'm still working on that and then I imagine that it doesn't build on everything. So I'm going to have to figure out that as well. But then I'll get a PR out and hopefully more people will try it. And then the next step after that is doing the serial slash Web socket side of things. So hopefully there's room left in the builds for all this stuff. We will see. But yeah, I'm heads down on Web workflow stuff. Okay. And I'm very excited about it. I am excited too. I mean, I think it's going to be really interesting. It's going to open up all bunch of things. Yeah, I've got, I just realized I have like maybe half a dozen ESP boards on my desk and I can just power them all and click between from one to the other and upload files and stuff like that. So it's going to be neat. All right. Okay. Next up is Techfix, who's text only. So I'll read it. Last week, Explorer getting dependent about working for the libraries, but sadly there's a bug regarding compatible, defining compatible releases, which is the tilde equals syntax. And it would spawn too many PRs right now. And gotpyproject.toml working for the BMA 680 library. So just to be clear, Typroject.toml is a setup, is a substitute for setup.py and is more declarative. And it's been around for a while, but there have been some problems about like switching over easily. So this week, get a list of next steps for a transition from setup.toml to pyproject.toml, review PRs I haven't had a chance to follow up on, and explore remaining library patches that were identified for the workflow files. Okay. That's it for status reports. There's nothing in the weeds this week. The lawn has been mowed. So unless if you have something, you can speak up. Otherwise, we'll wrap up. Next Monday is July 4th, which is a U.S. holiday. So we will definitely have the meeting on Tuesday instead of Monday. And we'll put up notices to that effect. Otherwise, that's it. If there's anything else, I'll let you speak in the next few seconds. And if not, then we'll call it a day. And thank you everyone for attending. And thank you. Was it foamy guy? You had the backup recording. Thank you very much. It's great. It's always useful to have that. I really appreciate it. Okay. And I'll stop recording now.