2022 was a weird and wonderful year for me. My first child, Ari, was born on his due date in March and has grown and grown. I took two periods of leave. One six weeks long from the end of March to mid-June. The other 12 weeks long from CircuitPython day in August to the start of November. I’m super happy I took this leave because I feel very comfortable and competent as a new dad. Watching Ari grow is wonderful and joyful.
CircuitPython-wise, I spend much of the year disconnected from Adafruit and the CircuitPython community. It was weird. I’ve been involved since August 2016. CircuitPython was my baby before Ari. It was freeing to know that there were so many folks caring for the project and community. But, I missed the folks who make up CircuitPython. CircuitPython is my community. I’ve always wanted CircuitPython to grow bigger than myself and Adafruit. It certainly has grown more than myself. It is in good hands and I’m happy to have more time to spend with my CircuitPython folks this year.
My main hope for 2023 is that I can find a balance between participating regularly with CircuitPython and being a core part of Ari’s early life. It won’t be the same as 2021, pre-Ari, but it won’t be completely off and on like 2022. I’m excited to reconnect to the CircuitPython community, bring CircuitPython programming to mobile devices and make it do new tricks.
Workflows, Mobile Apps & Web Editor
Last year, CircuitPython’s workflow (how you edit and debug code) expanded to include both BLE and WiFi. It is not just USB any more. BLE workflow has been on my wishlist for a few years now (2022, 2021, 2020, 2019). WiFi was a bit unexpected but Wippersnapper inspired me. We’re so close to realizing wireless programming from a mobile device with a touch screen. Its been harder than I expected. With USB, the computer side of things are already done. On mobile, we need to complement our custom protocols with apps that use them. This is the year that we can refine these apps and get folks using them.
Trevor, Antonio, Liz and Tyler have been hard at work on two apps for both iOS and Android. PyLeap and File Glider are designed to make it easy to get code onto a CircuitPython device and allow you to modify it. I hope to see many more folks using these apps to code CircuitPython wirelessly.
PyLeap’s goal is to make it easy to download Learn guide code directly to devices wirelessly. For most folks, the first steps to coding is modifying existing example code. PyLeap makes this first step easy. Early versions of PyLeap are available for iOS (source repo) and Android (source repo). Check out the Learn guide for PyLeap for the latest info. Please submit any bugs you find through the OS or through GitHub issues.
File Glider includes a basic file browser and editor and, on iOS (Android in the future), bridges CircuitPython’s file system into the iOS. Other apps can be used to edit files on the device. Editing existing code is the next step to learn to code and File Glider makes that possible. Early versions of File Glider are available for iOS (source repo) and Android (source repo). Check out the File Glider learn guide for the latest info. Please submit any bugs you find through the OS or through GitHub issues.
code.circuitpython.org (source repo) rounds out this tooling. It is originally for desktop and laptops to use the BLE workflow but also works in Chrome on Android. Melissa has done awesome work adding support for both WiFi (circuitpython.local/code/) and USB as well. This will centralize our browser based editing experience. Adding USB support makes it easier to test and improve code.circuitpython.org.
Other Ideas for CircuitPython
Watch
At the start of my second leave in August, I got CircuitPython running on the Bangle.js 2. I’ve had smart watches for years now but haven’t been super happy with any of them. I wanted something to 1) always show the time (no screen off) 2) sunlight visible and 3) show and buzz on notifications. So, I’ve had CircuitPython running on my wrist since August. This is the first time I’ve relied on CircuitPython continuously. It’s also wireless only. There isn’t an available USB connection. So, I’ve been using File Glider to tweak and debug the code over time. (I did the bulk of the coding on a test board with USB.) This has shown me that wireless coding is possible but needs more improvements over this year.
USB Host
This is a repeat from last year. While I did make some progress by settling on the PyUSB API, I didn’t finish implementing it. TinyUSB didn’t quite have the APIs I needed when I was working on it. Thach has now added them so it’s ready to be picked back up and finished on the iMX RT. Once it is done there, we can also bring it to the RP2040. Once we have USB host support, folks will be able to use other USB devices to control their CircuitPython program. They could also use CircuitPython to bridge USB devices onto BLE, WiFi, serial or back to USB. This bridging can be used to make old USB devices act like newer, standard devices. Bridging can also be used to modify the behavior of the device.
New chips are a wildcard
Much of the Adafruit-sponsored CircuitPython development revolves around new chips with new capabilities. In the last couple years, we’ve focused on the RP2040 and ESP32-S2/3 because they are available. Availability of new chips will hopefully get better through 2023 and we’ll have more options to explore with CircuitPython. These new chip announcements (like the ESP32-P4) can shift our development for the year and are always a wildcard for us.
High Speed USB
The iMX RT chips, most commonly found in the maker world on Teensy 4.x, feature high speed USB (480Mbit/s) which is much faster than 12Mbit/s full speed on most of our boards. There is a lot of room there to explore audio and video over USB. We could also look into make CircuitPython a better debugging tool including SWD debug and logic analysis. However, app support on the desktop or mobile device will still be a bottleneck.
Conclusion
While I’ve covered what is on my mind now, I’m sure we’ll work on many other things this year. Some tasks are on our radar for a while, and some are unexpected. I don’t have any long leaves planned so I’m excited to participate consistently again.
I’m excited to see CircuitPython grow further in 2023. CircuitPython 8 is a solid foundation for a wireless coding world that I’ve wanted to see for many years. I hope we can bring folks who primary use phones and tablets into coding with wireless CircuitPython.
#CircuitPython2023 is our annual reflection on the state of CircuitPython. We’d love to hear from you too! See the kick-off post for all of the details. Please post by January 18th.
Past posts:
- Footleg posted on Twitter and Mastodon.
- Bill Minarick (aka @[email protected]) posted on Mastodon.
- TreasureDev (aka @[email protected], @DJDevon3 on the Adafruit Discord) posted on Mastodon.
- Bradán Lane (aka @[email protected]) posted on Mastodon.
- Andy Warburton (aka @[email protected]) posted twice on Mastodon.
- Stylus (aka @[email protected], @jepler on the Adafruit Discord) posted a longer post on Mastodon covering challenges in 2022 and goals for #CircuitPython2023.
- Seth Kerr (aka @[email protected], @skerr on the Adafruit Discord) posted on Mastodon.
- Ladyada and pt talked about it on the Python on Hardware portion of Ask an Engineer last night.
- ComfortableAd9286 posted on r/CircuitPython.
- JohnHind posted on the CircuitPython forum.
- Anne (aka @anne_engineer) posted on Twitter
- Tim (aka @FoamyGuy on Discord) posted to GitHub.
- dglaude posted on Adafruit Learn.