 All right. Good afternoon. Happy Friday to everyone. Welcome back After we did not make it too far through the stream last week Anybody who is watching will know that I got cut off My power went out It was about it was out for a little bit over 24 hours last week and then it came back thankfully And we're back this week knock on wood fingers crossed. There's no The armor any kind of issues hopefully for right now. So hopefully we're good to go And we're gonna give it a try again this week For anybody that is new or did not catch last week or you don't know what I'm talking about or who I am or anything else My name is Tim. I go by filming guy on GitHub and discord This is the deep dive live stream program, which is a weekly live stream where we are working on circuit python stuff You don't know what circuit python is You can learn more at the main website for the project circuit python org This is basically a version of python that runs on tiny computers called microcontrollers Such as for instance this one right here with this little display on it This little thing has a computer on it that can run circuit python What that means is when we plug it into the computer It's gonna show up like thumb drive and we can edit a code file on there with some python code in it and When we save that file the microcontroller the little computer that's on that device Will execute the python code for us and we can write code that interacts with various Hardware peripherals that are either built into the device like the display in the case of this device here Or other peripherals that are connected via the iopins that run along the edges typically Such as these neopixels down here at the bottom, which this is not actually live So let's fix the camera while we're here That's interesting though, I don't know why it wouldn't be live Looks like the server is dead. There's that how's it go and be autograph Dave Odessa over on YouTube Let's see was that the Dennis last Friday unexpected Dennis, but when smooth good nice to hear that went smooth Hoping for good weather tonight. Yep. So far. We're looking good. How's it go Michael Pekusa and see Grover? Yep fingers crossed here as well. Oh Interesting finally loaded But it's very Interesting so it's live in the preview on the screen, but it is Really slow here Did I mess up the oh, we may not be having too much of the top Okay, there we go. We got our Got our usual crash the first time we loaded or getting closer to I'm all even though it's for a crash. Yeah, the cameras definitely got something weird going on with it I'm gonna reboot it We'll do that. Hopefully that will Go far with the reboot. Anyway, where was that before I got distracted by the camera? Devices connected to them. Yeah, so we're writing Python code for these devices In particular today, I'm gonna be doing some testing on some library PRs, which is what I had in mind to do last week But we're kind of just picking up where I was intending to go last week Which is doing some testing on some submitted library PRs leave on airplane mode. I don't know You want Wi-Fi and we want the camera to go and we want to be able to touch the parts of the screen Important to make those things happen. I loaded way faster So I Kept that one Was that um, yes. Yes. Yes. Yes. Yes. Yes. So circuit Python Which is what we're working on is an open source project. Like I said, you can learn more about it circuit Python org That's the main website the open source anybody's allowed to use it Anybody's allowed to make projects with it. Anybody's allowed to add support to your own hardware for it So if you design your own hardware Microcontroller device you can add support to circuit Python for that device. You don't have to pay anybody to do that I mean, you might need a developer to help you so you may need to pay a developer if you're not, you know One yourself, but you don't need to pay like a licensing fee or anything to use it. It's it's open source Project the company who funds it is Adafruit. This is their website Adafruit comm They're the folks who pay the people who are working on the project There's a team of folks who work on the project full-time and are paid by Adafruit to do so There are some folks like me who are paid to work on the project part-time Including things like this live stream here as well as working on libraries and PRs and infrastructure and all sorts of other stuff So huge. Thank you to Adafruit for making it all possible And of course, thank you to anybody who wants to support Adafruit and circuit Python project by purchasing hardware from them at their website Adafruit.com We are gonna head right over to contributing page for those that don't know contributing page on circuitpython.org We'll list out all the open pull requests all the open issues So this is a good place to look if you're trying to find stuff to work on a Particular stuff in the library land in the Python layer of circuit Python in the libraries that are helper libraries and driver libraries and things like this and the ones I have off the top of my head in mind is Starting to switch over these I saw this come in a couple of weeks back And then I know there's a bunch in the wiznet They're on the newer side We will potentially get into some of the older ones as well. I have a This thing MLX 9640 thermal camera Which I intend to use to hook up and test some of the Changes or some of the stuff associated with the changes in this one so that we can get this one finished out as well Which is one of the older ones? I think we're gonna start in requests when API at a time Let's see contributions API examples are not included in learn guide secutation baby steps Yep web scrapers get the off key from Browser developer tools if it's the same key, maybe we got it before we'll have to see where we end up with the key I may need to grab the key off screen or something. I'm sure if I should embed Workflow credentials I'm not sure I follow what that means. Like is there a test settings file or Who interesting what is AP? Oh, oh, right the AP password. Okay Okay, yeah Whoa, oh, I see what happened SSID is a string up here and a variable here And in my mind that makes it to entirely different things that are unrelated whatsoever, but obviously to get It's the same string SSID That's interesting even though it was a string here and now it's not a string anymore and like Yeah, technically they're not the same but I didn't know what the emojis do to the emojis print out all right Yes, it depends on the platform you're free to choose Are you free to choose what you want to work on to an extent? Like there are times where I have more direct Stuff like go work on this project or go work on this piece of infrastructure Or stuff like that But then there's other times where yeah, it's just like for me It's kind of like there's a list of different tasks that I have been trained on how to do So I will check in on those tasks and then there's obviously like typically always going to be You know PRs open library PRs open library issues Which is always something that I will spend time working on as well either doing the reviews or going through and working on issues or You know anything related to all that stuff Helping helping people who like submitted a PR and it's failing actions or whatever right like working with them to figure out What's wrong with it if they abandon it like if they submit a PR and abandon it one of the things I've been doing lately is going back through the oldest PRs that are kind of inactive and either Figuring out if I can get them in-state where they're good enough to be merged or Get them closed off with a note that says hey You know if you ever get back to this and want to do it you can reopen it or start a new PR is fine as well So that's the kind of stuff I do most typically, but yeah, it's kind of a mixed mixed bag sometimes Sometimes directed Sometimes more so just working on whatever is open that I find in github And then some of it is just like weekly tasks checking in on this thing doing this task Writing up this little blurb for the newsletter Hosting the meeting every couple of weeks and in the rotation to host the meeting every couple of weeks Doing this live stream I'm not sure about this part get the web workflow credentials. I don't I mean, I don't think I don't think we want though I'm not sure I understand what that means per se, but I don't think we want the web workflow credentials If that's like the credentials you use to authenticate and use the web workflow If that's what that means, I don't think we want that we we want this the SSID and the password so that we can connect to the network and These happen to be the same keys that it will use for the web workflow network. So I Think like implicitly. This is the same network as that and therefore there's some carryover, but I Think there's a second set of credentials That's the prompts you when you first load it up Yeah, thanks for the question good question Plus one for whiznet just got to the 5,500 EVB ECO not familiar with that one. That's a sounds like a RP 2040 base thing or something. Oh interesting ECO The Pico with a jack on the end there Ethernet looks like You know, maybe somebody brought this one up During a stream before maybe we did look briefly at this one And I'm looking at it. I got a little bit of deja vu. I'm not positive though And even if I did see it before I definitely forgot about it. So Don't really count either way Interesting. It's like totally a stock Pico. It looks like on the whole top half here, right? Like the way the ground pins are laid out and everything There's kind of like a dead spot on the real Pico down towards the bottom end of the board and they've used the dead spot for the whiznet chip and then tacked on Enough extra in order to be able to fit the ethernet port. It's interesting any little device So you got one of these picked up it sounds like Which is this thing said I guess shouldn't be that expensive, right? Maybe 20 or 30 bucks tops something like that be by Purchase maybe we try somewhere else. Oh 50 Not even yeah, not even 20 or 30 nice It'd be cool for a little hardwired IOT like temperature sensor or light sensor or any kind of thing like that if you want to defeat it into some kind of Home automation or something like that Maybe garage door some other basic on-off switch type stuff like that Um, let's get the requests a branch Quest branch that we're working on here, which we're gonna go open requests Maybe find in this list right there There's a 5100 earlier. Ah, okay, both our circ python supported nice Backward so we want Let's go like this. What are our remotes? Okay, ghpr list ghpr check out six and the changes are All api discord I don't remember if I do have the discord token Not But I can also take a look. We don't have a different. Oh wait, this is not it. Is it? Quest api discord, yeah, port authorization We run this we probably don't want to print that Oh, it's not printing back to the wi-fi If we got a connection print connected Well true get the data This could maybe be outside. Is this part new? It doesn't really matter either way, truthfully In my mind, I think of it as like outside the wow loop since you would be setting it once and then it stays the same It doesn't really matter and I will say it down here does put it like physically closer to the code where it matters, which is also kind of convenient Okay, full api. So this is this gonna have the uh Well, it's false. Okay, so it's not gonna happen. So that's good. I'm assuming that is going to maybe have Token no token looks like it's gonna go in the header. Okay. So interesting. We changed it through here Oh debug keys wait, what is that a different one? Yeah debug request bug response Okay, that's kind of cool They saw this would be all the data debug Keys and I I'm thinking keys It sounds like keys It would be like tokens or passwords or something like that, but I'm thinking this just means keys of the dictionary, right? And in our case the keys of the dictionary that we're looking up is approximate member count and approximate presence count That's printing both of those finished board uptime next update If we fail sleep continue to go again and also sleep for sleep time which is 900 seconds 15 minutes Uh, I need to come over here for a second Make sure that we're actually over here. Yes. Okay Do we have a discord token before? Actually, that's the wrong version of patch arm Really, we need to come over here with this one Of course, who knows what device I would have done that on probably not this one if I did run it So this does have like steam A couple api tokens on Not discord Okay, what does this say does it have? I think there's instructions maybe Much better than wi-fi We should think about most industrial grade stuff. Yeah, ethernet for sure wi-fi is Super convenient, but very spotty should not be relied upon 247 mostly for part of my work we Resells some hardware that has the option for wi-fi and ethernet and I'm like Always trying to preach ethernet to people if they really care about their thing Being connected and getting updates and all kinds of stuff Um This thing tells you how right So basically I if I recall right, this is just like stealing the auth token from developer tools When you go to discord age So you cannot do on camera So you'll have to bear with me Does the flower cover up the youtube chat In the bottom right of the stream. Was it like that before that must be like an overlay that youtube is putting in interesting I might want to Try to shift around the chats a little bit maybe Developer tools. Wow. That is a lot of My goodness. What's the token name? It's called um Resition I'd request that or what's strangely below responsive have to be specifically surprised That doesn't seem to be in this request. Now. Let's look in the cookies Maybe but not name so Those are particularly helpful these might be but I find So I guess let's try what it actually says which is go to slash messages. What? All right. I know this is uh, not the most riveting world since you can't see what I'm doing but The nature of uh, trying to get a token panels at me. Okay. Why wish they would have put the full url in this thing channels At me almost there. Hopefully Doesn't have the authority method path scheme accept Accept encoding accept language This has office authorization The mind does not it has cookie We can see is the next one down here Last commit was two years ago Guessing it's just different now Honestly, the fact that it's not here as authorization makes me wonder if it's gonna fail from inside Here since that's how we're attaching it How's it going axle? 51 55 and 6100 work all about the same just different the number of sockets and internal memory 50 100 is the One with a hat took on the pico w for for example double network going on there Well, I don't know if we can get the I don't know. How do we get the token? I kind of honestly, I kind of wish we had like instructions to get Like whatever the plan a for getting the token is from discord. I suspect You look in the discord docs plan a is not look in the developer tools and find It it's probably go to your discord developer dashboard portal thing somewhere and find a token Slash api into the field filter field the filter field There's a filter field first thing. I just can't seem to find what you're looking for Go log in to discord honor browser open developer tool. Oh Filter in the developer tool to wait what? Okay slash api All right open the developer tools. I'm gonna clear this I'm gonna refresh once I'm gonna Filter on slash api that Here I'm gonna put that into settings toml under the key name of Something Scored authorization capital D capital a They've closed This uh, yes Read thank you for the heads up. Well, I didn't you didn't see me show it. Did you? Okay So we can go to code file, which is this which is currently An example from htp server. We don't need to keep that and grab this we can put this in code Uh, let's still check that we're not printing anything crazy here. In fact, why don't I just run it once over here I do need to save it before it will run turns out It's fair I'd say it's fair Yeah, no that doesn't print anything crazy. So we're good to go there Okay, so that worked. We got 37 599. So we're one away from 37 600, which school and there's 49 32 online currently Uh board's been awake for 37 minutes The next update is in 15 minutes because it was set to sleep 900 seconds All looking pretty good to me Um, we could maybe let's control f secrets. Let's just make sure we have no more secrets. Okay Good to me Um, I guess maybe it might be good to update this, but I don't know. I still think it'd be nice to point someone to the real documentation anyway Maybe there's not good real documentation During the top result on google was third party One of these are like docs Let's not just put it in their own docs for some reason just kind of awkward I'm caught got changed to a function here Did load up the tunes today? Is that a new line? Who doubts? Is there something newer than that at this point? I don't actually know Well, there's the full release I guess but And then there's commits in main But no no newer actual release releases Okay Or even like depth releases I'd say thanks. Let's say thanks 20 oh One we are gonna do Because this is only a minor update that doesn't Add any new functionality Or break any functionality. I think the v's are above Make this lowercase since it matches the file Um, this was from a while ago dev odessa But if you're still around and you are I didn't think to say this before but each week all the folks who work on the team write up a little Couple sentences or so that end up in the newsletter that talk about what we did for the week So you could find all of those for me in the newsletter archives as well as all the other folks who work on the team regularly Pull those in usually each week. That's another good way to see kind of a window into the stuff that we end up working on Okay Next isn't that ones? I think yeah, let's look at some wiznets In a little while since I messed around with wiznets to fix the hcp socket leak that sounds good Nobody wants a leaky socket, right? closes 121 moved all references to hardware sockets in dhcp to handle the hcp message receive response added try finally Walk to ensure that the hardware socket is always closed made the socket number a local method Attribute since it doesn't need to be stored Moved unused methods to initialize and release hardware sockets refactored the hcp module to use higher level calls to wiznet 5k instance We named several methods in wiznet 5k as they are private and no longer called from outside Added read socket reservations and read Send port That's stand for any sense Ender No, I don't know what's sin port would stand for Uh methods to wiznet 5k You help dumping of socket state for trouble shooting All right, that's it with the dhcp server without and without a force of time matter hardware socket closed in both cases tests carried out with wiznet simple test on 5155 156 6100 chips I have only one of those I'm not even sure which one it's the one on the feather wing Uh, and I will certainly test that one to the best of my ability. I Don't think I have the ability to easily Turn this on or off or use a different router that does or doesn't have it without impacting My actual pc and thus the stream and everything else So we'll be testing on one that does have the hcp and I will not be able to do the Negatory side of that test But we can test happy path at least leading underscore These are good. I think leading underscores on these actually help Make it optimized out by mpy. I'm pretty sure If these have a leading underscore, I think then If they have a leading underscore and the name, I mean and it's a const Both of those things. I think both of those things have to be true. I could be misremembering Um, I think though if both of those things are true, then I think mpy strips the name so like The amount of bytes that this name occupies gets crunched smaller because it strips out the actual name and uses I don't know a number I guess or something small to refer to it instead Internally liking the compiled mpy code Whatever it's compiled to I don't know if it's that might not be technically a correct way to call it mpy code but this is basically changing a lot of these over from quote-unquote public with no leading underscores to quote-unquote private with leading underscores I think it's right I think that's right So I got to remember there's a delay to You Ah, okay, right the underscores that substitutes the value inside const nice I remember doing the test and seeing the size grow with that in one library I changed a bunch of them just to see what would happen Also, what's up scott? Nice to see you Hope you're having a nice day. What do we have static method? I think this is a new one Return socket reserves though, so I guess the old code probably just did this directly Suck is none No more release no more setup. Okay, so we pass in the number now It's available. Well, this must be a number of available bytes. I guess We're comparing here This one's interesting. I want this one. I hopefully this gets caught somewhere else and turned into a timeout You might guess Is they even said back here? Raise the timeout right in both cases. Yeah timeout Okay, follow that If we can find although um Well return zero bytes Okay, I guess the crux in this case is that we did not time out Well I guess it depends how you think about it No bytes received I don't know if that implies we received the response, but it had an empty body or If that could also be the case if we received like literally nothing And like if we receive literally nothing then I think it's more so a timeout and should raise the exception If we got a response, but our response is an empty body That's probably going to break our ability to dhcp But it's also not really a timeout error per se So I can see and that's what it looks like this is supposed to be returning The number of bytes stored in the global buffer, which is I guess whatever we read Okay, those Makes sense to me and I mean honestly even if that was zero, so I guess in the case where we got an empty body Uh, this would be set to zero or I'm just meaning bytes count and bytes read. Oh, well one of them is the length and one of them is the actual data No, maybe branches Pilot happy pylons not uh doesn't care for ifs inside of ifs inside of tries inside of wiles But Sometimes you got a lot of things to check You try to structure it as multiple checks sequentially instead of nesting, but sometimes they're like Additive, so if you do it sequentially then you're gonna end up with a bunch of like and ors into logic, so So Response after x number of retries I wonder where do we call okay from this I guess are finally here. Okay Okay, let's grab this one open Here open wiznet Then oh, that's not what it wants. Okay That would be cool if you could just tell it the remote there I would forget to do that Honestly though, if I would have just read what it told me in the line before then I would have done the right thing 122 copy that Go to board. I wonder what's whiznet edited and This one Probably an older pr. I guess We can delete codepie. We can grab the test test Do this and it should totally fail this time because I don't have the feather wing plugged in I do have my auto reload turned off so I have to do ctrl c ctrl d. All right. We have to fix that too That is the thing that happens in this code. That would be a a good opportunity for another thing to pr into this would be comment this out Um, or if there is there a stemma ethernet thing, I don't think so, right? No, because this is spy not itc So it can't be stemma We want board. Yeah, right now. We have no That wing plugged in because it's right here We'll plug it. I can't see very well So off this side, which seems nice It's probably not plugged in actually so we'll get to see a different failure mode now. I think Yeah, nice, which I don't I'm not a hundred percent positive, but I'm thinking that that's actually a better error message than before I think whatever we used to get was Not that I have forgotten to plug in the ethernet cable before It's not new in this one though. Okay. Let me plug it in I don't actually know if this switch that I plugged it into works Oops back on top back to here try again We shall see on this one. This is like a secondary switch that is near my desk here, but Yeah We got I do have some blink Very possible that the switch is just not actually connected to anything else or Having the ability to dhcp, so Let me plug it into a different one You're at max capacity on the main router. So I had to find You can get innocuous enough to unplug Now we got a connection We got our responses We are looking good. So we tested Something that can't dhcp Properly We got connections down. We tested not plugged in at all Like the ethernet cable not plugged in at all. We got connections down We tested no wiznet module Connected to the spy bus we got no failed to initialize which is good Is there any other There a second example that got touched or no Oh, okay, right. Yeah, none of the examples got touched just two of the files wiznet and wiznet dhcp Maybe let's try one or two more of the examples So Simple server He also Will need board And we will also need the Thing that connects to it go seven client Support with the Oh, right. Right. Yeah. No, we needed to enter here on this And we should see it print from both sides. So we sent We sent a bunch of a fives to it. We received a bunch of a fives back because the server is just a echo thing But we should be able to see it on both sides. So we see it getting received here Then on the actual microcontroller Serger python code we see it getting received here as well Another dhcp connection we were able to start up the server just fine. Let me undo the change here And let's see. Is there anything else we want to test for now Two lights is like a third party api. I think you can just fetch the current color That's how that works Pretty much more or less the same as simple test As far as our tests are concerned really, but I think it did not I think I restarted it before I saved the code file There we go. Oh Library fancy led Turn in now. Thanks. Good night. Oh, yep. Take it easy. Deborah. So I see hope you have a good night No module named fancy lady. Here we go Yeah, there we go. Got a color cool So this would be I think uh technically like like big number I think because it is non backwards compatible however the portions that it's non backwards compatible with are Stuff that is unlikely to have been used externally But it might be worth a quick check to verify. So let's go Maybe Is here somewhere, but I don't see it. There it is Don't think there's very many learn guides that do ethernet stuff at all truthfully I think it's very unlikely we find any of these but a quick check Then the exception type changed from timeout to connection Down exception to breaking Uh Potentially I don't Uh, yeah, I guess that one place where we got the zero. I don't know exactly how to test that. So I'm not sure I'm not sure how to test that zero response to tell if the old version Uh, like what the exception type was in the old version versus the new version I don't know a great Or really anyway To check on that. So it is possible that that changed and that would be another Potentially breaking change Which is also more I guess Incentive to change the major number these are repeats How's it going DJ Devin? Getting DHCP timeout errors Uh in Arduino so half noticed I gotcha Yeah, I was uh a couple of versions back like maybe five or six versions back On the ethernet library a couple of folks have done A fair amount of work on it in the past couple of months maybe But a few versions back it was in a state where my network was not really playing so nice with it I was getting a lot of that DHCP Error not being able to get the IPs and stuff, but there was a PR Within the last couple that Fixed the uh reliability quite a bit in a way that really really helped it on my network at least for sure If there's anything interesting in here DHCP client module is not releasing the socket It'd be good to know I don't know another way really to check If like the release is working properly. I don't know how to How to like Make the leak do something problematic I presume if we were to use the socket Afterwards It would be wonky or something maybe um You get to have sample that actually showed what the Like what the ramifications would be of that but Whoops. Whoa simple server simple server and the what cheer light one cheer light Need a DHCP server code pie that fires bad packets or deliberately doesn't respond That's a little before Thing this case I do not Know enough about the hcp myself probably HCP is kind of in my mind a black box that I depend on to just work and get an IP and Not really ever thought much more about it. I got this. Yeah, well, I should have mentioned That already kind of does prove, right So If I would say too though if you know how to make that Best case and are interested in submitting a pr that is definitely Would be an appreciated contribution. I would say So I think we'll go three. No, we'll go four. Yeah, we're gonna go to 400 Is it is backwards? Uh, it is breaking change. It is not backwards compatible even though it's like Perhaps unlikely to be a thing that a person Was doing in a way that would not be backwards compatible If this still technically like if they were then we'd need to change the code so I'm gonna get actually a difference. Oh, I see. Okay less complex please Move the ntp client Friends already looked at this one and approved. Come on. I wonder you just use ntp library or Move to is not ntp Remove the client module by deleting the file build the docs Build the docs with sphinx references the ntp client do not appear in docs Client is not access access any of the example files Modify the sphinx conf to build up the docs. You just reverted it before Move ntp from here move use More requirements Any of these talked about Why we want to remove it guessing that it can be used with the library client not working with crony My point of view was that ntp clients not working for crony and probably ntpd are What's to do with pack above Stuff wise the length of the request expanded to 56 bytes The request should have a length of 48 bytes Change it to this then it works for example That's on the ntp library it does in fact use 48 PR This regards maybe not sure An ntp client there receives out of stock. It's fairer after some time. Can you tell if it's? Oh Hey, did that one Close the issue Sometimes these are linked and they close automatically, but sometimes they're not Yeah, 121 Okay, I did It'll sound like the same thing though. Maybe Two threads using dockets and implementation to make sure that's an issue with ntp. I wrote ntp thread using ntp library and that eliminated the problem that leads me to believe that's an issue with the library That's are they compatible enough to deprecate good to be a mitigated the function Following hasn't thrown any errors has kept the correct time for the last week It's using ntp library now instead of anything from wisnet Have a look at the error handling if it's incompatibilities They likely are Different ntp doesn't trap any exceptions. So it will work with wisnet Best way to deprecate the Maybe you know what I should have done is maybe done a couple of these prs together And then one major release then we wouldn't have been because this is probably going to be a major release as well but Oh, well Police numbers are free as they say exception Who explains the change that explains? If you're any examples or you change this can As delete the code or make it raise non implemented and do a major version bump We want to is is there a That one won't be That computer right now Interesting that there was no code that used it It was an f5a underscore ntp. I would be pro having an example somewhere of how to use it with ntp library Doesn't exist over it would be nice to have an example that does show how to to use ntp library one of those One with the longer chain So this one they just changed Okay, this is sample code that was using it old way This is Sample code that's using it the new way, but it is also async Okay, tell you what let's make a new issue separate thing wisnet 5k with it for In order to fetch the current time Let's see. They said they built the docs and it worked fine. Also it passed actions, which would have built the docs That should be fine cost us anything to give it a quick try Get it back You gotta run to the restroom too actually so you just one minute Okay, we're back. Here's a start nice for the wisnet ntp example That the one is that the async io one or is this a different one do not copy The async io one nice Automatic time zone offset just one line of code very simple might start using that I'm gonna have to get headphones if that keeps going. There's like the squeaking of brakes on a big truck or something But I did not see a big truck out there I don't know where it's at but it keeps squeaking It will take it for too much longer Just on the next week. We're gonna grab the uh Bluetooth Earbuds real fast very Doesn't matter really. I think we need parentheses here Let's say any code any code that was using the built-in ntp module from this library Will need to be changed over to use a to fruit ntp instead tp is required for wisnet and I don't think so You can't hear it. No problem. Oh, yeah the no I yeah for For what it's worth. I am selfishly concerned with my own sanity more so than coming through the stream I am glad that you don't hear it, but I figured I have a I have a noise gate set up inside of obs I figured it probably wouldn't make it past that since it's like Somewhere else. I'm not sure where it's coming from, but my microphone is also very directional pointed pretty much right at my mouth so Any sound that comes from any other direction does not hardly get picked up at all by the microphone and then Even after the microphone picks it up if it does there's a noise gate filter inside of uh Yeah, so it's pretty good at dropping out anything from the background usually Um Yeah 4.0 0.0 Did that automatically close one 14 and one weird Is it ntp required? Who's not ntp example just because the ones who isn't it ntp feature Is required for wisnet. I don't think it's required for wisnet unless if you Like unless if you want to know that the current time then and you want to find it through an ntp server Then you're like using it but if you just want to make a like htp request to the aterfruit simple test thing or to a standard api um If it's htpp only then I don't think you need ntp for it If it is ssl i'm not sure I don't know Might need to set the time somehow ntp would be one way that you could set the time But i'm also just not sure at all Of course if idf does have feature for getting the time behind the scenes, we don't expose it to circupython or more effective It would tell me what the uh Can add in youtube that's A full song Song I probably would listen to again, but I have no idea who it is or what song it is because it doesn't say I'm not gonna click the thing to open the link for the advertiser so We'll listen to it now and let's see if it comes up again ever To be honest for home projects turn off certificate validation Defense yeah defense if it's like exposed on your network Making requests out to the world depending on what it's fetching I probably would not recommend doing that if you have any option not to now if it's if it just doesn't work Then you don't really have an option, but some projects might be required but not always Just gonna if it's required for the pack timing the best of my knowledge now to the best of my knowledge It's completely optional like you could you could choose to Do an ntp request and figure out the time or you could choose to just not and do your other stuff and as far as I know Just we'll keep working Do a request on this one Anybody is so inclined wants to take a look at a VR But appreciate it some eyes on that one We have here fixed swap in socket connect best daddy Those are on 29 prevents listening for connections on hardware socket zero and making unused socket as Reserved when accept is called on hardware and hardware sockets zero is available Oh C1 Raspberry Pi Pico Internet with net hat 5100 50 socket visual Well, that's fancy. We run this. I'm gonna run this Run this first of all definitely deserves the old star actually It's like a terminal color tricks. I think If we can run this it's a bit of a detail If we can run this it's a bit of a detour, but this looks like a cool thing. I'm happy to Try this out because it looks cool Show it off to more folks You might find it useful. So let's see. Let's grab this This isn't the community bundle Probably not doesn't have a Doesn't have a release yet. So if it were in the bundle, I think it would break. It's the actual repo. It's I don't know. Isn't that socket visualizer let's encrypt Oh, that's a couple of these Yeah, let's encrypt is awesome. By the way, I use let's encrypt for uh It's certificates on servers also, um associated shout-out slash hug report goes to CERT bot c-e-r-t-b-o-t CERT bot is a tool A command line tool for interacting with let's encrypt in order to issue and renew your certificates Uh, which is super helpful So a thumbs up to both let's encrypt and CERT bot. Yep. You'd have to renew it renew it 90 days. That's true You can set it up to happen automatically though run I wonder about terminal colors from jp and did a parsec on it. Nice. I must have missed that one I saw that jp has uh made a new repo Uh to store the parsec code snippets I might I don't know If he has the old ones or if he's planning on going back and putting the old ones in I kind of suspect maybe not Like they might have just spent something you worked on at the time and they're maybe not around anymore Some of them also would have been need to be updated for new apis and stuff like that um Maybe at some point we might spend some time going through the older parsecs though and working through them And rewriting the sample code to submit to that repo because I think it would be Super awesome if that repo was loaded up with all of the code from all of the parsecs Um all the relevant code right like if it's like a an off-handed thing That's not necessarily something you can run yourself. Then maybe it won't make as much sense, but Any kind of sample that's in there That other people might want to run I think it'd be great to get into that repo And I'd be willing to spend some time to go through some of the older ones So maybe we'll do that one of these days. All right, we're gonna get the uh I'll just copy this Do we need anything else? Do we need this? No, I don't think so, right? Copy this I'm gonna drop it onto my device I'm gonna put it just on the root, but I'm gonna rename it from main to something else. We're gonna name this uh whiznet socket biz And we're gonna make some tweaks to get it to run. We need to Have cspn be correct word.d10 I'm just gonna Not do any of those I think. I don't wear reset Seem like reset comes into the mix anywhere here spy bus there Let's not do this reset pin I commented out One's actually done Keep that Interesting. It looks like we need to connect to the server Maybe not Maybe so. I don't know. We got some stuff. We got definitely lots of pretty output Oh geez. We got colors. We got links. All right board Other s3 python 820 beta zero Uh, that would be I guess driver version which it doesn't know about because I copied it from the repo instead of the bundle This would be filled in if we got it from the buzz bundle. I think 5500 has seven sockets Zero can't be reserved. So I guess we have six or maybe eight I suppose is the total but zero's We can out dead beef go seven Got an okay listening for connections on socket one So right now socket zero is closed two through seven are closed and one is listening and I don't know of a very easy or convenient way to connect to this I guess, uh the c python But I don't know what Is it like sending? Is it receiving? Does it do anything when you send it data? server accept Up to incoming connections Doesn't look like it ever reads. So if we connect to the socket then it should Maybe send us back some data as we connect Doesn't look like it ever reads what gets sent So theoretically maybe we can go into this one This one Put this back to how it was Change the port also 3 1 And we don't really want to just send all this stuff Okay, so in our while true, I think we want to connect I don't think we want to send anything We do want to try to receive to see if we receive anything and print it if we did and then we close and then we sleep And then we loop and do it again We got some more print going here. We got some we did get a response here But this thing sure does not really seem to know how to print it out Instantly if it's intended to be doing so Oh interesting this time it seems like it's switched to zero Kind of established in there as well It is switching between zero and one which is kind of interesting. I thought it said what zero couldn't be used I guess maybe it does it for you sometimes. I don't know Or maybe that was a different device. Maybe that's 5100. I'm not sure that could be We're about for the win got lazy use virtual min gpl auto renews for lots of crypt and Set up new sub servers in seconds. Nice Using checkmark and x for connection status and rebel lately. It's much easier to spot Audrey sports proven to be a lot more helpful than I originally thought. Yeah, just nice to have stuff that stands out really well Let me give you that Want to close for something so let's stop Uh that is Fast 8516 cigarette python ways net socket visualizer isn't that 5k socket visualizer Interested in ethernet and sockets and stuff. Check that out Oh, maybe we got zero because we didn't actually use the New version that could be I can't say as though I fully understand the issue. I guess of Going on really maybe the way that it was bouncing back to zero and one was Actually the issue. Maybe we were seeing the issue Import file names with emoji. I don't know you could do emoji and file names at all Pretty crazy I just I think scott at one point played with like emoji like you could make an emoji a variable name I remember seeing somebody do that. I'm pretty sure scott as a file is pretty crazy Hopefully I don't really know the particulars of like which sockets are reserved or not reserved or Frankly, I don't even really know what is reserved versus unreserved I mean, I kind of get it means that something's going to use it or not be able to because it's reserved, but I don't really know what would be Doing that in this case specifically Make it should work Won't necessarily show up on the display. Oh Yeah, yeah, yeah. No, I don't think it would do that either. Yeah with tile grid Is the built-in font has no emojis now The built-in font had emojis, but then it would probably be way bigger And they would probably only be single color. I assume but there are there are like monocolor emoji sets out there Probably the size is the biggest problem for them. I guess if we wanted to have Even remotely medium sized set of emojis, I guess it would make the font bigger than it is today We get another one So Need audio and all factory emoji Okay, so for this one, let's grab the pr version and then We'll try it out with simple tests and we can try it out with that visualizer, which is already running anyway So drop it to here. I'm going to delete the other one Was that size varies in the unifont? 16 by 16 have monochrome emojis nice Going down a lot of json data from an api a quick emoji can help Looking into emoji font stuff serenity. Oh s serenity. Oh s this cling Nice. Oh, wow. I love the uh Oh, wow I love the the xp vibes are like 98 even almost Yeah, blinka and then blinka I think is a bit mapped instead of a font Like it kind of sort of looks like a snake emoji, but it is a separate bit map. I'm pretty sure Get inside there. What's that stuff? lever I recently added ansy color codes to my usb debugging helps a lot even with just one color implemented Oh, yeah, that's pretty sweet Do you use the logging library for that or you have a separate Logging solution does look like the login library the timestamps look the same If you are so inclined it'd be awesome if you want to submit a pr to the logging library I think other people would probably find that pretty useful as well Even if it's just the one color like you say that would point people in the direction to being able to use it Which would be pretty sweet Dialess I always do that wrong copy message link. That's going to be the link Do the message not the link that's in the message? Well, correctly. Oh, there we go. Yeah, got a nice small set of emoji Back to serendios nice. Okay, so this is the tweet where they're talking about having it or it's not a tweet obviously, but Hey, that looks familiar Well, we can did I okay, so I deleted it. I paste the new one. We're good to go there Let's let's rerun the visualizer. I guess let's see it. Maybe this time it won't be bouncing between zero and one Let's see if that's the case I can't just import it again, or I mean I could but it won't work We need to do this control c control d I could go arrow up, but I can't One of these days I'm going to look through to and see if there's a way to can save my history Seems like a thing it might be able to do Actually, no, I'm an up arrow abuser and tab also I see this time we got udp on zero Every time and then established and then we did we did change the two though But but zero is always udp, so that's the main difference here Now it does it is going back and forth, but now it's going back and forth between one and two instead of zero and one and zero is marked as reserved effectively for udp. It looks like I'm not sure the particular is what that means exactly to us, but You get the output, which is pretty cool Let's stop that. Let's do simple test real quick also, which is Well, currently we have this which is a cheer light just run that one real quick That should be setting our neopixel Yeah, oh, but it's so close. Oh so close to white right now. Oh timed out. Yeah, that's the wrong thing It is setting our neopixel. Oh, it's not even close to white. It like is white actually right now I think if you tweet or something with the right hashtag you can Uh Cause this to change inside their server basically To turn it on and it is working. Let me do simple test also real quick And I'll do the server one as well real fast. I think that's a that's a good three Three of them to check simple test cheer light and simple server Gives you two different Different requests based ones In one server Excuse me Oh wow, I had no idea I had that many colors Are those all different? UDP being stateless means you don't have to connect. You don't have a connection receipt event You always listen to LC miss messages. Oh, okay. That makes sense. Does make sense. Yeah UDP Like a broadcaster or whatever broadcast packet across the network where Everybody's kind of inherently listening all the time Although wait, no, that's multicast. Is that the same thing or is that a different thing? Maybe it's like a subset. Maybe that's one thing you can do with UDP. Okay. Yeah I messed with this a little bit once So maybe that's what that socket is then that socket's waiting for these multicast things potentially That zero number socket Could be end up on simple test. Did I run it? Say You just got both simple server. Let's do real fast Empty stringer zero zero zero zero zero Okay, I think it means just bind all interface Yeah, I do use zero dot zeros like that sometimes on my pc when I want to run a server that listens on all listens on my ip such that other computers on the network can access it Rather than just local host only Never I don't think I've ever messed with zeros on the microcontroller We're awaiting so we can go run our Original one of these ones The thing underneath run which is debug I don't really use that much Stop that I'm a I am a printer more than a debugger Oh the port changed It's good I don't know why I can't stop this with control C. It's kind of interesting So we used to have new socket num which got returned by socket accept along with address We now Just put it in the kind of like throw away variable underscore We used to set that to new listen sock num which we got from there And instead now we have client sock sock num Getting created like that Makes sense to me. I mean, I don't know I mentioned the internal kind of like particulars the difference between these but I could see the difference in the output And I can see that our examples all still work. So 500 I think we decided was on there, right? Yeah, because that thing printed it out, didn't it? We didn't really Maybe not not the best to say we decided that So I get printed out I'm pretty sure Yeah Wasn't actually sure about that before Socket swap in socket accept. So I think we're gonna go with socket accept fix The name of the release on this one And I think that's probably minor number because that was not Breaking change I don't really make any difference to anyone Really the only person that would make a difference to is if anyone was trying to use that zero Socket for its intended purpose, I guess if it was Previously sometimes not being reserved successfully, but I don't know if that's that might be like Misunderstanding of how it works In my mind possibly as well fun They all do uppercase because it's in a title but in this case it's a It's kind of like also part of the api so Which I guess it would be a variable socket. So it depends on what you call it, but lowercase is customary this is for a fix In socket accept Reservation for the wrapper Reservation of socket number zero So that's probably gonna freak out get hub because it's gonna think we're talking about a okay. No, there's not one. Okay. That's good Maybe maybe we luck out because there is no zero. Maybe they start on one Kind of funny if that's the reason why it's working It was fast eddy's 586 I think something like that Yeah, 516 Zero one. I always like to double check 00501 is definitely newer. Yeah, if you accidentally put a lower number here than the previous one We'll get in trouble It will not be happy Well, get hub will be fine But the way that our actions are set up will not do what they're supposed to I think or at least they used to Not I've done it a while. Luckily so um, all right, we're coming up on Time so I think I'm gonna stop there We got one more of these that's not mine So there's one more that I could ultimately look into Um, but that I think we'll save for a different day Uh, if folks are interested in more Streaming circuit python content like this, uh, you will be pleased to know that I am typically around on saturday mornings as well I was not last week because I was still without power, but Most weeks I am streaming on saturday mornings at 10 a.m. Central time working on circuit python stuff I do anticipate that I should be around and streaming tomorrow morning Um, that's definitely the plan as of right now. So unless anything goes horribly wrong, then I'll be back tomorrow morning I am not a hundred percent certain what I'm gonna work on For a hundred percent certainty But I will leave you with the teaser that I think The plan is Playing with something that the ate a fruit fairy delivered to me today, which was the New matrix portal s3 Uh, just got mine delivered today. So I have not even unpacked it yet, but I think I will bust that out and maybe Start playing without a bit tomorrow on the stream So if you're interested in that you could tune in tomorrow morning 10 a.m. Central time Like I said, I'll drop off links here in the discord when I get going Uh, and because that is over on my own accounts on twitch and youtube So it will be a different place than the current stream Thank you to everybody who is watching this stream I hope you all have a good rest of your evening and a good weekend and all that stuff Thanks to all the folks in the chat who were helping out Thanks to our pr authors, uh, biffle bear fasteddy dj devon I think that was all the prs we looked at if I missed anybody. I apologize, but thank you to everybody who submits Any prs or does any work on circuit python? I appreciate all of you. Um, yeah, so long for now. I will see you