If you're watching this after the fact, make sure and check the description on YouTube for all the time codes. These streams tend to be about two hours long, and we're going to take a few minutes here to get started. So make sure you're checking the description to be able to skip around. I'll say some hello's to start. So hello to David, DCD. Thanks again, as always, for doing the time codes. Let me pause the video streams. It's like everything's going OK. Twitch audio OK. Thanks, David. Hello, Mr. Certainly. Good afternoon to you all. All you wonderful snorkelers, scuba divers and makers. It's not going to be as deep of a dive as last week was. Last week was pretty intense. Hi, Johnny. YouTube OK. Thank you. It's interesting. Spook's like not even in the sun. The sun's behind him. Hey, doctor. Hi, Hugo. Hi, Gary. Doctor again. I don't think we're going to get super deep unless people ask questions. But I made a lot of progress. Lots of progress to talk about. Maybe I'll just ping Lady Eater right now. She's not away. I'm everywhere. Hey, Dexter. Yes, progress is really good. I think I might actually be able to, well, no. I'd take that back. I'm pretty busy next week. I was going to say I could revisit the Belie stuff, but I don't think that's actually going to be the case. Next week is Picon. I have a question about F-strings. How much flash does that really take? I don't know. You'd have to try it. I didn't add it, so I don't know. I don't remember. You could maybe find the pull request that added it, and it would tell you. P2 drops in the chat. Hug report to me and Jeff for helping, for all the merging. Yeah, they've got a meeting at 5.30 Eastern, so. I never make that meeting, but they record it, so I watch it after the fact. Johnny's working at 11 on a Friday night. Oh, that's a bummer. Hopefully you don't have to work this weekend as well. Charles, maybe from the deeps of the ocean. Hey, K-Match. I want to talk about what K-Match is doing, because K-Match has been doing some awesome stuff. Dexter had a pull request that got merged this week. Congrats. Doctor says, I'm disassembling a loft bed and trying not to die in the process. It sounds like you might need a second person to help you with that. Mr. certainly has been revisiting their audio setup and was able to get a go XLR on the cheap, so now redoing my mics and whatnot. Nice. Johnny says, I had the fire consultant and now do the job of themselves. Oh, that's a bummer. Working late at night is no fun. I kind of like end early. Although I got up early today, we had, today was cleaner day, so got up early and actually got right to it. I was doing the, well, poking the merges and then it's 409, so I'll clap. And the clap is at 411 by my time code. We just do this to make sure we sync stuff up. OK, let's get going in the housekeeping. Actually, first, we have a Adafruit jobs question. Are jobs at Adafruit on a particular page or would they be on jobs.adafruit.com along with not at Adafruit jobs? So almost exclusively, jobs at Adafruit are hired from referrals for people that work in New York proper. They're done through referrals. I think that's almost entirely true. If there's ever a job, there have been times where we needed a PHP person in New York. If they can't find it through referrals, they'll actually talk about them on the shows. So just keep an eye out for Ask an Engineer and stuff. But for folks like me who are remote and technically in our contractors, we tend to hire people based on the work that they're doing in our community already and also show and tell. Show and tell is a great way to get on Phil and the Moors radar as well. Had all the weather today. Sun, rain, hail, only missing snail for the wind. And Phil's in the chat and says, you can always just email Phil with your resume. If you are in New York and looking for work, they have started hiring people. So you can email PT with your resume, which is PT at Adafruit.com. And that's kind of how I got hired. I was on Show and Tell, and I was showing off the drone stuff I was doing. And to have it blogged up, I emailed PT. And then later, when I went back on Show and Tell and said, hey, I'm looking for a job, PT emailed me and said, hey, are you interested? So that worked out really well. OK, let's do housekeeping. Just being active and impressive is one of the best things. Yeah. Yep. Yeah. For when it comes to the remote stuff. Yeah. So typically with the remote folks, and this is true for me as well, we don't hire them kind of perpetually from the start. What we do is they do it project by project basis. And that's true for Learn Guides as well, is that you'll pay per guide sorts of stuff. So the first project that I was given was get MicroPython running on the SAMD chips, SAMD21s. And I was super excited, and I did it really quickly. It's just like it was a perfect fit. It still is a perfect fit for what I've done. OK, I've got to stop looking at my video. All right, let me pull up housekeeping. So hello, everyone. My name is Scott, and I work on Circuit Python for Adafruit. This is a deep dive. Actually, let me go back. I usually do it in different order. Adafruit is an open source hardware and software company based out of New York City. I work in Seattle, so I work remotely for them as a contractor. I work on Circuit Python, as I said before, which is a version of Python designed for inexpensive computers called microcontrollers. Here's an example of one. For those who want to see, this is a Raspberry Pi Pico board. And it's got a microcontroller on there that runs Circuit Python, so you just plug it into the USB and you get a drive with Python code on it that you edit. This is a deep dive. So I do this 2 PM on Fridays, usually, although I'll shift it to Thursday if I want to take Fridays off. 2 PM, because I'm in Seattle, so that's 5 PM Eastern. Typically, it goes for two hours or more, so as you've probably seen already, I take questions and chat with the chat. So if you have questions, please drop them in the chat. It can be related to what I'm doing or not related to what I'm doing. It's not that big of a deal. I feel like I'm not centered. Let me just, the whole thing is very casual. Casual is the right word for it. So yeah, questions are welcome. If you want to chat with me and others outside of the stream environment, you can go to the Adafruit Discord server by going to the URL adafru.it-discord. That's what the smaller box here is, is the Discord. There's a bug on the Discord side that makes everybody an object, so it doesn't seem like the stream kit overlay that I'm using is actually used very often, so that's a bummer. We do have time codes. Thanks to David for taking time codes. They'll go in the YouTube description at the end so people can skip around. And last up, this is Spook in the smaller camera here. That's Cat Cam. Spook is epileptic, which means he has seizures from time to time, although he's been doing really, really well. So I wouldn't expect him to have one, but I just want you to be aware of if I'm on camera, but things are muted and I'm not paying attention, that's why I'm just making sure he's OK. I don't expect that to happen, but that might happen. It's always a possibility. OK, so that's housekeeping. I didn't say next week is on. It looks like Friday will work as well. So let's talk about what I'm doing next week first, I guess. I guess that's where I'll start. Just checking the chat. So PyCon is next week. So there's that, PyCon.org. I don't know the details, because I haven't looked at it. It is virtual. So I know that talks are during the middle of the week, I think, so 14th and 15th, which I guess is the end of the week. Let me secretly show. Yeah, so talks are Friday, Saturday. And then the Python language summit, which I'm also going to, and I've gone to the last couple years, is a private. So usually the way PyCon works is that it's kind of a week-long event where the talks are like a couple days out of that. But then there's smaller summits, because usually people are in the same location. There are other summits like an education summit, a language summit, that kind of overlap with a broader week. And then there's sprints and things that go along with that as well. So I'm going to the Python language summit, which is like two four-hour chunks on Tuesday and Wednesday. And I'm actually giving a lightning talk. I'm one of the pre-selected lightning talks. So I've started the slides, but what I'll plan on doing is I'll talk kind of post language summit next week about how that went. And I'll show you the talk. The talk I'm doing is talking about how CircuitPython is a subset of CPython, meant to give them some context of the CPython developers, some context about what perspective we have as a subset of CPython. So I've got that started, and I'll go into more details next week. But that's one of the reasons I'm busy. The merge stuff is almost done, so I'm actually having a meeting with Damien and Jim next week as well right after the language summit. I'm going to be chatting with them. A lightning talk is a five-minute talk, so it's very quick. Let's see. I'm a cat. So Fridays are after in the winter for skiing. What is it in the summer? Chilling on the beach? Do they have those in Washington? Yeah, we definitely have beaches. They're not particularly warm, but I think if we get out and go camping or something, that might be the case. Hi, Hamz Lab. Things are going great here. I hope things are good with you. Yep. So that's happening, which is exciting. I have yet to look through the talks, but I do have a ticket, so oh, this is a better. The schedule shows tutorials, talks, posters, events, and summits, and keynote speakers. So I'll be paying attention to that as well. So I'll probably be pretty distracted next week. But yeah, there's some interesting stuff on the language summit. Oh, you can't see it. Here we go. Gareth says, invite Damien to join us on one time. It would be great to hear him in your chat. Yeah, I'll ask him about it. Now's not a great time, because he's seven hours behind. So it's like, what, 7 AM there right now? So there is some time zone stuff that make it a little bit trickier. But I'll offer it to him. If you want to get the thing that the way that I keep track of what Damien's doing besides chatting with him sporadically is there's a Melbourne MicroPython Meetup that posts videos, and they just posted. Oh, I missed it. Hi, Alfred. Yeah, so there's this Melbourne MicroPython Meetup that has links to videos from the Meetup. And that's a really good way. Matt Trentini, who runs it, always does some slide presentations of all the hardware that he's keeping track of, which is also really interesting. And then there's usually also, so this is April's. And I've already watched these. So here is Matt talking about all these MicroPython-y things, and then Damien talks about the 115 release. And so, yeah, you can just see here, like, sponsor MicroPython, season of docs, new hardware, porting efforts, infrastructure. There is actually a slide on here about me too, about the merch, and links to the deep dive. So we're getting all referential here. So yeah, next week looks to be a pretty busy week. It'll probably be kind of like a bunch of odds and ends. So let's talk merch. I guess that's where I'm taking this. It's all kind of whatever I want to do. So the merch request, so 112 is in. I can't remember where we were last week. But we have the merch requests for the poll request for MicroPython-113 is out. I have addressed feedback from Dan, although Dan's on vacation this weekend. So I was hoping Jeff would review it as well, but I'm not sure. So 113 is like, it's passing CI, which is good. And so it's close. It'll be in soon. And this has the no. So MPY is already merged in. All the MPY changes are merged in. And Jeff did emerge. There's a character at the start of MPY files that uses to make sure or try to make sure that it's actually an MPY file. And that character for MicroPython is M. And Jeff just did a thing to make it C for a circuit Python. So that should make it easier for us to not conflict with MicroPythons. MPY files. And one thing we thought about doing was actually changing them to CPy files. But that might be more confusing because CPython creates PyC files. So anyway, at least there's an error message now that will tell you this is the, oh, that's why he hasn't been reacting to the PySerial stuff. Oh, David G. says they should improve the setting, maybe grabbing the screen they use in the Melbourne Meetup. So the video in the April 1 is actually better. So it transitions between the slides and the camera now. Oh, NeuroDoc's talking about Dan being on vacation. Yeah, he's just out today through Tuesday off and on. He's visiting his wife's family because they're all vaccinated. David says, does Adafruit maintain account of the collected time from their paid work on Circuit Python Core? No, it's a lot. I mean, I've been working 40 hours a week plus for years on it, plus Dan and Jeff's half time. OK, so that's where we are in 113. So for those of you who are new to this, we're trying to go from 1.94 up through 115, 1.10, 11, and 12 are, you like this cup? 10, 11, 12 are already merged in. This is an Evergreen bike alliance. It's the Bavarian Bikes and Brews thing. It's some mountain biking thing in the mountains here that I have never done, but we had friends do. So we went off and did that with them, I think, or something. OK, so yeah, 10, 11, 12 are in. 13's almost done, which leaves 14 and 15. And I actually did 14 and 15 yesterday. I had been hoping that they would be easy because they're much smaller merges, and it turned out to be true. So I've done the bulk of the work. There's obviously some refinement to do, but the merges, when I did the merges last week, we did the 113 merge, and we had like 250 files to go through. And when I did the files for 14 and 15, it was like under 50 a piece. So it was like quite quick to go through. So I actually have 14 here, and then I have 15 of merge 15 branch as well, which are just a start. And I've got to update those once things get merged in. So that'll just take a bit of time. I'll take a bit of time to get in, but I think I'm basically through the merge now. I did fix the tests of 114 and 115, I think. So it's subject to change a little bit as we I'll get those based on the current version of the merge afterwards. So there's just a little, like once 113 gets in, there will be some work to get 114 kind of out the door and into a PR. And then once that's done, the same thing will be true for 115, and then we'll be up to date. One thing I did realize, and I don't know if I talked about this, but one of the things I was doing in the 111 and 12 merges is that I did the merge early, like I was overlapping the merges. But then I did cherry picks for the merge commit, trying to update them to the latest version of Circuit Python. But when I did that, it turns out, and I didn't realize this until later, that that cherry picking process lost the history. It broke the get history of things. So we incorporated all the changes, but we didn't actually have the history of what changes for MicroPython were included in that merge, which is a huge bummer. And I think actually part of the reason that 112 and 113 were so giant is that Git couldn't figure out that I had already merged some of the changes in. So I was kicking myself a lot on that, but it turns out, well, now that I'm aware of it, I can correct it. And I think that's another reason So 113, because 11 and 12 are merged into Circuit Python main, I didn't want to redo that stuff. It gets really complicated. Like fixing that would have been really complicated. So I'm not going to fix it, but 113 brings in all that history anyway. So that'll be good. It's like 1,800 commits. It's a lot of commits. So getting 113 in would be really good. And then 114 and 15, I'll just have to be careful to make sure that the merge commit is correct. But yeah, so that's pretty good. It's celebrating getting vaccinated like an I voted message, because it also hurt those that could not yet. Yeah, so I think the challenge in the US, I understand that my audience is more international than that. But in the US, we're very privileged to have relatively early access to vaccinations. Like I have my first dose of Pfizer. I'm getting my second dose in a couple of weeks. And so I understand that some folks watching may not be able to do that yet. But the US also has a problem of a lot of people who aren't going to get it even though they can. They call it vaccine hesitancy. And so I want to be very forward with my expectations that people should get the vaccine if they can. And be forward about my experience getting the vaccine as a way to hopefully help people get over the hump of getting it. So I hope that everybody who's watching internationally can get it soon. But I'm not going to not talk about it because of that. Yeah, so Mr. certainly says, I think not, David G. We need to bring acceptance that being vaccinated is an absolute major component for return to normal. This is 2021. Celebrating via social media is an effective way to get the message out. Sends the right message to those we care about. Yeah, and I've had friends. I have one friend who I had a long conversation about who was definitely in that camp where he had COVID. And so it was not planning on getting vaccinated and still a bit concerned about it too. So I was pushing him to do it. And so I said, I'll let you know how it goes for me. Nice. Doctors vaccinated. Johnny's scheduled for Wednesday. Ham's Lab says, my take is it's irresponsible to not get it unless you have a medical reason not to. I believe, I agree with you with that. Alvaro says, we're way behind in Costa Rica. I assume that's a Costa Rican flag. I know you're there though. Yeah, my dad got his too and that's it. But we were happy to know that when other people in other places get it, it should be celebrated. And it does not affect us in any way. So Alvaro says, they have Indian numbers there as well. Oh, that's rough. Yeah, my parents got, my parents did get it before me too. So they've been fully vaccinated like a month or two now because they're, my mom is almost 70, so they're older. Yeah. We're pushing more in the US to get vaccines more abroad. So I hope that works out. Hugo points out that John Oliver on last week tonight had a good segment about vaccines this weekend, like last weekend. Alfred, who says, I've also gotten both my Pfizer shots, says, I haven't used CircuitPython too much. So for a newbie, what's the advantage of using it? I think it depends a bit on what your experience, where you're coming from is. But the goal with CircuitPython is to be very easy to get started with and very quick to iterate with. So you take a CircuitPython device, you usually double click it to get into the bootloader and load CircuitPython on it. And then it will come back up as a CircuitPy drive. And then on that drive will be a code.py file, which you just edit and it automatically reloads when you save it. Which makes it really quick to iterate on things. So we're definitely trying to make it real quick to get started. And we also are trying to make it really simple to do things. Bruce says, I got my first dose of Moderna about a month ago. And in Canada, we're getting everyone one shot before moving on to the second shots. So Alfred, hopefully that answered your question about CircuitPython. I think we do provide a lot of good stuff, with the deep sleep stuff. Because we are operating at this higher level of abstraction, it allows us to do some things on your behalf that are really nice. Piatograph, to say for myself, one of the reasons is because I'm a Python newbie. Yeah, CircuitPython is very true to CPython. CPython is like desktop Python. So it's a great place to start. There's the place to start, I think, for CircuitPython is there's a CircuitPython essentials guide. And this is just a really good overview. It's not an overview of Python, so if you don't have the Python background, it might not be the best. But it is a good overview of all of the hardware-y things that you can do with CircuitPython. Ah, yes. Last week tonight is definitely for adults. Thanks, Mr. Shortley, for giving folks the heads up. Alfred says, I did remember that part being pretty easy. Does it have a lot of overhead, specifically thinking of running it on low-power MCUs? So it has to be on 32-bit MCUs. And we are doing some stuff for low-power. So we had ESP32S2 low-power support, and we're also moving... NRF is checked in, I think. STM and RP2040 will have low power as well. Ah, looks like we're getting an influx of people after the crowd-supply tear-down stream with Peter. I was watching the crowd-supply tear-down stream from Unexpected Maker into Shippu and Tiny-Led Matrix as well have joined. Welcome, folks. We're just chit-chatting. I don't have a bunch of merging to do, so we're not going to deep dive that. Yeah, the RP2040 is not a very low-power chip, so I think Lady Eater was actually a bit surprised... A bit surprised that we were going to do it, but I was like, so many people want it. I was like, let's just do it. So I think we will do that. Yeah, I assume the video on demand, the recording will be on the crowd-supplies. Hi, Perdomo501sts. 501sts? No stream crashing. You're all welcome. Gareth says, Is the chip shortage going to get a lot worse, or am I just feeling paranoid? I'm not the right person to ask that question. That's what the other stream was pretty good for. I do feel like it's giving us a bit of breathing room on CircuitPython to actually spend more time on the softer side, which is kind of exciting. Like, you know, a lot of the work that we do is high-folknology, crowd-supply raid. Doctor says, Chip shortage probably will get worse before getting better. Psy says, I'm just doing the building and even some capacitors are out of stock. Oh, Python classes for the RP2040PIO. Yes, there are. We take a different approach than MicroPython because we just parse it. I'm on the wrong. Can you tell what I type in all day every day? I think it's... I don't... Oh, you know, we have a separate learn guide for it. There's a learn guide for PicoPIO. Introduction to PIO with CircuitPython. This is what you want, Joel. UnexpectedMaker says, going to get much worse before it gets better, mid-2022 or later until it starts to improve is the industry's speculation. Alvaro says, I'm stocking vacuum tubes, but that has nothing to do with the shortage. Yeah, and Alvaro points out that one of the great searches recently was finding a replacement chip for a chip that's out of stock. So I do also know that, yeah, for us, it's actually quite nice. For me as a software person, like there's always going to be software work, but a lot of the work that I do is like bringing up new platforms, new chips. So it's nice that I have some time to not do that, and I'll show later. Oh, I tried to share the link to the CrowdSupply video. Maybe it was censored. Yeah, hopefully Mr. Certainly can take a look at that. He's a mod. So yeah, I'm kind of excited. Like I have plenty of stuff I want to work on still. So I think what you'll see is that like, LeMore in terms of products is kind of going where she can buy stuff. So I was talking with the Pimeroni folks and we were talking about like a handhold and stuff, a handheld. And she's basically said like, I'm not doing anything with the screen right now because screens are impossible to get. So you'll see Adafruit's products kind of evolve. We're also very happy that our, in terms of microcontrollers that we run on, we have a very broad support. So even if some of them are out of stock, we'll be able to go towards the ones that are. So Indra asks, Hey Scott, is it possible to scale CPU frequency dynamically? How the compiler handles it? Like if CPU frequency changes, then timing functions also change. So this is, you're getting at what makes it hard. In CircuitPython, we don't support changing the CPU frequency at runtime. And that is usually, that's because usually the clock that drives the CPU is also driving other stuff.  So it's something we thought about doing but it's just got a lot of knock on effects. It's not a simple thing to do. So we haven't, we haven't added that. Charles says the issue for chip shortages is that the foundries do not have capacities to do the catch up with demand. Screen manufacturers have the same problems. Yup, awesome. And Mr. certainly posted the teardown session in the Discord if folks want to watch it. Yeah, Garrett says as a software person, chip shortage means breathing space. As a hardware person, it's a nightmare. Yeah, it's true. But on the hardware side, we have a diverse enough portfolio of products that we're not, I don't think more is that worried about it. But that's not my job. Not my job either. Okay, so we talked about merges. One other thing I wanted to point out is, so I have pending branches for 114 and 115. And then I also wanted to point out this PR that I did, which is a Python helper tool for micro Python merges. I don't think I've showed this on this deep dive yet but what it is is it's just a Python file where after you do a merge, you run this and it basically undoes a lot of the Git stuff that we don't use from micro Python. So like here's a list of the micro Python ports and we just straight up don't use them. So we just remove them from our repo. So we do that and then STM and NRF, we have to be a bit more particular because we share the folder names, which is unfortunate. But this undoes any changes we got from micro Python and some other stuff that we delete. So I just wanted to point out that there's this as well.  Yeah, the comparison to toilet paper at the start of the pandemic seems pretty fitting to me. But yeah, you're going to continue to see some software changes. So that's where we are on the merge. Because of the CI pass, I don't have much else to do on it. I'm waiting for review. Oh, let's highlight this. I spent hours undoing changes tonight. Thank God for Git. Yeah, Git is, I really like Git. Git is very handy. So Kmatch was in the chat earlier, and I don't know if Kmatch is around still. But Kmatch has been a member of our community for a while, the circuit by the community. And you've probably heard on this deep dive me talk about TinyLogicFriend, which is the idea of having a kind of a shared firmware for all the dev boards, so that you can use them with Sigrock, which is kind of an open source salier logical equivalent. So Kmatch has started working on this. Kmatch has started working on this and done some really awesome work. And Kmatch is in the chat, so everybody say thank you to Kmatch. I don't have a handle on Git rebase. We can, I can talk about Git rebase if you want. So this is a poll request that Kmatch just made. It was in the show and chill channel on the Discord as well. But I love this. Kmatch has done such a great job. So it says the objective is an affordable high quality, the object says affordable high quality development boards are now available to many users. Many of these boards have adequate capabilities for use as a logic analyzer, but need the ability to interface with available high quality software that can decode and visualize the signals. This tiny logic friend driver is designed to interface Sigrock and PulseView with a wide array of affordable development boards as a logic analyzer. In contrast to most Sigrock drivers where all devices capabilities are pre-divined in the driver, this tiny logic friend driver strives to rely on the board to inform the driver about its specific capabilities, pin names, sample rates, triggers, etc. So this is super, super cool because it means that once we have this, once Kmatch gets this merged in, and hopefully they'll be responsive, I've subscribed to the issue. But the idea is that once we get this driver that is not board specific checked into Sigrock, then we can just add tiny logic friend firmwares for a bunch of boards that all would then use with that one same thing. So this is a huge milestone. If we look down, you can see more status update information. And there's even a screenshot of iSquared C decoding. So one thing I was pushing Kmatch to do was like focus on the like super basic case of just like super slow iSquared C and just making sure that it can capture it. So here's an example of that. And so that's really, really awesome work. So thank you to Kmatch for really driving this forward and doing all the work really. I've just been giving my opinion. So yeah, if somebody wants to test, I don't know if Kmatch needs testers, but you could reach out to them as well. So that's super exciting. Yeah. So the idea here is you don't have to buy a new device potentially for being a logic analyzer. You just drag a UF2 of something onto a device and use it. Should be cool. Okay, super helpful opinions. So this is a this kind of segues into the the LED work that I did three weeks ago on the screen. So Dan has been doing redoing USB, which I think is merged in. Yeah, Dan merged it in. So I should advertise this before I talk about this next PR. So one thing we've wanted to do for 7.0 is the ability to change the USB device. So in boot.py, where is it dynamic USB descriptors? Here we go. The challenge is really compiling sig rock slash pulse view. If anyone willing to figure out building that, then I'm eager for testers. Yeah, that's why I'm excited to get it merged in because once we could get a release out, that would be really nice. So dynamic USB descriptors is really exciting. We've heard a lot of people recently from the Pico world who are doing like Mice and keyboards that they don't want the drive to show up once it works. So what Dan has done is he's added this API that allows you to this API is old. Let's not look at that. I don't know if we have a new example. I don't think we have a learn guide yet. So this is all in 7.0 and 7.0 is quite hot off the press. But basically for all of the USB classes, you'll be able to disable them so that they don't show up in the USB descriptor at all. And then that means going forwards, we could actually support more types of USB things than you can fit in a descriptor on a particular board. So you'd be able to say like, I want to disable HID but enable MIDI for example, or enable like I'd love to do audio over USB or even video. I think that would be really cool. So Dan's work here allows you to do dynamic USB descriptors. The other thing is that it does allow for dynamic HID descriptors as well. So the couple places that I've heard that is one person, like one of the folks at Tom's hardware is like on a quest to do controllers for the Nintendo Switch. And that requires a custom HID device. So this would allow them to do that. We haven't figured it out yet, but that's one. The other one is that's the case as well for interfacing with the that's the case for the Xbox adaptive controller as well. So I think that Bill from 18 Makers was like keeping his own version of Circuit Python for a while. Disciple says N key roll over keyboards too. Yes, N key roll over keyboards, but also we don't support the boot profile right now. Hi, Simon. So that one is as well. Unexpected maker asks what's the limit for how many descriptors you can have? So it's not actually the it's not the descriptor limit. What the limit usually is is the number of end points. And I forget exactly like how many end points everything takes. But the limit is usually end points. It's basically like hardware. FIFOs is the number of different end points. And I forget the details of that, but that's usually what dictates what you can have on and off. The way that this works right now is that if you try to set it up where you use too many end points, it will go into safe mode, which is not the greatest thing. But we'll see how it goes. We might have to tweak when that validation happens. But yeah, Dexter asked, is there a summary of USB end points slash supported by various boards? Or do any have USB audio? So I don't know where the summary for the end points is. There is a check in the CI now, but I think that might have been removed actually. Because yeah, Dan would be a better person to ask. It's definitely like a per chip thing, not really a per board thing. And then your second question, which is do any have USB audio? So no audio support yet, but I think tiny USB has audio support in it. Some folks have started adding that. So we use tiny USB exclusively in Circuitbython. So anything that we want to support in Circuitbython would need to be added there first. So that should be not as hard as some other stuff. But getting things into USB is right. Naradox says, disabling USB devices allows us to win back USB end points, to enable new ones. For example, the second serial on small chips with a small amount of end points. So briefly in 6.2, we had two CDC connections open. And we had some tooling issues on the software or on the host computer side that we hope we've gotten fixed since then. We wanted to get 6.2 out without that. So I don't know if it's on by default now. I'd have to take a look, but that'll enable it in 7 again, which people will be excited about. People are talking about air tags, and I really want to switch over to that. But I haven't finished my thought here. So Dan followed up with a build a Circuitpy Eraser variant, which is like for every board build a Circuitbython binary that only erases the file system and creates a new one. And I really just like this. And I told Dan that. So if we look at the comment here, it says I really don't like this. It has nothing to do with Circuitpython. I'd much rather factor out the useful bits from Circuitpython so that they can be used for other cross board software. And this is where TinyLogicFriend comes in. We have so much data in Circuitpython about the boards, like what flash there are, what pins, how they're mapped. Like I'd love to split that data out of Circuitpython so that anybody can use it in the same way that I did like the NVM-TOML stuff. It's like we just need a database of this data. And so I was arguing that if we do that Circuitpython Fat16 support, I think it should work if you have a drive that's big enough. But maybe I'm wrong. I also said it erases all of the file system when all we want to do, oh, so the reason that this is related is that this is probably trying to think about like if you're doing USB descriptor stuff and you disable the master storage and the REPL, how do you get it back? How do you recover? So that's where this is coming from is like what happens when somebody disabled those two things and they want to recover? So that's the context. I haven't even read fully this, but I said it also erases all of the file system when we really just want to disable boot.py which is where you change the USB descriptor and code.py to recover from USB miss settings. And this is what SafeMode is for and it's broken. And if it's broken on some boards, then we should fix it. That's what I said. So that's the context for this. Yeah, and distributed SafeMode. Lucien said, is there a way to force entry to SafeMode from the hardware? I've had to build versions of CircuitPython like this for peripheral related bugs triggered by code.py that hang without crashing to SafeMode or occasionally for code that does something like restarting too fast, like a code.py that just calls reset. Yes, there is a way. Ryan says there was talk about faking a larger flash chip to trick formatting into FAT16. I don't think so. The reason we were talking about that was for the Windows flush delay problem and newer versions of Windows 10 are actually have that fixed, I think. Like we actually worked with Microsoft. Well, somebody at Microsoft did the legwork to find somebody to fix that for us. Because Windows is not used to having devices that small. They think they're floppy disks. David says, not sure if it has to be in or out of CircuitPython, but I believe it if it should provide a safe UF2 file to restore the board to a working state or one to test the board outside of user error. If done here, it will benefit all of the non-NativeRootBoards too and every new board will automatically benefit from it. So that's where I want to have a good one on UnexpectedMaker. Thanks for checking in. This is what I don't want. Like this is the reason I would like to break the board info out at some point is like CircuitPython should not be the only place that benefits from having all of this board information. It's more broadly useful than just CircuitPython and like we shouldn't put things in CircuitPython just because that's what we need. It doesn't have to be just CircuitPython that has that data. Um, Nerodoc says boards without a status LED are an issue. I don't, are there any? So I'll show you what I've done. I've changed it a little bit. There are a race UF2s in the tiny UF2 repo at least. Yeah, erasing is such a huge heavy handed thing. I think Safe Mode like Safe Mode should work on every board. You're right that the Pico is weird but there's code in Safe Mode right now to check a boot pin which is used for the ESP32S2 which could also work for the Pico if you made it work. So what you would do is you would just hit boot in that period which is not great because pressing that boot button is a bit of a risk but there is actually CircuitPython to make it less likely to mess things up. Then there's the Nuke UF2 of course. Is it possible for those cases to have a UF2 that just writes some configuration bits that CircuitPython can then read? Like drop this UF2 to Start and Safe Mode and do it again to restore normal behavior. Yeah, Mototuba says my feather with the crushed status LED. What feather is it though? Because I was testing on the NRF52840 feather and it has both a Neopixel and a regular single color LED and actually the Safe Mode code already does this is that it flashes both the RGB LED and the single color LED. And I'm changing like three weeks ago we started this LED flashing stuff and that's what I was doing this morning that I made a lot of progress on so I'll talk about that as well. But what I'm doing is I'm making if you don't have an RGB status LED on your board it'll flash the regular it'll flash the single color one. Since you have code in the core to deal with LED animation should there be a Python interface to trigger that from user space? I'm removing it. I'm removing I'm removing the LED animation stuff so. Hugo says but if not just CircuitPython has that board info that means that anyone could use it anyone. Exactly. Like it's very useful data and there's no reason it needs to be locked away in CircuitPython. I think and the argument I was trying to make to Dan was like I know it's more work right now but I think like we'll pretty quickly find uses for it. Although that's what I kind of think about the flash stuff as well and that hasn't panned out. Like it's not really used outside of CircuitPython yet but. Sometimes things take time. Where are you reading comments besides Discord and YouTube? I'm reading the comments off the poll request. Oh the little one next to the mounting holes lost the battle of standoffs on the Feather M4. Feather M4 has an RGB LED too I think. Oh so I never I read this often didn't. So Nerodoc pointed out having a UF2 that could flip a configuration bit. I was thinking about that the only thing that's like the only data that we have is that's reliable is like the flash and the UF2 stuff can write the flash but it erases whole sectors so 4k at a time. So it's not like UF2 can really write like a bit to change something. So that's kind of a bummer. Ryan says I like the flash tumble it was great when I'd spent time struggling to add my own chip the week before. Oh good I'm glad that made that better. Can a UF2 app do that? You could have a UF2 file that wrote just one 4k block but then you have to take a whole 4k block to do it. UF2 bootloaders are good that they only erase in those 4k blocks which is what allows the file system to stay alive. Mark says I got my Adabox. Nice. All right so let's see let me reply to this. I don't think Lucien knows that on most boards can click reset in during a 700 millisecond window at startup to restart into safe mode. Which I think is true for the STMs on the ESP32 S2 that's the boot pinmate work that way instead. And based on Naradoc like we should we should make Pico do that as well because that's a good point which I don't think we do right now. Bad Abbey says I want to know what's in Adabox that made a personal message. Yeah no spoilers in the public one. And Naradoc I know you're in the chat too but I'll say like I don't think do we have any boards that have no LEDs besides the one that got crushed? Oh I thought UF2 could have apps like you write them to the OTA partition and run it without screwing up with the bootloader. Oh the show has no LEDs at all. Only the ESP32 S2 has OTA partitions. PyPicos do not have an RGB LED but they do have a single color LED which we should use for status. And if we don't then we should. Don't listen to Todd bot. Yeah so status LED means two different things like it's usually like RGB LED but also just a regular one. And the blinking to indicate that it's in safe that it's in that period of safe mode where you can click the button to get into safe mode that works that works both with a single color LED and an RGB LED. It's very rare to not have any status LED and even without it these safe mode clicks should work when a button exists. Um we should fix the Pico. Use the boot cell state. The ship who says PyPew10 has 64 LEDs but no status LED and PyPewM4 has no LEDs at all. Well it'll still work you just won't know when to press the button. Ryan says I've never had issues getting into safe mode without an LED. There you go. I think it should work. It's in the I'll even show you. Okay so um let's take a look at so what I was doing earlier today because all this merge stuff is kind of like waiting. I was working on so three weeks ago I had this task that I wanted to do was um oh David says also need to sell a bag with all the various kinds of key strengths and decide what we what click we like. You can buy those from keyboard source. I have one of those already. And Mototemo says it was the charging LED that got crushed. This ship who says they also have no reset button so no problem. All right well I can't design every board that those were decisions you made. Um I wonder I wonder if we should have a flag that just says don't let someone change don't let somebody change the USB. Maybe that's what we would need for the like here's a board you simply can't recover from. We should just say like you can't do this on these boards. All right let's look at my branches. As always I'm getting distracted. So um why is it 200 oh 2382 oh that's right because I'm not basing up. This number is going to drop. We're going to be within like 100 commits behind a micro python I think. Um Nerodoc says can we read the boot sell status though. I know they had to add electronics to be able to read it on the 8 of 2040 boards. I think you technically can it it just you have to be careful that the code that does it is not on the flash. Um so yeah it would it's not a simple change because of that but it would be possible to add. But yeah that's a good point. A lot of people have picos. Let's look at this commit. So this is what I was working on three weeks ago where we were talking about like the flash pattern and in fact let me just show it off so I have the overhead going. So um the yellow flashing is because there's no battery connected. And under here under here there's a a feather nrf the same one I was using three weeks ago actually. It's been sitting on my desk blinking away. So uh the the green single flash uh for those of you who haven't seen this is the new so the new way that the status led will work on circuit python with seven is that it will only blink to get your attention. So when your code is running it does not do anything. Um but when your code's not running like in this case um it will blink every five seconds. I think it's five seconds. So uh it blinks green in one blink every five seconds if you're in a state where your code's finished but it finished successfully without error. Um so if I pull up so this replaces all of the like tell me what exception it was and what line number I deleted all that code and in fact I've deleted a lot more code which I'm very excited about um because there's another axiom or kind of another property of this change which is uh we don't change the status led at all um we don't use it at all while user code is running which means um we can actually deactivate our status led mechanics completely while user code is running uh which means that we don't have to worry about sharing in use stuff at all um which is very very cool um I was able to like delete a bunch of stuff and we'll see when we look at this code but let's just show how it works so um here's the code.py which you can't see so here's the code.py now it's actually just empty but what I can do is I can raise an error in it and hit save and then we get two red blinks so and so it the way the pattern works is that it the the blinks happen at the start of the time span so it's actually quite responsive so if I hit like save and trigger it and save and trigger it it actually you like it blinks pretty quickly after you write to the file which is actually really nice um but then if I go here and then it's green again so it's like I didn't expect this and we discovered this three weeks ago is like it still feels quite responsive um to me at least even though there's this like blink and then wait five seconds um and the reason that we wanted to switch to that is that um if you have a power a battery powered project and you accidentally get into this mode of like your code's done for some reason which is where we are um we didn't want to have the led like constantly on because that would drain your battery um so what we prototyped three weeks ago was this flash pattern of like we want that gap that five second gap to kind of be long enough it's far enough apart um sorry I can make my code bigger it's really just says runtime error I was just commenting this on out and off I'll I'll make the other one bigger too um so what it is is it's one green flash um and then one green flash if it finishes okay two red flashes if it finishes with an exception which I'm just raising an exception here and then it will also do three yellow flashes if it's in safe mode so let me eject and I will just click into safe mode doctor says this whole saving it happens thing is so cool much better than right compile upload wait are doing your restart see if it worked then have to make a change compile upload wait oh what were you looking at the camera view yeah so um I'll show you so what I have here what you're seeing here is this is led acrylic it makes the led flashing actually like easy to see um and it's actually not that bad there either so here's the it's the feather nrf express and I'm not using the debug stuff at all um and so what I'm going to do is I'm actually just going to reset and what we'll do what we'll see is that there's a yellow what's the easiest way so there's also a single led here so if you watch if I hit reset oh you can't what's the best way for you to see the leds if I hit reset you see there's this like pattern at the start that pattern is the like you could do safe mode so you see those there's yellow flashes when I hit restart that's that's if you want to get into safe mode so if I do that I watch for the yellow and I hit it now I'm in safe mode and I know because it's got it's going to be doing three yellow flashes is safe mode and see if I put this back on it makes it easier to see so there you go that's safe mode that's testing three safe modes ah the ship who says pew pew and four has a speaker I wonder if I could use it instead of a status led I think so I think that would be cool um because I what I did is I we had this safe mode flash that also did the single color led but I just changed the code so that if you don't have an RGB led it will use this the the single color led and let's just test that um so let's pull up the code here I messed up my mouse I had this proximity thing are the colors for the status led in a hue that is distinguishable to folks who are colorblind no they're not but the number of blinks is different um hot top that says put a dab of hot glue on top of your led is a quicky diffuser dexter says having the error messages appear on the tft feathering is also way cool yeah can you raise safe mode you cannot raise safe mode but you can reset into safe mode um so yeah the the the colors don't actually matter the colors are kind of a bonus the number of flashes are what actually matter so what I wanted to show is that if we pull up so we're doing a feather nrf so if I do ports nrf this is a good test boards feather nrf 52 a 40 express and then the in the .h file and it's giant so we'll see that there's this hardware neopixel but then there's this also this hardware led status so let's see how the behavior changes if I comment out the neopixel so we'll rebuild it and now we've got to do our quick oh it doesn't build I have a bug um rgb status brightness all right let's figure this is exactly what suddenly we're deep diving um I'm going to make this a little smaller so that I can see more so the bug is in status leds so I've reorganized things supervisor shared status leds brightness oh interesting so brightness is different depending on what you have pwm full brightness so what what there is now is there's these ellipse for the different um the different possible ways of doing a status led so neopixels the first thought starts the second rgb pwm is the third and then lastly if you just have hardware led status it will use that and this is where we need to say so this I we also have rx and tx led code that I left in there rgb status it doesn't matter what this value is let's just do ff so that's what we need and then basically in there's um this new status color call and you give it a give it a color and it tries to do the color but at the very end if it can't do anything if it's just doing the single color it just says if the like brightness adjusted value is greater than zero then it turns it on um so that's how it like takes code that's written for different colors and just boils it down to on and off um so which is why you also always need to blink a different pattern but I think that's actually like should be really good and that so brightness doesn't actually impact the single color we could change it to a p a single pwm which maybe we should do um if we want to be able to change the brightness but for now I just did it as an on off all right so we have a new build and now I gotta so for those of you new to circuit python here's how you load a new version so I'm gonna hit reset again but I'm gonna hit it even faster than I did for safe mode and that's gonna put me into the bootloader so this is not a function of circuit python it's a function of the bootloader that's on here but most boards that run circuit python also have this bootloader um so let me see if I can't okay so here's my uh circuit python ports nrf build folder for this feather and there's a firmware.uf2 that was just built so it's the one that I just got so let's just drag that over and now what we're gonna do is we're gonna watch is that blurry there we go so now it's copying over and now now we don't have the status led but the the red led here is actually acting as the status led now so it's gonna be flashing the two errors like it'll flash twice for two errors and now if we open it up hit code up high comment it out hit save now we just get the one flash it was very blurry sorry about that do I have a bent pin bent pins happen you bend them back as in just treat it as a neopixel and hope that different color data will sound different it doesn't matter it's it works just with beeps now it doesn't the color is just for those folks who can actually see color it's not required but speaker is actually a great point and we should do that because if we supported speakers we would work for uh folks were unable to see or hard to see um so yeah I think I think doing sound would be cool I'm not going to do it immediately but I think we could definitely do that here um so that's working which is great um so we fixed one bug and let's take a look let's pull it back up too many browser tabs so let's see how the build is doing hasn't even started what is it running yeah this is not my personal one hasn't even run yet just unfortunate um you'd think four monitors would be good enough you'd think right I only got one but it's ultra wide um so let's go over I just want to go over this code if folks have questions please ask them these are kind of like as deep as I'm getting so here's the changes to main so I combined we had this rgb led status file and we also had status leds for rx and tx leds and so I merged those into the same file um we don't need to reset status leds anymore we don't set a color when main is running and this is just a found made is only used in this other the fold build case um when we check for double extensions um I and then I retweaked this um maybe it's easier for me to show this in run in the regular file so there's this loop here so this is in run code.py this is the thing that runs your file so it's managing kind of all the things around running the actual file um so it's figuring out what files to do it sets up like memory um and usb and then maybe run list uh like runs the file um and then then you're done and you'd say that like the code is done so this is all the like the messaging around things running and so what happens here is after you're done running code.py what do you do um um so here's some things we might refresh ePaper so this is we do this immediately for display io but for ePaper where you like are pretty limited and refresh speed um the displays will show any error messages or it will show that it's done um so that's here and then this is the led led state stuff um I don't think no we don't need this part I don't think we need this I re I reworked the stuff below um so here's just figuring out like based on how the code finished what to do so if there's no safe mode and we we finished okay then we just do all done blinks which is green and one safe mode is yellow and three and then exception is two and red um and then we this is all like timekeeping around it um and then we status led in it here so this is when user code is not running so this is what makes me able to delete a bunch of stuff further down um which is if we're gonna blink we just turn on the led so we initialize it now this is when we grab the pins that we need um and then now what we do is we we sit in this while true loop waiting for something to happen whether it's uh a reload so this is like if you save a file this kicks out it will get here and kick out of this loop um if you do a control d this is what you get this is how you get into the rebel um and then there's more if you if you're doing sleeping and you're fake sleeping so this is if you're on usb but doing a deep sleep this get this is how you wake up um if you're if it's in the state and you connect the usb we try to wait to tell you that it's done that's what this is doing and then there's two final states there's either like if you if you can sleep and you exit exited with this deep sleep state which is how when you go into deep sleep in circuit python you finish your code and and after your code finishes it sleeps for you um but we have this uh delay so we give usb time to connect otherwise it can actually you can deep sleep so deep sleep doesn't maintain usb so if you're not careful you can actually deep sleep faster than um faster than you can connect to usb which is again that thing that gets you into the state where things don't work um johnny says what happens when code is run is that it's displaying some hard work from the weblit gang yeah all of these messages are all translated so thank you to the weblit gang for that um so this is like keeping track of like how far from startup we are um and if we're already fake sleeping then we just continue to pretend to sleep if we're not fake sleeping already that means if if we waited a long long enough to see if usb is connected um then we set the neopixel a little black in case in case it was on but it won't be on it won't be on in this case so we turn the board off and then depending on whether if usb is active after this period of time if it's not we can actually do real deep sleep which is like turning everything off um and then uh pretending to deep sleep is we tell you we're going to pretend to deep sleep and then we just set this fake sleeping to true and then it's going to loop around the while true loop and it'll come back into here um otherwise if you're not doing the alarm here's what happens and this is the stuff that changed so we checked if you have um if we have to longer to wait before we refresh e-paper um then we try to do it and if it doesn't work then it returns us a value um it used to be a bull and then if we're if we don't have a status led then we say um set a set an interrupt to wake us up when we can refresh it otherwise if we have a status led we get the tick difference so this is from the when the pattern started um and then we say if if we're the start is when we're blinking so if we're in the start period figure out which phase of a blink we're in so just mod it by the blink time if we're greater than the single blink time then we know that we're off um and we can sleep until the end of that single blink time so we can sleep until we want to wake up and turn on again otherwise if we're after the single blink time or no if we're less than the single blink time we set it the color to the blink color and we sleep until we want to turn it off uh if we're outside of the blink time if we've gone over a total time then we reset and start the pattern over otherwise we sleep until we're going to reset um and then this is just if if we have both e-ink and display we want to sleep the minimum between the two so if time the next change is that we set our alarm this is like a time alarm and then we idle until it interrupts so this is the case where like nothing else is happening we want to make sure and wake up and then they also switched it so it used to return straight from this loop now it breaks and the reason it breaks is so that we can do things like set the status color to black so turn it turn the neopixel or dots are off de-init the stuff so it's no longer in use and then if we were fake sleeping we also initialize the board again and then we return based on skip repl um so that's all new that's all reorganized code um so if we pull up the browser again you'll see that like we used to have this rgb animation stuff which is a weird way to factor stuff out but i think it's simple enough as is that um it's okay so that's what the the diff looks like and that changes the behavior and i renamed the in it rxtx leds so david asks um what is the blink when waiting for a uf2 file is that in tiny usb is it compatible with your new blink so all of the stuff yeah so i'm only changing the blanks once circuit python has started um the blanks in the bootloader are up to the specific bootloader um so not really tiny usb but um tiny uf2 for the new stuff or the older nrf or same d board uh bootloaders does the pi pico work with usb 3 it should any way to slow down a crash reset loop a crash reset loop should still um are you talking about circuit python specifically because uh that there's a seven well we'll see it here further down so i changed this variable so this is look at all these deletes i did so uh let me collapse these as i go through them 32 files changed 485 additions 1100 deletions that's what i'd like to see so i renamed this here's the deletion in pies in bus i o spy so spy used to have to worry about if you were sharing with the dot star but now that we're not doing any rgb status led stuff we don't actually have to worry about sharing anymore um although i wonder if that's true if you had the dot star on the display bus you could have a problem but i don't think we have anything like that um so here's a bunch more deletes and pins so this is like we used to have boolean variables tracking it all of the in use stuff that because the hardware state wasn't reliable so deleting more of that so this is all just deleting this in use stuff and a rename and i'm turning it back on this had a avoid using them to save energy but now the blinks are different i think it'll be better to have them on another rename another rename this is more pin deletions so i'll just go through that in deletions so here's supervisor this is just changing the call to status brightness e-paper changing it from a bool to how much time is left i should probably test that it compiles though i turned off we used to flash um we used to flash on writes and i turned that off um this is what we simplified last time all the colors deleting the file safe mode so this is what um yeah so dexter's saying anyway to slow down a crash slash slash reset loop you set pdm frequency to zero and code a pine it went badly um so this is what say safe mode is meant to save you in that case and what it does is there's actually a 700 millisecond delay so this is a delay here where we're waiting for a button press and if that button press occurs will boot into safe mode and this is code that's shared it's in supervisor shared safe mode so it should run on all things um but there's two ways that it works um so again just like the the weight thing it's actually knitting the led and then de-knitting it when it's done with it um and so here is this is the flash pattern this we there's like magical statement tells us whether we're on or off and here you can see here we're setting the color or not um and then we're also checking a boot button so this is what i was talking about we could improve for the pico is that um we would want this code here to be able to check the boot sell button on the pico so it's kind of this delay helps two things one there's state that it sets earlier this um safe mode data guard manual safe mode this sets a flag in memory that that should be persistent across resets such that if if a second reset happens when this is set it will detect it earlier on here so first it says there's this port get saved word and then we say is the reset state right so if reset state ended with the data guard is equal to the data guard so if if the bits around our state are what we expect as the data guard then we read that value and so that's what safe mode is and then we say if safe mode is not safe mode set the data guard so we'd be out of safe mode next time and then current safe mode is that and then we return so that's how on the second pass hi dave um that's how the double how a reset of the chip gets you into safe mode this is the same trick that is used to double click into the boot loader except um because the boot loader has this a delay that that's why the safe mode delay is slower than the than the boot loader one um so that's how we get into safe mode via reset and then we also have this way of doing it via boot and this was added for the s2 i think so in that in this while loop for 700 milliseconds which is actually ticks and ticks are slightly smaller than milliseconds so it's not quite that we're also checking the value of a particular boot pin and that will kick us into safe mode as well into user safe mode in particular which is slightly different than slightly different than manuals safe mode i guess um so that's how safe mode or should work and it should work on all boards although i guess folks are pointing out that if you don't have reset reset or boot then you're kind of up a creek um but yeah the problem the problem with the s2 is the s2 doesn't have a reset button the or the reset button doesn't save any state across presses is the behavior different when connecting to a computer or powered by a power bank no this safe mode stuff is way before usb gets started so um it should be the same regardless but yeah so this is the real way i'd like people to recover and if there are boards that can't do that then we should figure out how to how to get that to work even if it's just like a separate pin potentially um but yeah so that's the change here overall this is looking pretty good i think i have a couple changes and then this is just integrating the two together oh look i have two copies of the license i should get rid of that it's good to review two copies of the same license 2017 double license double safe we'll even put the new one too i need to track down a power bank that supports ultra low power draw yeah that can be a problem okay so let's just look at the last remaining bits of this pr and then i'll send it out and folks can test it i'm hoping that it builds in all cases i'm not sure this is okay i was able to delete some stuff here as well oh it's not detecting that it's a move it's unfortunate that's okay pretty simple pretty simple okay i'm happy with this so i'm gonna cheat and well let's let's cancel this we're not it's not even started we're not even gonna use it let's save some some electricity let's just make sure that it compiles any other questions oh i do have one other thing i could show i'm just making sure that it still compiles still add it i'm gonna be naughty and amend the previous commit um alvaro did you want me to talk about rebase i don't remember when i did it last but i could are there any new nope i think this is all already up to date like the last commit is a different main still i'm just gonna push a new version i don't have a lot of other stuff to talk about i could go over the 14 and 15 mergers but i don't really they're they're really not interesting all right so i push that let's i'll make the pull request how much space do we win that's a good question um what board do you want to try it out on doctor's gonna be right back so nrf feather we'll see how much space it is a tiny one in german cutie pie okay i'll do that next this shabu says trinket m zero my numbers are a little weird i have better numbers than the ci does because arch linux does their own copy of the arm gcc toolchain and dan figured out that the library that we link in is on arch compiled with dash os um i've heard git please is used used as a proxy for force with lease all right we've got some atmel requests i got i think we got we could do both we could do trinket m zero and trinket m zero translation de oops all right well we'll get this is the this is going to be ideally the larger number i notice you don't do os when compiling why not we do os on the smallest boards we do not we do o2 on boards that we have space because it runs faster that was a dave putz did that but yeah we do os generally uh like for these boards they're definitely os okay so this has 31 24 bytes so let's check out eight of your main 31 24 i'm gonna you you all remember that okay so that i'm getting that number from this line this is how many bytes are used here's how many bytes are free in flash out of this total number of bytes and the reason this is not 256 is because we use the remainder as the file system um so now it's clean again and rebuild i love this i love this computer oh look at that holy moly 1200 bytes i broke a k that's good news so this uh on main we only had 1900 bytes so we're gonna get about a k back which is exciting oh no here i am fidget fidgeting with my nail clippers alfred asks uh just wondering how do you end up working at ate a fruit jimmy cricket batman nice um so i ended up working at ate a fruit let me do cutie pie what is the name of the cutie pie board is it just cutie pie cutie pie m zero um i worked at google out of college for six years and then i took a year off and i did drone hardware flight controller hardware and i also ported some open source flight controller software to that hardware and i was going on ate a fruit show and tell i was watching a lot of fruit stuff because i was um doing all of the hardware things so learning how to do tests and things like that um so i was going on show and tell every week to show off the progress i had made and then kind of like after i got all of i got the products done and there i was set i was trying to sell them and i wasn't able to sell them like it was a is well engineered product but it had did not have good product market fit it's the term for it um and so i went on show and tell and i said hey i'm looking for a job because i was starting to starting to talk with google again and i was talking with spotify like looking for a real job like a 40 hour a week pay me on a regular basis sort of job so i went on show and tell and you can find this show until if you look back on youtube like it's like august early august of 2016 you'll see when i go on there and um phil had my email and like the next day i got an email from phil saying like hey we have a project in mind are you interested in in it um and i said yeah yes please and i kind of dropped everything i was doing because at that point like the engineering was done and i was ready to um ready to do the more interesting stuff um and uh okay so 2024 is the is the smaller of the two numbers here um and uh so yeah so phil emailed me to get micro python running on the micropython getting running on the sandy boards which ater fruit had already released some sandy 21 boards at that time and i actually had one that i won on show and tell you used to be able to win a product on show and tell back in that time and so i had like the m0 blue fruit or something and um i also had an arduino zero and i just jumped right on it and that was the first project i got and then after that project went really well i kind of went to them and was like look i'm i'm actually looking for like full-time work and they said oh we don't actually do full-time remote what we do is we do um contractors but on retainer um so that one only got 800 bytes i'm getting distracted um so yeah that's they put me on retainer at that point i had already like started my um company so i have an llc called chickadee tech and i had already like gotten health insurance in the u.s and because i'm in the u.s and all that stuff so i had i had all of the company stuff set up and i knew how to do the tax side of things and in fact taxes got simpler because taxes on real products are really complicated um so yeah that's kind of how i started and and that's when um micro python at adafruit kind of got going and um so that was uh 2016 in the fall and i can't we haven't kind of looked back since we just got more people more people hired maybe the new code for running arbitrary files on reset will now fit is that the um on next reset stuff python looks like the popular programming language at the moment yeah so like this is like micro python why recovering only 812 i don't know um i don't know what the context is or like yeah we could we could dig into it but i don't really want to it's ready um yeah whenever we free up spaces this is what people think of like what can we put in it now yeah i asked um i asked lucian to actually pick up that code because i would like to get it in for seven it's also our oldest pr um yeah and then naradoc points out that npy format v5 has reduced the file sizes even more than v4 so that'll come in with one that's in with 112 we should we should update the bundle build um johnny says so m0 has room for f-strings now you all just want to use space remember this number here is higher than what you're going to get in the ci as well because um this is what dan is looking at or he was um due to the like gcc library being os instead of o2 on my builds um as patrick asked did you ever talk to the flight test folks on youtube about your drone work i did not i did actually get a review from oscar lang though i think it's like one of the drone folks i was really by the time i was done with the the drone stuff i was really burnt out on the community like we had a community here in seattle and i have a good friend that i got out of it but it was a bunch of dudes and they weren't super considerate of other people and it was kind of like always this like going for the best thing but also a race to the bottom of the cheapest thing as well and it was just like as somebody who was trying to sell something that was not cheap and not made in china it was not yeah not cheap it was tough and it turned out like the product itself was it was modular and modular is actually really expensive like the the the direction flight controllers went at that point and and further was like all-in-one boards rather than like modular boards like mine that were just like way more expensive bad i'd be pointed out the payonora is almost funded um yeah i got uh i think i'm going to be sent one i i already funded it so i'll get one at some point um oh they're close um how much four days left yeah so this is really cool and this is something i want to do at some point i want to get circuit by them running on this this is uh an idea that timon and i had chatting in person at super con i think was i was pushing this idea that like we need a raspberry pi compute module and then arduino uno form factor really blurring that line between like raspberry pi stuff and micro controller stuff there's always room in the market to charge for more for premium yeah but it actually has to be worth it for my stuff i don't think it was actually worth it you're not encouraging my open source satellite flight controller project yeah well the drone the like quad copter racing community is different than the satellite community i'm sure but yeah i should be getting a payonora at some point and i have been thinking about revisiting the raspberry pi bare metal stuff because i think that would be really cool but i've got to do i've got to do this bili stuff so what i was going to say is i hope to do the bili start the bili workflow stuff next week and if i have time that's what i'm going to do um this shippu says i want a raspberry pi compute module in the trinket form factor it'll happen it's only a matter of time before things get that small but yeah i think the thing i want to do after bili is i'd like to get circuit paper running on on the raspberry pi platform because i think being able to put making it really easy to display things on the tv would be really cool um which i've also talked about so i want to do that at some point but the bili workflow stuff's more important uh i've been working with trevor still and we also are um because adafruit starting to kind of pick back up adafruit starting to hire more people and they are have allocated some time to uh a contractor that they've worked with in the past for ios and android development um antonio is the person who's doing that so we're going to start working with antonio and um hopefully that'll make the ios and the and the android side of the bili workflow stuff go faster um so that should be really cool we should make progress on that um which means that i have to revisit all of the i need to make it actually native um so that's kind of my next step for the bili workflow is actually getting and being in the main the main file here was really handy for that as well oh we had 10 minutes left i'll show off something i know patrick's in the chat and already saw this but so i talked about it briefly i think last week or the week before i was working on this law project which is totally unrelated to circuit python or adafruit um but i did get kind of to the point um alfred's the second person to ask this alfred asks where does adafruit post their open jobs so um if you're in new york city and interested in working in like chipping kidding manufacturing testing um you can email pt at adafruit.com which is not me but email your resume to them um otherwise if you're looking for remote work it's usually through our community so start participating um and show and tell is great and the discord's great um and that's kind of where we look i don't know for hiring anybody in that role right now so there's like absolutely no promises for any of this stuff um if there are jobs that we can't find somebody for the adafruit can't find somebody for they'll talk about it on their shows as well like there was like a php developer for a while that they were looking for for example they would talk about that but generally they don't actually have job postings because a lot of a lot of the hiring they do through referrals as well so like for most folks in new york they're hired through other people um all right so um this is the law project i think i showed or talked about um naredoc says how does that work internationally um adafruit has remote folks that are international um so they are willing to do that for like tac the who does a lot of the tiny usb work um he's in vietnam and antonio antonio who we're working with is in spain um so i think generally generally um international for remote work is okay too but again like no promises we make no promises about hiring um like it's it's a relatively recent development the adafruit starting to hire people in the in in new york city again but that's because like they've seen sales pick up and they need more help shipping stuff out um so no promises but um they're very like there's a number of us that are remote like all the people that do learn are remote there's like three of them there is like john park noam pedro like all of a lot of the people that you see on streams are all remote um and guide authors are remote as well and some of the support forum folks um i think that might be actually something where we may be looking to hire is if if folks are in the support forums um i think there was one person they were adding to to add some time there so that might be a chance to okay so to wrap up this is not related to any of this if you have questions i'll answer those first so the revised codes of washington this is like when laws are codified it's kind of like somebody's aggregated all the laws that have been passed and kept track of which ones are still active so um that's what codes of law are uh i live in the state of washington so this is specific to that um but what i have here is i have a project that i meant to um is meant to make it more obvious what the laws are and how they're going to change um and so this is git lab not github it's an open source competitor although github is way bigger but it's like if you wanted to host it yourself or uh have open source access to it git lab is the thing you go for so this is a version of git lab that i'm hosting on a like 20 dollar instance at um digital ocean so it's going to be quite slow um but it shows the proof of concept and so all these accounts that you see here are fake in the sense that i made them all um but that's what running my own git lab gives me is that like usually git lab or github charge you per user but like i'm just trying to mimic a bunch of users i don't need i don't want to actually have to pay per user because i'm going to make like 150 200 if i ever get there um so the thing that is really interesting to me is actually the way that we can show how the law will potentially change so there is two outstanding um bills in washington state for changing the rules around uh public utilities providing broadband to people uh specifically allowing public utility districts to um and for those of you who don't know what that is that's kind of like the people that will uh manage and sell like water water sewer garbage electricity that sort of like utility stuff um and so there's two there's two different bills here and they have different kind of conditions and the last step to making a a law in washington state and most states is that the there's two legislative bodies that amend and approve it and then once those two agree then it goes to the governor which is like the executive um and so that's what these prs are showing here or mrs in gist they're requesting review requested from jay inslee who's our governor right now um um and so what i imported this is i it shows that see it's it's slow because it's just like under provisioned but um interesting that this is listed twice um so what you can do here is you can actually see a diff of how the laws will change um based on the bill text so it adds a thing that says a second class city which is like so it's title chapter section like however they define a second class city like it can do broadband stuff is what this does and then um this does the same thing for town and then this is uh general provisions for counties so this allows a county to do it as well so this is the better of the two bills in my opinion because it gives broader um authority for people to to develop broadband and sell it to consumers um but here you can see like how some sections actually change and it's interesting the laws as they're codified in washington they actually have a list of like all of the bills that changed it in the past so it's like get blamed for loss kind of funny and then this is changing like how port districts can do it and the last one is public utility districts so public utility districts can do it as well um and then also you can there's four different revisions of the bill from what drew initially uh like offered up and then what got when it's it's a bill is substituted if uh committee committee changes it it's engrossed when like the chamber itself modifies it and then bill as passes the legislature is if the other alleged like the other body changes it as well um so you could also click into this and see like how it differ not a differ in the current laws but a differ how the laws evolved just in that time um so yeah this is kind of was my side project for more government transparency and if we look we could look at the other bill the next step on this project is kind of like to get over the hump in terms of like i've got the get commits pretty well done now but um what i don't have is like integrating all of the like mechanics around bills like committee review and stuff into like the the history that uh like get lab would show like all the notes on the merge request is kind of like the next thing i would do but i don't know if i'll do that we'll see there's no rush because we just end all the laws are basically done being made for the year except we're waiting for the governor to make decisions but the legislature itself is is is done for the year but here's the other one and this is the competing one and you can see here that it doesn't do anything for towns counties or second class cities so it's the inferior one in my opinion there is the the only other thing about for those of you in the u.s at least a common thing for broadband legislation is this idea of defining underserved areas so like it specifies like a minimum upload and download speed as like because one of the ways they incentivize yeah here's unserved areas hundred hundred up 20 down this is there's an argument a common argument around broadband policy in the u.s at least is whether like cities and counties incentivize private companies to to build out by providing them local monopolies and the problem with that is that it excludes competition so it would it it could allow somebody who's in an existing area to prevent another company from coming in and building probably better probably better stuff and so like this this number actually matters a lot thanks Dave this this number matters a lot because it it it kind of like it's the metric and I don't think this bill I think this bill had it and they removed it but um which is good I think they're yeah it's hard to see but it basically allows like the the person who is already there to like veto anybody else from from doing it which is a huge problem um so but that's what these unserved or underserved metrics are usually about is like if an existing provider is there but they can't argue that they're doing this then that's a problem um and like that that doesn't give them the ability to like veto anybody else from coming into the area um so 100 100 down and 20 up what does starlink get it's only a few hundred up and down I think um but the numbers here have a pretty big influence about what technologies are able to do it so like these are these numbers here are within the range of what you could achieve arguably with either cable like cable can go up to a gig or two if it's the newest version of cable internet um but like wireless may have trouble getting to those higher speeds so the number here matters a lot in terms of fiber deployment which is what I'm like all about like people should have fiber everywhere because wires are always going to be better than wireless um Linux 203 says not sure if it's still true but AT&T used to claim anything over 56k was broadband so defining broadband is cool yeah so the older definition of broadband was the previous one I think it was 25 megabits down and three up um so there is a revision there was a revision on the other bill that went from caused it to be from moved it from 25 three to 120 um but I think a lot of people would argue that's still not enough because the belief is that that fiber investment is really where the money should go because fiber has this awesome property where um uh the fiber itself usually applies to multiple generations of the hardware the electronics on the either end of the fiber which means that um you don't have to change the cables to get faster speeds and fiber can go can go real fast like the latest the newest version of fiber is like 10 gigabit symmetric 10 gigabit symmetric um yeah so by this less than 120 is underserved I feel really at odds with that as we have 50 25 and 50 50 at our two locations and it's 100% meets our needs even with live media streaming 25 down is enough for 4k streaming so I think I think where you get really into the high speeds is actually um concurrent people in the same household um like one person 4k streaming may be okay with 25 but what if you had three people or four people doing 4k streaming um and then the other thing is like really what in practice does that get you like wire investing in wireless hardware is actually like not as future proof I think in my from the podcast that I listened to they believe that investing in wireless is like not worth it compared to investing in fiber the the the worst part is that there's there's a program called the emergency broadband benefit ebb that was passed in the first of the bills in um in the US here and the ebb allows low income folks to just basically get subsidized internet um and that's great in the short term but it's basically paying providers for what they have existing whereas I think a lot of a lot of the hope is that the the subsidies or the the money that we get for the money that we get for broadband from the like jobs plan goes into like physical physical things like actually laying fiber and things like that anecdote it says there is no cable or fiber where I am AT&T won't even do new DSL installs handslabs says I'm in a zip codes which is among the lowest medium income zip in New York state and there is a company building out fiber and offering it inexpensively it should be turned on sometime in the summer lots of refugees entering from Canada land of my neighborhood interesting so um I'd be curious what company is building out the fiber mr certainly is 100 for wired fiber instead of wireless Linux 203 says I have six users at my house all consume streaming media concurrently yeah what internet do you have with that are we getting our personal 5g hotspots with our vaccine no you know you're not um oh there was a question about doing this in other states bad abby said how much effort would it be to expand this to other states I think a lot of effort green light networks nice I think I recognize that name actually from these podcasts I've been listening to sounds like you could get your it sounds like you're in a good area which is awesome um yeah so the git lab side of this might be useful for other states but like all the data that I'm pulling in from Washington state is all in some custom system um right 5g will actually drive 10 gigabit fiber because the cell towers need a lot of bandwidth yep right that's another thing that comes up is like some provider like they just had I've been listening it's like community broadband bits they just had some people from Colorado where they talked about like to get faster internet to folks they do wireless first they run fiber to the towers and anybody along that route can get fiber to their house as well but then like the people off that route can just get like faster wireless then um I'm looking forward to using up my monthly cell data in one day nice yeah so there there's definitely like a movement for better broadband like the pandemic really showed that the us is quite under under search generally for that and if folks are looking for a project I was talking with the person who let me move this off screen but um the person the podcast I listened to come from the institute for local self-reliance and I was started following the guy Chris Mitchell who does that and we had kind of a back and forth there's there's a need for an open source map in the US of where different technologies are used for internet access um let's see yeah so that was one thing I was like oh maybe I'll take a stab at that because that's that's one of the questions providers have is like where should we go to give people better internet um yeah so if folks want to follow community community nets here there's all sorts of words city of 3300 couldn't get 25 three from the big companies but they couldn't apply for grants because they lied about the service that's one thing actually that's nice about this washington law is that it it's saying that a minimum bandwidth versus um yeah import it into open street maps and let it become community maintained yeah I was thinking about that one thing I was thinking is um pole availability whether utilities are on poles or not could be something that open street map could map um because digging underground is is a lot more expensive um yeah so community nets and then they talk about the podcast on here too if you're if you're interested in broadband policy I'd recommend taking a look at that good night to shippu all right let's wrap up the FCC doesn't have a map showing speeds a lot of it's private um if you find the conversation I had with Chris he was like he pointed to a podcast that was from last month april where they talk about the fact that a lot of the maps that the FCC funds um are not publicly available um cable speed keeps going up here I think I could download about 150 megabytes all day megabits remote education with a laptop or tablet really showed the disparity four or five different languages for vaccination that's amazing is the show still live it's only for a little bit longer there is an FCC thing for doing a speed test oh but patrick is that data open I don't think it is it'd be nice to figure out where fiber was in from where it's not even if people have a wire sometimes it could be over a wireless link in in between libre speed yeah so the yeah there's there are lots of disparate data sets but there's no it's open as you're willing to pay for it yeah um yeah so there are some disparate data sets but like I don't think anybody's aggregated them together um all right let's wrap it up I'm calling it thank you all again for joining me on yet another deep dive we've wrapped up the merges or the merges will wrap up next week but not a whole lot work bought a work left there um support the payonora I just had it up um if you're interested in this weird world between the raspberry pi world and the microcontroller world the payonora is going to be really interesting for that um the led stuff is sent out which is good thanks again to k-match for the tiny logic friend reach out to k-match if you want to help that um also thank you again David dcd for doing time codes really appreciate it every week um and then busy week next week for me doing paycon stuff I'll cover that on Friday talk talk all about it but then um hopefully get all the merge commits in that that would be a good goal and then the led stuff in and then once that's in I'll be back on belee workflow um so yeah that's where we're at um if you want to support me and support Adafruit by going to Adafruit.com purchasing hardware there uh if stuff's not in stock sorry about that um there's lots of chip shortages and things if you want to keep talking with us uh all week long please join our discord server the Adafruit discord server we're going to the URL adafru.it slash discord um that's where I am during the week and lots of other people are as well and I think that's it uh thanks again and we'll see y'all next week on Friday oh and I should pet the cat like I always do you want some pets all right have a great weekend everyone


A police officer has been shot by gunmen suspected to be kidnappers along the Auchi Gara Road in Edo state. The operative, Suleiman Mohammed, is attached to the Eghara police station in Akoko Edo local government area. The incident occurred Tuesday night. Vigilantes rescued the policeman and took him for medical care. The gunmen who carried AK-47 rifles ambushed and shot Mohammed at close range. Bullet hits his arm and stomach.