 Okay, folks, we're going to get started a little early because I'm a little rusty on streaming. Well, it looks good. If you're watching this after the fact, please check the description. I'll update it with time codes. We're a little early. We've got about six minutes. I think the stream looks good. So we'll just sit tight. If folks have questions, or maybe we'll just get started. No, I want to wait for people. We have a schedule. I'll wait for people. But yeah, so if folks have questions, drop them in live broadcast chat. If you're watching this after the fact, just go ahead and skip six minutes from now and we'll get the preview of Circuit Python 8 actually going. I think we're... So yeah, drop a note in the chats. Mm-hmm. Live on YouTube and Twitch. Thank you, Mr. Certainly. Thank you to Shippu for the link as well. Last time I streamed last week, I had some trouble getting going. So video looks good, which is good. Hi, Salman. Thank you, DJ Devin. I'm live. No worries about starting now. I know, but we have a schedule. I don't... I like to be on schedule. Any questions? Live on YouTube. Thank you. Question, Mark says, are you getting more than three hours of sleep a night yet? For those of you who don't know, I'm a new dad, relatively new dad. I have a four and a half month with your old and I'm starting my second set of Paternity Leave next week, starting next week. So this is kind of like my last thing because my partner is going back to work. And so I'm going to be on full dad duty. It sounds very good. Thanks, Charles. I'm actually... I've got the mic actually attached to me, which is good. But yeah, I'm generally getting maybe six hours straight-ish. I do... Yeah, I do sleep in the kiddos room up until a point and then my wife and I swap. But I'm getting... He's sleeping pretty well. He's sleeping pretty well. I'm very excited to spend more time with them too. How are the sprints going? Looks like there's some people working on the libraries, but I haven't seen anybody working on the core stuff. I did fix a bug myself, which is good. I actually... I can show... I'll show this early. Just a tease. Good switch to... Not that button, this button. Yeah, yeah. I tried to hit record, now the camera's upset with me. You can still see me. There was a bug where this terminal stuff didn't work on the giant screen, so I just fixed that. New balance of fanny pack and knee-high socks. Yes, I don't have all those yet. I wanted to do... Oh, I did product showcase. Yeah, and if you want to join the chat, the Discord chat is the middle one on the right there. But yeah, I just fixed this terminal stuff on this big display, and we'll get into what this is exactly in just a moment. I will start right on time. I'll tell you that, at least based on my computer clock. We could do a brief cat cam, Vin and then Spookus actually too far. He's there on the floor. Hamzabs! Everything is going well, thank you. The kid is growing and growing and doing more and more every day. He's rolling from his back to his tummy now, which is cool. All right, I'm excited for Circuit Python 8. Should I actually add a... If you didn't know, Adafruit slash awesome Circuit Python, and then there's art. So you can find all the different posters and stuff in the art pack, just a drop box. You can go to version posters, and we'll go to eight. And we'll open it up. I want to actually full screen it. I want to just... Whoa, two full screen. Go back and do the PDF. That's kind of what we want. Oh, you can't see it anyway. You're looking at cats. Circuit Python 8. Ooh, learning about beekeeping. That sounds interesting. Vibing with the cat cam. Great. Okay, it's 12.30. This is going to... I'm trying to do a fast stream. And those of you who have watched my deep dive know that I do two hour long streams. So that's going to be good. Let me just turn up the brightness on this light here, since it's actually quite bright behind me. Okay, so today we're going to talk about Circuit Python 8. For those of you who are new to Circuit Python, we tend to do major releases where the top, the leftmost number gets incremented by one. We do that about every year, year and a half. And Circuit Python 8 is very exciting. This is a bit of the poster. The poster is vertical, and you can't quite see it all, although I can zoom it out. But it's a collaboration. The poster is a collaboration between Espressif and Adafruit. So this is the Espressif logo with Blinka kind of as the waves, which is very cool. So one of the themes for our Circuit Python 8 is a lot more expressive support and Wi-Fi in general. Wi-Fi stuff, which is hopefully very cool, I think is very cool. So today we have 25 minutes to go over five main things that I wanted to talk about for Circuit Python 8. That is certainly not everything. So if you want to see everything for Circuit Python 8, Dan just did awesome release notes. So you can go to GitHub, Adafruit, Circuit Python. This is the stable release. So we're not stable yet for Circuit Python 8, but we are in beta, meaning ideally we're not changing any of the APIs, and then we're just fixing bugs or getting close to fixing bugs. So you can hit releases here. And now you can see this is the Circuit Python 8.0 beta zero notes. And they're awesome notes. Thank you to Dan for doing this release. I asked him to do it because I knew I was doing this dream, and it's been a while since we've had a pre-release for 8.0. So this is very exciting. So if you want to see all the details, I'm not going to cover everything today, but this has some details on that. And I also want to say that I want to preface whenever you're switching from Circuit Python 7 to Circuit Python 8, the point of major versions is that we can potentially cause you to need to change your code or update your code. That major version number, that first one is really like, hey, be aware that it may not work out of the box from major version to major version. So there's a heads up. Let me just go over it. I wanted to cover these because API breakages are the real reason that we do major versions. And also, you've seen probably MPY files using Circuit Python. These are a kind of pre-ish compiled version of your Python code. And that version format will also change on these major version boundaries. So let me just be aware of that when you're doing an upgrade for a major version that sometimes for MPYs, you'll need to also update all of your MPY files as well. Between 7 and 8, I don't think that's the case, but between 8 and 9, you will definitely need to do that. And that's usually due to changes that we integrate from MicroPython. So Circuit Python is late to the game is Python for your microcontrollers. I showed a screen off here just before we kind of got going. This is a screen with a little bit of a chip there that, yeah. Oh, Hemslove says, I went to the Blues wireless presentation and they have some DFU code that works wonderfully. Yeah, I'll have to check that out later. I did not watch it myself. Okay. So things that are changing, these are the things that you have to be aware of. One wire is no longer in bus IO or BitBangO IO, it's its own module now. We did that so that you'd be able to, we'd be able to turn it off and on. Pulse out. So Pulse IO, Pulse out doesn't take a PWM out in anymore, it only takes a pin. This was caused by ESP32S2, does it a different way that's not necessarily PWM. So that's been changed. IceGridC peripheral is being renamed IceGridC target. In 8.0, it'll be available as both, but in 9, we would remove peripheral. And the reason we did this change is that they came out with official guidance on what the terms are, rather than master and slave, which they were originally and we've been renaming. Autobike brightness was removed. There's a, there was something else that I can't think of, but yeah, so check the release notes. If your code doesn't happen to work, release notes are are really well written. They cover a lot and they can help you get your circuit Python 7 or earlier code running on circuit Python 8. Of course, if you're coming from a major version like 6 or 5, you'll want to check the release notes for the next version as well for those changes. Okay, so that's the first thing. The first thing I wanted to talk about was just API changes that are coming in circuit Python 8. Check the release notes for being more thorough than what I just did there. The next thing I wanted to cover here is the title bar status. So I'll just pull this up again. And what you can see here, and am I in product showcase mode? Yes, I was. Okay, so this is actually, let me switch the scene. So what you can see here is we've reworked the layout of the default terminal in circuit Python. So this is coming in circuit Python 8. What you'll see is that there's the Blink a logo and then this is kind of what the top line here is what we call the title bar now. And this will actually show up if you're connected over like screen or to it will actually the information here will also show up in your terminal because it uses kind of like old school standard codes for setting that that title bar. So circuit Python knows how to do that. You'll get kind of from left to right most of the most important information we think to the least important. So this is for example the execution state. So is code.py running or is it done? And then what version are you running? The dirty is because I fixed a bug and I haven't updated it to the official version. But you'll also see things like the Wi-Fi status and the BLE status up in this top bar. And then whereas before below Blink there used to be a column of emptiness and now that's gone away because we now have this like scrollable area where the regular serial output now shows. So that's the first change I wanted to do and let me just show you a couple other examples of this before we move on. The first example I wanted to show was the clue. So the clue is a micro bit light like micro bit form factor board. So I'm just going to plug in the board here and what you can see with the reason I wanted to show this here is one you can see that BLE status is up at the top. It says BLE reconnecting. So it's like trying to reconnect to my phone. And then you can see that code.py is running as well. And so if you're running a different file that will show there too. So that's the like nrf example giving you more information about what's happening on the BLE side. So there's that. Next up I wanted to show well I like showing it on this one. So this device here is not made by Adafruit. I should say I'm sponsored by Adafruit. This is a device that came out a number of years ago called the Odroid Go. And it's an ESP32 chip module here in a like Game Boy-esque form factor which I've been kind of obsessed with Game Boys for a while. You can find other videos about that. So I'm going to turn it on and I'll just show you that it has the Wi-Fi status up in the bar. So you can see it's Wi-Fi off but it should actually turn on and now it has the IP address of this device here. So this was really the motivation for it and this will segue nicely into the next thing that I want to talk about which is the web workflow. The web workflow is... So Circuitpy found between versions three and six we were exclusively USB based. So Circuitpy Drive connecting to Serial over USB. In Circuitpython seven we introduced a way of communicating to Circuitpython over BLE which I just gave a hint to, a nod to. The reason to do BLE was that it gave access to Circuitpython from devices that didn't have USB hosts for like phones and tablets in particular. So we've been still continuing to work a lot on how to do Circuitpython from those devices. It's not as simple as USB because you kind of have to create apps that allow you to edit on the device. So Circuitpython seven was USB and BLE and then for the workflow. And then Circuitpython eight introduces a Wi-Fi, at least for ESPs currently, a Wi-Fi workflow and generally a workflow is kind of two pieces. It's how do you edit files and then also how do you see the serial output. So yeah, Todd Bott says these are totally unavailable now. Yeah I picked it up ages ago. I had to like dust it off and stuff which is a bummer but it shows off kind of something that I guess I'll do kind of in tandem with this which is we also have ESP32 support. So talking about we in seven we supported ESP32 S2 which is was it was the first chip from Espressif that had native USB. So we could still do the Circuitpy Drive style workflow and then we added once we had more and more of these S2 chips we also had an S3 chip. It became clear that having a lot of these devices connected to Wi-Fi would be nice to edit kind of over the air. So Jeff deserves credit I think for talking about NDNS which is a technology where local devices can give themselves names that are you can look up in your browser. So MDNS was really the thing that was like oh I understand how we would do a Circuitpython workflow at this point. So I'm going to leave this on it's going to be on my desk and I want to show it off. So ESP32s we didn't support for the longest time but because we now have a Wi-Fi workflow so the two things I'm talking about are this web workflow and then also new support for the ESP32 and the Odroid goes a perfect example of like a board I bought a long time ago that had an ESP32 that now Circuitpython can run on because the ESP32 does not have does not have native USB and so it couldn't do the Circuitpy Drive which is why we haven't supported it until Circuitpython 8. Okay so let me do a quick demo. So in theory if everything is working what you can do is oh I should start with so it's a little tricky to get started because you need to do you need to set your Wi-Fi password network name and a password for your to prevent people from changing code on your device. We Carter just hammered out this quick start guide which I will link in the chats and also in the description but it gets you to the point where the device will connect to your network like I showed earlier with the Odroid Go and also set up your example so that the web workflow turns on by default. So I've already done that in this case I won't show that now but this is a good guide for how to do that. So what I'm doing here is I'm going to do Circuitpython.local so this is this uses MDNS which is a technology to say hey is anybody called Circuitpython and all of the device Circuitpython devices on my network will reply oh yeah that's me so we can see here that we it redirected us so the web server redirects Circuitpython.local to its custom name for the particular device so I have two devices on here I have the Odroid Go I showed but I also have an ESP USB s3 USB dev board as well so you can see here that the Odroid Go is the first to respond so that's what we're talking to currently and then we also the devices can discover each other so the device that you get to with Circuitpython.local can then tell you the names of the other devices so I can click this and now I'm connected to both of my Circuitpython devices thank you foamy guy I may want the screen thank you I'm really glad we have a live chat okay so this guide did I even I didn't show release notes either did I so release notes are here Adafruit Circuitpython releases and then this learn guide as well as is the place to go for how to get bootstrapped and get going on this Wi-Fi workflow stuff so I've typed in Circuitpython.local and then it redirected me to this particular domain so this is like a unique identifier for the given device and then I clicked the list here of devices on my network to open a second tab for the other device that's on my network and you can see version numbers you can see that the Odroid Go is using a slightly older version so I'm going to want to use the demo that actually has 8.0 he didn't see the release notes either I'm sorry we with my deep dive stream we talked about having it so that like the chat could could control what screen I'm showing just because it's not the first time I've done that so thanks for bearing with me let's keep going because we have 10 more minutes and I do at least want to note so we talked about API break it is I have a list that's what I'm looking at the other thing I wanted to give a shout out to is the ESP camera support but I don't actually have a demo for that so we've we've got time so there's two pieces to there's two pieces to a workflow in my mind one is browsing files so to do that you would click the file browser and this is the password you set in your .env file and this is going to like raise the bar a little bit so that other people can't interact with your device without your permission do note this is not secure because this password gets transmitted insecurely on the network so be aware of that do not use a password you use anywhere else I think I remember which one this device has and I say that and then that's wrong you use the you leave the username blank there we go typed it right Mikhail asks do ESP 32's support wired ethernet with circuit python 8 they do not not that I know we haven't tested that at all and then Mr. Jaco Mola there's an issue with the ESP 32 s3 with iSquaredSky will that be fixed in v8 it's not fixed in beta 0 but I believe there's an open issue so we'll hopefully fix it before release if you want to check out what we have what we would like to fix before circuit python 8 is stable you can go to github.com slash eta fruit slash circuit python slash issues hit milestones and 8.0 and you'll see that we have 32 open issues still so that's why it's a beta that's not why that's why it's not stable but also this is a great way to track kind of the things that we're aware of and ideally we would get this milestone down to zero before before we do it stable but sometimes we'll shuffle issues out as well but I think I think there's an open issue here that we hope to fix before it's stable some of these bugs have issues are tricky because we depend on espressus code and espressus code may be broken and so we have to collaborate with them on getting it getting it fixed um okay so let's keep going so here's the file browser um I don't actually know what's on here I do mostly testing so for example let me say I want to well upload something okay you can see this so I'm just going to pick a folder from a bundle and I'm not going to pick a whole one but say we want to upload the bitmap fonts which is not on there so I clicked the middle choose files which is the for picking a directory so I'm selecting the eight of fruit bitmap font and I'm going to upload and we'll confirm are you sure you want to upload all six files and you hit yes and now it makes the directory and there's a little progress bar here as it uploads each file now this is not like how much of an individual file is uploaded but rather just out of the six files how many are uploaded if you want to upload an individual file you can select this and let's just upload bdf and now we have a bdf pie as well um if you want to view a file you just click it and it pulls it up which is pretty neat um it if it's an html page it will actually render so this could be a really cool way to do some basic web hosting without having to do circuit Python code explicitly for it um so eight of fruit bitmap font has been uploaded um and I could just delete that whole library and that updates as well and let me see so let's go back up a step and actually let's go all the way back run another time so that's the file piece the other piece is the serial so you can hit serial terminal um and now we can do the REPL um and this is all everything I've shown so far will work even if you don't have internet this is all um able to run offline however a secret thing that I mean to add a link to here that I haven't yet um hot off the press you can go to the URL slash code and that will open the full the full code dot circuit python experience dot org experience on the board itself so what it's doing is it's taking a little html page downloading a bunch of javascript and updating it to do everything so we can see hello youtube viewers and it's not I think it's a little broken but it still should work so you can see here it says hello youtube viewers so it it automatically switched when we hit save and run from the code editor to the serial link and you can see that it also has the title title bar stuff is parsed as well so this is kind of the full full circuit python editing experience when you have network everything I showed before this is just in this like offline mode that's like super basic but meant to to be accessible even if you don't have internet um and hopefully hopefully that works okay on mobile as well um so it's pretty neat that is the web workflow in a nutshell and one of the larger pieces of the circuit python 8 release yeah we can leave that um what else do we have to show we have three minutes I just wanted to give a shout out in the last three minutes we had generic camera support in circuit python 7 that jeff added and in circuit python 8 jeff has added more esp specific camera support so there's this c library called c library called esp 32 camera and in circuit python 8 we have a specific module for that library which gains us a lot of camera support for a relatively simple coding on our end because we're using that library on esp chips only so check that out if you're into camera stuff you may have seen in the issues list that there's a esp 32 i uh board that is now supported as well so um because we have web workflow we have and we have esp 32 camera support we also support esp 32 chips which is is a big big deal because there's a lot of boards that have been designed with esp 32 um and that this web workflow will just work with hopefully um and you'll be able to auto discover them through the mdns lookup here uh that they like the odroid go that we're seeing here is just on battery not connected to anything um and I think that's it um there's a lot more in circuit python 8 thank you again to dan for doing the release if you want it to be more thorough um if you want more thorough information you can go to github.com slash adafruit slash circuit python slash releases if you want to try it out we did just do the release yesterday so you can do circuit python.org slash downloads and that will give you a link to all of the boards that are just supported by circuit python um and the stable release which is 732 and the latest 8.0 beta zero or newer if you're watching this after the fact um so please give it a try uh go to adafruit github.com slash adafruit slash circuit python generally circuit python.org is a great place to do uh to check out this the current state of circuit python if you want to chat with me a core developer or other core developers and other circuit pythonistas you can go to the url adafru.it slash discord join us there chat about circuit python um if you want to support me and a number of others who are paid to work on circuit python full time um please go to adafruit.com and purchase hardware there the esp32 boards will hopefully be more and more supported in the coming days and weeks as well so with that um i'll say thank you to everyone for hanging out for this quick look at circuit python 8 um personal note i'm taking 12 weeks off starting uh next monday so i will see you all in 12 weeks in november and uh enjoy circuit python 8 and the web workflow hopefully i didn't leave too many bugs uh i'll see y'all next time have a great rest of circuit python day oh and i should do a little cat camp because it's tradition pips pit spook he's my co-worker all right see y'all