Adafruit enables beginners to make amazing hardware/software projects. With CircuitPython, these projects can now use Python. In this episode, Scott Shawcroft, the project lead, talks about the past, present, and future of CircuitPython, and discusses the focus on the beginner.
This transcript starts as an auto generated transcript.
PRs welcome if you want to help fix any errors.
Adafruit enables beginners to make amazing projects with affordable hardware that can be controlled with onboard software. With circuit Python, these projects can now use Python. The combination of Pythons ease of use and Adafruit’s Super cool hardware and focus on a successful beginner experience makes learning to write code that controls hardware super fun. In this episode, Scott Shawcroft, the project lead, talks about the past, present, and future of circuit Python and discusses the focus on the beginner. We also discuss contributing to the project. Testing Circuit Python and many of the cool projects and hardware boards that use circuit Python welcome to Testing Code, the podcast about software development, software testing, and Python well, I’m really excited today on Test and Code to have Scott shotcroft.
We’re going to talk about circuit Python, right? Sure. Part of who you are is going to jump into it anyway. But will you tell people who you are if they don’t know?
I’m Scott Shawcroft. I go by Tan Newt online. I work for a company called Adafruit, who’s based out of New York. They do embedded electronics for all sorts of hobbyist projects. And three years ago, they brought me on to work on micro Python, which then became circuit Python, which is a beginner focused version of Python on hardware.
Okay. And we’ll get into that a little bit. Where were you before Adafruit?
So I took a year off in 2009, I graduated from the University of Washington with a computer engineering degree. I went to Google after that and worked on Google Maps for six years doing map rendering stuff. And then I took a year off to start my own company doing drone flight controller software, which is very much embedded development, and then joined Adafruit after that.
Okay. And you said you were computer engineering. Was there embedded stuff at Google or in your education?
So no embedded at Google for sure. I was working on a C server that was running in multiple data centers and serving map tiles to people. But when I was at University, I did hit a little bit of like make a basic CPU on an FPGA sort of stuff.
And I did like some basic electrical engineering as well. But at the time, I was totally uninterested in it.
I was totally like, this is way lower than I will ever be. It’s not interesting.
I was more like ready to work in the cloud, and I was self taught from the website as well. I taught myself PHP, and then Python was always at the high level. And when we did the low level stuff at school, it was neat, but totally I didn’t think it was that interesting or valuable.
Interesting. Did you learn C in school then, or did you learn that later?
We touched on it a little bit, and I started picking up C when I was doing I got a MacBook Pro with the first multitouch trackpad on it, but at the time, it was very much a Linux user. And so I actually reverse engineered the protocol for the multi touch and I wrote a daemon in C that lived in the user side to inject the touch events back into the Linux kernel, which is super hacky and a way for me to avoid working on the Linux kernel itself. But it did work until somebody took the reverse engineering I had done and actually made a proper Linux kernel module for it. But that was kind of the first time I saw C. Okay.
And was that during when you were at University?
I think so, yeah.
I would have to look, I’m just curious. 2008, I think is what it was because things have changed.
I graduated in 96 and at that point, everybody with CS degree had C Plus Plus.
But things have been changing since then.
I was actually helping somebody on the airplane that I was sitting next to within the last year because they were doing the same assignment that I had done when I was in Intracs at UW.
As far as I know, it’s still all Java based. I was at Ta when I was there too. So I helped people through the programs and he showed me the handout and I was like, oh, I’ve definitely helped people with that. I’ve definitely seen this. A lot of the UWCs stuff was Java focused. I don’t know how much of it still is. But there’s also a programming language course where you did start to see some C and C Plus Plus and then the weirder ones like Scheme and Haskell and all that.
The reason why I’m asking you this. It seems weird because we’re going to talk about Python, but circuit Python is written in C, right. Or C Plus Plus C. Yeah.
Okay. We inherited that from Micro Python because we’re a fork of Micro Python.
Okay. So what I wanted to cover, hopefully, is some of the history of circuit Python and where we’re at now and where we’re going. It’s a big thing to talk about, but you probably are used to talking about it, hopefully.
Yeah, I’m used to talking about that stuff. And I do want to talk about testing too. So for those folks who are testing gurus, we’ll get there, I’m sure.
Okay. Well, we can fast forward through any of these pieces. So, yeah, you came on Adafruit because they wanted to do micro Python. So take us from there.
Yeah. So I was not liking my job that I was doing like my own company.
It wasn’t going to start paying the bills anytime soon. So I had gone to them and said, hey, I’m looking for work. I’m a software engineer. And they emailed me back and said, look, we have this project, would you be interested? And it was making Micro Python work on a different microcontroller chip family that they had a lot of products based on I had been a huge fan of Python throughout my life. As a programmer, I’d always use it for things. So that’s the first I had heard of Micro Python. But the moment I heard about it, I was sold on the idea. And then as I dug into it and as we started to evolve it for Adafruits products, there were some things that I thought Micro Python could do better. One example is like making it really easy to demo and iterate through saving the file that is on the drive. So circuit Python when you plug it in and micro Python two, you plug it into your USB and it shows up as a thumb drive with a Python file on it and you edit that file and you can save it. And MicroPython, when you save it, won’t rerun it, it will just continue running. If it was running, if it had stopped, it won’t start it again. You have to have your serial connection open to rerun the file. And I was like, you know what we could detect when those rights happen? Interrupt it and rerun it immediately to get a more reptile, like feedback loop going. And so that was one of the things that kind of started to shift our focus away from what Micro Python’s focus was. That was one of our beginner friendly tasks. And then the other thing was that we knew Adafruit has a lot of products, and those are different sensors and things, and all those different sensors take different drivers and libraries to add support for those. Ad fruit had become very successful because they had built on top of Arduino, which is a C plus plus based system. They had built a bunch of drivers on top of Arduino. And now we knew that going forward, if Python was the thing, we were going to end up building a bunch of drivers on top of that. And in order to do that, we needed a strong, consistent hardware API across all of the things that would run what became circuit Python. And so we also saw that our focus and our style of hardware API design was going to change for Micro Python as well. So as we leave that stuff out, we decided like, look there, it’s a ton of work to get this upstream. And it’s not even clear that Damien, the creator of Micropytel, wants this stuff upstream. So we’re going to just continue on as a fork and we’re going to rename it so that it is clear what works with circuit Python, what tutorials are meant for circuit Python and those things are not necessarily compatible with Micro Python.
That decision to fork, was there any pushback either from the MicroPython folks or from Adafruit?
There was uncertainty on both of those grounds. Generally, forking is not something people are for. But it became clear that if we wanted to do what we wanted to do and do it quickly, that was the place to do it. Damien, we’ve been in constant or semi regular contact with Damien throughout this whole process. Damien the creator of Micro Python and still the maintainer. He had been kind of burned by other companies coming in and wanting to get their support for their products in MicroPython and then having their focus shift, and suddenly there’s this unsupported chunk of code in the code base. So he was rightfully wary of us coming in and being like, look, we’re creating all this code and we just started and maybe he’s going to be left with a bag of stuff that he’s got a sport then. So he was wary of getting it upstreamed in the first place.
So that’s one of the benefits of the fork on the MicroPython side is that all of your changes, the circuit Python people need to support it themselves. Yes.
So it’s not an extra maintenance burden on Micro Python. There is this general sentiment that it would be nice if we were one project again.
Now it’s easier to say that because we’ve been going three years and we’ve kind of proven our value. But at the same time, we still do have conflicting opinions about the way hardware APIs should be written and whether we should prioritize performance over Pythonic style. And so I think we’ll continue to talk with Damien. Like, I talked to him semi regularly and we’ll continue to talk about those things. But I think there’s a world that the Micro Python family of software is stronger for having multiple Forks within it. And it’s important to also note that it’s not just MicroPython and circuit Python. We’re unique in that we’ve renamed, but there are a lot of variants and different repos of Micro Python that other people do maintain. They’re just also called Micro Python. The most popular example is probably actually the MicroPython for the Microbit, which is not actually maintained in the core Micro Python repo. It is also maintained by Damien, but it is maintained separately and has separate APIs as well.
That’s interesting. Yeah, that’s kind of confusing.
And that’s why when we chose to be a longer term fork, it was like we need to rename so that it’s less confusing. I know people don’t like it because it can be perceived as taking credit away from Micro Python, but it is good for both projects to be clear about what you’re talking about. And we try to give credit where credit is due as often as we can, because Micro Python in and of itself is an amazing feat of software engineering to get something that feels so much like Python 34 on a device that runs has 192 KB of Flash and like 32 KB of Ram. It’s just incredible.
I’m actually just amazed. And nothing but raised because this focus on trying to get new people into controlling hardware and doing it, it looks like through your efforts and Adafruits taking the whole workflow and paying attention to all of the rough edges, all the sticky parts that are difficult, that shouldn’t be difficult and trying to make them easier.
And you guys are keeping doing that, and that’s incredible.
There’s always more work to be done. I was just helping my neighbor. I have a neighbor who’s ten, and I just bought him an Ada box, which is our subscription service. And the latest one was a gaming handheld. And he came over and needed some help getting going. And it was just like there was so many hurdles and stuff that he had to get over that we have a long ways to go in making it as easy as we possibly can. So, yeah, we got lots of work ahead of us for that.
But there’s somebody working on it. And that’s great because it wasn’t that many years ago that really sees your only option if you’re going to be working with hardware. Right. That’s a big hurdle in itself.
Like, you got some kid that wants to just control their mini blinds in their bedroom and you’re like, well, okay, so first you got to learn C, and then you got to learn interrupt systems. And then we’ll talk about like, Ohm’s, law, when do we actually get to controlling the blinds?
Yeah. Anyway, so cool.
Yeah. It’s a big focus of ours to make that as simple as possible.
How long was this going on before we had a Circuit Python released to everybody to play with?
So I started in August of 2016 or so, and we did like one or two releases as Adafruit MicroPython. And when we did those releases, it became clear that version numbering was interesting as well. Whereas if we’re calling ourselves MicroPython, like, if we call ourselves Ad Fruit MicroPython, like, people are going to truncate it to Micro Python, and then we’ll be confused again. So I think it was January of 2017.
Yes, I think it was January where we had decided, okay, we’ll rename and we’ll actually start with we’ll reset our version numbering scheme as well. And it’s all Samba and stuff, too. So I think it was about January when we had an official release of what we called Circuit Python at that time. Now, all of our development is open, so you would have been able to use Micro Python based on the code I was doing is basically as soon as I was writing it, because it’s all MIT licensed, just like MicroPython is, and we don’t work anywhere else except our Open repositories.
Okay. And do you know how many products for meter Fruit can run on the Circuit Python?
So we have our downloads page, which is circuit Python. Orgdownloads. And I think the last count I saw was 66 different devices.
There’s at least one device where we have, like, two different Circuit Python builds depending on what you’re doing, but it’s definitely above 60 for sure.
Okay. We’ll have to check that out.
Yeah. And it’s growing like crazy.
The one I’ve played with so far is the Circuit Player Express, which just good or bad, once you get it, you have to do a little bit of a dance before you can play with circuit Python.
Because it comes as an Arduino, correct?
Unfortunately, there is a Code.org tutorial, like a tutorial there that uses Fermata, which is interesting in that formata. Is Python on the host controlling hardware. So it’s like an earlier attempt at making programming hardware with Python easier, but it’s tethered. And so in order to do that and be able to plug it in and have that good experience with Fermata and Code.org, we have to ship with code on the device that knows how to speak for Mata and respond to that. So if somebody wanted to implement that in circuit Python, we’d actually be able to ship with circuit Python on the device as well.
I’m just telling people that so that when it doesn’t work right away, it’s not that hard. There’s tutorials online.
It’s just like hit the button a couple of times and then copy the file over and then that’s it.
Yes. We tried to make that as easy as possible.
Too, but we’ve got the Pipe portal. I was looking at the Pipe. I want to play with the Pi gamer. That looks fun. There’s like a Kitty thing. I’ve never seen this before. Meow. Meow.
Yeah. That’s not a native fruitboard.
It is not. Okay.
It’s by some folks that we met in Maker Fair, New York last year, called their company’s Electronic Cats, and they’re based in Mexico.
And they have this cat shaped board called the MYOW, and it runs the same microcontroller that we run on all our stuff. So I went around Maker Fair looking for people running the same chip, and I just said, hey, you’re running the same chip. You should have circuit Python on it, too. And they totally got on board with that. And they’ve been contributors to circuit Python since, which has been awesome.
Okay. So that was going to be one of my questions. Was circuit Python just for Adafruit?
It’s not it looks like it because Adafruit sponsors it, and we make sure that Adafruit devices are supported by it. But we would love to have non data fruit hardware supported as well.
And I’m always happy to help people make that happen.
Okay. This is cool. So where do we go from here? What are some future steps for circuit Python?
Well, as I alluded to, I think it’s all about making it easy. I’ve pushed really hard for us to continue to think about what is the first five minutes of someone’s coding experience. So going from zero to something in five minutes is the goal. So we’ve got some work there to do. But one of the biggest things that I am just about to start working on is having a similar experience to our USB. Plug it in and read the file and edit the file on and off you go. But making that work from a mobile phone or tablet. So over Bluetooth low energy connect to your device. So how do you pair and then once you’re paired, how do you edit a Python file on a touchscreen?
It’s a big task, and it’s certainly not something that we’re going to have refined by the end of the year, but I hope that we will at least have a proof of concept that kind of like people get right, like people understand the power of being able to edit code from your phone or tablet.
This brings up a question of mine. There’s a big focus on getting people started quickly and in education and teaching, programming and teaching electronics through this format, which is neat. But once I get past learning it, can I make serious stuff with this?
There’s no reason you couldn’t. But when it comes to what we support, like what it actively maintains, we don’t necessarily support features that you would want if you were going to ship it in a device for tens of thousands of things. Like, we don’t do sleep and sleep is a big one. Performance is probably also another, and that’s just not been our focus. That doesn’t mean that the codebase couldn’t be evolved to do that. Micro Python actually is a great foundation. They have really good test coverage, the core bits, and they’ve been vetted. Like, Damien actually was contracted by the European Space Agency. And so there’s a variant of Micro Python that he maintains for them. As far as I know, that is like flight ready. They did a bunch of static analysis over it and they can actually put it on a satellite. So the foundation we have is strong. But the work that Adafruits done with circuit Python has not been geared towards having it productionized. Okay. Where MicroPython to its credit.
Is kind of doing that in the main, I guess the master branch of Micro Python does it support sleeps?
I believe so it’s going to vary from chipset to chipset. So a lot of Damien’s products. So Damien creates hardware as well, called the Pie Board. He has a new Pieboard D series out, and they’re all STM 32 based, and so those may support those advanced features. I haven’t actually looked to myself, so I don’t know.
I don’t want to discourage people because I think it’s still a great place to start learning, getting kind of proof of concept and some ideas. It’s just that there may be some hurdles to go from. I could make it in my den or I can make 100 of these.
Yeah, for sure. I think there’s diligence that needs to be done, regardless of what system you’re doing. The way I see it is using something like Micro Python or circuit Python to start is just not falling for the premature optimization trap. Right. You don’t know if Python is going to be fast enough until you proof of concepted it. And then if it’s not fast enough or not power efficient enough, you can always dig into the open source code and improve it for what you need.
But also to be fair and Devil’s advocate to myself, I guess in the past playing with all this stuff meant, like, often putting chips and wires in a breadboard, which is also really far away from any sort of product.
Yeah. There’s a lot of work there.
Yeah. Probably why these questions come up is because it really looks like something I could probably sell because for $25 or something, I can get a chip, get some cables, get things going together, write some software in an afternoon. And I’m like, hey, this is good for a beta. I could start shipping these things.
And that’s what you want when you’re developing a product. Right. Like, you want to be able to validate your idea with the least amount of investment as you can. So that’s not a bad thing.
No, that’s great.
But it does mean that you will have diligence to do later. But that’s no different.
Regardless of what systems you use to create a product. Like, you’ve got to have diligence at every level of scaling that you’re doing.
So this is targeted towards. There’s a lot of targeted towards education and teaching people. Have schools picked up circuit Python?
Do you know, I think what we’re seeing is that teachers are picking it up. Adafruit themselves doesn’t really target traditional education markets like in terms of lesson plans and getting a school district to adopt things. We kind of are more grassroots where we’re aimed at beginners more broadly. So that doesn’t necessarily say anything about age or situation, but that does mean that one subset of that is teachers who want to create things. So what we do in terms of material is we have learned guides, and they’re all Creative Commons licensed, I believe. So those are the foundation that teachers themselves can choose to build on when used products.
Yeah. One of the things I love, I’m seeing other people in similar boats as me is the work I do day to day is stuff that takes months to develop, and it’s lots of people working on it. And sometimes there’s been times where it’s frustrating. You can’t really see what your work contributes to.
And also you can’t really see it. It’s like writing an event handler for this system that it runs somewhere else. And I can’t even buy one of these because they’re $10,000.
But the circuit Python stuff, I think speeding it up is great because I only got like half an hour time at home that I could play with this, and I can actually get something done in a half an hour. And it really feels like I am learning something yeah.
And the other thing I really like about it, and the issue I had before circuit Python was that I would make a device to sit around my house and do something. But two years go by, I got a new laptop, and I’m not actually sure where that code is anymore. But with circuit Python and MicroPython, because the source code itself is interpreted by the device itself, it also means that it’s stored right there. So if I wanted to pick up with a device I’ve created two years ago, I can just plug it back into my USB, and I have all of the tool chain and all of the source code just right there.
And you don’t need like a cross compiler or something, right?
It’s just a Python file.
No, I don’t need anything Besides the text editor or code editor installed on my laptop. Everything else is done by the device itself.
Yeah. So that’s sweet. So what do we talk about now? Do you want to talk about people getting involved, or do you want to talk about testing?
Well, I think those can be one and the same, but generally a lot of hardware folks are C background. So if people are general Python folks, we can always use more Python eyeballs on code to make it more well structured and more Pythonic.
We have a huge code base now of libraries that sit on top of the C Code, of circuit Python, and all of those can always use some more Python. Love that’s. One of the areas that would be great to see folks contribute more.
When you say sit on top of C. So that means if I don’t know C, I just know Python, I can still help out.
Oh, for sure.
Yeah. So the C Code exposes just like C Python. It’s modules, Python modules on up. So on top of those built in modules that we have, everything else is Python okay? For example, we have kind of two layers. The lowest Python layer is just drivers. So like, I have a temperature sensor, and these are the commands to read and write the temperature from it or whatever.
And then on top of that, we’ll have kind of product level libraries as well. So we have the Pipe portal, which you were looking at earlier. It’s a three inch diagonal screen with a WiFi chip on the back, and we have this much higher level abstraction library on top of it that makes it easier to do queries and request style. But then we also have all of this display management stuff there as well. And that highest level is where there’s a lot of value for Python folks to contribute and making sure that the APIs for WiFi requests are well structured and match what you would use on regular Python, and then also for the display stuff as well. And that’s the level. Also, we actually do support most of those libraries work on single board computers like the Raspberry Pi as well. So we’ve got the lowest level of circuit pythons APIs, basically re implemented on Raspberry Pi and C Python using a library would call Blinka. And so folks can help us even if they have a Raspberry Pi as well. And those libraries are improved for both C Python users and for circuit Python users.
I guess maybe you said this already, but I’m confused. Still, does circuit Python run on Raspberry Pi.
Or does circuit Python itself does not.
Okay. But some of the libraries that work on circuit Python also work on Raspberry Pi.
Correct. Because we have a base library called Blinka that gives you the same modules that circuit Python gives you, but within C Python.
Okay, neat. Let’s check out Blinka. I haven’t looked that much. So Blinka is would I use Blinka anywhere else, or is it mostly for these system on a chip things or system?
I think it should work with Linux in general, but generally Linux laptops won’t break out like GPIO pins or I squared C pins like the single board computers do.
Okay, got it.
So it will be of limited use.
So the testing part, if I’m writing code for a circuit Python or something, how do I test my code?
Yeah, this is something when we met earlier, this is one of our gaps. We’ve inherited a really good Python VM unit test and integration tests from MicroPython, and those are written in Python. So you’ll run like a basic Python test and compare the output between CPython and circuit or micro Python, and those are really strong, but where we start to see gaps is in specific microcontroller support. So one of the testing challenges is how do I test that? I scored C works on a particular device, and I think you have some experience with actual hardware integration testing. We would love to get to a world where whenever we build, we make a commit. We have 66 boards that we support loaded up on all these boards that maybe have all of these peripherals connected, and we make sure that everything works. Right now, that is not the reality. We basically have none of that. So that’s one place we could have some more testing. Another place would be with the display work and the audio work that we’ve been doing. We have more C coded logic, and so having I think C level unit tests within circuit Python would be hugely beneficial as well. So we don’t have to go through the Python to see translation layer and then figuring out the opposite end. So all those libraries I was talking about are mostly written in a composable way. So you pass in like your I squared C bus, so you could theoretically knock it out to validate that your logic was correct, but we don’t do that currently, so there’s room there as well on the Python land side, to take a driver or take a high level library and write tests for that as well.
Oh, nice. It’s written in a way that in a composable modular way that you could possibly pass in a mock hardware driver. Yeah.
And that’s something that design pattern of composable pass in the bus that you’re going to use or things like that actually has made it way easier for us to expand or be more versatile in the way that we support things. So that’s one reason Blink can be so successful with C Python is that we don’t actually import anything specifically. We can just pass in something with the same API and be okay.
So, yeah, it’s worked out really well, and it’s blown the minds of some of the C and C plus plus folks that we work with, like the embedded folks that have that background. It kind of takes a little while to understand that we don’t actually care about the type, we care about what it does. And as long as it does what we need, then we’re fine.
Yeah. Duck typing is a beautiful thing.
It is, for sure.
That’s cool. How many people are working on circuit Python then?
Adafruit fully pays for people to work on circuit Python. That includes Blinker and all of the libraries in addition to the core. So there’s a few of us that work on the core. We have a few contractors that are kind of like an hourly stage right now.
And then we also have contributors too. So we have our weekly circuit Python community meeting where we have kind of these stats. Like we had 40 pull requests over the last week across all of the core repo and all of the library repos. And I think we had 18 authors of all those pull requests. So basically, if you go and get help and look at the Insights tab for repository, it gives you those stats. What we’ve done is we’ve written a script to basically aggregate those stats across all of the circuit Python repositories.
All this work. So if somebody were to volunteer, it’s not giving free work to Adrian. It kind of is. But it’s an open source project, right?
Correct. So it certainly benefits Adafruit in that we use this open source code, but it is all MIT licensed and anyone is free to use it. So as we see circuit Python get bigger and bigger and have support by more and more manufacturers, everyone will benefit from those things.
I was surprised to find out that I don’t know if all of it is, but a bunch of the hardware for Adafruit is open source as well.
It is, yeah. Adafruit does open source hardware as well. So after a product is released, all the Schematics and the Gerber are released on GitHub. The one thing that is not released is the test code. So if you do want to productionize it, you will have to make your own tester again, but as a hobbyist, you could totally build off of it.
Yeah. So see, the test code is the most valuable piece.
It is. It’s the secret sauce. It’s the thing that lets you scale up, which makes total sense.
You can learn about how the hardware is designed. And there are videos online of Lady Ada, the founder of Adafree, has done about how do you make a tester, but the testers themselves are not open.
Okay. Interesting. Well, thanks so much for coming out and talking about Circuit Python. This has been a lot of fun.
Yeah. I’m always happy to talk about it. Thank you for having me.
You bet. Now I got to play with some hardware and then we’ll make some stuff and I can see if I can get those mini blinds working.
Yeah. And that’s kind of my call to action usually is like, even if this didn’t sound that interesting to you, go out and try it. Even if you don’t end up using it day to day, you’ll probably pick up some things that you want to carry forward in your work. Going forward.
The little Circuit Playground Express that was given out at Python.
It was sitting in my goody bag for a while, a few weeks, and then I plugged it in once I figured out that I had to download the new code for it, which you helped me with that. So thank you. But getting that working and there’s something magical about just editing a file and the lights do different things and it’s too bright. So I find the intensity setting change that and suddenly it’s not as bright and it’s just this instant physical feedback and it isn’t anything useful. I’ve got some lights, but feedback makes programming more real. And I have talked with teachers that are using this in even grade school and junior high level, mostly junior high. But I think you could go down to grade school because trying to get somebody to care about a command line interface is not easy. But having them be able to make some pink lights go around, that is interesting.
Yeah, I think so. Anyway, and the idea that you can unplug it and then turn it on and it still does that thing is really neat, too.
Yeah. Because then you just replace the USB with some other USB power source, even a battery pack. So thank you for working on this. I hope that you will have lots of fun keeping cool things coming our way.
Yeah, I plan on it. I’m very excited to unlock or open up Circuit Python for people who don’t have laptops, particularly my nieces and things.
Yeah. And I’d like to encourage if anybody listening is a test geek also and wants to help out, don’t contact me, contact Scott. But I’d love to hear back from people that are helping out doing some of these even little things, like just even code review some of the stuff.
Yeah, code reviews are super helpful so I guess I should say how to contact me.
Oh, yeah, that’s a good idea.
I’m scott at adafruit.com is my email. I’m always happy to take emails. I’ll probably redirect you to other places after that but we have a discord server which is a chat room that is you can go to the URL 80 A-F-R-U. Itdiscord that will get you in there and that’s basically where our development discussion happens in the open is through our chat channel and the voice channel on discord and then if you’re a Twitter person I’m on Twitter is T-A-N-N-E-W-T Tanut so you can look me up there too but any of those options work.
Okay. And we’ll put all those links in the show notes too for people. Awesome. So thanks a lot and we’ll catch up with you later.
Thank you to Scott for all of your work with circuit Python and for this great interview. This episode was brought to you by Patreon, supporters and you. Thanks to listeners like you telling friends and colleagues to listen to the show. We’ve grown the audience size to over 10,000 listeners per episode. So awesome. Thank you and Patreon and supporters help make that happen. Special thanks to new superhacker supporter cliff Wildman. Actually let’s do a round of thank you to all the supporters at the super hacker level. Thank you to Andrew Diedrich, Chris Fraser, cliff Wildman, Daniel Zimmerman, Evan, Johnny Cochrane, Michael harp, Oliver best, Walter and last but not least Steve Holden and there are 52 other patrons that help support the show every episode. Join these wonderful people by going to testandcode.com support. That link is also in the show. Notes at testandcode.com 84 that’s all for now. Now go out and test something.