# CircuitPython Weekly for April 11, 2022
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/yC26vmHk3Uc).


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.
03:47 ## Community News
### 350 CircuitPython Libraries Are Now Available
The CircuitPython community reached a big milestone together Thursday! There are now 350 CircuitPython Libraries! Growth is steady and healthy for the project
[Adafruit Blog](https://blog.adafruit.com/2022/04/08/350-circuitpython-libraries-circuitpython/).


### 04:26 CircuitPython 7.3.0-beta.1 Released
A new version of CircuitPython came out last week – CircuitPython 7.3.0-beta.1.
Notable changes to 7.3.0 since 7.2.5:


* Experimental mDNS support.
* USB to Serial/JTAG support for REPL on appropriate boards.
* Initial experimental USB host support.
* Merge MicroPython 1.18 changes.
* Preliminary zlib module support. gzip module will be added later.
* PIO: wrap and wrap_target support.
* keypad: scan keystates immediately on creation.


[Github](https://github.com/adafruit/circuitpython/releases)


### 05:31 Crookes Radiometer with CircuitPython vectorio
  An electronic Crookes Radiometer with CircuitPython vectorio and the Adafruit Circuit Playground Bluefruit with TFT Gizmo 
[Github](https://github.com/Airplane-Journal/CircuitPython-Crookes-Radiometer)
[YouTube](https://youtu.be/6e7l1va4atc)


### 06:18 Remotely answer/decline/hang up calls on your iPhone with CircuitPython BLE & ANCS
ToddBot has added functionality to the CircuitPython Apple BLE Notification Service library to allow you to Answer or Decline and Hang up telephone calls remotely with CircuitPython BLE devices.
[Twitter](https://twitter.com/todbot/status/1511483283493687296)
[Github](https://github.com/todbot/Adafruit_CircuitPython_BLE_Apple_Notification_Center/blob/add_actions/examples/ble_apple_notification_center_callhandler.py)


### 06:53 USB MIDI controller
Yet another toy keyboard USB MIDI controller with Raspberry Pi Pico and CircuitPython
  

[Website](https://diyelectromusic.wordpress.com/2022/04/05/yet-another-toy-keyboard-usb-midi-controller/)


### 07:13 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.
## 08:13 State of CircuitPython, Libraries and Blinka
### Overall
* 34 pull requests merged
  * 17 authors - weblate, gamblor21, EmergReanimator, FoamyGuy, dhalbert, DavePutz, domdfcoding, mkende, ladyada, PontusO, ReeceRobinson, KurtE, tekktrik, makermelissa, kattni, Neradoc, jepler
  * 8 reviewers - jepler, ladyada, FoamyGuy, dhalbert, KeithTheEE, makermelissa, kattni, tekktrik
* 24 closed issues by 11 people, 29 opened by 22 people


### 09:08 Core
* 21 pull requests merged
  * 11 authors - domdfcoding, weblate, gamblor21, ladyada, PontusO, EmergReanimator, ReeceRobinson, dhalbert, KurtE, DavePutz, jepler
  * 3 reviewers - dhalbert, ladyada, jepler
* 12 open pull requests
  * https://github.com/adafruit/circuitpython/pull/5352 (Open 207 days)
  * https://github.com/adafruit/circuitpython/pull/5491 (Open 171 days)
  * https://github.com/adafruit/circuitpython/pull/5852 (Open 87 days)
  * https://github.com/adafruit/circuitpython/pull/5999 (Open 60 days)
  * https://github.com/adafruit/circuitpython/pull/6037 (Open 54 days)
  * https://github.com/adafruit/circuitpython/pull/6119 (Open 36 days)
  * https://github.com/adafruit/circuitpython/pull/6217 (Open 9 days)
  * https://github.com/adafruit/circuitpython/pull/6247 (Open 5 days)
  * https://github.com/adafruit/circuitpython/pull/6261 (Open 4 days)
  * https://github.com/adafruit/circuitpython/pull/6256 (Open 4 days)
  * https://github.com/adafruit/circuitpython/pull/6265 (Open 2 days)
  * https://github.com/adafruit/circuitpython/pull/6270 (Open 1 days)
* 18 closed issues by 8 people, 16 opened by 12 people
* 524 open issues
  * https://github.com/adafruit/circuitpython/issues
* 7 active milestones
  * 7.2.x: 2 open issues
  * 7.3.0: 3 open issues
  * 7.x.x: 24 open issues
  * 8.0.0: 11 open issues
  * Libraries: 19 open issues
  * Long term: 449 open issues
  * Support: 1 open issues
  * 15 issues not assigned a milestone


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


### 11:34 Libraries
* 12 pull requests merged
  * 6 authors - FoamyGuy, jepler, kattni, mkende, Neradoc, tekktrik
  * 6 reviewers - FoamyGuy, dhalbert, KeithTheEE, kattni, ladyada, tekktrik
  * Merged pull requests:
    * https://github.com/adafruit/Adafruit_CircuitPython_PIOASM/pull/35 (Days open: 83)
    * https://github.com/adafruit/CircuitPython_Community_Bundle/pull/93 (Days open: 24)
    * https://github.com/adafruit/Adafruit_CircuitPython_DisplayIO_Layout/pull/69 (Days open: 13)
    * https://github.com/adafruit/Adafruit_CircuitPython_Typing/pull/11 (Days open: 12)
    * https://github.com/adafruit/Adafruit_CircuitPython_IS31FL3731/pull/50 (Days open: 10)
    * https://github.com/adafruit/Adafruit_CircuitPython_MLX90393/pull/31 (Days open: 10)
    * https://github.com/adafruit/Adafruit_CircuitPython_PortalBase/pull/69 (Days open: 7)
    * https://github.com/adafruit/Adafruit_CircuitPython_VC0706/pull/22 (Days open: 7)
    * https://github.com/adafruit/cookiecutter-adafruit-circuitpython/pull/179 (Days open: 2)
    * https://github.com/adafruit/Adafruit_CircuitPython_VC0706/pull/23 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_seesaw/pull/98 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_RSA/pull/28 (Days open: 1)
  * 25 open pull requests (Oldest: 559, Newest: 1)
* 5 closed issues by 4 people, 13 opened by 11 people
  * 630 open issues
  * 198 good first issues
* https://circuitpython.org/contributing
Library updates in the last seven days:
**Updated Libraries**
Too many to list - check in the library report for the list if you’re interested: https://adafruit-circuit-python.s3.amazonaws.com/adabot/bin/reports/circuitpython_library_report_20220411.txt


### 13:43 Blinka
* 1 pull requests merged
  * 1 authors - makermelissa
  * 2 reviewers - makermelissa, tekktrik
* 4 open pull requests
  * https://github.com/adafruit/Adafruit_Blinka/pull/417 (Open 425 days)
  * https://github.com/adafruit/Adafruit_Blinka/pull/496 (Open 259 days)
  * https://github.com/adafruit/Adafruit_Blinka_bleio/pull/40 (Open 185 days)
  * https://github.com/adafruit/Adafruit_Python_PlatformDetect/pull/201 (Open 125 days)
* 1 closed issues by 1 people, 0 opened by 0 people
* 72 open issues
  * https://github.com/adafruit/Adafruit_Blinka/issues
* Piwheels Downloads in the last month: 12923
Number of supported boards: 88




## 14:25 Hug reports
@foamyguy
* @DanH and @Jeff for reviewing and offering good suggestions on a core PR I submitted
* @DanH again for helping me get past an issue with requirement versions that was prevent me from successfully building the core
* Github user @aioue for testing out my PagedLayout and leaving a thorough review on  the PR
* @Kattni for appearing on the upcoming Deep Dive stream to discuss CircuitPython Library development and the work going into the PyCon festivities.
* Github user @billvanleeuwen424 for making their first contribution, a PR to add typing to a library


16:02 @askpatrickw (not in meeting)
* Hugs to @FoamyGuy for the great streams on Fridays!


16:27 @blitzcitydiy
* @kattni for proofing my first solo new product guide
* @eva for opening a PR to get the TSC2007 arduino lib into the arduino library manager
* @danh for pointing me to the ticks library to use with the keypad library to try and do long press/short press detection
* @anne for proofing 3 guides for me last week


17:11 @danh
* @jepler for fixing several bugs for 7.2.x and 7.3.0
* @kattni for investigating using keypad in the CP library
* @Neradoc for a big clue about issues with ESP32-S2 I2C
* @ladyada for several fixes over the weekend


18:11 @jepler
* Group hug
* @danh for finding a much simpler solution to a problem I was trying to solve (`if TYPE_CHECKING`)


18:28 @kattni
* @jepler for helping me with what should have been a simple concept in Python, but no one had explained it to me in a way that clicked for me, until Jeff!
* @danh for helping out with an idea I had involving `keypad`, and letting me talk through it
* @foamyguy for having me on his upcoming Deep Dive!
* Group hug!


18:59 @kmatch
* Another big constrictor hug to @jepler for the FrameBuffer module. Once I got a pointer to a framebuffer memory space, it just worked. Special thanks for annotating the framebuffer functions as necessary vs optional. 


19:32 @MakerMelissa
* Group Hug


19:43 @tammymakesthings:
* @foamyguy, whose recent livestreams/Deep Dive have taught me a bunch about displayio that I’ll use in the near future
* Group hug!
## 20:59 Status Updates
21:02 @foamyguy
* Last week
   * Built the main structural functionality for a TabLayout widget. Right now it supports adding named tabs and switching between them from code. I’ll be working on the rest of it this week, namely adding the visual tab icon and implementing touch input to change between tabs
   * Created a “TileGrid Inflator” utility that takes a small 3x3 tile spritesheet and “inflates” it into a larger TileGrid by repeating the center row and column tiles as needed to reach the desired size. Intending to use this for the TabLayout, but have kept it general and have some other uses in mind as well.
   * Started a change in the core to allow TileGrid to have its Bitmap object updated after it was created. This allows you to easily switch between different spritesheets for a TileGrid. This will make it easy to implement active and inactive tabs with distinct visuals to tell them apart. But has many other potential uses as well.
   * Published a video showing the process of adding types to a CircuitPython library
* This week
   * Run the meeting
   * Finish up the bitmap updating PR based on feedback received
   * Once it’s good, start using the new functionality in the TabLayout and try to get it ready to make the PR this week
   * Record a video showing the process of making and submitting PRs to CircuitPython libraries. Maybe a separate one for the newsletter specifically as well?


24:33 @askpatrickw (missing meeting)
* I’m working on a new board PR for the Wemos Lolin C3 Mini. It is building fine, now I need to test all the pin mappings and I’m working out my process for that. This is a “when I have time” project so the PR is in draft, but if anyone has suggestions or feedback on the PR, feel free to ping me. CircuitPython PR #6256


25:09 @danh
* Debugged unrelated UART problems on RP2040 and ESP32-S2.
* Released CircuitPython 7.2.5 to fix the UART problems, nRF PWM pin allocation, and MP3 looping.
* Released CircuitPython 7.3.0-beta.1 to catch up on two weeks of fixes, additions, and new boards.
* Redid circuitpython.org update for 7.2.5 to remove spurious 7.2.5 download links for new 7.3.0-beta.1 boards. Something is broken in the auto-PR maker that needs to be fixed; I did it by hand and made a slight mistake
* Reviewed several PR’s from @jepler, @ladyada, and others.
* Debugging I2C issue on ESP32-S2: big 10ms gaps between transactions.
* Debugging ESP32SPI (Airlift) crashes: problem seems to occur when using Portal libraries, but not bare wifi and requests. Portal library may be exercising some underlying problem.


28:43 @jepler
* Last week:
   * Created a Python program for visualizing the content of a floppy disk (or, more specifically, a flux file representing the content of a floppy disk)
   * Finished up a pair of languishing PRs to add support for .wrap of rp2040’s pio peripheral
   * Fixed a problem with looping mp3s that affected at least samd51
   * Proposed some changes to allow TYPE_CHECKING code to be optimized out of mpy files, but dan had a better alternative with no core change required
   * Spent time reviewing pull requests
* This week:
   * Investigate a fresh report of mp3 playback problems, this time on rp2040
   * Try again to get the conversion from “a2r” to “woz” working
   * Make a 1-minute video about the flux visualizer program
   * Get floppy built-in module & floppy library wrapped up (core pr merged then library released)
* Soon:
   * In May/June I’m traveling in Europe with my wife. If there are any circuitpython/adafruit/cool people along our travels, I’d love to meet you for a coffee or a meal. Our approximate list of cities is: Paris, Besançon, Frankfurt, Dresden, Wolfsburg, Hamburg, Bremen, Delft, Zandvoort, Amsterdam. DM or ping me if you want to try to work something out.


31:10 @kattni
* Last week:
   * Merged new .gitignore into cookiecutter. Next step is to Adabot patch it across all the libraries.
   * Started testing PyLeap. Immediately found issues, one of which turned out to be a CircuitPython issue present since after v7.1.1, e.g. 7.1.1 works, 7.2.x does not. I provided feedback on some of the upcoming layout and text in the mockups, and made a couple of feature suggestions as well.
   * Wrote the asyncio Essentials template, deployed it to its first guide, had it reviewed by Dan (for content accuracy, etc) before sending it onto Anne and Limor. So that’s finally ready to go - check it out in the Feather ESP32-S2 guide if you’re interested. It will eventually, like all Essentials templates, be in all board guides that support asyncio.
   * Verified that all references to the Adafruit WebSerial ESPTool were updated, and found two that were missed and passed them onto Melissa to be updated.
   * Wrote the basic QT Py Charger BFF guide. The Arduino demo wasn’t working quite right, so I did not include code in the guide. The plan was to port the Arduino code to CircuitPython, but until the math is corrected, that’s on hold.
* This week:
   * Fix the Feather ESP32-S2 Pretty Pins diagram to clarify VSENSOR being only a power pin, and not having the other features of pin D7 accessible from it. Then reupload it to the guide and PCB repo.
   * Update front page images, schematic and fab print, and PCB files for: PiUART, BLE sniffer, and PCF8523.
   * Potential update to CircuitPlayground library - need to test whether it fits frozen into CircuitPython before doing anything with it, and then submit a PR if frozen fit is confirmed. Added a property called `buttons` that provides a `keypad` setup for both of the buttons together, so you can use the buttons with keypad, which includes debouncing etc. Required tweaking a few other things as well to make the library work with both the `keypad` button setup and the `digitalio` button setup. Works great, but again, if it doesn’t fit or blows out too much available space, then it won’t be included.
   * Guide for Feather ESP32-S3. Will be mostly mirroring from ESP32-S2 after making all the pages include “ESP32-S2/S3” or simply “ESP32” to make them agnostic to either version. 
   * Continue testing PyLeap. The plan is to go through all available projects in PyLeap to ensure they work properly, and then sort out a couple of new ones to add, and make sure the adding-a-project process works as intended. Then, think about what further projects to add, either new or ported-old projects.
   * Add warnings to ESP_ATControl library that Adafruit no longer supports it
* This weekend:
   * Started PyCon prep! 
      * Went through what hardware I intend to have, and sorted out what I still need
      * Started organising the hardware I have already to prepare for travel
      * Started writing the demo to include on the Circuit Playground Bluefruits I’m bringing for Open Spaces


35:07 @kmatch
* Continuing work on running 800x480 RGB dot clock displays with the ESP32-S3 LCD peripheral 
* Got to REPL with a dot clock RGB display driven by an ESP32-S3 using FrameBuffer!
* Observe some glitching (maybe “tearing”?) whenever CircuitPython is doing some processing.  It is affected by dot clock frequency.  Maybe the screen goes weird when CP is accessing PSRAM or causing some other delay. 
* May need some coordination between CP and the display so that “things” happen only during the blank time between refreshes:
   * I think the LCD peripheral is continuously refreshing the screen. 
   * Can CP trigger the LCD peripheral to refresh?
   * Should I somehow use the callback function in ESP-IDF on_color_trans_done()?
   * Simplistic assumption: with the highest dot clock frequency, that will leave the most remaining time between refreshes for CP to access PSRAM. But only if refresh frame rate is constant.
* This week: 
   * Make a “to do” list for the ESP32-S3 FrameBuffer dot clock interface.
   * Take a break from touchscreens and start on a bowling training aid: position sensor to measure the ball position vs the arrows and provide immediate feedback if you’re bowling to your mark. 


38:58 @MakerMelissa
* Last Week
   * Worked on updating the WipperSnapper Firmware Uploader to use NPM packages instead of pointing to other repos, which involved many changes and lots of bug fixes.
   * Finished updating guides that were pointing to the old ESPTool
   * Started looking at an alternative MIPI driver for Raspberry Pi
* This Week
   * Continue Looking at MIPI driver
   * Check out a potential bug with WipperSnapper that only occurred on a Chromebook




39:43 @tammymakesthings:
* Last week:
   * 2 [Twitch](https://twitch.tv/tammymakesthings) streams, working on CircuitPython card deck library
   * Last week in old job, so my schedule was bananacrackers
* This week:
   * Twitch streams Wednesday 6pm Pacific, Saturday noon Pacific, possibly a pop-up stream Friday afternoon.
   * Continuing to work on the card deck library
   * Doing a little rooting around in the Python standard library to see how hard it would be to bring some more of the functools stuff and also dataclases over to CircuitPython.
## In The Weeds




## 42:42 Wrap-Up
Next week’s CircuitPython Weekly meeting will be ending at 3pmET (lasting 1 hour). To that end, next week, we will need to keep things short, and we will not be having In the Weeds.


Next week’s meeting is at the usual time of Monday April 18, 2022 at 2pmET/11amPT.