 Hello and welcome. This is the CircuitPython Weekly Meeting for October 10th, 2023. This is the time of the week where we get together to talk about all things CircuitPython. I'm Scott, and I'm sponsored by Adafruit to work on CircuitPython. If you don't know, CircuitPython is a version of Python designed to run on tiny computers called microcontrollers. CircuitPython development is primarily sponsored by Adafruit, so if you want to support Adafruit and CircuitPython, consider purchasing hardware from Adafruit.com. This meeting is hosted on the Adafruit Discord server. You can join anytime by going to the URL adafru.it-discord. We hold the meeting in the CircuitPython-dev text channel along with the CircuitPython voice channel. This meeting typically happens on Mondays at 2pm Eastern, 11am Pacific, except when it coincides with the U.S. holiday like it did yesterday. So today is Tuesday. In the Notestalk, 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'd like to receive these notifications, ask us to add you to the at CircuitPythonista's Discord role. There's a Notestalking document to accompany the meeting and recording. The final Notestalking document includes timestamps to go along with the video so you can use the doc to skip around and view parts of the video that interest you most. The meeting tends to run 45-60 minutes, although we have a small crew today, so it'll be less than that. After each meeting, we post a link to the next meeting's Notestalking document to the CircuitPython-dev channel on the Adafruit Discord. Check the PIN's messages to find the latest Notestalks so you can add your notes for the following meeting. If you wish to participate but cannot attend, you can always leave hug reports and status updates and in the weeds in the Notestalking document for us to read during the meeting. So, 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 a chosen set of items from our Python on micro-crim-trollers newsletter. The second part is the state of CircuitPython libraries in Blinka. It's 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 hug reports. Hug reports is an opportunity to highlight the good things folks are doing, taking the time to recognize the awesome folks in our community. Fourth part is status updates. Status updates is an opportunity to report on what you've been up to. Take a couple 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. It is an opportunity for more long-form discussions. These discussions can come out of status updates and be something you've identified ahead of time as too long for status updates. That covers how the meeting will go. With that, I will do our first section, community news after I take a time code. Community news is a glimmer slash glimpse of our Python for micro-controllers newsletter. The first item here in the lead story in this week's newsletter that goes out on Mondays is the release of MicroPython 1.21. MicroPython 1.21 was released Friday with significant changes since the 120 released last April. A few of the highlights are built-in modules removed the U prefix, except if the module is not compatible with the CPython version. This is something CircuitPython has done quite a while, so it's awesome to see MicroPython do it. The ESP32 port of MicroPython uses IDF5. Support has been added for BLE on the Raspberry Pi PicoW boards. Importing has been tweaked and optimized. Conversion specifiers and F-strings are supported. ESP8266 and the ESP32 ports add support for the ESPNow protocol. There is now an extensive Lora module and much more. I would like to point out that the ESP32 port now has dynamic MicroPython heap that grows as needed, which I am very excited about. All of this new stuff has been added without a performance hit since the previous release. Congrats to the MicroPython team! Next up, we're in a released frenzy. Python 3.12 has been released. If you need to be more specific about Python, you would call CPython because it is also implemented in C. Python 3.12 is out now. New features here, more flexible F-string parsing, allowing many things previously disallowed. Support for the buffer protocol in Python code. A new debugging slash profiling API, which I'll note is not supported in MicroPython or CircuitPython. CPython now supports isolated sub-interpreters with separate global interpreter locks. This is great if Python is embedded by multiple libraries in a C program. Python has even more improved error messages. More exceptions potentially caused by typos now make suggestions to the user. They've added support for the Linux perf profiler to report Python function names in traces, and many large and small performance improvements such as PEP709 and support for the Bolt binary optimizer delivering an estimated 5% overall performance improvement. In addition to 3.12, the PSF has also announced that 3.11.6 is available as well. I assume that's a bug fix release of the 3.11 series. Two more items here in Community News. First, we have the Open Hardware Summit for 2024. The Open Hardware Summit is the annual conference organized by the Open Source Harbor Association. A 501C3 not-for-profit charity, it is the world's first comprehensive conference on Open hardware. A venue and community to discuss and draw attention to the rapidly growing Open Source hardware movement. Speakers include world-renowned leaders from industry, academia, the arts, and maker community. Talks cover a wide range of subjects from electronics, mechanics to related fields such as digital fabrication, fashion technology, self-quantification devices, and IP law. As a microcosm of the Open Source Hardware community, the Summit provides an annual friendly forum for the community. Tentative dates are April 26th and 27th. Livestream and remote talks will be permitted. Oshawa, the organization, is officially on the prowl for wonderful talks, workshops, and exhibitions for the Open Hardware Summit in Montreal. Fill out the call for proposals form and toss your hat in the ring to make the Open Hardware Summit 2024 extra cool and fun. And there's a link to the proposal form. Alright, last up for the news is more of a reminder. Hacktoberfest 10 is here. This year marks the 10th anniversary of Hacktoberfest. Hacktoberfest has grown from 676 participants in 2014 to nearly 147,000 folks. I'm going to skip a little bit of this. As in previous years, Circuitbython will be participating in Hacktoberfest, marking some pull requests as Hacktobereligible. The current list of issues is available at circuitbython.org slash contributing. You can look for Hacktoberfest and there's more info there to link to a blog post. I'll say that if you do want to work on something and you don't find the Hacktoberfest label, feel free to ping me or someone else on Circuitbython's dev channel. We're happy to add that if that's what you want to do for Hacktoberfest. We want to make sure that any changes that you want to do in Circuitbythonland apply if that's your intent. The main thing that you need that label is that sometimes you'll get bad junk PR, so that's why that's there. But we're happy to make sure that you get credit where credit is due. But note that the reward system no longer includes t-shirts. It's only virtual rewards this year, which simplifies things on their end greatly. Next up, newsletter details. The Circuitbython Weekly newsletter is a Circuitbython community-run newsletter emailed every Monday. The complete archives are available at AdafruitDaily.com slash Category slash Circuitbython. It highlights the latest Python on hardware-related news from around the web, including Python, Circuitbython, and Microbython developments. To contribute your own news or project, you can edit the next week's draft on GitHub. It's adafruit.com slash adafruit slash Circuitbython-weekly-newsletter. Look for the drafts folder and submit a pull request. Or you may tag your tweet with hashtag Circuitbython on Twitter or email cpnews at adafruit.com directly. That's community news. Next up, we have the state of Circuitbython libraries at Blinka. This is a kind of objective view of the health of the project and the subparts of Circuitbython. The report contains information from the previous seven days, but anything done today is not included in the report. In particular, I pulled Monday's report. This does not include Monday activity or Tuesday activity since we're doing this meeting on a Tuesday. The reason to do that is that next week's report will have this stuff. As of Sunday night-ish, I forget what time it actually runs, let's do overall. Overall, we had 17 pull requests merged from 15 different authors, which is awesome. Some newer folks to me are John P.789. I'm sorry, I butchered it. I'm sure. It's a rare name. Lyt Smithka is a new name. SyLabs Bella5 is a new name. Hey, Gowery is new. Tristan Mortar are all new folks. Andy Bing, I think, is a pretty regular contributor as well. So thank you to all those folks. Thank you to the five reviewers including, yeah, the five reviewers for that. We have 10 closed issues by three people and nine opened by eight people. So we're net down one, which is great. And zero issues were assigned to Hacktoberfest label. So I'm not sure stuff is actually labeled Hacktoberfest, but if you find something, feel free to work on it and we'll make sure it gets counted. All right. Next up, let's go into a little bit more detail for the core. This is like the C core that undergirds the Python on the microcontroller itself. For the core, we had 12 poll requests merged from 10 different authors. So a lot of folks here as well. We had three reviewers, myself, Dan, and Mark. We have 21 open poll requests. So we're comfortably under the 25 open poll request single page mark that I kind of like to go by. In fact, we have four of these were open zero days ago. So these are new stuff that hopefully got merged in already since these stats were taken issues wise. We had four closed issues by two people and one open by one person. So we're net down one as well. We have a total of 724 open issues and we triage those. We have two that were not assigned to milestone when these stats were run. And we have milestones are used for a different from the folks to prioritize the work they're going to do. Kind of like dictated by when we're hoping to fix things and get them released. We have 12 open issues for 8 2x, which is our current stable branch, but it's not getting a whole lot of work except bug fixes. And then our next major release will be 9.0 and it has 53 open issues. So I'll get to triaging those things as well this week. And with that, I'm going to see if FOMI guy is able to do the stats for the libraries. Yeah, definitely. Thanks, Scott. For the libraries this week, we had five pull requests merged. Let me also mention this covers all of the Python level libraries. Those are going to be all the repos that start with Adafruit underscore, circupython underscore, and then whatever the name of the library is. These are typically either drivers that allow you to interface with certain pieces of hardware or they are helper libraries that allow you to kind of have easier access some high level functions that make it easy to interact with different services or do different things. So across those libraries, we did have five pull requests merged. Those five pull requests were authored by four different authors. Of those, the name that was new to me that stood out was Tristan Warder. So that person may be new or less frequent contributor. So thanks to them, but also thanks to Tyeth, myself, maker Melissa as authors as well, even though they are more frequent. We had two reviewers, myself and Scott. So thank you to those folks. And then on our pull requests, the oldest one merged this week was 117 days old and the newest one was just a single day. So we got some brand new ones in as well this week. That leaves us with 44 pull requests open. We had four issues closed by two people and seven new issues open by six people. We do have no Hacktoberfest labels on the issues themselves, but I was doing some looking into that this week and we have the labels on the repos or tags. Potentially, I'm not sure if they're actually called labels when they're on the repo. But as far as I know, all the libraries are tagged or labeled with Hacktoberfest, which makes all the issues and all the PRs that occur inside those libraries count. But like Scott said, if you are working on something and want to make sure it's going to count, you can always ping somebody or mention it in the Cirque Python Dev channel. And one of us can add the separate label to be more explicit on it. But I think we are all good to go there. We do have across all of those libraries, 649 open issues, of which there are 19 of them labeled as good first issues, which you can find by going to CirquePython.org slash contributing on that page. There is a list of all the open PRs. There are also some tabs that you can click to find the open issues. And on the issues page, there is a dropdown to filter by a good first issue, as well as the other possible tags that are put on the issues. Rounding it out, in libraries, we have the PyPy stats. For the last seven days, we had 118,178 PyPy downloads over the 313 libraries that are published there. The top 10 list is in the notes. If you want to check that out, it looks more or less like the usual suspects towards the top of that list. There is also a list of libraries that were updated in the last seven days. And the one that I'll mention there is the new one in the Community Bundle, which is the AT24Mac eProm library. So check that one out if you are looking for a way to store some data. And that's what we've got for the libraries. Thank you, FOMI guy. Okay, next up, let's have Blinka update from Maker Melissa. Hello, so this past week, we had two pull requests merged by two authors, that'd be myself, and John P.789. And there were two reviewers that would be Scott and myself. That leaves a net total of five open pull requests amongst all the repositories. There were two closed issues by one person and one open by one person. It says there were our zero October Fest labels assigned, but like FOMI guy had said, they're attached to the read wasn't at the issues. There were 9,695 PI downloads in last week, 2,891 PI wheels downloads in last month, and we are at 121 ports. That's it. Thank you, Melissa. Okay, next up is Hug Reports. This is a chance for us to give folks a shout out and thank them for work they're doing within the community. It's also a great way for us to just know what we value as a community and reinforce that. So I will start, I should say this is done as a round robin, so I will start and then we'll go through a list of the folks in the note stock. If you're not listed in the note stock, I'll just won't go to you. That's a hangover from how we used to do it. And I'll read all of the text only folks as well. So first up, I will go myself. I just wanted to say a huge thank you to Maker Melissa for improving Blinka's display IO implementation to support grayscale OLEDs and ePaper displays. Basically porting a lot of the code that I wrote for a circuit python C into Python. So I really appreciate that. That's super cool. People have come to expect portability in circuit python land and I'm super happy to see that applied to inks and grayscale. So thank you for doing that work. I know it's kind of a big ball of code. And then also a hug report to micro python team for releasing 121. All right. Next up we have a text from C Grover. C Grover says hug to Todd bot for urging me to learn and apply python list comprehension. The technique was particularly magical when summing the square of differences for a multi-channel spectrometer sensor project. Didn't know what I was missing. Hug report to John Park for his support patients and creative insights as I labored over iterations of the spectrometer sensor code. And lastly a hug report to the BNO 0559 DOF sensor library. There are some advanced for me driver coding examples in there that got my attention while I was attempting to understand sensor internals. Next up David has a hug report for C Grover for a lot of great playground posts at adafruit-playground.com slash you slash C Grover. For those of you who are unaware adafruit playground is a kind of like lower bar post which are working on sort of community site. Also separate from adafruit.com for the same reason as the adafruit newsletter. It's built upon a lot of the editor for learn so it's a great way to learn or see behind the curtain for learn guide I think as well. Next up is a text from DJ Devon 3 who has a hug for a foamy guy for a very pleasant Saturday morning stream. A hug to Todd Bot for a neat YouTube video demos of his Pico TouchSynth. A hug report to C Grover for continual code examples for audio and display I.O. related projects. A hug to BlitzCityDIY for an amazing sports scoreboard project that I will likely continue to give year after year for sports fans. And now that we're in football season I really want to try it out. A hug to circuit python developers for all their hard work on the ESP IDF and micropython merges and a group hug. Alright next up we have a note from ADCC who has a group hug for everyone. Next up is foamy guy. Alright thank you Scott. A hug report echoing what you mentioned before. A hug report from MicroMillisa for all the improvements in Blanka display I.O. It's really cool to see all the different types of screens and things getting support and all of the newer changes to the display I.O. API getting brought in. So really really cool on board with that. So thanks to MicroMillisa. And then just a hug report for everybody this week. Thanks. Thanks foamy guy. Alright next up is MicroMillisa. I just wanted to give a hug to Jeff for doing a lot of the technical setup for the quality of product guide which made it a lot easier. A hug to BlitzCityDIY for helping me make my first fritzing part and a group hug to Ragnos. Thanks Melissa. Alright now that is hug reports. Next up is status updates. We do this as a round robin as well. I will read the text only folks. And this is a chance for you to say what you've been working on and what you plan on working on in the coming week. It's great for coordinating and collaborating the work that's done in CircuitPythonLand. It's also very cool to see just everything, all the different things that people are working on. So for myself it's a bit of an off and on week because my partner is out of town on vacation. Very excited for her. So I'm solo parenting and I'm going over to my parent's house at the end of the week so I'll be a little bit off and on doing all that. I think at the start of last week I sketched out the memory allocation changes. I think I mentioned this last week. The idea being that we switch to the auto heap growth that was added in MicroPython1.21 and we do it for all our ports. It's going to really simplify any time that we want to allocate but not within MicroPython even though MicroPython is running. Particularly for displays we see this a lot. So I linked to the intermediate changes there but we really need the MicroPython1.21 merge to finish it all up. So it looks good. In that vein I'm working on the MicroPython1.20 merge with Dan. I focused last week on getting the CI going so that we could build all the boards and see where we're at. Dan did a lot of work over the weekend I think. I'm not fully caught up but did a lot of work over the weekend so my plan is to rebase and see where we're at and go from there. Hopefully he'll feel like doing 1.21 after 1.20. I haven't talked to him about that yet. Although I could do it as well. So yeah, I'm fully in MicroPython merge land along with Dan for the time being. Next up I'll read off notes from Cgrover. I'll try to take a timecode. Cgrover says finish the code portion of the AS7341 spectrometer sensor-based TV backlight. The project illuminates the wall behind the TV display with a color that matches what the sensor sees near the edge of the screen. The next step is to build a camouflaged enclosure and vertical mounting wands for the NeoPixel strips. And there's an Adafruit playground link there. I think you see Cgrover. Expecting a perfect purple PCBs to arrive later this week for the PCM510XA I2S stereo DAC project. The pinout of the PCM510XA board will match that of the Max 98357A, a 3-watt I2S mono amplifier breakout so that it can be used as a direct replacement or stacked in parallel to provide a simultaneous stereo line output. The PCM510XA is a modern in-stock replacement for the Adafruit UDA1334 I2S DAC breakout that was discontinued after the chip was retired. Next up, we have NoteStream David Glaude, who says, I should take a timecode, says mostly non-circuit Python work on the Teddy Ruxpin. Circuit Python, trying to enable slash disable the USB-A of the Feather USB host, works in 826 but fails in 9X with a value error that the pin is in use. The goal is to turn off eyes and close mouth of Teddy Ruxpin when USB is enabled slash connected and goes into the idle sequence when the USB is disabled slash disconnected. Interesting that it's in use. All right, please file an issue for that. Next up, we have NoteStream DJ Devin 3, who also tells me to take a timecode. DJ Devin 3 says, health and discord a little. I cleaned three carburetors for a generator chainsaw and car engine, house maintenance and repair projects. Almost got to pet a skunk by accident and having a good time with family. Getting close to a skunk sounds a little scary to me. Next up, I have notes from ADCC who says, continuing adding RP2 BLEIO support and also building macOS user agent that sets no async flag on removable device mounts to work around the Sonoma data corruption slash delay issue number 8449 plus general non-circuit Python related delayed write problems that are used by Sonoma. Apple may take a long time to fix this. And let's go to FOMI guy for their update. All right, thank you Scott. Last week I worked on adding some prompts and more flexibility for selecting the tag and the titles for the automated release tool inside of Adabot. I worked on some testing and reviews for the primary PRs over the weekend. The primary ones were the ADT-7410 sensor rewrite as well as some new examples in the HTTP server and the LIS-3MDL sensor libraries. I also tried out the new Blinka display I.O. with Pygame display and started working on the changes to get that back to working. I have made a little bit of progress but it's not functional quite yet this week as well. I will also this week look into circuit Python org bundle is not building I think or maybe just hasn't built in a long time. I've got to figure that out and see if there's something weird going on with that bundle repo. It may just be out of date truthfully in its actions or something like that but I'll dive into that this week. I will be on DeepDive filling in on Friday so folks are interested at the normal time on Friday I'll be around streaming some circuit Python stuff and then the only other thing I had which was mentioned actually in the Discord I think some time over the weekend and caught my eye was somebody brought up the idea of integrating Blinka with Minecraft so potentially like where my mind went to is you could have a digital in-out object that instead of having connection to a hardware pin would actually have a connection inside Minecraft to some redstone circuitry which I think would be pretty cool to be able to run circuit Python code but have it do stuff inside Minecraft so I think I'll dig a little bit on that direction this week as well and that's what I've got. Cool, sounds interesting. Thank you FoamyGuy and thanks for covering me for DeepDive this week. Alright, last up we have maker Melissa. Hello, so last week I wrote the Qualia RGB666 product guide and I also created my first fritzing part this week I will add the bar display to the Qualia RGB666 guide and work on the on some GitHub issues and test out more displays of Blinka display Ios such as the Pimeroni B hats and W hat displays and I'll likely do some guide updates as well. That's it. Alright, thank you Melissa. That's it for status updates. Last section of the day is in the weeds. This is a chance for us to talk or have any longer form discussions and we have one in the note stock so I will bring it over to FoamyGuy. Yeah, thank you. This was from one we actually discussed a few weeks back about this template engine that kind of goes along with HTTP server but we've split it out Michael Pocusa and I have been working on this the last couple of weeks we split it out to a separate library since that server is getting rather large and since this could be used separately. I think it's pretty much ready to go for a release but I don't know I don't think I have any updates to create the repo and or I don't know if there's some process for moving the ownership over to Adafruit work so I was looking to see if anybody could help with that or if there's documentation for it somewhere to point me towards. I can make it if we need to make it but it is usually possible to transfer ownership but I don't know if you need to be a member but I think you remember anyway so under the settings there's like destructive actions and transfer is usually one of those. Okay, let me check in there. Yeah, so that yeah I know I can do that but I have I probably have more rights than you in the Adafruit work. Yeah, it does have transfer it does yeah so it does have a transfer it does not let me choose Adafruit it says insufficient permission. Okay, so I could either make a new repo or maybe if you gave me full access maybe I'd be able to transfer it. Whatever is easiest I'm cool with. You know I can just make it because you could still push the whole get history it would just be a different remote. Yeah, we might as well do that and then it'll be a bit tricky for you to then fork that. That's okay I can just I can remove this one so that I can fork it back to the same name. Yeah, that'll be alright. Yeah, it makes it a little tricky but I think like we could also like I could have the Adafruit account fork yours but that will be a little weird for you to work on it some more. Yeah, I would prefer the other way only if just because I'm lazy and I sometimes search Google for libraries and there are a few libraries that were created that way where I have made it to the one that was forked from and that is like forever etched in my history. Yeah, okay so I will right after this meeting I'll coordinate with you and I'll just make a new repo and then you should be able to push your changes to it and I can even give you like rights to it in case you need more rights to that temporarily to do that. Excellent, I appreciate it. Cool and yeah and thanks for working on the template engine. Yeah, definitely. Alright, that's it for in the weeds and that's it for the newsletter. Let me switch. Alright, let me take a timecode for wrap up and then I will read the footer of the meeting and just the reminders. This has been the Circuit Python Weekly for October 10th, 2023. Thank you to everyone who participated on this Tuesday. If you want to support Adafruit and Circuit Python and those of us that work on Circuit Python considering purchasing hardware from the Adafruit shop at Adafruit.com If you want to support MicroPython, you can always do that through GitHub sponsors as well. They do a great job at annotating the work that is funded by that. The video of this meeting will be released on YouTube at youtube.com slash Adafruit and the podcast will be available on major podcast services. It will also be featured in the Python for microcontrollers newsletter. Visit adafruitdaily.com to subscribe to that. The next meeting, I believe is Monday, but let me just triple check. Yep, it looks like it'll be next Monday at the normal 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 adafru.it And to be notified about the meeting and any changes to the time or day, you can ask to be added to the Circuit Pythonista's role on Discord. Have a great week, we'll see you on Discord and we'll see you in this meeting all next week. Thanks everybody.