 Hello and welcome. This is the Circuit Python Weekly Meeting for September 11th, 2023. This is the time of the week where we get together to talk about all things Circuit Python. I'm Scott and I'm sponsored by Adafruit to work on Circuit Python. Circuit Python is a version of Python designed to run on tiny computers called microcontrollers. Circuit Python development is primarily sponsored by Adafruit, so if you want to support Adafruit and Circuit Python, consider purchasing hardware from Adafruit.com. This meeting is hosted on the Adafruit Discord server. You can join any time by going to the URL adafru.it-discord. We hold the meeting in the Circuit Python dev text channel and the Circuit Python 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, which are often on Mondays. In the notes talk, there's a link to a calendar you can view online or add to your favorite calendar app. We will also send notifications about upcoming meetings via Discord. If you'd like to receive these notifications, ask us to add you to the Ad Circuit Pythonistas Discord role. There is a notes document to accompany the meeting and recording. The final notes document includes timestamps to go along with the video, so you can use the doc to skip around and view the parts of the video that interest you most. For example, if there was an in the weeds topic that you wanted to hear. The meeting tends to run 45 to 60 minutes, and after each meeting we post the link to the next meeting's notes document in the Circuit Python dev channel on the AdFruit Discord. Check the pinned messages to find the latest notes talk, so you can add your notes for the following meeting. If you wish to participate but cannot attend, you can leave hub reports and status updates and in the weeds in the document for us to read during the meeting. This meeting is held in five parts. The first is community news. This is a look at all things Circuit Python and Python on hardware in the community. It's chosen set of items from our Python on microcontrollers newsletter. The second part is the state of Circuit Python libraries in Blinka. This is a quantitative overview of the entire project. It's a chance to look at the project by the numbers separate from our status updates. The third part is hub reports. Hub reports is an opportunity to highlight the good things folks are doing, taking the time to recognize the awesome folks in our community. The fourth is status updates. Status updates is an opportunity to report 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. 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. That covers how the meeting will go and I will get started with community news after I take a time code. The first item here, community news is a preview or not a preview, a subsection or I guess a preview of the microcontroller Python on hardware newsletter that goes out around the same time as this meeting. We'll talk about that a little bit later, but first let's talk about the highlights from it. First, Circuit Python 825 has been released. It's the latest bug fix revision of Circuit Python and its stable release. Notable changes included updated TLS route certificates, tuning of the RGB matrix, and new and updated boards. Spoiler alert, expect 826 soon I believe as well. Next, we have Pimeroni MicroPython has released version 1.2.5. This is version 1.2.5 of Pimeroni's fork of MicroPython, provides glorious vector visuals. This release introduces a beta of PicoVector, a library that sits atop PicoGraphics and supplies anti-aliased vector drawing tools using prettypoly. PicoVector is currently available in the following builds for Pico, PicoW, PicoLypo, and Tufti2040. It includes support for all right fonts, allowing you to convert almost any TTF or OTF font into a simplified vector format, the sequence of overlapping polygonal contours, which can be used in PicoGraphics projects. Version 1.2.4 from August 4th added PNG file support as a better option than JPEG, so check those out. Next up, using Kanda for microcontroller embedded development environment. Developing for an embedded target can mean using a certain version of co-compiler debugger and other tools. The challenge gets bigger if working with multiple different tool chains and environments. Kanda is a package, dependency, and environment management tool. While it is heavily used for Python and data science development, it is surprisingly working very well to set up and manage environments for embedded development. Kanda is great for managing non-Python dependencies and setups. This is a link from MCU on Eclipse. Last up, we have an IoT survey, and I'm typing in my timecode. Blues, an internet things of provider, has completed an interesting poll on the internet of the things of microcontrollers. What specifically drew my attention is where folks typically get news about embedded slash IoT development. Hackaday, Haxter, and the Adafruit blog make up 40% of the IoT information folks ingest. All right. And last up, some details about the newsletter. The Circuit Python weekly newsletter is a Circuit Python community-run newsletter emailed every Monday. The complete archives are available at 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 or submit a poll request to that and submit a poll request with your changes. You may also tag a tweet with hashtag CircuitPython on Twitter or email cpnews at adafruit.com. And with that, let's go on to the next section. The next section is the State of Circuit Python Libraries in Blinka. This is a statistical overview of the different sub-components of the Circuit Python project meant to ground us in some numbers. So overall, we had 28 poll requests merged from 16 different authors. GFGHJJK looks new to me. SCBIN looks new to me. Thirtha Rajinah, JR0328, R. Rackola, and Harry Wepner are all new names in terms of the authors. We had six reviewers, so thank you to all of our reviewers. And we had 19, so that's the poll request, and then issue-wise overall, we had 19 closed issues by eight people and 19 opened by 14 people. So we're net zero in terms of new issues, and we're also hitting the double digits for participation on issues, which is great. So next up, I will read the core stats. We had 15 poll requests merged into the core with three different reviewers. We had 21 open poll requests, so we're nicely under that kind of 25 one-page mark, which is great. Issue-wise for the core, we had eight closed by five people and 13 open by nine people. So we're at net up a few again, which is pretty typical for the core. We have 710 open issues overall. We track eight of fruit-funded prioritization through milestones, and we have 14 open issues on 8.2.x, and we have 53 open issues for 9.0. And then a bunch of them are in long term, and we have one that's not assigned to a milestone. So the not assigned to a milestone ones are considered in the need of triage, so we'll have to take a look at those. And that's the state of the core. Let me hand it over to Catney for the libraries. Thanks, Scott. The section covers all of our Circuit Python libraries, which includes the Adafruit Circuit Python libraries and the community libraries. Across all of those, we had six poll requests merged from five different authors and three reviewers. We had leaving us with 46 open poll requests. We had seven closed issues by two people and three open by three people, leaving 636 open issues. 19 of those are labeled good first issue. 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. You can take a look at the list of open issues, the list of open poll requests, figure out what works best for you. In terms of library PyPI download stats this week, over 313 libraries, we had 71,856 downloads on PyPI, and the top 10 are listed in the notes. In terms of library updates in the last seven days, we had one new library, Adafruit Circuit Python JSON Stream, and three updated libraries, which I will not read off. And that's where we are with the libraries. Thank you, Catney, for the library update. Next, let's go to Melissa for an update on Blinka. Blinka is a Circuit Python compatibility library for MicroPython Raspberry Pi and other single board computers. This actually covers Blinka plus any of the related repositories. This week, we had seven poll requests merged by three authors and two reviewers. There are currently four open poll requests. There were four closed issues by two people and three open by three people, leaving a net of 102 open issues. There were 11,766 PyPI downloads in the last week and 8,274 PyRail downloads in the last month, and we are now at 121 boards. That's it. Thanks, Melissa. All right. Next up, we're moving on to a new section, which is called Hug Reports. This is a chance for us to highlight and say thank you to folks in our community for doing awesome things. It's both great to just recognize people and also reinforce what we value. So I'm actually going to hand it off to Catney before I go as well. I had to scoot myself, so I figured going first would make things easier on everybody else. So the first thing I want to give is a group hug. I am scooping my status update. My last day with Adafruit is September 22nd. That's two weeks from, for one week from Friday. I have made this change. It's an important step for me. It's very good. Congratulations are in order if you are concerned about that. But I wanted to give a group hug. This community has been so amazing from the very beginning. It's what drew me to Adafruit. It's what drew me to the community in general. I greatly appreciate it because without you folks, I would not be where I am today. So thank you so much. And remember that this community is made up of you and you are what makes it great. I will do more specific things next week, I guess, makes more sense. But I just wanted to say thank you and I wish you all the best. You'll hear this all again next week, I'm sure. But that's my hug report. Thanks a lot, Katani. All right. It's pretty obvious now, I think, why it's good to do you in front of me as well. But I'll go out of order as well. Katani, thank you so much for growing Circuit Python on its community. You've just been a vital part of it since you've come on. And I'm sorry to see you go, but I am excited to see what you do next. So thank you for everything. Also thanks to Dan for wrangling the 8.2x fixes and their release. So let's go to Dan. Okay. So thank you, Katani. I'll say more next week, I think, because I didn't have time to write something up given the reordering here. But thank you for everything, everything. Anyway, in the usual course of things, thanks to Liz, who discovered a new problem with certificates post the 8.2.5 release. It's very specific to a particular set of certificates and there'll be an 8.26 to fix that. And thanks to Phil B, your dragon, who's working on proto-matter fixes, which have to do the matrix portals. Okay. Thanks, Dan. And sorry for the last minute reorder. Okay, so I've got notes from DJ Devon 3. So DJ Devon 3 says, hug report to Lady Aida for the desk of Lady Aida, lesson on using OpenAI to write a display in-nit sequence. Hug to smithka on Discord for figuring out a way to animate bitmaps with .bin files. And a hug to Dan H and the team for fixing the SSL handshake bug. Confirm to fix it in the 8.2.5 release. Great job to all the Devs involved with the SSL update for 8.25. And next up is FOMI guy. All right. Thank you, Scott. I have a group hug this week as well for everybody. Hug report for Michael Pocusa for some collaborative programming work we did over the weekend on a templating engine that runs in CirclePython. And a hug report as well for Katny. Thanks for all your contributions and growing and helping to shape the community and getting so many folks involved, myself included. So thanks. Next up is Jeff. Hello. I'll start with a group hug, and then I'd like to thank Dan for the bug fix release and a whole bunch of sleuthing around the server security certificate thing. And to paint your dragon, Philby, for continuing to work on some protomatter bug fixes. It's been a little bit of an iterative process with both of these things I just mentioned. And both of these will get to the finish line, and then it will be wonderful. Katny, thank you for being one of the key people who brought me into this community. And although you shared a little bit with me privately, I just look forward to hearing more about what you're doing next. And DJ Devon 3, your bracket print looks great. I made a much more minimal and fragile one, and I would print yours if I was assembling a group of panels ever again. And then that's what I've got for today. All right. Thanks, Jeff. Next up is Liz. Hello. Hug report to Dan for the certificate fix. Very fast and speedy. And then hug report to Scott for adding the JSON stream library to the bundle. Both of those things are involved in a project I'm working on. So really appreciate it. I will say more next week to Katny, but congratulations, Katny, and group hug. All right. Thank you, Liz. Next up is Melissa. Hello. So I want to give a hug to Dan for fixing the certificate on the dot org boards. Hug to Katny for everything you've done, and all the people you've helped, you've helped out including myself, and a group hug to everyone else. All right. Thanks, Melissa. And now I've got two folks with notes to round out. So first up, Michael Pecusa says hug report to FOMI guy for pair programming session regarding templating engine and from ridging the PR for a to fruit HTTP server. And next after that, from Todd, we have a hug to Clever in help with circuit by phone for reminding me about Pico tool to save entire state of RP 2040 based projects. And that's it for hug reports. Thank you, everyone. Next up, let's go to status updates. And status updates is a chance for us to it's also around Robin where we should talk briefly about what we've been working on in the past week and what we're working on in the coming week. It's great for knowing who to collaborate with and give tips and tricks if somebody's working on something that you've worked on previously. So I will start and then we'll go through the list as in the note stock. So I'm continuing work on the ESP IDF five cake config update. I showed it on my stream on Friday. I did after my stream wrote a script to regenerate them for all boards. It's very convenient and I probably should have done it sooner. And I have at least one bug to fix on ESP 32. After the cake config is updated, I'm hoping all the boards build and then we'll smoke test a few of them to make sure that they're not completely broken. I'll probably do a little more office organization when I need a coding break. Over the weekend, I moved in a couch and a rug. So hopefully the echo isn't quite as bad. I also have an AC sitting next to me, which I turned off for the meeting, but is definitely keeping the office cooler. I also wrote up last week on Thursday, an ate a fruit playground page, which is kind of a like thing we're testing out, but you'll hear more about in the future about the custom cardboard storage boxes that I had made for storing flat things in particular dev kit. So check that out if you're looking for a dev kit storage solution that's not going to break the bank. And with that, let's go to Dan. Hey, so last week, I updated the root certificates that are used for ESP expressive boards and the PQW and that fixed some things, particularly talking to GitHub and some other sites. It turns out that we took away a certificate that was expired and that expired certificate is actually needed for sites that use let's encrypt. Let's encrypt has this extremely tricky way of its root certificate. Root certificate that it uses, it uses a modified version of the root certificate to handle very old art Android devices that can't have the root certificates updated. So they had a clever way of doing this, but the SSL code that's used in expressive doesn't do the right thing unless you include the expired certificate. It's not necessary on most things like in a browser or on a desktop computer. But Liz discovered this problem and I did a lot of research on it and it's all written up in the Adafruit certificates PR if you want to read it, but it's horribly gory details. So anyway, there'll be an 826 soon to include that fix. Also, I've been helping Phil be work on some RGB matrix program matter fixes and there may also be a fix for that and that'll go into 826. It's kind of handling an edge case that is sort of not permitted, but it's okay. And then finally, when I'm not doing those things, I've been working on the MicroPython v1.20 merge. I did the v1.19.1 merge and that's well along. I still need to do the merges, the merge conflicts that are in the core MicroPython interpreter runtime directory and that'll be, those are hard to think about. So they require a lot of looking at. So I'll be working on that in the next week. Okay, thanks Dan. All right, now I'm going to read some notes from DJ Devin 3 after I spend my brain power on typing a timecode. Okay, so for DJ Devin 3, they say I spent days on the ST7796S display driver in it trying to flip it so it would refresh in landscape mode, followed Lady8 as lead, I used OpenAI to correct the missing bit in the sequence, tested it and it works great, refreshing top to bottom in landscape mode. SmithCon Discord used a method from GIFIO to directly blit bitmaps in sequence for full screen animated bitmaps. Each frame is a .bin file. I was able to create a full screen 480 by 320 animated BMP at 9 frames per second. From looking at it, you'd never be able to tell it's a sequential BMP ease and not a GIF. Purchase more matrix panels on a second PSU to add to my already six matrix panels. I wanted to see how many panels a single matrix portal S3 will drive. Six is already very nice and will suit my needs, but I'm hoping for nine or 12 panels. Designed in 3D printed, a bracket for joining four by five millimeter pitch matrix panels. Already printed a couple of prototypes. Every pitch two millimeter, three millimeter, four millimeter has a slightly different design and each is physically different in size. The bracket I designed will only work on the five millimeter pitch panels to my knowledge. Next up is FoamyGuy. Alright, thank you Scott. I took off last week on Monday for the holiday and in the evenings I've been doing some other work for my other job migrating some servers, so I have not had too much time for Circle Python in the past week or so, but I have gotten the bulk of those server migrations out of the way now, so I'm getting back to my normal schedule this week which is nice to get that stuff behind me for sure. The bits of work that I did do on Circle Python was over the weekend and it was some testing on the HTTP server library PR that brought several new features including easier support for cookies, additional types of redirects, and several other things. Lots of good stuff in there. I was also working this weekend on attempting to use this MicroPython library called U-Template, which I think is probably pronounced MicroTemplate. I worked on that on the stream on Saturday. I did have some success, but it requires some elaborate sort of boilerplate code because it's kind of built from the ground up to operate on files for inputs and outputs rather than just strings, which is nice because it saves RAM, but in the Circle Python world that's tricky because of the right protection that's enabled by default. I was able to get it working with string.io object that kind of acts like a file enough for it to be happy. I do intend to test it a little bit further with an SD card. I think it might be pretty good in that use case, but I still need to try it out. Then kind of the continuation of that was working along with Michael Pocusa on a new implementation for templating, this time that is built to operate on strings that stay in memory, which makes it easier to use with stock Circle Python if you don't have the external storage. Then the stuff that is unrelated to that that I've been getting into today so far is testing and submitting a patch that fix an issue with read the docs theme specifically when it tries to build inside read the docs and I have a bit more about that in the weeds to talk about later and that's what I have got for now. Thanks. All right. Thanks, foamy guy. Next up, let's go to Jeff. Here's that unmute button. So I belated a hug report for Scott and micro dev. The idea five update is huge and I can't wait for it to be ready, but onto status updates. Last week on Thursday, the dot clock display pull request was merged. Thank you to all who tested and supplied feedback and I sketched out support for IO expander support in the core, but that brings us to this week. We've kind of scaled back those ambitions and what we're going to do instead is kind of the minimum thing that we need for an upcoming product, which is the ability to have us buy like bus that is located on an I2C port expander that we can use at boot time or after boot time to configure one of these dot clock displays. And there's like a whole bullet list of why the general IO expander concept as I had it in my head is problematic. And it has to do basically with the fact that an I2C bus can be locked and we do things in the background and it turns into a sea of problems. And if we can change the problem we're trying to solve so that it's smaller, it becomes more attractable. And then something else coming up during most of October, I'm going to be gone on a vacation. So just a warning that in about three and a half weeks I'll go poof, but I will be back. And yeah, that's what I got. Thanks, Jepler. Enjoy your vacation for sure. All right, next up is Catney. Oh my gosh. Okay. So last week started the Metro M7 micro SD guide. That's the new Metro M7 with the micro SD slot on it. I know, surprise. So that guide should be done by the end of the week. So if you picked up one of those, you'll find a bunch of Circuit Python demos and so on and so forth because it supports only Circuit Python, which is excellent, but there's no Arduino support. So that guide should be ready by Friday. And then as I mentioned earlier, since my last day is in two weeks, I will be putting in a bit of time into the offboarding process, working with all the teams, working with the IT team to make sure that everything's good to go and going through that whole process and making sure that everything gets handed off. If you only have my Adafruit email, feel free to send me a DM and I can get you my personal email. If you're interested, otherwise I will still be on Discord, so you're not going to find me disappearing anytime soon. But that is going to be my next really two weeks is making sure that everything is tied up and all the loose ends are taken care of and that everything is good to go. And that's what I've got going on. All right. Thank you, Kenny. All right. Next up is Liz. Hello. So I've been working on an ESPN API project using four 62 by 32 matrices. So it's monitoring five sports and leagues, but I'm going to write the code so that folks will be able to easily customize what they want to monitor. And I also wrote a Python script to pull down the team logos and convert them to 32 by 32 bitmaps with gamma correction for the matrix displays. And I'll include that script instructions in the guide. And this saved me a lot of work that I would have done manually previously for other matrix projects and also gets around the question of how to distribute the logos without actually distributing them. Since they're included in the JSON from the API, folks will be able to download them and use them that way. And I've also been writing some code for another prop maker project. This time it's a Halloween project with Rua's brothers. He uses prop maker feather along with a matrix feather wing. So no matter what I've been working on, it's been a lot of matrix work and that's what I've been working on. Awesome. Thanks Liz. Excited to see the projects. Next up is Melissa. Hello. So last week I finished updating the home assistant guides. This week I started going through the link issues and fixing and merging and closing the easier ones. And I'm switching and I continue doing that. Right. Thanks Melissa. And you are the last person in status updates. So we're going to move on in the weeds. In the weeds is a chance for folks to ask any questions or us to have any discussion maybe about things that came up, but more often things that we like come up over during the week and that we want to cover or discuss in a public way. So first up I will just give the highlights of this first topic that has since been resolved thanks to folks on discord. But Tadba asked quote unquote installer for circuit python projects. I have a circuit python application I need to install on hundreds of boards. The application consists of a bunch of library files in the circuit pi slash live and my application files in the circuit pi route. Has there been any effort to create an installer for circuit python projects that's more usable than unzip the zip after installing the circuit by then you have to and the update it says nevermind looks like the pico tool save dash a food dot u of two works well. So this is a way of copying the data off of an apico or an rp20 40 so that you can copy it back on later and that includes the file system. And then Jeff adds a note that says a long time ago I wrote github.com slash jetblur slash make fat image for creating a fat file system image on a host computer. It's unmaintained you could couple it with u of two convert to create a u of two file of just the file system. And that will work on devices where the file system area is writable from the u of two boot loader. All right. And then next up we have a topic from foamy guy. Yeah thank you. I have this all pertains to an issue that popped up in read the docs specifically around the theme when it tries to build the docs over on their side inside of their I guess VMs or whatever it is you don't really see the same issues as far as I can tell if you build it locally but if you look back at the builds inside of their system you can see that they're having trouble building on some of the libraries. So this was originally noticed and fixed inside the core hug report to Jeff I think fixed it there and pointed me to this thanks for that. I have done some testing in the libraries. I noticed a couple of weeks back we were having the same problem in the libraries and I started doing this but didn't quite get ready to the point where I was confident in bringing it up and running it yet but I am there today so far so that's good. I tested this out in the test repo and it appears that it's working there. I put in a PR I merged it I let it do its build and then I went and checked on read the docs I forget the exact URL but the one where you can see all the builds to confirm that it was completing successfully that one went well and then I went and made a commit in a different library repo just to get the change isolated by itself and make a patch file from it and submitted that into Adabot but I wanted to mention it here just to let folks know that it is potentially ready for some other folks to look at and just to see if anybody had any thoughts or suggestions around the patch files specifically this was kind of the first time I've ever really generated one of those and it's the first time I'm using it with with Adabot to do the to push the patch out so I wanted to bring it up here and just see if the thing that was created looked okay and just get that in front of the rest of the team and figure out if it is looking okay what kind of timeline we want to actually run the patch on afterwards. I can take a look at it later today. Okay cool. It's never seemed that complicated to me so I feel like I feel like what you did is probably fine I haven't looked at it yet but I'll take a look and then we can go ahead and get that merged and get that taken care of. Good catch I want to say as well and thanks for looking into that and getting the fix in but I can take a look later and we can move on from there. Sounds good yeah thank you. Appreciate it. Yeah I was just commenting on the pull request and it looks fine to me and the specific thing that you were wondering about the little parenthetical things I'm guessing that is just a feature of a newer version of Git then it was used the last time we made a patch and I kind of explained what I think that's doing but I think it will be fine because it looks like the normal Git commands are used to create the patch file and to apply it so it's kind of a gigio situation but it's not garbage in garbage out it's git in git out so I think it'll be fine. Cool. Alrighty yep thank you. And that's it for in the weeds I will wrap us up after I take one final time code. So this has been the Circuit Python weekly for September 11th 2023. Thank you to everyone who participated. 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 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 and just double checking our meeting. This meeting is held on the Adafruit or the next meeting will be held next Monday as usual at 2 p.m. Eastern 11 a.m. Pacific. This meeting is held on the Adafruit Discord server which you can join by going to the URL adafruit.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 at Circuit Python NECES role on Discord. With that we hope to see you all next week. Thank you all for attending and we'll see you on Discord.