Hello, everyone. This is the Circuit Python Weekly for April 12, 2021. This is the time of the week where we get together and talk about all things Circuit Python. I'm Scott, and I'm sponsored by Adafruit to work on Circuit Python. Circuit Python is a version of Python designed to run on tiny computers called microcontrollers. Circuit Python development is primarily sponsored by Adafruit, so if you want to support 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-slash-discord. We hold the meeting in the Circuit Python text channel and the Circuit Python voice channel. This meeting typically happens on Mondays at 2 p.m. Eastern, 11 a.m. Pacific, except when it coincides with the U.S. holiday. If the meeting time is 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 Python EASIS Discord role. There's also a calendar available that we try to keep updated if you'd like to subscribe to that. This meeting is recorded. We record the audio from the voice channel and the 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, let us know. There's a note stock to accompany the meeting and recording. If you wish to participate but can't make it to the meeting, you can leave hug reports, status updates for us in the document. We'll read them off during the meeting for you. The note stock also contains timestamps 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 60 to 90 minutes, so this gives you the opportunity to skip around. A link to the note stock is posted to the Circuit Python channel on the Advert Discord every week prior to the meeting. Check the PIN messages to find the latest note stock there. 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. It takes a couple of minutes to take a couple of minutes and talk about what you've been doing in the last week since the last meeting and what you'll be up to over the next week 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 we've identified ahead of time as too long for status updates. That covers how the meeting will go. With that, I will switch over to the note stock, take a time stamp, and do community news. First up, community news. The Adafruit Learn System project bundle. New in the Adafruit Learn System project bundles. Gone are the days of digging through the Adafruit Circuit Python library bundle to find the libraries you need. You can now easily download the code, libraries, and any images, sound, and so on in one zip file. To use the project bundle, above any embedded code in a guide in the Learn System, you'll find a project zip link. Click the link to download the project bundle zip. Open the project bundle zip to find the example code, all the necessary libraries, and if available, any images, sounds, etc. Simply copy all the files over to your CircuitPy drive and you're ready to go. Check it out in your next guide in the Adafruit Learning System. This feature is still new, so there may be changes to how it works in the near future. For example, we intend to make the link more obvious. If you run into any problems or bugs, or would like to submit feedback, please file an issue on the Adafruit Learning System guide's GitHub repo. Alright. Next up, Haxter Cafe featuring Thea Flowers. CircuitPython needs to fit Thea Flowers is interviewed in this episode of Haxter Cafe. Thea creates brilliant synth modules and accessories, some of which can be programmed using CircuitPython. Check out the full interview on YouTube. Next up is a mesmerizing graphic from Kmatch. It says, you can make smooth graphics animations using Display.io and the Adafruit Display.io layout widget easing functions, linked to Twitter there. Next up is eight rotary encoders with switches wired up to Pico with no extra hardware supported by CircuitPython. And next from Electromaker is building a Raspberry Pi Pico video conference controller running CircuitPython. And last but not least, in our preview of the newsletter, we have the CircuitPython schedule module, which is now in the community bundle that allows the programmer to use a functional syntax to run jobs at custom time intervals. I think this is really neat. For those of folks who want to do concurrent things, I think this is really, really interesting. So check that out. There's a GitHub.io link. Thank you, Fome Guy, for pasting that in the chat. Finally, the CircuitPython Weekly newsletter is a CircuitPython community-run newsletter emailed every Tuesday. The articles above are just a preview of everything. The complete archives are available at www.adafruitdaily.com slash category slash CircuitPython. 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, edit next week's draft on GitHub. Go to the repo, github.com slash adafruit slash CircuitPython-weekly-newsletter. There's a draft folder there, and you can edit the files and the repo and do that. If that's too complicated, which it's kind of complicated so I would understand, you may also tag a tweet with the hashtag CircuitPython on Twitter or email cpnews at adafruit.com and we'll drop those in the newsletter for you. Okay, next up. We have State of CircuitPython Libraries in Blinka, and in early Huggerport here, Neradoc discovered that our numbers for the core were incorrect. We were only fetching the first 30 issues that were changed during the week instead of all of them, so huge Huggerport to Neradoc, and I think you'll know why I'm saying this now. All the numbers are really much more impressive, which is awesome. So early thanks to Neradoc for finding and fixing that issue. Okay, so this is a statistical overview of the health of the project, really meant to ground us in the numbers before we get into the perspective of how things are going. So overall, we had 53 pull requests merged from 31 different authors, some new folks, Cognitive Gears, PDP7 is off and on, Vienna Mike is off and on, MEBS, F Harding One, GbaMan, Kevin Lutzer, Rizal Manda, Bill Zott, UWO, I can't pronounce these, and Felix Erty are all new names there, so thank you to those folks. We had 13 reviewers, so thank you to all of our reviewers. As always, we're always looking for more reviewers because the more reviewers we have, the more authors we can support. So if you want to level up to being a reviewer, let us know, we're happy to help you with that. Issues-wise, we had 30 closed issues by 15 people and 24 opened by 20 people, so we're net down six, which is awesome, and keep up the good work, folks. And with that, I will move to the core. Core-wise, we had 21 pull requests merged. We haven't had numbers like that in a while, and that's an artifact of actually picking everything up, so thank you again to Nerodoc for fixing that. We had 17 different authors, I won't go through the names because a lot of those are repeats from before. And we had six reviewers, so thank you everyone there. We have 21 open pull requests. We do have those oldest ones are aging quite a bit, so if folks want to help out with the core, picking up and adopting an open pull request could be a really great way to do it. So, yep, those are pull requests. We had 17 closed issues by seven people and 10 opened by eight people, so we are net down seven, which is great, for a total of 416 open issues, which is, if you want to see them all, you can go to github.com. We triaged those via the milestone designations. Because we turned the corner and we're now on 7.0, we have fewer milestones. We have zero bug fixes for 6x open, and we have 53 open issues for 7.0. That's a lot, and we should maybe, we may want to prioritize those if we don't want to have to do them all before we release 7.0. And we have two issues not assigned to milestones, so that's kind of a metric for how on top of looking at issues we are. So, that is that. We still don't have download stats in here, but we should look to seeing if we can add it again. Overall, we turned the corner to 7.0, and we're working on some interesting things for it. 6.2 seems to be pretty solid, so we're in a pretty good spot. Yeah, so things are going well, I would say. And that will be my summary. Things are going well. And now let's hand it over to Katni for the library update. Excellent detailed summary. Thank you. All right. I'm putting it in the doc right now too. Things are going well. Perfect. All right. So this applies to all of the Adafruit Circuit Python libraries, which is everything that begins with Adafruit Underscore, CircuitPython Underscore, and it also applies to a couple other things, including the CircuitPython community bundle. We had 29 pull requests merged over the last week from 15 authors, including some of the names you read off earlier. So thank you to our new authors, as well as our repeated contributors. And 11 reviewers. And I want to call out Les Samois, because they are new on the review list. And that's excellent to see that we've got new reviewers coming in. We have 55 open pull requests overall. In terms of issues, we had 10 issues closed by seven people and 13 opened by 12 people, leaving us with 326 open issues. There are six good first issues labeled within those 326. If you're interested in contributing to CircuitPython on the Python side of things, go to circuitpython.org slash contributing. You'll find all of this information, a list of open pull requests, a list of open issues, and some library infrastructure issues, really more internal. You can take a look at any of the open pull requests, see if anything needs commenting or reviewing. That's a good way to get started reviewing, is to just comment on a PR that you took a look at it, or syntax, if you have the hardware, test it, that sort of thing. If you're looking to actually write some code, you can take a look at the issues. If you're new to everything, good first issue is a good place to start. You can search for that, or you could search, if you're looking for something a little more complicated, search for bug or enhancement. If you are going to start working on an issue, please comment on it. If you need help with it, please let us know. There's a guide on contributing to CircuitPython using Git and GitHub. So if you need to know what our workflow is, or if you're new to any of it and you want to get started with it, that guide is good for both of those things. We want you to contribute. So if there's anything we can do to help you get started or feel comfortable, please let us know. In terms of library updates in the last seven days, there was one new library, which was the CircuitPython Schedule Library added to the CircuitPython Community Bundle, and several Adafruit CircuitPython updated libraries, which I will not read off, but the list is in the notes. The information is also available on circuitpython.org slash libraries if you scroll down to the bottom. Overall, I'm excited to see some of the older PRs getting merged. It looks like one is old, yeah, 173 days and 68 days were two that were picked up this week, which is excellent. It's good to continue to pick up things that have languished. Older PRs can be more difficult to pick up because of all the CI changes we've made recently. So if you have an older PR in need of updating, please let us know so we can assist, or consider closing it and putting in a new PR. That's also an entirely viable option if you don't want to try and learn how to rebase, which is a thing, but it can be complicated. And thank you to everyone who contributed this week and to the people who contribute every week. And that's what I got. Awesome, thank you, Katny. And next up, we'll kick it over to Melissa for an update on Blinka. Hello, here. Oh, the thing moved. Okay. Oh, now it's gone. Oh, did somebody delete it? Control-Z, whoever typed in at sign. There you go. Thank you. Now let me find it. That's a first. Yeah. Okay, here it is now. For Blinka, we had our... which is our CircuitPython compatibility layer for Raspberry Pi and other single board computers. We had three pull requests merged by three authors and one reviewer. The authors are PDP7, Mebs, and F Harding1. We have six open pull requests between the different Blinka-type repos. There were three closed issues by three people and one open by one person, leaving a net of 55 open issues. There were 8,230 PiPI downloads in the last week, and we are currently at 72 boards. And that's it. Awesome, thank you, Melissa. Okay, next up, we have Hug Reports. This is the first of two round robin sections. I will start, and then we'll go through the list of folks in the Notes Dock. If you're in the Voice Channel and not in the Notes Dock, remember we just will skip over you. We just go by the Notes Dock now. So if you do want to speak, make sure you have an entry. At least your name in the Notes Dock. Otherwise, we'll skip over you. And if we do, just feel free to ping us in the text chat and we can circle back and get you. If you are unable to make the meeting, you're always welcome to put notes in the Notes Dock and say missing meeting or lurking or text only, and I'll read them off for you. That goes as well if you're in the Voice Channel but don't want to speak. I'm happy to read them off if they're marked that way as well. So I will start, and then TG Techie will be next. Okay, so first off, a hug report to the Mesa devs. This is like the graphics linux stuff. I had an issue with video encoding on my stream a couple weeks ago and I filed an issue and PEP and Mirror Curiate. We're two helpful folks that chimed in. Turns out it already been fixed and I confirmed. I updated Mesa this weekend and running the absolutely latest version is all fixed. So thanks to them. A hug report to Hugo for going over the air messages for consistency. That's super helpful. So I really appreciate that. Thank you to everyone who joined in my stream this past year. It's been a full year of regular deep dives. So thank you to anybody who's hung out and been a part of that. Thanks to Minakri, my partner, for watching a rehearsal of my presentation for the Open Hardware Summit and giving me feedback. Thanks to Naradok again for fixing the core stats issue. And hug report to David Glaude for linking me to Pete Warden on Twitter about a BLE file transfer protocol. Seems like a lot of people are doing very similar things right now. So I'm going to work to get us all on the same page with that. And with that, let's kick it over to TG Techie. Hi everyone. A hug to Fome Guy for their awesome weekend streams. To at Hugo for his contributions and suggestions on those streams. Rarely do I pop in and not see you there, Hugo. General hugs for helps. Hugs for help. Sorry, that wasn't English. To Dan H and Kmatch. And I rushed to add this to the note stock, but a huge hug to Kog Knitted the Gears. The person who implemented the scheduled library, I will be trying that out today. Thank you. And of course, as always, a community hug for being so awesome. Awesome. Thank you, TG Techie. All right, next up is Dan H. Okay. Thanks to 50 or 5D, unless it's Brian Cook, who's continuing to work on fixing the Rp2040 I2C driver. There are a lot of timing related issues, which were glossed over in the original I2C implementation. And they're fixing, they're testing things and reading the spec and doing everything that was really necessary to have been done. Thanks to Maker Melissa for actually, we have a fix, we think, for this ESP32S2 Wi-Fi to C problem. And I figured out what the fix was, but I hadn't yet filed PRs to the ESPIDF repo, which you have to file in multiple places because there are multiple versions. And so, Melissa did that. Thank you very much. That sort of got me going on that. Thank you. All right. Thanks, Dan. All right. Next up, we have David Glaude, who has some notes for me to read that says, Huggraport's J for CNN for giving me a ticket to the Open Hardware Summit. Huggraport's Kevin T for sharing his experiment and UF2 to do I2C peripheral on the QDPI M0. Huggraport's NeroDoc for helping me do me doing the most insignificant PR to the core, 4577, which it brands as Space Matters. Huggraport to KMatch for solving the long-standing screen capture in display IO. And all those involved in the project bundler, the zip thing that contains the lives for learn guide. And next up is FOMIGuy. All right. For this week, first slide goes out to Hugo. Thanks for always being positive and helpful in the Discord chat. I always see him helping out in the help with room and also for popping in during the streams. I've learned so many great tips and tricks that Hugo has dropped on me during the stream. So I appreciate you hanging out and always throwing out ideas. So thank you for that. To you, Scott, for suggesting to use the circuit Python org on GitHub for a spot to hold some new libraries to break apart some of the widgets into their own repos. It's outside of the circuit Python world. I doubt this person is here, but I owe him a huge hug anyway. It's a website called Arcade. And the person on there called SuperTommy has created tons and tons of great tutorials and videos about game development and related stuff. So they're on YouTube. If you're interested in that, check them out. And I owe them a huge thanks this week. And then just a group hug as well. And that's it for me. Awesome. Thank you, filming guy. Next up, we have higher effects. Thanks this week to Dan for discussions and reviews on the power related stuff and June to sock for their continuing work and testing on the NRF 52 port for power. Thanks for me. Thank you. All right. Next up is Hugo. First, it's for whoever was working on the UK translation. They pointed out inconsistency in the error messages, which is kind of what got me going there. Hug to Jeffler and Dan for the feedback and emerge on the error messages. I am glad I was able to contribute that quickly. For me guy for the stream and everyone who joins on the stream there for the things I learned by accident or unintentionally pick up to ten you for the OHS talk and the recap on the deep dive where we got to ask a few questions and really go into details and the book suggestions for BLE and finally group hugs. Awesome. Thanks Hugo. Next up is jet blur. Hello, me. Well, I want to thank Hugo right back for asking the right questions about the translated strings and then making things better. Thanks to Dan for not only testing but fixing some bugs in the rotary IO refactoring to J for a scene for trying to help me troubleshoot a problem with HID lock indicators, which seems to be that I have haunted hardware is what we finally concluded. Nara doc, one more thank you for noticing that adobot problem so that we're getting the right stats now. And finally to ask Patrick W and Ketney for helping me out when Sir Cup wouldn't upload to a Sir Cup Python 7 board. I think that's fixed now but I haven't tried it again for myself. I'm sure I will soon. Awesome. That's what I got. Thanks, Jeff. All right, next up is Jerry. Hello. Thanks to Dan and Jose David for help with the confirming and helping understand or track down an issue with accessing the learn guides from Raspberry Pi. I'll talk about it a little bit more later. And also thanks to maker Melissa for the great library and examples for the fun house. Next up. Awesome. Thanks, Jerry. Next up I have notes from Jose David who says hug report to foamy guy for the streams even when I arrived three hours late. It's always a lot of fun. Hug report to Hugo for putting a good vibe in the chats and hug report to Jeff for helping find the issue on the color picker not passing the docs built in the CI. And next up is Ketney. All right. So I have a hug report for Carter for writing up the CircuitPython resetting page in the essentials guide. Carter was getting a lot of support questions about it and I know that it's something that folks want to know how to do and now we have a guide page for it. To KMatch for taking on writing up a guide on CircuitPython memory and memory usage, et cetera. I'm really looking forward to having that available. Tenera Doc for submitting the fix to Adabot for our library reports to Somersoft for testing that fix to Jeff for taking notes today and to Jeff and Scott for handling the meeting while I'm handling the newsletter. I really appreciate it. It's really made it so that I can actually have enough time to deal with the newsletters on Monday. So I really appreciate it. Thank you. Awesome. Thank you, Ketney. Next up is KMatch. Thanks, Scott. So my first hug goes to Mark Gambler for quick response on exactly the issue I was having with starting or running the Quickie Cutter for creating a new library, which happened to be me using the wrong version of Python. So thanks for that quick answer and the right solution on that. And second big hug is for David Glauda, Indico, and the Purple Samurai for some additional suggestions on Save and Memory and CircuitPython. Thanks. Thanks, KMatch. Next up is Maker Melissa. I wanted to give a hug report to NeeraDoc, Flavio Fernandez, the real Fenrir, Gambler21, Craigsizzi, and UXP. For finding and fixing an issue, I accidentally introduced into the PyPortal and MatrixPortal libraries. Hugged to Dan for helping me out with the ESP Home. And to John Park for testing the FunHouse library and providing feedback and group hug to everyone else. Awesome. Thanks, Melissa. And last but not least, we have a group hug from Mark Gambler. And with that, that's hug reports. Thank you, everyone. Next up is Status Updates. This is done as a round robin in the same way, but this is a chance to talk about what we've been working on in the past week and what we plan on working on in the coming week. That's a great way for us to kind of share tips and tricks and collaborate if folks are working on related things. So I will start and we'll go through the list just like we did. So, scrolling down, scrolling down, okay. I gave my outside-in design talk at the Open Hardware Summit last week. Should be posted as a video on its own this week, hopefully. I started doing basic optimization on the BLE file transfer protocol for sending more bytes at a time. I got about 3K bytes per second, which is not too shabby. I'm waiting on protocol feedback and we'll start bringing it into Circuit By Thumb this week, hopefully. I'm also going to dust off my Xcode and get PyLeap building because I want to be able to do both sides of it. And I also am going to figure out how to post a tip to a PR when a CI fails. So we see this a lot where we get new folks contributing to libraries and they don't have pre-commit installed. So it's really common for us to have to say, oh yeah, you should run pre-commit before you should install it locally, blah, blah, blah. So it looks like GitHub Actions can actually trigger a second action when a workflow completes. So I'm going to take a look at that and having it say, oh, if it fails and we haven't posted already, post of like, hey, check out this guide to make sure that you're running all of the checks locally before pushing. So I'm going to take a look at that this week and that's all on my notes, but I've been doing this random thing this weekend of thinking about getting the Washington State, which is where I live, laws, the code in GitHub and have it structured as if all the lawmakers were working in GitHub to change the laws. It's kind of a weird idea on how to make it more accessible of what the current law is and how bills in the legislature would change it. So it's a very weird idea that I've been kind of poking at this weekend. Okay, with that, let's kick it over to TG Techie. Sounds like a lot of fun stuff. Okay, so last week, it's been several weeks since I've attended, so I'm just going to sum it all up in basically a couple of words. I've continued to work on the watch. I'm working on a smart-ish touchscreen watch that runs like a Python and I kept on getting poked by my two users saying, hey, we'd like a little more RAM. So I froze the core library into the GUI framework. It's being written for it. Intercircuit Python on a separate fork and saved about 15K of RAM, which was a lot more than I was expecting to save. So that was awesome and it's just like a show of how cool circuit pythons optimizations are. And yesterday and this morning, I've been trying to learn more about circuit Python internals. So I've been sitting down and actually reading the slash py folder, which is a whole thing and it's really cool, but it's hard to get a grasp on. And for some non-circuit Python stuff, I've finally started to understand dvqs and how to actually apply them, which is neat, I think. They're kind of beautiful. And I've been playing around just for fun, not seriously with a custom language transpiler from high-level language to C, just to learn about how languages work. And that's been a lot of fun. Next week, I'm going to... And right now, I'm going to see if I'm able to add a time capsule module just as a trial to see if it's useful to circuit Python, to have a string outlive a reload of a supervisor. And... Sorry. I'm going to try to continue reading what's in the slash py folder to understand what's going on. Now, I have a couple in the weeds questions about that if we have time. And yeah. Thank you, everyone. Awesome. Thanks, TG Techie. Yeah, we should have time to do that. Awesome. I got plenty of time. Okay, we'll circle back. And next up is Dan. Okay. We released 620 final last week on Monday, right after the meeting. We started after the meeting. That went smoothly after some hiccups with the RC0, which is good. That went fine. A lot of us have been noticing GitHub changed some things about notifications. And a lot of us who made a commit to any repo which we were mentioned in the commit, we're getting notifications every time somebody who has a fork of that repo does something, like push or something. And it's really annoying.  They took notice after enough of us complained. I added some commentary. As I mentioned, Melissa filed some PRs on the ASP IDF and I added some more details to that about why we were making these PRs. And I started working on dynamic USB descriptors for 7.0. The first thing I'm doing is that we have a lot of Python code that runs on the host computer during the build process. To generate the USB descriptors and I need to kind of clean that up especially for HID descriptors. And I need to add some additional metadata that says like in this descriptor here's the slots where there's an interface number for instance. So you need to be able to increment that or add an offset to it at some point when you're building a descriptor dynamically. So I have to have some additional information. So I've been doing all the random Python coding for the last few hours or a couple of days. Alright. That's it. Thanks, Dan. Alright, next up we have Notestern David Glau who says, participated in the Open Hardware Summit. Thanks to Jay for seeing. Shared with AT Makers Build a historical discord discussions for one or two different computers to try to help with similar requirements. My dual BLE mouse juggler code is at the gist in the notes. And non-circuit Python related made an Ikea hack with our four calyx shelling unit and a two person bed on top. And next up is FOMI guy. Alright. For last week I actually didn't get a whole lot of circuit Python in so what ended up happening is playing around with Tiled Map games in circuit Python kind of reignited my interest in PC and web game development and so I've been diving into a JavaScript engine called Phaser 3 and I spent a bunch of time this week on that relearning some of the stuff how to do it and implementing more generic algorithms and stuff so with the help of one of those arcade videos I was able to learn about breadth first search algorithm which it turns out is the exact thing I was looking for for how to make my characters move and I was able to implement it so that you can kind of click on a tile and the game will find the shortest path to that tile and it will respect walls and stuff and walk around so that was really cool for this week I'm going to try to enhance it a little bit further with what's called the A star algorithm I think and it's supposed to be more efficient but achieves a very similar thing of finding a path between two points back into the circuit python world a little bit more though for this week I'm going to finish up the new pages for the custom font learn guide and then I'm also going to work on implementing some of these same pathfinding algorithms in circuit python now which is nice because I kind of get a chance to work on the same thing again but in a different language so I can kind of make sure I actually really understand the concepts and then also this week I'm going to start working on setting up those new repos for the display I owe widgets so I'll be running cookie cutter a bunch this week I'm sure and that's what I got thanks thanks for the guy next up is higher fact so this past week I got cut short a little bit because I moved back to Boston to work in a new office which should hopefully make me more productive but it did not make me more productive last week but I've been working on the 2040 power implementation going through kind of the testing setup and implementation details of that I merged in the API changes that were generally accepted into the circuit python core into the nrf power PR last week so those are now that those are integrated we can kind of split the work between the STM32 and the nrf ports because they're both on the same base so either of them can go in first now they're not dependent on one another and I've also been looking over some of the reset issues and other things that are currently going on in the nrf port hoping to help Jintasak figure out some fixes for that this week I'm looking forward to putting in some more time on the rp2040 sleep that's not being interrupted by moving stuff I'll be looking at a supervisor runtime report error that Scott pointed out last week just because I've been working on all the deep sleep stuff in that area anyway and I'll be resolving any remaining issues with the nrf and STM32 PRs as they come up so they can get merged and I think there's some CI problems that are still bugging around so that's it for me. Awesome, thanks Hierophact. Next up is Hugo. Last week I picked up working on some string inconsistencies and just trying to make errors and messages from Python more consistent across the different libraries added some glossary definitions and term definitions to web lake to help everyone doing the translation understand what some of the different things are since I saw a few comments and discussions and also got some work done on updating the progress bar samples which is what I plan on doing this week wrapping that up for realsies. I was going to do a larger review of the strings errors and messages in the core that get translated just to make sure we have consistency on style and grammar, all that good stuff and keep looking at issues and PRs for work and help. Talking about the string messages one issue we have open is the brands by default as something besides circuit Python might be a good next step if you're in those weeds. Is it the brands? Branding the build is something like make circuit Python a thing that you have to provide to say when you build brand as circuit Python rather than it being called circuit Python by default. Okay. I can reach out to you later as well. Yeah, there's an issue I can link you to or somebody in the chat can as well. The idea being that in the long run the only circuit Python branded builds should be LCI and everything else should be default something else. I see. So I could make mine you go Python or a phone guy would make something like that. Right. Yeah, if you were doing custom builds of stuff, it's just really like imagine another manufacturer goes in and like forks it and does it and like by default it shouldn't be called circuit Python. So yeah. I will I'll do that. Okay. Yeah, we can follow up on that. Okay. Thanks Hugo. Next up is Jepler. I've got to find that unmute button. Hello. So last week I continued work on the I2S out on the IMX RT and it's taken a bit of time to learn the ins and outs of the DMA but I think the code is almost complete. So so the development board I have has an I2S DAC on it which needs to be programmed before we'll actually put out the data and so what we discussed in the internal meeting is I'll find test points so that I can look at the signals on logic analyzer rather than going through the step of programming the I2S DAC chip although we'll need to do that someday. Two late breaking pieces of news we also realized that this chip would need the I2S M clock which we don't support yet so that's another reason to go around it and then the second late breaking piece of news is I think I just fried my development kit but I've got another identical one here so I'm not sunk or anything. Anyway other stuff found and fixed a problem with the UF2 bootloader installation process on IMX RT there's pull request in to fix kind of the initial installation process if you started with a blank flash chip and I've drafted a learn page guide about using the firmware erase on the IMX RT which is similar to nuke.UF2 the main gotcha is if you interrupt it you end up with your UF2 bootloader erased as well so we'll have to encourage users not to make a mistake like that I found some PRs to let RGP matrix work with the Feather M4 can which it didn't for two reasons one it needs to be explicitly enabled in mpconfigboard.mk and number two there were some ifguards in the protomatter library that needed to be fixed so that they recognized all the different names for this family of chip with Dan's help did some factoring out of incremental encoder so that we can share code between three of the different ports as far as interpreting those quadrature signals helped out with some CI problems that were affecting 80 fruit circuit python display color picker did merges reviewed stuff found some links for the newsletter it's not just aimlessly browsing the internet if it gives you newsletter links and I fixed a bug in the RE module which I may have mentioned in an earlier meeting but I had proposed to fix it but I didn't know how to fix it so I decided to go back to the circuit python first Damian had some good improvements so I was able to take the improved version and bring that back into circuit python and then just for fun I used an automated tool called a fuzzer to look for additional problems in the module but I didn't find any I was specifically looking at the RE.compile and RE.match functions in odd ways and so like specifically it's easy to run into an internal limit in the regular expression library if you have like a bunch of alternatives separated with vertical bar is kind of the easiest way to do it there are also problems if you have long things parenthesized or long things enclosed in brackets but for the kind of regular expressions we usually use it seems to be just fine so anyway this week continuing on I2S out and hopefully wrapping it up this week and trying to keep distractions to a minimum would be good and for fun stuff I designed and 3D printed a bird house style enclosure for a Raspberry Pi project and one of the challenges there was my vision was that the fan would be behind the entrance to the bird house but I couldn't find a drawing of the PoE hat with the location of the fan accurately dimension so horrors I had to measure a dimension instead of just reading it out and typing it into my cat program anyway that's what's up with me thank you thanks Jeff next up is Jerry well again so last week continued head scratching a bit about this issue with the STM PE610 I think it's a foamy guy I think founded on the Feather RP242040 with the Featherwing TFT display it doesn't reinitialize the STM PE610 after a soft reboot it gives an error it doesn't connect properly and it was kind of puzzling it first seemed to be only happening under certain conditions and then it finally stumbled across what I think is a big clue it may help straighten things out that the issue doesn't happen if you release the display before you reboot so I had thought about the fact that it was connected to display I.O. somehow so that may help track down what's going on and so hopefully it makes progress to that and otherwise spent a much time playing with my new fun house really nice you know nice to play with in the the new library and the examples were really fun to try out next week you know trying to get back and trying to actually make some progress and understanding this STM PE610 thing and keep playing with the rest of the toys the pile is getting awfully big and the non-circuit python I came across this issue I've been using my Raspberry Pi for a lot of my where I built circuit python just to avoid the Linux crashes that I was having on my Ubuntu machine so I was going to check something on the learn guide and noticed after I had recently updated that the Raspberry Pi completely froze whenever I go to the Adafruit Learn site and especially to the new guides page and it was getting kind of frustrating I mean you had a power cycle I couldn't even just reboot it to get the console back so I phomy guy and I'm sorry Jose and Dan both had a problem so I knew it wasn't just me put a quick note out to the Raspberry Pi forum and somebody there said that they run into problems with graphically intense things disabling the hardware acceleration in chromium was their suggestion and that works it's not a fix so it's a workaround I don't know why it all started happening with this latest chromium but if anyone runs into it it's easy to get a workaround that doesn't keep crashing in the machine awesome thanks for the heads up Jerry I think one thing for the STMPE is maybe look if the reset line is shared maybe there's some shared state between the display and the chip that that it can that just like sounds kind of weird alright next up is text from Jose David who says last week scales library github.com.j postata 2020 circuit pi slash circuit pythons underscore scales put all my forward widget libraries in independent repos next week work on improvements on the graphics libraries that let's kick it over to catney alright so last week newsletter went out successfully again so I think I've got that I hope still crossing my fingers every time I published the core part of the Neo Trinky guide Lamar added Arduino code I didn't have a Neo Trinky yet so I couldn't do any code for it so the rest of the guide I did up and she made that live so that folks could get to the schematic and that sort of thing if they wanted and I also continued working on templates so this week is once again newsletter then tomorrow first thing is write up or read me to be included with every project bundle the plan is to have it be plain text and it will be included in every bundle and appended at the end will be a URL to the zip that it was downloaded from and the date and it will explain what to do with the project bundle so when you download those files it'll just be a quick thing that you can double click and it says copy all these to your circuit pie drive it will overwrite your lib folder etc and I will be working with Justin on that because I can write up the read me but I don't know how to make it do the dynamically generated info and that's Justin's wheelhouse so this week I already said that part add the circuit python code to the Neo Trinky guide so the two Arduino examples are neopixel colors and animations and using cap touches hid and those are the plans for the circuit python examples as well and then finish the two templates that are going into the Neo Trinky guide the plan is obviously to continue working on templating overall but the initial focus will be the two that are supposed to go into the Neo Trinky guide since that's the latest guide that we're publishing and then when I get to it I need to update the SHT-31D guide for the QT revision that board has been has been revised to have STEM at QT connectors on it and so we need to update the guide for that so other than that templating and that's what I'm doing awesome, thank you Katny next up is Kmatch thanks Scott, so this past week I created an animation library to make graphics easier to move around and make your own animations and have a github link here basically three steps, first you create your graphics then you can basically define different frame windows that you want to have a certain function, you can define what that function is and the inputs to that and then a loop that basically creates each frame or you can even subframe it if you want to have smoother animations but anyway the link is there the other thing I worked on is learning more about C compiling and particularly about make files and how to get basically when you're hacking different libraries together and putting them in one how to find all those files so I've been learning at least minimal to hack something that works on that this coming week I want to create the first draft on the saving memory and circuit python guide which is basically why I created the animation class to create some animations to help highlight that and there's a link there to the github that is basically the comments that are being collected from the group and some of the hugs that I gave out or for those additions to that so the animation actually right now has a bunch of translation or three translation functions in it but also want to add a color morphing function in it so you can change color of things as part of the animation and then lastly the C programming is all related to the tiny logic friend project trying to make easy to use or simple logic analyzers so this week I hope to get the initial protocol talking back and forth on that one and that's it for this week awesome thank you kmatch last but not least we have maker melissa hello last week I added 16 new boards to circuitpython.org between the blinker and circuit python boards I updated circuit python build tools to work with repos with that .git in the url I updated the web serial ESP tool to provide a more meaningful message that it fails to change the baud rate I wrote the funhouse library I tested if ESP home was working any better with the ESP32 s2 it was but wi-fi and isocracy are still an issue I updated the requirements on several of the libraries so that I would work with the whole bundler thing better I started on the funhouse home assistant guide and this week I'm going to finish up the guide and then I'll start work on the funhouse product guide and that's it awesome thank you melissa okay thank you everybody for your status updates next up is in the weeds this is a section where we have kind of Katniss's belated hug report to melissa for adding all of those boards circuit python.org okay so we have two ish topics here this is a chance for us to have any sort of longer form discussion that we need and if you want to add something we got a little bit of time just put your name and what the topic kind of is for the notes and we'll get going so I'll start so I've started using the circuit python github.org or github organization for libraries that multiple folks are writing and maintaining together if you'd like to be a member let me know folks who have been active already are welcome I do want to avoid solo developer libraries on the organization though because they're repos I want us to collectively support so we should work to moving the community bundle there and then any of these graphics things where like kmatch and foamy guy and jose dave are kind of like all working together on all these graphics things I just it just crossed my mind as I asked jose dave to split them apart that like this is actually a great use of the circuit python github organization that we actually already have ownership of so we could add people as members to that and that will allow you to create public repositories under that so you would be able to create like github.com slash circuit python slash circuit python underscore library name or whatever I'm very very excited about this idea because we have had we are having more and more people who are contributing to things that are not Adafruit funded but are really awesome anyway and so I think this is a perfect chance for us to start to build kind of the circuit python community at large like more than just what Adafruit is so a lot of you in this meeting are parts of that and so I want to say like if you if you are collaborating on libraries and want them to be a part of this larger circuit python community stuff supported stuff I think that the circuit python org is the place to do that any thoughts sounds great to a non-community bundle user yet what do you mean I haven't really used much of the community bundle just a little bit but it sounds like a great idea to centralize it and say these this is the community bundle that we recognize is just a bunch of links right right now we have a community right now we have a community bundle but it's under Adafruit so I think that's one thing that we can move over is like it's like we maintain that bundle but the stuff in the bundles not maintained by Adafruit so to speak Jose David asks how is it going to work can you explain the mechanics so what will happen is that if you want to create repositories under this you'll need to be a member of the organization and I am an owner of it so I can add you to that so if you if you're not a member then let me know but you should if you are you should be able to just go to com slash circuit python and just click the create new repository button if you want to make a new repository or if you have an existing library that you'd like to move over I would say we should ask like Jeff says I'm happy to transfer Jepler micro decimal over and I think this is a line I do want to draw because it's all about it's all about who is supporting something and if it's on your individual account that means it kind of like you're the only person supporting it and there's nothing wrong with that but I wanted to create a GitHub collaboration space where we can have multiple people working together on a particular repo and so I think that github.com slash circuit python is like a perfect place in the long run I would like circuit python core to live here as well but I never imagined moving like the 80 fruit funded and supported like sensor drivers or device drivers over to there I kind of picture this model of like I picture this model of that like for the stuff that's sponsored by a company like they will be the organization that's sponsoring that work so the circuit python organization is a place for all of the not sponsored by any particular company but like us collectively as a community are supporting something so yeah foamy guy asks is there a preference on naming prefixes for libraries under this circuit python underscore something or something else as a prefix yeah I think you could just do one circuit python underscore to make it clear but I'm open to anything I generally like I'm very excited about this idea because I do want to make I want to make the circuit python project larger than just 80 fruit so we come as a group and we decide what we support and if not we leave it in our own repos yeah that's what I'm thinking and kind of what I was thinking as well as like github organizations can have teams and so I kind of think it doesn't have to be something we discuss here as the whole group but we could have like like I made a graphics team because that's the that's the thing that makes the most sense to me is we're like key match foamy guy and Jose David or and anybody else I'm forgetting like if we have a team a team could sponsor a repo to move it in and that's enough right like it doesn't have to come to all of us it just has to be like there has to be a particular like team of people that are willing to support something and and I think I think cookie cutter and cookie cutter and the circuit python build tools maybe things that we want to move over as well that maybe we want to in the long run do you have any thoughts on the mechanics of actually getting repos created like should we create a blank repo enter that org and then fork it from there and fill it in under our own and then make a PR back to it for the initial code or should we just push the initial code in when it gets created or usually usually what I'll do is I will I'll create the repo through the website and then cookie cutter it locally and then push whatever I cookie cutter even if it doesn't pass CI and then once it has that root commit then I'll fork it to my own and I'll do a PR that's like fix everything so that will fix like you know how like we have all these to dos that cause things to fail right like going through and like replacing the to dos and like basically doing the first PR is the PR that like adds a initial code or fixes up the initial code like yeah I'm not super particular about like what that how a repo gets going okay cool but yeah I hope this makes sense to folks and that it I'm quite excited I mean to me it feels like a really big turning point in the same way that like having more and more people contributing to the community bundle was like really like awesome to see so yeah generally we should consider the circuit Python organization to be our our own thing and you know we won't step in the way though one thing I think he did mention was essentially deciding what goes in that bundle so how do we reconcile between what goes in that bundle and people creating repositories not necessarily ad hoc but for something that maybe shouldn't so I think I think the community bundle can include the circuit Python organization stuff and the individual user stuff unless unless we you know maybe we actually do want us a third bundle that's just like like the officially supported circuit Python community ones like or the circuit by the organization one's perhaps as well you just mentioned three different groups could you clarify them so I think a lot of what circuit Python has been is like Adafruit supported stuff right like and that's everything under the Adafruit GitHub organization but I think what we're starting to see is that more people that are working on stuff that is not funded by Adafruit that is kind of collaborative in the way that like it's a number of circuit Python community folks are working on it and so I think that's a place where we can we can have this like circuit Python organization work and then the community the community bundle as it is today kind of like is a smattering of different organizations and individuals who are have created libraries which are kind of unsupported unsupported by Adafruit which is why we created that bundle but then also like maybe we do want it to be clear that like each of those libraries is individually supported as well rather than like collectively supported by the like circuit Python organization sounds reasonable I think the it sounds like it's trying to to my ears how interpreted that was partition different levels of support and who's supporting them right now I think I want to I want to try to make it clear that it's not really level of support it's like who's supporting it okay like I don't want to say like I don't want to say that like things that aren't supported by Adafruit are not supported as well like that's not what I'm trying to get at I just I want to make it clear like two people whether whether Adafruit supports something or not or who supports it okay so yeah so it would be for circuit Python supported that's not Adafruit supported and then between that the communities for single source supported and then the other repos are for multi-person community supported right in terms of people right so like if we yeah this is kind of the line in drawing of like we have kind of this graphics team that's come up with like these folks who are collaborating and like this is a place that like those folks can collaborate and market as such like or they can make their own like circuit Python graphics organization and put it under there to do it but I think I think the circuit Python organization more broadly is a good place to do it Jose David asks is Adabot going to build these ad bundles and then and the lists but yeah I would like to do that I would like to you know I had this idea of like there's really multiple bundles and the partition like what's included in those bundles are are signify who support who supports them like I was imagining originally a world of like I could actually convince Sparkfund to do this stuff too right so like in the same way that like Sparkfund creates a lot of Arduino libraries like you would have an Adafruit bundle of Adafruit supported libraries and you would have a Sparkfund bundle of Sparkfund supported libraries and so right now we've only had like the Adafruit one and the community one but I think there's also like this will create a third option which is like circuit Python organization supported stuff and then potentially like we could add other companies that way as well and so it's worth mentioning I don't think we talked about it yet that software like the bundle fly and circuit may at some point need to learn about these right other other bundles or some way of learning about more stuff than they know now because already the community bundle as it is isn't installed by circuit and I don't think it is by bundle fly either right it doesn't know about it mm-hmm yeah I think I would like to see that the like the mechanics of the bundles like the ad about stuff is all kind of like it's all centrally located so that all of the code that's managing a bundle is shared across all the bundles it knows about the bundles and it actually puts it into an external bundle dependency field so that we can eventually add it but it just hasn't had the code implemented yet so the data is there in other words nice so yeah I think I think it's just a matter of getting stuff in there and we'll refine it as we do it's got one specific question and maybe it relates to forking so currently there's the touch deck project which uses the icon widgets that filming guy developed which relies on a widget and a control class which is kind of the building blocks to try and keep some uniformity and the different widgets and their response right I think one thing we want to avoid is having a bunch of subclass types right everybody has a different function that you know the thing they call it how do you see is dealing with like hey there's some of these base classes that are currently in 80 fruit projects and then now there's maybe a fork over in the circuit python group of the same things with some extensions or how do you suggest we work through those things I think you know I don't I wouldn't really like to see like I would like to see libraries live in one place so I think in that case where it's like where it's like like there are going to be some things that are kind of like pre pre circuit python organization that like maybe just makes sense to transfer ownership to so it is possible to say like I want to move this repo from like 80 fruit to circuit python or or such and such it is possible to move between organizations so I think that's one way we could do it there is a like I do have to kind of just check with more to make sure that like she's okay with stuff but I think generally you like generally if it's like a whole lot of work is unpaid not paid by 80 fruit to a particular library I think it's it's okay to it's okay to move it over but you know for 80 fruit it is also a question of like you know who's committing this supporting it long term so you know if it's a sensor library and there's a fix that somebody who's not paid by 80 fruit makes like that's great and we really appreciate it but that like that would not be enough to move it outside of like the 80 fruit realm because we're 80 fruits going to be the people that are still going to like maintain like look at all the issues and do all that stuff so I think I mean like to head off a bunch of forks you know parallel developments if we can where it makes sense so right it's just really about managing what the expectations are for that given fork right so I think I think it really is just a question of like who do we expect to support it so I could imagine there would be a world of like 80 fruit paid for the original development of something but no no longer is interested in supporting it and that would be a reason to move it somewhere like we did that with ampie I think like I think ampie we like somebody volunteered to support it so we were you know we're willing to transfer it in that case with that for circuit python libraries also entail a name change from like 80 fruit chip number blah to circuit python chip number blah I think I don't think I don't think for the chip numbers would that's going to ever happen like if there's a if there's an 80 fruit product that has a chip on it that we have library for like that's going to stay under 80 fruit I think that in the few cases that maybe we do move stuff over then maybe yeah like this this is why the community bundle is not here already is because the community bundle like there might be some places that refer to it as 80 fruit slash circuit python community bundle where we should make it also support circuit python slash circuit python community bundle so there's there is some work to do there but I think that that is work that's worth doing for the long run but yeah I hope folks are excited about this I'm excited about it too it's like we've had this org for a while and it's always not it's never been real super clear to me on how we like start to push this like larger than 80 fruit sorts of stuff and I think this the work that the graphics folks have been doing in particular is really compelling as a like I hope I hope that you want to be a part of this like larger circuit python community and and this GitHub organization is where we can kind of show that part of the community in terms of libraries and stuff so I'm very excited about it yeah Hugo says I'm excited and sounds really good I think we're all talking through potential gotchas or questions that might rear their heads later yeah totally and we're gonna find gotchas and questions and that's totally cool like we'll work through those and that won't be a problem it's early days and Scott just on that point so where's the forum to sort of discuss those things is this in the weeds here or on that GitHub where's the right place to kind of go over those things I think this meeting is good for it I think this circuit python channel is fine you know there was some questions as well of like I guess I was talking to the core electronics person in Australia and it's like so are you going to have a separate support forum for for circuit python for example it's like well no like I don't want to staff another I don't want to have to look at another forum but you know when the time comes perhaps like and so I think you know it's not out of the question that we in the long long future we grow big enough that we need our separate discord and separate forum but for now I think it's okay that there's overlap between like the Adafruit circuit python world and circuit python larger so yeah circuit python sounds good it's still fine like we can talk about that as it comes up but yeah circuit python text chat is totally cool to talk about all this stuff you know I checked with phil and the more about this when I first had the idea of like oh is it okay if we start doing this stuff and it's something I've told them for long a long long time that like my goal is to build circuit python bigger than just Adafruit so I think that I think this is a really good first step to do to doing that and that's all because of you all awesome people right like it's because we're we're building something that is is becoming bigger than Adafruit so yeah so there's like discussion in the chat about a circuit python library's text chat and higher effect says that maybe we should rename the circuit python channel of circuit python dash dev as well which we could totally do any any disagreements with that it would just serve to differentiate it from circuit python help so it's you know right adjacent right I think it's a great idea I agree like twice a week I have to redirect you all right well this is all really good and you know don't be afraid to bring stuff up like this in different it doesn't matter where the form is if we need to figure out new forms for things stuff like that that's totally cool okay and when when renaming the channel maybe add selling to that text at the top that just says visit circuit python dot org to say a sentence more about what it is because there's that space up there like in hope with circuit python it says learn hardware programming with circuit python and gives a link so we can explain a little more about what the channel is at the same time as we rename it or as you admins rename it I was just about to do it but then realize I should probably not do it while I yeah I'll do that right after this if anything gets added to the title or purpose of circuit python dev I would probably say let's get a link to help with circuit python because I feel like people just breeze right past that and miss that other channel for them mm-hmm yeah I'm open to suggestions just put them in the chat and I'll deal with it after we're done here but I do want to get to you this last question from tg techie so do you want to go ahead and ask that sure someone just posted a preemptive answer I've yet to read through that right thank you I think it was Jeff mm-hmm so I'll skip that come back I was reading through when I was having trouble parsing so I just wanted to sanity check excluding when ints are packed into pointers mp object t is generally just a pointer size right mm-hmm it's not just ints that get packed in it can also be like key string numbers and floats and stuff but it's the physical size of a pointer right and mp object t is yeah yes it is okay because there are places where it's uses if it's just some other other type and if you look at the macros or something they're casting it but it there's some kind of thing on 64 bit systems is declared as an int is that what you made mm-hmm those don't impact us it's a micro python hold over I forget the rules for sizing but understood that that question answered at least to me I think it can be so there's like what is possible and there's what is it on all of our boards and on all of our boards float and int and pointer are the same size and mp object t is that same size but you can also create configurations where mp object t's size is the size of double and that could be bigger than the platform pointer or the same as the platform pointer and then Scott is right that different types of values are packed into those as literal values cuesters ints floats and on some platforms where you use the type as being double I think it will actually squeeze any six character ascii constants into it or something weird like that so you know whatever they can figure out to do but the ones we care about you're exactly right it's the same size as an integer or a pointer okay thank you that that's and I there's a good there's a good discussion of it in the pie folder it's like object represent or repp or type or something and there's like a b c or d and it we use one consistently across everything but they do a good job of saying like here's all the bits in 32 bits and if it's cuestring this bit is this and or that that sort of thing is all in there I forget exactly which file it is but it's in there and I could find it if you can't find it so it's got a good explanation at the packing I'll give it a grep or a look and if again I can map in you so as for for the cons I think maybe my just doesn't fully answer what you're asking about it's showing why is const useful but I don't know why they're called dynamic I assume that it was to support only integers but I don't know I mean it would be nice if it supported other types but it's what it does mainly what it does is that it short circuits up so there are two things that can do speed things up but because if you said underscore foo is three then it'll just use three all the time and so it doesn't have to look up self dot underscore foo whatever or the global by that name and then if you do that the other thing is that if the name is global and it starts with an underscore then it has this complete other feature where it throws away the string the name so it doesn't take up space in the in the loaded file yeah I think that's probably really the best thing about them is getting rid of the string storage because strings take up so much space right the names take up a lot of space if you looked at like the hid library as actually like it's half names of things or something like that like names of key codes and things like that so it's really amazing how much space they take up yeah in my just it's a hundred and fifty byte file but it's 250 bytes mpy file if you don't use const so it can be a huge ratio if it's really heavy on identifiers okay I asked the question because I was again this is not a feature quest just because I'm curious about how it works I was curious if there was a way to short circuit lookups for not numbers for like bulls or something um because if I remember correctly um the what I read the constant folding will not fold an int in an if conditional from what I read meaning you can't like this is a very corny use case but you can't like toggle on or off debug by using a const int where it'll like not compile the code for you so you're still doing a branch which is admittedly a very small use case probably not particularly concerning but I've had interest in that right I think you're kind of getting towards like dead code elimination right where you want to evaluate that if statement mpy time or whatever and just remove all the code within it um like um this is something else but like short circuit function lookup or class lookup um as in looking in the global namespace for function or class um again these are not future requests just peeking into and hoping to eventually add that when I have the capability and time thank you so much for the pointers pun half intended um um I think that wraps up my questions um if you look I would suggest that also there's been there were some discussion historical discussion that caught in the micro pipe issue in a micro pipe on issues so if you search the issues in a pull request you might get some enlightenment like why it is the way it is um maybe they explain like why they did this or not that or something um that might be worth looking at and I would just say in terms of like dead code I think there's a long term maybe there's even a pep to do macros in python which would be very interesting that's an extremely long term kind of thing but um for more compile time um evaluation of things python uh slowly is feeling more rusty and ziggy the longer it lives but yeah I think python has grown into adding stuff that help makes maintenance easier so like the typing stuff is for that for sure do you want to talk about your not question in the notes you want to just have a discussion around that oh sure um so uh yeah give me a moment to figure out how to phrase this okay um often when introduced to the project this isn't a criticism this is just what I've heard is uh the internals of circuit python are described as written in C um and from chatting with all of you amazingly talented people it sounds more and more like it's the internals that are almost a domain specific language for defining circuit python there's so much from again neophyte understanding um uh source processing and um patching and stuff behind it that it it really is a or at least it seems like um like C plus something a little more else um and I don't think this exists but a place with a centralized documentation um explaining what those are would be interesting uh and as I learn I I'll be making those notes for me so I can keep it in my brain um but if anyone knows of that that'd be cool because it feels like you're talking about like them mp macros and stuff the mp macros the um q-strings are inserted as source manipulation right the const q-strings the exception system is also kind of will throw people who aren't familiar with it I mean I think it depends on where you are in the source because if you're down in the common hell layer where I'm working it's like it's pretty normal for the most part except for a couple of you know exceptions and stuff but then when you're up in shared bindings that's a lot more kind of micropython stuff so I don't know I'm in favor of having a little extra docs on that because even I get confused sometimes um it'd be nice to have some kind of a shorthand ref um great to hear I'm not alone in that uh and as another example the syntax definition for circuit python um like if you look at how the grammar is implemented I don't understand it just looked um and and then coffee you're at your head at me because I've never looked at it right like it Damian George I'm going to pronounce it quickly seems like he has just a mastery of the c macros system um anyway yep I'm going to write that up as I go through it I'm probably going to flounder a lot I would also suggest if anyone has tips and pointers like look to see if micropython has docs on this stuff right like what you're talking about is all stuff we share with micropython um so I you know take a look there as well I don't know if they have it or not but um and we should definitely document it uh regardless uh but um a lot a lot a lot of that is inherited and like I've only I've only personally touched it when it's like kind of come up um if I remember someone implemented async io or the python fundamentals for it right um who did that if you may ask warrior of wire dusted it off and and did that okay yeah see you should be able to find like a pr or two for it from them um yeah yeah a lot of this is just micropython stuff so you'll be you'll be ahead of me at least pretty pretty soon in terms of understanding fingers crossed but I think I think it's important to say that like I think this is actually very common in sea land where like silly sea and c++ can let you do so much that like you get you end up having like different flavors of use for them um like different styles on top of it so um I don't think it's that unheard of to me um it's just it's just one weird way of using it all hmm I've heard of like cute the project cutie has like it's faux compilers but anyway yeah yep yeah you're you're you're way in the deep so good job I just say yeah regarding your like original question like describing the internals of circuit python and sea just to yeah back up like what Scott said like a lot of the stuff that's the weirdest is is micropython and where circuit python is concerned it tends to be a little bit more traditional so that's I would put that out there okay but I think that's also an artifact of the fact that it's in circuit python and quotes like we don't do any of this hard stuff of like actually being a VM that's what I mean is like is like the weird stuff tends to be like we don't actually in terms of development on like core features we don't tend to use a lot of it because we're not doing the VM crazy VM stuff that Damian was so a lot of it is like less relevant to us I think I mean Scott correct me if I'm wrong but like we don't use a lot of that stuff as much because we don't need it because we're not doing the same things that micropython was when it was originally putting this stuff together and it also just works like the micropython folks did a really good job right like we don't have to mess with it you know so so there's some limitations to like how useful diving into it is because like it's done like a lot of it doesn't really need to be touched or even described in much detail because it's I think it's always good to describe it if you want to go there but yeah it's not a prerequisite for diving into the core by any means right yeah like don't see it as like an obstacle to you personally being able to understand what goes on on the core because it hasn't been for most of the people who work on the core okay um noted that definitely helps segment like what is help segment diving in it's still very interesting to learn about especially because from my understanding it's one of the more like tailored Python implementations yeah it is very cool so that's its own reason to go you might raise much better thank you you might like looking at like following upstream micro Python developments as well you might because it can be more tractable to see them in incremental pieces okay um so yeah definitely check that out as well got it all right uh thank you everyone for listening to my oh it's good I thought crisis um it shouldn't be a crisis you're fine we got you I'm exaggerating okay that's all for me thanks thank you all right let me just scroll down this has been the circuit Python weekly meeting for April 12th 2021 thank you everyone who participated uh if you want to support Adafruit and circuit Python those of us that work on circuit Python uh paid by Adafruit consider purchasing for the Adafruit shop at adafruit.com the video this meeting will be released on youtube at youtube.com slash Adafruit and the podcast will be available on major podcast services it will also be featured in the python for micro controllers newsletter visit adafruit daily.com to subscribe then the next meeting will be held let me double check on Monday the 19th at 11 a.m. pacific 2 p.m. eastern here on the Adafruit discord server uh if you want to join the discord server beforehand we'd love to have you you can do so by going to the the URL adafru.it slash discord uh to be notified about the meeting and any changes to the time or day you can ask to be added to the at circuit Pythonistas role on discord and uh with that we hope to see you all next week johnny's asking uh i am streaming on friday as well and with that have a great week everyone we'll see you on the streams and on the discords thanks everyone