 Hello, everyone, and welcome to Circuit Python Day 2022. I'm Paul Kutler, the host of the Circuit Python show, and I will be moderating today's panel discussion, Celebrating Coding Community. We have some fun topics planned, and if you're in the audience, I would love to have your questions for the panelists, too. Join us in the Adafruit Discord at adafru.it slash discord and join the live broadcast chat channel. I'm joined today by four people sponsored by Adafruit to work on Circuit Python. Will you each take a moment to introduce yourself, and I have a small icebreaker for you. Who's your favorite robot from a book, movie, or TV show? Katnie, will you go first? Sure thing. I'm Katnie, and I am, as Paul said, sponsored by Adafruit to work on Circuit Python. I also write learn guides for both products and projects. So anytime you buy an Adafruit product, chances are probably 60%. The guide that you go to to learn how to use it was written by me. I also lead our community, so there's a few of us that do and basically take care of moderation things and make sure that the community works for everybody. Trying to think, what else? I've also designed hardware. I have a couple of breakouts in the shop with my name on them from a couple of years ago, so that was a lot of fun. And as for the robot, technically it isn't a robot. It's an Android, but I'm going to slide it in there anyway. It would be Creighton from Red Dwarf. Oh, great pick. Thank you. Dan, will you take a moment and introduce yourself? Sure. So I'm Dan. I'm also sponsored by Adafruit to work on Circuit Python. I live in Massachusetts, so we're all remote in one place or another. I started working for Adafruit on Circuit Python almost exactly five years ago. It was this month, and then a few days of today. And though I had done some poll requests in Circuit Python before that, before I would be paid. And I work mostly on the core development on the core, on the Circuit Python core. I started out working on HID stuff and I'm still working on HID stuff sometimes, but I'm working on many other things. Also, and sometimes I work on libraries, sometimes I work on infrastructure as well. My favorite robots. So I like the robots in the original Star Wars, but there's kind of a story about that. When the Star Wars movie came out, which I think was in 77, the original Star Wars movie I was working at a summer job from college in Cambridge at VVN, which is one of the places that did a lot of internet work. It's a famous place. And my co-workers and I decided that we would all want to go see Star Wars release. And so I went early and bought tickets for the movie for like an early afternoon show. And everybody took the afternoon off and we all watched Star Wars, because it was that important to us at the time. That's a great story and you can't go wrong with it. Any of the droids from Star Wars. Yeah. All right, Jeff, you just got back from vacation, I understand. Thanks for joining us. Yeah, it's funny. I'm about younger enough than Dan that my Star Wars movie experience of skipping an afternoon at work is The Phantom Menace, which I know people have a lot of different opinions about that movie, but I'll go with the originally air trilogy as being fun, but it's a fun memory to have skipped work with your friends and to go watch Star Wars. Anyway, but back to what we're talking about today, I've been working on Circuit Python seriously for about three years because I've always loved Python since I became aware of it in the mid 90s as a programming language. And I just love everything you can do with it. And when I found out that thing includes running it on tiny little computers called microcontrollers, I was like, oh my gosh, I have to do this. And somehow I've been fortunate enough for that to become my main work. So that's really exciting. Like Dan, I work primarily on the core, which is the parts that are written in C that are much harder to change, much less forgiving environment. We create this very forgiving Python like environment for you to use. And I started doing audio stuff, although audio isn't my thing. It's just the project that Adafrit needed done at the time when I first came aboard in a paid capacity. And I love picking up a new thing and learning enough about it to create a core library or module that is gonna enable people to do their fun projects that they envision. I'm not always the most creative, but it's just tremendously meaningful to me to see the creative things that people do once I've created a basis for them to work on. And it's great having the dialogue with other people to figure out exactly what that entails. As for robots, I'm also gonna go with technically not a robot. There is a series of novels and novellas by an author, Martha Wells, called the Murderbot Diaries. Murderbot is a, I'm gonna just read the Wikipedia for you because a violent self hacking cyborg searching for the meaning of life. So Murderbot doesn't, in the story, it's not about Murderbot going out and murdering people. It's about Murderbot trying to kind of break free of the way it was designed and be a good person in a difficult world and also figure out how to interact with people. And yeah, it's a lot of fun. I was put off for years by the title Murderbot Diaries because I thought I knew what that was, but it's not about a violent cyborg that goes out and does violence to people. It's a cyborg with a heart of gold that wants to help people and just have downtime and watch TV shows. Yeah, so that's my answer to who I am and what robot would I be if I was a robot? No, that's a great pick. And I actually own two copies of those books. I love them so much. So everyone go out and read the Murderbot Diaries. They're short, four of them are novellas and one's just a book. They're just fantastic. Jeff's absolutely right. Last but not least, I'd like to welcome Tim to the show. Hello, everybody. My name is Tim and I started working on CircuitPython Part Time starting this year, 2022 started working for Adafruit on the CircuitPython project. I primarily work on libraries as well as learn guides and I have been doing the streams, deep dive streams on Fridays while Scott's been absent. So those are the kinds of things I work on in terms of CircuitPython. I primarily got interested from the programming perspective. My day job is programming and I found CircuitPython through that because it was just a fun additional thing that I could control from a computer. So I felt very natural with it and I kind of got hooked by the very quick and easy iteration cycle. So definitely fully appreciate the work that the core team does to make it super quick and easy for folks to be able to write CircuitPython code and not have things go terribly wrong when the code causes errors and stuff like that. That's definitely one of the things that has kept me most interested over the time that I've been involved. Before I started working part-time for Adafruit on CircuitPython, I was a member of the community for about another year or two partaking in the weekly meetings and sharing projects. And I did do a couple of other one-off learn guides and other things for Adafruit before this year when I came on part-time. I kind of get drawn a lot to the display side of things. So I like display IO inside CircuitPython by day. I'm more of a mobile developer. And so being able to draw things on the display makes microcontrollers feel a lot like little phones kind of. So that's another thing that felt very natural to me. So I do a lot of work on display stuff but I certainly have branched out more and more. And including this year, I started getting more into the core as well. So certainly not as deep as Jeff or Dan, but I have dipped my toes in and managed to actually make changes that are functional and do stuff inside there which is really exciting. In terms of my favorite robot, I will continue the theme of picking things that are perhaps not exactly a robot, but mine is the machine from the television series, Person of Interest. So it is actually like a supercomputer, I guess, although it does manifest itself physically. It kind of sneaks itself out of the server room where it initially lived and distributes itself across the world so that it's harder to take apart. It is also similar to the one that Jeff mentioned. It is at its core a kind machine that is trying to help humanity by predicting when people are in danger and giving little tips to the right set of individuals to try to go and mitigate that danger for them. So it's a little creepy because it does see and hear kind of everything that we have connected to any kind of connected network to machine computer, but it is also a positive force and it comes to be a pretty interesting character in that series. So that was my choice, thanks. That's a good pick. I used to enjoy watching that show and how they showed surveillance was fairly real world at times. It was kind of impressive. It's, yeah, it's interesting. It makes you think a lot for sure. It's a fun little, it's also neat. They tie it together. Each episode is kind of its own little self-contained story. There are larger things going on, but you can also just kind of enjoy a quick little, not quite mystery, but story that wraps itself up. Good pick. Well, I thought we might start by taking a moment to look back at everything that's happened in the last year. Sometimes we're so focused on the next milestone or the next release that it's nice to just stop, take a moment and look back on everything that's been accomplished. Looking back to last Circuit Python day, Circuit Python seven was released just a month later. In just yesterday, Circuit Python eight beta zero was released. So in the last year, what are some of the things that have come to Circuit Python? If you put up my shared screen, this is a list of things that were in 7.00 at its release, which was September 20th last year. So we have BLE development, BLE workflow. We have camera support on ESP32. We have the keypad module, runtime customization of USB devices, getting up to date with MicroPython and a smattering of other things. And there've been some more things since 7.00 and 7.10 and 7.20 and 7.30, but those are kind of the most important things. I would say that keypad has been very successful and especially it was successful because the PyPico came out and there were all these YouTube videos about making Rubber Duck-y things which are not my first choice for what to do with Circuit Python, but that was very popular. And maybe somebody else would like to say something about some of the other things. So yeah, about a year ago, I was working a lot on camera stuff and actually we've just heavily revamped that for Circuit Python eight. So there'll be even more camera support on the expressive module. So that's kind of fun. I was happy about just a little item, supervisor.tix.ms. Sometimes when you're a core person, you get a very narrow view of things and my very narrow view was, we need a good way to keep accurate time even when your Circuit Python board has been operating for a day or a week. And this is an item that we took the idea from MicroPython and brought it into Circuit Python and now there's a little library that helps you do things like, I wanna make sure that something happens after 300 milliseconds from now. Have we reached 300 milliseconds from a given time? What's 300 milliseconds from now? And that works no matter how long your Circuit Python device has been running. And it's a little thing, but it's meaningful to me. So yeah, that just goes to show the weird kind of priorities of a core developer, I guess. So I'm not a core developer, but if you see the color wheel routine was moved to Rainbow I.O., that was my first, yeah, that was my first contribution of a module to the core. So that was pretty exciting and Jeff helped a lot with that. Yeah, a couple. Oh, go ahead. Well, I was gonna say a couple that I would throw out. One of them that's on this list is the BLE workflow, which I think was huge because it really pushed forward the ability to develop from smartphones. The Pi Leap app in particular, I think is a really nice thing for beginners being able to just load projects from their smartphone to a microcontroller over BLE. And then maybe jumping head just a little bit for the 8.0 release, we have the web workflow, which I think is another new way to develop on devices that's gonna be really exciting and open up a lot of opportunities for us. That was the 7.0 release as the year went on. What else was added to Circuit Python? Actually, I'm gonna interrupt with something else. We've got some people in the Discord chat who are saying good things. Woolsey liked the board.led for consistency and Sumnice says, celebrate Circuit for library maintenance, thank you for that. And that's a huge tool that has kind of come around. I don't know exactly when it came on the stage, but it really makes some things of setting up a board and putting stuff on your drive go a lot quicker. And I love that. So apologies for interrupting the flow, but I just wanted to acknowledge what was going on on Discord. And yeah, those are absolutely right. Great consistency and just making things work better. I'm looking at what is in 7.0 and 7.2.0, but I haven't gotten there yet. One of the things that comes to mind is async.io. What is, how hard was it to add async.io to Circuit Python? So I'll talk about that because I did most of the original work from that. That mostly came from MicroPython. The async.io library is actually written in Python, but we needed async and await support. And WarriorWire, who's one of our outside contributors added that a while ago, but without async.io. And then I ended up porting the library to make it run in Circuit Python, which was only a very tiny amount of work. It worked really well thanks to the MicroPython people. So it wasn't really that hard. It was harder to figure out how to use it and to give simple examples because async.io was actually really complicated and has evolved organically in regular Python over the years and it's evolved a lot and its use has become much less ad hoc. And a lot of people haven't learned how to use it because it was so complicated to use. It's also used for very different purposes in regular Python, most used for network programming. So figuring out what to do with it with the kinds of things that we do in Circuit Python was a challenge. So that's, if you look at the async.io guide and the learn guides, you can see some simple examples but it took a long time to develop those examples as sort of the cleanest way of doing it. Yeah, it can be a difficult thing to learn. There's no question. Yeah. I have a question for Kat and Jeff. You were able to attend PyCon in person earlier this year. What was it like to go back to in person conferences? Unbelievable, to be honest with you. It felt like coming home, which sounds so cheesy but seeing people that I haven't seen in three years that I was seeing once a year previously was such a great feeling. And to be able to host open spaces and sprints which allow people to come in and learn about Circuit Python or come in and develop on Circuit Python. We tried it virtually and it's just, it's a little more difficult virtually than it is in person because someone can just wander in physically in a building when you're in person but when you are virtual it's, people need to know about it ahead of time and so on and so forth. So there were amazing keynotes. It was amazing to see the people that I haven't seen in a long time and meet new people. And it was great to be able to teach people about Circuit Python again in person. So that's the highlight of my conference. Well, I'll be cheesy, Katnie. The highlight of PyCon was seeing you. We met at PyOhio in 2019 before I'd really come on board with Adafruit. And then I was going up to you as the woman who had just given the keynote of PyOhio and extremely intimidated and felt like I was talking to a celebrity and now I feel like when I talk to you, I talk to a friend and that's something that I really value. So yeah, super cheesy. But then to actually see you again and get to be in person, that was nice. But also the experience of being in that room where we were doing the open space and giving people their first taste of Circuit Python with the Circuit Playground Express, or Bluefruit, whichever one it was. That really drove home for me this thing that we talk about a lot, which is that we are creating an environment where beginners can really do something and have fun and seeing that enjoyment was really meaningful to me. And then of course, the keynote about the black hole observation that works with Python, that just speaks to so many things that I value learning about the world around us and collaborating. And that was just a beautiful moment and I was so happy I could be in that particular talk. And then to the other people that I met there, Rose and Tektrick and Melissa, it's just so nice to be in person again. And we've all felt isolated to different degrees over the past couple of years. And it was nice to really feel we're beginning to move into a different time. And it's still complicated getting together, but to feel that that's changing and that we can navigate it was also important to me. I would say one other thing. They did a lot of work to keep us safe. And that was very important to me as well because this was the first event that I really attended since 2019. It's the first big thing that I've gone to. It's the first time that I've got on a plane and they put a lot of effort into making sure that we felt safe. And that was amazing and excellent because it allowed me to enjoy myself and not be worried about catching COVID, I guess. Yeah, yeah, any Python organizers, if you're watching this, we love you. Thank you so much. And we look forward to it next time. That's nice of you to say that. That's a good segue to the next question for all of you. When you look back at the last year, was there a favorite project that someone built or a favorite learn guide or something that you built that you were proud of or you wanted to share quickly? I'll go first. One of the best, at least most useful things that I did which I adapted from code by Tim is a timestamper which is basically just a thing that I start and it starts a timer at whatever time I want which is to say at the start of a recording perhaps and the other button just prints out a timestamp. And so I was able to, because we do a weekly meeting and in that meeting we take timestamps in a notes document so that folks can skip around using the notes document in the video to what they are most interested in and typing out a timestamp while trying to host a meeting is very difficult. So Tim had designed a timestamp but he used the macro pad and we both agreed that was a bit of overkill. So this uses a feather and a two key Neo key feather wing and it's the perfect amount of keys one to start the timer, one to do the timestamps. I kept it very simple because I wanted to make sure it didn't fail in the middle of a meeting and so far it's worked great. And this was a 3D printed case designed by Noah and Pedro which leaves openings for all the connectors as well. Very cool. Anyone else have something they'd like to share? So this is my everyday keyboard. It's 3D printed and hand wired and runs circuit Python and with the keypad module I revised it so that it's just a lot more reliable and responsive but for something I use everyday it's just, oh, I bumped a key that blanks my screen. Also the toe beans here. It's just, yeah, the everyday thing that I use with circuit Python and improved in the last year or so with the advancements that we're doing. When it comes to, I talk to a lot of people who don't know what Adafruit is like all of my relatives, a lot of my friends they don't understand what it's about and although she hasn't been working with us lately I love to show some of Erin's videos of her projects with Pixels just because of the wow factor. In particular, I helped back when she did the Leida Pukalely project to get some of those effects like the pick a particular note to change the mode and seeing these things that other people do that's inspiring, that is fun, that has a wow factor is kind of what I respond to and what I like to show people to give them an idea of what you can do with circuit Python. Erin's a great pick. I'm a big fan of audio reactive projects and between those she's done and all of her LED stuff there's so many great things that she's touched. Tim, I have a question for you. One of your favorite projects for me this year was your, I think it was called the Blink of Sketch. It took me right back to being a kid and playing turtle graphics with my Apple too. Can you tell me a little bit about that project? Yeah, I can, I'll try to share the screen up as well here and then start talking about it also. So it was, I made this earlier on in the year. Let's go share screen. It is, as the name might suggest, it's kind of a circuit Python implementation of a Etch-a-Sketch and it is using a PyPortal is inside there. It's all in a nice 3D printed case. I'll say, even though it's not circuit Python related, this is probably my most proud 3D printing project. It's still pretty basic, but pretty advanced for my capabilities. So I was happy to get a case to put everything all together. So this has a PyPortal inside of it. And just like you said, turtle graphics, this is actually using the turtle library. We have a turtle library for circuit Python. So if anybody is interested in making drawings in this sort of way where you have like a cursor that can move forward and turn X degrees and go forward and go backwards and all this stuff, there is a library that helps you do that. I hooked up the library to have this interface of the two rotary encoders and the PyPortal inside there. And I've made a couple of different features on it where you can actually change colors and you can clear the screen. If you shake it, it will prompt you to clear the screen like that. So we can clear it just like that. One of my favorite things about this project, aside from just showing off an interesting thing that you can do with circuit Python was there is no soldering inside of it. So the PyPortal, unlike a lot of our microcontrollers that support circuit Python, the PyPortal doesn't really just have pins, like IO pins available, like most things. It does have a StemAport and that's actually where everything that connects to this project is plugged in through the StemAport. So the PyPortal hooks up to some StemA Rotary Encoder breakouts. There's also another StemA cable that runs to the accelerometer which allows the shake to clear. And so there's no soldering inside of that case which I thought was just so nice. Like again, coming from a programming background, the ability to not have to be super-duper down in the weeds of hardware allows me at least to be able to make more interesting things. So. I really enjoyed that project. Thanks for sharing. For sure. We have a question from Discord that I'd like to ask. Is there a Python standard library or something in the Python ecosystem that you would like to see in CircuitPython? I can jump into that. So a couple of years ago, I wanted to make a desktop calculator that didn't have the limitations of CircuitPython's floating point math. And in StandardPython, there is a library called decimal where you can actually do all of your arithmetic in decimal instead of binary floating point. So like when you add point two plus point two, it's actually point four and not some other binary number. And it turns out that there is a version of decimal that's written entirely in Python. And so I said, I want this. And I adapted it to CircuitPython which mostly consisted of removing the stuff that didn't fit because I wanted it to go on a, it was one of the feathers, one of the M4 feathers. And so a lot of times you can do that because the Python code that you want to take from the Python ecosystem is close enough. So if that's the position you're in, I invite you to try that and see how it works out for you. It might work with a modest amount of effort. And yes, Mr. Sintley has posted up the link to that guide. It was a fun, it was a fun guide. So yeah, that's my answer to your question about what in the standard library would be good in CircuitPython. Thanks. Let's change gears for a moment and talk about community. The Discord just passed 35,000 members recently. How else has the community grown and changed in the last year or two? So I think in a number of ways, obviously Discord is a huge part of the CircuitPython community. And I think we're past 36 now, 36,000. And one thing on Discord that has grown is we have more active people. So obviously people join and lurk and aren't actually chatting there, they're just learning. But there are a lot of new folks who I find consistently helping out other people. And there's different things they know. And so like combining all of these folks, like a lot of things are getting answered. And a lot of it's happening from community members. Another part of it, we have the CircuitPython community bundle, which is a bundle of libraries written by community members or libraries that aren't necessarily supported directly by Adafruit. And the number of libraries in that bundle have skyrocketed. It started out with like your four and sort of staff there for a very long time. And now there are 61 libraries in it, all written and supported by community members. So that's another amazing way that things have happened. I know in CircuitPython, the translations have seen a lot of action that continues to build. And that is from community members who speak other languages, hopefully enough to help translate strings with CircuitPython. So those are three ways I can think of at the moment. I'll throw out one more for, which I happen to have the shirt today for Hacktoberfest. So this past October was my first time at least participating in Hacktoberfest. And we had an effort to start, well, not start, but to add typing to the CircuitPython libraries. And during Hacktoberfest, along with more recently at PyCon, we got a lot of new first time contributors. I think that's one of the funnest things for me to see in addition to what was mentioned about folks helping each other in the chat, seeing new people get involved in the project and feel confident enough that they can jump in. And even if they need to ask for help and stuff like that, we try to make it super easy and stuff. So it's been very exciting to see the amount of new folks getting involved with the project, with libraries, with contributing code, with doing reviews, with just sharing projects, with just popping in the Discord and saying hi, all of the above. I think it's been really great to see the growth. We had a question in Discord just a few minutes ago asking, what advice would you give someone looking to get involved with CircuitPython? It's a good question. Yeah, I'll take the first stab at it. If you're looking to get involved from a user's level, I think circuitpython.org and the learn system, learn.adafruit.com, there's welcome to CircuitPython guides, there's an essential guide. Those are definitely the best places to head if you're just touching CircuitPython for the first time. If you're looking to get involved to help contributing, I would say the first thing to do is join us over on Discord. All of the coordination, all of the communication takes place through Discord. So head over there and say hi, tell us what you're interested in working on. And then beyond that, it's like head over to GitHub and start looking for issues and PRs and things like that. Yeah, as far as like what to buy, I think if you want to do like a low, like a no solder project, pick yourself up a Qtpy with either the ESP32S2 or the Raspberry Pi Pico because those are great or Raspberry Pi RP2040. Those are great microcontrollers. They have a good amount of capabilities and capacity and you can hook on sensors, LEDs with little or no soldering. If you go for the absolute cheapest modules from Adafruit, those are gonna be a little bit frustrating because they're gonna have less, particularly less storage space, less RAM. So you'll run out of stuff, room for your program to run. And this is responding a little bit to a question in the Discord from Jane545 about Circuit Playground Express with Gizmo working well with Circuit Python. And the answer is it's kind of marginal because Display.io takes a lot of space, both out of the flash and out of the RAM. And so if you do use a different board with more capabilities like the Circuit Playground Blue Fruit for the Gizmo to put that display on, it's just gonna work better. So I guess, don't go for the very minimum cost but by something with a little more capability when you're just getting started. And then when you learn more, you may realize, oh, I could have put this on a Trinket M0 but don't start out there because it's giving yourself an extra challenge that you don't need of fitting something on a very constrained board. And I would take that one step further and say or explain the Circuit Playground Blue Fruit. It has a ton of stuff built in, sensors, buttons, switches, LEDs, touchpads. And so you can do a lot and learn a lot with this single board and it also has Bluetooth capabilities so it can talk to another of itself or you can control it from your phone is different things you can do all this in Circuit Python. And the nice thing about it is if you either solder to the pads or use alligator clips, which is no solder, you can attach other sensors and other things. Even though it's an all-in-one board, it's still extensible to other projects. So you're not limiting yourself by buying this board where you can never do anything with it if you get done with what's on it. You can add all sorts of stuff to it and include it in any kind of project. And the Blue Fruit, the predecessor is the Express. The Blue Fruit has a lot more space and memory as Jeff said. So I would highly recommend going with it simply because being frustrated by running out of memory is really annoying. And so it's good to not limit yourself right off the bat and let yourself have the opportunity to do more things with less. Good answer. Each one of you here takes a turn hosting the weekly Circuit Python meeting every Monday. For those that might not have heard of the meeting, what is the meeting about? The Circuit Python weekly meeting started out as the core developers talking to sync up on what they were gonna do for that week. I started sitting in on it very early on and eventually we started inviting community members and other developers who were not necessarily core developers and it has turned into a huge thing. It's five parts, it covers community projects and news, the actual numbers that are attached to the project, so the statistical overview. And then we do hug reports, which is an opportunity to call folks out for the awesome things they're doing in the community. We do status updates, which is us letting folks know what we've worked on since the last meeting and what we will be working on for the next meeting. And then there's a section at the end where you can have more long form discussions about whatever. So that's the gist of the meeting for what it's about. It's a Circuit Python obviously, but we love to hear about other Python things and or what people are up to personally. We've heard about bathroom remodeling and so on and so forth, so it's really laid back. And to circle back and connect that to how is the community changing in, you know, over the past year, I don't, one of the things that we track is number of contributors, like people who are commenting, reviewing people who are contributing pull requests. And it's just, it feels like those numbers just edge up a little bit as we go along. And so it's fun to read, we had 24 people who were working on issues in the past week, whether as people who are filing issues or commenting or resolving them. And it's just nice to see a continuing healthy and increasing number of people who are working with us to make Circuit Python better in all the ways. And I think every week we're reading more new names. Yeah. Which is also amazing to see. We try to do and boy, GitHub people choose some strange names because it just shows like the GitHub account name. And yeah, if you get to that point in hosting the meeting and you haven't gone through and said, okay, this is a new person, this is a new person and make some guess at how you're gonna pronounce it live. It's like, oh my gosh, how am I gonna pronounce this thing? ZX122, I hope I'm not offending you when I try to say your name or whatever it is. But yeah, it's a lot of fun to host it. First it was intimidating and now it's a lot more comfortable. But you know, Katni came to me and said, can you do this thing? And I can't say no to Katni. So that's why I help run the meeting. And actually we, yeah, now that we have four people and five when Scott is around to spread it between, it doesn't, I understand why when it was Katni and Scott that Katni was looking for other people to do it. And with four people or five people, it's a lot more comfortable. So thanks to all of you who hosted in turn with me. Katni, I have a question for you. Every year at the beginning of the year, Adafruit says or ask people to blog or share their thoughts on where they would like Circuit Python to go in that coming year. One of the things you talked about was mentorship. Can you share some of the thoughts that you had around mentorship? Yeah, so mentorship is very important to me and very close to my heart. I wouldn't be where I am now without mentors. And so one of the most important things to me is to pay that forward and make sure that I'm able to mentor other people as well and spread my knowledge now that I have more than I did. And that was important to me very early on even within a few weeks of joining the community. I realized that I now had answers to questions I had in the previous three weeks and people were asking those questions and I was able to answer them. And that was so fulfilling and amazing. But I wanted to see more opportunities to help folks out. And obviously there's only so much time in the day and Adafruit has priorities for us. And so we are bringing other folks in to help out on Discord and like community members as well who are helping out all the time. And so it's good to see them have the ability to sort of mentor other folks coming up from being beginners. For me, I haven't had a chance necessarily to mentor an individual for a period of time which is something that I would like to eventually be able to do. I definitely helped our intern gain a lot of knowledge and experience which I guess is on some level being able to mentor. But it's just a very important thing to me to see happening in the community and to see happening within Adafruit as well. And being able to help folks find a path to where they wanna be which for example for Tim was working part-time for Adafruit was also incredibly important to me and Tim's not the first person that I've guided through the beginning or end of that path. And that's been amazing because as all of us may know working for Adafruit is pretty amazing. So it's excellent to be able to help people find that dream. Related to that question about getting involved in mentorship, we had a question in Discord. How can someone get involved with contributing project guides or learn guides? Are there any recommendations there? So the first thing we usually want to see is examples of their work. So find a place like Instructables or another place that allows you to post basically your own learn guide. And that gives us an opportunity to see what kind of projects you're doing and what you're interested in writing a learn guide for. And then we have to pass it on to our internal folks to make sure it's a guide we're interested in. And that we have the time in cycles to spend someone up because bringing someone new into writing guides does take a lot of work. And so we don't always have that bandwidth to help the new person come on. So we can't always add new folks but basically write something up somewhere and make it so that we can check it out and then let us know what you have in mind and we can definitely consider it. Yeah, and I mean, when you are working on kind of getting your name out, somebody who works on CircuitPython submitting that onto the newsletter is great. We're gonna see you and the community is gonna see you that way. And there are all sorts of different paths and you don't necessarily know where that's gonna lead. We've got, for instance, Tammy makes things who I think kind of does Twitch streams of working on CircuitPython. And just there are all kinds of different ways to become a member of the community. And it doesn't mean you have to be on the learn system because stuff outside of that is also equally valid and super helpful for people and inspiring when they see what you've done. So yeah, pick a platform and get started and do stuff. And you're, I mean, if you're working professionally in computing or in hardware, having that portfolio visible on the internet of things you wanted to do for you but that you shared with other people, I think is super valuable. I've been around for a little while and I have an extensive portfolio on GitHub, but it's mostly stuff that I wanted to do and wanted to share with people. Yeah, so that's kind of how I think about it. I wanna respond to the secondary comment on Discord. It's when you start out writing learn guides, it's definitely not a full-time thing. Like you can write a single guide and that's the thing that you do. So basically, like I said, if you have some examples of stuff you've written up or even like the code on GitHub or something like that, you can reach out to us and sort of let us know the scope of the project and so on. And like I said, it needs to be considered by our internal folks, but we can see what we can do. So there's learn guides, there's code, there's community libraries. Are there other ways for people to get involved? Or maybe let me ask the question a little differently. Maybe someone's got imposter syndrome and doesn't feel like they have the skills or the knowledge to get involved. What advice would you give? You have to get started. That it's a terrible way to go because obviously, it's so obvious, but the fact is you have to jump in somewhere and we have a lot of good first issues on the libraries which are designed to be issues that are an opportunity for folks who've never done anything with code or CircuitPython or otherwise to sort of be able to contribute. And there's a learn guide on contributing to CircuitPython using Git and GitHub. So don't let that intimidate you and we are always available on Discord to help you out. So basically decide you wanna contribute, come find us, let us know and we can help you find something that is at your level and works for you and help you through that whole process. Yeah, I will mention what Skir dropped in the chat there as well, I think is really good advice for new folks, join the Discord and watch. I think it's pretty simple but that's one of the things that I did when I first got involved was join the Discord and just watch along, right? Watch the Help channel, watch the Dev channel, kind of get a feel for who's in there and who's talking and what they're working on and that kind of stuff. And especially kind of like the experience that Katnene mentioned a little while earlier, I definitely had that as well with the Help with channel. If you hang out there for a few weeks and just kind of watch as the chat goes by, you'll probably pick up the answers to some questions that will then come up within the next few weeks so you can be part of the batch of people helping the next new folks get involved which is very rewarding thing to see. That's great advice, thanks. Let's change gears for a moment. We've been looking back, let's take a moment and look forward. CircuitPython 8 BetaZero was released yesterday. I know Scott will be doing a deep dive in a half hour show talking about a preview of what's coming as well. But for the folks that are viewing right now, what are some of the big things coming in CircuitPython 8? So I could say, I put the list up since I just made a release yesterday. Most notably, we have the Wi-Fi workflow. Which is really cool. Yeah, it's a browser-based way of browsing the files on your CircuitPy drive and editing them and uploading and renaming them. It's sort of like just a complete file management thing in a browser. And it doesn't require anything from the cloud. It can actually work when you're not connected to the internet. So that's great. Even editing files, there's a simple file editor that you can use. And then kind of associated with that, there's a status bar which Scott added which shows up either in your terminal window or if you're using an integral display, it shows up which says like kind of like what you'd see and say an editor or something. It shows like the version you're running, what's happening like the last error if you just hit an exception. And if you're connected by Wi-Fi like what the IP address and so forth is. So those are both really helpful. They require support from external things like the Mu and Thani editors. So they're not kind of ready to use without some help yet for working on that. I want to throw something else in there. Those are probably the most important things that are in. Oh, I wanted to say real quick. That popped up in iTerm2 which is a terminal program on Mac. Completely surprised me. I had completely forgotten it had been added and I had no idea it worked on desktop. I have a window open right now and Scott got a little green snake and tells me what's going on and what version I'm running. So very cool. Yeah, Scott used the terminal escape codes that can be sent like that you would normally use to just pass status information back or change the color of the terminal or something like that. But you can also change the title. So he used that. They're called OSC codes. And I'm trying to think of there's something else. Jeff just did revised camera support. So it works on all versions of ESP32 now which is terrific. Can you and Jeff maybe take a minute and talk about the work that you've been doing on the expressive chips? Tim mentioned following along and I follow along on the CircuitPython dev channel and these last month has been fun kind of seeing camera support has come and some of the new boards. So Dan did a lot of initial work to support the ESP32. So all of the expressive chips that we support are supported by their library called the ESP IDF. But because we didn't have the Wi-Fi workflow we chose not to support the ESP32. And Dan did a lot of initial work on the ESP32 and he was still having some trouble and was taking the week off or something. And so when I came in, Lamar said, well, can you take a look at where Dan is stuck? And it was just the weirdest little thing. And the consequence of it was it was like the memory was corrupting itself of the CircuitPython RAM. And you just had to figure out one weird thing that was a hidden gotcha. And then it started really working well. And then I passed it back to Dan. So, I mean, I feel like I did the barest bits of creating the ESP32 port. It's really ESP IDF that makes them work really similar overall with just a few little differences. And then Dan's setting the stage for it and Scott creating the web workflow. So it was really a team thing of these pieces coming together because the thing that sets the ESP32 apart from the ESP32 S2 is it doesn't have native USB, which means we can't appear as a CircuitPython drive. It doesn't come up with the CircuitPyDrive that's just attached to your computer. And so we needed a good way that we were comfortable giving to our users to interact with the files. And that's what web workflow gives you. So it was all these things came together and now we can support this chip that there are, I don't know, there must be millions and millions of them out there in the hands of hobbyists and now they will be able to run CircuitPython on it instead of other environments. Other environments are all great. We love them and we use them sometimes but we want people to use CircuitPython. I think I would also say that even without the web workflow there were command line tools that are used by MicroPython. MicroPython supported Plain ESP32 for a long time but there were command line tools that were not so obvious how to use about uploading downloading files. And until the Thani editor came along which automated that and made a GUI interface for it. I think we didn't have something that we would want to foist on first time users on boards that didn't support native USB storage. So the combination of Thani and now the web workflow make these boards much more accessible. And it's true. Thani is a really great piece of software that I had not used before I started working with the ESP32. We have usually promoted the Mew editor but if you want to try out something different definitely try out Thani. The developer who I think is Ivar, I'm not sure of their name, has done a tremendous job creating a really cool program that has a lot of features and it works pretty well with CircuitPython and it's gonna work even better with CircuitPython as we collaborate with them. And collaboration outside of CircuitPython but working with the MicroPython folks, working with the Thani folks is kind of another way that I think we have been growing in our ability to collaborate is something that we've worked on and we are having these great collaborations now with the other kind of Python on microcontrollers adjacent people. And that is really nice. I'm really happy that we're able to do that. So that's a great point. Without MicroPython, there'd be no CircuitPython, right? We're standing on the shoulders of giants. I noticed that throughout the 7.0 lifecycle you merged in MicroPython 1.16 and 1.18 I believe. How and when do you choose which pieces of upstream to bring into CircuitPython? So I think maybe I, was I the one who did those? So for a long time we didn't do that. And then I think it was, it was either Scott or Dan, it was not me who did the first one in a really long time. And so Git is built around the idea of merging together different independent kind of histories. You know, I was working over here, you were working over here. We started together, we diverged and the merge in Git is about bringing back together. And we hadn't done it in a long time. And so it was onerous just because, you know there were thousands of independent changes on each side and when they changed the same lines of the same file then you have to reconcile that. But what doing a Git merge like this does is it brings in everything that happened in MicroPython. And then if we had changed it in an incompatible way the person who is bringing that together has to decide well what is the ultimate way that we're gonna do it in CircuitPython. And usually it's an easy decision because if we changed something and they changed something I find that MicroPython is usually a lot more thoughtful about what they did. And I will usually take their version over what we did because they are very thoughtful about this core product that they have. While a lot of what we do is more focused on, you know, the modules, all of our modules with a few exceptions are our own version. So when you say import time, you're getting our code that is different than MicroPythons but like when you say what happens when you type in three plus three that's really a core MicroPython thing. And if they change that we're gonna take their version of it but we have our own specific ideas of what is in time module that is just a little different from theirs. And so we have our own version of it. And I hope that gets the question you were asking. And by the way we hope to update to the next version of MicroPython once 80 is stable then we're gonna take the next version of MicroPython and that'll get us some neat stuff that I don't know off the top of my head, but it's cool. I would also say that we primarily merge the core language part and also the build infrastructure about the core language part. So all the ports to specific microprocessors we don't take that code. So there are vast quantities of it that we just discard because they're not compatible with the way we do the ports. But the thing that like to change the async IO or the changes or the language features or something we can take that wholesale because we try not to change those parts unless we have. And we are trying much harder when we do change it to have that conversation with MicroPython. We needed to change this. Here is why. And then like I'm thinking of a particular occasion when I had this idea, oh, we can save memory and flash storage if we do this thing. And I implemented a version of it. We put it in circuit Python and Jimmo with MicroPython has been kind of iterating on the concept and it's gonna save even more of the flash storage. And that'll be, I think in a future version I don't think it's out yet. And then we'll have to take that and kind of undo what I did. But it was this collaborative process where I had one version of the idea that we took sooner and they thought it through more and did a more thoughtful and more thorough thing. And then we'll get even a further benefit when we merge that in later. And it's really fun to do those kind of collaborations and yeah, working with the MicroPython folks has really gotten nice in the last year or so. That's actually a question that I had was even internally at Adafruit, how do you guys or how do you all collaborate? Do you get a chance to how do you balance your time between collaboration, what you need to do, discord, forums? It seems like you've all got a bunch of balls in there at any one time. So I'll go ahead, Tim. I was just gonna say a quick and easy one. We talked about it earlier is the meeting. I think having that weekly cadence of the meeting being able to sync up with everybody and talk about what you're doing and what you have done is a really invaluable resource. And I think a lot of projects and a lot of communities could benefit from that kind of steady cadence of communication and coordination. Very occasionally when I'm feeling stuck, I'll have like a live voice or video chat with Dan or Catney or Scott. And I know there are others of you that I should reach out to, but it's kind of who do you feel just comfortable asking to collaborate together in real time. And I feel like we should do more of that and get comfortable asking more people because the turnaround on just getting a new point of view on the problem that you're facing can really make a huge difference in getting a project done. And we need to do more of that. That's not something that I think we do enough of yet. So that's what I would ask for. That's a request. I will also say we have new people who are now being paid by Adafruit to do support. Narodoc and Eva are spending more time. Well, Narodoc especially is spending a lot of time in the forums and in Discord answering questions. And that leaves a load on us. When we feel like we have to do everything, it's hard to track down somebody's error or something like that. But if we can be called upon to answer a question when somebody else gets stuck who's doing support, that's kind of the right division of labor. So we still pay attention, but we also leave other people to do the support more consistently than we can afford to. Good to know, thank you. Tim, I have a question for you. You've been working on the hack tablet. Tell me more about that and the contest that was recently run. Yeah, thank you for asking. So the hack tablet is something that came out of the community. So community member Kevin, Kevin Matocha, Kmatch is the username on Discord and places like that. He did some initial work on the dot clock display module, which is a different way to, a different type of hardware display to drive. So I will freely admit I'm not super down into the weeds. I don't know all of the details that actually make it work, but it's a different kind of display that we did not used to have support for in Circuit Python, but it was added into the ESP IDF with the newer ESP chip. So ESP32 S3, I believe, is when they introduced this, and I'm not 100% sure. No, I know a lot more about it as it relates specifically in Circuit Python, less so about where it came from on the ESP side, but they introduced a new peripheral inside their system to support it. And some examples in the ESP IDF, Kmatch was able to take those examples and essentially build a new module into the core of Circuit Python that allows us to drive that dot clock display the same way that we can drive any other display using the DisplayIO API. So the hack tablet specifically is kind of the first iteration of that, the device that Kevin was working on when he did all of this work. It is an old recycled Crestron conference room signage tablet. So these are things you might find like in an office building in the conference room, there'll be a little touchscreen that controls maybe the camera and the projector screen and maybe ties into the phone system or something like that. Just a little device that they can use inside that conference room. Kevin kind of took the brain out of that device and made a custom board that plugs in a ESP32 S3, the dev kit device. So the kind of original ESP dev device, not the Feather or anything else yet, but that dev device. And then got everything all working together with this new dot clock module so that that ESP32 S3 can run circuit Python and interact with that display that's on the backside of the device. And so it's got a nice big, like I want to say like five or seven inch screen. It's pretty big as far as pixels. It's bigger than PyPortals and things like that. It still updates and runs smooth though. So we can animate stuff on the screen and everything is pretty snappy, the same kind of performance we do see on the PyPortal and other devices like that. And one of the most interesting things or one of the coolest things I would say about it is it does have touch inputs as well. So this device in its original life in the conference room, it would be using the touchscreen to control those various aspects of the conference room. But of course the hardware is just a generic touchscreen. So another one of the enhancements that Kevin made in our Focal Touch Library was the ability to handle multiple touch points. So that touchscreen, the hardware supports up to 10 touch points. Kevin updated our library to then support up to those 10 touch points as well. So you can actually touch with multiple fingers if you wanted to. We don't have the code out there yet for this, but you could do things like pinch and drag and all of those sorts of gestures that require multiple inputs. That's now a possibility given those updates. And then the last thing I will mention unless there's any questions or anything is the contest is still on running. So there is still one week left, one week from today we're doing the final drawing to find the last couple of folks that are gonna receive the tablet. So we'll be drawing at least two, maybe a third, because I had one of the original folks that hasn't reached back out to me yet. So we might have plus one for the next drawing, but one week from today we'll be doing that final drawing. So if you are interested in winning one of those tablet devices, Kevin made five of them to share with the community. So plus one for me and plus one for him as well. So if you're interested in winning those, I'll drop a link in the Discord chat with the details for being able to enter to win one of those devices here. Again, one week from today is when the final drawing is. That's very cool. Well, that's all the questions that we have time for today. I'd like to thank Dan, Jeff, Kattney and Tim for being part of the discussion and celebrating code and community. Thanks to everyone in the community who submitted a question and joined it in Discord. If you're interested in getting involved in Circuit Python, stick around. Up next is a short video hosted by Alec, also known as Tech Trick in Discord, giving an overview of the Circuit Python Sprint that is happening later today at 1pm Eastern. Thanks everybody. And listen to Paul's podcast. Thanks. Thank you.