 Hello and welcome. This is the Circuit Python weekly for February 13th, 2023. This is the time of the week where we get together to talk about all things Circuit Python. My name is Scott, and I'm sponsored by Adafruit to work on Circuit Python. If you don't know, Circuit Python is a version of Python designed to run on tiny computers called microcontrollers. Circuit Python development is primarily sponsored by Adafruit. If you want to support Adafruit and Circuit Python, consider purchasing hardware from Adafruit.com. This meeting is hosted on the Adafruit Discord server. You can join anytime by going to adafru.it-slash-discord. We hold the meeting in the Circuit Python Dev Text Channel and the Circuit Python Voice Channel. This meeting typically happens on Mondays at 2 p.m. Eastern, 11 a.m. Pacific, except when it coincides with the U.S. holiday like it does next week. In the notes talk, there's a link to a calendar. You can view online or add to your favorite calendar app. We also send notifications about upcoming meetings via Discord. If you'd like to receive these notifications, ask us to add you to the Ad Circuit Python. This is Discord role. And as I just mentioned, heads up next week is on Tuesday due to the President's Day holiday here in the U.S. next Monday. And I added a note to say that at the end of the meeting as well. There is a notes talk to accompany the meeting and recording. The notes document 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. This meeting tends to run 45 to 60 minutes, so this gives you the option to skip around. After each meeting, we put a link for the next week's, next meeting's notes document to the Circuit Python Dev Channel on the Adafruit Discord. Check the pin messages to find the latest notes talk so that you can add your notes for the following meeting. If you wish to participate but cannot attend, you can leave hug reports and status updates in the document for us to read during the meeting. This meeting is held in five parts. The first 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 is the state of Circuit Python libraries in Blinka. This is a statistical overview of the entire project, and 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 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 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. Lastly, the fifth 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. That's too long for status updates, and that's how the meeting will go. With that, I will start reading with the community news. Community news is a preview of the Python for microcontrollers newsletter, and we have a few topics. First, the Raspberry Pi Pico software development kit version 1.5.0 was released. It's the official C++ software developer kit, and while there have been many, many fixes and enhancements, the standout is Bluetooth support and specifically BLE support, not classic Bluetooth as far as I know, for the Raspberry Pi Pico W. Per Tom's hardware, with Bluetooth support, the Pico W can be used to create a wireless mouse, wireless keyboard, or other peripheral. Bluetooth audio does not appear to be supported. So you can just imagine creating your own DIY mouse juggler by operating over USB, operating over Bluetooth instead of USB. The Circuit Python development team states this will allow Circuit Python to add support for the Pico W Bluetooth, but no estimate when this may happen. At the moment, MicroPython does not support Bluetooth for the Pico W, but it was also likely in the future and likely before we do as well in Circuit Python. Next up, Tulip is a complete computer running MicroPython. The Tulip Creative Computer, a.k.a. Tulip CC, is a self-contained portable creative computer with a display and a keyboard and sound. It boots instantaneously into MicroPython prompt. Tulip is not a shell on top of another operating system. The entire system is dedicated to code, the display, and sound running in real-time on specialized hardware. You can build your own Tulip CC for about $25 plus the cost of a display, about $50, and USB keyboard. The hardware for running revision 4 of Tulip CC is based on the ESP32 S3 dual-core microcontroller running at 240 MHz. The single inexpensive chip can support all of Tulip's functionality at low power use. It can last on any USB battery pack or LiPo battery for many hours. The display we use is a 10.1, 1024 x 600 RGB dot-clock color LCD with capacitive touch support. Tulip Sound System is a full-featured 32-voice synthesizer with a stereo line-out slash headphone jack, and you can use speakers or other connectors instead. Next up more in hardware land is KeyCAD 7.0 was released. The KeyCAD project is proud to announce the release of version 7.0. It's a significant upgrade from KeyCAD 6 and comes with a number of exciting new features as well as improvements to existing features. There's more on the Adafruit blog and also on the KeyCAD blog. And then also in KeyCAD news the KeyCAD to Unicode renderer takes KeyCAD source files and translates them to Unicode text drawings. Interesting. Next up embedded FM interviews Adafruit's Liz Clark, also known as BlitzCity DIY. In the latest episode, number 442, Alicia and Christopher White interview Liz Clark, who is on the CircuitPython team at Adafruit and I do like musical robots. I guess that's the title. Liz speaks on many music and tutorials with the link there to both the podcast and the transcript. And then last up for community news. MicroPython talks from Fostum have been posted. Two talks relating to MicroPython have been posted to the web. Verder von Ugin, maybe, presented an introduction to MicroPython. I'm sorry, I'm sure I missed that name up. And then Matt Booth presented real-time 3D graphics on a MicroPython ESP32 by hacking the EMF camp conference badge. So check those out. They're linked in the chat. Thank you to FomiGuy for putting them there. Finally, this has just been a preview of the CircuitPython Weekly newsletter. It's a community-run newsletter emailed every Tuesday morning. The complete archives are at adafruitdaily.com. 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, please edit next week's draft on github. github.com.adafruit.circuitpython-weekly-newsletter and submit a poll request with changes. You may also tag a tweet with hashtag CircuitPython on Twitter or email cpnews at adafruit.com. And Ann points that in the chat. You can also subscribe to the newsletter at adafruitdaily.com. All right, moving right along. The state of CircuitPython libraries in Blinka. This is a statistical overview of the health of the kind of the sub-projects of CircuitPython world, if you will. First up, some overall stats. Overall, in the last week-ish, we had 20 poll requests merged from 11 different authors. So thank you to our authors. Some new names that I don't recognize are TLU, W Grunewald, and then the other folks look a bit familiar to me. So thank you to all of our authors. And we had eight reviewers for those 20 poll requests. So thank you to all of our reviewers. Issues-wise, overall, we had 14 closed issues by nine people and 18 opened by 16 people. So that's up a little bit, but nothing too concerning. And that's the overview. I'll roll right into the core stats. Oh, there's the room button. For the core, we had five poll requests merged from three different authors. Gene Niverov is one of the newer authors. So thank you to them. Neradok as well. We had three reviewers, Microdiv myself and Dan. We had 30 to open poll requests. A number of them are new and a number of them are graphs as well. It's a bit high. I generally like to keep it under a page of poll requests, but I think we'll get there. We had six closed issues by five people and nine opened by nine people. So we are net up a few. I think generally this is due to 8.0 being released and more people trying it, which has been awesome. We have a total of 616 issues. The most urgent milestone we have, we kind of prioritize Adafruit fund and work via these milestones. We have two open issues on 8.0x, which is going to be a release. And I think Dan will mention that pretty soon. We have eight issues for 8.1, which is like the next feature release. And then a number of things, 57 open issues for 8xx, which are like other bugs that we'd like to fix, but not particularly urgent within the 8.0 time frame. And we have three issues not assigned to milestones. So those will need to be triaged if they haven't been already. So those are, that's info for the core. Next up, I'll take a timecode and read for the libraries. Catnip is unable to make it. So for the libraries, the libraries overall, this is pretty much anything with Adafruit underscores, Circuit Python underscorer in the name, along with the bundles. I had 13 pull requests merged from eight different authors. So thank you to all of our authors. We had five reviewers. So thank you to reviewers as well. There were a number of merged pull requests, and there are 44 open. The oldest is at 867 days old, quite a lot. But there's a lot going on. Issues-wise for the libraries, seven closed issues by five people and six open by six people. So net down one, which is awesome for a total of 596 open issues, which is pretty amazing given like it's 300 plus libraries, which we'll talk about in just a moment. 76 of those issues are good first issues. So if you want to get started contributing by editing stuff, that's a great way. Library, PyPI, weekly download stats, a total of 129,793 PyPI downloads over 306 libraries. The top three that I'll read off are bus device requests and register, which are not surprising given that a lot of things use them. Bus device in particular has 18,000 and requests about that as well. Library updates in the last seven days, we had a new library for the U-Box plot from J-Posada 2020, and the Motor, Blueford Connect, and HGTP server libraries were updated as well. And that is it for the libraries. I will kick it over to Melissa for an update on Blinka. Melissa's around. I see you unmuted, but I do not hear you. Anybody else hear Melissa? I'll read it off. Just a moment, Melissa says. Okay, I think I will just read it off here. Thank you. Melissa says, go ahead and read it. Okay, so for Blinka stats, there were two pull requests merged from two different authors, and also two reviewers. There are five open pull requests, and this is across Blinka, Blinka BLEIO, Blinka, or Platform Detect, and Purio, so not just in the Blinka repository, kind of the Blinka universe. So if you don't know, Blinka is the compatibility layer that presents the Circuit Python API on single board computers so that all of the libraries in Circuit Python can be used on single board computers within Linux. There was one closed issues by one person and three opened by two people for a total of 91 open issues on the Blinka repo. Blinka had 25,297 PI downloads in the last week, along with 8,479 PI wheels. The number of supported boards is now 101. And that's it for the state of Circuit Python libraries in Blinka. Next up, we have hug reports. Hug reports is a chance for us to say thank you to folks within the community. And generally reinforce and thank, reinforce what we value as a community, but also just give people the credit where credit is due. So first up, I will start, and then this is around Robin, so we'll go down the list here. So you start to hear some other voices, which will be fun. Okay, for myself. Hug reports to Lady Aida Carter, retired wizard Neridoc and Jay Pasada 2020 for testing PI Sigrock. Hug reports to Dan H for the 8.0 release and managing 8.x. It's neat to see new faces trying 8.0. The key CAD team for 7.0, I'm excited to try it. I'm always amazed at how much better key CAD is the next time I use it. And a hug report to Neridoc for the iSquad C display pin in use fix. Next up, we have notes from Sea Grover, who says a hug report to Jose David, AKA Jay Pasada 2020. For submitting a superb example for the color fader helper in the community bundle. Hug report to Mark, AKA Gambler, for the work on animated gifts and the potential for display I.O. performance improvements. Hug report to Fomy Guy and John Park for being willing and enthusiastic to stream live. Always something new to discover and apply. To OK Iran for suggesting a rudeness eliminator circuit design for pesky TRS MIDI inputs. No more wondering if that input cable is wired for type A or type B polarity. Hug report to Tectric for the help with the CI for my 19 community bundle repos. They submitted an individual pull request for each repo to update and improve the CI certainly above and beyond. Lastly, a hug report to Dan H and the team plus community for the 8.0 release. Thank you Sea Grover. Next up is Dan. Okay, thanks. Okay, thanks to Genevra for continuing a sneak I.O. discussions and work. There's a PR, a draft PR that has a lot of interesting stuff in it. And Genevra have also made at least one PR fix, I think two actually to the core. Thank you very much. Thanks to Neridoc for two very helpful core fixes. Thanks to Jeff also for two quick fixes to the core. And thanks to you, Scott, for the pie sig rock work, I think we've frogged some stalled work elsewhere. Thank you very much. And it's interesting to a lot of people. Okay. Thanks, Dan. Next up, I have from notes from David Glowden. This time code. Time code, time code. It says group hug to everyone behind the 8.0 release. Yeah, that's from David. And next up we have DJ Devon three. Thank you. I have a hug for Silly World and for you, Scott Tanute for sending me down a rabbit hole last week about the diode matrix and multiplexers for PCB design. So thank you both for your helpful advice and last week's meeting. You a hug to Mark Gambler and FOMI guy for teaming up to work on animated gift support. It's been a real treat to watch the progress unfold on FOMI guy stream. And the conversations that those two have back and forth is really cool to watch. Most of that's over my head, but it's really cool to watch. A hug to Liz Clark for the awesome octoprint guide. The way that no showed it working on 3D hangouts was extremely impressive and I can't wait to dive into octoprint and MQTT stuff using her guide. A hug to Todd Bot for a nice conversation this week. Your guidance is very appreciated and I have a better sense of direction with my future PCB designs. And that also ties into the diode matrix stuff. And a hug to the circuit python developers for an 8.0 release and Scott for hosting the meeting. Thank you, DJ Devon three. Next up is FOMI guy. All right, let's see. In our report this week, thank you to Tectric for continually making improvements to the CI and surrounding infrastructure as well as helping out folks in the community to reap the benefits from those improvements in their own libraries. Thank you to Mark Gambler for working on the GIF support. Had a chance to play with that this week and that's definitely coming along nicely. And then lastly for me, thanks to you Scott for working on the BangleJS device as well as I think I saw you mention some stuff about the multi-color e-ink a couple of weeks back as well. Both of those are on my radar to start playing with soon. So thanks. Thanks FOMI guy. All right, next up is Jeff. I need to thank Liz for help already with the download page items and fritzing part for an upcoming guide and who I'm about to ask for help again with organizing the OV5640 product guide. As a couple of you already said, thanks to Genevra for a video chat last week. I'm really excited about their motivation to improve async. And to GitHub user gel source, I'm guessing at the pronunciation here for an issue report against the core with all the info that I needed to resolve the issue. And that's what I got. Thanks Jeff. Okay, next up we have notes from Jose de Ville after I take a time-code. First, a hug report to Tanya Newt for the work on Pi Sigrock. Hug report to Mark for adding the GIF support and hug to Todd Bot for path to point class for rendering SVG points in Circuit Python. And with this principle, creating a pie chart. Ooh, that sounds cool, I haven't seen that. Next up we have notes from Katnie. Katnie says hug report to BlitzCity DIY for helping out with the Arduino bits and a guide I'm writing and one I updated. The other host of this meeting for covering for me for a few months when I needed it. Hug report to Todd Bot for helping me figure out amp to VoltMath for help sorting out how many LEDs I need for a specific project and the hilarious E that ensued. Hug report to Anne B for always being flexible about my weekly newsletter contributions. Hug report to Tectric for a lovely chat asking to discuss adding issue templates to the libraries and taking that task on. Forgot, folks I forgot because my memory is a great lately and a group hug. Next up is Melissa. Hi, can you hear me this time? Yes. Okay, I'm just using my built-in mic. Sounds good. I just wanted to give a group hug. Sounds good, thanks Melissa. Next up we have notes from Mark who says hug report to FOMIGuy for finding an alignment bug in the GIF support and testing the PR out and hug to Jepler for the TauGrid optimization PR that was eventually closed filled in some knowledge gaps I had. Next up is MicrDev. I have a group hug for the entire community. Awesome, thank you MicrDev. And next up I have two more text onlys to round out hug reports. First we have Tectric who says hug report to DanH, maker Melissa, Tandy, Jepler and MicrDev for feedback on recent PRs. Hug to Katni for a good discussion regarding bug report templates for the libraries and a group hug. Last up we have a note from Todd Lott who says hug report to Katni for convincing me to attend the weekly circuit Python meeting. And next up, that's it for hug reports. Next up we have another round robin that is status updates. Status updates is a lot the same but this time it's about what you've been working on and what you plan on working on in the coming week. It's a great way to figure out who's doing work related to work that you've done before or collaborating for those sorts of things. So I will start and we'll go through the list as written in the note stock. So let me take another timecode and say I'm wrapping up the PySigRock work for the moment. I added analog support. I added support for skipped digital channels which will still slow down the capture rate though. It'll capture between the start and end channel but it will at least mask intermediate channels. I reworked the data output so it can include raw logic waveforms but also decoder output which is pretty cool and I'm not sure most of SigRock does this so that's pretty neat. I added VCD output support using GTK wave for viewing capture and decoder output. I also added wave drum support which is a like JavaScript to SVG sort of renderer that's really pretty nice so I added support for that and there's additional work that can be done to make it prettier like syncing the diagram to a clock signal would make it much more compact but that's pretty neat and I'm trying to wrap it up and I'm getting to the point where I can use it and other folks can use it and we can kind of iterate from there. I need to take a renewed look at the BangleJS2PR and get it building for everything. I was trying to build all of the NRF boards with the particular DFU support that is needed for BangleJS2 but I need to change that. It's just not easy to do on Windows so yeah I need to just spend a couple hours working on that. And then I'll be picking up the IMX RT 1011 I have a prototype metro here and I'll be kind of verifying the status of the port this is kind of a push for us to make it stable in our mind because we will be really seeing some products with it so that's next on my list and that's my status update. So next up we have notes from Cgrover that I'll read off Cgrover says after nine fully refactored revisions the precision VCO PCB is off at Oshpark in Oshstensils and that'll be safe to upgrade to KeyCAD 7.0 now The AD5293 10-bit digital potentiometer used in the VCO module added two more Eurorack module designs to the list a dual ADSR with presets and a Vactrol simulator with neon LED incandescent and custom response curves unrelated to observation the leaf blower slash vacuum mulching impellers don't last forever and can fail with gusto I feel like there's a video related to that Next up we have Dan Okay thanks, okay I've been doing some work not strictly circuit python on the Sanbi 21 UF2 bootloader user was having trouble it seemed like it was not updating the boot protection properly it turns out that the bootloader updater takes eight seconds to do it's work for no particularly good reason and the user wasn't waiting long enough for that so we will shorten that also the same user, the reason the same user was also interested in having brown app protection on the Sanbi 21 because when the power jiggles a lot it can cause the internal flash to get erased we already saw that problem on Sanbi 51 it's harder to happen but it does also happen on the Sanbi 21 so that's another fix I will be making to the bootloader and I will hand that off to the user to test the main thing that I've been working on for the past several days is SafeMode.py this is a file that will be run normally when you go into SafeMode nothing gets run and you go into the REPL why you're in SafeMode because of some error because you deliberately got into SafeMode but there are a number of problems with that like an unattended board can't be reset if it goes into SafeMode for instance so we decided a long time ago to add SafeMode.py which would run kind of like boot.py before anything else happens and it could decide to do something based on the SafeMode so it could just do a reset and clear the SafeMode and since we've seen hard crashes from various Wi-Fi problems and also from batteries running down this seems interesting to people right now so there will be a PR for this quite soon there's not a lot you can do in SafeMode.py except reset or not if you don't reset then you'll just fall into the regular SafeMode handling you can't sleep there or anything but that's okay because you can always sleep in code.py and so you'll see this feature probably in 8.1 or something like that I would guess alright and now and finally as mentioned we'll probably do a CircuitPython 801 soon with some minor fixes the most interesting fix is one that makes the Scorpio work properly it was driving the LED pins too fast or too hard with higher current and it can cause the board to just things to go bad like resets and stuff so that's an important fix to go in so I think I'll do that this week sometime okay thanks Dan alright next up I have notes from David who says previously I tested PiLeap from Android does the circuit playground blue fruit in the clue where do I report issues slash ideas the answer to that is if you look if you search in data fruit repos you'll you can search for PiLeap and you'll find PiLeap for Android so the PiLeap for Android github repo is the place to file issues David says upgrading 10 plus boards and feathers to 8.0 including the libraries updated the mouse juggler with the macro pad there's a gist here with a special feature stealth mode only visible as a mouse octagonal edge size is octagonal edge size is controlled by the rotary encoder can even change the rotating direction by going negative non circuit python I recovered my son son a previous gamer PC the RTX 2060 to try installing above to an NVIDIA driver stable diffusion in UI or web interface I failed at the net NVIDIA driver so we'll restart from scratch next up is DJ Devon 3 thank you I am excitedly waiting on the arrival of a raspberry Pi 4 so I can start my octaprint and MQTT journey using Liz Clark's guide I started designing an enclosure for an old 720p Logitech C510 webcam which I took apart and lost the housing more than a decade ago the first prototype snapped fit together so well I had to use a razor blade to separate it live and learn, the second prototype now has a slot for a screwdriver to easily pry the halves apart so if you guys have ever designed anything with snap fit it works too well and that's something that I haven't seen in any of those videos about snap fit parts is designing in something to actually separate the two halves so I designed something that you can just stick a little screwdriver in and pry apart I added a quarter inch 20 threaded standard camera screw mount to that which the original never had it's one of those old laptop kind of grippy webcam things so now I can repurpose that old webcam for an octaprint and mount that to the 3D printer finished printing a nice dichromatic blue-green enclosure for FOMI guy's TR cowbell I got inspired because I was looking for PLAs and the name of the PLA color is Seafoam which immediately just reminded me of FOMI guy so I really appreciate his efforts on the project and I wanted to ensure that he received a nice enclosure for his efforts and I will be shipping that out sometime this week hopefully I discussed with FOMI guy and neither of us have seen any evidence of errant behavior from the MCP 23017 ships used by the TR cowbell or in many other projects including many other Adafruit projects and learn guides and stuff so it does affect Adafruit in some way and those issues that microchip described in their recent product notification we haven't seen any evidence that it actually exists with the chips that I've been shipping out anyway so that's I don't know that one's really confused me but because the TR cowbell uses all 8 inputs per chip I cannot take the chance with future designs and I already started redesigning it with a diode matrix which eliminates one of the multiplexers and I'm looking at another avenue for eliminating the second multiplexer if any TR cowbell version 1.2 owners experience any issues with failed step switch reads requiring you to press a switch multiple times for the switch to read because that would be in line with what microchip says the behavior should be for a faulty chip then please contact me I would like to know and be able to track these issues and see how well they're actually working out in the wild and that's it for me Thank you DJ Devon 3 Next up is Foamy Guy Alright, thanks Scott last week I was working on some argument validation inside of a couple of the display IO classes in the core I have a PR in for that it was failing the actions just failed to download something I restarted that a while ago I need to check in on that later on today as well I also tried out the early version of the GIF support in display IO last week on a couple of different devices and then the other main thing I was working on last week was a couple of different library PR tests around the .star library HTTP server and a couple other small ones I had a lot of PR testing this week I've been working on Ethernet display a layout and then I have many MQTT and a couple others lined up to look into this afternoon I saw there was some updates in the GIF support PR so I'll circle back and test the latest version of that and then the other thing I want to look into this week is the multicolor e-ink support the like seven color I picked up one of the Pimeroni colors in it so I'm interested to play around with that and that's what I got, thanks let me know if you have questions about that it's stuck in the Bengal JS2 PR okay next up is Jeff Hello, so last week I fixed an obscure crashing bug in CircuitPython 8 that was the bug with the really excellent bug report and it was an aspect of chained exceptions that I thought through but I believe that's fixed now and I also incorporated Philby's fix for Scorpio USB flakiness in CircuitPython and I've been working on a product guide for the OB-5640 breakout this week I had wrote that I would be finishing it that's turned into more of a hopefully finishing because in our internal meeting we added several more demos that the guide is going to show hopefully something else fun, I don't know what and I do very much want to print Liz's Octoprint project that looks super cool and useful and that's what I got and I'm probably going to leave the meeting right after this because I have stuff to take care of but I hope the rest of you have a good rest of the meeting Thanks Jeff, alright let me take another timecode and I'll read off a couple first up from Jose David last week small documentations improvements working on some CircuitPython personal libraries and working on an example for the color fader community library, this library allows you to systematically fade your chosen color this week continue my community libraries discovery and other small documentation improvements and now I have notes from Katni who says last week through much of the ESP32-S2 reverse TFT feather guide updated the feather ESP32-S3 guide to reflect the change in battery monitor chip reviewed Liz's guide, met with Alec to get him going on github issue templates on the library repos as in the core, this week continuing reverse TFT ESP32-S2 feather guide creating a fritzing object and pretty pins reverse TFT S3 feather elsewhere time lapse is still going and the plant is definitely changing building an LED grow light for new plants researched it and white dot stars and the red and the RGB dot stars are the proper spectrum and wavelength respectively for growing plants, decided to build my own and now time for maker Melissa hello, hello I was mostly focused on the circuit python installer, I finished up the your 2 copy step which sounds easy but I've been making use of the files system access API and showing copy progress made the step a little bit trickier I finished working on incorporating the ripple library I'm currently working on getting the user credentials and reading, writing and parsing the settings automo file via the ripple working and I fixed a few bugs in the circuit python code editor awesome, I'm so excited for the installer thank you Melissa next up I have notes from Mark who says animated gif work is almost ready to leave draft status plan is for this week, next up I want to look at display IO to see what opportunities may exist for optimizations next up is micro dev this is something I picked up this year and have made multiple PRs in the last month and the goal was to get the PR time down under an hour it took an hour and 30 minutes so now it takes like 1 hour and 3 minutes and I think I can get it down so yeah all right and it looks like we'll talk in the weeds a little bit more as well thank you micro dev lastly I will read tectrix text update after I write a tempo tectrix says last week started drafting issues templates for the libraries similar to the ones used in the core submitted final remaining PRs to fix the CI deprecation thank you again to everyone who supported this this will make the June 1 deprecation date of Node JS 12 for actions runners much less impactful a few PR reviews helped Cgrover update all their libraries to use the library CI composite actions since they were having issues with the CI regarding releases started a repository for documenting CI issues and their fixes hoping to add information here over time starting with recent learnings this week going away for the weekend so not expecting to start anything new and that's it for status updates thank you everyone and for letting us know all the different cool things that you're working on the last section here we have is in the weeds in the weeds is a chance for us to have any longer form discussion about core work library work community work and generally if you have topics please drop them in here we have a couple already but if anybody has any other things to talk about please add them in the note stock there the note stock is always available in the circuit by then dev channel under the pin icon so first up we'll see if mark is around yeah yeah just quick question for that I made a gift support about which boards I should make sure it's enabled on right now they're kind of tied together put it in the GIF IO module which includes GIF writer which was only turned on for camera boards so I can turn on the whole module including on disk GIF and GIF writer it fits on all but one M4 board and I'm thinking that's a specific something specific on that board which haven't looked at it yet by default display doesn't go on most of them the small M0 boards or this so that's fine right yeah just making sure otherwise that's the fine settings and then I'll make sure those all get submitted I think that's fine I did see a thing I think it might have been in the BangleJS PR with the 7 color ink as well I'm the pew pew M4 ran out of space that's the one I saw as well yeah and the way that I fixed it is the samd20 ones have some build stuff to not build terminal IO for Japanese, Russian and Korean I want to say like three different languages that tend to fill up the samd21 has a choco code that says just like on those ones turn it off because our font doesn't cover a lot of the the glyphs anyway so that's what I brought to the pew pew M4 which hopefully leaves enough space for both of us on it okay that sounds good I'll double chuck with you because that's in the bangle PR still yeah and I just did it just for that one board that's what we could do for all M4s or even all boards if we wanted to because it doesn't make a whole lot of sense to have terminal IO if all of your glyphs don't show up or a lot of your glyphs don't show up although any errant English will still show alright I will make sure that's in there and then I think it's pretty much ready to come out of draft yeah I haven't had open for it yeah when it comes out of draft you can take another look at it I think I got everything you commented on sounds good alright next up we have microdev so I've been thinking about getting the time for the CI down and for that the majority of time now taken is for the board bills and I'd like to skip the translation bills if we can do that then the CI will be like 3 minutes which now takes like an hour so my idea was to just have like a hard press you know short level like 10k let's let's say we compute for E and US translation a size then multiply that by 10 and just go with it and just assume if the board fits that amount of language then it will be able to fit all of the languages I've always resisted this because we never really know which language is not going to fit and I do like having all of the artifacts as well yeah so regarding the artifacts another thing that I would be doing was is something like so users can create a fork of circuit python and then they can run on their forks and do a custom build there's something like workflow dispatch event and it creates a really nice graphical interface for inputting commands and you can just take a board build that way interesting that does sound really interesting especially in terms of the forks that want to like turn a module on that's not usually on I still would say that like that's pretty advanced but you know we've Dan and I and Jeff have also had discussions about like better ways of doing translations that are that don't require like the link step yeah or doing it doing a link that's not an LTO link for the translations but maybe that's sort of already true yeah I would be I think I might be okay with the non-merge builds just building English and maybe the largest language or something like that like the PR builds but not the PR builds right because then you get a lot more turn around on it yeah I think that's that seems okay to me because I don't I don't people don't normally test if somebody really wanted for a language build or not an English build I should say for a PR like to give as an artifact it could be done by hand not as if you get hub I could just say oh you need you want to test this in French but it's important to know which builds are going to blow out and so I think it's necessary to test the largest builds like Russian maybe in Japanese or something in maybe in the PR builds because otherwise we don't see that until the merge we wouldn't see that until the merge happens and then there'd be a lot of cleanup so what do you think about that Scott I mean does that feel less yeah it does feel less like if we if we build them all for main the main branch then that gets me really what I want yeah yeah once we do emerge then it would build everything right and and that it's still true that yes it would be really nice to figure out a better way a faster way to do translation so that it doesn't take that that long I mean I think in the long one also we have so many boards and I don't know really how to cut out the number of boards I mean we've done a we've done a pretty good job though not building every board unless we think we have to yes and then micro does added the ability of like if it passed once and we don't think it'll fail again then don't do it so that all of my peers also have so many changes that they always build all the yeah yeah me too so yeah I so I mean I'm interested in I'm interested in doing a small number I'm not sure that you can guess whether the the build will blow will be too large or not just by adding a constant factor I mean I tried estimating the size of translation but couldn't get any file because when you factor in the linking step and the alignment that the liquor ads then it all gets messed up I was getting a difference of like 300 bytes like from comparing Russian build to the European English US build yeah the estimation yeah I think I'm going to say what you said is like I don't think that's very worth it but I just open to building like two languages for peers yeah that's less work for now and you know I can get a PR in and see like I did a PR on my folk but I on the folk it only provides $20 and on the the fruit circuit Python repo then it provides $16 so imagine it would be really fast on my folk it took 30 minutes to only do English or only English so if you do like English and Russian or English and Japanese well you can see it might be nice to automatically decide which is the largest build but I don't know where you would keep that look up that data so or you'd have to go to S3 to find it or something I'm not sure if that's where you'd have to build one board and measure them all and then well and it varies too because there are a lot of the linking step like the linking step takes 20 second and if the language all the compression generation of the generation of the compression data takes like 5 seconds so I think we can just go ahead with only generating the compression data not linking just assuming based on the compression data and then adding like threshold for that I see what you're saying I think my bias is just to try to keep it simpler like just do English and Russian or something and then if we end up having the main branch break because we didn't test it beforehand that's fine we'll just fix it we can fix it and then we can discuss whether that's the language we should be building instead so there is now like queuing of the merge PRs I think Scott you only mentioned that so what it will do is like if you are in a merge queue then you can run your CI checks in the merge queue and if they fail in the merge queue then they will not get merged into main so that way we can avoid getting the main idea that's an interesting idea I didn't realize it could be used for that purpose yeah that's a good point like that merge queue would build all the languages like as a final check right but we wouldn't have broken builds that's very interesting so yeah so I would say go ahead with something and maybe do something easy to start with and then we'll see how much it improves okay Scott thank you for spending time on this I mean especially what you've done so far it's been incremental but you know so the thing is like even if you get the installing a dependency it takes one minute and you get it down like 10 seconds the thing is when you factor in the parallelism of the boards of jobs number of boards built by number of continuous parallelism so let's say if you are building 70 boards and dividing that by 60 only get like 6 times whatever improvement you are making yeah so 6 times 10 seconds that's only one minute so the amount of work required to get this far compared to the increase it's not very issue but it means they all complete faster so that you can go on to the next 60 faster yeah so yeah yeah and it reflects when you have less and also then time decreases quite a bit right I mean I'm very grateful to get up for running this for free you know if we didn't we would probably cost this $150 $200,000 a year in in GitHub actions cost so we're very grateful for what they do already but thank you very much for spending the time on this I really appreciate it sure alright and with that I'm going to wrap our meeting up another thing I've mentioned in the video so I brought this up with cost a few weeks earlier regarding DeFolk in Circuit Python so the motivation here is that the like like collaborations for GitHub doesn't really get the collaborator synchronizes the contributions made to Folk really meant that special repository is used to PR upstream and all the GitHub tools are built around that fact so instead of counting contributions the folks they think it would be eventually get merged upstream then they'll count it but it doesn't happen for us oh that only I wanted to where does that interest where are you looking for a contribution activity is that like on your user page so like okay on the profile page the contributions on the profile page so like issue interactions and but the commit they are not recognized and eventually like it's okay that's you can ignore it at that but like when you get to set up a sponsorship page for like getting sponsored then it mentions it doesn't list circuit as a rapport in which you are contributing interesting and like also the things like I think you mentioned that it in a search has now been enabled for the folks I didn't quite I didn't quite was I want wasn't able to get it working first thing yeah I realize after we talked that it was I was seeing it because it was under feature preview I mean you have to type in some special keywords poke equal to true and then I don't know like and quite good to work I use cs.github.com but that's a private was a private beta but they move they move that into regular search now so if you're just at least for me if you're just viewing code and then go up into the search bar it'll search the current repo yeah it seems to do the right and it does the fork now it used to give you an error that said this is not available on forks yeah I mean the advantages to remaining part of my group I thought I think you probably discussed this with Scott but it makes the merges a lot easier it makes it politically I think it's better I think yeah yeah that's I didn't quite wasn't sure to bring this up like when you get into this the people start comparing micropython circuit python then they start saying like one is better over this and that we have talked to the micropython people about factoring out the language core as a separate repo that's a long-term project that may never happen but it also means I mean as I see it I don't think we get I don't think we get anything from being a fork right like the merges should be merges fork has nothing to do with that but we do but we do get labeled that way and I think it is important that just on GitHub where Mark does the fork yeah I think that's okay right um I would wonder I'm looking up at there's a link here of like what contributions count it's a bunch of stuff so any interactions basically any commit messages or I have seen only pull request and review activity counted right this is it must be their email address it must be a standalone repository not a fork and the commits were made in the repositories default branch or GH pages I mean I think we could lobby GitHub to change that policy I'm wondering where I'm sure somebody's already done that yeah I mean that's the fundamental issue right so folks are only built to you know make a contributions upstream so that's why they don't think that it will be beneficial to count the contributions made to a fork cause eventually they'll count the contributions which were which will eventually be upstreamed so by countertoys right technically I mean right so we can contact it's a GitHub support and detach it I mean there is a whole process for it basically it says if your project gets too big then you may I want to I think I and we talked about this a little bit before but I think if you want it for yourself I think there are other things we could do like if I think if we look at contributions on Adafruit circuit python like it should show you there so even though it's not showing on that profile page you could make a read me for you that says like lots of my contributions are in this thing that's a fork here's a way to see that instead mean it would be quite great one way to appreciate like your number 10 on my contributors I don't know I want to which is pretty awesome so yeah I think I don't know I I think it's important that we that we still own that we're fork a fork a microphone like I don't mean to downplay like any micro python stuff obviously we still we will still keep bringing mergers and we'll still support micro python and all that right I think we should even if we were de-attached we should still mention that it's a fork project right like if you if you default from micro python then I on the like on the homepage of the repo there are only mentions like only at a single place right but you can still mention it in the description and have a whole low chart and like what comes from there till that way so that's true any other folks have thoughts I think I don't know what we should do we can keep thinking about it we can also talk to film more internally about it and get their opinion see what they think and we could before we do it officially we could also talk with Damien and Jim about it too just so that they have background if we do choose to do it they're not surprised by it and they'll understand why okay I'm gonna wrap us up because we're over time there actually has been we I did talk somewhat about moving the circuit python repo to the circuit python org as well but that could be a separate thing okay I'm gonna wrap this up thank you for bringing that stuff up okay so for let me switch back to the script for the wrap up this has been the circuit python weekly for February 13th 2023 thank you everybody who participated if you want to support Adafruit circuit python and those of us that are that work on circuit python 4 Adafruit consider purchasing from 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 microcontrollers newsletter visit adafruitdaily.com to subscribe the next meeting is held on Tuesday so 24 hours later than normal it is the first of February there's a US holiday next Monday so that's why this meeting is held on the Adafruit discord server which you can join by going to adafru.it slash discord to be notified about the meeting and any changes to the time or day you can ask to be added to the circuit python nieces role on discord and with that we hope to see you all next week thank you all have a great week