 Hello, everyone, and welcome to the Circuit Python Weekly for July 6th, 2021. This is the time of the week that we get together to talk about all things Circuit Python. I'm Katnie, 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 them 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 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, 2 p.m. Eastern, 11 a.m. Pacific, except when it coincides with the U.S. holiday, as it did this week, in which case it is held on Tuesday. If the meeting time has changed, we'll notify you via Discord. If you wish to be notified about the changes to the meeting, we can add you to the Circuit Pythonistas Discord rule. There's also a calendar available that we try to keep updated if you would like to subscribe to that. This meeting is recorded. We record audio from the Voice Channel and video of the Text Channel. If you'd rather not have your voice recorded, you are still welcome to participate. The video of this meeting will be posted to YouTube and the audio is released as a podcast. If you find this podcast is not available on your favorite podcast service, please let us know. There is a notes document to accompany the meeting and recording. If you wish to participate but can't make it to the meeting, you can leave Hug Reports and Status Updates for us on the document and we'll read them off during the meeting. This notes document also contains time stamps to go along with the video so you can use the doc to view the parts of the video that interest you most. The meeting tends to run 60 to 90 minutes, so this gives you the option to skip around. A link to the notes document is posted in the Circuit Python Dove Channel on the Adafruit Discord server every week. Check the pin messages to find the latest notes doc. 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 normally a preview of our Python for microcontrollers newsletter, but as the newsletter is already out this week, it is simply a look at what it includes. The second part is the state of Circuit Python, the libraries and Blinka. This is a statistical overview of the entire project and a chance to look at the project by the numbers separate from what we're all up to. Hug Reports is the third part and that is an opportunity to highlight the good things folks are up to, 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 to 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. 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. And that covers how everything goes. And with that, we will get started. So first up is community news. So the Adafruit learning system reaches 2,500 guides. The Adafruit learning system has exceeded 2,500 guide mark. Thanks to the entire team at Adafruit who builds and makes the learn.adafruit.com one of the best resources for online learning. Thanks to all the authors and contributors for putting their smarts out there for so many to build their dreams with. Thanks to the teams and friends that take photos, shoot video, write code, and help make something so special for many. Most of all, Adafruit thanks to the folks who read, learn, and share learn.adafruit.com and use it to help others. Next up, GitHub co-pilot. An AI coding assistant has been announced. Get suggestions for whole lines of code or entire functions right inside an editor. Trained on billions of lines of public code, co-pilot puts the knowledge you need at your fingertips, saving you time and helping you stay focused. Next up, see examples of Python API usage in the new VS Code Insiders release. A new plugin for Visual Studio Python editing, a single click Python API example usages. And that is on Twitter and also available on the Visual Studio Marketplace. Next up, John Park covered Circuit Python wave playback in his Circuit Python parsec. We have a project that is a macropad with multiple key maps in Circuit Python. I took a look at that and there's a key map config file that allows you to set multiple configurations for the single keypad. Next up, a project adding serial MIDI to a toy keyboard with a Raspberry Pi Pico and Circuit Python. Following that is a Pico Airlift keyboard. And there's code available for that. And finally, this is actually from quite a bit ago but only recently added, we haven't covered it previously which is to say, is a language creators conversation with Hito von Rossum, James Gosling, Anders Heisberg and Larry Wall hosted by Carol Willing, organized by CS for All for their fundraiser in Seattle, Washington and that was in April 2, 2019 and we have a video of that. So this has been a look at part of what is contained in the Circuit Python weekly newsletter. It's a Circuit Python community run newsletter emailed every Tuesday so that would have gone out this morning. The complete archives are available at 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 and submit a pull request with the changes. You may also tag a tweet with Circuit Python on Twitter and or email cpnews at adafruit.com. And that is community news. Next up is the state of Circuit Python, the libraries and Blinka. So this is a look at the project overall by the numbers and gives us a chance to take a look at the health of the project and get an idea what's going on with it aside from what it is we're all up to. So I will talk about the project overall. Then I will turn it over to somebody. Not sure who. I'm going to put somebody on the spot. To talk about the core, then I will talk about the libraries and Melissa will talk about Blinka. So overall, we had 30 pull requests merged by 16 different authors. And I took a look at this earlier and there's only one name I don't recognize. And I wanted to especially call it out and that's Sylvia CC. This is not only their first PR to Circuit Python. It's their first PR to or first contribution to open source in general. So congratulations and thank you so much. And we had 16 authors total and eight reviewers. In terms of issues, we had 16 closed issues by eight people and 20 opened by 16 people. So we're up a little bit, but that's not a problem. And with that, I will turn it over to Dan to talk about the core. OK, I'll talk about Circuit Python core. Since this list was made about a week of stuff, we've had 13 pull requests merged, 10 authors, including some people I don't recognize that much, which is great to have some new people working on things, five reviewers. And we've got 18 open pull requests and we have some that are quite recent, like four or five, which are still in process, definitely. There are 10 closed issues by four people and seven new issues opened by six people. We've got 466 open issues. We've got 72 open issues for 7.00, which we probably need to prune. And I won't read the rest of the statistics right now. You can look at them in the notes. OK. All right, thanks, Dan. Next up is the libraries. So across all of the libraries, this applies to all the Adafruit Circuit Python libraries and a few extras. So everything that starts with Adafruit underscore Circuit Python underscore and things like the community bundle and our cookie cutter as well. So we had 17 pull requests merged by seven authors and six reviewers. We closed one that was 12 days old. The rest were two or one or zero days old. We had six closed issues by five people and nine open by seven people, leaving us with 315 open issues and 59 open pull requests. 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 and more, a list of open pull requests, a list of open issues, and some library infrastructure issues. Find a PR or issue that speaks to you. If you have hardware for pull requests, feel free to test it, leave us a comment, let us know you did. You can also check for syntax or coding style and that sort of thing as well, which you can do without the hardware. So you can leave comments and let us know and once you've done that a few times and you're comfortable with it, we can talk about leveling you up to our review team. And the more reviewers we have, the more authors we can support. So it's always important to add to the review team. And there were no new libraries this week, but there are a number of updated libraries, which I will not read off. I did not type up my overall, so I'll try and fumble through something. We are still working on getting through all of the current open pull requests, the older ones. We're staying up to date pretty well on newer ones, but there's obviously a good 50 or so older ones that we're still trying to get through and Jose David has been pushing hard to make sure that we get through that stuff. And so that's been good because we don't wanna let all of this languish. If you are waiting on us for something and it's been more than 24 business hours, one to two business days, feel free to ping us to have us take a look at whatever it is, because obviously we're doing our best to keep up, but the more people involved, the easier it gets. So with that, I will turn it over to Melissa to talk about Blinka. Hello, let's see here. Sorry, I realized I had to redo my microphone settings here, so I lost my place. No worries. Okay, for Blinka this week, Blinka is our circuit Python compatibility layer for MicroPython and Raspberry Pi and other single board computers. And this week we had zero pull requests merge. There are five open pull requests currently amongst all the different repositories. And there were zero closed issues by zero people and four open by four people, leaving a net of 61 open issues. There were 11,493 Pi wheels downloads in the last month and there are currently 75 boards supported. And that's it. Great, thank you. And that has been the state of circuit Python, libraries and Blinka. Next up is Hogger Ports. Hogger Ports is an opportunity for us to call out folks for doing amazing things in our community and sometimes just call out the whole community for being great. It is held as a round robin where I will start and then I will go down the list. Alphabetically and I use the notes document for who to read off. And if you are listed as text only, I will read your notes. Otherwise I will call on you to read your own entries. So I will start and we will head down the list. So let's see. First up, Hogger Ports to all of the Adafruit Learn Guide authors and everyone involved in moderating and publishing guides, congrats on reaching 2,500. Special Hogger Ports and for all her moderation work in the Adafruit Learn system to Justin and Sheehan and all of LearnDev for all the new features and always being quick to fix the bugs I find and probably most importantly to me to fix the problems I cause for myself. Hogger Ports to Jeff for enacting a code of conduct in a separate community. We had a quick chat about that a while back and it's always good to see more communities having codes of conduct and creating safer spaces. To Karila for starting a new LED animation and helping me with some coding questions and to Dan for answering a question about keypad. And next up is Maker Melissa. This week I have a group hug. Great. All right, next up I have some notes from Somersoft who says retroactive group hug from my period of absence. And then I have a hugger port that was just added by Sylvia who says thanks so much to everybody who helped me, sorry I don't know everyone yet, hugs from me too. And then loop around and I have some more notes from Sea Grover who says a hugger port to JB3 Joe Banks for the Circuit Python language plugin for Adam. Very easy to use and the plotter is utterly amazing. And next up is Dan. Thanks. Thanks to Microdev who's been reviewing various PR that necessarily related to the kind of things that they work on normally, that's fairly helpful. Especially when we're not around to do it. Thanks to Scott for continuing on the BLE workflow work. Most recently he did BLE serial for the REPL. Thanks to Dave Putz for continuing to think and work on Pulsio which is great to have some other somebody else working on that. And thanks to you Katnie for thinking about simplifying PyPixelBuff and underscore PixelBuff and trying to figure out a simpler way of importing and naming them instead of the current scheme which is way too complicated. Okay. All right, thanks Dan. Next up I have notes from David Glauda who says hugger port to Dan H for supporting and including the SNES joystick and librarian guide. Now I need to find a retro joystick and connector to Phil and Lamore for publicly asking the right questions to Siemens, Texas Instruments, Arduino and others and to all the writers and contributors of the 2,500 learn guides. And next up is FOMI guy. Alrighty, thanks Katnie. Yep, definitely echoing a big hug to all the authors and any other moderators in the learn guide system. It's really cool to see that hit the 2,500 milestone there on the number of guides. A hug for Brent and any other Adafruit IO developers. I'm not aware of any other names, but if they're out there definitely thanks to them as well for all their work on Whippersnapper. I had a chance to play with that over the weekend and I thought that's a really, really cool system that probably took a lot of hard work to get up and running. And lastly, a hug report to Les Samurai-Pourpay for starting up many different PRs related to a change in display IO group and to Jose David for helping review some of those as well. And that's it for me this week, thanks. All right, thank you. Next up is I've notes from Hier Effect who says a hug report to Tan Newt for discussions and a group hug. And last but not least, we have Jeff. Hello, I have a hug report in anticipation for Dan who will probably be reviewing my upcoming Flash Savings poll request. And to ask Patrick W for the ESP-IDF update and to MicroDev and some others for working on some problems that popped up after that went in. I got a little bit frustrated on Friday when it was stopping me from doing what I needed to do, but overall the improvements from the update are gonna be really nice to have and the kinks are getting worked out. So thank you to all of you who worked on that. Thank you. 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 over the last week and what we're going to be doing over the next week. It's an opportunity for folks to provide tips and tricks to quick questions that folks might have about what they are doing. And this is also held as a round robin where I will start the same and go down the list. If you have notes in the notes document, I will either call on you or if you're listed as text only or missing meeting, I will read your notes off for you. And with that, I will get started. So last week for me was a short week, only three days. I started the MacroPad library and published the MacroPad guide, which the guide is really what took the most time. This week, I am gonna be finishing up the MacroPad library and then adding anything to the MacroPad guide that's needed, we wanted to get through it to get it published. So there's if new projects crop up, that sort of thing, we can always add them. Think about a possible MacroPad project. I'm not sure what I wanna do with it yet, but have to think about that. And then once all that's settled, probably more template work and then beginning to replace the CirclePython Essentials pages in the older board guides with the templates. Next up, I have some notes from Kmatch, who's missing meeting. About a month ago, some totally new and paid work has come across my desk that is taking me full time to come up to speed and learn to learn and execute. If there's anything CirclePython related, you need my specific attention, feel free to ping me on Discord. And next up is Maker Melissa. Hello, so last week I worked on some stability improvements for the web serial ESP tool for the ESP32. It's working a little bit better, but unfortunately it's refusing to cooperate despite it's matching the official ESP tool byte for byte and what it's sending. So I'm gonna be putting that on hold for the moment. This week I'm gonna be working on the Microsoft Flow Cat Detector Guide that I had started a couple weeks ago. And after that, I'll be playing catch-up with some GitHub issues and possibly resuming the ESP tool if I think of something. And that's it. Excellent, thank you. Next up I have some notes from Somersoft who is text only. So the past few weeks, Adabot added some testing, fixed an oversight from adding tests that broke stuff, did some dependency cleanup and updates and started piloting, includes applying black formatting and adding pre-commit for black pilot runs on pushes and PRs. And this week continue work on Adabot Piland back up to the top and I have some more notes from C Grover who is text only. So between some carpentry projects, I'm still plugging away at converting old in place Arduino projects to circuit Python. Phil Burgess' fake TV project is a favorite and now works on the Metro M4 and NeoPixel Shield as well as a portable Neo Trinkie version. Wrapping up a PyPortal touchscreen version of the thermal camera this week, non-circuit Python, the interfering carpentry projects are the last few punch list items from the home remodel project. Only two left on the list. Embarrassingly, the remodel project was finished 15 years ago. That's how remodeling goes. Next up is Dan. Hi, so I finished the guide for keypads, the keypad module and there's some examples in there that are very simple, but all three ways of doing keypads which work on the macro pad and then make your keyboards and also on SNES controllers and Pi badge and things like that. I'm still working on debugging RP2040 audio. I fixed one problem last week which made it work properly on the feather RP2040 but not on the macro pad which was confusing and now it turns out there's some conflict between the display, maybe probably the DMA and audio and I fixed one of those bugs but there appear to be more so there's still a work to do on that. I prepared a draft of the 700 alpha.4 release notes and I could probably do that any time and I might do that after the meeting if it looks reasonable enough just to get a bunch of changes that need to get them out for now and then you might have an alpha that five soon with a bunch more fixes. Okay. I have a bug for you as well that I haven't yet filed. I keep getting garbage on the display on macro pad and I tried it on two of them and both of them it's the same thing so it's not a hardware issue on one of them. Okay. I haven't worked on display itself only that display messes up audio. Oh fair enough. All right well incoming bug anyway. Yeah, thanks. It might be interesting to each other, yeah. Possibly. All right so next up I have notes from David. This is non-circuit Python tried out beta access for Whippersnapper and Adafruit IO. Project turn on LED of Metro M4 when light level on PyPortal is high. Multi-ticket report on problems, feature ideas, glitches and questions. Future Python code for the Buzz controller now generate a keyboard event with PyInput. Next up is Foamy Guy. All right last week I learned a little bit about the midpoint circle algorithm which it turns out is what is sometimes used to draw circles on two dimensional arrays like pixels. So I had a lot to brush up on geometry for that but I got a really basic version of that working to draw some circles into a bitmap and display it with display IO. Over the weekend I tried out the beta access for Whippersnapper, had a whole lot of fun with that. Definitely super excited to see that come along, get more devices added and more sensors and things like that. Super cool stuff there. And then I was also working on reviewing those PRs for the display IO group changes for this upcoming week. It'll be a little bit of a light week for me. I've got classes going on in the evenings that I'm teaching so I'll have limited time a little bit but I am gonna keep going on those display IO group reviews and also work on trying to expand a little further on that circle algorithm to try to make it so that you can specify only a certain region of the circle that should get drawn. Right now we get just all or none but it would be nice to be able to say like give me 90 degrees of a circle or whatever degrees you want. So that's one of the things I'll be working on and that's it for me. Thank you. Very cool. Thank you. All right, next up I have some notes. That was in the right place here. Sorry, trying to take timestamps and didn't actually click in the right place in the document. So I have notes from Hierophact. He says, last week finished up sleep memory for the STM32. Basic sleep file name transition storage but it's buggy and moving family fourth of July disruption. This week, fixed file name storage across deep sleep, test file name stuff across all ports, make RTC timekeeping on STM32 more consistent and import rebase of exception storage PR double check sizes across small builds. And next up is Jeff. Hi again. So last week I wrapped up telling you that I had been working on for quite a while which was the camera code and guide. And if you didn't hear about that, that's circuit Python support for the Ovi 2640 and 7670 cameras that works on the ESP32S2 and the Pico and the 7670 also works on the Grand Central. Real excited to have that finally in a good spot. And I started on a new calculator project with custom PCB. Actually last week I probably also said I started it on at the previous week but last week I received the circuit boards, soldered them up, 3D printing key caps, working on an enclosure which is what you're gonna have 3D printing in the background and got kind of a start on the firmware. So this week I need to finish the flash size savings PR that I put in a couple of weeks ago. We're waiting on that in order that we can fit some new features in. And I thought the technical part was settled but there are some problems when we build circuit Python with the Clang C compiler, which is used on Mac computers and with an aspect of the C language standard called strict aliasing. So I am working on those things. If that gets wrapped up, which I'm less upbeat that that's gonna actually happen this week, it will be getting back to the calculator project where I need to work on the graphics and presentation of it. And I also need to check on guide feedback which should be pretty quick. I looked and I'm only responsible for one half of 1% of those 2,500 guides. So it was all the rest of you who did it all. Anyway, and the other stuff is I have to get the downstairs, meaning my office and the guest room tidied up because we have overnight guests coming next weekend. Can you believe it? And that's what's up with me. Thanks, Jeff. And that wraps up status updates. It's gonna be a quick one. So next is in the weeds, which is an opportunity for long form discussions, things that don't fit in status updates and so on. I don't have any in the weeds topics at the moment. I guess I will ask, is anybody else who has a macropad running into weird display garbage on CircuitPython? Like basically it'll run just fine and display like simple text for 10 minutes, let's say, or longer or shorter. And then everything gets garbled and like there's a little flicker, but the text just looks like it's jumbled basically. That's why I keep referring to it as garbage because it's not, sometimes Blinka's upside down when it's showing the repel and it does it, it's bizarre. And it's done it on two of them. What else are you doing at the same time? If anything. Well, in this case, checking for the rotary encoder and like the rotary encoder value and maybe like which key is being pressed. But like sometimes like, I guess maybe that's it is the simplest version of it that was doing it. Is that to display the SH-1106? Yes. Okay, I noticed an issue that popped up. I'll drop a link in here so I can find the right tab. This person was not using the macro pad specifically, but they are using that display and they were getting some artifacts on the screen as well. It was showing seemingly unrelated pixels and kind of text intermixed. I will try to get videos or images of it when it does it because describing is obviously only half working. Jerry, in terms of the repel, no, it's not just with the repel. I'm also using basically using the simple display text or simple text display library as well to display lines of code. Is the problem with the display and not like if you connect with the serial program? The problem, I don't, oh, I don't follow your question. I mean, does it only happen on the display if you connect with like a serial program? Oh. Does it? Oh, I haven't tried that. I haven't let it run just on power. It's usually connected to my computer. Well, what I meant to like is if you open up like a serial monitor type program, does it look fine on there? Yes. Okay, so it's just the display. So it might be like an visualization or the driver possibly. I actually am not using the, or well, I guess I take the back. I don't know what board.display uses. Like I don't understand the magic behind board and display. Yeah. But I'm not using the display iOS H1106 library directly. I'm just using the display. Right, right. It's built in. All it does is it has initializations in that library, but we have them built into the circuit Python and the board definition. Okay. Yeah, I will, not quite what, it doesn't quite look like that image that Jeff posted, but I'll try and get some video and post it. I just wanted to know whether it was just me, but it sounds like it's not. Yeah. Okay, right on. If it doesn't have a breakout version of that display, do they, cause I missed out on getting macro pad and I have a feeling I'm not getting one anytime soon. So. Not the exact same version. I think it looks like a SH 1106 G as opposed to the SH 1106. Well, there's also a SH 1107, which is on the 128 by 64 feather wing, for instance, and that has a different problem. Since we had the 1106, but I didn't really want to talk about that. That's fair. Okay. I will post an issue then to somewhere. I'll ask in the channel where best to post it. Probably the circuit Python repo. That's what I figured, but. Yeah. If it happens when you don't use the library that is in the bundle, then post it to the circuit Python. Okay. Right on. I will do that. I will wait until it jumbles and get some images of it. All right. Sounds good. I think with that, it's all we've got for in the weeds. So I will wrap up. This has been the circuit Python weekly for July 6th. Yes. 2021. 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 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 on Monday at the usual time, 2 p.m. Eastern, 11 a.m. Pacific. This meeting is held on the Adafruit Discord which you can join anytime by going to adafru.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 Python Easter's role. We hope to see you all next week. Thanks everyone. Thank you.