 Hello, everyone. Welcome to the Circuit Python Weekly for, wait for it, February 22nd, 2022. This is the time of the week 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 designed to run on tiny computers called microcontrollers. Circuit Python development is primarily sponsored by Adafruit, so if you want to support them in Circuit Python, consider purchasing hardware from adafruit.com. This meeting is hosted on the Adafruit Discord server. You can join any time by going to adafru.it-discord. We hold the meeting in the Circuit Python Dev Text Channel and the Circuit Python Voice Channel. This meeting typically happens Mondays at 2pm Eastern, 11am Pacific, except when it coincides with US holiday, as happened this week, in which case it gets bumped to Tuesday most often. In the notes document, there is a link to a calendar that you can view online or add to your favorite calendar app. We also send notifications to the upcoming meetings via Discord. If you'd like to receive those notifications, please ask us to add you to the Circuit Pythonistas Discord role. There is a notes document to accompany the meeting and recording. The notes document contains time stamps to go along with the video, so you can use the doc to view only the parts that interest you. The meeting tends to run 60 to 90 minutes, so this gives you the option to skip around. After each meeting, we'll post a link to next week's notes document in the Circuit Python Dev Channel on the Adafruit Discord. Check the pinned messages to 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 always 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. This is a look at all things Circuit Python and Python on hardware in the community. It's a preview of our Python for microcontrollers newsletter, except when we have the meeting on Tuesdays as it's already been published this week. The second part is the state of Circuit Python, the libraries and Blinka. This 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. Hug reports is an opportunity to highlight the good things folks are doing, taking the time to recognize awesome folks in our community. The fourth part is status updates. Status updates is an opportunity to sync up on what we've been up to. Take a couple minutes to 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. The fifth and final part is in the weeds, which is an opportunity for more long form discussions. These discussions can come out of status updates or be something you've identified ahead of time is too long for status updates. And that is how the meeting will go. So with that, I will get started with community news. So this, well not this week, but recently we reached the milestone of 256 boards running Circuit Python. And why celebrate 256? It's because it's one more than fits in an 8-bit value. So we celebrated it in binary. There is an amazing graphic in the notes document if you're interested. And did you know that not all Circuit Python boards are made by Adafruit? Not by a long stretch. SparkFund has 15 boards. Pomeroni has nine and so many more. Circuit Python is an open source language, which any hardware designer may look to use. Next up is the Circuit Python 7.2.0 release candidate zero has been released. There's a list of notable additions since 7.1, which most of which we've probably covered before, because there's not a lot of changes between the last 7.2.0 release and the release candidate, mostly bug fixes. And please test out the release candidate. We're probably going to go stable very soon because we haven't found very many issues. And I'm sure there's a couple other folks that will talk more about that later. So next up, make your own standalone Winamp skinned music player. Bring back the good old days of llama whip and fun. This project will turn your pi portal into an MP3 player to play your favorite tunes with the familiar Winamp look. Create and manage multiple JSON playlists and rock out to whichever one fits your mood all done in Circuit Python. Take a step further by choosing a custom Winamp skin and converting it to use on your pi portal. And this was put into a guide written by our own foamy guy. Next up, whippersnapper no code IoT platform now works with Adafruit Feather Huzzah ESP8266. So whippersnapper support for the Feather Huzzah ESP8266 is here. Over the past few weeks, Melissa worked on a web-based installation tool to upload firmware to an ESP8266 or an ESP32. Additionally, this tool also generates little FS file system containing Adafruit IO and Wi-Fi network credentials and uploads them to your board. And I have the project of the week. ZabX is an open source monitoring software tool to monitor IT infrastructure such as network servers, virtual machines and cloud services. It collects and displays monitoring metrics such as CPU memory and network load. Sterling Anderson has developed a standalone display for ZabX data. It uses an Adafruit Pi portal programmed in Circuit Python to fetch data via Wi-Fi and display it on a color LCD display. And it is housed in a fancy 3D printed case. So this has been community news. It is pulled from our Circuit Python weekly newsletter, which is a Circuit Python community-run newsletter emailed every Tuesday. The complete archives are available on adafruitdaily.com. It highlights the latest Python on hardware-related news from around the web, including Circuit Python and MicroPython developments. You can contribute your own news or project by submitting a PR on the Circuit Python weekly newsletter GitHub repo. Or you can tag a tweet with hashtag CircuitPython on Twitter or email cpnews at adafruit.com. And thank you to Anne for all the work that she puts into getting the newsletter out with all this great information. And that is community news. So next up is the State of Circuit Python Libraries and Blinka. So this is a statistical overview of the project by the numbers. We'll talk about the project overall. Then we'll talk about the core, the libraries, and Blinka separately. So I will go ahead and get started with that and talk about the project overall. So across the entire project, we had 65 pull requests merged by 23 authors. Some names I don't recognize are L-Styne, G-Pongeli, KO, 8219, Gudrik, Infamy, Pixel Clay, and Mylaija. And we had 10 different reviewers. And there were 47 issues closed by 15 people and 22 opened by 18 people, so we're not down quite a bit overall. So with that, I will turn it over to Scott to talk about the core. Hello. So the numbers for the core, there were 25 pull requests merged from 12 different authors. So thank you to all of our authors. We had six reviewers. So as always, we're looking for more reviewers because the more reviewers we have, the more authors we can support. Pull requests-wise, we have 15 open pull requests. Three of those are greater than 100 days old. Everything else is a lot younger, which is good. And as always, as well, please take a look at any pull requests that you have been working on that may not be making any progress. We'd like to close those in the interim or actually get them merged in. So that's pull requests. Issue-wise, we had 22 closed issues by four people, 11 opened by eight people. So we're back down under 500 at 496 open issues, which is good. Thank you to everybody who's been chipping away at closing issues. And then in terms of milestones, this is how we kind of triage. We've got one open issue for 7.2, which is the next stable release. We've got 23 open issues for 7xx, which are bugs that we should probably fix sooner rather than later. And then we've got eight open issues for 8.0. 444 open issues under long term. So that's the state of issues in CircuitPython, and that's it for the core. Thanks, Scott. All right. So next up, I will talk about the libraries. So across, this applies to all of the Adafruit CircuitPython libraries, which is everything that starts with Adafruit underscore, CircuitPython underscore, as well as a couple of extras. So across all of those repos, we had 36 pull requests merged from 15 authors and nine reviewers. Two of those PRs that were closed were over 100 days. One was over 200 days. So we're still working on getting those older PRs looked at and merged. And that leaves us with 11 open pull requests, which is by far the smallest number we've had in a very long time. We had 24 issues closed by 13 people and nine opened by nine people, which is excellent to have that many people involved in new issues. And the leaves us with 625 open issues. 212 of those are good first issues. If you're looking to contribute to CircuitPython on the Python side of things, check out circuitpython.org slash contributing. You'll find both the open set of open issues and the set of open PRs. And if you're looking to get started reviewing, check out the PRs. If you're looking to get started contributing code or documentation, et cetera, check out the open issues. If you're new to everything, good first issue is a great place to start. We also have a guide on contributing to CircuitPython using Git and GitHub. And we're always available on Discord to help you. We wanted you to be able to contribute in a way that works for you. In terms of library updates in the last seven days, we have two new libraries, Adafruit CircuitPython typing and Adafruit CircuitPython ESP32TFT. As well as a number of updated libraries, which I will not read off, but that list is available in the note stock. And, oh, okay. So Melissa is out today, so I will turn it over to Jeff to talk about Blinka. Hello. Just got to find that unmute button. So Blinka is a compatibility layer for MicroPython and Linux-based single board computers that lets you run your CircuitPython code on a lot more platforms. And in the last week, there were four pull requests merged from three authors and three reviewers, leaving five open pull requests. Issues-wise, there was one issue closed and two issues were open, leaving 71 open issues. And we track how many people are using Blinka by our pie wheels download count. And in the last month, there were 15,786. The number of supported boards is 87. One of the things that happened in Blinka this past week is related to the optional typing that a lot of people have been working on across the libraries. And I believe it was Dan who created a new library and moved some of the typing stuff into it and moved it out of Blinka. And that's good because we can iterate on it faster and get more stuff done. So that's what I know about Blinka. Thank you. Thanks, Jeff. All right, and that is the state of CircuitPython, the libraries in Blinka. So next up is Hug Reports. Hug Reports is an opportunity to highlight the great things that folks are up to in our community. It is held as a round robin. I will start and then I will go through the list and either read off notes or give anyone who is participating a chance to read off their own. So my Hug Reports this week, I have a hug for FOMI guy for putting together two quick demos for the TFT feather using the TFT for me to add to the guide. It was super helpful. I don't work with displays all that often. And that's pretty much the major thing that people are asking for this board. And so I needed to put together two guide pages for folks. And having those demos available was super helpful. To Tech Trick, for jumping into reviewing head first, I'm really happy to see that there's been a lot of PR reviews being done. Tech Trick only just joined the review team and definitely hit the ground running. To Naradok, for always jumping into help folks in the Help with Circuit Python channel and Discord. They always help incredibly quickly and they're incredibly helpful. They're usually available and always have thoughtful responses. Hug Reports to Jepler, for helping me with some code I'm working on, pair programming with you is a lot of fun. To Dan, for talking through a decision about the same code regarding where to put a particular property. And to Karilla, for explaining bitwise operations on registers in a way that clicked for me. Next up, I have notes to read off from C Grover, who has a hug report for Jeff, for assistance and patience on the UDESML PR. And congratulations to Tammy Makes Things for an excellent inaugural live streaming episode. Looking forward to the next. And next up is Dan. Thank you. Thanks to Scott, Jeff and Katny. We had a bug triage meeting late last week after the regular meeting. That was really helpful and we narrowed the bugs that we wanted to fix for 720 and made some other decisions about various bugs. So it's, it's, we have these meetings occasionally and they're long, but they're very productive getting to figure out what we really want to fix. Thanks to Jeff for the MicroPython 1.18 merge, which from my point of view went really smoothly. Thanks to Scott for starting to work on USB host. That'll be really useful for a lot of people. Thanks to Tetric, who's working on a lot of things, including async IO documentation and fixes to async IO library brought on by checking things. Thanks to Kmatch 98 for weekend fixes for 720 RC0 and to FOMI guy for thorough testing. FOMI guy found some problems after some initial acceptances, which was very helpful. Thanks to Naridoc and PurpleZ for a number of fixes. These are very helpful. And thanks to Dave Putz for doing a really good job of debugging why a particular auto reload issue is happening. And now we can really, he's really narrowed it down. That's really helpful. Thanks to you Katny for keeping an eye on pin names, making sure they're not inconsistent. You fixed something. One in particular is when I'm thinking of I2C TFT or TF2 ITC. I can't remember the difference. Thanks to Maker Melissa for freezing portal libraries into portals to fix memory issues and fixing a bunch of long standing problems of people trying to do large fetches of things from the internet. And finally, thanks to Nicholas, Pilar V, and all the contributors to Vue for the 1.1 stable release of Vue, which came out two hours ago or so. So I encourage you to upgrade your version of Vue if you haven't already. Okay. Thanks, Dan. Next up, I have some notes to read off from Dexter Starboard, who has a hooker port for K-Match, FOMI Guy, and Dan for their work on preserving the terminal messages. Next up, I have some more notes to read from FOMI Guy. First up, Lady Aida and PT for the opportunities and neat project ideas they've sent my way as well as kind words and feedback on the PyPortal Win-In project. To Tammy Makes Things, congrats on the first stream. To Dexter Starboard and Seagrover and others for helping troubleshoot GZIP decompression of data obtained from WebAPI. To Mark Gambler for working on the Zlib module in the core. To Johnny Bergdahl for helping moderate YouTube chat during my stream. For K-Match for working on fixes around preserving terminal messages after code.py ends. And to Tech Trick for some enhancements to display IO widgets and joining the graphics team on CircuitPython.org. Next up is Jeff. Hi. So I also want to congratulate FOMI Guy for a really slick project that is getting a ton of attention. A hug for you, Catney, for continuing to find time to grow your coding skills in between guides, guides, guides and more guides. To Scott for being thoughtful about the changing work-life balance that your family is about to have. As you know, we are going to absolutely work with you and be flexible and pick up what you need to leave behind for a little while. A hug to Dan for the release candidate and for dealing with yet another curious CI problem that only became apparent when actually tagging a release. And last but not least, a group hug because I enjoy my time with y'all. Thanks, Jeff. Next up is Jerry. Hello. Let's see. There it is. Yeah. So, well, Neeradoc, Anecdata, Rimwolf, Dishapoo, Dan and probably some others that I've forgotten. A lot of people were trying to help me try and understand the Dell operator this week. And trying to help me understand it's been a challenge. So, thank you. Excellent. Thanks, Jerry. Next up, I have some notes to read from Kmatch, first up, to RS Bone for identifying an issue in FOMIGI and Dan for PR testing. To Lady Aida for considering a new PI portal. To Tectric and Neeradoc for Git help. And to Scott for guidance on the ESP32S3 RGB displays and display IO. Next up is notes from Melissa, who says, hug report to Catney for always doing such a great job on product guides, especially on the pinouts page. And a group hug. Next up, I have notes for Mark Gambler. Who has a hug report for Jeff for doing or for some info on how the tests work and how to run them. To Dan, Carter, Ann and Catney for finding, helping and pointing me how to correct a missing font file and version problem in the first guide pages I did. To Dan and FOMIGI for some initial feedback on moving UZlib to CircuitPython. And group hug because I'm sure I'm missing others this week. Next up, I have some more notes. This time from Tammy makes things. Group hug to the community for being awesome. Next up is Scott. Hello. First, a hug report to Dave Potts for continuing to tackle bugs in CircuitPython. In particularly the auto reload one that Dan referred to. Hug report to Kmatch for quickly helping to fix a bug in 7.2 as well. And then generally everybody for being awesome. I know group hugs can be a little bit vague, but really just looking through discord and stuff. It's amazing all of the different people that are contributing on a daily basis to CircuitPython. So thank you all. Thanks, Scott. Alright, last up, I have notes from Tech Trick who has a hug for Dan, Naradok, and Anikdata for always answering my questions both for CircuitPython development and my own projects. To Dan Catney and Mark Gambler for patiently helping get the CircuitPython build environment set up. To Catney for showing how to make releases for the libraries. To FOMIGI for welcoming me to the exciting world of CircuitPython display IO graphics. And to Makar Melissa for the insightful typing PR to platform detect with some new tricks I didn't know. And that is hug reports. Next up is status updates. Status updates is an opportunity for us to sync up on what we've been up to since the last meeting and what we'll be doing until the next meeting. So take a couple minutes, talk about where you're at. This is also an opportunity for providing tips and tricks. If it's something you're working on, you can help someone else, etc. And then any discussions that become a bit long we can shift to in the weeds if that makes sense. So I will start and then we'll continue on down the list. So first up, last week, I finished up the ADXL 375 guide. There were a few tweaks that needed to be done after it was published. So I got those fixed up and then added the offset functionality to the ADXL 34X and 37X libraries. Basically, you lay the board flat, you run this code, and then it sets these offsets that essentially calibrate it better. And that example is in both of those, available in both of those libraries because the offset math is different for both. I published the Vemmel 7700 guide update. That was a STEMI QT rev update because the board, we released it with STEMI QT connectors on it. We did a couple of small fixes to the Feather TFT guide and then completed the iSquad C onboard and external CircuitPython essential pages and the TFT basics and TFT Wi-Fi GitHub stars viewer pages in the Feather TFT guide as well. The TFT pages are no longer in moderation. So and then I finally I recorded my episode of the CircuitPython show podcast which is scheduled to be released on March 1 as far as I know. This week, finish up the rest of the CircuitPython essentials pages in the Feather TFT guide. I will also be in non CircuitPython world creating a new template for using the built-in TFT with Arduino and adding to the Feather guide and also adding a factory demo page with the TFT iSquad C example for Arduino. The next guide on my list is for the new MCP 23017 iSquad CGPIO expander breakout with STEMI QT. It's a whole new board, so it's I think it's going to get a whole new guide and create the CircuitPython essentials template for async.io which keeps getting bumped. It's been on my list for a month or something to that effect, but this other stuff is taking priority. So it will probably continue to get bumped. And with that, I will turn it over to Dan. Thank you. Okay. As mentioned, I worked on some more type annotation issues in various libraries. I didn't work on them so much as just approve stuff that other people have done, but it sort of pointed out the need to take some of the CircuitPython typing class out of Blinka because it doesn't really need to be in Blinka. So I created a separate library for that, and then there were a bunch of fixups associated with moving that, including putting it, making a change to CircuitPython. And I'm glad that I put in something to CircuitPython a few weeks ago, which is that it notifies you when it needs to be updated. So eventually, not necessarily immediately, but you will eventually be notified that CircuitPython should be updated. So that was one bug for 720, which was fix unneeded waiting for USB when coming out of deep sleep. That was suggested by several people and Scott kind of set out what to do. I'm looking at things that are happening in CPython, which is version 3.11 is under development. Stuff is finally going on to put task groups in Async.io. Task groups are a really structured way of doing asynchronous tasks that have been shown to be useful in the tutorial and curio and other libraries. And now they finally went into CPython. There was a prerequisite of adding some features to exceptions, and it took several years for that to happen, basically. So this is finally happening and we can hopefully eventually have task groups in our version of Async.io also, which will make it easier and safer to use Async tasks. I released 720 RC0 as mentioned this week. I will release 720 RC1 probably sometime today. I was I was out just before the meeting, so I haven't seen anything new has come up. But if there's no showstoppers, I release that. And if that seems to be good at some point, maybe later this week or maybe at the beginning of next week, we'll convert RC.1 or whatever RC it is to 7.2 final. And I'm continuing to work on adding Async capability to the request library or making a new library. I keep saying this and I'm working on it slowly, but a lot of the release stuff has taken precedence over that. But I've got I actually did some coding on that last night, so that's good. Okay. Excellent. Thank you, Dan. Next up, I have notes from Foamy Guy. Last week, PyPortal Winamp guide was published and much to my delight featured on desk of Lady Aida support for Titano and a few other tweaks is in the works this week created a few examples for further TFT ESP32 S2 tested core PRs for Zlib module and terminal output preservation. Looking into core issues labeled display IO to find ones that I think I have the ability to tackle. This week trying to figure out where and how to update the certificates that CircuitPython uses for making HTTPS requests and build out the US government web analytics display project. Proof of concept and fetching and decompressing data is complete, but I need to hook up additional APIs for more information and polish the visual appearance. Next up is Jeff. Alright, last week I merged MicroPython version 1.18 into our main branch. So that brings us up to date with their last release. We got some bug fixes to the core and also some performance improvements. And just to note that this will be in version 7.3 not 7.2 because we didn't want to make any risky changes kind of blade in the game. In the floppy drive world, that's still under Arduino, but I've been successfully reading and writing non-copy protected Commodore 64 disks, including the flippy disks that you have to flip over when you are using them in a Commodore 64 by doing a reversible modification to the floppy drive that I use. This week I am actually getting around to preparing for my upcoming presentation at the Dublin Linux users group, really this time. I'm redoing the wiring on my flippy mod, it's kind of really bad right now, and getting some guide quality photos of the process. I do hope to pick up some bug fixes, so I'll check out the 7XX list on GitHub, and I badly need to do a full tidy and reset of my main work area soon, it's gotten kind of out of hand. And looking a little bit further ahead than that, I ordered an Apple IIe from eBay for some more floppy fun, and I'm preparing a pull request to Grease Weasel to add support for some 8-bit Atari floppy formats. Their very original format is 90kb, and I've got one floppy to test with, and it is working for me, so I just need to create that PR, and then people can preserve their Atari 8-bit floppies. Excellent, thanks Jeff. Next up is Jerry. Hi, excuse me. So I got really involved in a project this week that grew out of a help request that came on Discord, and this is an example that doesn't take much to entertain me, but a user was trying to use a bunch of different modules, GPS, a BBME 680, and an SD card, all on a Feather M0 RFM9X, which is a non-express M0 board. So my first reaction, and I think that of others, was don't even bother trying, you're not going to get there. There's just not enough RAM to import all those things, and they were running out of memory all the time. But that user had some interesting stuff in their test code that they posted, and they were using this operator that I had never even heard of called Dell, which I assume has something to do with delete, but it's a way of freeing the RAM or the variables used by a module in Python. And so they were actually getting a lot farther than I thought they should, and so I took a look at what they were doing and then reworked their code a bunch and flailed around with it a whole lot, and it turns out it actually works really well. And the problem is that I still don't fully understand how to optimally use this thing, but through a lot of trial and error and a lot of false starts, it actually really is working well. And the basic idea is that if you can separate all your activities to make a function to operate a sensor. So say you want to read from the BME 680, you go into a function that goes to do a read, it imports the library, does what it needs to do, and then when it's done, it does this Dell operator to get rid of the library, and then when you return from that function, you use the garbage collector to clear things out, and you end up restoring most of the RAM to the system. And then you can go in and do the same thing with the GPS, and then do the same thing to send the data over the RFM9X, something that never worked before, you know where you could import all those modules. So it's really interesting. And so I'm now trying to work on a clear way of sort of setting up examples of how you can do this in general, but it really might be applicable and add a lot of usability to some of these M0 boards that a lot of us have kind of written off. So it's been a lot of fun and very confusing. All right. Thanks, Jerry. Next up, I have some notes from Kmatch. Last week, both created and fixed a couple of bugs on the Ripple Wrangler that allows users to move and resize the Ripple terminal, started update to Cartesian graph widget to allow multiple lines and colors, tore down another model of conference room touchscreen display for repurposing and hacking. This week, continue Cartesian widget updates dealing with auto-ranging and tick marks, map out a first draft of how to connect the ESP32-S3 RGB dot clock peripheral to display IO, and explore the ESP32-S3 LCD peripheral functions in the ESP IDF. Next, I have some notes from Mark, who says last week, moved XTmod UZlib library to CircuitPython provides decompression utilities for bytes and streams. Next, I have some notes from Melissa, who says last week, froze some libraries into the portal typeboards in CircuitPython, added missing boards to CircuitPython.org, added missing type annotations to platform detect, and created the ESP32-S2TFT portal style library for the ESP32-TFT feather. This week, continuing to work on some GitHub items as well as minor guide updates. Next, I have notes from Tammy Makes Things, who says last week, completed the PR for the AS7341 library and got that merged. At Dan's request, submitted and completed a PR to the AS7341 library to specify a minimum version of Blinka in the requirements. This alleviates some of the challenges of bound type-hinting in the libraries and did my first CircuitPython Maker livestream on Twitch. This week, fixed my camera and touch portal setup for my live streams, work on more of the type-hinting issues in the libraries, get a bit better acquainted with the structure of the core code so I can start finding places to contribute there, and figure out my ongoing streaming schedule and submit a PR to the CircuitPython weekly repo to announce it. Upcoming, first regular Twitch stream, probably the week of 228. Next up is Scott. Hello. Last week, I got tiny USB host example going on the IMX RT-1060, which is the board that I'm targeting for my USB host work because it already has USB host support. It doesn't necessarily have support for the second USB, so I might have to add that, but it shouldn't be too bad. I started sketching out the API for USB host, including actually writing using a tablet input thing on my stream. I have a pretty good idea of what I think the lowest level of the USB host API should be. One thing I can do this week is continue to write that up and start implementing it, but last week I did let myself get a little distracted and fixed two things for the release as well. That was a nice small win for the week last week, but I can't remember what they are, so we could look up if we cared. This week, it's a short week because Monday was a holiday, so that's why we're on Tuesday. I'm trying to go heads down on USB host this week, and the deep dive on Friday will be the second to last one. I'm going to not run up on deep dives right up until the babies do because babies don't necessarily hit their due date. Speaking of babies, I'm out next Monday as well for a baby moon. We're going to a spa, so I'll be back on Tuesday next week. A foamy guy will be taking over the deep dive from you while you're out. Yeah, he'll be doing deep dives in that time slot. I'm hoping to have foamy guy on the stream next week so that we can chat. Perfect. Thanks, Scott. Next up, I have notes from Tech Trick. This is last week, minor bug squashing and documentation improvement PRs. Submitted PR for new functionality to the Cartesian widget for graphing area under plots. Added new library to CircuitPython.org for display IO widget effects with an effect for random fluctuating a widget's value. This week, adding another effect to the widget effects library for adding rainbow colors to widgets and looking at making some more widgets for CircuitPython.org. And that is status updates. Next section is in the weeds, which is an opportunity for more long-form discussions. There are no topics listed this week, so I will go ahead and wrap up. This has been the CircuitPython Weekly for February 22nd, 2022. Thank you to everyone who participated. If you want to support Adafruit and CircuitPython and those of us that work on CircuitPython, 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 Monday, February 28th, as usual, at 2 p.m. Eastern, 11 a.m. Pacific. This meeting is held on the Adafruit Discord, which you can join by going to adafru.it slash discord. And to be notified about the meeting or any changes to the time or day, you can ask to be added to the CircuitPython East's role. We hope to see you all next week. Thanks, everyone.