# CircuitPython Weekly Meeting for August 15, 2022


Video is available [on YouTube](https://youtu.be/xa6CqjQnyIg).


Join here for the chat all week: http://adafru.it/discord.


The CircuitPython Weekly happens normally at 2pm ET/11am PT on Mondays. Check the #circuitpython channel on Discord for notices of change in time and links to past meetings. Meeting times are also available in [iCal format](https://raw.githubusercontent.com/adafruit/adafruit-circuitpython-weekly-meeting/master/meeting.ical) for use with standard calendar applications and can also be viewed [in your browser](https://open-web-calendar.herokuapp.com/calendar.html?url=https%3A%2F%2Fraw.githubusercontent.com%2Fadafruit%2Fadafruit-circuitpython-weekly-meeting%2Fmain%2Fmeeting.ical&title=CircuitPython%20Meeting%20Schedule&tab=agenda&tabs=month&tabs=agenda).


If you want to be able to participate in the meeting by speaking, you will need to be added to the @circuitpythonistas role on Discord. Please ask any one of the moderators or admins to add you if you’d like to join.


CircuitPython development is sponsored by Adafruit. Please support them by purchasing hardware from https://adafruit.com.


Reminders: Podcast available on most services. Let us know if we’re missing some.
## 02:29 Community News
### CircuitPython Day - Friday August 19th - Updated Schedule
 CircuitPython Day 

Friday August 19 (8/19/2022) is CircuitPython Day 2022, being designated the snakiest day this year! The day highlights all things CircuitPython and Python on Hardware.
Please follow the latest calendar of events on the Adafruit Blog.
Current Schedule (all times are are US Eastern)
* 11:00am ET – CircuitPython Day Introduction
* 11:10am ET – Celebrating Code & Community: A CircuitPython Day Panel Discussion
* 12:50pm ET – CircuitPython Development Sprint Intro Video
* 1:00pm ET – CircuitPython Project Build with Maker Melissa
* 2:00pm ET – Special Edition CircuitPython Themed Show and Tell
* 3:30pm ET – CircuitPython 8 Preview
* 4:00pm ET – CircuitPython Day Chat with Kattni, Jeff and Dan
* 6:00pm ET – Foamyguy CircuitPython Day Game Jam Stream
* 1:00pm-5:00pm ET – CircuitPython Development Sprints (no video content)
#### OTHER EVENTS:
 Reimagining IoT Deployments with CircuitPython 

11:00 AM EDT/5:00 PM CEST – Reimagining IoT Deployments with CircuitPython
Adafruit’s CircuitPython has helped open up the IoT and place it within reach of developers of all types. Join Blues Wireless on CircuitPython Day as they look at:
* Getting Started with CircuitPython and Wireless IoT
* Walking Through a Real World CircuitPython-based IoT Project
* Remotely Updating CircuitPython Firmware with Cellular IoT(!?!)
Register for this particular event here.
6:00 PM – 9:00 PM ET – CircuitPython Night at i3Detroit
Come join for all things CircuitPython:
* CircuitPython demos
* Getting Started with CircuitPython
* Q&A and project help
* Tour a local Makerspace in Ferndale, MI
Location: i3Detroit, 1481 Wordsworth, Ferndale, MI 48220
For more information about the space, visit i3Detroit.org.
### 04:28 Python Gains 2%, Remains Top Programming Language
 Python #1 

‘Unstoppable’ Python once again ranked No. 1 in the August updates of both the Tiobe and Pypl indexes of programming language popularity - TIOBE and Infoworld.
### 04:46 New Browser-based micro:bit Python Editor Launching in September
 micro:bit Python Editor 

The new micro:bit editor runs in a browser, so it’s quite different to Thonny or Mu. It will be launching in September but the beta is online and can be used now - Twitter Thread and Beta on the Web.
### 05:05 
 Animated NeoPixel Headband 

A headband with a surprise LED matrix hidden inside! All programmed in CircuitPython.
"Made with Adafruit NeoPixel strips, an Adafruit QTpy and a Lipo BFF! The diffusion layer is some black tulle wrapped in scrunched-up layers, and I was really pleased with how it turned out" - Twitter Thread.
### 05:32 
 MIDI Sequencer 

My little picostepseq MIDI sequencer is getting better. Now you can save/load sequences, while running and without missing a beat - Twitter.


### 05:48  Newsletter Details
The CircuitPython Weekly Newsletter is a CircuitPython community-run newsletter emailed every Tuesday. The complete [archives are here](https://www.adafruitdaily.com/category/circuitpython/). It highlights the latest Python on hardware related news from around the web including CircuitPython, Python and MicroPython developments. 
To contribute your own news or project, edit next week's draft [on GitHub](https://github.com/adafruit/circuitpython-weekly-newsletter/tree/gh-pages/_drafts) and [submit a pull request](https://help.github.com/articles/editing-files-in-your-repository/) with the changes. You may also tag a tweet with #CircuitPython on Twitter, or email cpnews@adafruit.com.
## 06:31 State of CircuitPython, Libraries and Blinka
### 06:58 Overall
* 57 pull requests merged
  * 22 authors - bergdahl, tekktrik, dannystaple, tcfranks, takayoshiotake, jepler, ladyada, weblate, tannewt, RetiredWizard, karlfl, caternuson, dhalbert, Neradoc, Lisapple, strid3r21, Sciss, wtuemura, sokratisvas, deshipu, ckocyigit, bablokb
  * 8 reviewers - FoamyGuy, tekktrik, evaherrada, caternuson, dhalbert, MicroDev1, jepler, tannewt
* 45 closed issues by 10 people, 21 opened by 18 people


### 07:51 Core
* 34 pull requests merged
  * 16 authors - bergdahl, dannystaple, takayoshiotake, jepler, ladyada, weblate, tannewt, RetiredWizard, Neradoc, dhalbert, Lisapple, strid3r21, Sciss, wtuemura, deshipu, ckocyigit
  * 5 reviewers - caternuson, jepler, dhalbert, tannewt, MicroDev1
* 16 open pull requests
  * https://github.com/adafruit/circuitpython/pull/5999 (Open 186 days)
  * https://github.com/adafruit/circuitpython/pull/6037 (Open 180 days)
  * https://github.com/adafruit/circuitpython/pull/6119 (Open 162 days)
  * https://github.com/adafruit/circuitpython/pull/6217 (Open 135 days)
  * https://github.com/adafruit/circuitpython/pull/6247 (Open 131 days)
  * https://github.com/adafruit/circuitpython/pull/6349 (Open 102 days)
  * https://github.com/adafruit/circuitpython/pull/6397 (Open 92 days)
  * https://github.com/adafruit/circuitpython/pull/6410 (Open 87 days)
  * https://github.com/adafruit/circuitpython/pull/6522 (Open 52 days)
  * https://github.com/adafruit/circuitpython/pull/6555 (Open 41 days)
  * https://github.com/adafruit/circuitpython/pull/6594 (Open 32 days)
  * https://github.com/adafruit/circuitpython/pull/6634 (Open 23 days)
  * https://github.com/adafruit/circuitpython/pull/6681 (Open 12 days)
  * https://github.com/adafruit/circuitpython/pull/6757 (Open 2 days)
  * https://github.com/adafruit/circuitpython/pull/6754 (Open 2 days)
  * https://github.com/adafruit/circuitpython/pull/6758 (Open 1 days)
* 25 closed issues by 5 people, 14 opened by 12 people
* 551 open issues
  * https://github.com/adafruit/circuitpython/issues
* 5 active milestones
  * 7.3.x: 0 open issues
  * 8.0.0: 35 open issues
  * Libraries: 22 open issues
  * Long term: 487 open issues
  * Support: 3 open issues
  * 4 issues not assigned a milestone


* Core download stats available at https://circuitpython.org/stats


### 09:40 Libraries
* 23 pull requests merged
  * 7 authors - tekktrik, karlfl, caternuson, dhalbert, bablokb, tcfranks, sokratisvas
  * 5 reviewers - FoamyGuy, tekktrik, evaherrada, dhalbert, tannewt
  * Merged pull requests:
    * https://github.com/adafruit/Adafruit_CircuitPython_datetime/pull/20 (Days open: 32)
    * https://github.com/adafruit/Adafruit_CircuitPython_LIS3MDL/pull/21 (Days open: 32)
    * https://github.com/adafruit/Adafruit_CircuitPython_CircuitPlayground/pull/118 (Days open: 31)
    * https://github.com/adafruit/Adafruit_CircuitPython_HTTPServer/pull/11 (Days open: 16)
    * https://github.com/adafruit/Adafruit_CircuitPython_Display_Shapes/pull/53 (Days open: 16)
    * https://github.com/adafruit/Adafruit_CircuitPython_SI1145/pull/4 (Days open: 13)
    * https://github.com/adafruit/Adafruit_CircuitPython_BitbangIO/pull/23 (Days open: 5)
    * https://github.com/adafruit/Adafruit_CircuitPython_IS31FL3741/pull/19 (Days open: 4)
    * https://github.com/adafruit/Adafruit_CircuitPython_NeoPixel/pull/133 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_BLE_Creation/pull/9 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_Register_SPI/pull/3 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_Typing/pull/21 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_BLE_File_Transfer/pull/19 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_GFX/pull/26 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_TestRepo/pull/45 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_CircuitPlayground/pull/120 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_IRRemote/pull/54 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_PyPortal/pull/123 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_PYOA/pull/36 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_MAX1704x/pull/5 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_SI1145/pull/10 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_SI1145/pull/8 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_Bundle/pull/392 (Days open: 1)
  * 27 open pull requests (Oldest: 685, Newest: 1)
* 20 closed issues by 6 people, 7 opened by 6 people
  * 666 open issues
  * 175 good first issues
* https://circuitpython.org/contributing
Library updates in the last seven days:
**New Libraries**
 * [Adafruit_CircuitPython_MAX1704x](https://github.com/adafruit/Adafruit_CircuitPython_MAX1704x)
**Updated Libraries**
 * Literally every library.


### 11:28 Blinka
* 0 pull requests merged
  * 0 authors - 
  * 0 reviewers - 
* 4 open pull requests
  * https://github.com/adafruit/Adafruit_Blinka/pull/417 (Open 551 days)
  * https://github.com/adafruit/Adafruit_Blinka/pull/496 (Open 385 days)
  * https://github.com/adafruit/Adafruit_Blinka_bleio/pull/40 (Open 311 days)
  * https://github.com/adafruit/Adafruit_Python_PlatformDetect/pull/201 (Open 251 days)
* 0 closed issues by 0 people, 0 opened by 0 people
* 79 open issues
  * https://github.com/adafruit/Adafruit_Blinka/issues
* Piwheels Downloads in the last month: 10508
Number of supported boards: 89




## 12:20 Hug reports
12:47 @kattni (hosting)
* @MakerMelissa for merging a time-sensitive PR when the other person who could help was out
* @tekktrik for moving all the libraries from `setup.py` to `pyproject.toml`
* @eva for doing the release sweep
* @tekktrik for fixing the adabot library report when we were struck by a ghost.
* @ladyada for teaching me how to use the Nordic PPKII, and to use esptool to create a .bin of the board contents
* CircuitPython Day Roundup:
   * @Paul Cutler for all the work he’s put into the CP Day panel discussion, and for agreeing to take on the official CircuitPython Day introduction
   * @MakerMelissa for doing her first livestream on CP Day
   * @BlitzCityDIY for hosting the Special Edition CP Day Show & Tell stream, and handling the prepwork for that
   * @tannewt for doing a CP8 preview on CP Day
   * @danh and @jepler for joining me on CP Day for another chat stream
   * @foamyguy for doing a game jam stream on CP Day, and for being so flexible about the timing when I was putting together a rather difficult schedule
   * @tekktrik for taking on hosting a CP Dev Sprint on CP Day, and for recording a Sprintro video with me
   * Group hug to everyone who agreed to help Tekktrik out with the sprint
   * @AnneB for agreeing to keep the blog and Twitter up to date with everything going on as it happens on CP Day
   * @Mr. Certainly for agreeing to help out in and moderate the chats during the streams on CP Day
   * Group hug to everyone planning to join us on Show & Tell
   * @pt for making time last week to meet with me to finalise a few things about CP Day
* Group hug to the community for continuing to make all of this possible!


15:12 @charlesburnaford
* To all who are participating in Circuit Python Day
* Group Hug


16:14 @danh
* Paul Cutler for organization of the CircuitPython Day panel
* @tannewt for working full blast on 8.0.0 issues
* @lee for working on a bulk AnalogIn feature
* Adafruit internal developers for big update of the Adafruit forum


17:07 @david.glaude (lurking)
* @foamyguy for exploring the self-hoster runner idea in his stream
* @makermelissa for helping with circuitpython-org PR


17:23 @deshipu
* @jepler for work on the new camera code and help with it
* @tektrik and @kattni for rounding up people for the sprints


17:54 @foamyguy
* @DavidG for sharing ideas about self hosted actions runners
* @neradoc for very nifty utility discotool
* Paul Cutler for preparing and organizing CircuitPython day panel
* Group Hug


18:31 @kmatch
* Shawn Hymel for the introductory videos on FreeRTOS


18:52 @makermelissa
* @Neradoc for fixing the Web Workflow characters with emojis.
* @Liz and @Kattni for getting me up and running with Streamyard
* @Liz for Co-hosting Show and Tell with me
* Group Hug


19:19 @Mark(Gamblor21) [ lurking ]
* @kattni for organizing CP day
* @kstillson and @im-redactd for their work on I2C Target for RP2040
* Group hug


19:35 @Paul Cutler
* @kattni for all the work organizing CircuitPython Day


19:49 @tammymakesthings
* @kattni for organizing CP day
* @tekktrik for coordinating the CP day dev sprints
* Group hug!


20:07 @tannewt
* @foamyguy for taking a crack at on device testing for libraries.
* @kattni for organizing CP day.
* Everyone for participating in CP day
* Early hug for everyone who helps keep CP going even when I’m gone


20:55 @tekktrik (text only)
* @kattni for help with preparing for CIrcuitPython Day
* @foamyguy for reviewing some PRs I had submitted a few weeks ago
* @foamyguy again for working on the memory usage quantification issue
* The volunteers that have agreed to help out with the CircuitPython development sprint
* Group hug


21:20 @tomf (textonly)
* @kattni, @tekktrik (Alec), and foamyguy for patience with my ‘growing pains’ working on annotations contributions


## 21:33 Status Updates
22:08 @kattni (hosting)
* Last week:
   * Learned to use Nordic PPKII to get power use graphs for guides
   * Started S3 TFT Feather guide
   * Continued CircuitPython Day planning
* This week:
   * Continue on ESP32-S3 TFT Feather guide
   * Update I2S template to not use discontinued hardware
   * Meet with folks to finalise CP Day things as needed
   * STEMMA QT update for quad alphanumeric display backpack
   * Quad alphanumeric display event countdown
   * CircuitPython Day!


23:43 @danh
* Changed I2C terminology from “peripheral” to “target” (controller/target) for 8.0.0. This is a staged update: I2CPeripheral and I2CTarget will both be in 8.0.0 and are the same thing; I2CPeripheral will be dropped in 9.0.0.
* Restore `rainbowio and `onewireio` to a number of boards, and restore some other modules to a few boards.
* Increase C stack size on Espressif boards.
* Enable web workflow on Feather HUZZAH32.
* Bring in floating point formatting improvement from MicroPython.
* Remove support for display auto-brightness, which had latent support but was not actually implemented.
* Switch Learn Guide and library code to pass a Pin instead of a PWMOut to PulseOut.
* Will continue to fix 8.0.0 issues.


27:20 @david.glaude (lurking)
* CP: I fixed “SEEED” to “Seeed Studio” and the new naming for XIAO board on circuitpython.org
* Non CP: I tested WipperSnapper on an S3-TFT to capture data from my SCD-30 (CO2 sensor)


27:42 @deshipu
* still need to finish the png support and the gesture sensor library, low energy for that, but will get to it eventually


28:43 @foamyguy
* Last week
   * Limited CircuitPython activity early in the week while out for vacation. 
   * Tinkering with memory quantification utilities
   * Created CPython scripts that connect to a CircuitPython device, import a specified module and return the size measured by gc.mem_alloc() calls
   * Started PoC using websockets to trigger these on-device memory size measurements from actions tasks
   * Tried out self hosted runners for github actions as a different way to trigger the measurements
* This week
   * Many library PR reviews and testing
   * Take photos and submit final version of Octopus game guide
   * Continue working through on-device testing possibilities.
   * Hack Tablet / Dot Clock Display core troubleshooting


30:54 @kmatch
* Last week
   * Caught up on a work backlog
   * Learned a bit about UltraWideband (UWB) positioning and RTOS
* This week
   * Test if sonar sensors can detect the position of a 15mph passing bowling ball


31:29 @makermelissa:
* Last Week:
   * Finished up the second phase of adding Web Workflow functionality to code.circuitpython.org by adding a huge update that adds all of the essential stuff and that is now merged in.
   * Tested out Arduino RA8875 example code for a user to verify it still works
   * Started working on the third phase of adding Web Workflow to code.circuitpython.org
   * Co-hosted my first Show and Tell with Liz on Wednesday
* This Week:
   * Preparing for my first ever livestream this Friday by working on the code for the project I’ll be showing
   * Also preparing by making sure my computer setup is working well (though I may need a backup if the flaky office internet isn’t working again like it hasn’t since Wednesday).
   * Possibly a little work here and there on code.circuitpython.org
   * Co-Hosting Show and Tell again, but this time more in the greeter role
   * Live streaming project for CircuitPython day on Friday at 1:00 PM EST.
* Other:
   * I’ve finally been walking for the first time over the last week since my foot surgery a couple months ago, which has made my energy levels almost non-existent lately.


33:13 @Mark(gamblor21) [ lurking ]
* Submitted a PR for I2C Target on the RP2040. Helped some community members (@kstillson and @imredactd) work on this functionality so I have done basic tests only as I did not have a specific use.
* Found a small bug in the IS31FL3741 code I’ll PR eventually. It does not affect the glasses, only the 13x9 matrix so less likely to come up.


33:44 @Paul Cutler
* Last week
   * Edited the next two episodes of the podcast and they’re ready to go
   * Finalized the panel questions and wrote the first draft of the kickoff
* This week
   * Two more pre-interviews for the podcast
   * Finalize and practice the CircuitPython Day kickoff script


34:09 @tammymakesthings 
* Last week was performance appraisal week at work, so I didn’t have time to do any CircuitPython stuff
* This week: Getting ready for CircuitPython Day
* Non-CP related: I’ve been teaching myself a new musical instrument lately (baritone ukulele), and I’m at a point now where I need some professional guidance to not instill bad habits in myself. So my first lesson with an actual music teacher is this Friday.


34:48 @tannewt
* Last week before leave. Out Thursday. Let me know if you want to chat before I’m out.
* CP day: helping with core sprints and streaming CP8 preview
* Need to add move API to web workflow
* Want to update TinyUSB
* Testing code.circuitpython.org with web workflow
* As many bug fixes as I can do before I’m out.


36:07 @tekktrik (text only)
* Last week
   * Migrated all the libraries to pyproject.toml!  Some neat things came alongside the migration:
      * All libraries that define the __version__ attribute can be accessed with “libname.__version__” (like adafruit_bme680.__version__) which hopefully helps with support and debugging.  This wasn’t true beforehand if the library was installed from PyPI via pip.
      * Problem matchers are fixed for the CIs, so the CI should give clearer, more recognizable responses when failing, which should alleviate some of the parsing reviewers and submitters have to do currently.
      * Requirements now have a single home in requirement.txt instead of two places like before.  Optional dependencies used only in examples or optional features (like pillow) can now be put in the new optional_requirements.txt.  These can be downloaded using “pip install libname[optional]”
         * e.g, pip install adafruit_bme680[optional]
      * Pure python wheels (built distribution) are uploaded to PyPI which should cut down on install times, since packages won’t need to be built from source distributions after downloading.  Source distributions are still uploaded for redundancy.
   * Submitted PR for Adafruit IO updates
   * Fixed the adabot reporting errors
   * Submitted draft of fix for circuitpython.org Library Infrastructure issues list, now pending a few more additions and getting it to pass the CI
* This week
   * @neradoc raised a good point that the current version string that gets replaced isn’t PEP 440 compliant, so a patch to the libraries would help with manual and editable installs of the repository via pip
   * Finalize the Library Infrastructures fix
   * Host the CircuitPython Day sprint!  Come join and hack away at issues!


## 38:00 In The Weeds
38:37 @foamyguy - On-Device Testing:
* Self-hosted github actions runners. Can use Raspberry Pi or other computer as an actions runner to run some of the tasks inside of our actions workflows. I was successful in setting up a PoC that uses this to retrieve memory measurements from a connected microcontroller and report them in the actions output. Mine was on a single repo, but if I understand correctly it’s possible to set them up at the organization or enterprise levels within Github.
   * Pros: 
      * Fairly easy to set up
      * Infrastructure already exists
      * Very versatile. Actions can do almost anything so we could evolve the types of on-device measurement and testing we perform without having extra work on the infrastructure
   * Cons:
      * Github recommends to only use self-hosted runners for private repos because PRs can modify the actions workflows and trigger arbitrary code to run on the runners. Maybe we already do, or could restrict actions to only run automatically for approved / existing contributors and require approval to run for new contributors?

   * Custom infrastructure as a “go between” for actions tasks and our on device test runners. One idea is a web server that provides endpoints for HTTP requests to trigger the specific measurements and tests that we want to run. Runners connect to the server via websockets or long-polling and wait for jobs to carry out.
   * Pros:
   * Can be more restricted than actions so that arbitrary code execution won’t be possible
   * Cons:
   * Have to create, maintain, and possibly host the infrastructure.
59:19 @fede2
   * The Open Source Security Foundation (OpenSSF) has a tool called Scorecard, that reviews the security practices of a “repo” with basic things like reviews, 2FA, dependency pinning. Is it worth it to start working on a Scorecard for the Circuitpython repo?
Note: CircuitPython has a current score of 5.5
Adafruit has an average of 4.3, and uses scorecard on 4.68% of their repos
   * Pros:
   * Improve security practices of the organization, teach security practices to collaborators.
   * Removes or makes it hard for attacks to get into the code.
   * This repo already uses lots of good security practices, this will make them more visible.
   * Good security practices learning guides might come out of this.
   * Cons:
   * Version pinning takes time to get used to, but should not make it harder to test new versions of dependencies.
   * It’s a gradual process that takes non-dev time from core devs.
   * Best Practices Badge is a “dependency” of scorecard, so I’ll have to work on this as well.


## 01:11:07 Wrap-Up
Next meeting is 22 August 2022, as usual.
