Hello, there we go. If you haven't watched a deep dive before, make sure you check the comments below for time codes. It would be a little rusty. I took three weeks off, so give me some slack if I don't do it quite right. Yeah, so if you're new here, we're going to get going in a few minutes. We're not going to get going right away. I wanted to start early, particularly this time, because it's been a minute, been a few weeks since I streamed, so I wanted to give myself a little extra time. So hopefully you can hear me, and we'll wait for folks to come in. And yeah, check the discussion if you're watching this after the fact, and don't want to see me just chit chat for a while before I start chatting some more. It's kind of how they go. Let's say some hello's. It's weird not having my headphones on. Hello, shuttle pod one. Hi, Jonathan Kay. Hello, David. Hello, Gary. Hello, Mark. Thanks for joining in, and a thank you to Seon, unexpected maker for pinging me earlier, because I had forgotten to make the YouTube thing, which I barely remember to do my blog post yesterday. So sorry about that. But yeah, so we'll hang out a few more minutes. Hopefully the folks that got pings will stick around, waiting for some housekeeping. I want to wait till 2. Hey, Johnny. Hello, Chi. Hi, Beata. I hope everybody had a good holidays and New Year. I'm excited for 2022. Hello, Atheer. Did I say that right? Hello, Dave. David says happy New Year, everyone. Hi, Paul. If you're only in the Discord or if you're only in the YouTube chat, I recommend joining the Discord as well, which you can do by going to the URL adafru.it slash discord. I'll say that in housekeeping again, but I'm getting it back. I think I'm running the meeting next week as well. Hello, Thomas. Hello, Bruce. Hello, Alberto. Hello, Dexter Starbird. I'm getting my haircut after the stream. I waited too long. It is very much too long. So that'll be good. I had chili for lunch. It's a snowpocalypse up in Vancouver. We just have lots of rain. It's not cold enough to snow. That was a couple of weeks ago. We got lots of snow. I've been more and more involved in state legislation stuff that's happening. Maybe I should talk about that even though it's not Atheer Fruit related. Oh, cheese and self-isolation. So this is a very welcome addition to your Friday evening. I'm glad we could hang out. This has been, doing these streams has been so much fun. Hello, tech for kids. I'm happy to, after a three-week break, I was getting a little burned out doing it every week, but three weeks break, I was like, you know, I'm ready for deep dive. I'm excited about it. With or without beans, the chili? The chili definitely had beans. It's a vegetarian chili, so. Ah, Bruce is at Whistler. More snow in the valley, no word of it at all. Oh, yeah. Hey, John. All right, it's 201. And David's patiently updating the time code for me to do housekeeping. Hello to Shippu. So, happy new year everyone. My name is Scott and I work for Atheer Fruit on Circuit Python. Atheer Fruit is an open source hardware and software company based out in New York City. I work remotely for them and I have, since I started, based out of here in Seattle. I'm a little rusty at all this. So, give me a little patience. Atheer Fruit does open source hardware and software. I particularly work on the software side and more specifically on Circuit Python, which is a version of Python designed for small and expensive computers, mostly microcontrollers, but I've been doing a lot of work to do the raspberry pies, which are not necessarily considered or treated like microcontrollers, but turns out you can do that generally. So, I work for them since I started. Yeah, I've worked for them remotely since I started. I have this bad habit of dropping letters and words when I talk, so it's the worst if I drop the word not. I'll say, oh, blah, blah, blah, blah, blah. Oh, wait, there's a not in there. I meant the opposite. So, that's me. If you wanna support me, you can support me by going to ateafruit.com and purchasing hardware there. They pay me to do these streams. They pay me to work on Circuit Python. So, please support them and help us keep the team we have and expand the team as well. If you wanna chat with me and a lot of others, we do have an ateafruit Discord server, which is great. You can join that by going to URL, A-D-A-F-R-U dot I-T slash Discord. We're there all week. So, if you wanna chat with the folks that you're seeing in the chats right now, we're around generally. So, I'd encourage you to be in that kind of like more persistent chat space than what we get with the YouTube chat. But, I'm happy to have folks in the YouTube chat as well. If you're new here, welcome. This is a deep dive. It happens every week. It's normally Fridays at 2 p.m. Pacific. Occasionally, I'd shift it to Thursday, but more often, I've actually been taking the week off because doing like every Friday for months on end is pretty taxing. But, it typically goes for two hours or more, which means that we've got plenty of time to just talk and talk about different things. I have a decade's worth or more of software experience and the hardware stuff's relatively new, but I'm totally happy to take questions that folks have and talk about topics that folks have. So, if you have those, go ahead and put them in the chat. We've got a couple hours, two hours here to go over them. And last piece of housekeeping is that next week will be on Friday as well. I'm kind of planning on doing kind of a two-parter sort of thing. So, today I wanna like recap all the things I've been working on and give you an update on just where I'm at, particularly on the Raspberry Pi stuff. And then my plan is that next week, well, the stream next week will be all about my CircuitPython 2022. And I'll also talk about the other CircuitPython 22s that have been posted by the stream next week. So, if you're interested in that, please do it by next week. And I'd love to cover it. Of course, if it's after next week's stream, I'll have it kind of as a minor, like we'll talk about it in streams after that as well. And let me just advertise what CircuitPython 2022 is before we do the recap in case you don't know and in case you can't stick around the whole two hours. So, CircuitPython, every year we do annual kind of planning, planning in quotes, but basically, hello, Cyber, hello, Sydney. It's a chance for us as a community to just lift our heads out of the thing that we're working on right now and start to make sure that we're all headed the right direction and share what we think that those, that longer term direction should be for CircuitPython. So, I like to do that a lot. So, CircuitPython 2021, which I want to talk about later, will be all the things that we said a year ago that we think we want to do. And I kind of want to like see what we've done and what we've not done and whether we have more work to do on things. And then next week kind of will be that like formalize, like here's kind of what I think. Let me say hi to some folks in the chat before you get into this. Zest Exposed says, can you recommend kits for kids slash teens that can be purchased from you and well-documented video and step by step? So, yeah, so what is a great way to do that? Let me switch to keep the questions coming. I see them and I will get to them, but I'm going to take them one at a time. So, this window is a little too tall. Hello, unexpected maker, glad you could make it. So the canonical place to look for projects. So, Adafruit doesn't necessarily always have kits, although I'll show you kind of a good place to start with those, but the learn system, so learn.adafruit.com is a great resource. So I would start here and what I recommend for people is to browse the projects here and find one that looks interesting to you. It may not come as a kit, but it will link you to all of the different resources that you need to do it. So here's like a green goblin pumpkin. This will involve 3D printing and there's categories that you could pick what you want. But what you'll see for all of these learn guides is that they have tutorials on how the circuit works and what the code is and then there's a link to the products that you need to build it. So it's not necessarily, it's not necessarily a kit, but it gives you all the pieces to make your own kit. So that's kind of what I would start is like, just look through here and find what you like. Another good place to start is Adaboxes. So Adaboxes are subscription service and this is all the learn guide stuff. However, in the shop, usually you can buy the Adaboxes at least briefly afterwards. And even if you can't buy the full box, you can buy kind of all the parts in a box. So this is kind of more of a kit than the first approach I was showing you. So you can see here that these are like kind of all the pieces that are in Adabox, generally, not perfectly. And then you can find the, sorry, somebody's chatting me at the same time, it's a little distracted, but it should stop. Yeah, so this is a great place to start to, and then I think that there's, so there's also these shopping gift guides, is another good place to start. This is the one I did, firmware debugging and development. I showed that off in December, but this could be a good place to talk about it. So, young engineers, for example. So yeah, lots of options. There aren't necessarily like long video tutorials for putting things together. Most of them are just like individual cuts of like how it goes together. Okay, perfect. Zestixbos says exactly a resource I was looking for. Great, yeah. Adafruit's really great. A resource I was looking for. Great, yeah. Adafruit's really strong in the written documentation aspect. Hello, Paul and hello, Michael. So John says background, I'm an embedded software engineer in automotive and I just, and just getting started with some circuit Python projects on the side. Question, what is the underlying OS for circuit Python? I can't find documentation on that anywhere. So generally, circuit Python does not run on top of an OS at all. However, if we're doing networking stuff, we may actually have one. So for example, for the expressive port, the ESP IDF is built around free RTOS and so circuit Python will be running within the free RTOS framework. But generally, circuit Python just starts up itself and it manages everything. So it doesn't actually have a kind of, it is the OS more than it's on top of the OS, which is pretty wild and I enjoy that sort of programming. So if you have follow-ups, feel free to do that. Johnny says Sian was probably distracted playing with his lasers. I would be distracted by lasers. Okay, so hello, Keith, the EE, hope you all are well the day. Hello, Hams Labs, just got off a Zoom helping my sister get started with Circuit Playground Express. Awesome, thank you for taking the time to do that. Cyber has a quick question with a quick answer. Cyber asks, does circuit Python work with the Arduino Uno? And the answer is it does not. The chip on the Uno is an 8-bit chip. It has far too little RAM to work. And circuit Python is really designed for like 32 or 64-bit stuff. All right, so David G's got a question that says, is the Raspberry Pi 2W SD card image working if you flash it from scratch? I was working with 7.0 last week. I had a problem with the more recent image. Anybody with a recent from scratch success? So I had a pull request for, and this is a great segue, so thank you, David. And hello, Minnesota Mentat, thanks for joining us. Last night I had a pull request merged in by Dan that I think I broke SD cards on the 2W when I added the pin reset stuff. So it was just merged in last night. It's not working perfectly for me, unfortunately. Let's just recap everything. Oh, I guess you know I don't care if it's open or closed. I just care that it's a PR. So let's take a look at my PRs recently. So this 5,800 PR here is what I think should have fixed generally, Raspberry Pi 2W support. It includes a thing that sets up the never reset. So circuit Python internally has this mechanic for never reset, which is basically says, these pins are pins that you should not reset. You're like, these pins you should not reset ever. Unless there is a caveat, if you explicitly de-init the resource, then it will be allowed to be reset after that, but that doesn't often happen. Generally, circuit Python tries to blanket reset everything between user code runs, so what never reset does is prevent that kind of blanket reset from happening. Okay. So that was done in 5,800, and if you look at the title here, it's also initial Pi zero support. So one of the things I wanted to do before I wrapped up this Raspberry Pi work was I wanted to add support for the original zero as well. So yeah, if you don't have zero 2Ws, but you do have original zeros, you can now try it as well. So I think that answers your question, and now I'm getting more questions in. So Dave AA2 says, hello, is it a big process to install on an ESP32? So circuit Python doesn't currently support the ESP32 without any extras on it. Currently, circuit Python only supports the ESP32 S2 well, and then we're starting to do C3 and S3 as well. And the reason that we don't currently support the ESP32 is that it doesn't have native USB support, so it can't do the circuit Pi drive that everyone basically expects. And then ZestExpo says, are there any dedicated conferences online or face-to-face on the topic? I'm not sure what topic you're talking about. I haven't, I generally don't, haven't been doing conferences at all. I've been streaming every week, so there's a whole back catalog of talking about all this stuff. And if you're new to the stream, which I think you are, there's a really good resource that Patrick and David primarily have taken care of. There's this repo github.com slash Adafruit slash deep dive notes. And it's got historical copies of all the notes. So what you can do is you can search this. And then what Patrick has done is that if you look at a particular thing, you can actually like click these links and it will jump you right into the long video. So you can kind of search this repo, find a topic that you're interested in, click the link that Patrick's had linked up to the video, and then you can immediately kind of watch the portion of a deep dive where I talk about that. David says pie zero are numerous, version 1.2 without the camera are rare, then with the camera then zero W, which one are you targeting? So I have a zero W on my desk, but there's no reason the other ones shouldn't work. Since I don't have camera support or wifi support, all the same build is really applicable. I do have a new PR out that will add a separate build for the non-W version. So this PR here has payonora support and the zero without the W. It also enables full build with which people wanted, which brings in some straggler stuff that we don't have. And yeah, so generally zero and zero W and the chips are essentially the same. Like the Broadcom chips are very much the same across the whole line. The biggest changes are the CPU itself. DCD says I needed to clone the get repo to search the archive. Are there other ways to search the deep dive repo for topics? I think you can just, because it's not a fork, I think you can just do it on GitHub, like cat. Pet the cat, here's a time, here's a time. So if you wanna see all the times I pet the cat, there you go. Chi asked, is there a database of timestamps for when the cat gets pet? So yeah, kind of. And of course you're seeing the, I used to have a heads up that the cat is epileptic. The cat is still epileptic, but he's been doing so well that I removed that from housekeeping. Cyber's got another question that says, just got an UNO for learning stuff. Does Circuit Python have any advantages besides being a higher level and more user friendly language than C++? I think you nailed it. I think that is the advantage. So Python is higher level as you say, and it's more user friendly, which I find it mean that you generally spend less time programming and more time iterating and you don't end up in the weeds of your tool chains and stuff like that. But I think the Arduino UNO is a great place to learn if that's what you've got. You know, C++ is great too. And like Circuit Python itself is all written in C. Which is like, we probably write a lot more C on this stream than we write Python. So I think you nailed it. I think you have a clear understanding of what the advantage is. And yeah, Minnesota Mentat says, deep dive notes needs a 2022 folder. Yeah, unexpected maker says higher level, more user friendly and no compiling. Instant code changes and experimenting. Yeah, exactly. Okay, so, and Randall points out that we have great community too. So join the Discord if you haven't joined the Discord and we can put, I'll drop a link in the, yeah somebody can make a PR to add 2022. Michael points out that Circuit Python has a REPL. So you can actually like interactively program it too. I've always been like less keen on the REPL. I think what I don't like about the REPL is that the code disappears once you're done with it. Whereas that's why we have the auto reload for code.py. So the way Circuit Python works is that you'll have a code.py. Well, you put it on the device and then you plug it in and it shows up as a Circuitpy drive with a code.py file on it. And then as you edit the code.py, so every time you save to it, Circuit Python will automatically restart it so that you can see how the behavior of your device changes as your code changes. So yeah, I think that's pretty neat. So if you have a chance to try Circuit Python, I'd recommend it, but no shame to doing UNO stuff. I kind of wish, I still am kind of curious to see how the 8-bit microcontrollers work. Because there's a lot more to these chips than just the CPU. There's also like the different peripherals and how they work. Okay, so let me wrap up my recap. So let's go back here and stop searching for cats. So I have this pending PR and it didn't build. So I'm gonna have to fix that. But as PyTenor support, it kind of inverts the enable full build.  And then I think this is gonna be kind of like my last thing. I wanna finish the learn guide I started if you like a month ago, I must have started it. So I wanna get a learn guide out on how to try this, but I'm really kind of sick of working on it to be frank. And I'll show you the issue why. So if we go to a label broadcom, these are the open issues. I've kind of tried to segment them by like things I wanna do at some point, but not now and things that I'd really like to do before I like move off of it. So support with a full line of our as per pies. So that's the two zeros and the PyTenora. I also have the three A plus, but I'm not gonna do that. It's a weird board. If somebody else wants to add it, it shouldn't be too hard, but I'm not gonna work on it. USB host would be amazing. And I think that's gonna be spoilers part of my circuit by then 2022, but I'm just, I can't do it now. And Wi-Fi support would be amazing, but I don't have the steam for that now, but where did it go? Oh, this one, Broadcom port for Raspberry Pi 4B often corrupts SD cards. So this is a huge long thread and basically like the SD card's been kind of flaky for me. And that's really, really frustrating. So I've got some debug stuff here. If you wanna follow along, or if you're interested in diving like down deep into the weeds, I'd love some eyes on this stuff. But I basically like, I gotta take a break. I have been working on it like over this holiday break. And I made some really good progress. So like getting the zero up and going wasn't simple. It was kind of complicated because it's an older ARM CPU. So I had to learn a lot about like the ARM 11 CPU that's in the original like Raspberry Pi chip that is on the zero. So I made a lot of progress. This issue has been around for a while and I just, I've kind of poked it an hour here and an hour there and not been able to kind of figure it out. And this is why David's also asking me, did you find an SD card emulator? That's a great thread and it's got a lot of traction. I have not tried any of it. I kind of feel the same that the Raspberry Pi folks who've trained in that the RB2040 is probably a good option. I was, I'm quite surprised that it doesn't exist already. I kind of expect that it does. I kind of expect that it does exist, but like maybe it's like within the SD card like organization or whatever it is. Cause you do have to license SD cards technically to do SD cards. So yeah, I'm very much trying to like put a bow on this Raspberry Pi stuff, even if it's imperfect. Bugs like this can also be really hard until somebody comes along and says, hey, it happened to me in this particular way. So I'm kind of filing this into the category of like, we've got all these boards that are supported now. We can get a perspective on like, I see this flakiness on the 4B, but I don't see it on the zero or I see it with these type of SD cards or blah, blah, blah, blah, blah. Like it's kind of in this mode of like, I can't spend too much time on it because if I wait, I'll probably get more information on what the issue is. And furthermore, there's lots of folks like you watching that may be able to take a look at it with fresh eyes and find the issue as well. So yeah, I have this last PR out that does like most of what I want to do. One thing I didn't show is in here. But I did, I don't know if I talked about this, but I did add, I did add NeoPixel support. So it should actually be able to transmit NeoPixel stuff. I did some board build fixing. I got a little distracted by some keyboard stuff and I added side set enable support for the RP2040. Again, my brain wants to not do Raspberry Pi stuff now because it's just been so taxing. So I'm gonna let myself move on. The next thing I'm gonna work on is S3 support. So really polishing up ESP32 S3 support in the next couple months because I think those are becoming more available. So I'm gonna switch gears next week, wrap up this Raspberry Pi stuff. I guess I'll have the learn guides not gonna be done this week. So I'm gonna have to wrap that up next week and then I'm gonna be on to the S3. And one thing that's really interesting about the S3 is that it's kind of the S2, but it's got a second core and it's got BLE support. So that could be cool too. Um, let's see. Paul says, hi, using the 64 by 64 LED matrix using the matrix portal animated gift.uf2. Change code to support 64 by 64 will not compile. Is it available on GitHub? Have I missed it? Um, it probably is the place to look. It's probably Arduino codes. So I'm not, it's super familiar, but a lot of the learn guide code is in this repo, the Adafruit GitHub.com slash Adafruit slash Adafruit learning system guides has a lot of code in it. So that's where I would look. That's where I would look for it. Yeah, I'm not sure. Thonalix says guys did Raspberry Pi board prices raise because of crypto mining. I think they did raise a couple prices large because of the cost of RAM, I think. So it's probably not directly related to crypto mining. I think it's more generally chip shortage issues where like the pandemic caused a lot of uncertainty in the market and caused some people to like not make as much stuff as we actually, people wanted like a year later. So there's like a huge disruption and we're very much still feeling all the ripples of that. Yeah, Timon says, yeah, I totally get that. When you work so long on something, you need some distance after a while to reset. Yeah, and if you look at the stuff that I worked on kind of in my time here at Adafruit or working for Adafruit, like, you'll see that I circle around things, right? I'm about to cycle on the ESP work, but I've like previously done a lot of ESP work before, right? So like I am confident I will get back to the Raspberry Pi stuff at some point, not sure when, but I am also paid by Adafruit. So there does have to be some balance around like, this is the hardware that we have coming that we need to make sure that we can support when we like produce new boards for it and stuff. And David is, yeah, well, okay. So David says, so no keyboard for the Pi 400 because it requires USB host. Yeah, for the time being, I still think USB host would be really valuable even more broadly than just for the Pi 400. So spoiler again, I think it's gonna be on my circuit Python 2022. David says, I understand the value of having a Pi version of circuit Python, but I don't see the commercial value for Adafruit. Yeah, but S3 means selling boards and S3 is great. I want a QDPi S3. Yeah, so I think it's not quite that straightforward because the model of making money off Pi stuff is not to make it off the Pi stuff itself necessarily, it's the accessories. Like I have a friend who wanted to put a Pi cluster together and he like spent $150 buying accessories for the compute modules that he ordered. So I don't necessarily think, and this is why I think the zero is interesting to me too, of like if you're like me, you have Pi zeros sitting around and from the Linux perspective, they're like not super useful anymore, especially if you're somebody who expects it to be like, I'm gonna open a web browser and browse pages and watch videos like a lot of those older PIs are like kind of like they've aged out in terms of Linux stuff, but then you put circuit Python on it and like suddenly you've taken circuit Python and put it on something with like 256 megabytes of RAM and video output. Like, so I think that there is, I think it's really interesting. And I think I have gotten it to the point where we can start to see people be interested in it. And I think when Moore was talking about Wi-Fi support on the Pi would be really cool too. And she had the really insightful thing to point out that MicroPython actually supports Wi-Fi on the chip family that is on the Raspberry Pis. So there's like already existing example code. There's already existing MicroPython example code for like doing Wi-Fi with the chips on the Pi. So like it's reasonably doable. It's just like not gonna be now. The other reason to do the S3 and the reason I'm excited for it is like, you know, last year we spent a lot of time on the Bluetooth workflow, right on the NRF. So we spent a lot of time getting the file transfer protocol going on the NRF chips. And we're actually to the point where Pi Leap and FileGladder I think are both maybe one, but they're like soon to be in the iOS app store. And so by me switching back to S3 and getting the BLE workflow working on all of the expressive chips hopefully that have BLE support. So ESP32, ESP S3 and C3. Like that means that there's now more boards that support this BLE workflow that then allows us to like reiterate and you know, market the BLE workflow stuff which we've been working on a lot and we need to just get more people trying it. Cause it is really cool. It's just very, very early still. Okay. So that's, I'm slipping into like circuit Python 21-22 stuff, but okay, let me, let me go back to questions cause we've got some, a couple more good questions. Ava Mander says, people are constantly looking for what do I do with this old Pi and is a great option in my opinion. Yeah, totally. That's what I'm thinking is like right now circuit Python on the Pis is hard-coded to 32 megabytes and people are still astounded by how much RAM it is. When it could be like hundreds of megabytes if I just like changed a hard-coded value. Okay. So Cybers says Cybers for so many questions but you're so hopeful I can't hold them. Hey, no problem. That's what we're here for. That's why it's just two hour long stream. What do you prefer in terms of IDE or text editor? I come from a programming background and the Arduino IDE is kind of bad law. Yes. So I use sublime text. I am not a huge IDE person so you won't, there are some people in the circuit Python community that like PyCharm and like all the autocomplete that those do, but I consider, I've always found myself working in kind of like a text editor with basic text completion world. So I use sublime text. And the reason I attribute that is, I think I tend to jump around languages and stuff and I don't want to have to change tools for every language. So yeah, I usually use sublime text and GDB and I have plenty of examples of the way that I work in previous streams. So I would encourage you if you're enjoying this, take a look at the note stock, the notes repo and then potentially find some things that could be interesting and just take a look at that. Oh yeah. Pi zero plus Stemic UT explode. Some boards from Adafruit do have the Stemic UT such as the TFT. I will replace a lot of Pi zero W's by the zero W, two W's. So you have lots of zero W's left over. Anecdata says, I've been playing with that display on the Pi zero today and I totally forgot had Stemic UT. It should work. Ooh, this is the kind of question I like. So Warren Fletcher asks, where do I start if I want to get involved in contributing to Circuit Python? This is a great place to start. The other thing that I would point to is make sure you're on the Discord server. So on the Discord server, there's a Circuit Python dev text channel. That's a great place to lurk and see what's going on. And then it's also good because on Mondays, we have a Circuit Python weekly meeting where we kind of all cover what we're working on too. So you'll get an idea of what's going on. And then Katnie, if you want to be on the library Python code side of things, there's a really good page CircuitPython.org slash contributing, I think. So this has a link to pull requests where you can do reviews for them. You can take on open issues. It's got links to the Discord and the web late. So if you speak a language besides English, one way to contribute is by providing translations. Just in the last week, somebody asked us to create a Turkish translation and they've contributed some of those. So that is awesome. So yeah, this is one way if you're on the library side, if you're on the core side, then we kind of like have our issue tracker. This page is trying to like glom all the issues from all of the different library repos together. So yeah, if you wanted to tell me more about what you're interested in contributing, I can then give you more direction. I think generally that's my update. I don't, the only other distracting thing is that I have been doing non-work stuff around the legislative, state legislative session that's starting next week. And there's like some committee meetings and stuff where I want to give testimony. There's a right to repair bill that is in committee on Thursday next week and then there's a couple broadband related things on Tuesday. So I'm hoping, and digital equity stuff that I'm hoping to give some insight into hopefully as well. I can't let myself get sucked into that because I'm already doing it. I'm getting sucked into it too much. Okay, so that's that. Let's move on to the circuit Python 2021. If folks have questions, we'll keep doing what we're doing and answering those as they come up. But let me not get too distracted. The summary for the Broadcom stuff is there's one more PR, let's get it in. Please try it out and let me know what you think. Did you get into the QMK config tool output thing? Bomi guy asks, I wrote a parser for it. Oh, are you talking about the converting it to the key codes? I never actually did that. I got distracted by the side set enable stuff and then I kind of like refocused myself on the Pi stuff. So I haven't gotten the keyboard working. If I don't know if folks, I think it was maybe just on show and tell but I have like a clicky keyboard, split keyboard here. I've got another half that I was writing stuff for. I did not make complete progress. I parsed the QMK config enough and did some layer stuff enough that I could like print out what it was pressing but I never connected it to actual USB. If you'd like me to send you those files after the stream, I'd be happy to if you wanna pick it up. Okay, on Twitch, Muha11 says, what's the best board to get started with CircuitPython? I have some experience with the ESP32 and MicroPython. So unfortunately, the ESP32 is not a great place to start because it doesn't have the USB support but if you like the ESP side of things and ESP32 S2 board would be awesome. The ones that I do not recommend are what we call the M0s. So the SAMD21s were like the first microcontroller that we targeted but it only has 32 kilobytes of RAM and it really kind of like, you hit those limits in terms, the amount of Python code you can run is limited by RAM and therefore, it's not always the best experience if you only have 32K of it. There are some libraries that are quite large. So the main thing I find is like, you wanna board with USB and then you also wanna board with like more than 32K RAM. So the ESPs are great for that because I have a ton of RAM, the NRF's great if you wanna do Bluetooth. The SAMD51's great, the RP2040 is great. And then in terms of actual board, it depends on what you wanna do with it. The great place to start is just circuitpython.org slash downloads. And it'll show you all the boards that are supported by CircuitPython. Oh, and foamy guy also points out that there's a learn guide for it too. So this is where you can go to download the CircuitPython builds for a board. And it's sorted, this page is sorted by default by the number of downloads we see for each board. So that's like, which is pretty amazing. Like the Pico, it's another reason to do Raspberry Pi stuff because a lot of people like Raspberry Pi's. So the Pico has been at the top of this list ever since it was released, basically, which is pretty interesting. I was looking to play with Laura and MQTT. Yeah, so I probably, well, if you want low power, the NRF is great for low power. Jerry N. on Discord has been doing Laura MQTT stuff. So he's a great resource. Brent is watching, thanks Brent. The quote on your website, eight a box page of Sydney Potter RIP is not from today, correct? No, I don't believe so. Adafruit has a quote server, like a collection of quotes that they like to put on stuff. So I don't think it's from today. Randall points out that foamy guy has great videos on YouTube as well, just true. Ryan G. says it would be handy to have a standard way to provision Wi-Fi or other settings via VLE. Maybe just a friendly JSON config file editor with standard file and property names. Yeah, I think that could be interesting. Brent's done a lot of great work with IO, so I would delegate to him. David says, should the old ESP32 regain support now that there is, things are happening in legislative land. Should the old ESP32 regain support now that there is a VLE workflow? I'm hoping so. I'm hoping that we can support the ESP32s as VLE-only circuit-by-thon experiences once we have VLE built on top of the ESP IDF. So yeah, I'm excited to try that. I tested the Microbit V2 from the Chrome browser. I could edit the Hello World, but connection was breaking and I gave up. Yeah, this Bluetooth stuff is really, really, and we're gonna have to figure out how to make it pretty solid. It's so really early. I don't think you're gonna have a different experience though. I think that the circuit-by-thon side of the VLE workflow stuff on the InterF is pretty solid. I think it's just all of the other side that's tough. Oh, I love the questions. I can answer questions for two hours easily. DroneCZ says, hi, is it possible to run slash execute another .py file before code.py? I would like to change the resolution on the Raspberry Pi with the LCD screen, but I do not want to run that within code.py. Yes, we have boot.py. Boot.py will run once on boot.up, it will not rerun, and it runs before USB is active. So it should be late enough that the, it should be late enough that the Raspberry Pi display stuff is going, but it's not so, yeah, I think you want boot.py. We used to also support settings.py, but we removed that in seven, I think, because nobody used it. The only person, people that ever used settings.py was like people who inadvertently just wanted a settings module. Like code.py was a rename of main.py because we felt like code was a friendlier term. And so we also renamed boot.py, but nobody used the renamed version, which is fine. Boot makes more sense. Boot makes more sense than main, I think. So yeah, I think you just want boot.py. Because displays are weird, no, it'll be sticky. KeriString88 says, thanks for helping me on the Discord. You pointed me to the RP2040 USB PID form. I contacted the vendor and now they will send me samples of their other RP2040 boards for testing. Awesome. I really need to dig into what makes a clean board definition, but a PR is in progress. Oh, that's great news. I think, yeah, you were working on the WaveShare boards and I just got a couple of PIDs from the Pi Foundation as well, or the Raspberry Pi folks. I'm trying to be more specific. There's two Raspberry Pi organizations. There's the Foundation and the Trading Company. One is a nonprofit and one is not. Generally, I talk to the people that are doing the for-profit stuff. But yeah, I just saw that. Brent says I got to do my CircuitPython 2022. Okay, let's pull it up. So what I do when we have an email, so if you do a CircuitPython 2022, email CircuitPython2022 at Adafruit.com. That's just like a, it's an internal mailing list that goes to me and Phil. And what I'll do is I'll do summary posts so that other people can be made aware of it. So if you just go to the blog and let's look at last year's. I think we did do a deep dive last year about this as well. And I updated that as one thing I have to add to my Learn Guide. Is that HDMI? How do I change the resolution on the Raspberry Pi? You release the display and then recreate the video core frame buffer and pass it to the frame buffer display. I need to add that to the Learn Guide. Okay, so these are the ones from last year. And let's just go to the roundup here. And I kind of wanted to just go over it and talk about the stuff that's on here and whether we kind of hit them or not. So let's just see. I think I did cover this in a stream last year too. So this is from Hierifex who was working on CircuitPython but has now moved on to a startup. Stuff that happened this year. What would I like to see next year? More powerful chips. Big RAM consuming display projects on the H7, fast signals on the IMX, and audio on the 405. So Hierifex did a lot of STM work. A ROS message interface, camera module. So let's see. We kind of did this big, powerful chips through the Raspberry Pi stuff. Not a whole lot of, no AI stuff, no ROS stuff, but camera modules, Jeff's been doing done a lot of good work on camera support. And no, we didn't do server libraries or display code. We do have a lot more UI tools that a lot of folks have been doing really great. Yeah, something like that texture or AI here. Yeah, a weirder idea. Exposing some of the underlying code we've created for CircuitPython for use in C projects. We do some really low level stuff but not the higher level stuff. So those are, that's Hierifex, let's keep going. David's in the chat so we'll see what he said. Should be the year of the CircuitPython retro gaming personal computer. We certainly made progress. We made progress. We didn't get there, but I would like to get there. Software for making games. Foamy guy's done a lot of great work with games but we haven't done the USB host slide yet. Joysticks we can kind of do. I don't, we do support hub 75 LED matrix I think. I think an HDMI support. Yeah, and I want to do bare metal CircuitPython on the Raspberry Pi. So we have that too. Not sure we have the fancier. I think we, this year we did get SynthIO. Hi Dylan, I'm glad I streamed for two hours so you could come in. Update number one. Ooh, dual core on the RP2040. We talked a little bit about that. Inspiring people. Nice. Yeah, I think, I think I want to go the direction David that you left out or laid out last year. Graham says, higher end processor, more memory. Which again, I think the Pi Zero is like a pretty decent response, especially given how hard the chip shortage hit in 2021. Like all of these M7s that people are referring to I think are really hard to come by right now. Correct me if I'm wrong, but that's the impression I get. Monotonic is bad. So Jeff did add the direct ticks access which can be helpful. We don't have threading. This person's saying threading, but we do danded some work to get the async IO stuff going that MicroPython has. The next upward step after that. Oh yeah, for like intermediate folks. I think focusing on beginners is still really good. There's always going to be more beginners. All right, let's see what Melissa says. So Melissa works on Blinka and CircuitPython. Pi Zero for Retro Game Console. Problem is that I have no idea for 22. Well, you can say like there was really good progress made on this thing, but we still have to do this or that. That's what I'm gonna do. USB host, I think is definitely gonna be a piece of it. And like the BLE stuff is not finished either. Melissa says threading, which we don't have threads, but we do have async now. We don't have an async networking library. I think Jeff is kind of interested in doing that, but that could be another thing for 22. Dynamic importing. I think you can do that. There's like a Dunder import or something. Blinka Display IO. I know Melissa's actually done a lot of work on this. It doesn't support everything, but she did a lot of rework. ROTC and Supervisor. After looking back at my CircuitPython 2020 post, I was pleased to see that just about everything did become a reality. Keith says, I'm looking forward to writing this one this year now that I'm more familiar with the environment. That in and of itself is exciting to me. Awesome, yeah. I really enjoy reading these. And it was the very first email I got was from Kmatch. Who was a contributor for a while and I think got a bit burned out. Kmatch is a really good work on TinyLogic Sniffer, which is like an open source firmware for microcontrollers to be a logic analyzer. It's really cool, but we never kind of did the final push to actually teach people how to use it and get people using it day to day. And if people don't use something day to day, it tends to rot. The ship who says, there is dunder import and I do use it in PPU for starting games. So there's that, yeah, I think you can. All right, let's see what Dan said. Is this interesting? People like that I'm going through these. I should at least go through mine before I quit, but I think we're making some progress. Real low power sleep, accomplished in one port, but it's now in more ports. That's certainly true. I think we have it on RP2040 and CMD as well. It's synchronous programming and multitasking. Dan did that. Automated hardware testing. This is such a like, it is going to bite us at some point. We've been very, very lucky to get as far as we have without automated hardware testing. It's a really hard problem. I started to do it my first year and just like, it's a really hard problem keeping it running without having to do maintenance. It is still something that we should think about. Like I think in particular between like six and seven, we did have a number of regressions where like things did work. And one of the big ones right now that I'm aware of is that like, I don't think infrared transmitting and receiving works on the Sandy 21 right now from what I can tell. Like I've seen some reports that it doesn't work. And that's the sort of thing that's like, it's really kind of tricky to test, but if we had a test for it, we would have made sure that it was like working perpetually. So yeah, automated hardware testing, I think is something that is really hard and could be really valuable. It's just, it's just really hard. Hi, Rich. Keithy says that, yes, this is really interesting. It's cool to see how folks make goals and projects like this. Okay, cool, we'll keep going. So the last bullet point that Dan had from last year was the Cartesian build product explosion. We have 177 boards and 18 languages. Are there ways we can reduce the resources and time needed to do builds? Could we separate the translation generation from the board builds and get them together later? So we did a couple things in this regard. I think one thing we did is that we now turn, we have a few languages that are not on because they just like, we created them but nobody ever filled enough in, which I should check with the Turkish thing with the Turkish translation folks. And then I also did a thing later that changed the way our GitHub actions work. So if a change only happens in a board folder or if it only happens in a board folder, only that board will be built in addition to the regular tests. And then if a change only happens in the port directory, that's true as well. So like we'll try to only build like the boards that are changed or the ports that are changed if we can, which is actually really nice. And that last PR that I have for the Raspberry Pi, like I explicitly knew that like, okay, this PR I'm gonna keep to the Broadcom ports folder just so that I can have like faster CI build times. CI build times. Beata says, the most amusing glitch between six and seven is the way the USB serial numbers got swapped. Yeah, I don't know how that happened. We did do a tiny USB update. If it really matters, we can figure out why but the most important thing is that it's unique. David says, yes, this is a very interesting deep dive overall, I'm enjoying it. Great, I'm glad you're enjoying it. I'm enjoying it too. Okay, so those are Dan's thoughts. And let's keep going, we'll go over Patrick's opening some tabs. So Dan says, it would be nice if you could program circuit Python with a smartphone over BLE and use one of the BLE breakouts to program boards that are not BLE capable. So we're one for two. You can now program circuit Python over BLE. We don't have a way of doing it to non-BLE capable boards. I don't think it will happen with a coprocessor but I do expect us to see it on more BLE capable boards in particular that the ESP would be cool. It's possible that REST might actually be good for you. REST is good for sure. All right, let's look at the shippus stuff. And I like this already that the shippus post is about projects. I think Adafruit really, Adafruit Strength is that we're very project focused. And so I love to just hear the projects that people wanna build. Walking robots, mechanical keyboards. Ooh, in terms of development of circuit Python, I'm really looking forward to dynamic USB descriptors, which we do have. That's been good. Deep sleep spin, great. What file should be run after reset will allow me to optimize the menu. So we do have somebody from a shippus community contributed supervisor.setnextcode file, which is a little known thing that doesn't get a lot of use, but it allows you to not run code.py, but run something else and specify depending on what happens with that, what runs after that, which is great. So you can, I think it's enough that you could build like a Python OTA sort of system, which somebody on the forums is actually trying to play around with. So I think that's a good option there. Not a fan of Wi-Fi. Well, we're gonna circle back to the S3, so that'll be it. But I think, I mean, we spent a lot of time on other non-Wi-Fi things this year too. A lot of this list we did, so I think we got that covered. I'm excited to hear the shippu what you want for next year, for this year, the next year. All right, these are three things in parallels from Patrick. Secrets.py is just a Python file. We don't have a new way of doing secrets.py. I agree with exactly this first thing. I think it would be cool. The shippu says, I got all I wished for and more in 2021. Awesome, I'm glad. I do think that this could be really interesting is doing secrets through the environment variables in CircuitPython because that's the way you would do it in. That's the way that you would do it in regular Python. Finish my thought. Camera interface, which we have now, just done a lot of really awesome work for camera interface. Should think, I think it works. So there's that. Package management, CircuitPython has done, yeah, CircuitPython has really grown and blossomed this year, no thanks to me. I have not done, I don't even know if I've ever run CircuitPython. Rich agrees, secrets through the environment is the way to go. Other folks have been doing awesome work with CircuitPython and it's been really good. I definitely recommend people check it out if you haven't. I'm kind of stuck in my ways. Kind of stuck in my ways, let's be real. But yeah, CircuitPython is really cool and they've done a great job. Whippersnapper uses secrets.json, yeah. Move away from secrets that I would love to see JSON are pretty much anything else. I'm a pretty big fan of Toml. I think a couple of cool things to support would be Toml support in CircuitPython, which would be cool because it's kind of like YAML but it's better defined. And then another thing that would be really cool to see in CircuitPython is, and there's a MicroPython module for this, is a like a small version of a SQLite module. So you could actually do like very small databases. Small SQLite databases in CircuitPython I think would be really cool too. Oh yeah, and Brent points out Bundlefly, the project bundler on learn. So that is a 2021 thing as well. So if you pull up a project on learn, you can now download a zip that includes all of the dependencies in addition to the code and resources. So yeah, that's a great point, Brent. Thank you for chiming in on that. Okay, let's keep going. Is mine not on here? Did I not put my own wrap, my own? I know I have them. Okay, so here's what Benny says. We'll find mine later. S3 support, which we have the basics of, but we don't have BLE yet. Implement wireless roaming, which I don't think we have. WPA3 personal, we don't have an off mode. I'm not actually sure which bits of this we have. Microbit V2 support, we do have, we do have that. And then the other cool thing that happened, I think Benny, is Benny E, Anecdata? Maybe not. The other cool thing that happened in the Wi-Fi space in 2021 was the, I saw a YouTube video about this, but the Wi-Fi frame sniffing stuff, like so you can actually do Wi-Fi monitoring mode as well, which is kind of neat. There's some other folks in our community that do a better job with the Wi-Fi stuff than I do now. All right, let's take a look at what FOMI guy says. Full year involved in the project. Oh man, FOMI guys entering year three, that's awesome. FOMI guys, awesome. Diving display, I don't know further. Maybe more like a little computer. Create more UI widgets, that is definitely true. Polish display layouts, library, make more guides, publish more guides in the modern system and is now working, FOMI guy is in this year is gonna work part-time for Adafruit, which is awesome. Display IO internals, I think FOMI guy did, okay, Anecdata, not the same person. Thank you for correcting me. Sometimes it is the same person and it like takes a meal a little while to connect the dots of like, oh yeah, I'm not having this conversation with two people, I'm having this conversation with one person. One project I hope to create this year is a console game that's made of a display IO that runs on PC, Raspberry Pi and uses a Pi gamer as a controller, which I think you did. I think FOMI guy did do like a platformer and I know FOMI guy's done Blinka display IO work too. So check out FOMI guy streams, I think you did manage to do a lot of this. DroneCZ says, are there any plans to support different pictures slash graphics types PNG, JPEG and SVG other than BMP? I looked at some guides and I did not find, I did find just support for BMP. So, not immediately. I know that we've thought about JPEG a little bit because there are actually some microcontrollers with like JPEG accelerators to decode JPEG. A lot of the reason that we haven't gone that way is just because of RAM constraints. And then the SVG stuff would be cool too, but the reason that we didn't do that is like there's a lot of math for all the curve stuff. Although I think in 21 as well, we've had Warrior of Wire, I think is the main author for Vector IO. So display IO now has Vector IO, which may not have the Vezia curves that SVG needs like the curve primitives, but that could be kind of a cool way to do it is parse an SVG and create Vector IO stuff. Oh yeah, and the Shippu points out that we do have GIF, GIF, Jeff says GIF, GIF support. And there's a PNG implementation for MicroPython as well. So I don't have any plans, but I don't think it's necessarily core work that we need to do either. As long as you have the RAM to store it uncompressed, which is I guess the trick. Foamy Guy says, I did check off a bit of those things, a lot of those things this year. Yay, one tricky bit for SVG is I don't think we have an XML parser yet. Yeah, I believe that. I know people would like an XML parser because of web APIs that use it, but I just, I'm such not a fan of XML. Good night Dave, thanks for hanging out. I appreciate it. I'm excited to hear more of Circuitbython 22's from folks. So I know that when you email Circuitbython 22, it goes to me and it makes me happy. Let's see what Ostrich says. I'd like to see a couple industrial capable controllers. I don't know of any that have done that. Anybody know of industrial controllers that have done that? It scares me a little bit, honestly. Because when I think industrial controller, I think that you have to be very solid with it. And Damien does a great job making Circuitbython really solid. That's a lot of what his business is. He does a great job testing and stuff, but I'm not very good at that. And so I always caution people that want to use Circuitbython in production environments that they kind of should do their, they should do their work to make sure that it's as reliable as they need and as secure as they need. Those are like open source code comes with no warranty and I hope people take that into account. Ryan G says, could auto parse settings.toml boot and pass as environment variables? I like the idea of a standard settings file that could be changed over either USB or VLE. Yeah, I think that would be great. I'd love to have a Toml parser and it's as good as any way of specifying environment variables in my opinion. I mean, it's very similar to like the YAML files that you would get in like GitHub actions or I think Docker uses YAML for stuff like that too. So I think that'd be really neat. I guess one of the challenges with picking a new format is that you really, that's the sort of thing that would be really nice to have work across all of the boards and fitting anything on the same D21s is quite a challenge already. That's why using Python for that would be great. Ryan says, that might not be great for keys though. Yeah, I don't know, I'm open to ideas. I look, yeah, I'm open to ideas. Let's see what Chad says here. And let's not look at my notifications. Ooh, streaming MP3 support. I think, I think Jeff looked at this. Jeff looked at this, but it was challenging. Yeah, Toml, it's another markup language, but it's like Tom's markup language or something. And it's meant to be more regular, more rigorously, why can't I talk today? Rigorously defined than YAML is. The rest community uses it a lot. And Python's going there too. All right, let's not get sucked into Twitter. And apparently I don't see mine on here. I'll have to find it. I know I did one. Let's see, McRunn says, thank you for CircuitPython. It's one of the best things I used in 2020. I started with ESP boards and MicroPython in 2019 and switched to CircuitPython later on. Playing around with the little QT pies, which is so lovely and yet powerful. I'm very excited because there's a lot more QT pies that Lamora's designing. They're great. Cheap ESP board with Wi-Fi and Bluetooth. How lovely would it be nice to have a range of boards with both Wi-Fi and Bluetooth? S2 is a choice, but it's missing native USB. So S2 actually has USB, but it doesn't have Bluetooth. More interesting boards and features. What's wrong with Windows, I and I? I don't actually know what the format is, but so potentially nothing. Keith says, I think yours and the Adafruit staff might be their own individual posts. Well, I wrote this summary post and I probably just missed my own CircuitPython post. I meant to have all of them there. I meant to have mine included, but mine is a little weird in that I didn't have to post a summary of my own post because it was in the same place. Right, I posted it to the blog. Ooh, let's see what Hugo says. Hugo says, why do I care about CircuitPython? Ethics, education, community, open source. Managing libraries and dependencies, yes. Localization ability of the platform and the build tool. Library management I think has gotten a lot better with Brent pointed out the bundle fly, project bundler stuff, which means all the dependencies are much better. Tech Trick's been doing amazing work getting type annotations. I think in 22 we'll feel the benefits of all of that. And then CircuitPython has been awesome too. Localizability, oh yeah, we didn't do this and we should think about it. This is localizing libraries. And yeah, it is weird that CircuitPython has all of our core messages localized, but has no way of doing libraries. I think that would be awesome. I think it's hard, so if folks have thoughts about this I'd love to hear them. I'd love to localize everything. Build and deploy utility, development can be done locally on a system that's separate from microcontroller device. I don't think we do a great job. I know a few people have their ways of doing it, but in terms of like having your code on your local device and then pushing it across. And we have like a logging thing. Does CircuitPython itself updating now? I'm not sure. But yeah, CircuitPython's been doing a lot of stuff, which is great. Awesome, so thank you Hugo for that. I'm not sure we accomplished as much as we wanted. All right, here's from Jeff. I like the looking back, like that's kind of what we're doing today. We're doing the looking back part. Tectric says, doing what I can, shout out to FOMI guy for making it easy. Yeah, FOMI guy's awesome. It's working on this stuff. On the legislation folks are getting all their ducks in a row right now. I and I doesn't have arrays in maps or actually a spec, I think. If people know of a spec for I and I, you should let us know. I feel like it's similar to, there is like a config parser in Python too, right? Like that's more like the I and I, like isn't I and I like you have a section that has brackets and then items in that? Circuit does libraries only, there's another tool called Blinka CLI that does do CircuitPython version updates and some other nifty utilities. I don't think I've ever heard of that. This is cool, I'm enjoying this, thank you folks. Okay, so let's see what Jeff, Jeff talks about time stuff. He's happy he set up in 2020, Weblate and Micro Lab, which are great. It's amazing to think it's been that long. Looking forward to 21, support at least one new microcontroller. I think I put this too and it was totally a cop out because a number of us knew about the RP2040 by the time we wrote these, but we couldn't talk about it yet. I know that was like one of the things. So we were feverishly working on it. And let me say more about that. Supporting the RP2040 is one of the best decisions that I made in the last year, right? Like it has been more available than so many of the other chips and it's a really neat chip and it's affordable. When I first got wind of the RP2040 and was like, no, we should do it. Like this time last year, I was just finishing it up the first version. Like I'm glad we made that choice. It was the right choice. We saw on the downloads page earlier that like the Pico itself is the number one board downloaded for circuit Python. Like it was the right call that we made a year ago to support that. Continue to help people grow into roles of reviewer and contributor. We've gotten a lot of new reviewers and contributors this year and Jeff's been a part of that. So that's been great. More how-to video content around circuit Python. So Jeff's actually started doing some short videos and those have been awesome. Keep an eye out for increasing time and complexity to build circuit Python, which I think we've done better. Risk of being spread too thin by multiple port in progress ports. I don't necessarily think that's been a problem. No automatic way to gather items from the bundle for a particular application. Well, we have that. That's worked out really well. Wireless enabled devices deserve a pure Wi-Fi or Bluetooth development workflow, which we have. We have the Bluetooth side. One thing to think about is, one thing to think about, oh, was number three is the Feather 2040 as well. Yeah, lots of RP2040s have been great. I think Wi-Fi development workflow is an interesting thing. I avoided it a long time, but Brent, who I think may be still watching, like has done a really awesome job with Whipper Snapper and IO and that's kind of like inspired me to start thinking more about what development workflow for Circuit Python would be over Wi-Fi. So if folks have ideas, let me know. It's not gonna be something soon, I don't think, but they've done such a great job with Whipper Snapper that I think there's something that we could do there. She says, Tomo uses the same structure as I and I, but supports nesting the structures too. Tomo is definitely nicer for config than YAML and JSON, but I wish there was something even nicer. Oh, so the thing is, one thing I like about Tomo is that it has comments. JSON does not have comments, which I know is kind of a pain. Hi Pierre, happy new year. I'll have to catch up on the last 85 minutes later. Yeah, no problem. We're just going through Circuit Python 2021 posts and kind of like evaluating how that's been going. David says, would there be a way to have one RP2040 firmware and have board variation that do not require their own firmware? Like a config file or something small that just includes the variation between the boards? And Brent says, amazing Wi-Fi workflows and automated hardware testing are such grails. Yeah, I know. So going back to David's question, it's hard. It's hard to have one firmware for our all RP2040 stuff because the code lives on the spy flash and the spy flash changes per board. And there's this little chunk of code at the start of your image for the RP2040 that sets up, that is read slowly off the flash and then run from RAM, which sets up the accesses to the flash. You could theoretically have a version of that that's slow and then carefully reinitialize it later, again, in your code based on a config file. It would be possible, but it's harder on the RP2040 than it potentially is on other stuff. And anytime that you're dynamically configuring, something like that, like if you wanted code that could support all the different spy flashes, like your code size will be larger. And so for all of the boards, like it would be really hard for a certified then to get away from having a build per board for all the small boards because we do need every byte for all the same D21s. And this came up a little bit in my thinking about the Raspberry Pi as well. Like we've got tons of flash, right? It's an SD card. But I think at the end of the day, having a uniform way of like building across all of the boards that we support, it's just, it's clear, right? Like having one way to do thing is clear, even if it has a cost in terms of build. I mean, all of build artifacts are not very large. So like hosting them is really not too bad. I don't know. I'm on the one side of the debate as far as like, just build all the artifacts. It's fine. And all of the translations and stuff. Yeah, I don't know. Okay, going back to Jeff, there's an increasing need for path manipulation library. I've been really getting into path live from Python. So if I had to pick, that's what I would do. Path live is pretty awesome. The standard is the location of common files like fonts, icons and sounds. That's an interesting idea that I don't remember that like we could do by just looking at all of the guides that we have. So I think that's a great idea. Read write storage that doesn't interfere with access to CircuitPy from a host computer. Yeah, we've debated splitting the flash into multiple partitions, but whenever I have multiple partitions on the same drive, I wish I didn't. And so I really pushed back against this idea. A related idea that I've seen come up a couple of times is if you have an SD card, the SD card should be available through CircuitPython over USB as well. And potentially that's what we could do is like if you have an SD card, supplementary SD card, so not Pi, but I mean maybe Pi, maybe we do the partition thing with Pi because it's gigs, but like for microcontrollers, if you have a Pi by default, it's writable from CircuitPython and readable over USB only, which is the opposite of the standard CircuitPy drive. So maybe that's the right way to do it. I had originally had hopes of doing that and then realized that I didn't need to. It's not simple. It's not simple. Any removable media is tricky. Okay, anti-aliased font, which I don't think we did, to sign and fabricate PCBs for my projects. I'm not sure Jeff did that. 3D printing, definitely did more 3D printing stuff. Why isn't there a magtag like podcast player appliance using CircuitPython? Lots of cool ideas that Jeff has. Jeff actually already posted his 2022 as well, but I think we should sit on the 22 stuff until next week. Oh, and this is the last one and then we'll find mine. So Brian Sedacious was working for Adafruit on hardware stuff, but is now no longer working at Adafruit. Robust and fruitful open source project requires continual help from community members, which we've been doing lots of stuff. Even when the people paid to work on a project can do these things, more people helping is always better, 100%. And we've gotten more awesome people. So thank you all. And this, Brian's arbitrary rules for good documentation. It must exist. We get points for that. Be accessible. This has been challenging. I think one of the challenging things for our documentation is we actually have a lot of it, but it's not always easy to find or understand what it is.  I think our documentation is pretty good if you can find it. I think it's finding it that can be hard. Like somebody on the forums just in the last couple of days was like, try searching the learn system for matrix and finding what you want there. There's like all sorts of matrix stuff. Be discoverable and inspirational. I think the inspiration is good at that. I think maybe the back catalog is harder, but I think the learn team has done a good job of learn.adoford.com. So yeah, that's the last one there. It's funny that I don't have my own. And if you wanna see, there's two prior years to this. I think I did a stream last January, about 19 and 20. So I'm not gonna cover that. But if you're new to this and you like this idea, you're welcome to dig to the older stuff. But let's see if I can hit the tag here. And oh, under the tag, look, it's today's stream. I put it under the 21 tag because I was gonna cover it. Ah, here we go. Here's my post, which apparently I didn't have. So Melissa and Dan posted there. But yeah, I do these summary things. So if I just change this to the 22 tag, I've done a couple posts already. So here's the kickoff post and then Kmatch, AKA Cycle Match on Twitter and then three more separate ones were here. And then this is today's stream that I also threw under that tag. Pira says, lots of examples providing lots of code examples, finding it is the main issue. Yeah, a lot of the libraries have examples that are very simple and helpful. And I don't think we do a great job at exposing those.  Brent says, I don't know, I wrote one last year, don't really remember the start of 21. 22 was way better. Well, I'm glad it was way better. I don't think we saw one from you, but that's okay. You can do one this year. Okay, let's talk about my own and then we can answer questions and wrap it up. Yeah, pandemic, 2020's platform of focus was the S2. Spend time in the S3 and maybe even the C3 and the ESP32. I'm already like alluding to the work I'm about to start doing, but Micradev, who I haven't talked about yet has been doing great work in the last couple of years. Micradev updated ESPIDF and then got the S3, C3, and not the regular 32, but like we already have builds for all this stuff, which is a huge, huge start. So thank you to Micradev for really pushing the ESP stuff. And I know Unexpected Maker has done some work as well with that, that I didn't do a great job coordinating those two things, but I'm excited that we're gonna put more work into that. Brent says, no, I didn't write one. People did excellent work in 21 on CircuitPython. Yeah, I think so. We've got lots of great people. That's awesome. Yeah, the community is great. Despite the surprises, my two focuses largely remain unchanged from last year. Community and CircuitPython code editing over BLE. When we looked back at past annual thoughts on last week's deep dive, I was pleased to see the origins of the principles that have guided CircuitPython over the years. This focus has gotten us where we are and continues to guide us. Sturkey, I can't predict the future. Yeah. We've made the right choices when we've had choices to make and I hope we can continue to do that. And I think that having a project focus and a community focus really makes it easier to make the right calls. You wanna make sure that the choices you're making align with what people are wanting to do. Growing to 26,000 accounts on Discord, 62 core contributors. Microdef is a much better person to do the ESP work. It's really not my area of expertise. We don't need experts to do the work. You can learn it. You did good work on Expected Maker and I enjoy it and all the testing you do is really helpful too. A focus on community, I should include this this year. It's still very important. It always is a top priority for me to make sure that other people aren't blocked. I should run the numbers on how many pull requests reviews I do but it's important that I do it regularly. It pays off. It pays off. We've had lots of people come into our community and get lots of cool stuff done. Mobile stuff, so we made a lot of progress on mobile. If you haven't watched this talk I gave right before, well, before the pandemic. I think I did a good job. Talking about really like super high level like really where programming needs to go. But yeah, I prototyped the Beale workflow in 2019 and now like we're in the start of 2022 and like we have a program that works called FileGlider which is super exciting. And PieLeap as well. And we have the foundation for all setup in Circuit Python which is really good. We have support for the Microbit V2 but the C3 we don't have yet. Apparently I didn't put another platform. But yeah, no I like that. Yeah, I'm, I think I'm a little cheesy but I really do enjoy this like I do enjoy. I alluded to the RP2040. Oh yeah. Snarky, I can't predict the future, yeah. That's what I was thinking. We may also be surprised by new platforms that Silicon vendors released during the year. Unfortunately, I can't predict the future. What a cheesy remark to know that there was something coming that I couldn't talk about. I will tell you, I do not know of anything this year. I'm not secretly working on anything right now. I went real quiet. I was just like very mum about what I was working on. So if I ever go real quiet then there might be something new. But I really, how can we trust you now? She asks. I mean, we're very, Adafruit is very open. There are just, there are just a few times where it's like, this new thing's coming out and we should support it. I also knew about the same D51 slightly early too. But I think this is true even if we don't find out for sure or we don't find out beforehand. Especially with the chip shortage we need to remain very flexible on what platforms we support and where our work goes. And this is why it's kind of like time for me to do S3 work. Cause it looks like we'll be able to get some chips. So I think that, I think we as circuit Python core folks do a really good job at bouncing between platforms and the more does a great job of knowing which ones to focus on. I know that David in particular has been like why are you working on Raspberry Pi and like it was kind of a deal that I had a little more like it was something I think I thought was really cool because people have them and it blurs this line between application level and microcontroller which I think is still really interesting. And it gives you access to HDMI, which is great. But it was also kind of a deal of like once this Bealee workflow stuff is kind of like solid then I can work on the Raspberry Pi stuff. So my desire to get off the Raspberry Pi stuff is just me being tired of it. But it's also like, okay, time to do something that's like as David points out, like in a product that we sell. I don't, like we have the dev boards for S3's but we don't have like eight of fruit boards for S3's yet. Keith Ease says, I'm sure I suppose we aren't supposed to look under receipts for a brand new Raspberry Pi 5 but yeah, who knows? Who knows? With all this chip stuff, like even if they're planning on it, if I were a chip company, I would not announce I would not announce a new chip until you know you have stock, right? Like it's so variable, but I would just, Ratfink asks, are you ever going to come out with a round LCD screen? It's not really up to me, I'm more on the software side. So when it comes to sourcing, sourcing stuff and releasing it, it's not really up to me. It's more Lady Aida. So if you want to ask Lady Aida that, you could ask her. A good time to ask questions to Lady Aida is either like in Ask an Engineer on Wednesday nights or on Sunday nights typically is when Desk of Lady Aida happens. It's all a matter of just what you can source, generally. And displays are one of the things that's been really hard to source in the pandemic. I think the reason displays is like a lot of the new cars have infotainment display systems and so that, I think that's put a crunch on display chips, but I could be wrong. We do have a, I know we did release a, we did release a rounded rectangle display, I think, where you just treat it like a rectangular display, but like the corners are cut a little bit. An exelective maker says, I'm sending the more in you some S3 boards next week. And Michael says, how do I get in on that? Well, we had, so Adafruit's carrying some S3 boards and Espresso did a really neat job, a neat thing with the S3. So I have this S3 box, I got one of these, but one thing that's cool about these dev kits now is that they have the dual, they have the dual USB on the S3 dev kits. So one is the existing serial to UART converter that they've always had, but now they also have the native one. And that wasn't the case for, if you remember the S2 dev board they had, the S2 dev board, I actually designed a PCB to sit on top to be able to do native USB. So this is way better. And this is probably where I will start when I start working on the S3 stuff, just because it's super convenient. Jeff has also been doing some S3 work because Jeff got the display working on the S3 box, I think. I asked, I also have a C3, so C3's only got one USB jack because it doesn't have the native USB. Good night, Dishapu, thanks for hanging out. Kind of my plan is like, once I, if I can get Bluetooth working on the S3, I kind of expect it to be doable to get it going on the C3. So S3 will be my focus to start, and then depending on how that goes, we'll try the C3. Oh, I didn't realize that. Anecdata points out that the S3 dev kits are skinnier, so they fit on the red board with a row of pins to spare on each side, unlike the Sala, which is the dev board for the S2. All right, well we've got, that is all for Circuit Python 21. Let me do a recap. So if you want to participate, we'd love to see what you think for Circuit Python 22. What did I have? I'll just do it here. It's way faster to pull it up by tag than to do search, so how to search what's new but in stock. I don't know. There are three S3 boards, and I never know which one we're supposed to get. So the three boards are, they're different like flash RAM combinations. I'd like to support them all. Not all of them are in stock, so I'd just get the one that's, if you can choose between one that has RAM and that doesn't have RAM, pick the one with the RAM. If you can't, get whatever you can. It shouldn't be too different between them, it's just a matter of flashing RAM. The chips themselves are all the same. Okay, so I'd love to hear from everybody who's watching what you think about what should our goals be for Circuit Python in 2022? And I would love to hear your thoughts. So there's all, as we were going through this, you saw that there was a lot of different ways you could do it. Basically, post somewhere publicly and then email Circuit Python 2022, which goes to Phil and I. And then I will kind of create a blog post every week, or not every week, every day that I get those emails. I'll have just like, hey, here's what we heard. And so we'll like link out to your blog and stuff too. So if you have your own blog, you'll get hopefully some traffic from that as well. Here's some ideas of like topics that you can talk about. And this is kind of the how to do it. So I'll just drop this link in there.  I think it's just Adafruit, I think Circuit Python 2022 redirects, I think Phil out of that. Let's see. Yep. DCD, if you wanna have a way to filter new and in stock, I would just email support. Say like, hey, you should have this. And then they'll let the web dev folks know. It shouldn't be too hard. But I like to shop Digikey that way. I'll tell you that. What's in stock and in new? Especially because all the STM development boards are like 10 or $20. They're well within my impulse buy range if I'm getting something else off Digikey. Anecdata says, for the S3, N is flash and R is RAM. The dev kits with RAM are N2R8 or the N8R8. The N2R8 is not available on Adafruit. But the N8R8 is. Any of those should work. Although two megabytes of flash is not that much. Hi, Micah. Hope I said that right. I guess we do have a version of Circuit Python for the two megabytes. That's where we do actually have these like two different OTA sizes. Well, that would be something that would be nice to do is actually like we have the dual bank. I think it's what it's called dual bank module so you can do OTA, but we haven't really shown people how to use it to do OTA Circuit Python updates. I know people want that flash space back, but I'm like, I know people are gonna wanna do OTAs at some point and so I wanna have it set aside. Any time you change that flash layout, it's gonna cause a lot more trouble. N4R8, oh, that's much better. N2's a little small. Okay, so there's that. And are there any final questions? I might get finished a little early because I'm gonna do some advocacy stuff. Let me just quickly show you this non Adafruit related stuff. So I have this website called waw-law.org and it's mostly trying to reformat all the laws of Washington state, which is where I live, particularly redoing how their lists show. For those of you not in Washington, the legislative session for Washington state starts next week for two months or 60 days is when the legislature is in session and they're making laws and there's some broadband stuff, some digital equity stuff and some right to repair stuff that I'm interested in. And so that's kind of why I'm trying to be more involved in that. And all of the testimony is remote. So I can sit in a meeting for, I can sit in a meeting during the workday and then do my two minutes of testimony but still work the rest of the time sort of thing. So I'm gonna be a little distracted next week with that. But I think it's good. I think that it should be more than just lobbyists that give their perspective on things. So here's all the bills of this year and yeah, so prefiled 1723 is like the digital equity act. And then I have this and you can read through it and it's all like pretty mobile friendly. Whereas like all the bill contents here is usually in PDFs on the state site, which is, so that's what I'm getting distracted by. Are we involved with EFF in Seattle? I'm not, I don't know if there's any EFF thing here. I am on the Slack for Repair.org. Okay, so let's get back on topic. If you're interested in this stuff, feel free to let me know. And I know of a few of you are in Washington. So if you wanna testify or at minimum, what you can do is you can basically sign in and say I'm for this or against this. And they get like aggregate counts of how many people said that in the committee meetings where they discuss it. So yeah, if you wanna be involved with that and you're in Washington, let me know. Unexpected Maker, I'd like to see the option to choose Circuit Python with and without the OTA partitioning. I get asked all the time, why my boards that have four megabytes of flash only have 900K available in the file system in Circuit Python? Yeah, I really, you know I hesitate. You know I hesitate about this because it's, it's interesting because I am very much for having different builds for every board, but I'm not super happy or not interested in having multiple builds for a single board. Because I think it's gonna, I think it would be really hard for people to tell which one they have. And that could be the reason that it doesn't work. That being said, we do have precedence for that. We do have boards that have multiple different builds. So yeah, I, if you wanted to figure out how to do it, I'd probably let you merge it in. Well no, ESP is weird. ESP is really weird because it has the two partitions and it's not up to the Circuit Python build necessarily the partition layout. So yeah, maybe we should rethink that. We should think, we should rethink that. But some of our builds do include the partition table. So I don't know, I don't know. I don't know what the right answer is. Like we could, we could have it where you can choose your partition table, whether you have room for OTA or not. And then we would always check that, even if you have the non-OTA version, there's still a fixed size for the Circuit Python build. So I guess there could be a world where the Circuit Python build is the same, but the structure, like the partition table around it is different. So maybe, could we format the other half? It's been a little while since I did this press of stuff. So let's simmer on that. Let's do, let's think about ways that we could, I think it could be possible that we have a single build that fits in a bootloader controlled OTA, OTA, no OTA sort of thing. I don't think we want two partitions though. I think you would want a longer FATFS. I understand why people don't, the 900K doesn't feel like a lot when four megabyte is flash, but I think it's also important that people realize that the code itself is there too on the ESPs. So yeah, we could think about it. David says you're gonna work on S3 and have that same question again. I know, once I've done more work in the IDF, I'll have like it all be fresher in my mind. But it could, what I'm thinking is, I guess, maybe we don't have multiple builds of circuit Python, we have multiple builds of tiny UF2, right? So like it's tiny UF2's job to pick between the two. It's not circuit Python's job, it's tiny UF2's job to be OTA or no OTA. And then circuit Python could just manage like, oh, this is not, I can't do it, I can't do it, I guess. You understand what I'm getting? I don't know, I'm open to it. Let's think more on it. I'm gonna call it, thank you everyone. I hope to get lots of emails in the next week for circuit Python 2022. This has been a deep dive, we'll be here next week talking about the future circuit Python 2022, myself and all of the other stuff I hear from folks. And, oh yeah, I forgot to answer Roy but somebody else did. Discord's a great place to post projects and GitHub stuff. If you wanna join the Discord, you can go to the URL adafru.it slash discord. I'm on there as Tan Newt, a lot of other awesome people are on there as well. Super helpful. Thank you everybody. Please support Adafruit by going to Adafruit.com. I know a lot of stuff's out of stock but if there's some neat things that you see there, go ahead and check that out. So, late breaking news. MicroPython will very soon be UF2 friendly so just drag MicroPython on the UF2 like CircuitPython and no more stomping with CircuitPython with MicroPython. Great, that's awesome. UF2's great. That's a good decision we made a number of years ago and just have continued to benefit from. Thank you again to Patrick for putting all the notes in the deep dive repo and thank you to David for taking notes. I really appreciate it and I'll talk to y'all next week. I'm gonna pet the cat and get out of here and call somebody, which is exciting. Don't start, stop training. Pet the kitty. Can't forget that. Thank you everybody. Hopefully, David put a timecode for that too. Thank you all, we'll see you next week.