 Now I've started recording. Hello everyone. This is Circuit Python Weekly for May 31st, Tuesday, May 31st, 2022. This is the time of the week when we get together to talk about all things Circuit Python. This week we're delayed a day because of the Memorial Day holiday in the US. I'm Dan and I'm sponsored by Adafruit to work on Circuit Python. And Circuit Python is a version of Python designed to run on tiny computers called microcontrollers. Circuit Python development is primarily sponsored by Adafruit. So if you want to support them and Circuit Python, consider purchasing hardware from Adafruit.com. We host this meeting on the Adafruit Discord server. You can join any time by going to adafruit.com. You hold the meeting in the Circuit Python Dev text channel and the Circuit Python voice channel. Usually this meeting happens on Mondays at 2 p.m. US Eastern time, 11 a.m. Pacific time, except when it coincides with the US holiday, which was yesterday. In the note stock, there's a link to a calendar you can view online or add to your favorite calendar app. We also send notifications about upcoming meetings via Discord. If you would like to receive these notifications, ask us to add you to the Circuit Pythonistas Discord role. There's a note stock to accompany the meeting and recording. The note stock contains timestamps to go along with the video, so you can use the dock to view only the parts of the video that interest you most. The meeting tends to run 45 to 90 minutes. You can skip around because of that. Let's see. What else would I like to say? If you want to see the meeting notice, it's always pinned in the pinned messages in the Circuit Python channel. For instance, here I'll show you by looking at the pinned messages. Just go there and you can find a link to the note stock and the information about the next upcoming meeting. We hold the meeting in five parts, community news, the state of Circuit Python, libraries in Blinka, hug reports, status updates, and finally in the weeds. I won't explain those in detail right now, but I will in the beginning of each one. Let's go ahead. I built a cadney told me she built a timestamp generating engine, which was written in Circuit Python and I did the same thing with the CPX. We'll try that. It might help if I plug it in. In which case, it's time is off, so never mind. Next time I'll do that. All right. Let's start with community news. This is news from the weekly, our weekly Python for microcontrollers newsletter, which usually goes out via email on Tuesday mornings this week. It'll be Wednesday morning. Visit Adafruit.daily to subscribe to the newsletter. Thanks to Ann for putting the newsletter together. If you have any Python or on hardware projects to share or find content you like to see included, please continue, consider contributing to the newsletter. You can open a PR on GitHub, tag at sign Ann underscore engineer on Twitter with the hashtag sort of Python or email CP news at Adafruit.com with the news and the link to whatever the news is about. So let me go ahead and go over the community news that we have for in the upcoming newsletter. I'll put a timestamp in here. The Circuit Python GitHub repo has reached 3,000 stars. Those are stars you can star your favorite repos in GitHub. It exceeded 3,000 star gazers this week. Thank you all the people who have chosen to star this Circuit Python code repository. Thank you very much. It helps our visibility. Next, Ann Barela talks Circuit Python with crowd supplies, Helen Lee. The crowd supply teardown sessions, a series of interviews and hands-on learning sessions with crowd supply creators, staff, and lots of special guests host Ann Barela, your editor of the newsletter, to discuss Circuit Python and more. Ann, did this happen already or it's going to happen? It happened Friday. Okay, great. So go to the links and you can see the interview. Thank you very much. Okay. Next, MicroPython is up to 112 sponsors. MicroPython sponsorship fundraising continues with 112 people and organizations providing monthly support for MicroPython development. Their new target is $10,000 a month, which would allow them to hire more folks to work on the software. Please consider sponsoring, especially if you use MicroPython and or Circuit Python, which derives from MicroPython. We are immensely grateful to MicroPython and we continue to pull down code from it whenever they have a release. Without MicroPython, Circuit Python would not exist. Adafruit's been sponsoring MicroPython and we encourage everyone else to do that as well. Thank you. Finally, this week, Naomi Cedar, who gave the keynote, a keynote at the recent PyCon US, her keynote is available. You can see it on YouTube and the text of the talk is online. There are links in the in the notes. Okay. And as I mentioned, the newsletter is published every Tuesday, except this week it's on Wednesday because of a holiday. Please contribute to the newsletter whenever you find interesting news related to Python and MicroControllers. Thank you. Next up is the state of Circuit Python libraries in Blinka. This is kind of a statistical overview of what's going on in Circuit Python in the past week. We'll start with describing pull requests overall. In the last week, there were 24 pull requests merged by 17 authors. A new author I see is ML Hakeems, I think, is the name. Thank you very much. If you're not new, thank you anyway. There were 17 authors, six reviewers. There were 16 closed issues by 10 people and eight opened by seven people. So we closed eight issues successfully and we were reducing the number of issues, which is always great. Scott, would you like to discuss the core? Sure. I'm happy to do that. Sorry for the laundry noise. Numbers for the core. We had 15 pull requests merged from 12 different authors, so thank you to all of those authors. I think most of these folks have been around, so thank you to all the authors. We had three reviewers, Dan Jeff and myself, so always looking for more reviewers. We have 17 open pull requests. Three of those are over 100 days old. Only one is 200 or more days old, so you should take a look at that. And then a lot are kind of in the middle ground between zero and 86 days. So again, we should take a look at those. We have 16 closed issues by four people, or six closed issues by four people have four open by four people, so we're net down, which is good. We're hovering right around this 510 open issues mark, which is good. We have five active milestones. 44 are open for 8.0. We're going to want to triage those for 8.0. But we did tag main as 8.0, so we've been able to get some changes, some breaking changes into the main code base. So if you are using absolute latest, be aware that that is going to be changing, and we're going to be breaking some stuff. But yeah, that's where we are in the core. Thank you very much, Scott. Okay, libraries, Katnene, who would like to talk about libraries. Fair thing. So this applies to all of the Adafruit Circuit Python libraries, which is everything that starts with Adafruit underscore, CircuitPython underscore, as well as a couple extras like our cookie cutter and the community bundle. So we had across all of these repos, eight pull requests merged with five authors and five reviewers. Of those merged pull requests, most were zero or one day old, and one was four days old. Leaving 27 open pull requests across all of these repositories. We had seven closed issues by six people and four opened by three people, leaving us with 641 open issues. 187 of those are good first issues. If you're interested in contributing to Python or to CircuitPython on the Python side of things, consider going to circuitpython.org slash contributing. You'll find all of this information and more. If you're interested in reviewing, check out the open PRs. If you don't have the hardware, you can look at it for syntax, spelling, so on and so forth. If you do have the hardware, please test it. Leave a comment. Let us know you did. And once you are comfortable with that, we can look into leveling you up to our review team. If you're interested in providing code or documentation, check out the open issues. As I said, the 187 of our issues are good first issues. So if you're new to everything, check that out. If you are looking for something a little more complicated or that sort of thing, you can look for bugs or enhancement labels. And if you're new to everything, we have a guide on contributing to CircuitPython using Git and GitHub, and we are always available on Discord to help you out. So please don't let that intimidate you away from considering joining our contributing members. There were no new libraries in the last seven days, but there were three updated libraries which I will not read through, but they're available in the notes. That's what I've got. Thank you, Katny. Okay. Next up is Blinka. And Melissa, can you read? Melissa, are you there? If you're not, I'll go ahead. Okay. So maybe having trouble, so let's, or out of the room. So I'll go ahead. So Blinka is a compatibility layer. Hey, I'm sorry I'm back. That's all right. I had to walk away for a second. Okay. Blinka is our CircuitPython compatibility layer for MicroPython, Raspberry Pi, and other single board computers. And this week we had one pull request merged by one author and one reviewer. There are currently four open pull requests among the repositories. There were three closed issues by three people and zero open by zero people leaving a net of 78 open issues. And there were 8,974 PiWheels downloads in the last month, and we are currently supporting 88 boards. And that's it. Okay. Thank you very much, Melissa. Okay. We'll move on to, to Hug Reports now. Take another timestamp. Hug Reports is where we highlight folks in the CircuitPython community and beyond for doing awesome things. We do this in a round robin fashion. I'll start and then we go in alphabetical order after that. If somebody isn't here, I'll just read their contribution. I'll start. I'll take a timestamp for myself. So first, thanks very much to Jeff for fixing things even while he's on vacation. I guess it's probably vacation is relaxing, but working on CircuitPython may also be relaxing in some way. So that's great. But Jeff always feel free to take vacation instead. And he's fixing things that sort of may come to mind and they've been, they're things that have been annoying us for a while. And that's very nice. Thanks to Scott for experimenting with space savings last week. He discovered some things with, he'll talk to you about, about the translations, which we might be able to save a lot of space on certain builds. Thanks to Tectric for tracking down incompatibilities with the new version of Sphinx, the documentation system 500. It's not quite as painful as it could have been, but there were plenty of changes that we need to make. And thanks to Deso Robin, who's testing Matrix Portal Network issues and has been really helpful in figuring out what works and what fails after a certain period of time. Okay, I'll move on to C Grover now. And I'll read since they're not here. Thanks to FOMI guy for taking the Titanobaclight issue and running it towards the finish line with changes to the CircuitPython core. Also appreciate FOMI's comments on the touchscreen calibrator example, Paul Request. And that brings us to FOMI guy, take another timestamp. Thanks to C Grover for submitting touchscreen calibration example for requests. Thanks to Jerry and for everything they contributed, especially around radio modules. Testing some of the older PRs in those libraries was my introduction to RF and Jerry was very helpful. And a group hug. Next up is Jeff, who also gives a group hug. And the next up is Catney. I have a few hugs today. First up for TechTrack for finding an issue with the libraries over the weekend and immediately fixing it. Thanks, updated and something we had in our conf.py for the documentation was no longer happy. So Sphinx was failing and TechTrack took care of that. To Jerry for helping me out with a project that I got the pieces for ages ago and of course left to the last minute to finish. He's super excited to help me out with this. So that's really good because with help I can probably get it done in time. And to Liz for doing all the code and firmware testing for the QT Pi ESP32 Pico guide that I'm doing. It turns out she had the hardware for the guide I was working on and I have the hardware for the guide she's working on but we stuck with it and we're gonna just you know power through testing each other's code. And that's what I've got. Okay, thank you Catney. Okay, next up is Maker Melissa. I just wanted to give a hug report to Catney for helping me with updating fritzing. To Paul Cutler for contributing to the OpenSame project. To Ann Burrell for your great interview on Tom's hardware and a group hug to everyone else. All right, thank you Melissa. Okay, next up is Mark Gambler who's not able to speak who gives a group hug. And then also next up after that is Tammy Makes Things who also gives a group hug. And next up is Scott. Hello. I also just I just wanted to say thank you to everybody who's here and who participates in Good Faith on our Discord. It's so nice to work with you all and the context is that I woke up to a kind of mean message from somebody on a different Discord this morning. So it was just made me appreciate the space that we've built and that we all invest our time and patience into. So thank you everybody for that. All right, thank you Scott. Okay, next up is Tectric who is in the chat but can't speak. So I'll go ahead and read theirs. Thanks to Catney for the quick help getting an adabot patch going to support the Sphinx 501 upgrade we just talked about. Thanks to Dan H for helping to get the manual fixes for other issues regarding the Sphinx update reviewed and merged. And a group hug. All right, thank you Tectric. Okay, next up is Status Updates which is also a round up Robin where we just say what we're up to which could be Circuit Python or other things if you have other things occupying your time that you'd like to talk about. That's fine. So I'll start. Last week right after the meeting I released Circuit Python 730 final which has not, up to now it does not seem to have had a lot of regressions or problems which is great. It has really shaken out in advance. I did fix a problem with multiple rotary encoders on Espressif. That fix will be in 731 assuming we have a 731 release which we probably will but I'm holding off on that until we add a few more other bug fixes. Over the weekend I fixed some buffer and buffer size issues with the ESP32 SPI library. Someone had found a problem where it wouldn't talk properly to certain kinds of web servers. A review of that is in progress and also I decided to clean up that library in general. It has a lot of deprecated methods in its classes and stuff and could really use a cleanup to make it more compatible in particular with the socket part to make the socket board more compatible with the way sockets work in regular Python. And I'm now debugging other network problems, specifically problems on the matrix portal but I think they apply in general to ESP32 SPI and maybe even to Adafruit requests in general. All right. Next up is Cgrover. Take a timestamp. Wrapped up touch screen calibration example poll request for built-in displays supported by Adafruit touchscreen. The Cgrover NAU7802 circuit Python library was placed into the community bundle for use with the new NAU7802 breakout and a couple of custom feathering boards was an interesting and complicated learning experience or adventure. Developing a prototype gamma sensitive brightness control helper for the matrix portal that currently works with display AIO object color and fill attributes as well as bitmap palettes. A bonus is that the algorithm algorithm works nicely with NeoPixels and other RGB LEDs. Now I'm going to steep learning curve trying to figure out how to walk a multi-layer display IO group tree to one, capture initial full brightness color information and two, modify display AIO object colors based on the prototype's gamma sensitive color brightness algorithm. The goal is to create a helper or class that can you literally adjust linearly adjust display brightness similar to TFT backlight. Lower brightness means less heat, lower power consumption and a display that's easier to photograph. Okay, thank you Cgrover. Next up is Catney. So last week I started the Qtipy ESP32 Pico guide. I worked with Liz for testing code and firmware on the Pico guide and I updated the feather ESP32 V2 guide with new drivers. This week I'm planning to finish the ESP32 Pico guide however it is on hold until I have hardware. I really appreciate Liz's testing things however it was running into I need gifts and I have to actually like iterate on code and to make anything work and I wasn't sure whether she had time to do that and so on and Lamar put the board in the shop this morning so it is on the way so that guide should be up soon enough. The next thing I'm up to is a whipper snapper needs circuit python board reset bootloader reset gifts for seven different boards. Basically they just need showing the right rhythm to get into the bootloader and I agreed to help out with that so I will be doing that. Then after that is the github fancy profile guide basically using tools to make your github profile more fun and attractive. Light tower and next is a light tower github action status light. It's something you plug into your computer by USB and it runs desktop python. I still have on my list but lower priority is the add a project to pi leap guide which was started but never completed and then to set up the repository for the x squared c addresses guide migration to mark down and that's what I've got going on. Okay thank you catney. Okay next up is maker melissa. Last week I finished updating the feathers and feather wings guide. I deprecated an old general eink guide in favor of four separate guides I wrote. I added a bunch of new checks to circuit python.org repo and fixed any issues found with those checks. I worked on some miscellaneous github issues and I went through guide feedback for the neopixels on raspberry pi guide. This week I'm going to work on some more github issues. I'll possibly be circling back to working on touchscreens on the raspberry pi and I'm not sure what else at this point. Okay thank you melissa. Okay next up I'll read mark gamblers. Did a small pr to add setting static ips for wi-fi that was asked for in an enhancement issue. Thank you that should be very useful to a number of people. Next up I'll read tammy makes things. Didn't work on circuit python stuff last week sad face. This week aiming to get back into my regular groove. All right next up is scott. Hello Last week wrapped up the .env stuff which should be cool. That allows you to do os.getenv from a .env file on the root file system. And then I kind of got sidetracked into the world of trying to find ways to optimize our code space. Along that sidetrack well I made a repo called elf section graph which keeps track of the dependencies between individual elf sections which are like per function per data thing and then if they're not used we can the the linker will just discard them. So I did some research there did not find quite as much as I had hoped and then I got a little distracted. I made treemap.dev which is just like a upload a json file and it will allow you to view it as a treemap which is a very common visualization for like how much file space is my file system taking and things like that so that that's kind of useful for this sort of thing. I did find one thing in terms of code size optimization which is the way that we do translations is we have a function called translate that gets generated where it takes in the regular english string and then it has this big long if statement if statement chain that does string comparisons between that and the other copy and then it returns the compressed data that works pretty well on lto builds where lto is link time optimization so basically that whole function disappears and all you're left with is the the compressed data at the end. However that's not the way that was working on non lto builds such as all of the esp stuff and so I figured out all right I thought of a way to to be able to do that kind of optimization pass a compile time and basically we generate that translate function for every c file that we're compiling and each one of them independently can optimize it away to what it needs which should give us some space back on esp which is nice and so there's still some ci failures it's draft pr i'll have to follow that up later today but that should be good and that should get us some some space wins on everything that's not lto so the things that are lto are like nrf some of nrf and all of sam d i think are all lto but on all the other builds this should this should get us some wins uh i also i i had like a few hours on friday so i was like let me just see dan and i had talked about this a little bit um there's we used gcc to do the compilation but there's also another compiler called clang um that is very uh doing a lot of development and and iterating a lot um it's used by big companies like apple and google and stuff like that but the problem is is that not a lot of embedded stuff is done um so uh it has really good warnings and i got certified in compiling with it but the reality is that gcc still does better in terms of code size which is kind of critical for us uh specifically uh the lto versions of clang can't do dash os or dash oz which are the size optimized versions so um i tried that there's a there's a branch there just to see what uh you need to do for it but i that's all i'm going to do on that um i did also start prototyping the new serial output so i figured out like the magic vt100 commands to like put a status bar at the top um and so that's something i'll probably work on along with uh that's i think that's kind of the next step to go along with the wi-fi work workflow work um but we'll see it might be a bit slow going um that's it for me okay thank you scott uh next step i'll read tectrix contributions after a time steal uh last week developing more tools to check libraries for build issues and patch library bundle problems a very accidental yet timely happenstance writing documentation for said tools so others can eventually use them helped get the majority of libraries fixed for the new sphinx version 500 via adabot that is using adabot to automate the changes needed in a lot of libraries started playing bug whack-a-mole for a few libraries with additional sphinx issues due to deprecations and new features in sphinx 500 this week continue developing patch tools wrap up manual patch fixes fixes for sphinx upgrade start manual patches for the previous pilot adabot patch and taking time to hang out with my girlfriend's family all right and um finally we have uh in the weeds but there are no weeds this week the lawn the garden has been cleaned up so we have no weeds and we're pretty much done is anybody else have anything they'd like to bring up before we wrap up the meeting okay i guess not um let me take a time stamp for the ramp up this has been the circuit python weekly for tuesday may 31st 2022 usually we're on mondays thank you to everyone who participated even though it was on an off day this time if you want to support adafruit and circuit python and those of us that work on circuit python consider purchasing from the adafruit shop at adafruit.com the video of this meeting will be released on youtube at youtube.com slash adafruit and the podcast will be available on major podcast services newsletter will also be in the python for micro controllers newsletter you can visit adafruit daily dot com to subscribe next week's meeting will be held on monday at the regular time 2 p.m eastern u.s time 11 a.m pacific and it's 1600 uh you hours utc this summer in the summer um the meeting is held on adafruit discord you can join by going to adafruit dot it slash discord and if you want to find out about this meeting asked to be added to be notified you can uh uh be asked to be added to the at sign circuit python east is roll into discord thank you everyone uh short meeting 30 30 minutes or so but we appreciate your contributions and i will stop recording now