[Music]
Welcome to the Circuit Python Show. I'm your host Tod Kurt, taking over hosting
duties from the show's actual host Paul Cutler so that he can be a guest. Paul has
been using computers since a young age but did learn to code until he was in
his 40s. Paul has been contributing to open source projects for almost 20 years
including the Gnome Project and the Discogs Python Client. When he's not in
front of his computer you can find him listening to records from his vinyl
record collection. Paul, welcome to the show. It's great to be here, thanks for
guest hosting. Hey, my pleasure. I love the Circuit Python Show. So I guess we
should get to start with your background. How did you first get started with
computers and electronics? You know, I've been pretty privileged that I've been
around computers almost my entire life. I was probably nine or ten when we had our
first computer which was a Timex Sinclair TS-1000, which was really a modified Sinclair
ZX81 is what the rest of the world knew it as. And then we got a second one,
we got the TS-1500 which was a ZX Spectrum just a year or two later and I
played around with those for a couple years. You know, I remember getting those
magazines that were made out of newspaper and entering assembly code
trying to program them. You make one little mistake and you just want to tear
your hair out. But after a couple years we got an Apple IIc and I played around
with that and we got a 300 baud modem which was screaming fast at the time and
I got really into the bulletin board system scene. I loved BBS's and later we
had a 1200 baud modem and I would actually go to in real life meetups with
the different folks I met in the BBS as a teenager and from there it's just a
lifelong love of computers. That's great. So when was the time you started
getting into open source? Was it during the Apple II days or was it later?
Oh it was much later. I was a full-blown adult and it's the fault of the
game EverQuest of all things. So EverQuest came out in '99 and you could
cheat at EverQuest if you had a Linux computer. And I just happened to have a
second computer. I had been playing around with BOS actually a little bit
and then I had actually purchased Red Hat Linux from a retail store six months
earlier but it just sat in my closet until we started playing EQ with all my
friends and I realized I could take that second computer put Linux on it and
cheat at the game which was great. I know. That's cool. So I started using Linux and
I had the second computer next to my gaming computer and the more I used it
the more I liked it and I really loved the ethos that anyone could contribute
to it and after probably four or five years of using Linux this would probably
be around 2004-2005 I had done all the different distro hopping that people had
done. I had tried Ubuntu and I had tried Fedora and by the mid to late 2000s I
found a very small Linux distribution called Foresight and which isn't around
anymore but one of the things that they really tried to do was be really close
to upstream GNOME. So I started contributing to Foresight which led me
to contributing to GNOME and I got really into that. I joined the marketing
team and the sysadmin team even though I didn't really have a lot of sysadmin
skills but I had project management skills which are always needed in open
source projects. Yes, very much. And then I started writing a ton of documentation.
I served one term on the board of directors and yeah and it's been you
know 10 or 15 years since I probably left that scene but I just I loved it so
much. I've made lifelong friends in that community. I was gonna ask you if
you were a gnome or a KDE guy but I guess that answers that question. Oh yeah
I'm a gnome guy there's no doubt about that. And one of the things that I'm probably most proud of is I
was one of the first mentors for the GNOME outreach program for women that
was started in 2010. So I mentored a couple of women for documentation and
that program is still around. It's known today as the Outreachy program. Outreachy
is still around and offers paid internships for those subject to
systemic bias and under representation in tech and it promotes diversity in
open source. So it's kind of cool that it's still around after all these years.
That's great. Yeah the whole very underlooked aspect of open source I
think is the management and documentation of the projects. It's like
everyone's like oh we just just write the good code put it up on a repo and
like you're done. It's like no no no that's just the start you know.
Especially for really complex projects like a distro or a big like GUI
application there's like so many different levels of like you know the
code, the OS integration, the artwork you know it's just a huge
huge task. You're absolutely right and I didn't know how to code at all when I
was contributing so I'm a you know an example that you don't have to know how
to code to be able to give back to an open source project. Right so but at some
point you got into Python after after playing around with all this open source
stuff. I did. How did that happen? I had an itch. I really wanted to learn
programming. My wife is a developer and I had an itch to do it. I had time on my
hands and it was something that I've always wanted to do but never had the
discipline to do it so I went out and I bought a couple of Python books and
realized very quickly that I don't learn from books. I learned from video courses
and from hands-on projects is what I learned through the process so I took a
course on Coursera with Dr. Chuck which taught me the basics of Python. What's a
string? What's an int? You know how to manipulate strings and all that kind of
fun stuff and then right when I was getting into it Michael Kennedy who
hosts the Talk Python to Me podcast started Talk Python training and he had
a Kickstarter of learn Python by creating 10 apps so it was very project
based and was perfect so I bought that Kickstarter and then I kept buying
classes from Talk Python to Me. The way he teaches really clicked for me and it
taught me not just Python but I learned web frameworks like Pyramid and a couple
years later I learned the fast API web framework as well so I'm a big fan of
the Talk Python to Me classes and strongly recommend them for people that
are looking to get into Python. Oh that's cool we should put that in the show
notes I think then yeah? Absolutely I'll link to that. Right on right on and so and then how
long did it take you to find Circuit Python like when when sort of in the
history of Circuit Python did you come in and start playing with that? So I
started Python in about 2017 and I got into Circuit Python because I was into
Python I attended PyCon virtually in 2020 during the pandemic so it was the
first PyCon I ever ever attended which was pretty cool and Microsoft had a
booth a virtual booth at PyCon and if you did an exercise on these exercises
built into github and if you learned and did the exercise you got a $50 Adafruit
gift card and then they had a bonus exercise and I walked away with $100 in
Adafruit gift cards. I did what probably everyone does when you're first
starting out with Adafruit products I bought a Circuit Playground Express and
it probably sat in my in my drawer for a good six months before I got it back out
but it was during the pandemic and there was all we had was time on our hands and
then I started playing around with that and quickly fell in love with Circuit
Python it took two things that I love you know the the coding aspect of it but
combined with that physical world aspect of it here's a device that you can touch
and feel and I just thought that was the coolest thing ever. Yeah I've been
I've been I've bounced off of Python like normal desktop Python many times
over the last like 20 years or whatever always you know learned enough to do a
project and then kind of it you know I finished the project and then it leaves
my brain and I've been really happy with Circuit Python as a way to just learn
Python like I don't know any of the web frameworks yet like you're talking about
like Fast fast fast API fast API yeah like um you know I don't know anything I
don't know you that you need the real Python frameworks but I think I'm pretty
cognizant of how Python thinks in a way that I could actually learn those now
as I definitely could not before. Yeah fast API was a fun one to learn because
it's it was one of the fastest growing Python applications out there and it's
async which is great for a web web server and learning that taught me a lot
about you know how to program asynchronously as well as using the
latest and greatest that things that are out there. And you've got some project
now that you've created that that marries both desktop Python and fast API
and Circuit Python right? I do it's it's probably the the project I'm most proud
of I have a website called silversaucer.com that you can visit it was
inspired by a Neil Gaiman poem of all things and it combines my love of vinyl
records Python and Circuit Python so I learned how to use the Discogs API and
Discogs is a website that's been around for about 25 years and they crowdsource
all the different records and cassettes and CDs that are out there so for example
Pearl Jam's debut album 10 has almost 300 different versions worldwide each
country had their own CD and people have entered all this data into there to
catalog each specific release. So I have a fairly large vinyl record collection as
listeners know and I wanted to learn how to interact with an API and I wanted to
learn how to use fast API so I built a site and it only does three things
there's three buttons on the front one is a random button it'll randomly choose
an album for me to go play it's just an inspiration for me. So anyone on the
internet can say hey Paul go just randomly go pick an album. Well it'll pick
an album for them but it doesn't tell me anything. Oh I see okay. Now if I'm logged
in there's some different functionality when it comes to the Circuit Python stuff
but I'll get to that in a minute. Right right right. And then there's a play
button and if you in that shows you a list of every record I have and you can
select a record and then I'll show you the album art and the song list
underneath it once it loads and then there's an another feature that I built
called On This Day that I scraped both discogs and music brains with my
collection to figure out which day in a certain album was ever released. Oh cool.
So which is another way that I get inspired to go listen to an album it's
like oh you know it's for example and this is kind of a funny one yesterday or
today Debbie Gibson's Electric Youth came out in 1989 which is a record that
I happen to own I love 80s pop music so you know don't laugh at me too hard but
it's a great way to just go pick a record off the shelf and say hey I'm
gonna listen to this now. So once I started getting into Circuit Python I
realized that I could take it a step further. Now my record player is in
another room it's on the opposite side of the wall of my home office down here
in my basement so it's only about 10 feet away but the record sleeve is in
there so I can't see the album art. So I have a pie portal and I decided using
the discogs API it shows me that the album art the download to JPEG that's
displayed on the website while using the pillow library I took that album art and
reformatted it to a pie portal size which I think is about 300 pixels or
320 pixels and when that web page loads if I'm the user who's logged in it will
then send a message using MQTT over Adafruit IO and the pie portal is
listening for that MQTT message and once that page loads and sends the message
the pie portal goes out to my web server downloads the album art and displays it
so that's how I kind of married desktop Python with Circuit Python. So it's a little
thing that sits on your desk and it just displays the album art and oh
that's great as soon as you play to play an album that's cool yeah. Yep as soon as I
choose that album to play on the website and then late last year I bought a 64 by
64 RGB matrix and did the same thing again but now it looks like pixel art
because this is a 64 by 64 image it's tiny by the time it shrinks it down
but it was kind of cool and now I'm actually considering doing it for a
third time and picking up one of those s3 qualia boards with one of the RGB dot
clock displays that are a little bigger than a pie portal but I haven't
spent the money on that yet. Yeah and the color the color rendition of those
displays like they're both like higher density or higher resolution they're
like up to 480 by 480 I think but also they're like I think they're six bit per
channel color instead of the sort of mostly five bit per channel that the
other displays use on my controllers are so it's like it's like man we get to
drive these like real displays and Circuit Python it's kind of incredible
exactly probably the next time I order something from Adafruit I'll pick one of
those up and do the whole project all over again. Totally totally yeah there's
no OS so it just starts up. Exactly. So we talked about like like quality is one of
the new the new things that's going on in Circuit Python what are some other
other things you're excited about that's coming up in in Circuit Python because
it's it's kind of ever-evolving there's new things happening all the time what
are some of the things that you've seen? You know the first two things that come
to mind are the first is the Memento camera I have been waiting for that
thing to come back in stock and I just think it's so cool not only is it an
open-source hardware camera it's programmable and every time I think of a
different way to program it it seems like there's already a learn guide to do
it whether it's you know using a remote or stop-motion or creating GIFs and I
just think that thing is is cool and I can't wait to get my hands on one. The
second one that comes to mind is is USB host you know that combined with support
with the new bigger RGB dot-clock displays makes me wonder and and Scott
Shawcroft actually mentioned this in his Circuit Python 2024 blog post how close
are we to a little mini Circuit Python powered computer right when you have a
computer or a keyboard with the display it can't be that far away now I know
that USB host only works on the IMX and the RP 2040 chipsets right now in those
dot-clock displays work on the S3 so there's gonna have to be some work done
probably to get to that point but it that's one of the things that I think
I'm really excited for in the future yeah we're really close to something that
is very much like the old Sinclair zx81 or the timex one you had where where
it's just this little box and it and you just turned it on and you've got a full
little language based computer you can type programs into without any like
worrying about is it on the net is it is it running OS all this kind of stuff is
just all it does is the language it does basic in the case of the zx81 or it does
Circuit Python in the case of this hopeful new thing we could make in a
year or so it's exactly yeah the the camera the the memento camera is pretty
great because it takes a bunch of stuff that's been here and there like there's
been a camera you can hook up to an ESP 32 for a while and there's been like you
know SD card support for a while and all this other sort of stuff you know
screens of course and now it's a whole thing it's like it's got the camera the
screen a little microphone a little speaker SD card Wi-Fi and oh yeah and
you can access all of this via Circuit Python and make it do things that a
camera can do right and it just works yeah yeah so it'll be interesting it's
it's um one of the one of the things that I think people need to realize
about Circuit Python that has taken me a while is um it's sort of like Legos
where you can you've if you've got the pieces available to you you can snick
them together to form new things but if you don't have the right Lego piece you
can't do stuff like and so like for a while like for the longest time there
wasn't camera like the camera Lego piece and Circuit Python didn't exist but now
it does and so I think it's pretty cool that we're getting more and more of
these cool little Lego pieces that we can do stuff with oh I agree it is so
cool to watch the development happen in real time so so we got all these new
things that are that are definitely coming up what are some of the things
you want to see Circuit Python do in the future you know one of the things I'd
like to see is more options for Bluetooth so we've got that an RF boards
that that are out there and with Circuit Python 9 they've updated the expressive
IDF the IOT development framework and I know or I believe that there are still
some changes upstream in the nimble library that need to happen before
Circuit Python can take advantage of Bluetooth on an s3 chip but I think
it'll be you know considering all the different places we're seeing these s3
chips now right the qualia boards yeah the memento camera everything we just
talked about adding Bluetooth it just seems to be the next step and that's one
thing I would personally like to see yeah yeah definitely the these ESP 32 s3
chips are so powerful with their like they've got dual core I think and
they've got Wi-Fi and they've got Bluetooth but yeah getting the Bluetooth
stuff has been not quite working on Circuit Python and I think there's even
been a problems with it and when you're writing programs in C and stuff and so I
can't wait for that because it's pretty cool to have your have a little Bluetooth
gizmo that talks to your phone or whatever and so you can pull off you can
get cool notifications from your phone you can like control your phone in
various ways you know have it be a MIDI device or audio device or something
right yeah this isn't the end of the show yet but I wanted to also thank you
for the last what two years of doing the Circuit Python show I think it was a
very critical tool to help get people to learn about Circuit Python and get
people who are doing some of the Circuit Python stuff kind of get them out there
into the world so thank you very much oh you're welcome it's been my pleasure
that you know the developers and hackers and makers that I've gotten to talk to
it's been so cool getting to know all these people and seeing all the cool
projects that are done you know it's it's sad in a way that the show is
coming to an end but I think it's time but yeah the last two years have just
been wonderful and being able to meet everyone especially a good a good thing
to let us do instead of worrying about the pandemic for the last couple years
exactly and that's one of you know one of the reasons why I started it is I was
looking for a hobby in addition to you know Circuit Python and Python and just
coding and it was a great learning experience and how to cut up audio and
audio production and all that kind of fun stuff I've learned a ton totally
yeah these are your two standard questions you have at the end of end of
the the podcast if anyone wants to learn more about you and your work where
should they go they can visit my home page at Paul Cutler org I have a blog
there that I infrequently update like most people these days but I also have a
projects page that lists all the different projects I've worked on over
the last couple years with screenshots and links to the github repos and all
that kind of fun stuff that would be the place to go yeah I should do that that's
a good idea and lastly so you're going to start a new Circuit Python project
what board are you reaching for just to first start prototyping or building with
I'm gonna go with the one that we've been talking about so much well as the
same one that Jeff Epler picked in the last episode which is a QDPI s3 with two
megs of PS RAM I don't typically need a lot of GP GP IO so the QDPI s are
perfect for me with that small little footprint and like we were just talking
about the s3 is such a powerful chip and I've really really enjoyed working with
Wi-Fi a number of my projects use Wi-Fi whether it's downloading images or
controlling my home theater receiver remotely I love built-in Wi-Fi on those
chips yeah yeah I'm a big fan of the ESP 32 s3 chips also not even
not even when using them for Wi-Fi like I've used a ton of them for non
internet projects because their little processor in them is so fast they can do
a lot of mathy type operations if you're doing like synthesizers or stuff so yeah
big big fan of that chip as well Paul thanks so much for being on the show and
hosting the other shows and creating the circuit Python show transcripts are
available in most podcast players and show notes are available at www.circuit
python show calm thanks for listening and stay positive
(electronic beeping)