Archive for January, 2020

It’s snowing a bit in Redmond.

We had six inches of snow over the weekend. Tonight we’re supposed to get an additional two to three inches. Last night was a 30-car pileup on the 520 bridge. Stevens Pass is “closed indefinitely.” All the slush from the weekend snow has turned into sheets of ice. I’ll be staying inside until it’s cleared off since I can’t risk falling, because reasons.

January 15, 2020 at 3:51 am Leave a comment

CircuitPython 2020 Thoughts

Adafruit has asked for feedback on CircuitPython goals for 2020. Here’s their list of topics. I’ll add my comments in a different color so they stand out. This was just off the top of my head, so I’ll make updates if/when I think of other things. Comments from others that I need to incorporate will be in this dark green.  I guess I’ll make my own additional thoughts in this color.

First off, I would like to give credit and thanks to everyone who makes these projects possible!

Projects you’d like to build

Oh boy. That’s a lot.

  • Finish the Sphero Adafruit CircuitPython library.
  • Finish the Sphero RVR Cat Chaser (uses Blinka).
  • Update my weather station to do a better job of maintaining persistent data through restarts (uses Blinka).
  • Revised home security system.
  • Figure out why Feathers occasionally just lose their brains and require manual reset. This happens when they’re gathering data and pushing them up to AdafruitIO, for example.
  • Learn how to design PCBs and create a multi-cell-bank Battery Management System for large-ish rovers. I’m thinking SAMD51 with large flash and SD card interface, with a bootloader installed (how do I do that?) to control the charging and discharging cycles.
  • Design and built large solar panel array to pump electricity into above-mentioned BMS to maintain charge on large battery banks.
  • Build custom PCB, again with bootloader and CircuitPython, for the High Power Rocket Flight Control System.
  • Plan some high energy physics projects.
  • CANbus (OBD II) hacks?

Things you think could be easier

No offense intended to any of the contributors!

  • Firmware build workflow.
  • Debugging hardware running CircuitPython. Maybe I haven’t spent enough time doing my homework, though.
  • Submitting feature request/suggestions. (Is correct?) Scott says, “feature requests should be done as GitHub Issues.”

Additional community programs

Weekly meeting

I hadn’t really thought about this. The CircuitPython weekly meeting is very good, and Discord #circuitpython is great.

The only thing I could possibly suggest would be a live stream “CircuitPython Office Hours” (waving at Scott) where the “regulars” can take questions about CircuitPython, or, perhaps, pick one project/problem and do a deep dive into figuring it out. Scott says, “the in the weeds section [of the Monday CircuitPython status call] tends to be the place we take questions now.”

I was actually thinking more along the lines of a university professor or teaching assistant office hours, where any of the students can show up for detailed help or questions. “In the weeds” feels more like the Q&A at the end of Ask and Engineer. Also, since I didn’t realize that was open to anyone, for non-CircuitPython-implementation questions, I’m pretty sure other community people won’t know that. Discord is great, and people seem to ask in either #help-with-circuitpython or #circuitpython, but I feel like people refrain from long threads in-channel. Office Hours would be a place to interact and teach in a more face-to-face way, if that makes any sense.

Core CircuitPython features

Core CPython libraries to add

Additional microcontroller platforms

RISC-V, but I think we’ve covered that in Discord conversations.

New boards to support

Wireless/USB keyboard and mouse FeatherWing with HDMI connector, so we can directly edit and bits on the Feathers?

Library improvements


Additional libraries

  • Port the SD card support to STM32F.
  • adafruit_circuitpython_sphero (but that’s on my plate)

Package management

Documentation improvements

I’m not sure where it would go, but perhaps a master cheat sheet for CircuitPython? A Google Docs page, or a ReadTheDocs page, or a Learning Guide, or a Wiki. Something that puts all the information people need in one place. I’m thinking

  • Link to starters guides that Kattni wrote.
  • Links to the Library Bundle magic.
  • Links to the “how to add libraries” guide.
  • Links to the “how to build CircuitPython” guide.
  • How to request features.
  • Consistent workflow for “how to report bugs.”
  • How to do a pull request to work on patching code or adding new things.
  • Python boilerplate templates that include the standard Adafruit header info and sequences of code blocks. Mine are:
    • Docstring
    • Header comments
    • Libraries (standard, third-party, and package-specific sections)
    • Globals
    • Pre-Main Setup
    • Classes
    • Functions
    • Main

Scott says, “the awesome page is the master cheat sheet:

Learn guides

  • Several guides need to be revised or re-visited, or perhaps even retired (or marked retired.) I say this because, for example, the process I always used to build CircuitPython was to cd into my source directory, then “git submodule sync” and “git submodule update –init –recursive”. I learned in Discord very recently that the correct sequence is “git pull” “git submodule sync” and “git submodule update –init” (without “–recursive”). This particular one has been fixed, but I’m sure there are others. As a guide author I should go back and make sure all mine are still relevant and correct.
  • Finding the most current library Bundle with .mpy files instead of .py is somewhat hidden, since every time I need to do it I think, “now where do I find this?” I always end up opening a guide, finding the library section, clicking it, and then finding the correct .zip file. It would be great if that process were uniform and documented so it’s easier for people to do without referring to multiple sources.
  • It would be fantastic to get Randal Munroe (XKCD) to draw a “how to select the right boards” flowchart for Adafruit projects!


video tutorials

Ecosystem needs

the newsletter

Awesome list

Adafruit support forum

Discord channel

Tooling enhancements

Github Actions

the library bundle

Some comments above.

the bootloader

Where to get the bits. How to “install” them on a bare chip. How to debug.


January 2, 2020 at 12:43 am 2 comments