 Hello everyone! This is the Circuit Python Weekly meeting for January 2nd, January 3rd, 2023. I thought I was going to get the year wrong, not the date. This is the time of the week where we get together to talk about all the things Circuit Python. I'm Paul Kuttler and I'm a member of the Circuit Python community. Circuit Python is a version of Python designed to run on tiny computers called microcontrollers. Circuit Python's 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 anytime by going to adafruit.it slash 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 but except for holidays like today where it's on a Tuesday. In the note stock there's a link to the calendar you can view online or to add to your favorite calendar app. We will 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 is a notes document to accompany the meeting and the recording. The notes document contains time stamps 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 45 to 60 minutes so this gives you the option to skip around. After each meeting we'll post a link for the next meeting's note stock to the Circuit Python dev channel on the Adafruit Discord. Check the pin messages to find the latest note stock so you can add your notes for the following meeting. If you wish to participate but cannot attend, you can leave hug reports and status updates in the document for us to read during the meeting. This meeting is held in five parts. The first part is community news. This is a look at all things Circuit Python and Python on hardware in the community. It's a preview of our Python on microcontrollers newsletter. The second part is the state of Circuit Python 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're all up to. 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. The fourth part is status updates. Status updates is an opportunity to sync up on what we'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 until the next meeting. And the fifth and last 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 a status update. And that's how the meeting will go. First up is community news. This is a preview of news that you can find in the Python on hardware newsletter that Ann puts together every single week. The first one is Pybrx brings MicroPython to LEGO controllers. Pybrx is a Python coding for smart LEGO hubs. You can run MicroPython scripts directly on the hub and get full control of your motors and sensors. Pybrx runs the LEGO Boost, Citi, Technique, Mindstorms, and Spike. You can code using Windows, Mac, Linux, Chrome OS, and Android. And you can restore the original LEGO firmware with ease. The next one is a Circuit Python watch from community member Seth Kerr. It's an LCD watch using an RP2040 real-time clock, wireless G-charging, and a 1.3 inch TFT display and running Circuit Python. And last is a cuddly dumpling bot from Charlene that keeps you warm. It's a perfect companion for the end of the year season. It's machine sewn and has animated eyes with an Adafruit monster mask using Circuit Python. USB rechargeable handwarpers inside. This and more is available in our weekly Python for Microcontrollers newsletter, which goes out via email on Tuesday mornings. Visit adafruitdaily.com to subscribe to the newsletter. Thanks to Ann for putting the newsletter together. If you have any Python on hardware projects to share or find content you'd like to see included, please consider contributing to the newsletter. You can open up PR on GitHub at an underscore engineer on Twitter or Mastodon with the hashtag CircuitPython or email cpnews at adafruit.com with a link. That's community news. Next up is the state of Circuit Python, libraries, and Blinka. Time stamp. Overall, last week we saw 19 pull requests merged. Some names that were new to me out of the 15 authors included Jay Greco, XGPT, and Pixel Clay. We had five reviewers, and we had 16 closed issues by nine people and 13 new issues opened. Scott, would you like to cover the core, please? Find it here. So for the core, we had 15 pull requests merged from 12 different authors and some new folks. Jay Greco is new. C. Darius is new. Okaro is new. Pixel Clay and Chuck Wan are all new to me. And we had two reviewers, Dan and Jeff, so thank you to them as well. We had 19 open pull requests with a number of them as drafts that are marked. We still have a few that are really old, over 300 days old, so we should take a look at those. And the rest look like a few weeks old, which means we're getting through many of them anyway. So keep it up on pull requests. Issues-wise, we had nine closed issues by five people and eight opened eight by eight people. So good participation from a number of people and only net, actually we're net down one, which is great, for a total of 586 open issues. We have six open issues on the 8.0 milestone, which is the one that we want to get down to zero in order to do a stable release. And we have two issues not assigned to milestone when these stats were taken, which is a little out of date, so that ticket with a grain of salt. No seven-three issues, so seven-three-three looks to be good and is probably the last seven x-release as we are really focused on 8.0. And that's it for the core. Thanks, Scott. Catney's out today, so I'll cover the libraries. We had four pull requests merged from three authors, including XGPT, Michael, Pakusa, and Naradak, with five reviewers. There are 50 open pull requests, with the oldest being 826 days and the newest being one day. We had seven closed issues by five people, and five issues open by five people, for a total of 600 issues, with 94 of them being good first issues. Below that, you can see the different statistics for the libraries on PyPI. We had a total of 61,708 PyPI downloads, over 306 libraries, and there's a list of the top 10 libraries by PyPI downloads in the note stock as well. The following libraries had updates over the last seven days, that included Neal Pixelate, the WizNet 5K, Circuit Python Display Text, and the HTTP server. If you're interested in this information and more, check out circuitpython.org slash contributing. You'll find all the open PRs, open issues, and a list of infrastructure issues. If you're looking to contribute, this is a great place to start. The issues can be sorted by label, so you can search for good first issue if you're getting started, or bug or enhancement if you're looking for something a bit more complicated. We have a guide on contributing to Git and GitHub, and we're always available to help you get started with that, so let us know if you need any assistance. And with that, Scott, will you please cover Blinka as well? Yeah, I'd be happy to. Thanks, Paul. So Blinka is the Circuit Python API compatibility layer, where you can use Circuit Python code and libraries on top of CPython and Linux or on MicroPython. So for Blinka, there were zero pull requests merged. There are four open. Two of them are very old, and then the other two are a little less old. It's obviously holiday time, so it's unlikely things are going to get done right now. Issues-wise, though, we had four Blinka. We had zero closed issues by zero people, and zero open by zero people, so no things there. 86 open issues under the Adafruit slash Adafruit underscore Blinka repo. PyPI downloads for Blinka in the last week was 18,384. PyWheels downloads in the last month were 7,191. And the number of supported boards is at even 100. Awesome. Thanks, Scott. Next up is hug reports. Hug reports is a chance to highlight folks in the Circuit Python community and beyond for doing awesome things. I'll start, and then we'll go down the list alphabetically to give everyone a chance to participate. If your texts only are missing the meetings, but have hug reports in the notes documents, we'll read them as we get to you in the list. I wanted to send a hug report to DJ Devon 3 for sharing a TR cowbell, which I got in the mail. I'm looking forward to playing with it. It's big, and I know if you get a chance, Foamy guy's been doing some streams on it, so you can see it live and in person on that. And then I wanted to send a group hug and thank everyone who's listened to the Circuit Python show. We just wrapped up Season 2 a couple of weeks ago, and looking back at this first year, I'm very grateful to everyone who has listened or been a guest on the show. Thank you. Next up is SeaGrover. I'd like to give a hug to TechTrack, who jumped in and helped me with the confusing, at least to me, CI issue in GitHub. Hugs to DJ Devon for enthusiastically sharing his exceptional and evolving TR cowbell design. It's kind of fun to watch that grow and change. And of course, to Foamy guy for taking it on and adding some Circuit Python support to move it to the next level. And then I wanted to thank the community for all their inspiration and support in 2022, and I'm looking forward to the same in this year. Thanks SeaGrover. Next up is Dan. Thanks Paul. I too would like to thank DJ Devon 3 for sending me a TR cowbell proto, which I already assembled, but I haven't managed to test it yet. And also thanks to him for testing heat-based stack settings. That's that PyStack draft PR that he's been doing extensive testing on. Thanks to Jeff for some settings.toml bug diagnoses and fixes over the holidays. That was very helpful, and we'll certainly include that in the next beta. Thanks to Mikhail Pakusa, who has been working on a lot of revamping of the insides of HTTP, the HTTP server library, which was a library that I wrote in like an hour for a specific thing and has now turned into something else. And I really appreciate everybody else working on it. So I don't have to work on it. Thanks to Anna data and Paul one who tested Mikhail's changes. And also thanks to Billy 80 who suggested a doc fix, which is incorporated to Mikhail's PR. Okay. Thanks Dan, and Scott's going to read the next few for some folks who aren't at the meeting today. Thanks Paul. So first, we have notes from David Godd, who has, um, hug report to Lady Eda and Phil for managing parenting and bringing the streaming schedule. It was great to have John Park and others, but nothing compares to you. And a group hug also from David. Next we have notes from DJ Devon three, uh, lots of hugs, which is great. So the first one here is a hug to Naradok and foamy guy for code contributions that brought the TR cowbell to life as a real MIDI sequencer. The contribution, contributions you've made are years ahead of where I thought I'd be with it. Hug report to foamy guy for streaming while working on code for the TR cowbell. I'm thankful to be able to watch you code multiple times a week. I love your streams because I always learn something new about circuit Python in every episode, no matter what you're working on. Uh, hug report to scur, Seth for spotting some issues with the TR cowbell, potential workarounds and encouragement. Congratulations on finishing your wireless charging wristwatch running circuit Python. Hug report to Todd bot for his pico step sequencer without you and your designer would have never attempted to make a sequencer or dragon eyes for the Halloween mask. Uh, hug report to John Park for the gracious words about the PCB design and for hosting an amazing show every week. Hugs to Lady Eda and Phil. Uh, you three are beautiful thing wishing you happiness, joy, more cowbell and golden diapers in 2023. Uh, hug report to maker Melissa for an awesome demo of a custom CNC machine on her YouTube channel. Uh, hug report to everyone who spent a little bit of their holiday off time answering questions in the circuit Python help channel. There was definitely a little uptick in activity after Christmas with new members looking for help with all their new devices and a group hug to all in a happy new year. Uh, last up for me to read is foamy guy. Um, foamy guy has a hug for DJ Devon three. Thanks again for sharing your TR cowbell sequencer design and sending out some. I've had great fun tinkering with it. Also for sharing a great MIDI tutorial video. Hug report to Dan H for answering some questions I had around storage behavior over the break. Uh, and a hug report to Catney for being a great friend and community leader as well as going to great lengths to make me feel comfortable and welcome during my Adafruit onboarding at the beginning of last year. Uh, hug report and lastly a group hug to everyone in this amazing community. Here's to another wonderful year of tinkering. Thanks. God appreciate the help Jeff here up next. All right. Hello. Um, I haven't been around much, so I will keep it short. I have a group hug and for you, Paul, a special hug and thanks for your time as host of the weekly meeting. If you ever want to come back and guest, of course, you'd be very welcome. Thanks, Jeff. Next up is Kevin Matoka, Kmatch. He's been away for several months and asked what has he missed and a happy 2023 hugs to all. And Scott, you're up. Thanks again. First to hug to Dan for hunting down some tricky caching issues. I'm actually hopeful that I have this problem with my watch and that it will fix that when I'm able to update the software on my watch. Uh, and then, uh, a long hug here to Bob lot, Naradak, Oats and honey, D, Halbert, the Shippu, Enig data, Argen, blue and others for helping in the help with circuit Python channel over the holidays. Thanks, Scott. And lastly, we have from tech trick, a group hug for everyone. And that was hug reports. Next up is status updates. Status updates is our time to sync up on what we're doing. I will start and we'll go through the list alphabetically to give everyone a chance to participate. When I call on you, take a couple of minutes to talk about what you've been doing since the last meeting and what you'll be doing up until the next meeting. This is also an opportunity to provide tips and tricks relevant to what people are working on. If a discussion becomes too much for status updates, we can move it to in the weeds. Um, I showed this on show until last week, but I actually built something practical and built a sensor to measure how much water softener salt is left in my tank using a time of flight sensor. So that was pretty cool. And then my day jobs changed a bit. So I have a conflict at this time going forward every Monday. So this will be my last time hosting. It's really been an honor representing the community and thanks to everyone for making me feel so welcome. Next up is Sea Grover. The initial release of the pallet slice wrapper class was finished. I'm still testing it. So I haven't submitted it to the community bundle. Uh, two versions are available in the repo. One is a minimal version that just supports the slice and extended slice capabilities. The second one adds, um, what I call a moderate set, but it's most of the typical list management tools you'll need like contains and append and so forth. The next phase of developing, um, for the pallet slice wrapper will be, um, to look at adding the remaining list of, uh, list attributes as well as a couple iterative methods like min max and enumerate. It's not likely that a complete inventory of list methods will ultimately be needed to manage pallets. It's all about tradeoffs, but it's a great opportunity for me to get some experience with magic methods because I really haven't used them very much and to learn where they might be useful and economical. I've got a couple of links there. One is to the repo and to the test video and I'll put that out on discord. The next project in the queue, if I don't get distracted by pallet slice is to finalize a hand-drawn PCB replacement for a guitar pedal that I've been working on for a friend. And then, um, I'm going to follow that by your Iraq realization of a precision VCO that looks like a retro HP wave generator module. And the VCO is going to use something from the Feather MCU family. I'm currently running on an M4, but I may switch to something different with that. And then it has a custom 809833 wave generator feather wing that I made. The physical panel design's done, the functional block diagram is done, and now I get to get into the fun part and that's the PCB design. And, uh, this is not quite Circuit Python, although I was thinking of some ways I could use Circuit Python to calculate things. The just repair the cracked wind chime sail project took on a life of its own. And now I know more about tuning chime tubes for wind chimes than was really needed to complete the project. That sounds like a new project. Thanks. For the updates, Dan, you're up next. Okay, thanks. So as Scott mentioned, I fixed this obscure bug that has to do with, uh, protecting when you turn the CPU cache on and off, then some things become invalid. Like, uh, and so, um, the compiler wasn't noticing this. Maybe also, um, it should have, these memory fence instructions should have been in there for other reasons also to tell the instruction stream to notice it. So, uh, that took several days of debugging, but I have that in and I hope that it fixes the NRF issues too. We had some NRF issues that had to do with, um, mysterious, uh, errors when doing flash writes and maybe this would fix those too. Um, I clarified some error messages for properties that are read only, but only on some ports. For instance, you set can't set the clock speed on most processors. And it was giving a kind of an obscure error message. We made that clear and made it more in line with what CPython does. We made it the same as what CPython does. Um, um, did a lot of PR reviews over, uh, the holidays, um, and I'll continue working in 800 bugs. Uh, Scott and Jeff and I are going to triage the list of, uh, bugs to fix again, uh, maybe this afternoon. Okay. Thanks, Dan. Next up is David Glaude, who is in present, so I will read for him. Uh, he introduced a coworker to Circuit Python and monitored the office temperature during the break. I made the, the Circuit Python part and he captured the temperature on the host storing it in a database and it worked without a glitch for 15 days. Failed to control my beamer in infrared. I failed with Circuit Python and then failed with Arduino too. The Google TV remote in my set top box remote also fail at that. So maybe it's not me and there is something special about the protocol or the beamer sensibility. Scrolled messages on an eight by eight RGB neopixel matrix. And lastly, some circuit python.org activity related to lowland boards. Next up is DJ Devon three, who is text only today. He worked on some documentation for the TR cowbell, everything from IDC bus issues and multiplexer behavior to soldering instructions and schematics between Naradoc and foamy guy. The code for the TR cowbell has evolved beyond my ability to fully comprehend it. It's taken on a life of its own to become a community based project to those who have received a board. It's going to take me the rest of 2023 just to digest what's foamy guy was able to do in four hours of live streaming. Thank you to everyone who has been having fun with the board and figuring out ways to use it. The feedback has been positive and constructive. Efforts continue in learning fusion 360 and designing a 3d printable enclosure currently working on a way to add modular in peripherals using Adafruit's four pin magnetic connectors. Docking connectors to the IDC bus means that you can add remove peripherals like DeWalt batteries just slide in a different peripheral. There's a lot that could go wrong with such an intricate design. It might take months so I'm making no estimates on when the enclosure will be available. Everyone that received a TR cowbell version 1.2 will also receive an enclosure when they're ready. I have enough components again for three more TR cowbells to give away. If anyone is interested in getting one feel free to DM DJ Devon 3 on Discord. The full kits assembled or unassembled are completely free and not for sale. Currently the offers for Adafruit folks, Circuit Pythonistas or long time community members because of the address exchange that's involved. And next up is foamy guy. Scott will you read his update for me? I'd be happy to. So foamy guys updates over the break code for the MIDI sequencer hardware started with the USB MIDI output and then adding ways for the user to modify note values with the knob and other types of manipulations also started working on a display for it with a secondary microcontroller connected via UART. I investigated an offset in positioning for display tech text labels, particularly noticeable with the monospace fonts and labels that have leading space characters. So technically it's not present in other cases as well. I found what I think is the root cause and submitted a PR for it. Moving forward, look over my Circuit Python 2022 post and write one for 23. Starting working through the open PR library PRs testing and reviews. Thanks. Next up is Jephler. Hello again. So for the past weeks I didn't have much activity. I did some small some small PRs and reviewing here and there. I wrote up the code for the standalone next mouse to USB HID converted with Circuit Python. The guide will probably be done sometime in January, but there's no fixed schedule for that. This week I plan to be working on some Circuit Python bugs and also doing something with a Scorpio board and the eight meters of Neopixel LEDs that came on Saturday. I didn't know we got Saturday UPS deliveries from Adafruit, but in this case we did. Thanks Jephler. Next up is Scott. Thank you. So my status updates, I've been out the last two weeks for the holidays in my wedding anniversary and visiting family. I did the Circuit Python 2023 blog post before I left, but it went live on New Year's Day as expected and I checked that. I haven't gotten any emails to the Circuit Python 2023 at Adafruit.com email, so let me know if you sent one. I did send a test one this morning from my personal account and did get it into my Adafruit account, so I think it is working. I did see a few, at least Jeph's Circuit Python 2023 Macedon post, so I'll start collecting those and do a post sometime this week with the link to the first ones to go up. It is a short week this week for me. Today's Tuesday and it's the first day I worked and I'm only working through Thursday because on Friday is a travel day. I'm heading back from Michigan here back home, which is going to be real fun, but it'll be nice to be home as well. So this week, my goal is to get it caught up and in sync so that next week I can really start digging into stuff, albeit my desk at home as well, that'll help too. And then once I'm in sync, I will have time for working on my Circuit Python 2023 post, which may probably won't go out this week, but we'll probably next week. I want to wait until FileGlider and PyLeap are available in the Android Play Store, the Google Play Store, because I think last I heard they were pending a review and so hopefully I want to be able to link to that from my post, so I'll wait for that. But that's it for my update. Thank you. And then I'll read off TechTricks here too. So TechTricks says, over the holidays, went out west to hang out with my girlfriend and her parents. It was an absolute blast. Continued doing the advent of code in C. Got a hash table working for the first time, so that was exciting. Doing all the challenges in C has given me a renewed appreciation for everything Circuit Python is doing under the hood. And then this week for TechTrick, probably sleeping now from a red-eye flight back east, going to continue updating parts of the CI that have deprecation warnings. I'll try to hit all corners of the tooling, but please don't hesitate to tag me on anything with warnings. Some parts will be deprecated as early as June, I believe, so trying to be proactive. Looking into some older issues I've submitted that got some renewed traction over the holidays and hoping to organize a community help desk soon for people looking for some help with anything they have received over the holidays. Thanks, Scott. And that was status updates. Next up is in the weeds. In the weeds is an opportunity for more long-form discussions that either come out of status updates or that folks have identified ahead of time. If you have any in the weeds topics, please make sure they get added. Thanks, Jeff, for fixing my timestamp. We don't have any topics today, so I'll move to wrap up. This has been the Circuit Python Weekly meeting for January 3, 2023. Thanks to everyone who has participated. If you want to support Adafruit and Circuit Python and those that work on the Circuit Python project, consider purchasing from the Adafruit shop at adafruit.com. The video of this meeting will be released on YouTube at youtube.com. And the podcast will be available on all major podcast services. It will also be featured in the Python for Microcontrollers newsletter. Visit adafruitdaily.com to subscribe. The next meeting will be on Monday, January 9, 2023, but the following meeting will be on Tuesday, January 17, 2023, due to a U.S. holiday. This meeting is held on the Adafruit Discord server, which you can join by going to adafruit.it slash discord. To be notified about the meeting and any changes to the time or day, you can be asked to be added to the Circuit Pythonista's role on Discord. We hope to see you all next week. Thanks everyone!