 Hello everyone and welcome to the CircuitPython Weekly for, wait for it, January 18th, 2022. This is the time of the week we get together to talk about all things CircuitPython. I'm Katny and I'm sponsored by Adafruit to work on 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 them and CircuitPython, consider purchasing hardware from Adafruit.com. This meeting is hosted on the Adafruit Discord server. You can join anytime by going to adafru.it-discord. We hold the meeting in the CircuitPython DevText channel and the CircuitPython Voice channel. This meeting typically happens on Mondays at 2 p.m. Eastern 11 a.m. Pacific, except when it coincides with the U.S. holiday. Yesterday was a U.S. holiday, which is why we are holding the meeting today on a Tuesday. 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 about the upcoming meetings via Discord. If you'd like to receive these notifications, you can ask us to add you to the CircuitPythonista's 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 the parts of the video that interest you most. 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 for the next meeting's notes document in the CircuitPython 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 you cannot attend, you can leave hug reports and status updates in the document for us to read during the meeting. The meeting is held in five parts. The first part is community news, which is a look at all things CircuitPython and Python on hardware in the community. It's a preview of our Python on microcontrollers newsletter, except on Tuesdays, in which case it is simply highlighting the newsletter that was already released. The second part is the state of CircuitPython libraries and Blinka, which is a statistical overview of the entire project. It's a chance to look at the project by the numbers. The third part is hug reports. Hug reports is an opportunity to highlight the good things folks are up to and take the time to recognize awesome folks in our community. The fourth part is status updates, which 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 since the last meeting in the last week and what you'll be up to over the next week until the next meeting. The fifth and final 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 ahead of time is too long for status updates. And that covers how the meeting will go. And with that, I will get started with community news. So first up, MicroPython version 1.18 was released. There were 335 commits since the last release in September 2021. And this is a boost of overall performance to the VM and runtime. Performance options are enabled on ESP32, IMX RT, RP2, STM32, and UNIX ports. And there is a link to the Adafruit blog. Following that, CircuitPython 7.1.1 was released. This is a bug-fix version. It contains fixes for RGB matrix on RP2040 and PDMN on the SAMD boards. There are no other changes, so unless you are affected by these problems, there is no need to upgrade from 7.1.0. We're still looking for folks to send in CircuitPython 2022 updates. There's a huge list of folks who have sent stuff in, which is available in the notes document. But we are still absolutely looking forward to hearing from more folks. So if you want to let us know, there's a link there to different ways you can let us know. You can add hashtag CircuitPython 2022 or email circuitpython2022 at adafruit.com to let us know about wherever it is you've posted things. So we've been doing floppy disk support in CircuitPython. Jeff Appler has been working on this along with Lady Aida as well. And there's new native Adafruit floppy module, which implements MFM encoding on the fly to provide Python native file system support for floppy drives. There is a link to the Adafruit blog, YouTube, and Twitter. In related work, Adafruit also demonstrates using tiny USB and Arduino to make USB mass storage floppy drives on Windows, which there is a series of links there as well. Next up is the CircuitPython show. It's a new independent podcast hosted by Paul Cutler focused on people doing awesome things with CircuitPython. Each episode features Paul in conversation with a guest for 20 to 30 minute interview. This is new and it's from one of our community members and it's super exciting to see. Next up, the podcast celebrates 10 years of Raspberry Pi with new episodes with Lady Aida, even Upton, and more. Lady Aida will be on the livecasts of February 15, 2022, and there's more information on Tom's hardware and YouTube as well. And that is our community update. It's hardly touching the surface of the amazing newsletter that was released earlier today. It is a preview of the CircuitPython, or the Python on hardware newsletter, which is available at adafruitdaily.com slash category slash CircuitPython. You can always contribute your own news or project by submitting a PR to GitHub or emailing cpnews at adafruit.com. We also tag a tweet with hashtag CircuitPython and we're looking for every kind of project. All sorts of things are included in that newsletter and if you want to sign up, you can go to adafruitdaily.com and that is community news. Next up is the state of CircuitPython, the libraries, and Blinka. This is a statistical overview of the entire project. We'll talk about the core, the libraries, and Blinka to get an idea of where things are at and give us a chance to talk about each section overall. So, first up, this applies to the entire project. There were 46 pull requests merged from 22 different authors. A few names I don't recognize is Emanuel T. Holm, Kevin Kahn, Alistig 3, Kerstring, Andre Jacobs, Alvaro Wolf-X, and Ozzias Creations. And we had 12 different reviewers. There were 34 issues closed by 15 people and 23 opened by 18 people. So that's excellent both because we've closed more issues than we've opened, but also the number of people involved is really good to see. And with that, I will turn it over to Scott to talk about the core. Okay, numbers for the core. We had 24 pull requests merged from 15 different authors. So thank you to all of our authors. We had eight reviewers. Reviewers make the authors possible, so thank you to all of our reviewers. We're always looking for more folks. If you'd like to start reviewing, let us know. We'll upgrade you into that role. We have 15 open pull requests. There's three that are older than 100 days, so we should really take a look at those. And we have six that are less than a week old. So not too bad, but it would be good to get through those and take a look at them. So if you are a person related to these open pull requests, please take a look and close them if you don't think there's any progress to be made right now. You can always open an issue as well. We don't mind leaving issues open longer. Speaking of issues, we had 11 closed issues by five people, 13 opened by 10 people. So we're net up two for a total of 472 open issues. You can check those out at github.com. We triage issues through the milestone system and kind of prioritize as well. We currently have four issues not assigned to milestone, four for 7.2 and then 19 for 7.x.x. So we got some work cut out for us and we have to take a look and triage some bugs as well. But besides that, things are going well. Thanks to Dan for doing 7-1-1. And we'll continue to fix things and add new features. The thing that we always do, which is not interesting at all. Yeah, that's course going well. Alright, thanks guys. Monday. Next up is 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 our cookie cutter and the community bundle, and maybe a couple extras as well. We had 21 pull requests merged from 10 different authors and 10 different reviewers. I do want to highlight that four of the closed pull requests were over 200 days old. I'm very excited about that. Leaving us with, wow, 27 open pull requests. That's the lowest it's been in a very long time. We had 23 issues. Closed by 13 people and 9 opened by 8 people. Leaving us with 630 open issues. 236 of those are labeled good first issue. 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 helping out by reviewing, check out the open pull requests. See if you have the hardware for anything, test it. If you don't, check the code for syntax, et cetera, and leave a comment and let us know you did that. Once you're comfortable with that, we can look at upgrading you to our actual review team. If you're interested in contributing code, check out the open issues. If you're new to everything, good first issue is an excellent place to start. If you're looking for something more complicated, bug or enhancement are both excellent. There is a guide on contributing to CircuitPython using Git and GitHub available, and we are always available on Discord to help you out. We want you to be able to contribute in whatever way works best for you. In terms of library updates in the last 7 days, there is one new library, the 24LC32 library, and a number of updated libraries which I will not read off. Again, very excited to see that we are still running through older PRs. This is something that I've wanted to do for quite a while, and we just haven't had the cycles to do so, and we have since BomiGuy joined us in a more official capacity. So that's been really amazing to see, and I'm hoping that will continue, and that we will get to a point where we're actually caught up on PRs and are able to only focus on new PRs because we don't have any old ones to worry about. And that's where we are. So with that, I will turn it over to Melissa to talk about Blinka. Hello, Blinka is our CircuitPython compatibility layer for MicroPython, RaspberryPy, and other single board computers. And this week we had one pull request merged by one author and one reviewer. There are six open pull requests at the moment amongst all the repositories, and there were zero closed issues by zero people and one open by one person that leaves a net of 69 open issues. There were 15,321 pie wheels downloads in the last month. We are currently supporting 87 boards, and that's it. Excellent, thank you. And that is the state of CircuitPython, the libraries, and Blinka. Next up is Huggerports. Huggerports is a chance for us to talk about the great things that folks are doing and call people out for doing amazing things. I will start, as an example, this is hosted around Robin, I will start and then I will go through the list alphabetically, folks that are text only, lurking, or not able to attend. I will read their notes, and then those that are here, I will call on you and have you read your stuff for me as well. So with that, I will get started. So first up, huggerport to Eric at Read the Docs, who I believe is one of the co-founders, for being super flexible and working with us to get a sponsorship set up that kept our current documentation model intact while giving us the features available to their business customers, and for patiently answering all of my questions. Long story short, we wanted to be able to contribute at a business level, but all of our documentation is on their community site and the two are not actually the same thing at the moment, so it would have been a huge overhaul to move everything, which is not feasible at all, and they were willing to work with us and get us to a point where we can sponsor them without having to move all of our stuff and still get the features that we would get if we were for the level that we're sponsoring them, so that's good. And then to user Matt Goff on GitHub for submitting a PR to fix an issue I filed quite a while ago on PrettyPins to resolve the title and URL lines being currently generated right justified when the final diagrams typically end up with them centered. It doesn't seem like much, but when you're going through a lot of these diagrams, it saves you a couple minutes per diagram, which eventually adds up quite a bit, so I will test that this week and hopefully get that merged, and that will be excellent, and a group hug for everybody. So next up I have some notes from C Grover, who has a hug report to FOMI Guy and John Park for the past week's streams, always something new to learn, and a group hug. And next up is Dan. Can you hear me? Yep. Okay, thanks. I'm using a non-standard setup at the moment. Thanks to Lady Aida and to Jeff for doing an incredible amount of work on floppy disk stuff, which you've been reading about and seeing in videos if you've been watching those, and also to Keir F on GitHub, who did the Grease Beasel software, which they're using as a base for all this work. It's very helpful. Okay. Excellent. Next up I have notes from David Glauda, who says ditto for the floppy disk work, to Maker Melissa for merging his PR to Pi Zero W and a group hug. I have some more notes here from Dexter Starboard, who says to Dan H for fixing the PDM mic issue and FOMI Guy for the Web Space Telescope Tracker Guide. And next up is FOMI Guy. All right, thanks Kenny. This week for NairDoc, among all the rest of the helpers as well on Discord. You know, thanks to all of those folks, but I definitely do very often see NairDoc providing really great help to folks on the Discord, so I wanted to give the hug report this week. To Kmatch, who is looking into basically the ability to read data back from a display, which I think is a really neat idea that might lead us to some improvements in testing display IO things to kind of verify things are getting drawn how we think they should. To Paul Cutler, I'm really excited to see the new CircuitPython podcast getting started up. I'm definitely a podcast person, so I look forward to listening to that. And then a group hug for everyone. Thanks. Excellent. Next up I have some notes from Jeff, who has no mic today. Hug reports to Katnien Marty for getting a setup for your service at ReadTheDoc, switching to AdFree, and switching the official doc URL to docs.CircuitPython.org. Two more NPT for understanding the importance of paying for these free software services we rely on. It is a good example to follow. And finally, to the approximately 59 contributors to MicroPython 1.18, which was recently released. Next up is Jerry. One for us. Hi. Yeah, thanks to Dan for the great guide using async.io and tenu for his nice guide on using the Broadcom posts. Both nice to catch up on how to do things. And a group hug. Excellent. Thank you. Next up is Kmatch. Thanks, Katnien. One hug today for Scott on the live stream for some guidance on how to talk to displays. Thanks, Scott. Excellent. Next up is Maker Melissa. I just wanted to give a group hug to Ricardo Casada for writing and maintaining BluePad 32, which allowed me to use a PS4 controller with CircuitPython. A hug to Kevin Confer correctly identifying why a PR for Adafruit CircuitPython Fundhouse was not using the correct request library version. And for Dave Goupott for finding some hard to spot issues on the Adafruit Finance documentation compiling. A group hug to everyone else. All right. Excellent. Next up is Scott. Hello. First a hug to Ivan, IGRR, who's expressive and for helping me fix Wi-Fi on the S3. A hug report in advance to the Mindvirus who wrote an issue with a tip for maybe solving my Raspberry Pi interrupt issues, which I'm very excited to read. I'm not coming this weekend, but I haven't dug into it yet. Thank you to Dee Kulinski for adding support for 128 plus by eInk and NIT sequences. I think this may enable doing like personal refresh stuff, which could be cool. And then thanks to everybody who's posted a CircuitPython 2022 post. I'm excited to look back at all of the other posts this week during my deep dive. Excellent. Next up, I have notes from TechTrick, who says, a hug report to Kader Neusen for helping me test an old PR with the DRV2605 haptic controller, to Katny for helping me figure out how to trigger LearnGuide updates, to Anecdata for helping me with the PR for the ESP32, to Maker Melissa and Liz Clark for writing the Pi Badge LearnGuides I can use to learn up for my current project, to FoamyGuide for always chiming in on PRs and issues to keep things moving and a group hug. And that rounds out hug reports. Next up is status updates. This is a chance for everyone to talk about what they've been doing since the last meeting and what they're going to be doing until the next meeting. Take a couple minutes, let us know what you've been up to, what you're going to be up to. This is also held as around Robin, where I will start and then go through the list alphabetically. I will be reading off some notes for folks that left notes for me that are not in the meeting. And then we'll call on folks as I get to them. So I will get started. Last week, I published the basic TFT Feather ESP32-S2 guide. We have so much going on right now that instead of waiting for board guides to be absolutely complete, we have been putting together the most basic info that will help folks out and getting that live and then working through the rest of what we have going on. So that's where the TFT Feather ESP32-S2 guide is at. I set up a recurring sponsorship of Read the Docs with the help of PT and Stella at a level that makes our documentation ad-free and gives us a custom URL. Worked with Justin, one of our web devs to get the custom URL going. docs.circuitpython.org is now a thing. And all of the Read the Docs links work just automatically replacing circuitpython.readthedocs.io with docs.circuitpython.org. We are currently working on a patch to update the library documentation to reflect this update. It's going to take a little bit of cleanup, which Community Member Tech Trick has offered to help out with, which is excellent. And circuitpython.org and Cookie Cutter now use the new Docs link already, so any new libraries generated will have the proper setup and we're working to update the previous ones. I refactored the ESP32-S2 installUF2 bootloader and factory reset templates to have all the relevant content in the factory reset template page and have the install page point to the factory reset page in each guide. What happened here was we had two templates that were mostly duplicated information unintentionally and then realized we had two templates that were almost identical and needed to be sort of smushed together and we went with the factory reset template to have all that info in it and now we will still include a installUF2 bootloader page, but the page basically says hey, you can accidentally clobber your UF2 bootloader if you do, please go to this other page and follow the steps. That way, if this information needs to be updated, we're only updating it in one place. And then I updated all the instances of these templates and all the guides that already existed. I submitted a PR to CircuitPython to add the button pin to the TFT feather and then updated the pinouts page and pretty pins to include the button. Added the UFL version of the QDPy ESP 32S2 to the guide and continued working on the QDPy ESP guide. Like I said, we are publishing barebones guides and then going back and finishing them. And so the current one that I am working on, which is now into this week, is finishing up the QDPy ESP guide. All that's left is the CircuitPython Essentials pages. Then I'll be going back to finishing up the feather TFT guide. I have to test the pretty pins PR to make sure it does what is expected and then get that merged. Upcoming guides that will happen at some point are the Arcade QT which there is already a guide out from John Park. So if you have one of those and you're interested in how to use it, check out John Park's guide, but eventually we will have a guide for it. And then the MCP 4725 already has a guide, but we've released a STEM QT version of it. And so the guide needs to be updated to reflect the QTification of the board. I need to finish up the template for the .star status LED on boards that have a single .star versus boards that have multiple .stars like the Fun House, that page already exists. The single .star does not. I need to make sure the factory reset template for RP2040 is good to go. It was on my list with the ESP32 one, but that was done separately. So I need to go back and make sure the RP2041 is all set, has all the relevant tempo, etc. And then at some point do the async.io template per circuit pipeline essentials and that will go into all the guides. And that's where I'm at. So next up I have some notes from C Grover who is text only today. Was attempting to get the 2.4 inch and 3.5 inch TFT feather wings to work with some projects that use Adafruit button but the touchscreen driver was incompatible. Added a single property to the STMP-E610 spy driver with the objective to provide screen coordinates just like the Adafruit touchscreen library. After some trial and error the revised driver is working nicely with the C Grover touchscreen calibrator helper. Added display size and calibration parameters this morning in advance of testing it with buttons later today. As I've tried noted the relationship between the touchscreen and display axes isn't always what you'd expect. Calibration values can vary widely from default with different touch screens not too critical if buttons and drawing pens are large. And then we'll take another, we'll be taking another look at the retro widget collection to reduce dependency on floating point calibrations and improve RP2040 performance while maintaining normalized screen coordinates and flexible object sizing. Next up is Dan. Okay thanks. So as mentioned I made a 711 release primarily to fix a problem with the PDM microphone that's on board the CPX since that was a significant regression and a lot of people have CPXs. I did some triaging of other bug reports finding that some were true and some were wasn't clear what was going on. A user found a problem with one wire, an ESP32S2 so I fixed the obvious problem with that. And then we discovered that it still didn't seem to be working right and NeroDoc figured out that the UF2 version was working but not the bin version of CircuitPython. And I could see differences in the timing when I looked at the CLA traces which is really odd. And I cannot figure out why this is true. The only difference between these two versions is that they have slightly different versions of the second stage bootloader but it doesn't seem to do any difference in setup in terms of timing or something so that's this is still a mystery. The next sort of most interesting stuff I'm working on is that we're going to try to have USB mass storage supply more than one logical unit which means present more than one drive and that would mean that maybe you could look at CircuitPy and say the SD card at the same time when you plug in your CircuitPython board so that would be very helpful if we can get this to work so I'll be working on that. Okay. Excellent. Thanks Dan. Next up I have some notes to read. First of all from David Glaude who says in terms of CircuitPython testing Broadcom port on Pi 0 version 1.2, Pi 0 version 2.3 and Pi 0W adding Pi 0W to CircuitPython.org slash downloads non-CircuitPython extending my Ethernet and Wi-Fi network and moving my quote data center from visible in the living room to a closet opposite. And next up is FOMI guy. All right. Thanks, Cadney. So last week I finished up the Pi Portal busy simulator as well as the MAGTAG web telescope status project and there's guides published now for both of those who are interested. Continuing with PR testing and reviews including lots of soldering last week. A couple of them that were particularly interesting were the HT16K33 and the Max 31865 but there were some others in the mix last week as well. I made a PR for the Pi Portal library to allow it to have a forced content type which it turns out fixes a project that was pulling information about discord member counts. It was pulling it out of an SVG and somewhere along the way the library updated to try and treat it as an image. So now we can just kind of skip whatever the server tells us and go ahead and treat it as text. This week I'm writing up a guide for a new project for a Niko Cat sprite animation so that's just a basic little display animation where this cute little cat will run around the screen. I am going to be doing some experimenting this week with Winamp skins. I'm trying to narrow the high level approach down to either using the actual skin assets and building up the UI from all of the individual components or alternatively starting from the skin preview image which has everything kind of in place already and then maybe cutting out a few sections where we could then put some dynamic text into. So I'll give a try to those and see which one seems more promising for getting Winamp skins into display IO. I'm going to be looking into some modifications in the core to try to figure out how to make things accept a file name instead of an open file. We did some of that in display IO recently and there's a few other spots where that same change could be made so try to figure out how that works. And then this week I also need to be doing and publish my CircuitPython 2022 and I'm also very excited to read all the others. I saw the big list up there that's published. So that's what I have going on. Thanks. Excellent. Thanks for having me guys. Next up I have notes from Jeff. Last week MFM Floppy Drive Reading PRD, Adafruit CircuitPython Floppy in Jeff's personal GitHub did one tiny bit of the read the docs changes. This week more floppies. This is implementing flux writing in Adafruit floppy continuing to move the CircuitPython pull request forward and after flux writing in grease weasel compatible firmware in Arduino will try MFM writing to enable writable floppies in CircuitPython. Next up is Jerry. Hi. So let's couple of days I shamelessly took a project from an idea from a discord user question and turned into something fun that I wanted to do. The idea was to take an RFM9X radio to transmit thermal image from one of the MLX 9060 Fix 40 cameras over to another board to do the display or whatever you want to do with it. So it just seemed like a really cool project. So I decided to try it out and then it got a little proof of concept thing working and it's really fun. So it's the first time I really tried taking a large sort of data set. This isn't real big 768 bytes and breaking it up in a bunch of small packets and reconstructing that on the other side. So lots more to do now to make it reliable and put some displays on it but didn't find work on and then spent a bunch time playing with a little of these maker PI boards for the Raspberry Pi Pico. I hadn't really done much with it. It turns out finding it really a useful little development platform. It's got lots of nice LEDs on it and a whole bunch of grove IDC connectors which are compatible with the StemAQT connectors just with the right little adapter cable. So it's really easy to plug stuff in and try it out. And then I finally found some time to work through some guides. The ACNKO guide was really nice to go through. I've been meaning to do that for a long time. Nice stuff to play with. Thanks. Excellent. Thanks Jerry. Thank you. Thanks Katni. So I've been thinking a little bit about talking to displays and usually you just want to write to a display but there may be times when you want to read what's on the display whether to check whether it's working right or maybe some other creative project you've got. So I demonstrated that it's possible to read via SPI if there's the right pin and I demoed that with one type of display called ILI 9341 and Arduino. So that's a good starting point that it's physically possible. And this week I want to see exactly what's required to get that into CircuitPython. So at least rough out what kind of code is necessary and where it belongs. So that's what I got for this week. Excellent. Thank you. Next up is maker Melissa. Hello. Last week I was out sick for most of the week. Worked on the days I was there. I worked on porting LittleFS to JavaScript which involves converting many C functions over to the closest JavaScript code or equivalent of it. And I also worked on a side project over the weekend and was able to get a DualShock 4 controller working with CircuitPython. And this week I'm going to continue porting LittleFS and hopefully start getting some output soon which is when it gets fun. That's where I'm at. Perfect. Thank you. Next up is Scott. Hello. Last week did my own CircuitPython 2022 post and a stream for it. I fixed the ESP32S3 Wi-Fi, the import Wi-Fi bug thanks to Ivan's help. I shouldn't take a lot of credit. Ivan suggested a fix and it worked so I just committed it. I switched CircuitPython and TinyUSB to the core on the S3 as well. And then this week it's a short week because it's Tuesday and this is my first day of the week. Took yesterday off. The first thing I'm going to do after I get caught up on email and stuff is testing requests on the S3 without PS RAM. I think I should be able to just make the heat bigger and then it'll work. We'll see. And after that I'm hoping to go heads down on the ESP-Beeley. It uses Nimble which I'm pretty excited about. It's a kind of standard Beeley library that MicroPython uses and could work on NRF as well. So I'm pretty excited about it. So I'm excited to get that working on the ESP and then maybe we'll be able to use it on some other boards too. We'll see. All right. So finally I have some notes from TechTrick. Last week more library typing PRs trying to look at documentation improvements at the same time. Removed game pad shift from old examples projects in favor of keypad so they'll continue working in CircuitPython 8+. This week working on the CAD model for a Hanukkah menorah that connects the internet and lice itself every night. Luckily I have a long time before it's needed. And working on my first Beeley and Display.io project, a discord bot running from a Raspberry Pi connected by a Bluetooth to Pi badge to create a two way message pusher and quick response device I can use to communicate with friends while playing games. And that is status updates. Which brings us to in the weeds. In the weeds is an opportunity for more long form discussions about any sort of CircuitPython related topics etc. This week we have two topics and neither of the folks are able to speak today so I will be reading them off. First up I have a topic from Tech Trick. Currently the lack of implementation of underscore typing or eventually CircuitPython typing in Blinka means that it can't be used for type annotations in libraries. C Python will error upon trying to use the typing either with import error or eventually fail with module not found error. When using the typing try catch block we're using for library type annotations not an issue for CircuitPython however. In implementation for Blinka would fix the issue so it leads to the following scenarios or options. First up underscore typing CircuitPython typing can be implemented in full for Blinka but that cascades into other issues like lack of other libraries. Which is to say something like rgbmatrix. rgbmatrix is valid readable buffer but rgbmatrix is not implemented for Blinka either. The second one is it could be a subset for Blinka but he's not sure how that would affect type checkers. Biteray and bytes are implemented as readable buffers and rgbmatrix for example can be left out since it would never be used on C Python. And third it can be avoided and only code in valid in both CircuitPython and C Python should be used for typing. Most of the time this wouldn't actually be that different that the expectation for most libraries but then typing would be an issue for the few cases it is. Texture's initial guess is that option 2 is sufficient because Blinka only needs to implement code that would already run in C Python since any type checker running or writing code would for use with Blinka would only encounter those subsets anyway. Anybody have any thoughts on this? It would probably be nice to go through Blinka but the code base is actually pretty big right now so it would take a while and if somebody wants to take that on that would be awesome. I'm pretty sure TechTrack is willing to take this on. I don't think they brought it up because rather I don't think he brought it up because he's been going through all the typing PRs on CircuitPython so this is right up his alley. Okay cool yeah I mean it would be ideal if he could go through the whole thing but if he can get it working with a subset I'm fine with that too. Okay. I don't necessarily think they're proposing typing all of Blinka either it's just implementing CircuitPython typing in the Blinka library so it can be imported. Oh I got you. I did like a small subset in the Blinka display IO for that and maybe they could use that one. Yeah just move it over to regular Blinka. Yeah. I think subsets the right way to go if we need to do RGB matrix stubbed out then that could work too but you can have placeholder classes in Blinka for stuff that doesn't work. Right I think I did called it underscore typing dot py or something like that. Yeah it just got changed it was underscore typing and now it's CircuitPython typing. Ah gotcha. Okay. And yeah by doing a subset then we can just expand as needed. Yeah I don't know how regular Python handles that where like you have different like Blinka would say readable buffer but then like RGB matrix would be pulled in by like display IO and want to be counted as that as well. I don't know how that works. I'm not sure. Well Tech Tricks really great about asking questions so if there are further questions I'm thinking the subset I did for the display IO might be very specific to the display IO stuff so but they could use it as a reference maybe. Yep. Okay so I'm going to read off Jeff's chat because I know he doesn't have a mic and he's saying stuff about this and I want if nobody's watching the chat they can hear this. So Jeff says I think if Blinka ship CircuitPython types is an importable module the typeshed version would still be used when type checking but it needs to be tested. If that's true then doing the subset will be fine. If we renamed it from underscore typing we circuit by then typing or underscore types because typing was not a good name to squat on. Yeah typeshed version equals a PYI file. Alright I think we have a good start or at least a good answer for Tech Tricks to start with. So I'm going to move on to the next in the weeds topic which is from Jeff who I will read it off. Does anybody know why the ESP32 S2 builds are now failing in Maine? They are fine locally for me. Anybody? Ah I know Dan pinked me about something that I broke with one of my changes. Well it looked like what was really weird is that it worked for you and then you submitted the PR and then when it did the merge it stopped working. Yeah I'll just take a look at it. Yeah if you could just look at that and then and I think what Jeff is saying is that he tried to build it locally and it worked too so he was unable to figure out what was going wrong. So it's really odd that it worked. Sometime between something must have been merged in between the commit that was used for the PR test build and the PR merge build which broke. Yeah Yeah that's all. Yeah I plan on it. I'll take a look at it. Yeah okay. Excellent That answers that Ben. Okay that is all we have for in the weeds. So I will go ahead and wrap us up. This has been the Circuit Python Weekly for Tuesday, January 18th, 2022. Thank you to everyone who participated. If you want to support Adafruit and CircuitPython and those of us that work on CircuitPython please consider purchasing from the AdafruitShop 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 next week. Visit adafruitdaily.com to subscribe. The next meeting will be held on Monday as usual I believe and that would be the 24th of January so January 24th at Eastern 11am Pacific. This meeting is held on the Adafruit Discord which you can join by going to adafru.it slash discord. To be notified about the meeting and any changes to the time or day you can ask to be added to the CircuitPython Easter's roll. And with that we hope to see everybody next week. Have a wonderful week.