 Hello, everyone, and welcome to the Circuit Python Weekly Meeting for July 18th, 2022. This is the time of the week that we get together to talk about all things Circuit Python. I'm Catney, and I'm sponsored by Circuit Python, or sponsored by Circuit Python, sponsored by Adafruit to work on Circuit Python. Circuit Python is a version of Python designed to run on tiny computers called microcontrollers. Development is primarily sponsored by Adafruit, so if you wish to support them 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 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 a U.S. holiday. 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. So if you'd like to receive these notifications, ask us to add you to the Circuit Python Easter's Discord role. There is a notes document to accompany the meeting and recording. The notes document contains time stamps to go along with the video. So you can use it to skip around and view only the parts of the video that interest you most. The meeting tends to run 60-90 minutes, so this gives you the option to skip around. For each meeting, we post a link to the next meeting's notes document, to the Circuit Python Dev Channel on Discord, and so check the pin messages to find the latest note stocks so you can add your notes for the following meeting. If you wish to participate but cannot attend, you can still 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, which 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 state of Circuit Python, libraries, and Blinka. This is a statistical overview of the entire project, a chance to look at the project by the numbers separate from what we're all up to. Third is hug reports, which is an opportunity to highlight the good things folks are doing, taking the time to recognize awesome folks in our community. Fourth is status updates, which 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 over the last week since the last meeting and what you'll be up to over the next week until the next meeting. And finally, in the weeds. In the weeds is an opportunity for more long foreign discussions. These discussions can come out of status updates or be something you've identified ahead of time is too long for status updates. And that is how the meeting will go. So I will get started with community news. First up, the pi five risk five ASIC project, which is probably pronounced ASIC. The pi five project is creating community driven risk five based microcontroller with the ability to easily support Circuit Python and MicroPython. They've been discussing progress on hackster.io. The team is fundraising to pay for an engineering team to work on the pi five ASIC, which there is a link there to that project as well. Raspberry Pi staff make an RP2040 lightsabers. The crew at Raspberry Pi Towers made Star Wars lightsabers using Adafruit RP2040 boards with the prop maker feather wing, Circuit Python and 3D printing. The design is based on the Adafruit tutorial prop maker lightsaber and changing out the feather M4 express with the RP2040 based feather. Adafruit is working on new Raspberry Pi Pico add-on board boards called Bells. Adafruit is working on new add-on boards for the Raspberry Pi Pico form factor. Quote, whenever we start making add-ons, we always do a proto board first, so it is that this is the Adafruit's first design for the Raspberry Pico add-on. It's the simplest and cheapest to start. With a wide variety of names for add-on boards, shields, capes, feather wings, hats, gizmos, et cetera, Adafruit wanted to name another line of their boards. As the new Pico W is being dubbed Pi Cow by the community, cow-themed ideas are being used. Adafruit, after consideration, announced on their Ask an Engineer show top secret segment, their add-on boards will be called Bells, like Cow Bells. And there's a link to that top secret as well. In news from around the web, Pico Touch HMI is a Raspberry Pi Pico carrier for human machine interface projects. A single board design hosting the Raspberry Pi Pico as a surface mount module. The Pico Touch HMI packs a keypad, screen, speaker, and more with CircuitPython library support. Next up, simulating Raspberry Pi Pico running CircuitPython with some virtual NeoPixels completely in the browser. And there's a link to Twitter for that. Dr. Patrick Kavanaugh, EuroPython 2022, discussing the Pythonic genius behind the James Webb telescope. And there's a link to Twitter for that as well. And finally, a desktop web telescope image viewer with Raspberry Pi Zero displaying and display using CircuitPython. And there's a link to Twitter for that as well. So this has been a preview of our CircuitPython weekly newsletter, which is a CircuitPython community run newsletter emailed every Tuesday. The completed archives are available on AdafruitDaily.com. And it highlights the latest Python on hardware related news from around the web, including CircuitPython, Python, and MicroPython developments. To contribute your own news or project, you can edit next week's draft on GitHub and submit a pull request. Or you can tag a tweet with CircuitPython on Twitter or email cpnews at adafruit.com. And that is community news. Next up is the state of CircuitPython, the libraries, and Blinka. So this is where we look at the whole project by the numbers. It's a statistical overview to give us an idea of the health of the project. And we will first discuss the whole thing overall, and then we'll discuss the core, the libraries, and Blinka separately. So first up, overall, we had 32 pull requests merged from 19 different authors. And thank you to Jeff for highlighting some new names for me. We have Pandian MN, John R. BNSN, Nicholas F. F., and Luis Vitao. And we had nine reviewers there for those 19 authors. In terms of issues, we had 19 issues closed by seven people, and 37 opened by 18 people. So we are net up, but that is good to see that there are so many people involved with those issues. And with that, I will turn it over to Jeff to talk about the core. Hello. So the core is the part of Circle Python that's written in the C language that kind of powers everything. And within the core, we had 18 pull requests merged by 12 authors. It's really fun to have a full dozen. So aside from those people within Adafruit, thanks to those outside, such as Berkdahl and Todbot, Nathan Y3G, and the unfamiliar name to me, Zhuhau. And we had four reviewers, me, Dan, as Patrick W. and Scott. Thank you to all of them and thanks to all of the unofficial reviewers that this list doesn't acknowledge who comment on issues or pull requests as we work on them. In terms of pull requests, we do have 17 open pull requests, spanning zero to 305 days open. And as usual, we just need to work a little harder to keep on top of those, but this number has been pretty static for a while. Issues-wise, we closed 13 issues and nine people opened 14 new issues, leaving us net up one for a total of 547 open issues. We mostly track things by milestones, which shows what Adafruit prioritizes for stable releases of Circle Python. So for 73x, we have three open issues that we'd like to put in our next bug fix release. And for 800, we've got 48 open issues, which can represent bugs or new features that we'd like before we go out with a release candidate or a stable release of version 8. We've also got a number of issues marked as long term, and that means that Adafruit isn't prioritizing working on them right now, but we always welcome community work on any of those 472 open issues. So that gives you an idea of where we're concentrating our work, which is mostly on getting version 8 ready. So otherwise, in a more narrative sense, the exciting new stuff is Scott's work on the Web workflow. The upload and download of files has been pretty stable, depending on the board that you use, and he recently added WebSocket so you can also access the REPL this way. And it is really slick, and we'd appreciate it if you could check that out. And then some work from Dan, which I finished the last little bits of while he was out last week, our support for the ESP32 original version microcontroller. And that has also merged into version 8, and we are at the point where we would love people to try it out, kick the tires, and add support for the huge variety of ESP32 boards that exist out there in the wild. I will be adding, just getting a little ahead of myself, support for a non-PSRAM ESP32 module this week. And then it should be a relatively easy process for anybody who's interested to create a board definition. We may be doing some internally, but we want to have those two PSRAM and non-PSRAM versions available. And then, yeah, get testing by the community on all of those so that we can make the ESP32 a great part of CircuitPython version 8. And that's what we've got in the core. So, back to you, Katny. Thanks so much, Jeff. Next up is the libraries. So, this section covers all of the Adafruit CircuitPython libraries, which is everything that starts with Adafruit underscore, CircuitPython underscore, as well as a few extras, such as the community bundle and the cookie cutter. So, total we had 13 pull requests merged from nine different authors and six different reviewers. We had two pull requests, three pull requests merged over two weeks. One of them was 105 days old, so I'm really excited to see that we're still taking care of the older PRs. And that leaves us with 27 open pull requests. We had six issues closed by four people and 21 opened by eight people, leaving us with 666 open issues. Achievement unlocked. 176 of those are labeled first issue. If you're interested in contributing to CircuitPython on the Python side of things, check out circuitpython.org slash contributing. You'll find all of this information and more, including an actual list of all the open issues and all the open PRs. If you're interested in reviewing, check out the open PRs. If you have the hardware test it, if you don't, check the code, see what it looks like to get started. And once you are comfortable with that, we can talk about leveling you up to the review team. In terms of providing code or documentation, check out the list of open issues. If you're new to everything, good first issue is a great place to start. We have a guide on contributing to CircuitPython using github and we're always available on discord to help. So if you, like I said, if you're interested, feel free to ask any questions and hopefully find something that interests you. In terms of library updates in the last seven days, we have two new libraries. The PCF 8574 and the MMC 56X3. We also have a number of updated libraries that are in the note stock, but I will not read them off. And that's where we are with the libraries. So with that, I will turn it over to talk about Blinka. Hello. Hi. Blinka is our CircuitPython compatibility layer for MicroPython Raspberry Pi and other single board computers. We had one pull request merged by one author and one reviewer. There are four open pull requests still amongst all the different repositories and there were zero closed issues and two open by two people. And that leaves a net of 79 open issues. There were 7,612 PiWheels downloads in the last month and we are currently supporting 89 boards. Thank you, Melissa. Yeah. Next up is HuggerPorts. HuggerPorts is an opportunity to call out folks for doing good things. We like to take time each week to highlight the awesome folks in our community and all of the excellent things that folks surrounding us do. And it is held as a round robin. I will get started and then if folks are text only or lurking, I will read off their notes and if they are around, I will call on them to read their notes themselves. So, first up, HuggerPorts to Justin, one of our internal developers for adding the CircuitPython day banner to CircuitPython.org. To Brent and Lauren for fixing a bug and whipper snapper regarding push button results. To Eva for picking up internal testing along with miscellaneous when needed. To Rose for checking out and responding to an LED animation PR. To Naradok for putting in the LED animation PR. To Tektrick for helping me out with some things and a very nice chat. To everyone interested in being involved in CircuitPython day. I know there is a lot of nebulous being involved at the moment but I will be getting back to you everybody that I have spoken to to find out what part of it they are interested in doing. HuggerPorts to Ann for updating the CircuitPython day blog post which is what the banner on CircuitPython.org links to to Liz and Paul Cutler for agreeing to host streams on CircuitPython day. To Jeff for a nice chat about CircuitPython day and some good suggestions. And a group hug. Next I have notes from Charles who says group hug. And next up is Dan. Thank you. I was on vacation. I'm back. Thanks to Jeff for taking over the ESP32 PR which while I was away he fixed the remaining things tricky things having to do with PS RAM. So thanks. Okay. Great. Next up is Toshibu. Can you hear me? I can. Excellent. So I'd like to thank Paul Cutler for doing the CircuitPython show. It's a very nice way to hear about CircuitPython community. Thank you. Thank you. Next up is FomiGuy. Thanks Kani. This week I have HuggerPorts for Jeff and Dan for working on the ESP32 support. Super exciting to see support come into those devices. And then 2KMatch for starting the effort on dot-clock displays and inviting me to help out with a ESP32 S3 based tablet using them. Thanks. Nice. All right. Next up is Jeff. All right. Well I have a hug right back at Dan for leaving me an interesting puzzle for ESP32 and laying so much excellent ground work to you, Kani, for getting started on the CircuitPython day planning to Scott for tweaking the Dyno moderation to work better and also you for working on it further, Kani. And Eva this may be news to you but you're taking up some PyPI work that will help CircuitPython and THONI function better together. That's what I got. Yes, that will be news. Next up is Kmatch. Thanks Kani. So a big hug to FomiGuy. Thank you for trying out the CircuitPython hack tablet on your latest two live streams. Particularly thanks for working through Git modules issues. I was sweating that a bit but thanks for getting all sorted out. Next, thanks to Scott for some guidance on two open issues on GitHub for your comments there. And last, thanks to Paul Cutler on the CircuitPython show for inviting me to be a guest. A little bit nerve wracking but thanks for making it a positive experience. Hope it works out okay. Thanks. Great. Next up is Melissa. Hello. First of all I want to give a hug to NeroDoc and Tectric for lots of good PRs and Brent and Lauren for helping out come up with good strategies for how to fix the whippersnapper board merge issues and group hug to everyone else. Excellent. Next up is Paul Cutler. I have a hug report for you Kani including me in the CircuitPython day planning. Thank you. A big thank you to NeroDoc for helping me learn all about display IO over the weekend and a Joppler for his RGB matrix guide and FFT or FFT micro lab learn guides that were super helpful while I was learning about that. And then last to Kevin Matoka for being a guest on the show that episode will be next week. Thanks. Excellent. Next I have some notes. Tammy makes things as a group hug. And Scott has a hug for Retired Wizard for continuing Web workflow testing. FOMIGY for PRs with editing workflow Joppler for reviews and Hweaver666 for offering to help with CSS. And finally I have notes from Tectric who says hug to NeroDoc and Maker Melissa for helping resolve an issue with the portal based library regarding dependencies to Katnie for always helping move my CI related PRs along and to provide context and helpful suggestions to them and a group hug. And that is hug reports. Next up is status updates. Status updates is a chance to sync up on what we've been up to since the last meeting and what we're going to be up to until the next meeting. It will also be held as around Robin similar to how we just did hug reports. So with that I will get started. Last week continued on adding whippersnapper usage pages to applicable board guides received requested CircuitPython Day graphic from Bruce and handed it over to Justin to get it added to the banner on CircuitPython.org continued CircuitPython Day planning I had a short week on my long weekend I submitted my PyOhio talk finished clearing out the basement to entirely to prep for the next meeting. This week more whippersnapper pages, more CircuitPython Day planning and another short week will be until the end of July and this long weekend will be building a room in the basement. So next up is Dan. Okay, thanks. So I was away for a week of vacation while I was away I did read my emails so I didn't come back to a lot of emails I get like three to five hundred emails a day so I'm glad I did that and I've replied to some issues and PRs and I will probably start going back to working on ESP32 SPI issues to begin with. I'll be making a CircuitPython 7.3.2 release soon to fix some issues with MatrixPortable. There are some problems with the frozen libraries that are there and even though we fixed the problems we have old versions of stuff in the first library so I'll be fixing that. So that's a short term plans. Okay. Alright, excellent. Next up is to Shifu. So I just came back from ESP22 and that was a week long conference so on Monday I ran a whole day workshop with CircuitPython with the PewPew devices we had left over from 2019. In 2019 we made a conference battle around CircuitPython so we had a couple hundred of those battles left over now and we used them from the workshop. Through the conference there were also maker tables on the ground floor and we spent some time working on CircuitPython and those PewPews as well. On Friday I had a talk about making video games with CircuitPython and during the spring there were a couple of people interested in CircuitPython, in contributing to CircuitPython itself so I showed them how to build it, how to check out the repository and get the right compiler and so on and hopefully they will also come to the discord to get help when they get stuck and at the end of the conference we actually gave out a couple hundred of the PewPew devices that we have left so hopefully we will have influx of new users after that and also during the conference I brought the robot I am working on the FluffBug and I managed to finally get it to work properly so that's a nice thing it was sitting for two years on my desk doing nothing there is still a lot of room for improvement but I hope that now that I got over this hump it will go faster that's it, thank you very cool sounds like you got a lot done alright next up is FOMI Guy alright thanks Kenny I still have a sighting work being done on the house but we are getting pretty close probably just a day or two so I do apologize if any background noise gets through I got the graphics preparation and other more general sections of the octopus game guide down onto the page this week I will be cleaning up and documenting as well as finishing up the parts of the guide that are more specific to that octopus game I worked on getting a build of CircuitPython that Kmash created getting a specific branch that enables the dot clock display I did get that to build successfully and we got it loaded on the test tablet on the stream this weekend so that was really cool I am going to be making a basic multi touch demo just like touch and it will drag around some color circles or something like that I think just to show the multi touch capability of this device I will be working on some graphics for a new flip clock project for this week I think on like a feather TFT device I started up a new clean branch for the web workflow edit page PR I had some trouble trying to fix some unwanted changes on the old branch I just started fresh and got that resubmitted so that is all cleaned up and then lastly this week I will be working on some examples and learn guide pages for vector IO and bitmap tools and other lesser known and less documented display IO features so that is what I got this week thanks I am totally in support of the new branch way to go I run into that more often than I want to admit it is nice to try to learn it is nice to attempt to recover but sometimes it is easier to start a new one alright next up is Jeff hello so last week I found the one weird bug that was causing memory corruption on the ESP32 port and after that with also some help from Scott we were able to get it merged into the core and did lots of testing on the ESP32 about 80 to 90% of stuff that I tried work and that is kind of a testament to the quality of the ESPIDF as well as Dan's work and I learned about using fauny it is actually quite slick and I can see why people use it it is facility to install modules from PyPI mostly works which is a really awesome thing because it provides a way to get modules onto the ESP32 boards particularly because they don't have the USB mass storage that we are all used to still last week I did a little work on a guide for QMK with the RP2040 I did some pull request reviews and since this was mentioned during the libraries an old cookie cutter PR of mine was updated and merged that was the 105 day old one I think so now cookie cutter works on windows computers which at least the more is really happy about so make sure though that you have the latest cookie cutter because this also takes advantage of some recently added features and recently added as like released in the last two or three months so yeah you can just update cookie cutter through PIP if that if you run into problems so anyway this week I may take a look at more ESP32 issues if Dan asks and I'd like to do a small ESP32 circuit python project I don't really have an idea yet so I'll be thinking about that I wrote here that I'll be actually finishing the QMK guide for RP2040 that that may come late in the week I need a new board that I haven't botched the soldering on so that I can get all the photos that we want I will do PR reviews as I am able and then whatever catches my fancy we talked about a lot of things in the year and two more meeting so I've got a million different ways to go as usual and tune in next week to find out what I actually did thanks Jeff next up is K-Match thanks Katnie so this past week discussed some ideas for collaboration with FOMA guy targeting for circuit python day festivities so I look forward to what we come up with there next is uncircuit python related but electronics related was looking at capabilities for ultra wide band sensing for position and location sensing pretty cool capabilities and then coming in this week I need to get back on my bowler training aid to measure where you bowl your ball on the lane and to do that I want to evaluate the capability of distance sensors particularly with optical time of flight sensor to see if I can measure a bowling ball passing by pretty quickly so we'll see how that goes thanks excellent next up is make Melissa hello I wanted to see last week I updated the whippersnapper get have actions to allow dynamic importing of jason values on a per board basis which made things a lot easier I started working on porting edge impulse for firmware which is the Pico SDK over to some of our rp2040 board variants and got it running on the kb2040 just fine and I had the first board that I added to a circuit python merged in this week I'm working I'm continuing to work with the edge impulse firmware and if there's time we'll get back to working on web workflow changes to code does work and that's where I'm at excellent so next up I think I have notes from Tammy makes things says worked on my matrix portal CICD display project I'm trying to use async.io to do the rest API calls so I'm figuring out how async.io works planning to continue working on this and hopefully get it wrapped up this week next I have some more notes from Scott out on vacation this week back next Monday merged in serial over web socket merged in change to use a task with select to monitor open sockets for activity select blocks until socket is ready and then cues background task the select PR also included a fix where mdns would crash due to a race condition PR pending that allows for reconfiguring the HTTP port and also reconfigures the web workflow on auto reload will continue to chase issue was with it and finally I have notes from tech trick last week tested out a solution for getting Dunder version attribute in libraries loaded to PI PI correctly populated without changing any of the release process or infrastructure and it worked updated read me for the repo that handles installing dependencies for libraries as part of the CI process as well as prepared it to handle installing optional dependencies once they get broken out into a new file as part of the PI project Tom will upgrade submitted PR data bot that improves detection of failing get hub actions run and read the docs build failures and still adds them to circuit python.org's issues looked into various libraries for inspiration and guidance on how to best send bulk data over BLE for the blue fruit connect image transfer feature addition this week PR the Dunder version update to the few repos currently using prior project Tom will implement the new eight about changes for CI and RTD failure detection and work through any bugs PR reviews I still haven't had a chance to follow up on and continue working on my circuit Python I think I got that right I just prototyped the second revision and it works great preparing for cost optimized third revision that is hopefully final and that is status updates thanks to everyone who participated next up is in the weeds in the weeds is an opportunity for more long form discussions that may not fit into status updates please add it while we're discussing other topics or I will assume that there are no more topics but we do have a topic from to shippu which I will turn it over to him to talk about it okay so as I mentioned I made some progress with my robot however the way it's programmed right now is pretty messy and difficult to understand and I'd like to use async.io actually not using async.io itself a library not using async function calls and the main loop from async.io to render and one problem I have is that the movement of the robot contains of several animations that are happening at the same time and that's what async.io is perfect for because I can then have separate talk for each of the animations and then it's very easy to write what those animations are what movements are going to happen however those animations need to be synchronized with each other for instance one of them needs to start when another one is in at a particular stage for instance right in the middle of it and I was wondering if there is some smart way of doing it other than just having a global variable somewhere that I set to true in the first task and then read in the second task to unpause it or things like that maybe someone has some ideas about that or some patterns that they have seen so in the guide I talked about using a shared object which is sort of your global variable idea if there are also ways to trigger there are things called events which I'm not sure how well they work I think somebody used them which is basically just another way of it's kind of a wrapper around that have you seen is there something you've seen in regular Python that works for this no not really this is something I'm exploring this is like the interactive kind of our interactive programs that I have no experience with that's what I mean right when I wrote the guide it was a painful experience of trying to distill the simplest ideas from all the examples I saw because a lot of people like to write really complicated code in async I wouldn't get away from that so I don't have any other suggestions other than say try to find do more research and then if there's something that we are not supporting or is broken we'd be happy to fix it but it would probably be in async IO if you see something in trio or something like that we could also think about some other mechanisms that maybe are not in basic async IO okay thank you I will take a look at events for sure yeah how other things do that thanks okay excellent that was in the weeds and with that it is time to wrap up this has been the circuit python weekly for july 18 2022 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 adafruit 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 it will also be featured in the python for microcontrollers newsletter visit adafruitdaily.com to subscribe the next meeting will be held as usual on monday july 25th 2022 at 2pm eastern 11am pacific this meeting is held on the adafruit discord which you can join at any time by going to adafru.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 circuit python east as role see you all next week thanks everyone