 hello hello hello okay how's that everyone I switched to software encoding so it's going to be a little hot in here but I've got the computer to do it so I mean the windows are open so hello hello let me know you can hear me looks okay I don't know if you saw the false starts on twitch but I didn't actually auto start youtube so I think youtube got to wait until I had the video going okay good afternoon we hear you thank you rich I was trying to start early for that reason so we're not too late um and we can sit tight and see how everything goes let me say some hello's hello type hello naradok hello jim hello rich um hello m4 tk hello biata uh hello aukey I hope I didn't butcher it too bad um thanks for stopping by it's been a minute since I've streamed so this is exciting hopefully I don't have chocolate in my teeth do I um yeah it's been a while all right well I guess we'll get going and we can hello sea grover um we'll probably pick people up hi omni um if you don't know my name is scott I work for Adafruit on circuit python Adafruit is an open source hardware and software company based out in New York City I work remotely for them though so I'm actually in Seattle here um let's see uh it's been a while circuit python is a python for all sorts of embedded devices not that one here for example is a esp module here so under here is a little tiny cpu little tiny computer and circuit python brings uh the favorite my one of my favorite programming languages python 2 that as well um more hello's here while we're going um hello dashipu hello andrew hello um rich uh hello yanni and hello keithie got a dip out but hope everything's having a good day a great weekend thank you keith so um I used to do deep dive streams starting in the pandemic and then I was on paternity leave because my partner and I had a uh a son and so uh tim foamy guy's taken over the deep dives for me which has been awesome um but tim is taking vacation this weekend and I was like oh if you're taking vacation I'll guest host deep dive this week because I I do miss it but um I'm about to take more paternity leave in a couple weeks um so I didn't want to like start getting anything regular going until then uh or until I'm like here for a while um hello andy hello charles and hello again rich is posting stuff um and hello salvar I think I've missed you as well so we have two chats on the side here not the side the side um we have the discord chat and the youtube chat if you're on the youtube chat and would love to just join the discord we'd like to see you there um you could go to adafru died he slash discord that'll jump jump you into that um hello lord um and brain I didn't I have not gotten enough sleep uh compared to what I used to get um so yeah I work on circuit five on for adafruit I used to do deep dives it's been a little while um I thought I would talk a little bit about um for those of you who have done uh or watched deep dives before I don't plan on actually taking deep dives back over um I'm not sure what my schedule's going to look like come January when both myself and my partner are back at work um and so I am planning on doing a stream on a weekly basis at some point during the week but it's going to have to line up with when um we kind of have reliable child care for the kiddo um so I'll probably do like a tentatively I'm thinking like an office hour where I would do like an hour and we just talk about things that people want to have questions about so um I am going to shoot to do two hours today although I was joking uh that I might fall asleep during it because I I'm a little sleep sleep deprived um could be way worse um so yeah that's kind of what I'm thinking and that will be in the new year is when I'll start regularly streaming again when we have kind of a more consistent schedule um until then you can find me on the discord if you have questions um something like a year in total but five months first year and a half a year at second grade nice yeah paternity leave is something that everybody should take it's really wonderful to get to know the tiny human that just grows and grows and grows so yeah I'll be taking 12 weeks uh starting after a circuit python day so I will be out in a couple weeks and then I will be back in November mid November so that'll be really cool um don't worry there are other people that are very capable to take care of circuit python while I'm out and I already took six weeks before so we we know that's true Andy says uh as a father of three just embrace the sleep deprivation it doesn't get much better yeah I it's really not a could be way worse like my son's Ari and Ari slept like nine hours last night um which is pretty good um it just ended at five a.m six a.m something like that and I did not go to bed when he did so it could be worse but yeah it's it's definitely worth it um I do hope that the sleep deprivation won't be as we'll get better but we'll see yeah so if folks have questions I'm happy to just chat questions I I do find this is a good way for people for me to cover technical topics around circuit python and and stuff in general um so I'm happy to happy to do that um I should yeah so if you want to buy support me and support Adafruit you can go to adafruit.com um for that as well combat nap 20 minutes will provide a welcome refresh it says clippership yeah I was I took I before the stream I chose to take a shower and then I was like sitting in a chair it was like I'm kind of tired I was like maybe I should have done a nap instead of a shower but um I definitely like in the first week or two of having the kid it was like I took a nap but I set an alarm and I woke up at like the exact wrong time it was terrible so hey Paul um yep Rich confirms that the circuit python core team and other volunteers are super helpful on the forums and discord I try not to get sleep deprivation from my job but occasionally there's just projects and stuff that are in my mind and that's going to be true even through paternity leave and stuff like that but yes I need a primer slash tutorial on how to do math with tuples biota could you be more specific it might be something more like micro lab and yeah clippership says both works shower provides a refresh well worth having and I took some time to take a shower like last week or something like I'm not showering every day like I used to but um I like fixed like or like I figured out two bugs in the shower I was like I should eat a fruit to pay me for to shower like I get stuff done so yeah a full sleeps when he's tired a wise man sleeps when he can yeah I was trying to do that especially early on and I'm my schedule has shifted a lot already so I do try to do that all right we have our first question uh Ty says uh what's exciting you recently in the world of micro python that you're keen to try or adopt in circuit python ooh that's a good question I've not been super paying attention to micro python stuff um we're actually gonna meet with Damian and Jim next week um but I haven't uh haven't been following a lot of what they were doing pico w was obviously something that we want to support that my micro python supports um but that's a that's a complicated thing um that somebody did ask us to talk about and I know Rich is working on as well so we'll probably talk about that today um there was I was originally excited micro python 118 added redid the NPY format so the NPYs are like this pre-compiled version of python um and they redid it with goal of being able to run um the with the with the goal of being able to run code from NPYs while they stayed on disk which I think is a really cool and neat idea there is a huge caveat in what they're thinking and this is not actually complete in 119 so it's like something in 120 maybe but um it had the caveat that on disk had to mean a special file system that kept the files kind of contiguous still um so that that was like a huge caveat that I wasn't willing to do for for circuit python because we we rely heavily on fat fs which doesn't provide guarantees about uh the the block ordering so yeah I was excited about the idea of being able to not have to load libraries into RAM but um not there yet um I've got lots of other things that I'm interested in but I haven't looked in depth on what is latest and greatest in micro python land um yeah Rich is diving deep into adding the pico w port from micro python latest um Beata says rainbow.com and wheel is specific I want to scale the value down and then add the w channel um some terms to look up I mean basically tuples are immutable so you you'll probably want to do something like a list comprehension and then um pack it back together I don't think there is a much more elegant way to do it than probably what you're doing already though um the ship is as if we could use usb mtp that we could use any file system we wanted if only apple supported it yeah but I think and this kind of gets on the main topic that I did ask people earlier in the week when I was like oh I'll I'll stream this week what should I cover and I heard a lot about the web workflow which I would love to to talk about today but I think what we'll start to see with circle python is we'll actually start to see more and more people using it without usb um and if they're not using usb there is a world where we could think about using a different file system that's a pretty big change and that's certainly not going to be in the next major version of circle python the next one is circle python 8 um but it is something we could think about in the future for for the boards that don't use uh fat fs um or don't use like native usb mass storage then we could think about doing we could be thinking about doing something else do we have a tiny web server we do have a tiny web server should we jump into web workflow stuff I'm still also if you've seen me do deep dives before you know that I can go um great tuple list comprehension yeah there's list comprehensions and there's generators which are a little bit different as well um but yeah so I I forget type I think asked about stuff excited to microfiber them and I spent a lot of time dreaming about what um dreaming about what circuit python could do oh just because I wonder if on this bitmap would be faster than two perhaps one thing with on this bitmap is it you know how it's it's dramatically different whether you're going the right way or the wrong way like rotated um there's a worst case in on this bitmap where you're picking out one pixel and then having to do a full load like if we could optimize the fat fs where it didn't load so every time like fat fs has a notion of a window of 512 bytes and if you're doing one pixel you're actually loading 512 bytes every pixel if you're going the wrong direction um so that's the worst case for on this bitmap there's a world where you could modify the fat code to not load 512 but just load the byte you want because you know you're going to seek immediately afterwards but that's a pretty detailed optimization com comwork.io says is there a way to run circuit python in a web browser with wasm um there's not uh but micro python for a while did support that so it's not like super out of the question um it's really not what we're going for though however with the web workflow stuff that I'm going to show off here shortly you can do a lot of stuff by interacting with a circuit python device over uh HTTP which will be cool um thai says it's oh it's so good though whiskey server i've got an access point running web server controlling boat joystick on a web page did have to patch whiskey server to support getting the ap address oh narrow dock points out that there is the wowkey emulator yeah so there is a there is a um that's why i'm asking for the web workflow stuff is why you're asking so there is an emulator that emulates an rp2040 which is a chip that circuit python can run on which is cool and chris c walther christian walther is working or running micro python in a browser with wasm as well so yeah people are working on it um mm-hmm ritz says i still want interrupt support but you've explained the challenges before others might want to know yes no i i don't know of anybody that's tried to use wasm a circuit python if you wanted to do it then we'd welcome changes to circuit python but it's not top of my list um you know what i should do is i should find a new board because i want to kind of show this stuff in the end okay so i've got let's see did i use this already let's plug it in so let me switch to product showcase mode um so this is a feather esp32 s2 let's plug it in see what we get no it's on here so upside down okay so this is a little bit of an old build and but it's gonna show yeah so up here you can see there's a blinker and then there's an ip address which is pretty neat um i don't actually want to show you this quite yet because i this is i know this is an old build um in fact i kind of wanted to show the process from the start so let me just check this feather s3 that i've got sitting there okay so this is a feather s3 but it says that it's oh come on um wi-fi is off on here so i think what i want to do is i'm going to flash this with a whatever is in my current branch uh and then i'll kind of show one of the challenges on boards and maybe i should use esp so one of the more exciting things is that we have um support for esp32 s uh now which are very cool so those are like not the original expressive chip but like the second chip that expressive did yeah so let me just i'll i'll use this one um so here's a cutie pie it's an esp32 with no extension so i kind of want to just show you how web workflow works where you don't have full usb so i'm going to cheat and do something that's a little bit uh so i'm going to load it using uh just building circuit python so i'm going to build a new one hopefully it works so what i did is i plugged it in with uh holding the boot button down let me switch this because it'll be better about the lighting and here and have i built today i don't think i have oh let's go to desktop and all our near doc has more stuff okay esp idf export and export this is just so i can build and then i'm going to make board equals eta fruit cutie pie esp32 pico and the port autocompleted i have been testing on this so i'm just going to build it and then we'll show it off and it might take a little while longer because i i'm not using the graphics card in code i want to get a new graphics card when they release the next gen because i have kind of a bad one but when building circuit python what build chain slash os machine type i know there's a long guide but curious about uh my workflow so i'm running on arch linux um it's the same box that's doing the streaming and it's a amd rise in 59 50x so 16 core 32 thread although the esp builds i tend not to do multithreaded um because there is like occasionally you'll hit like a concurrent build problem which is kind of annoying but generally on esp ones because there's that bug that i haven't hunted down i do just single it's super fast for some other stuff but yeah and andy says i've been building circuit python on a macbook pro just fine in recent weeks yep so i before i had this computer i was doing all all this on a macbook pro um but kind of streaming got me to where i was like a desktop would be a lot nicer because then the desktop like can cool itself when it gets hot rather than just like lighting your lap on fire um it's worth it i've been really happy with it so okay so it's readying to the device so this is to the little esp 32 cutie pie um esp 32 support is really exciting because it's a chip that's just been around for a lot of time and it's ended up in a lot of devices um including uh let me show you this one so this is an odroid go it's like a gameboy style thing it came out a few years ago so it's probably hard to find now i don't think they're selling it anymore um but you can it's pretty cool here you can i ported circuit python to it and it shows the title bar and everything so maybe we'll take a look once it connected it show showed more stuff uh the macbook air m1 my desktop sometimes fails at cooling itself off so random too i did have problems with this desktop or an older version of it at one point where like the thermal paste had was so old that the it wasn't like wicking the it was wicking the uh it wasn't wicking the heat off the cpu so it would crash so yeah it's good to to keep that up to date um okay so we're flashed i'm gonna hit the reset button and i see the light blink so now i can do to so because there's no native uh no native usb all you have now is um the uart link via a serial converter yeah so right now it's just connected to usb there's the qdpi and i don't think it's set up for that so if we see here now we're on the pico um and i don't know so i've introduced this uh environment file so you can now do os dot get end so os dot get end and i want to get circuit pi um wi fi ss id and see if it's set yep so that's set the problem is is that it's not connected which probably means that or i don't think it's connected um import if i had a screen i'd be able to tell but you can also do wi fi dot radio dot ipv for address oh i do have an address so um dexter asks any plans to add dot dev container support for building circuit python uh i don't know what dot dev container is so i don't know of any plans um but again a lot of the cool stuff that happens is done by the community too so if you wanted to add that then that would be cool okay so we have a an ip address so oh and in fact um i should point this out so here's my terminal and in the terminal bar um we actually also see that the app the ip is 192 168 dot 1.60 and that we're in the repl and this is the version number that we are so there's now um tidal bar support in circuit python so there's this uh it will output through the serial terminal but then also on the screen it'll have a tidal bar with status like this um so what i should say is if you're in this case and it's not already connected so there's an os dot uh or there's a dot env file so you would do something like open slash dot env and then for writing and i guess this is going to overwrite it so i'll just do it to f dot write circuit pi wi-fi ss id equals skylab new line circuit pi wi-fi password i'll just tell you what it is it's free wi-fi uh circuit pi um web api password so uh what circuit python does is it presents a an http server and you don't you want to make it a little more difficult for somebody to like get your files um and write files so there's a separate password for that and the examples use uh password with a zero so we'll do that we'll do f write and then f close to write the file and now if we hit control d um we'll rerun um are you aware of anyone building cp from scratch on the m1 mac yes i am uh both dan and catney have those and uh lady adah has an m1 mac as well um pierce says hey scott it's been a while i haven't been keeping up with things adex is almost out what's the big ticket items that comes with great question i will answer here but i will also pitch that uh i think what i've signed up for on circuit python day in two weeks is a 30 minute stream all talking about adex um if i had to summarize it's web workflow esp 32 support um and esp 32c3 support so like we're if you've seen the the circuit python 8 poster it's like the expressive logo with blinka so really trying to focus us on web work web workflow on esp and all of the esp chips um because we can get them as well okay so the title bar here is saying we have an ip address and that we're done um so i'm going to pull up the browser with my checklist and now i'm just going to type in circuit python local and we'll see if it works well then so i think this is the good thank you pier you're looking forward to it um this was the one of the hurdles for me when it came to doing a web workflow so the background is is that micro python has a web REPL which is kind of this it's not the same but it's kind of the same um and finding your ip has always been a challenge and it's not something that i really wanted people to have to do so a turning point for this web stuff was the in my in my mind was jeff pointing out m dns which is a a way that devices on a local network can discover other devices and specifically it can be used to find devices under the dot local kind of like top level domain um so it kind of the way that it works is like when my desktop i typed in circuit python dot local it broadcasts to all the devices in the local network says hey is anybody circuit python dot local any of those devices um can reply with oh yeah like i'm circuit python dot local and here's my ip address it actually uses like the same format as regular dns entries um and so what the browser will say okay you're that's great i'll go to you now i will do an http request to you uh with the host circuit python dot local um circuit python now runs a web server so that web server looks and sees if the host name of the request is circuit python dot local and if it is yeah regardless of kind of what it is it will return a redirect and the redirect goes to a particular local uh domain that is for the specific device oh david sorry that you're gonna have to watch the recording uh it should be recorded so that shouldn't be a problem um yeah m1 max sound pretty cool i've been pretty happy with arch though although the video encoding thing was kind of annoying but i've got plenty cpu power to encode and and do all this stuff at the same time um yeah rich says i use mdns for all kinds of things raspberry pisie sp32s spcs um yeah mdns is is based on the thing called bonjour that apple developed so it's pretty heavily used by apple um where apple will use it for like apple tv discovery and all sorts of discoveries on the local network um so that's pretty cool let me show you uh another perk of it so i showed the odroid go so here i have an odroid go it has no wires it's battery powered i will turn it on and hopefully this will work you can see there's a blue led here that flashes like the circuit python flash um so it should be going i can't read it but it should have an ip which it does um and now if i so this this device is specifically the qt pi esp32 that i have if i hit refresh i'll get that page again and it didn't work what it should do is uh it should also show me the it should also show me the odroid go so mdns uses udp um hey maddie t glad you could make it um so because it's udp it can be unreliable so it's not not perfectly reliable but uh this is the neat part so that process i just talked about of the circuit python dot local lookup that'll get you to any of these any circuit python device on your network but not any specific one um that's why we have the second local domains that have like the mac address in it so now if this one's this page is for the esp32 pico and in another tab i can open it for the odroid go and you can see the odroid go gave me a link back to the pico as well um one thing that can happen is that networks can block mdns if they're particularly locked down which is one reason we've done the tidal bar stuff so you can actually see the ip address so if you're in a world where you only have ip addresses i can just click here and now this is kind of the ip view of the world so to speak um if it managed to find the other device which i'll just refresh again it just does one fetch call so here now you'll be able to see that this link to the other device is now using ip address as well so um love the factory says how feasible is it to put a usb mux in front of a couple circuit pythons i think you're you're really just wanting to do usb like have a usb um a bit bleary eyed but i go ahead okay i feel you i feel you with the bleary eyed i did not get enough sleep last night either but i know it's early for you uh let me know if you have questions um what you really want for usb mux is you really just want a uh you just want a hub you want a usb hub ty says is discovery via mdm dns only it is so the discovery bit here so there but there is two kind of ways two things to think about when it comes to discovery one is my computer discovering other devices and that doesn't necessarily work because like i had to set up my computer it's linux so you know your mileage may vary but i had to make sure my computer did it so imagine a world where my computer doesn't do the dot local lookup but um so i can use an ip address but then the the router allows it right so it's kind of like there are two ways or two things uh that are doing the mdns one is my computer and one is the other devices um if mdns doesn't work at all on your network you you would have to do ip address for each one um we don't have any other way of doing discovery right now although i suppose we could do something like register with some central server but we're not going to do that hi dj devin um okay so i've got two devices on the network i'm going to focus on just one of these the odroid doesn't actually have the newest one um so let's show off so i've kind of been abstracting away this idea of a workflow and there's two main pieces of a workflow there is the serial connection and then there's um there's the serial connection and then there's editing files um in typical usb land you have usb serial and you have usb mass storage for those two pieces we also have ble so over ble you can do file stuff and you can also get what's very similar to a nordic uart service for serial so in circuit by the web workflow world if you want to do serial um it's password protected so no username um don't bother uh but the password here is the password i put in the dot env file so it's password without if i type it right i think yeah there we go um okay so now we have a serial connection over the wi-fi even though it is plugged into usb as well so what we see here i'm pointing to my screen um so down here is our serial connection to the device over usb and up in the web browser we have a serial connection to the device over wi-fi so now i can type and i can do one plus one and it works and i can print uh hello world so you can see that what happens is input comes in from any one of these places so if i do you can see the title bar here is the same um now i can do one plus two and it kind of like it takes input from anywhere and echoes it back to all the places um control d is also bookmarking in a browser so you can hit this button here to send a control d which will exit the ripple and rerun your code um there's also a control c button here as well maddie t says i love my odur go i'm a little salty hard kernel discontinued them i know it's kind of sad especially now that we have support for it dj devon says it's real time that's amazing yeah it's pretty good um i should say that some people have been having more trouble with uh the web workflow when they've had weak signals so if you do find that um let me know and andy has been helping says i got a new got new css coming for the serial page soon will be a little easier on the eyes um that's cool and then the other thing is um i just saw so maker melissa we have code dot circuit python org which has been kind of um behind this b le wall so you go to the circuit python org and you get this like set up bluetooth which is great if you have bluetooth but i don't think a lot of people are using it so this will soon be broadened to cover kind of all the workflows um and i just saw today melissa who does a lot of the work on code that's our cat python org she got um the web so the web workflow piece the serial piece is done over a web socket um and got that working uh she got that working so kind of what we're doing is from the device we're doing the super minimal barely be able to do everything you want to do in case you're offline and then i want to just have those pages link out and say like hey if you're online like you could go to code dot circuit python org and then have this richer experience where we download fancy javascript libraries and have a lot of html and stuff like that um but what the device actually hosts which is what we see here um i want to keep it super minimal because all of that javascript all of that html is like baked into the circuit python build which uh we don't have infinite space on um but andy has taken that challenge so that's good um doing reserved ip for the dns lookup works well low tech for creating findable devices look in your router console and find the mac address of the desired device and then create a scheme yeah you can have the let's see if it can react to control dn control c on mac that's so much simpler yeah that's true dj devin says weak signal is a user ap problem though out of scope for troubleshooting from control land it would be nice if we could tell so narindex like already been running with this um so the cool thing is is for serial we have a web socket which is kind of the standard way of doing it and then we have a rest api which is a very common way of doing all the file stuff um what workflow html uh i'll save that in a tab in case i get to that i want to cover this core stuff first um but i think the tooling piece is going to be really really cool um friday night dinner thanks rich for hanging out and yeah please in the discord we're happy to give guidance on the pico w and please keep us posted and i'll have far you get because at some point we're gonna we're gonna spend some time on it if depending on how far you get not me because i'm about to go in paternity leave um yeah so that's the serial side of things we should be able to go back yeah east coaster yeah we usually have some europe folks as well so now let's look at the file browser piece um so here we have uh the esp 32 qt pi and the code or the stuff that's on it we can hit code dot pi and i haven't actually played or i guess i did do this a little bit so phoming guy i will need to just want to get some grunt working yeah thank you um you can now hit edit phoming i added this so um we could say hello world we can say hello streamer deep divers let's do deep divers and then control s does actually work on this page i think so we hit control s and it loaded the file again didn't work deep divers did i hit the wrong oh i don't know why i thought let's try the button i might have an old version well it says it's eight okay there we go it was a little bit slower ooh there's pocket spray if folks are looking for an esp 32 powered is it mounted it's not mounted because this is an esp 32 i don't know why it didn't work we could look at the dev tools stuff um but you see that it did do the auto reload it was a little slow i'm not sure why it was slow like you can see it's saved pretty quickly and it reloaded pretty quickly there too dj devon says congrats on leave though just in the past without seeing you and get hub updates in dev channel like your presence not being there is mist for sure oh thank you i'll be back i've been quite surprised actually how much i've accomplished in this like i have six had six weeks off and then six weeks back and then 12 weeks off i've been surprised how much i've gotten done actually like all this web workable stuff not this phoming i did this page but um okay so that's editing we can browse here i don't actually know if there's anything in the live directory though we could create another directory create hello and now we have a hello directory with the time which is not right why is that time it's 246 not 213 not sure why that's wrong did i say that this is alpha still um pomeronis pico system pie board pie gamer the all-round circuit python ppm4 oh i do have a meow bit i also have a 32 blit that i have meant to get running and never have i've got lots of stuff that i want to put circuit python on um it's forever my task watches are kind of my thing right now which is definitely a rabbit hole um what else do i want to show you can select files we could do display ruler so it's 360k so it's not a small file but let's see if it works i don't think there's a lot of feedback loading wise i should at least gray out the upload button as it goes it's not going so there's kind of two pieces to this file stuff there's this like web page that we're interacting with but then there is an api underneath um that people can use to write tools let's just see there is an api underneath that people can write tools to uh it is documented um so i just went to docs.circuitpython.org and now there's a workflows page that talks about the usb vealy and the web so and the web thing it will tell you like how to set up your .env file and then tell you like all the different um pages that you can fade all amount of clicking now but works well that's good there you go listen to the car drive safe though rich um yeah so the the apis that are under the hood for all this html stuff is documented on this workflows page although i realized the redirects is wrong because i changed that um hey it worked it did work it just took some time you might see this this timestamp it looks weird but it should actually be the timestamp that matches my local system because when you select a file in a browser it can actually have access to the modified time too um and i don't think this will work yeah it just downloads it um obviously it's not super quick it should work though it should work turn turn turn yeah not going for fast i'll tell you that um open the file yeah i want to open the gimp hey look the file looks okay so it did work it was just not super fast um the one thing i wanted to show is that i i have have enough code in circuit python that if you have an html file um it will actually show so maybe if i go here and i do open or open hello dot html and write to it f dot right html body hello deep divers f close d um so this is our code.py but now if we go back here and we refresh we should see hello dot html and you can see that the icon is different so if we click that it serves it with the right headers so the browser will just load it um um and i think it'll do that for css and javascript as well so you could imagine a world where you actually like have a project where you just want to host an html file um you don't actually need a web server in python you could have it just do this um although this is on port 80 which is the default port um so you could uh it could be a little tricky if you want like actually something python working as well tj devon says since the devices are on usb usually or wi-fi is there a way to pull the timestamp from the pc or other other than bluetooth or maybe have it a router would just ate a fruit i o be best for time sync for web workflow devices um that was definitely sleep deprivation brain um yeah i i haven't handled the syncing time of the device automatically at all um you would have to do ntp yourself i'm skirting around that with this because when you select a file we take the the time of the file um so the the the apis to create a folder and write a file do take a custom header that allows you to give a timestamp for it uh but it doesn't do anything to assume that that's like the actual time naredoc says by the way the icons don't display right how about replacing them with legit emojis i don't know what you mean by legit emojis i'm using unicode code points for the emojis so if you have a font not with them then they should work clippership says fyi one fast way to get rid of sleep deprivation fatigue is to have a cook classic or a red bull yeah i've never been a huge caffeine person like the way that i get caffeine is like caffeine takes me there as well of just like i can't focus um i did have like a couple pieces of chocolate before but that's clearly not enough um andy says how does it handle index html files will load as the default page it will not um yeah you're just navigating currently just running on a monotonic kind of thing so when you write a file you tell it what time you want to write it for unicode characters that are not emojis they don't work on mac i don't know what you mean the difference between unicode and emoji but if there's like a different code point we should use then yeah go ahead and just change it natty says i wanted a more complete ntp solution for a long time i did not that long ago change the that's not what i want adafruit ntp library to actually do ntp i was a little frustrated because for a while this library didn't actually do ntp it just called some esp32 spy function um but it turns out the ntp person actually made like domains for adafruit um apparently and uh so this will actually it just uses socket and it sends the like udp packets uh to get the ntp stuff so this should just work with regular sockets to do the ntp stuff i think some emojis are hex i do have like a font awesome font that has stuff patched in if there are other code points we should use then yeah i'm totally game to to change them i just was like trying to avoid actually serving images although one thing i've been thinking about is adding emoji support to the terminal to the like circuit python display terminal i want to support um their valid value to code code points not part of the emoji standard yeah if you want to change them that's fine i know i know you know what you're doing they just worked for me so that's why i picked them um yeah so i think that's i i could do the the same stuff with curl but i think i've covered most of it one thing that i haven't added that i should probably blink is always a valid emoji well did you see that uh i'm actually using the snake emoji so if you look at the serial terminal um the title bar has a snake emoji in it we can have them replace the images with cp.org css yeah yeah andy andy can do that too andy's been working on so this stuff should work all offline but andy's been working on some css that will do that man he says i'm looking more into rich slash textual to improve the terminal experience appearance of mp remote yeah rich and textual looks pretty neat i haven't used mp remote myself so i don't know how much it shows on the terminal i thought it was just like a fuse thing where it gave you a directory once we have emoji support in the display io terminal i want to make blink of this the snake emoji that's part of the reason i did that like right now when it shows on the display there's like this this blinka in the corner like that's fixed there right now and actually the terminal if it gets a character that it doesn't know it just won't won't render it was kind of convenient um but it doesn't make like languages like japanese work pretty well so in the longer term and i'd like to make terminal support like a few colors in an emoji and also be able to do full and half with characters and then we can support more languages which i think would be cool um i think i'm really excited about web workflow because it'll finally i think people want to be able to administer devices kind of from their computer even if there's a bunch of them so like showing how you can like discover all the devices and interact with them all is pretty neat um and then uh yeah doing it wirelessly esp 30 sports a big deal and rich says i wish there was an option to remove blinka you can do that um you can remove blinka with a build flag if you want um i did actually just shrink the size of blinka a little bit on most builds it was 16 by 16 and i added a 12 by 12 one because the default font is 6 by 12 so it's a little bit better use of space if blinka is 12 by 12 not 16 so actually i haven't i don't think that's merged in yet that's in the pr that's out um neardoc says you can remove it from display with the display group stuff too i like the people that call it a llama as emojis unwanted if your character code has the same characters are there any questions about this web workflow stuff i think i showed it off i i'm very excited for the tooling i know um neardoc's been doing a lot of tooling stuff and i think code.circuitpython.org is going to be really neat as well because where i showed like super basic editor and code editor in terminal um like we should be able to do code.circuitpython.org non-https call out to your local devices and like give you like a full blown a really high quality experience from there it's a desire to own the whole tft for certain use cases you can do that you can do that by just not showing the terminal it's you're not owning the whole t tft until you replace the root group ty says now i'll take ssl hosted server please ssl complicated as far as i know it's certainly not high on my list i'd i'd like to figure out how to do it dexter says can i upload a file over htp you can so if so this is the webpage of the local device you hit file browser you may have to type in a password but my browser is pretty good about remembering it takes a little while i'll load the stuff we can and then you can select a file what's a smaller one can i own or my chickadee tech logo um and then hit upload and then i'll upload the file and you can see that it restarted as well dcd thank you we'll have to watch the rest on the recording great to see you great to see you too patrick says i'm making a build right now for the lowland c3 mini to see if the mdns works on my network um a dj devon says why is web workflow so awesome i'm not using it yet but looking for an excuse to get into it but so many projects ahead first i feel that here's how i made it look free with a dot underscore extended attributes file oh that does look nice thanks andy thanks for all your help on this too nara doc please just make a pr we'll get it fixed i'm not wedded to it if you if folks have worked with me before you know that i'm very much a like let me clear the path and then folks can come along later and refine it about um patrick says not having the drive on c3 is going to be hard can we add params to the flashing process to build the dot uv i would love to that is in my plan and uh i'm not going to get to it i'll tell you that um but it is on our radar i think i think that's something melissa would do as well and um using web serial and i really do want to give credit also to like lauren and brentz of uh doing the whipper snapper stuff because they really also kind of cleared my my my mind of the hurdle of how to like provision a device so i know it's something we don't have quite yet but it's something we should be able to do and in fact what i'd like to do is on circuit python dot org slash downloads just for devices that support web like esp devices doing like have a button that's just like install the my device and then it selects a web serial device and does all that for you right in there and then you could say like um here's my env parameters too rit says i'm about to leave but thanks for the info is off uh off in terminal might be able to help with that cell support yeah that'd be great if ssl is built into the microcontroller may not be too hard to layer on top but given the use of this for now i can see it not being a top priority thank you dj devon says having have family visiting just want to stop in and say you're awesome web work flows awesome keep up the great work yeah thank you and thank you to everybody who's been testing it as well um but having a lot of folks that are like staying right up and then uh we must have an s3 based board about to be released they submitted a board def but aren't selling devices yet yeah i'm excited for the influx of devices that we can get on here yeah ssl is hard that's one of the challenges for pico w like networking is a lot more mature in micropython than in a circuit python like for a while i was convinced that like this circuit python core shouldn't do networking um because we often have networking provided by a coprocessor and in that case it's not necessarily good to have it um built in natively because you could like connect it at any time but i think web workflow is making me rethink that although i'd still do like the idea of um i like the idea of uh network dependent apis allowing you to pass stuff in um i don't know if we can do ssl server even with a self-signed certificate uh i don't think you can i think that's what tithe is talking about um um i don't know the details of dot local so ssl certificates either um i i really don't have a lot of experience with it i generally i find i find networking network programming really frustrating because and beli for the same reason where because you can get a uh you can get an error at any time and that's really hard to program for um since this is deep dive would it help people that if i just did a like quick code tour of like where all this web workflow stuff is in case you want to dive in or do people have questions questions are good too i'm planning on trying to go for another hour or so can't do let's encrypt in local tithe says i love a tour okay great i guess i was gonna maybe show off near doc stuff too the web package or stuff it's basically circuit over the web i think which is really neat i have a trouble i'm bad about download accepted please to the tour okay dive dive dive uh all right get your scuba masks on um let's use my copy here yeah patrick links to the the workflow notes maybe we just put rot 13 on the stream better than nothing right well the nice thing about this is it's all local network stuff although to use code dot circuit back down the org you have to load that with hgtp which is unfortunate network will be useful and bare metal pie we don't have that right now the pi zero two has the same wi-fi chip as the pico w which i really wanted to support but the license on the library from damien wouldn't allow that uh just totally up to him or while it wouldn't allow for commercial use which whether circuit python itself is commercial is a debate i'm sure um okay so circuit python source a lot of this is in supervisor so this is the top level of circuit python i should probably close some of these tabs or close some of these files um so in supervisor a lot of this is in shared there's now a web workflow directory under shared um bluetooth here is where all the the bily workflow stuff lives and there is a little bit of shared workflow stuff here and you can also see there's title bar the title bar stuff is in supervisor shared as well but the bulk of the web workflow stuff is under this web workflow um folder wow brain um these are the web socket api so this is the serial side of things so and it hand off takes in a socket so socket pool dot socket is the c version of socket world socket from python you can say it's connected available and you can read a character write a character that's used in serial dot c which is kind of the central place for uh input and output uh the central place for input and output from on the serial side for circuit python so you can see oh is serial connected kind of checks all the ways to do serial and then a serial read checks usb console sir bily web usb so this is kind of like the central location for all of the different ways of doing the workflow for serial and then web socket is the part that manages um us this the web socket protocol on top of a regular socket which there is one it's not just a regular socket um right now you can see there there is debugging in here that's esp specific which i should remove um and will definitely be removed when we bring web workflow for other things but generally this code should be port agnostic it's not right now but it should be um so web socket hand off will do uh it kind of takes over the socket and moves where it's stored it updates a request for uh the title bar so that um the the like webpage with the serial gets gets the title bar information how we tell it's connected we have a generic read byte which is just a like a log if it fails to let me know a generic send that does the same thing and then there is these web socket the web socket protocol has like frames with lengths um so that's what this manages there's masking involved that's what this manages as well so this is so web sockets are HTTP to start and then they get upgraded to a web socket so this is all after it's been upgraded there's different op codes for the different frames there's also paying in clothes that's handled here so this is all reading the start of a frame and it also determines how much of a payload there is um which would be like the actual content of the serial connection uh this read next payload byte will kind of comes is called by that circuit by the code that says like hey what's the next serial input um so it pulls a byte from the socket uh the pending web socket if uh passed and kind of scooches by any new frames web socket available blah blah blah read so you can see read character just calls this next payload byte um send is the reverse so it's formulating a web socket frame to send back to the browser so figuring out the payload length stuff and encoding it into the header and then sending the data uh that we're trying to send out and this could be it's usually one character especially if you're typing but if you do like and retired wizard found this bug if you take a string multiply it by like 150 and then print it uh it will send all 150 characters all at once so you'll end up now with a web socket frame that is 150 payload length there was a bug with that so got that fixed so that's the serial side um this other file is the bigger one um and it's so this is the the web server side so this is the HTTP server um these are like internal requests stay internal requests dropped um keeping track of things um more internal stay about like the mds that's going so this also does like the connect to the network sort of stuff we've got some code to do base 64 encoding in place which probably shouldn't be in here um but you need base 64 encoding for the password checking um so it this will read in the password base 64 encode it and then compare it when requests come in um update encoding so these two things workflow status dirty and workflow status or what end up in the title bar um so this is the title bar stuff i have these unicode icons that i want to use for like signal strength but i haven't added it yet um but this is the like oh if we have an ip address printed out um and if the port's not 80 it'll append the port as well so you can actually configure it non 80 port if you want to have user code on port 80 you can have the workflow on a different port um and then here's like basic uh wi-fi updates as well so starting the web workflow this is the stuff that uh it actually gets called kind of like every time a vm runs so if you change like passwords and stuff it should load that if you change the ssid it'll do that too so if if the radio's not on so first it gets the ssid in password out of the .env file um null terminates it tries to connect if it fails it disables the net the radio and returns um if there's a port it parses the port and then um on first start it does the mdns stuff uh and gets the web socket stuff and it did we could load an external font from circle python.org to make sure it has the icons we could um although that won't work offline which so you should pick something that will probably work offline um yeah it's a balance between making the like native experience work and just punting to an experience from circle python.org um if first start or port changed we reopen the socket that accepts connections on the web api port um and then we get the password and we base 60 for encode the password and this to do needs to be deleted because uh foamy guy did that um we have basic sends and prints so send is just send these bytes print is similar except it can you be used with mp printf which is neat um send string just make measures the length of the string send strings sends multiple things which is kind of nice um and then we use chunk encoding so one of the challenges with regular HTTP is when you send a response you should provide a content length so the full how long the full body is but an HTTP when HTTP 1.1 came out they added chunk encoding which allows uh which allows you to not send content length you just send prefix lengths for a bunch of chunks and then at the end you send a chunk of zero um so that's what this is doing is it's it's doing this and most HTTP stuff will just reassemble this for you but it's very convenient in this world where we're kind of like I'm trying not to build a big string and then send it I'm trying to send a lot a lot a small chunks even if I have to send many many chunks and actually more data because the chunks have prefixes like I don't care about that I care about that I'm not spending a much in memory to form responses send chunk prints chunks pretty much the same except it can be used with mpprintf and send chunks is the same thing too um although it's actually you can give it multiple things and it will actually only send one chunk for all of them um because it computes the total length uh upfront ends with as a helper to just do suffix checks which is handy for um it's handy for like figuring out what kind of file something is we do do origin checks so uh code.circupand.org 127 001 and local host are kind of ones outside of what this device's domains are or that are okay from new for the origin and so that's what this is doing is it's doing checks to make sure that um that you can see we check our IP we check our hostname and we want to make sure that that it's coming from a place that's reasonable the reason is is because we don't like the browser is pretty good about preventing like some random website from accessing another website um and we want to kind of like it will pass an origin header to us and we want to try to make it harder to for other for bad actors to access it it's not secure don't think it's secure uh usb active just allows us to negotiate with like the master storage um if usb is active and you try to write a file will give you an error that says like hey we're we're busy um and then this is a bunch of header stuff and I think what I want to do is actually go down to the bottom um I want to start from the bottom and work my way back up so there's no way to stop it maybe that should be um background process says hey if we're if our active connections connected but we're not doing anything and there's no request in progress and uh the listing sockets not closed like we see if there's another socket incoming and if there is uh we'll close the active socket but we're kind of like replacing it um and then if we have a if the active socket is connected then we'll process a request otherwise we'll close it um just handy so that's the top level like is there any more work to do and then we have process requests so this is reading bytes from a socket and figuring out what to do um so here's the reading bytes part um if there's no longer a request in progress then we can uh or if there was not a request in progress but now there is we suspend auto reload uh because we're in the middle of potentially writing a file um and we don't have to want to have to deal with that um and then there's kind of like these states of like where we are in the HTTP request so first is like get or put so we uh copy into this method the character an offset and then we zero truncate it when we hit a space so this will be uh in the request state we'll have the method and then we'll move to the path and we'll do the same thing uh where we parse the path we make sure that the version that we're sent is HTTP 1.1 we don't save it so this is this HTTP server is like very specific to what we're doing it won't like store all the headers you send it it just looks for particular ones um and then we kind of so I should show this reference like handy and then HTTP is really handy I was using it a lot it has this like overview of HTTP what can be controlled flow so it says like here's the request you send a a method and then a path and then the version and then some headers and here's the what a response looks like um and it was it's a it's a great reference so I would recommend that so we're kind of like working our way through it header keys we need so if it ends with the backslash n or backslash r that's how like it's a new line and that's what ends header key um so we copy it into header key if we find a colon then we're at the end and we have had we've copied it into header key uh some try trying to be somewhat resilient and then what comes after the key is the value and if we're finished with the value because we hit a backslash r there are a bunch of headers we care about and we do different things based on them so for authorization we'll we'll compare the value to um the basic 64 encoded value we had before if we have host we'll see if we want to do a redirect if we have content length we'll parse it and save it if we have expect which is some sort of like checking if it's okay to upload we'll do that uh we'll say that that's what we need if except as json we know we're in json land we'll say we'll remember that origin timestamp this is the custom header for setting the time upgrades for web sockets these three are for web sockets so and I'll print print out all the headers that it sees right now and then we're in the body and basically this stuff is done when when we're through all the headers and if we have an error then we'll do this uh if we're not done we'll just return and wait for more bytes to come in but if we are done then we'll do a reply and then reset the request resume auto reload and potentially trigger it so that's one layer that's the parse the incoming HTTP request layer and then there's this giant function here HTTP is a great tool for poking at each API is like this too haven't used curl since finding it oh nice I'll have to look at that curl was pretty handy for all the chunking too okay so now we're in reply basically we have a bunch of request state that we've already determined from the header and then we have the socket too so if we request to redirect basically your circuit path on that local we'll just reply that you should redirect if we're not okay with the origin if the origin is greater than zero so if there is an origin we'll check it and if not we'll say it's forbidden if you're looking for fs options is some core stuff so cores is like cross origin checking which prevents some websites from accessing resources are kind of cross domains if that's okay then we'll check for if you need to be authenticated because this is for all the fs file system endpoints and then we'll check the path this is something I'm about to change we'll get the circuit pie drive and then we'll have that if we're going to do delete so if the methods delete we'll check that usb is not active and if it is we'll say it's a conflict otherwise we'll make sure the file exists and then if it's a directory we'll delete the contents if it's not then we'll just unlink it or or then we'll unlink it and we'll unlock usb and then tell you what happened so it missing means there's no file if it's not okay we had a server error which is something I didn't handle and then no content blah blah blah similar for getting a directory you can kind of see the structure here where we have all these replies reply static is if it's a static file which I can talk about I probably shouldn't go I don't need to cover each one of these the workflow doc unread the docs is a much better way to understand what's going on but this is the thing that's doing kind of like the routing so to speak um to what you do you can see here's all the different static things that we have and that's what's above here so you can see like if we reply to the web socket upgrade well we compute the magic reply thing we say yeah we'll switch and then we hand it off to the code we looked at earlier um reply static you have to declare the file here but then it will just respond with like they're all gzip encoded during build time to save space and then reply with those yeah write file and reply is used for writing a file discard incoming truncate time time delete directory contents reply with version json so you can discover some stuff about a board devices json is the mdns discovery reply with file this is the the static file hosting stuff so you can see that it does some extension checks to set the content type that's why you can like host an html file from it uh directory json's the file lists this is the redirect i actually changed this my code's old it's now a temporary redirect which means the browser won't cache it which is handy um because if it's cached you could end up um if you do circuit path on the local with the device and then you disconnect the device the browser will still redirect it to it so having it temporary means it'll do that search again hopefully and then a bunch of errors 500 unauthorized payload to large conflict blah blah blah not all that interesting this is a way access controls a little bit different because it can tell you whether you're on usb like if usb is blocking you um yeah and that's it i think and then the only other thing is that like this static directory is where all the html and javascript and css lives now that i put you all to sleep are there any questions like the chat dies down when i go and never like really technical stuff this is a foundation it's going to be really cool when we have the tooling built on top of it to be really handy baridakis typing let me eat some vitamins there is a lag youtube is set up on normal so that it has the uh auto captions which are hopefully working and not too far off what else can i say about this stuff there's lots of bugs open lots of things to fix oh melissa asked a workflow related question in dev rich has pizza and is not sharing with us pierce has access control will there be a way to add user password to authorize changes there's already it used as hgtp basic authentication to have a password the user is just always empty it's not secure because it's base 64 encoded across the wire but it's meant to when i was thinking about adding it i was thinking of that person at the conference that's like oh everybody has the same password or it's not password protected and like grief somebody just because they can like this is meant to be just like a little bit of a barrier to make it a little bit harder for that um so if you haven't built remain today and put a dot and file there on an esp 32 export this should work i believe i believe so maddie fun interesting good i'm glad rich did not get enough pizza for the whole class uh somebody want to tell melissa i'm streaming maybe she wants to ask the question in the chat tyson's what cool things you want to add but i've realized should be a separate module yeah i mean like most things should be separate modules um because then you can turn them off and on the title bar stuff i wanted to have everywhere so it was consistent across everything um that's what my pending pr does and i found a i finally figured out how we can get i've had this problem where in the ci we run out of space but on my computer i don't because i have a different version of gcc and the libraries and dan figured out that my version of live gcc in arch Linux is dot os compiled which is for size whereas the arm provided ones compiled for o2 which is like faster but not smaller um and uh i finally figured out how to just i literally copied my live gcc from my computer into the repo and for samd21's we'll use that and that saves like 750 bytes uh which is pretty awesome so uh yeah title bars title bars will be coming to all of the stuff all of the builds will have the title bar output um dan had really good feedback about what i was putting the error line number in the top um and there's more he thought it would be good to have the line number and the file name which i was doing line number and uh the exception name um but it makes more sense to do a file name so i think i'll have to follow up with that um mani t says i think if we were to add some capability for this in micropython perhaps we'd implement it in micropython a lot of it's already a microbot uh thinking a lot yeah you could do that um the reason that we do it natively in circuit python is because we want it to run all the time um not just when python code's running right like we want it to run independently of the user python code so um but it's uh like yeah for sure just uh steal our code if you want it's not great code but it works um thanks for hanging out patrick glad i could guest host it will not deep dyes won't be a regular thing but i'll try to find a time for whatever i do next year that works for some folks okay for ssl rich says the reason i thought it was so important because many apis only accept ssl requests um which is down generally a good thing yeah i'd love to do that it's important but it's difficult to get right and consumes resources yeah i mean we'll probably want ssl support i don't know how it works with the local i i don't know how ssl works when you're talking about local devices i just it's a gap in my knowledge oh i got a new dev board delivered i'd rather uh i take it mod micro web socket wasn't useful i didn't look too much into it i i looked enough at web rebel to know that it was like muxing file transfers over the web socket um there's literally an mdn page that's like how to write a web socket server so yeah pierce is 750 bytes from the same you don't know yeah it's worth it maker melissa asked in circuit behind them dev looking at web workflow circuit by the code it doesn't look like there's a way to provide an offset in order to write a partial file like we do with bluetooth would this be something that would be difficult to implement it wouldn't be that difficult to implement it seems a lot less important to me hopefully she's watching um a lot less important to me because it's uh like wi-fi is much much much faster than mealy um we could do like i don't know what the right i don't know what the like the proper http way of doing it is but we could have a custom hair to heather to do it but i would just send it all again like the wi-fi stuff is way way quicker than mealy i don't i don't think it's that important there is the like stuff to to like pick up a download where you left off which maybe you are watching great thank you melissa i don't know the right way to do it i would say start an issue and we can look into it um we can certainly do it internally right like because we're doing it for mealy basically you open the file to right you seek into it and then right from there so we could do that but that's yeah that's a missing piece and we don't have file reload nerdoch also had the idea of doing web dev but um i haven't looked at it or i don't have an idea of how much of web dev we would have to implement it we'll implement to actually have it work um so we can do it but i yeah i i would do it without to start but yeah the mdn oh i know what we should do mdn web socket these are definitely just like my resources they have a how-to this is writing writing web socket servers h2tp range requests range offset is amazing for downloading over slow wi-fi yeah we could look at that that seems like it could be handy yeah i'd say file an issue i'm running out of time though you have to understand that the next two weeks i'm only working i'm only working for two more weeks and i'm taking a day off each week at least this is like overlap where both my partner and i are working but we're gonna have some help to to watch the kiddo she's not my partner's not working full-time either i just gave a tour of the code somebody else could add it about doing partial downloads when i checked the board's libraries versions oh yeah just like downloading the header it's pretty quick though right like i guess if it's unreliable resuming is nice family first 100% okay let's um since nara doc linked me to this let's clone it circuit python web packager i'll leave that open okay clone nara doc python web packager python m hd server see that wasn't so bad i'm so lazy it's eight thousand ah but i want to go to workflow hmo ooh excited for me to have a long break yeah i'm excited too i'm excited to just yeah spend time with them it's always unreliable because the entire web duct taped together yeah but like it's pretty quick and the most of the files are going to be delayed yeah i like this warning how do i okay they're this is the odroid go oh look at those those are pretty library bundle i want install the dependencies that's missing install yeah my web skills are so basic this is much nicer than everything i put together it's going i should have dev tools open and hey oh wouldn't it faded certain number is 200 lines higher than the file i wasn't looking at yeah expecting failures no fun neat okay so if i go back to file browser and i look in live oh there we go somehow it kicked me out to the wrong directory but we can see ate a fruit bitmap font size zero because it's a folder i don't know why it's doing that oh look at this the python the snake icons neat and so if i look back at the usb version remember this is actually serial but i can do import os os dot lister we can see the stuff i uploaded and then if we look at live oh it's not what it's not in there oh this i'm i'm on the wrong device yeah because we uploaded it to this device that is on the wi-fi so we uploaded it here that's not even plugged in i'm still getting used to that yeah it's helpful to find people that are good at things that you're not good at that and he's been really helpful with the css stuff and i'm excited to see all this stuff from near dock too what's this last tab installer ah this is what looks for code up i but my code up i doesn't have any missing stuff because it's just a print see that's what that's where i kind of like not super update um let's see what else is there taking any more questions i could try to fix the one bug but my brain's turning into mush oh you know what i could chill how much since deep dives tend to be all about have we synced with 119 yet we have not we want to focus on circuit python 8 before we do 119 yeah and near dock says that's that'll be circuit python 9 because we'll have to do a major version bump um i'll have to do a major version bump with that interesting using a prompt for what device you're on um let me unplug this yeah the mpy okay so i've been reinvigorated on the on the watch front um part of the reason is that there's the bangle j s 2 in this shop which is a this is off um but it's a it's a watch that has an nrf 52 840 in it i want to add circuit python support for it but i haven't gotten that far i gotta get uh get some things figured out but i the display in there is like a trans color display and so i went on amazon and i i looked and looked and looked and figured out that there's also this watch which is an amaze fit dip s light um that has a trans collective display as well and i was like oh like i just need to get this display so i can have it as a on a breakout board and so i opened it so this is the front of the watch that i got um obviously it's off but it turns out the display is a different display it says like i'm on product showcase mode it says like some name of display it says giants plus so it's like a different type of trans selected display which is kind of a bummer but i was looking at the fcc stuff and here's the here are the guts of that watch um here and there's this like canister and in the fcc they take the canister off um and it's a dialogue bluetooth chip which i had not worked with before um um and i so i looked it up and it's a da1469 um dialogue chip it's an m33 and it has 512 k of ram which is quite a lot it's more than the nrf52840 um and it's in these bitbest lights according to the fcc i i haven't taken the shell off yet but i want to um and there's like test points on there that like one of those has to be swd um and so it seems like it's definitely like circuit python capable um so yeah i went a little like i'll just port circuit python to it i haven't started it yet um but it's on my radar i bought a couple more of them so that i have ones that are kind of not torn apart um yeah re doesn't have any ari um and i also sorry if we'd smack my lips digikey has da1469 695 um they have a dev board for it so i just it just got delivered um this one here and oh two other things that i looked up about this chip this is my job right my job is to port circuit python to new chips so it's good that it's still tempting i laminated does not want me to do this i know that um are these dialogue tips even on the radar are makers i don't know um does the watch have a heart rate monitor associated with it i think it does if you look at the back like there is definitely like a window for some sort of sensor um so looking at that i just got this dev board um which i could actually run and get but um yeah i don't think they're on radar but i did look nimble has support which nimble is the blue the bly stack that espresso fuses which we're using on the esp which does have this problem that we don't have server support yet which is unfortunate um and digikey doesn't actually have the chips and stock as well um yeah keith i actually got rid of my we balance board so or there's one there um so yeah uh i want to do the bangle j s which is neat but then i got distracted by these watches you can buy them they're amaze fit bip s lights they're 40 bucks a piece um from them and they're 50 bucks off amazon um i was looking at a garment so i was like have i spent more money than just buying the garment um but i'm like this watch that i have now as a garment and i really want to have custom be able to customize like how it notifies me of different things so that's kind of my motivation and i can't sleep with my watch on because the heart rate sensor like sometimes i sleep with my watch on my face and it wakes me up so i like want to be able to like customize it all um so yeah i picked up one of these dev boards i have lots of dev boards maybe i'll get to it um did i finish my thought i didn't finish my thought nimble has support for it already and tiny usb has support for it already um so yeah that's that's a pretty good start like if tiny usb already has support for it um that's pretty neat um yeah mark says almost every project i do i realize it would be cheaper to buy commercially oh yeah and if you consider the time i spent on it it's like certainly a time sink um um yeah maddie t says the tt go uh watch t watch 2020 v3 um is a good one too yeah i need to order one of those um and not xor gave those away for i'm sure you know this um tt watch 2020 v3 is what they use in the and not xor badge for this year and micro python's running on it and if you don't know this i'm shocked um and not xor micro python what is the maybe they don't have it here i don't remember where i saw it um it's like it's like brad pit brad pit dot com what actor is it they have some random site which is where the manual is um yeah dylan says if you get circumvent the running on the watch will you be able to do a write-up on it yeah i'll it'll be in the main line and you'll be able to install it like i'll i'll do it do it properly tt go doesn't have the trans reflective displays though which i do like oh electro dermal activity which is heart rate neat apple watch i used to have an apple watch the thing that bothered me is that it's a poor watch like i want a watch that's a watch first and then second i wanted to notify me when i get things on my phone which is why i like like this one's pretty good because it's a it's got it's a garment that has like a watch face and then if you tap it like there's a there's screens underneath the regular watch face um it doesn't work that well and you can't read the screen in the sun um oh yeah the pine time i have that too it's right here i'm on this watch thing has been in in the works for a while i'm just like circled back to it uh this one's a dev kit though um and it's yeah yeah i'm i'm very much in the one yeah like i've got a number of them on my desk the dialogue has 512 k of ram which is pretty awesome um and i don't think they're that expensive either like the chips aren't that if you can manage to get them so yeah that might be my i'm just gonna touch this i'm just gonna go do this for fun but my my task in the last two weeks is really to get um web workflow as far as i can and um fix bugs fix all the bugs like we have um actually you know what i might have it's um yeah i don't remember what it is and my other browser but if we look at issues and then milestones 8.0 like we have 52 open things um so there are plenty of bugs for me to hunt the next two weeks i i will try my darnedest not to do the dialogue chip even though i like starting with the tiny usb example is is the place to go um um ltt reviewed a pretty neat smart watch not too long ago watch first smart second looked like a watch too did it have the transfected display because my issue with this one is i can't see it in the sun it's like some of the issues i have are like it doesn't show the notification for very long it doesn't show the text of the notification by default just like all all why i was like i i'm not gonna get another garmin like there's the four runners have the transfected displays which are great but um if your software doesn't show your notification long enough then that's not ideal um hello randall i don't think i said hi yeah this is me just guest hosting i'm not going to be doing this regularly for a bit more uh but yeah the bip s light looks kind of neat and i know that lady aida has looked into sourcing some circuit python capable watches at some point too so there's a chance in the future at some point we'll do circuit python watch officially okay lots of bugs move support i should probably do before i leave i'm like closing like five with this next pr like i fixed this one this one is will be fixed this one will be fixed so um thawnee the thawnee dev asked for a way to identify or correlate a serial port with a uh file system out and i just added to boot out dot text the uuid or the unique idea of the device which you can get through the repel as well so you'd be able to match them that match them up that way um this is casable disconnects i think is just network quality which kind of is unfortunate um title bar include file name i want to do and uh title bar update after reset to oh yeah i was actually gonna merge it in this pull request if we can yeah turn on title bar and and say can i merge it oh it survived yes i merged it okay let's merge merge pull request because you know i like to merge things right before i stop working right okay we had an eye open oh if i refresh six open yay i never won the smartwatch until now but a circuit python smartwatch is pretty tempting yeah the other thing that's cool about hey anthony um the other thing i like the idea about circuit python watch is um like we have beally workflow now so if it's beally only watch we still have a way to modify it and then also if the like the ttgo is a esp32 so like all the web workflow stuff we just saw um would also apply um for that which would be really neat um i do have like an open source watch but this was like what this one had this it's an nrf i think from an open hardware summit or something i think this actually runs circuit python as well naredoc says did i mention tg watch i didn't have it mentioned tg watch yet oh open source not dumb yeah tg tech you did this didn't didn't they it's like beally i haven't thanks for the link all right any final questions hi david i don't know the next time i will stream but if you want to connect up with me the discord's the way to do it i'll be around the next two weeks um and then i will try to be off discord as well when i'm when i'm on leave um yeah i'll try to avoid work email as well uh this has been uh me guest hoping hosting deep dive um question for all very best instructions for experience c and c++ dev get up just build speed building circuit python there is also um i don't i think today i'm linked you to this docs dot circuit python dot org there's some it's a little dated now but there is a project structure this might be inherited oh no this is updated project structure might be interesting um and i'm also thinking of like this adding ios support to other things so it talks about file layout of the repo but the network stuff that you're going to want to do is is not simple um it's more like towards the socket pool wi-fi radio stuff on esp it's yeah adding network support is is hard and it's kind of like the first time that we've abstracted it away um um yeah i think these are good reads still uh all right let me switch cameras thank you everybody for hanging out uh this has been deep dive with scott you can check me out on the discord um adafru.it slash discord i'll be around there the next two weeks and then i'll be gone for 12 um not gone as from here but i will be offline trying to stay offline although i will uh yeah talk rich is talking about systems level being your happy place i have a couple projects in mind if i do find a little time while i'm gone i might uh poke at some things either watches or fpgas or kind of like top of my list um so maybe when i'm back we'll have some cool stuff i think usb host is on the docket for when i'm back as well depending on web where web workflow is um yeah if you want to support me uh you can go to adafruit.com and purchase some hardware there um adafruit pays me to do these streams they pay me to work on circuit python and they are also paying me to take leave uh not all of it but most of it um what else uh that's adafruit.com you want to check out circuit python you can do circuit python.org uh hit the downloads link and you'll see all the different boards that are supported uh for that as well um and yeah i i should pet the cats like i normally do shouldn't i uh it's been great uh hanging out i really appreciate you all i'll see you on the discords um have a good fall if i don't see you before i take leave and please if you find bugs or have suggestions uh circuit python issues are the way to go with that as well um maddie fpgs are hiring new list too so the one that i'm really interested in let me see if i can nerd stamp you a little bit is this one i think it's this one it's the zinc so the zinc is a xylink seven series but it's also got a hard cortex a like quad cortex a in it and hard usb ip hard i squared c and bus i o or not bus i o i squared c and spy so theoretically we could get circuit python bare metal on the hard ip and then do some cool hybrid fpga stuff there too so that's why i'm interested in that okay time to switch cameras pet some kitties and get out of here have a great weekend everybody cat cam i think it's pretty rare actually that uh then is here still i have a quick logic yes s3 and it doesn't have hard usb which is disappointing for me um i asked them about that like you could put usb on the fpga but then you're basically filled up the fpga so we'll see we're moving away from the strict usb dependence so time will tell all right with that i'll sign off and see you all in the future and on the discords have a great time