A story and some thoughts from Kattni for #CircuitPython2019
It’s the beginning of a new year, the traditional time to reflect back on the previous year and consider where things will go throughout the year to come. When I joined Adafruit, I was given the opportunity to do a blog post. I never got around to it, so before I get to what I want to see for CircuitPython in 2019, I want to take this opportunity to tell the story of how I came to join Adafruit.
My first experience with programming and electronics came in July 2017. I attempted to learn Python through a tutorial, struggled to stick with it, and ultimately gave up. Then, I stumbled into purchasing a Circuit Playground Express. I got it home and it looked like the most complicated thing ever, so I let it sit for two weeks before deciding to pick it up again. When I plugged it in, I thought to myself, “I will never write anything as cool as this demo.” I couldn’t have been more wrong.
I started looking at options for programming the CPX and found the first couple to be just simple enough to be frustrating or entirely over my head. Then, I found a reference to CircuitPython. I was trying to learn Python, this was perfect! So I got it installed, and within a few of lines of code, I had a little red blinking LED. Nothing I had worked through in trying to learn Python had been remotely as satisfying as the moment that LED lit up. I was completely hooked.
Around the same time, I found the Adafruit community, and I began chatting with Scott, the lead developer on CircuitPython. Initially, as it is for all of us at some point, I was mostly asking questions. But it wasn’t long before I found others asking the same questions, and I was able to begin helping others. I began spending time every day on the Adafruit Discord server. I quickly became an active member of the community, working to continue building it by helping other new people. I was learning so much, so quickly, but helping others was the part that made it so fulfilling. I found I genuinely loved what I was doing.
The Circuit Playground Express was pretty new, and so there wasn’t a lot of documentation or examples on how to use it. I wanted to help change that, so I decided to design a project I could share. I asked Scott whether I could write a Learn guide for my project. I was accepted, and immediately got started. I designed a capacitive touch, light up tone piano. As I asked Scott for help on my project, he told me he had started writing a library that was designed to make using CircuitPython on the Circuit Playground Express super simple. He told me I should continue working on that library. I thought it was ridiculous, and politely reminded him that I had started with programming a month before, but he insisted I could do it and made it clear he was going to help me.
So, I started learning to modify and add to the Circuit Playground Express library. Along the way, I integrated the library into my project, and repeatedly broke my code, which required adding more to the library to fix it. It took me three months to write my first guide because of all the work that went into the project and the CPX library. But at the end of that three months, using many of the features of the CPX with CircuitPython was a matter of one or two lines of code each. My project that used capacitive touch, the slide switch, sound and NeoPixels went from 91 lines of code to 48 due to the library I had written.
I completed my guide and joined Adafruit part time in October 2017. I continued to build the community, provide support, write guides, design projects, and work on code. I finished the Circuit Playground Express library – which can be used to design projects exactly like that demo that came up the first time I plugged in my CPX.
I learned everything I know about Python through CircuitPython. Python is traditionally associated with data, however I learned entirely by manipulating the physical world through hardware. My “Hello, world!” was blinking an LED. CircuitPython provided me with a unique path to learning programming and electronics. I hadn’t even considered learning electronics before I started with CircuitPython.
At the end of January 2018, I joined Adafruit full time as a Creative Engineer. This past year saw great milestones for CircuitPython including the release of CircuitPython 3.0, an amazing increase in community code contributions to the project, an increase in the hardware support, translations of CircuitPython, and the inclusion of many community-designed microcontrollers in CircuitPython. We did a remodel of the “Python on Hardware” weekly newsletter and it has become incredibly popular. The CircuitPython Weekly meeting on Discord quickly went beyond a time for the core CircuitPython team to sync up with each other to a time for us to sync up with everyone who wants to share. Most importantly, we continued to grow our community.
In 2019, I want to see us continue to build on that momentum. We have an amazing community and so many opportunities for involvement. It is important for us to make sure that it’s clear what those opportunities are and how the community can be a part of it.
I want to continue to increase our library base. We have put a lot of effort into highlighting the hardware support and libraries we have. The more hardware we support, the more project opportunities we create. This will continue to expand use of CircuitPython in new and interesting ways. We have had community involvement in this process, with a number of excellent drivers being written by community members. With this comes many options for involvement not only in writing code, but in reviewing and testing. We need to consider ways to increase community awareness of all the ways it’s possible to contribute.
The more that we empower our community to be involved with the CircuitPython project, the better the project will become. It is important to continue to create opportunities for involvement for those at all experience levels. We should be certain that we are tagging issues on CircuitPython GitHub repos as “Good first issue” where applicable to provide as many beginner entry points to contributing as possible. We have already begun to put more effort into highlighting the issues on the library repos as well. This creates a sense of the project as a whole, and also provides further opportunities for contribution. I want to involve more community members in reviewing code. We’ve already gone through some excellent steps to do this, but I feel there is more to be done.
Thanks to our community, we have had incredible contributions that we would not have otherwise had as a part of the CircuitPython project. We have gone to great lengths to create an environment that is conducive to this, and we will continue to do so. The fact is: Code + Community = CircuitPython.
CircuitPython has grown so much in 2018, and there’s so much potential for 2019. Thank you to everyone who has been involved since the beginning, those that joined over the last year, and to everyone who will be joining us in 2019. You make CircuitPython amazing!