 Hello and welcome to the CircuitPython Weekly for April 26, 2021. This is the time of the week where we get together to talk about all things CircuitPython. My name is Scott and I work for Adafruit on CircuitPython. CircuitPython is a version of Python designed for tiny computers called microcontrollers. Adafruit is an open source hardware and software company based out of New York City. They make a lot of electronics that have microcontrollers on them. So they sponsor much of the CircuitPython development. And so if you want to support CircuitPython and Adafruit, you can go to adafruit.com and purchase hardware from them there. A number of us in this meeting, but not all of us are paid by Adafruit. OK, this meeting is hosted on the Adafruit Discord server. You can join anytime by going to the URL adafru.it slash discord. We hold a meeting in the CircuitPython dev channel, text channel, and the CircuitPython voice channel. This meeting typically happens on Mondays at 2 p.m. Eastern Time, 11 a.m. Pacific, or a few minutes thereafter, except when it coincides with the U.S. holiday. If the meeting time has changed, we'll notify you via Discord. If you want to be notified about changes to the meeting, we can add you to the CircuitPython nieces role on Discord that gets mentioned when we change things. There's also a calendar available that we will try to keep updated if you'd like to subscribe to that. This meeting is recorded. We record the audio from the voice channel and the video of the text channel. If you'd rather not have your voice recorded, you are still welcome to participate. The video of this meeting will be posted to YouTube and the audio is released as a podcast. If you find this podcast is not available in your favorite podcast service, let us know. There's a note stock to accompany the meeting and recording. If you wish to participate but can't make it to the meeting, you can leave for hug reports and status updates for us in the document. We'll read them off during the meeting. The note stock also contains timestamps to go along with the video, so you can use the doc to view only the parts of the video that interest you most. The meeting tends to run 60 to 90 minutes, so this gives you the option to skip around. A link to the notes document is posted to the CircuitPython dev channel on the Adafrit Discord every week. Check the pin messages of that channel to find the latest note stock. This meeting is held in five parts. The first is community news. This is a look at all things CircuitPython and Python on hardware in the community. It's preview of our Python and microcontrollers newsletter. The second part is the state of CircuitPython libraries in 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've all been up to. Third, we have hug reports. It's an opportunity to highlight the good things folks are doing, taking the time to recognize the awesome folks in our community. Fourth is status updates. Status updates is an opportunity to sync up with what we've been up to. Take a couple of minutes and talk about what you've been doing in the last week, since the last meeting and what you'll be up to over the next week until the next meeting. The fifth part is in the weeds. It's an opportunity for more long form discussion. These discussions can come out of status updates. It would be something you've identified ahead of time as too long for status updates. What you do is just add your topic and your name next to the topic to the note stock in the weeds section. We'll hand it off to you. So, heads up for that. And that's how the meeting goes. Let me switch to the note stock and I'll take a time code and get going. So, our first section here is community news. Adafruit is sponsoring PyCon US 2021 as a participating sponsor. Adafruit is a sponsor of PyCon US 2021. PyCon is the largest annual gathering for the community using and developing the open source Python programming language. It is produced and underwritten by the Python Software Foundation, the 501C3 non-profit organization dedicated to advancing and promoting Python. Through PyCon, the PSF advances its mission of growing the international community of Python programmers. The conference is happening May 14th and 15th, 2021, with sprints to follow. Learn more at PyCon.org. Next up, we have that Mu 1.0 Beta 4 was released. So, Mu 1.0 Beta 4 has been released. This release includes a number of bug fixes and back end updates, including a new way to detect circuit Python boards and find the circuit Python REPL connection. Check out this post for details. Thanks to Fomy Guy for dropping notes in the text channel. Since this is a beta release and may have bugs, they've asked that folks provide feedback via GitHub. Learn more and download the latest Mu from code, the URL codewith.mu. Now, a couple of projects to highlight from the newsletter. First, let me take a timecode, is an animation demonstrating the Adafruit Circuit Playground Express acting as an intervalometer to remotely fire the shutter on a Sony camera using infrared commands. The code also features a manual mode where the CPX is left button fires the shutter, both useful for stable vibration-free photography. There's a YouTube video there as well. Next up, in projects, the Pico Touch PCBs designed to work with the Raspberry Pi Pico and Circuit Python from Twitter. These are also from ToddBot. And last up, and this is just a preview, everything in the newsletter. Last up, we have the PaintTenator 9001, which is a custom pen plotter for those with particular disabilities. Running Circuit Python. There's a YouTube video there, along with a GitHub link. And this is super cool. This is bringing painting, making painting more accessible for folks who may have dexterity issues, preventing them from painting themselves. Okay. And lastly, just a reminder, the Circuit Python Weekly newsletter is a Circuit Python community run newsletter emailed every Tuesday. The complete archives are available at the URL www.adafruitdaily.com slash category slash Circuit Python. It highlights the latest Python on hardware-related news from around the web, including Circuit Python, Python, and MicroPython developments. To contribute your own news or project, edit next week's draft on GitHub by going to github.com slash adafruit slash Circuit Python Weekly, Circuit Python dash weekly dash newsletter. Check the underscore drafts folder there for the latest draft and submit a poll request with a link there to how to edit on GitHub with the changes. Email also tag a tweet with hashtag Circuit Python on Twitter or email cpnews at adafruit.com and we'll add those things as well. Next up, we have state of Circuit Python libraries in Blinka. This is a statistical overview of the health of the project and its many pieces. So this is meant to kind of ground us in the numbers how we measure participation and activity and things like that. So folks have ideas for new metrics. Please let us know. We'd love to evolve this as well. But these metrics we have now we've actually had for a while. So let me go over those. So first off, overall, we had 108 poll request merged, which is a lot more than that usual, which is great. We had 34 different authors. So that's just not all one person doing a bunch of stuff. So just a few names here. Eddie Spinnett, Spinal, Zapwizard, Colin WQ, Be My Souls, JCC99, Brian Pugh. Our names that I don't recognize. Deer Mash, Z Simso, Gu Enter Q, Empirical Dan, Stone Hippo, and Nini Coco are all folks I don't recognize. So welcome to the new folks. We had 14 different reviewers. So thank you to all of our reviewers for reviewing those folks and enabling those authors. As always, we're looking for more reviewers so that we can scale out to more authors. So if you want to level up probably from author to reviewer, let us know. We'd love to help you do that. Overall, issues-wise, we had 38 closed issues by 19 people, 24 opened by 18 people. So we're net down 14, which is awesome. Thank you to everybody who's been working on those issues. And with that, I'll switch to the core and we'll talk about the core updates in just a bit more detail. So for the course, Circuit Python Core, we had 25 pull requests merged from 21 different authors. I won't read off the new folks there. So just thank you to all of those folks as well. We had six reviewers. So thank you to reviewers. We have 21 open pull requests. And as always, if you're looking to help us out with the core, there are a few pull requests that are getting quite old. We have looks like six older than 100 days. So if you those probably need somebody to pick them up and take a look at them. So if you want to help us out, that would be awesome. It's really good practice reading code and understanding what somebody's going for. So it's good practice. It's not easy, but it would be super helpful. Issues-wise, we had four closed issues by two people and 13 opened by seven people. So we're definitely not helping our issue count for a total of 440 open issues on the Circuit Python Core. We have five active milestones. We use milestones to track our triage, making sure that we've looked at all the issues and decided what priority they're for. We have five issues not assigned to milestones. So we're going to have to catch up to there. Pretty typical actually over the weekend though. So nothing to worry about there. We have 57 open issues on 7.0. So we're going to have to take a look at those before we do a stable release. Overall, the big thing is that we're firmly in 7.0 work land on the main branch. So if you're working on main, be aware that things are changing a lot. I've started to merge MicroPython stuff in and that's going to cause a bit of turmoil and potentially introduce some bugs. But we'd love folks to use it. If you feel brave, let us know if you find issues and if you want to help us out and fix those issues that will come up, we'd love to help too. Just be aware that that's going on and it'll put us in a better place for 7.0, but it will probably have a bit of instability here in the short term. And thank you to the anonymous rabbit for writing the notes. And with that, I'll kick it over to Katny for an update from the library side of things. Thanks, Pat. So on the library side of things, we had 77 pull requests merged and I would like to point out that we did not do a CI sweep. This is other folks who are putting in either PRs for new stuff or going through the older PRs this time. So that number is big and it's worth noting. We had 15 different authors, including some of the names that you read off earlier, which I will not read off again. And 12 reviewers, two of whom I would like to point out, K-Match 98 recently joined our review team, which is excellent. And Trev knows is a name that I've also not seen, so thank you to our new reviewers. In terms of our merged pull requests, we had 1, 2, 3, 5, 6, 7 older than a week, one of them almost 100 days old, so I'm really, really happy to see that. Leaving us with 59 open pull requests. We have 34 issues closed by 18 people and 8 opened by 8 people, so apparently we're the ones doing well with the issues. Leaving us with 308 open issues. Five 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'll find all of this information and more open pull requests, open issues, and library infrastructure issues. And this applies to all the Adafruit Circuit Python libraries and a couple of extras as well. And so this will have all of the issues open across all the libraries in one place. So you can go and you can search that. If you're new to everything, good first issue is a good place to start. If you want something a little more complicated, you can search for bug or enhancement. If you're interested in picking up an issue, please make a comment on it and let us know. And then you can start working on that code. If you're interested in checking out open PRs and helping out there, take a look at any of the open pull requests, see whether or not there's a syntax error or like anything like that. And if you have the hardware, test it and leave a comment. That's the best way to start reviewing is to just comment on PRs that you've taken a look at it. And once you feel comfortable with it, we can level you up to actually joining our review team. We had a number of updated libraries this week, but no new libraries. So overall, I'm happy to see the flurry of documentation updates and improvements happening. Early Hug Report to Jose David for picking that up. I'm also super excited to say that the oldest PR that we have across the libraries has been tested successfully and is essentially ready to be merged. We're looking at separately, we're looking at updating the CI across all the libraries to include more information when pilot and black, et cetera, fail. So folks will know what to do instead of us either having to tell them or them figuring it out on their own. That should streamline PRs quite a bit. And it's worth noting GitHub made it apparently, according to them, so that first-time contributors require someone to approve the CI to begin running. It's to avoid folks abusing the CI with malware. But that means that it's really important that we keep up with new PRs so that new folks have a positive experience. So if you are on the review team and you want to keep an eye on that, that would be great. It's definitely something that we internally have to take on because making sure that new folks have it smooth is really important to whether or not they continue to contribute. So we want to make sure that they're having a positive experience there. And that's where we are with the libraries. Awesome. Yeah, thank you, Katnie, for pointing that out. That's really important. Really important to note. There is a question, do we know that if it's a per repository basis or organization, in terms of whether somebody is a first-time contributor, I guess? I'm not sure. I do know that I have shown up as a first-time contributor on our own libraries before. So if they're using that, like where when you submit a PR and it says first-time contributor, if they're using that indicator, then it's definitely on a per repository basis. But that's something that I will put a note down to look into and make sure that we have some absolute information on that. Yeah, I think the other thing we can think about is whether permissions let you get around that. So like if you're a collaborator on a particular repo, maybe it still allows you to do that. And we could be more generous with that as well. Yep. If that helps, I'm not actually sure whether it does or not. I would assume it would, but maybe it doesn't. Cool. Thanks, Katnie. Yep. All right. Next up, we're going to check in with Maker Melissa about Blinka. Hello. So for Blinka, we had this week, which Blinka is our CirclePython compatibility layer for Raspberry Pi and other single-board computers. And this week, we had six pull requests merged by four authors and two reviewers. There are seven open pull requests still amongst all the different libraries that are Blinka-related. There were zero closed issues by zero people and three open by three people, leaving a net of 60 open issues. There were 8,662 Pi PI downloads in the last week, and we are currently supporting 72 boards. And that's it. Awesome. Thank you, Melissa. All right. Moving on to our next section, which is Hug Reports. Hug Reports is a chance for us to say thank you to the folks in our community who are doing awesome stuff. We do this around Robin, so I will start and then we'll go through the list of folks that are listed in the note stock. If you're looking or don't want to speak or you're not able to make the meeting, feel free to put text in the note stock and I'll read it off for you. If you are in the voice channel but do not have an entry in the doc, I will just skip over you automatically, so nothing to do there otherwise. If that's not your intention, then drop a note in the note stock. For that, I'll start off. Mine's short and sweet because I've had heads down and been sucked into merge land, but I wanted to give a quick hug report to Aniqdata for working on the ESP32-S2 access point mode, which has come up in some folks have asked for, so I'm excited to see them picking that up. And with that, I will circle around, and Aniqdata is actually the next person on the list who has some notes and says group hug. Next is notes from C Grover, who says, hug report to Professor Dan Bruton for the simple spectrum to RGB interpolation routines he wrote in the FORTRAN 25 years ago, and a group hug. Next up is Charles. I'm just giving the usual group hug. I listen to this group all the time, and I get more and more information from it. Thank you very much. Thanks, Charles. All right, next up is Dan. I'd like to thank Jose David, who's been cleaning up documentation on a huge number of libraries. That's really helpful in adding better examples and keeping me busy on reviews for that. Thanks to Scott for the idea of merging the MicroPython versions one at a time. That makes a lot of sense. Thought I had it one time ago, so I could have been doing this earlier. Thanks to Jeff, who's struggling with some extremely flaky camera hardware. Like, you have to seem to buy half a dozen of these cameras at a time when you ever get a few that work. Thanks to Cadney for doing all the newsletter work while Anne was away. And thanks to Dave Putz for looking at pulsio stuff, which is really complicated, and I wouldn't have known where to start on that. Thanks for solving some issues there and continuing to look at some issues. And thanks to Star Girl, ViaCodes, who wrote up a really wonderful blog post about SAMB21 brownout detection, just making it absolutely clear. All right, awesome. Thank you, Dan. Next up, I have notes from Dave Putz, who says, Huggerport's Tandu, myself, for good direction on where to look for a puzzling pulse-in issue, and a group hug. And next up, I have notes from David Glaude, who says, Huggerport's Carter for the addition of the Pico U2IF Toblinca. I was a backer of the RTK.GPIO that gives Raspberry Pi-like GPIO to your Mac PC or Linux, and I love that it's possible with the Pico U2IF Toblinca. And there's a link there to Pi Supply and a Huggerport Tandu for merging more MicroPython into CircuitPython and non-CircuitPython conversation. Yeah, that's a separate thing. And next up is FoamyGuy. All right, thanks, Scott. This week, I got hugs for NiroDoc, Johnny Bergdahl, Hugo, Dexter Starbird, and Lays Samurai-Pourpay. And also anyone else who has sung out on the streams, if I am forgetting any names, that's possible. But lots of these folks have been tuning into my streams and also giving me really good pointers in the chat when I get stuck on things or if there's better ways to do things. I've learned a bunch of nifty new stuff from these folks, so I really appreciate that. And then a group hug for everybody else. Thanks. Awesome. Thank you, FoamyGuy. Next up is Hier effect. Eddie, thanks this week to Dan for answers and discussions regarding the power stuff across all ports. Thanks to Jen Tisak, who's working on the NRF Alarm System for all the cleanup and changes he did this week. And thanks to Jeff for working on all this cool new camera stuff. That's it for me. Thanks, Lesion. Thanks, Lesion. All right. Next up is Hugo. Thanks, Scott. First hug report for NRDoc and FoamyGuy for really interesting bits of Python I kept picking up this weekend, especially Saturday evening. There was just a lot there to soak in to Jose David for putting me to the first resources I had to look up or just kind of relearn about and remember, make me realize that I probably know more about kids than I thought I did. So a little less imposter syndrome. Thanks to Scott again for the book recommendations. I've been reading those waiting in a carpool line for my kids at school. And it's just been a informative way to pass the time. And finally group hugs for everyone. Awesome. Thank you. Here you go. Next up is Jose David. Hello. Thanks to Hugo for always being my GitHub advisor. Also, the user needs in the Discord channel to help in the GitHub help channel. Also, Courtney for solving the problem with the infrastructure issues the link is attached. Thanks to Kimmash for leaving this detailed review of my slider widget. And also to Fomeguide that this morning left a review. I think now we have some conversation to do regarding the architecture for the widget. So thank you for that. And last to Dan and Courtney for working with me to establish a standard for the documentation on the libraries. Thank you. Awesome. Thank you. Next up is Jeff. Oh, sorry. I'm in trouble finding my unmute button there. Also, I'm out of alphabetic order, but that is my own fault. Yeah. So I wanted to thank Jerry for jumping in and testing with the OB7670 camera. It's always nice when somebody says it works. Memorial and I were just discussing earlier some stuff related to image processing and machine vision, which I will be learning about. And I wanted to thank her for the pointers. To you, Scott, for working on the MicroPython Merge and of course to MicroDev for setting the stage with a couple of important bits. And Katny, congratulations on your awesome stint as the author of the newsletter. We really relied on you to do that and you did it. Awesome. Thanks, Jeff. All right. Next up is Katny. Thanks, Jeff. All right. So first up, a hugaport to Naradak for catching such an obvious issue with someone running into problems installing Circuit Python after I tried a bunch of unnecessary troubleshooting. It turns out they were loading the wrong build. To Kmatch for joining the Circuit Python librarian's review team, way to level up. To Jerry and Mark Gambler for testing CPU temp on the RP2040 as a sanity check for me. Seemed like it was running incredibly high, but turns out it's pretty typical. Thanks to Dan for reviewing some code I submitted for a learn guide and catching something I missed both in that piece of code and in a template code that I had created, which meant it would have just been propagated to all uses of that template. So thank you for that. To Anne for helping me with the newsletter earlier today. I'm still finishing up this one this week, but she helped me out a bunch this morning getting the final stuff in. To Jose David for blowing up my inbox with documentation improvements. And then to Dan and Lady Aida for keeping up with a huge number of those documentation PRs. It's great to have a blown up inbox and then archive half of it. To AJS256 on GitHub for submitting their first contribution to the Circuit Python core. It's fixed for an issue I filed. So I'll be testing that today or tomorrow. And hopefully getting that merged if it works. And then also to Naradoc as well for reporting a bug in the learn system with a single page view. It turns out that the table of contents links on the side don't go to where they're supposed to even though the anchors exist. So I reported that to learn and they're looking into it. So thank you so much for letting us know that because if somebody doesn't report things like that we don't know about it. And that's what I have. Awesome, thank you, Katnie. Next up is K-Match. Thanks, Scott. So a lot of hugs this week. So first to Jose David for the slider widget. And particularly for all those library PRs that you're putting in. Appreciate seeing those. And in particular, I appreciate your creative suggestions of how to use the documentation and how to make it easier to organize. Particularly some notes you sent out today. It looks like great options. So looking forward to working on some of that with you. Thanks to FOMI Guide for the updated learn guide on the fonts and font files. So hope that'll answer a lot of people's questions so they can do more cool things with type on the screens. Next is thanks to PyGuru as a user on GitHub who made a big contribution to TinyUSB for test and measurement equipment. Particularly they're really gracious comments about the capabilities and limits of that library. So it's good to have somebody to help guide me through some learning how to use that. Next is thanks to Scott. Thanks for your guidance on the TinyLogic friend, Logic Analyzer. So it's good to have some feedback of which direction to go on that. Also want to echo Dan's comment. Thanks to Stargirl for sharing the information about the bootloader fixes. I've never looked into that. So she wrote a great intro or insight into that which to me is Blackmagic that's been handed down from the ancients. Appreciate putting at least some basic knowledge about what is like there. So and last thanks to Katni. So it seems like everywhere you turn there's a new system to work through and understand and relate to the circuit Python world. So good to have a Sherpa like you to help guide and point in the right direction to get through those things. So thanks Katni. Thanks everybody. Thanks Kmatch. All right next up is maker Melissa. I wanted to give a hug to all the reviewers that reviewed PRs over the weekend. It seemed like there are a lot more notifications than usual. And group hug to everyone else. Thanks Melissa. All right two more notes from folks. First up we have a note from Mark who says hug report to Microsoft for the quick review on the weekend. And then from Stargirl. We have a hug to Dan H for helping me track down the source of flash corruption on a SAMD 21 board to think then led to the awesome blog post that folks earlier said hug report to. All right now next up we have status updates. This is done just as a round of it as well. Except this time we want to hear briefly about what you've been working on in the past week and what you plan on working on in the coming week. This is a great way for us to share tips and tricks. Have an idea of what folks are working on and collaborate. So with that I will start and we'll go through the list just like we did last time. So for myself I'm working on merging in MicroPython. I'm doing it in stages. So we started at somewhere between 1.94 and 1.10 releases of MicroPython. So the update to 1.10 is in. The update to 1.11 is in draft PR. So there's a few boards that are failing the CI but like it's mostly done. So that will maybe get into today or tomorrow. The update to 1.12 is in progress. I have it merged locally but it's not compiling. So I've got to run down all the merge changes that I didn't do quite right and get it to work. And then after that we have 1.13, 1.14 and 1.15. I'm suspecting 1.14 and 1.15 to be pretty straightforward because I think after 1.13 Damian who's the leader of MicroPython started doing them every two months. So there are smaller changes that should hopefully be easier to integrate although that varies a little bit with what work was done. So that's mainly the thing that I'm working on right now. Side note is I am getting my first vaccine dose tonight which I'm very anxious and excited for. So that'll be this evening. And then after that as a reminder to myself what I need to do a week or two or three from now is I need to circle back to getting this status LED changes checked in for 7x and then back to the BLE workflow stuff as well. I have the prototype of the BLE workflow and I'm working with Trevor who does our iOS app to add that support. So there is some work that's continuing on that. It's just not in the core right now. All right. And that's where I'm at. Let me scroll back to the top here. And we have a couple of folks left notes. So let me read those off. Notes from Antic Data says working on AP mode for the ESP32 S2. The PR number is 4650. Feel free to comment and test. And next up we have Text from Cgrover. Cgrover says revisited two projects. The dual espresso scale load cells plus lots of display IO and the thermal camera added audible scale zones slash thresholds for hands off use as well as touch screen controls for initial setup zeroing tear recording etc. It's working for now but ideally would like to create touch buttons without fills or outlines so they don't interfere with background graphics may require a PR. The thermal camera received new pseudo color spectrums to replace the more limited limiting color palette based approach developed some one dimensional interpolation methods in circuit python. The one based upon the heat signature of heated iron is working the best and looks the most like existing commercial imagers. Experience an overheating issue with a pie portal installed in an enclosure determined that the TFT backlight generated the majority of the heat. The backlight and a tiny fan are now controlled by an algorithm that monitors ambient light and PCB temperature problem solved. The next quest is to learn enough about two dimensional interpolation to implement something in circuit python for testing. Unrelated the book illustration project was bitten by the scope creep monster. Instead of 12 drawings we'll need about 44. Pretty daunting for this fledging artist but I'm still having fun. They'll just need to be patient with my slow pace. Thank you C Grover. And next up is Dan. Okay so I've been working on dynamic USB descriptors for a couple of weeks. Now when I've finished all the coding I think I'm sure I'm going to find something I forgot but I'm trying to get it to compile now and that's just a slog making sure that I've put things in declarations and include files and things like that. And then after as soon as it compiles then I can start testing in an artist and making sure that the descriptors that I'm trying to put out look good. And the other thing is that I'm just worrying right now about doing anything that we do seem to have some six regressions in 620 like Jerry found one about control C and there's some other ones that are a little distressing to me and I'd like we will need to circle back and fix those and probably backport them with those fixes in 6.2 something. So we could also do it at 6.3. That's a good point yeah that might be a good idea it depends on whether they're fixes they're just bug fixes or not. But the main thing is to get it done is to fix these things so that we have a nice stable version that works well. That's what I'm worried about. Yeah there's new boards to go in there too Yeah all right so that's me. Thanks Dan. All right next I have notes from David who says for a circuit Python nothing or almost nothing that seems to be since two or three weeks in a row no worries. Non-circuit Python related or restored a set of wireless buzz controllers with a leaked battery and adapted my working code for the wired buzz controller using Python on the Raspberry Pi. And next up is foamy guy. Alrighty thanks Scott. So for last week I merged the progress bar for request. Shout out to Hugo for all of the great work on that and then also had to update the some learn guides any of the learn guides that use progress bar to use the new syntax for importing slightly different. So those got updated and then also updated the pages that have like screenshots of the required libraries which leads into the next thing I worked on last week which was a HTML JavaScript like real simple web page that kind of made like mock screenshots of those requirements that way you could make a screenshot without having to clear off one of your devices. So that way you can kind of do it without as much cleanup. And that led to that page even though it was very manual it led to the idea from Lady Aida to try to make that process more automated and generate those images with CI like automatically for every project any time there is an update. So I got started working on that. And then some more stuff I did last week was test the oldest PR that's out there. It's a LED PWM controller and this person implemented it so that we could have them chain together for multiples. So that was really cool. If anyone is interested in that I covered that a little bit on my morning stream on Saturday. Discovered a small issue with portal base and made a PR to fix that and that has been merged today I think. And then another user also noticed that and provided a different PR which I think is also a good thing to look at because they made it a little more efficient. I just kind of honed in and fixed the one thing without worrying about efficiency. But there is an if statement that kind of makes it a little bit useless. So their other PR is pretty good there. We can take a look. And then the last thing for last week was I think I found a potential issue with the project bundler whatever it is that makes those learn guide bundles not finding libraries that are not on the top level I guess or I don't know if that's the right term but the imports deeper in than it doesn't find them. So I got a weeds topic down there to talk and I think maybe there was a fix as well for that already merged. So for this week I'm going to continue on with the screenshot utility. I need to figure out a way to try to make it discover if it needs like secrets pie and maybe font folder and images folder and other things potentially that the project uses. I would like to maybe look into how the project bundler is working. I don't have a lot of experience on that but if anyone could point me in the direction of where that's implemented I'd be really appreciative because I think we could reuse it for some of this. And then the other thing I have here is working on the well breaking out more widgets into their own repos and also getting the read the docs and the pie pie releases going. If those are set up now on the new circuit python org I want to dive back into that stuff this week. So that's what I got. Thanks. Build tools. Okay. Awesome. All right. Next up is Hierophax. Alrighty. This past week I've been working on the RP2040 as well as merges and maintenance on the NRAF 52 alarm system. I installed pre-commit to do some formatting clean up since I'm collaborating with Jinta Sock on this and he doesn't have that installed yet. So we've just been going back and forth basically cleaning up the stuff that's easiest for each of us to clean up. I caught the SDM32 alarm stuff up to the recent changes. And as for the RP2040 stuff it's just about done. It's just I'm just wrestling with some remaining deep sleep stuff regarding memory and how we're handling all that. So that should be added to the ever growing list of alarm PRs which I will be just merging and maintaining this week. Hopefully starting with the NRAF 52 once that's completely and finally tested it done. And yeah, other than that and wrapping up the RP2040 I'm pretty much open for whatever's next. So waiting for their instructions. That's it for me. Okay. Thanks Hierophax. All right. Next up is Hugo. Hugo, last week I did some work on updating the circuit Python branding during the build. I didn't get as much done there as I had wanted or anticipated. But it still made some progress. We've had an ongoing discussion in the cookie cutter repository about default branch naming and issue that was brought up there and ways we can address that. So it's been an interesting conversation and trying to think through the different models or users that may be using it. And I also got my second vaccine shot which the side effects were a bit rougher but it definitely beats just getting full on infection. So I'm glad for that. This week keep working on the circuit Python branding trying to get it to a test space and also look and see if it'd be worth using a Django templating library or JINJA or something else either the replacement or just kind of reinforce it for now and refine that as we go on. All right. Thanks, Hugo. Sorry, my brain was thinking that over. Okay. Next up is Jepler. Hello again. So last week overall I was pretty focused on the camera project there are probably a few odds and ends but we'll leave it at that one line. So this week I will be releasing the Adafruit OB-7670 library which does the configuration of this camera adding that to the bundle. I think we've decided to set aside this posterization which Lamar and I have both seen on some of the camera modules but if you change camera modules it goes away so it's probably not the code. Anyway, then next up as kind of alluded to before I'm going to be reading up particularly on OpenMV and looking at whether it makes sense to adapt it implement a portion of it in CircuitPython kind of with a view to enabling you to do more than just take the image from the camera and put it on an LCD but to do something interesting. This is keeping in mind that I really don't know much about machine vision and AI during one of the times I failed out of college I took an image processing class and was probably failing that so you know that's where I'm at that's what I'm starting with but I'm sure I can pick up enough but if you have any thoughts please don't hesitate to mention me over here in CircuitPython Dev and let me know what's what. Thanks Jeff I'm sure you can figure it out. All right next up is Jose Davi. So last week I worked in the passing the open issues. I have two questions on the way regarding that. Also I did some proto for the analog clock you can see in Shawantel just a rough prototype. I work on the elaborate documentation and I changed a little the design guide that you could go and see how to you know make a new library and this week I will do the same. I will work on the elaborate documentation. Thanks. Awesome thank you. All right next up is Catney. Alphabetically yes it's fine. We're all looking at the note stock now anyway. Let's yeah exactly. So let's see last week I updated the eight about submodule on CircuitPython.org to include some fixes that had not been included on the site including the fix that made the read the read the docs mismatch trigger on every single library no longer does that. I put up three sets of PCB files on GitHub as one per two per requests and one for a guide. I published the QDPyRP2040 guide including some new templates and created a template page for the RP2040 install instructions so that will be easier to do moving forward. This week I published my final newsletter welcome back Ann. I'll be debriefing Ann on the newsletter situation from the past month. I need to test CircuitPython PR 4667 which fixes a tricky pixel status issue that I filed previously and someone submitted a fix for. I need to reply to our oldest library PR. Hooray there was a question about documentation but the code is finally set to go it all works it's good. So looking forward to that. I put on here run through the documentation PRs but my inbox has been blowing up during this meeting with Dan and Dylan I believe who have been approving those PRs. So that's excellent I want listing for me to do or at least many less things for me to do. Then I will be... I didn't add this to the list because I added it to a different list but I'll be adding the PyPI secrets to the CircuitPython org on GitHub so that you can use them on all of the... I'll add them globally and then you can just refer to them from every repo without needing to have them. I'll get that set up so the foamy guy can do his thing. Then add any applicable existing templates to the FunhouseGuide which is to say using a button to blink an LED that sort of thing. And then start the itsy bitsy rp2040 guide. I'm going to be sorting out getting an aggregated list of all the CircuitPython libraries with a running total. We only have an aggregated list of the Adafruit CircuitPython libraries at the moment and the newsletter and mentally we include the community bundle libraries as CircuitPython libraries. So we want to get a list that has all of that on there. And Jose David has already put some work into that so tomorrow I will turn it afternoon I will be chatting with Jose David about that. Eventually look into what would be involved with automatically assigning reviewers to library PRs and then continue to template the Essentials Guide beginning with the ones that are most applicable to the latest boards. So essentially itsy bitsy rp2040, QDPy rp2040, etc. I'll start with the ones that make the most sense for that and then continue on instead of doing it in the order of the guide or anything like that. And I think there's a couple other miscellaneous things but that's about it. Awesome. Thank you, Catney. All right, next up is K-Match. Okay, thanks Scott. So just a little bit of work on CircuitPython related things, a couple of PR reviews. But she want to call out the slider widget that Jose David has created that it's bringing up some good discussion about how we want to handle touch response and basically we want some kind of general consensus on how to do that so that some consistency across widgets basically to make it easier for folks to use them in similar ways. So if you would like to contribute to that, there's some discussion. I think we'll probably move it to the Graphics or the CircuitPython Graphics discussion. But if anybody has feedback, either send it to me or put on Discord anyway, get in touch with somebody to give the inputs on that. Most of the time the past week I have been working on a tiny Logic Friend project, particularly we're trying to understand more about USB communications for large batches of data. This week I want to actually do a measurement on a 100 kilohertz waveform and get that into the Logic Analyzer software, SIGROC, and I'll plan to review another widget library or two. Okay, thanks. Thanks, K-Match. That does remind me like we probably don't want to use that Graphics discussion spot because I think it's private unless we can make it public. It would be better for those conversations to happen somewhere where people can lurk. I got it. Yeah, we've got an issue in the control widget definition. So maybe that may get moved, but that may be a more public place. Is CircuitPython open to everyone, that CircuitPython org, once the libraries get moved there? I'm happy to add people, but I think I looked to see if I could open the discussions for the particular team and I'm not sure it's possible to make it public. Okay, how about those libraries and issues? Is that going to be open? Yeah, the libraries and the issues should be public. It's just the discussions. And I think even libraries themselves can have discussion pages, so that maybe those are public. Yeah, I don't know the best way of a discussion versus an issue, but at least we have a control class issue raised. Maybe that's the right place to keep it until it gets moved over. Yeah, I think it's good that you're having these conversations. I just want to make sure that we do them in the public where people can get it. Because there was one person where, I forget who it was, that wanted to follow it along. And I added them to the graphics team as a short-term thing, but I think we should think about that. Okay, lots of people lurk before they speak up. Okay, no, that's good. Yeah, I was just basically ignorant of who you can see what. So, I appreciate that. Yeah, I didn't know that either until it came up. So, just a heads up. Thanks. Thanks, K-Match. Okay, so last up we have Maker Melissa. Hello. I lost my page. That's what happens when people play. Oh, I found my page. Yay. Okay, so last week I finished writing the Funhouse product guide. I wrote a Funhouse library projects guide that should be out soon. And I moved the generic Wi-Fi library modules from the separate portal libraries over to Portal Base so that they're easier to manage. And this week I'm going to write an example that allows more accurate temperature logging on the Funhouse. And I'll probably start a new Funhouse project guide. Awesome. That's it. Did I see the name Fun Home somewhere? Is there like an old version? Not that I'm aware of. Maybe it's like the board name in the Circuit Python definition. I don't know. I'll take a look. I think I did see it one spot. Maybe it was like the original version it was called that. We might want to... I'll take a look and see if I can find it. Okay. But it would be good to get it uniform. Yeah. John Park encountered this on one of his live streams. Yeah. Folks, good link to that. That would be great. Okay. Let's move on. Thanks, Melissa. All right. Last up we have In the Weeds. In the Weeds is a section where we can talk about whatever we want to talk about. It's a place for longer form stuff. The way that it works is if you have a topic you'd like to talk about, please just add your name and then the three summary of the topic into the section in the Weeds in the Note Stock. And I'll just go through the list of folks and kick it over to the folks who have questions. So first up is Jose David. We'll go to you first. So my first topic is regarding the Sphinx docs. I put in the document two issues that I think are related. It's the way the Sphinx documentation are built by the CI locally. So not all the time it's like just corner cases, but you can see the difference. Now we have the in-display IO, the widgets, the documentation kind of disappear. And also in the library for the BN08. So I don't know if the configuration is different or maybe the version of the Sphinx use for the CI is different. So I just want to know if folks have some input on that. It doesn't surprise me that they're different and ideally they wouldn't be. But I haven't looked into details as to why I think you would know better than I would. It doesn't look like we've pinned Sphinx. So it should be running the latest which hasn't, I mean it's not we're not running into problems with that, but it does mean that if you install it on your computer at any given point in time and run it locally it should be the same. Yeah, but for example if I do my repo and read the docs like a private repo or a public repo in my own account, they build perfect. It's just the CI that doesn't do the right work. Are you ready? No perfect, are there no warnings or because? Meaning that the documentation is complete. For example the display IO, in the issue you see it. All the documentation is there with the graphics and all the features. Yeah, I think I've seen this before like where warnings were not caught if you ran locally but they were caught in the CI so that might be, but I'd have to see maybe later if you could like in the particular, maybe you did this already in the particular library but if you show just maybe just post if there's a failing library just post it and I'll try to run it locally and also to see if I can figure out what the difference is. And then like I'll have some discord conversation to do at some point not in the near future but today or tomorrow about so I can run it locally and see what I get and then we can get a transcript of what happens when you run it locally and we can look at the CI so to compare three times but I don't think it's inherent I think it's something it's going to be something sort of a version skew problem or a fail on warnings in one case but not the other. So yeah as I say it's just some cases not like most of the library like 90% of the libraries just work well just these two cases that I have seen. Yeah yeah thank you for that. Next up as as I said I was reviewing the open issues in the in the libraries so I want to know if there is we could combine some of the DHT library issues in just in one or two or maybe try to put a comment in the read me read me file to say no issues about this library are those something like that. So if there are duplicate issues you can leave a comment in the newer issue that says closed in favor of and then refer to the original issue so that they're linked because GitHub will link them and so it'll be pretty obvious. You can't really combine issues per se but like if you know two months ago somebody reported something and then last week someone reported the same thing you can say like this is already you know this this discussion is happening here please you know continue the discussion here or whatever and close the issue. I don't think starting a new issue makes sense and I'm not sure what is it we want to what is it you're suggesting putting in the read me. Like the same as we put in some learning guys that this is they know issues about this for example the ESP32. Yeah um file another issue I know right um file an issue with with your suggested read me updates and then we can we can discuss it and see about getting those put in because that would that would be ideal at least we could refer to something. Or just do a PR with the suggested changes. Yeah just I like the idea I like the idea just saying like known issues like I see a lot of like this doesn't work on Raspberry Pi sorts of stuff. It doesn't work on ESP32 exactly it's it's very monotonous. Yeah I think that's totally a good idea. So yeah don't file an issue put in a PR um and feel free to close issues in favor of other issues if there are duplicates. All right we'll do we'll do uh and related to the libraries is uh what is our policy to put the tag one fix for for all the issues I saw there are issues that all maybe were raised when a circuit python was three or five I don't know I don't I don't know the the date but uh how how are we going to deal with that now that circuit python is getting older. Um so I think we try to avoid that tag um mostly because we we don't want it it it it has the possibility of shutting other people down and um like even if we may never address it um like other folks might um now in terms of like age if it's I mean if the issue is clearly referring to something that has been fixed or clearly referring to something that's no longer applicable um it's probably worth just closing the issue um now are you talking on circuit python or are you talking on the libraries the libraries okay so I yeah I I think we try to avoid using that just because it it has a certain finality to it that we're not super eager to embrace um because we don't want other people to feel like well you know I mean somebody else comes along and says oh yeah I could totally implement that um why why weren't they going to or something to that effect I don't know I mean it's just I'm brainstorming here but um in terms of old issues it's it's just a question of is it applicable anymore is it something we can even do um and if it is you know maybe comment on it update it leave it open if it's not then I would say close the issue instead of putting a tag on it okay thank you yeah the other thing you could think about is for the core I added a label called needs retest so it's basically the idea of like if if it's a bug filed on python 3x you could say well like hey please try this on circuit python 6 2 and let us know if it's still an issue and that kind of like kicks the the ball back to the folks reporting or anybody else who sees it um and then I think that if you do that and nobody says like I'm gonna test this like I think it's okay to just close it if like if if enough time was given to do it and it just didn't didn't happen um yeah that's a good idea but I think I like I like the idea of needs retest because like as people as we get people more involved I think that's an easy thing to start with um although it's hard because it may require hardware um but in general I think that's a good way of like if folks want to start helping with circuit python retesting issues uh can be really helpful um so I think that's worth thinking about too um just so you're aware adabot can add tags to the libraries so uh host adb if you are interested in that um let me know don't do it manually because it can it can be automated right okay thank you use the bot to add all the all the labels yeah yep awesome okay uh thank you jose daveed let's kick it over to foamy guy okay um I think this will be fairly short I think some of these are solved so essentially the the thing that I had found was that inside a portal base it didn't import mini qr until you tried to use it um and that seemed to make it so that it didn't get found by the find imports thing which made it so that it wasn't included in the bundle but I noticed just a little bit ago there was already I think a fix put in for that that just added mini qr to requirements so that it does um I believe the idea I haven't tested it but I believe the idea is when it's in requirements then it will get included in the bundle um so I think that solves the issue I had found and the only other thing I had mentioned here was I just was looking to get an idea of how the project bundler works and um Melissa pointed me in the right direction on that just a little bit ago it's in the in the build tools that creates um a big JSON structure that contains kind of all the information about the dependencies and stuff so I have a pretty good understanding I think of uh of what's going on there now so I don't think there's really anything left okay um on this one yeah I just wanted to clarify my impression is that find imports is only used on the example code and then from there you use like requirements txt to give you all the library dependencies so it's just a matter of like for a given example code what are the libraries it uses and then once you have the libraries then you can just do all the dependencies okay yeah and I'm using it similarly on um in the learn guide repo on projects instead of example code right but basically trying to build the same list so yep that'll work out cool thank you I have a related question for me go ahead but uh is there a way to clarify what needs to go in requirements versus mock imports and how to you know creating a new library what goes where and how does it all work together yeah um Melissa would be a good person to ask who but she just dropped off so I think it's generally um if something is in Blinka so the the the question is like mock imports is used for type validation and code validation when doing syncs builds so if if Blinka works you can add that as a requirement and if that gets you the types you need then then that's the best way to do it um because the way mock works is it basically like assumes that you're using everything correctly um so if you can use requirements to import to use the actual like quote-unquote real dependencies or at least the Blinka versions of them then you have better validation than if you did uh mock import got it yeah I wouldn't even aware of that file so that's that's good to know to start looking looking there so okay thanks all righty okay uh next up is myself uh this is a follow-up from uh ask Patrick W who's last week uh which was uh checking Patrick came up with a list of repos that we could potentially move to um to the Circuit Python GitHub organization out of the Adafruit one and I ran it by Phil Lamore at the end of last week and they they gave it the green lights and go ahead um I don't know exactly what that list is I'll I think what I'll do is I'll check in with Patrick and see if they're interested um what I'd like to do is because I'm swamped with uh doing the merges like I'd find I'd like to find somebody who's willing to uh like the move is easy but making sure that we don't break anything else that gets a little trickier so uh if somebody wants to help me do that move that would be much appreciated I can I can move them myself but I want to make sure that um somebody else can help find like the bundle references that need to be updated things like that as well so I can like be the one who does all the adminny stuff if necessary um yeah so whoever you have doing it it does like basically don't worry about them having permissions if they need help with anything that can help with it yeah um and you know I can oversee whatever's going on with it as well okay so I'll check in with Patrick but if anybody else wants to help with that uh moving starting to move some more repos that are like in the Adafruit org right now but not really Adafruit created or not like directly tied to Adafruit products those are the things that we're looking to move into the CircuitPython org um and I one thing Patrick was talking about is like the IoT the non Adafruit IO IoT services um so potentially just like we have a graphics team in the CircuitPython org we could have an IoT one as well and then like Jim Bennett from Microsoft could be on there uh for example so uh I'll check with Patrick if anybody else has interest in that let me know okay and last up we have something from v923z okay thanks Scott um very short one um Jeff mentioned it a couple of times that um Yuleb is a bit too much on some of the smaller boards um and I was wondering that there would be interest in a float only implementation um that this could be done via preprocessor switches so I wouldn't have to produce a new branch or anything like that and the the benefit would be that um the the firmware size or the impact on the firmware size would be significantly reduced um I don't need a definite answer now I just wanted to flow the idea if anyone has any comments on that and and we can open an issue um on on microlab or well we can discuss it here it's up to you any thoughts Jeff well um you know it's an interesting time to ask since I'm just starting to look at this image processing stuff and of course that is working with a lot of eight and 16-bit integers so like the thing that's top on my my mind is no you can't take that away from me okay um then then I don't know that I'd spend time on it right now uh there's some possibility that with the firmware sizes we see as we upgrade the micro python versions um I don't know if that will leave us in the position of making difficult choices or in the position where everything is fine so you know maybe um so one way of of um shaving off the um the bytes is to to choose the functions wisely so um obviously there are a lot of functions now in the in the library that um that were requested one or two people and um they they might not hold general interest and then then you can decide to to chuck it um it's very simple there's there's a switch for everything really um so if if you think that um you want to keep um the the integer types but you are still running out of of space then then you can just get rid of some of the functions that that are are useless um okay but your short answer is is no there's no yeah I don't I don't think that's necessarily where I would spend limited time right now okay fair enough thanks I always appreciate you offering to work with us and help us go what we need though that's always you don't get that everywhere so thank you all right well might be true but actually this is this is really not too much wouldn't have been too much hassle so um I would have been happy but uh it's fine too if if you if you think that you don't need it then then obviously there is there's no point in in squandering the resources there okay thanks a lot awesome all right thank you both all right and before we wrap up I just wanted to say in the text chat Dylan had a a last minute hug report says I know hug reports over but I wanted to give you Jose David a huge hug report for all the documentation updates I've been out for the last week and I'm pretty sure half the emails in my inbox were from the documentation PR's law thank you so much for doing that documentation is so important especially for new users so uh thank you all um let me take a time code it's been a pleasure having you here uh for the circuit python weekly meeting for April 26th this is the meeting where we get together and talk all things circuit python once a week it happens normally at uh 11 a.m pacific 2 p.m eastern on the Adafruit discord server your uh everyone is welcome to attend uh you can join the discord server by going to the url adafru.it slash discord um if you want to support Adafruit and circuit python and those of us who work on circuit python consider purchasing from the adafruit shop at adafruit.com the video this meeting will be released on youtube at youtube.com slash adafruit and the podcast will be available on major podcast services uh the meeting is also part of the python for microcontrollers newsletter that we gave a preview of earlier uh visit adafruitdaly.com to subscribe to that newsletter if you haven't already um the next meeting uh let me just pull up my calendar um is uh a week from today on monday as normal um at 11 a.m pacific 2 p.m eastern it's on the discord if you'd like to be notified about the meeting and you haven't been added to circuit python nisa's role at all yet uh let us know we'd be happy to add you to that so that you get uh pings about the meeting and uh that also gives you voice access to to participate in the meeting as well so um check that out and uh with that we hope to see you all next week have a great week and we'll see you on the discords thanks everyone thank you