# CircuitPython Weekly Meeting for July 10, 2023
Here is the notes document for next Monday’s CircuitPython Weekly meeting. It is at the normal time of 11am Pacific / 2pm Eastern here on Discord. Everyone is encouraged to attend! Please add your hug reports and status updates even if you’ll be attending the meeting - it’s super helpful! If you are unable to attend but would still like to include updates, feel free to include them in the notes and we’ll read them off during the meeting. Hope to see you there! @circuitpythonistas


Welcome to the CircuitPython Weekly meeting notes! Feel free to add your Hug Reports and Status Updates early. During the meeting, we go through them as a round robin sorted by username. If you can’t make the meeting and would still like to participate, add your notes with a “(missing meeting)” after your username and we’ll read them off for you. 


Add any longer-form discussion topics or general questions you have to the “In the weeds” section. 


Thanks! We hope to see you in the meeting!


Tim is hosting.


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


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.hosted.quelltext.eu/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.
## 03:19 Community News
### CircuitPython 8.2.0 Released
CircuitPython 8.2.0, the latest minor revision of CircuitPython, has a new stable release. - [Adafruit Blog](https://blog.adafruit.com/2023/07/05/circuitpython-8-2-0-released/) and [GitHub release page](https://github.com/adafruit/circuitpython/releases/tag/8.2.0).
**Notable changes to 8.2.0 since 8.1.0**
- Continued enhancement of `synthio`.
- RP2040 `alarm.sleep_memory`.


### 04:05 Thonny 4.1.0 Released
The Thonny Python IDE has released 4.1.0.  It includes an ESP flashing dialog that allows you to select from a list of known MicroPython or CircuitPython boards and downloads them for you, comes with Python 3.10, as well as additional updates.  [Twitter](https://twitter.com/thonnyide/status/1665220202219335681) and [Release Notes on GitHub](https://github.com/thonny/thonny/releases/tag/v4.1.0).


### 04:41 United Kingdom Primary Schools to get free BBC micro:bits


The BBC has announced their new campaign, the BBC micro:bit - the next gen, to empower primary school children aged 8 to 11 to gain digital skills.


Each primary school in the UK can register to claim 30 micro:bits.  The campaign is sponsored by the Micro:bit Educational Foundation and Nominet, who made the donation possible.


Teachers will be able to access training on the micro:bit in person and online. - [BBC](https://www.bbc.co.uk/teach/microbit/register-free-microbit/zxrp3qt).


### 05:39 IoT with Raspberry Pi Pico in Kenya
The Raspberry Pi Foundation provided free workshops in Kenya last month for the hardware community around Nairobi.  In partnership with Gearbox and Safaricom, they started with a Raspberry Pi Pico W and MicroPython.
The participants started by learning the basis of MicroPython and blinking an LED.  From there they moved to more advanced topics, including how to work with motion and proximity sensors, and environmental sensors.
Lastly, they connected the Raspberry Pi Pico W to the Internet and used Adafruit IO, Adafruit's cloud platform for IoT, to graph their data, set up alerts, and create dashboards. - [Raspberry Pi](https://www.raspberrypi.com/news/iot-with-raspberry-pi-pico-in-kenya/).
### 06:33 EuroPython 2023 will be July 17-23, 2023, in Prague, Czech Republic and Remote - EuroPython 2023.
EuroPython 2023 will be July 17-23, 2023, in Prague, Czech Republic and Remote - [EuroPython 2023](https://ep2023.europython.eu/).




### 07:12 Newsletter Details
The CircuitPython Weekly Newsletter is a CircuitPython community-run newsletter emailed weekly (Mondays for the next few weeks). 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.
## 07:58 State of CircuitPython, Libraries and Blinka
**This report contains information from the previous seven days. Any changes (PRs merged, etc.) made today are not included in this report.**
### 08:39 Overall
* 23 pull requests merged
  * 16 authors - jepler, BlitzCityDIY, caizelin, dhalbert, makermelissa, ladyada, microdev1, caternuson, joshua-beck-0908, Neradoc, MPult, creativecontrol, kbsriram, vladak, furbrain, FoamyGuy
  * 10 reviewers - jepler, dhalbert, makermelissa, ladyada, caternuson, jposada202020, Neradoc, brentru, tannewt, FoamyGuy
* 13 closed issues by 9 people, 14 opened by 12 people


### Overall, 7-14 days ago (since we missed a meeting)
* 11 pull requests merged
  * 12 authors - jimmo, ladyada, kattni, n0xa, weblate, evaherrada, jepler, Neradoc, jposada202020, wtuemura, dhalbert, FoamyGuy
  * 8 reviewers - microdev1, gamblor21, ladyada, kattni, tannewt, jepler, dhalbert, caternuson
* 8 closed issues by 5 people, 18 opened by 15 people


### 11:07 Core
* 5 pull requests merged
  * 5 authors - jepler, caizelin, makermelissa, microdev1, Neradoc
  * 4 reviewers - ladyada, jepler, tannewt, dhalbert
* 27 open pull requests
  * https://github.com/adafruit/circuitpython/pull/6555 (Open 370 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/6913 (Open 296 days)
  * https://github.com/adafruit/circuitpython/pull/7161 (Open 251 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/7220 (Open 234 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/7293 (Open 220 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/7440 (Open 180 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/7591 (Open 144 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/7618 (Open 140 days)
  * https://github.com/adafruit/circuitpython/pull/7675 (Open 128 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/7711 (Open 121 days)
  * https://github.com/adafruit/circuitpython/pull/7718 (Open 119 days)
  * https://github.com/adafruit/circuitpython/pull/7811 (Open 102 days)
  * https://github.com/adafruit/circuitpython/pull/7886 (Open 79 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/7984 (Open 55 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/7997 (Open 52 days)
  * https://github.com/adafruit/circuitpython/pull/7996 (Open 52 days)
  * https://github.com/adafruit/circuitpython/pull/8033 (Open 45 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8035 (Open 44 days)
  * https://github.com/adafruit/circuitpython/pull/8095 (Open 20 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8091 (Open 20 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8100 (Open 18 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8101 (Open 17 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8126 (Open 12 days)
  * https://github.com/adafruit/circuitpython/pull/8130 (Open 11 days)
  * https://github.com/adafruit/circuitpython/pull/8133 (Open 9 days)
  * https://github.com/adafruit/circuitpython/pull/8136 (Open 8 days)
  * https://github.com/adafruit/circuitpython/pull/8143 (Open 3 days)
* 4 closed issues by 2 people, 9 opened by 9 people
* 671 open issues
  * https://github.com/adafruit/circuitpython/issues
* 5 active milestones
 * 9.0.0: 42 open issues
 * Libraries: 21 open issues
 * Long term: 590 open issues
 * Support: 14 open issues
 * Third-party: 7 open issues
 * 5 issues not assigned a milestone


### 12:31 Libraries
* 15 pull requests merged
  * 10 authors - BlitzCityDIY, dhalbert, makermelissa, ladyada, joshua-beck-0908, creativecontrol, kbsriram, vladak, furbrain, FoamyGuy
  * 10 reviewers - jepler, dhalbert, makermelissa, ladyada, caternuson, jposada202020, Neradoc, brentru, tannewt, FoamyGuy
  * Merged pull requests:
        * https://github.com/adafruit/Adafruit_CircuitPython_Display_Button/pull/36 (Days open: 441)
        * https://github.com/adafruit/Adafruit_CircuitPython_ESP32SPI/pull/167 (Days open: 406)
        * https://github.com/adafruit/Adafruit_CircuitPython_MiniMQTT/pull/162 (Days open: 73)
        * https://github.com/adafruit/Adafruit_CircuitPython_Requests/pull/135 (Days open: 27)
        * https://github.com/adafruit/Adafruit_CircuitPython_MiniMQTT/pull/169 (Days open: 23)
        * https://github.com/adafruit/Adafruit_CircuitPython_WSGI/pull/20 (Days open: 18)
        * https://github.com/adafruit/Adafruit_CircuitPython_SGP40/pull/21 (Days open: 9)
        * https://github.com/adafruit/Adafruit_CircuitPython_MAX9744/pull/17 (Days open: 4)
        * https://github.com/adafruit/Adafruit_CircuitPython_NTP/pull/30 (Days open: 1)
        * https://github.com/adafruit/Adafruit_CircuitPython_RGB_Display/pull/114 (Days open: 1)
        * https://github.com/adafruit/Adafruit_CircuitPython_EPD/pull/80 (Days open: 1)
        * https://github.com/adafruit/Adafruit_CircuitPython_EPD/pull/79 (Days open: 1)
        * https://github.com/adafruit/Adafruit_CircuitPython_asyncio/pull/44 (Days open: 1)
        * https://github.com/adafruit/CircuitPython_Community_Bundle/pull/179 (Days open: 1)
        * https://github.com/adafruit/CircuitPython_Community_Bundle/pull/178 (Days open: 1)
  * 61 open pull requests (Oldest: 1014, Newest: 1)
* 9 closed issues by 8 people, 5 opened by 5 people
  * 633 open issues
  * 46 good first issues
* https://circuitpython.org/contributing


#### Library PyPI Weekly Download Stats
* **Total Library Stats**
  * 151621 PyPI downloads over 310 libraries
* **Top 10 Libraries by PyPI Downloads**
  * Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 6345
  * Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 5738
  * Adafruit CircuitPython Register (adafruit-circuitpython-register): 1814
  * Adafruit CircuitPython MiniMQTT (adafruit-circuitpython-minimqtt): 1293
  * Adafruit CircuitPython Motor (adafruit-circuitpython-motor): 1256
  * Adafruit CircuitPython ESP32SPI (adafruit-circuitpython-esp32spi): 1237
  * Adafruit CircuitPython Display Text (adafruit-circuitpython-display-text): 1235
  * Adafruit CircuitPython Wiznet5k (adafruit-circuitpython-wiznet5k): 1220
  * Adafruit CircuitPython NeoPixel (adafruit-circuitpython-neopixel): 1174
  * Adafruit CircuitPython BLE (adafruit-circuitpython-ble): 1102


#### Library updates in the last seven days:
* **New Libraries**
  * [furbrain/CircuitPython_CaveBLE](https://github.com/furbrain/CircuitPython_CaveBLE)
* **Updated Libraries**
  * [adafruit/Adafruit_CircuitPython_Display_Button](https://github.com/adafruit/Adafruit_CircuitPython_Display_Button)
  * [adafruit/Adafruit_CircuitPython_EPD](https://github.com/adafruit/Adafruit_CircuitPython_EPD)
  * [adafruit/Adafruit_CircuitPython_WSGI](https://github.com/adafruit/Adafruit_CircuitPython_WSGI)


### 15:38 Blinka
* 3 pull requests merged
  * 2 authors - caternuson, MPult
  * 1 reviewers - makermelissa
* 3 open pull requests
  * https://github.com/adafruit/Adafruit_Blinka/pull/417 (Open 880 days)
  * https://github.com/adafruit/Adafruit_Blinka_bleio/pull/40 (Open 640 days)
  * https://github.com/adafruit/Adafruit_Python_PlatformDetect/pull/299 (Open 43 days)
* 0 closed issues by 0 people, 0 opened by 0 people
* 98 open issues
  * https://github.com/adafruit/Adafruit_Blinka/issues
* PyPI downloads in the last week: 12278
* Piwheels Downloads in the last month: 7022
Number of supported boards: 119






## 16:42 Hug reports
@foamyguy (hosting)
* @BlitzCityDIY and DJDevon for kicking off the process of changing library examples over from secrets.py to settings.toml
* @JoseDavid for trying out a Display_Button PR and offering great feedback
* JP for making a repo to collect the code shown on CircuitPython Parsec videos.
* Group hug


17:55 @danh
* @kattni and @Paul Cutler for handling the newsletter while Anne is away


18:26 @jepler
* @NeraDoc for https://github.com/Neradoc/Circuitpython_Keyboard_Layouts a bundle full of international keyboard layouts that work with CircuitPython (more on why in status updates)
* @hathatch and @tannewt for so much ground work on USB Host
* @danh for being release manager & releasing 8.2.0
* Antonio (Adafruit iOS/mobile developer) for creating working source code to build audio files for Teddy Ruxpin
* @jimmo from the micropython project for a doc fix (jimmo’s first PR to circuitpython!)
* @ladyada for a prototype Metro RP2040 for me to check out some functionality on
* Group hug


19:59 @DJDevon3 (text only)
* @Danh & @Neradoc for helping with a display issue on the S2 reverse TFT. 
* @Danh for the idea to create a portable RFM95 distance tester months ago. Just got around to making one and it worked out very well.
* @Tyeth & @Danh for advice on automating heart rate, oxygen, and blood pressure monitoring. I understand hacking medical devices isn’t the best idea in the world but I was quite desperate and appreciated your patience and understanding.
* @Tyeth for helping me understand some of the inner workings of the adafruit_hashlib library. 
* @Danh & @KevinT for helping with a random number generator. Went through a couple of different iterations before settling on os.urandom(random.randomint(43-128)) which satisfies Fitbit’s oauth salt requirement.
* @Tyeth & @Herr Brain for joining the helpers role. 


21:27 @kattni
* @Paul Cutler for SO much help on this week’s Python on Hardware newsletter
* @danh for ensuring the newsletter post went up as expected, to ensure it would ship as scheduled
* @todbot for an amazing hour and a half chat about synth basics
* @Herr Brain for joining the Community Helpers on Discord
* The Discord Helpers and moderators for thoughtful discussion about a specific issue, and for handling a few issues incredibly well
* The folks who suggested Herr Brain for the Community Helpers role
* @danh for help with a code example I was attempting to adapt from Arduino and failing
* @foamyguy for going through all of the stale PRs across the libraries and seeing what the next step should be
* @foamyguy also for working through removing secrets.py from the ESP32SPI library, for settings.toml
* Everyone I’m certain I missed since it’s been 2 weeks since the last meeting
* Group hug!


23:37 @makermelissa
* Group Hug


23:56 @Paul
* @kattni for her showing me the ins and outs of putting the weekly Python on Hardware newsletter together as well as some excellent editing


24:11 @tannewt
* @sekigon-gonnoc for the quick review of changes needed for CP.
* @jepler for the usb keyboard support boost with their report -> serial code from the CPM project.


## 24:55 Status Updates
25:24 @foamyguy (hosting)
* Wrapped up the ESP32SPI socket compatibility changes and merging the related PRs after another round of testing.
* Started making a way to show outlined text with configurable stroke color and size. 
   * “Hacky” hardcoded PoC completed successfully with simple bitmap manipulation
   * Added new functionality into bitmap.blit() in the core to use during the bitmap dilation operation to speed it up
   * Refactored bitmap.blit() to bitmaptools because the new functionality pushed the build size over the limit on a few of the smaller devices.
   * Made a new OutlinedLabel class that makes the functionality much easier to re-use within other projects, will submit PR with that this week.
   * Hope to eventually make a dilation helper function in bitmaptools that would speed up the process even further.
* Working through changes in ESP32SPI to switch over the internal components and examples to use settings.toml instead of secrets.py
* Following up on older library PRs. Will close some older ones if they remain inactive for a while after posting a follow up comment checking in on current status. They can always be re-opened in the future if they do become active.
* Started writing a clone of the atari game Breakout that runs on a PyPortal, uses a Stemma QT Gamepad as the controller, and uses vectorio for graphics.


28:53 @danh
* Released CircuitPython 8.2.0 final last Wednesday.
* Revised and mirrored guide pages on nRF bootloader updates and Blinka explanation.
* Followed up on several bug reports.
* MicroPython merge still in process.


30:50 @DJDevon3 (text only)
* Finished a portable RFM95 range finder using a battery powered ESP32-S2 reverse TFT & RFM95 featherwing. I went for a drive and figured out the real world max distance for my area to my LORA Mail Boombox. Thanks to DanH for the idea to make it.
* Got a Fitbit to help track some of my elderly mother’s vitals. I chose Fitbit because they have a 24/7 heart rate monitor feature & web API. I’ve successfully adapted it for use with the adafruit_requests library using GET/POST, and the refresh tokenizer works, it’s just a matter of cleaning up the oauth code to release as a simple example.
* Fitbit’s oauth token scheme is the most stringent I’ve come across thus far. It requires a randomized 23-128 bit salt, hashed with SHA-256, and then Base64 URL encoded. Unlike most other API’s, Fitbit’s API tokens expire every 8 hours. If your application doesn’t make a request at least once every 8 hours (to create an automated refresh token), you must generate an entirely new set of tokens and start over. It has not been fun to work with.
* On a personal note my mother who’s been bedridden in the hospital ICU for weeks, finally got over pneumonia, fever, and sepsis. She’s now at a rehab facility, walked half a mile on Saturday, and daily calorie intake average is about 3000. She went from 89lbs to 110lbs in 2 weeks. Fitbit by the way, has no options for people who need to gain weight.


32:53 @Jeff
* Usb keyboard: added support for alternate keymaps (only ASCII supported; can improve in the future)
   * Hug report to neradoc who implemented alternate keymaps for usb hid; re-used those tables to create the mapping in the other direction
   * Tested with French “AZERTY” layout, which also requires Alt-Gr for {} and shift for 123, it’s crazy for programmers
   * Modifiers, Arrows, page up/down, capslock, etc, cannot be re-mapped currently
   * Key repeat now works as well
   * Code is in a pull request to scott’s USB branch: https://github.com/tannewt/circuitpython/pull/19
* Screen-based editor is in good shape; most glaring omission is no undo https://github.com/jepler/editor
* Next:
   * Need some scheme to support visible cursor for displayio to be useful
      * Scott has some very ambitious ideas for improving terminal display, but I’m trying not to bite all that off right now9
   * Need some scheme to easily invoke editor
   * Need to package up the editor so it’s circup-installable, transfer to adafruit, etc
* I have experienced that the keyboard stops working e.g., if I leave the board running overnight. Will work again once the keyboard is re-plugged. Have not tried to diagnose or fix it yet. Still have not tried with wired keyboard, just with a wireless one (#1738)
* Once the Metro RP2040 prototype is in hand, make sure that SPI & SDIO (!) work to access the onboard SD card. Will need to pull code from pico-extras into CircuitPython to support SDIO using the PIO peripheral.


36:50 @kattni
* Since I can remember:
   * Published the Gamepad QT guide
   * Published the STEMMA audio amp guide
   * Published TRRS jack breakout guide
   * Published the I2S BFF guide
   * Updated SHT40/45 guide to include SHT41
   * Swirly Grid guide is in moderation
   * Took over the Python on Hardware newsletter for three weeks, beginning last week.
   * Shipped the first takeover newsletter this morning!
* This week:
   * Post-newsletter tasks
   * Go through guide review feedback, and apply it to guides
   * Update my RPi breakout testing setup
   * Most of the week will be going through guide feedback.
   * Working with Paul on next week’s newsletter!


38:52 @makermelissa
* Last 2 Weeks:
   * Added some missing boards to circuitpython.org
   * Updated the LED Backpack Guide for the 1.2” 7-Segment Backpack
   * Updated the MatrixPortal S3 Board Definition to work with a newer revision
   * Updated the rgb_display examples to work with the latest Pillow library
   * Wrote the EK79686 2.7” EInk driver for CircuitPython
   * Updated the Adafruit_CircuitPython_EPD driver to work with the EK79686 eInk Display
   * Updated the 2.7” eInk Guide
   * Started working on testing out and figuring out how to get a new touchscreen controller chip working with the Raspberry Pi Device Tree
* This Week:
   * Continue working on the touchscreen controller chip


40:06 @Paul
* Working on the Python on Hardware newsletter - if you see some news or a cool project, make sure to let us know, too!


40:26 @tannewt
* USB Host PR will be sent out early this week/today. Got the PIO USB changes needed merged in.
* Was working on Intellikeys but sending a report doesn’t seem to be working. Still debugging stuff.
* Got HID report parsing and descriptor parsing in Kaitai Struct. See my gists for the code: https://gist.github.com/tannewt
* Also using Saleae + pysigrok to analyze USB traces
## 41:34 In The Weeds


41:56 @Tyeth: (text only) in the weeds related question. Got issues with the adafruit SCD4x circuitpython driver, seems to rarely have data_ready = true 
Since filing the issue i had a user in discord with the same issue. Does anyone else have one of these co2 sensors who could look into it.
## 44:56 Wrap-Up


Next week's meeting is on Monday 7/17/23 at the usual time of 2pm Eastern / 11am Pacific