# CircuitPython Weekly Meeting for June 20, 2023
Scott is hosting.


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


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.
## 2:56 Community News
### 3:15 Bluetooth Arrives for the Raspberry Pi Pico W
A year after the Raspberry Pi Pico W was launched with its Infineon CYW43439 wireless chip, Raspberry Pi has software to enable Bluetooth for their C SDK (Version 1.5.1) and in MicroPython. CircuitPython support will follow in time - [Raspberry Pi](https://www.raspberrypi.com/news/new-functionality-bluetooth-for-pico-w/) and [hackster.io](https://twitter.com/Hacksterio/status/1668954939349950466).
> "Specifically, we support Bluetooth Classic — with the temporary exception of ACL/SCO — along with both the BLE Central and Peripheral roles. Things are also configurable so you can enable Bluetooth Classic and BLE either individually, or have both of them available at the same time."
### 4:09 Testing the Performance of SPI-Based LCD Displays and displayio in CircuitPython
Josh gets a WaveShare round LCD and measures the response time of drawing the design above with CircuitPython and displayio - [Josh On Design](https://joshondesign.com/2023/06/12/display_io_perf).
### 4:42 The EuroPython 2023 Schedule Has Been Finalized
EuroPython 2023 will be July 17-23, 2023, in Prague, Czech Republic and Remote. The [list of sessions](https://ep2023.europython.eu/sessions) with the selected talk, tutorials and posters are out now - [EuroPython Newsletter](https://blog.europython.eu/europython-may-2023-newsletter/) and [EuroPython 2023](https://ep2023.europython.eu/).
### 5:05 Espressif Issues Free Book on ESP32-C3
Espressif has released a new book on their ESP32-C3 microcontroller. This free book is 400 pages - [Espressif](https://www.espressif.com/sites/default/files/documentation/ESP32-C3%20Wireless%20Adventure.pdf) (PDF) via [Twitter](https://twitter.com/EspressifSystem/status/1668660874100473861).
### 5:30 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.
## 6:09 State of CircuitPython, Libraries and Blinka
**This report contains information from the seven days before yesterday. Any changes (PRs merged, etc.) made yesterday and today are not included in this report.**
### 6:38 Overall
* 8 pull requests merged
  * 6 authors - makermelissa, tekktrik, breakersun, UnexpectedMaker, jepler, DJDevon3
  * 5 reviewers - makermelissa, tannewt, FoamyGuy, jepler, dhalbert
* 8 closed issues by 7 people, 12 opened by 11 people


### 7:09 Core
* 4 pull requests merged
  * 3 authors - breakersun, UnexpectedMaker, jepler
  * 4 reviewers - tannewt, dhalbert, jepler, makermelissa
* 22 open pull requests
  * https://github.com/adafruit/circuitpython/pull/6555 (Open 349 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/6913 (Open 275 days)
  * https://github.com/adafruit/circuitpython/pull/7161 (Open 230 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/7220 (Open 213 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/7293 (Open 199 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/7440 (Open 159 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/7591 (Open 123 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/7618 (Open 119 days)
  * https://github.com/adafruit/circuitpython/pull/7675 (Open 107 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/7711 (Open 100 days)
  * https://github.com/adafruit/circuitpython/pull/7718 (Open 98 days)
  * https://github.com/adafruit/circuitpython/pull/7811 (Open 81 days)
  * https://github.com/adafruit/circuitpython/pull/7886 (Open 58 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/7984 (Open 34 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/7997 (Open 31 days)
  * https://github.com/adafruit/circuitpython/pull/7996 (Open 31 days)
  * https://github.com/adafruit/circuitpython/pull/8033 (Open 24 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8035 (Open 23 days)
  * https://github.com/adafruit/circuitpython/pull/8050 (Open 19 days)
  * https://github.com/adafruit/circuitpython/pull/8083 (Open 5 days)
  * https://github.com/adafruit/circuitpython/pull/8087 (Open 3 days)
  * https://github.com/adafruit/circuitpython/pull/8089 (Open 1 days)
* 5 closed issues by 4 people, 3 opened by 3 people
* 657 open issues
  * https://github.com/adafruit/circuitpython/issues
* 7 active milestones
 * 8.2.0: 1 open issues
 * 8.x.x: 36 open issues
 * 9.0.0: 30 open issues
 * Libraries: 20 open issues
 * Long term: 557 open issues
 * Support: 10 open issues
 * Third-party: 7 open issues
 * 1 issues not assigned a milestone


### 8:25 Libraries
* 4 pull requests merged
  * 3 authors - makermelissa, DJDevon3, tekktrik
  * 4 reviewers - makermelissa, FoamyGuy, jepler, dhalbert
  * Merged pull requests:
    * https://github.com/adafruit/Adafruit_CircuitPython_BitmapSaver/pull/28 (Days open: 29)
    * https://github.com/adafruit/Adafruit_CircuitPython_Requests/pull/133 (Days open: 20)
    * https://github.com/adafruit/Adafruit_CircuitPython_asyncio/pull/42 (Days open: 13)
    * https://github.com/adafruit/Adafruit_CircuitPython_MatrixPortal/pull/90 (Days open: 1)
  * 58 open pull requests (Oldest: 993, Newest: 1)
* 3 closed issues by 3 people, 7 opened by 6 people
  * 619 open issues
  * 46 good first issues
* https://circuitpython.org/contributing


#### Library PyPI Weekly Download Stats
* **Total Library Stats**
  * 159819 PyPI downloads over 310 libraries
* **Top 10 Libraries by PyPI Downloads**
  * Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 7345
  * Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 6912
  * Adafruit CircuitPython Register (adafruit-circuitpython-register): 2195
  * Adafruit CircuitPython NeoPixel (adafruit-circuitpython-neopixel): 1880
  * Adafruit CircuitPython Motor (adafruit-circuitpython-motor): 1470
  * Adafruit CircuitPython Display Text (adafruit-circuitpython-display-text): 1332
  * Adafruit CircuitPython MiniMQTT (adafruit-circuitpython-minimqtt): 1165
  * Adafruit CircuitPython Wiznet5k (adafruit-circuitpython-wiznet5k): 1117
  * Adafruit CircuitPython PortalBase (adafruit-circuitpython-portalbase): 1093
  * Adafruit CircuitPython DHT (adafruit-circuitpython-dht): 1091


#### Library updates in the last seven days:
* **Updated Libraries**
  * [adafruit/Adafruit_CircuitPython_Requests](https://github.com/adafruit/Adafruit_CircuitPython_Requests)
  * [jepler/Jepler_CircuitPython_udecimal](https://github.com/jepler/Jepler_CircuitPython_udecimal)


### 10:08 Blinka
* 0 pull requests merged
  * 0 authors - 
  * 0 reviewers - 
* 3 open pull requests
  * https://github.com/adafruit/Adafruit_Blinka/pull/417 (Open 859 days)
  * https://github.com/adafruit/Adafruit_Blinka_bleio/pull/40 (Open 619 days)
  * https://github.com/adafruit/Adafruit_Python_PlatformDetect/pull/299 (Open 22 days)
* 0 closed issues by 0 people, 2 opened by 2 people
* 96 open issues
  * https://github.com/adafruit/Adafruit_Blinka/issues
* PyPI downloads in the last week: 11705
* Piwheels Downloads in the last month: 6538
Number of supported boards: 119
## 10:57 Hug reports
11:27 @tannewt (host)
* @jepler again for the collab on the swirl grid. Excited to see it in the shop this week.
* @foamyguy for continuing to debug in the weeds of displayio.


12:02 @danh
* @tannewt for meeting up in NYC and good discussions about many things CircuitPython
* @jimmo for pointing out a confusion of mine about the MicroPython “mpy filesystem” PR’s.


12:50 @DJDevon3
* @FoamyGuy for some great advice on improving the bitmap_saver library examples.
* @Ventrue & @HerrBrain for helping with advice in the 3D printing discord channel.
* @Tyeth for helping in the AdafruitIO discord channel with Circuit Python MQTT questions.


13:59 @foamyguy (missing meeting)
* Dan for discussion and points in the right direction about ESP32SPI socket compatibility
* @vladak for troubleshooting MiniMQTT issues and submitting proposed fixes
* @CGrover, David Glaude and others for discussion and ideas about the Enigma Machine Macropad project I was working on during stream


14:34 @jepler
* Group hug
* John park for doing some research leading to selecting the “rhubarb” software for choosing mouth positions in the teddy ruxpin project


15:01 @kattni
* The Discord *Helpers for providing such an amazing amount of help on the server, for always being cognisant of potential issues and bringing them to mod attention, and having incredibly thoughtful discussions about all sorts of things that have helped me adapt the server to better serve the community.
* Everyone involved with the CircuitPython project. This past Saturday I gave my dad my canary nightlight after he found the guide and expressed interest in it and a use case. I did not think to update the WiFi credentials (or AIO for that matter). So I said I’d call him and walk him through it on Sunday. Naturally, the process turned into an ordeal (don’t they always?). I had him download Mu, forgetting at first that we were updating a .toml file, not code.py, but this turned out to be a good thing. First of all, the WiFi error autoreset timing was 5 seconds, so as is, the board rebooted every 5 seconds because it couldn’t connect to the WiFi. So I walked him through putting the board in safemode. Updated settings.toml, only to find out the permissions were corrupted. We created a new settings.toml file, but also had to walk through the right-click>Get Info way of removing the .txt extension because TextEdit was being “helpful”. Back into safemode, copy the file over, reset again, still rebooting. Back into safe mode, and I walked him through changing all of the error reset timings to 60 seconds (all without line numbers because I had modified that code.py with no local copy of it here). I explained Serial in Mu, we finally found the error, turns out the SSID was wrong. Put it into the REPL in Mu to stop resetting while he fixed the SSID in the settings.toml file, reloaded from the REPL, and it worked! I had him change all the error resets back to 10 seconds, restart, still worked. All of this took about an hour. This is literally the first time he’s ever touched code or microcontrollers (other than interacting with fully-functional demos). The point of this ridiculously long hug report story is to explain the reason behind my hug here. I was able to walk my dad through this ordeal and get the project working. Without all the work we’ve put into making CircuitPython super approachable and easy to use, there’s no way this would have happened. So, thank you to everyone who has contributed to building the amazing thing we have here, You all made this moment possible.
* My dad. I’m so unbelievably proud of him for sticking with me through everything above, and asking periodic questions so he could actually understand what was going on to try to learn things too. 


18:20 @MakerMelissa
* @kattni for some good suggestions on updating a guide and @blitzcitydiy for taking on making the guide changes 
* Group Hug


## 18:38 Status Updates
18:58 @tannewt (host)
* Back from NYC.
* Getting caught up on stuff and then digging into USB host.
* Poking LLD (LLVM linker) a bit to bring some size numbers to the LLVM embedded meeting on Thursday.
* Generate more swirl grid sizes.


22:34 @danh
* Continuing to work on MicroPython v1.19.1 merge.
* Visited NYC Thursday-Saturday, along with Scott, who was there longer. Great to see everyone,


20:43 @DJDevon3
* Updated some bitmap_saver examples to be more robust in helping to avoid SD Card data corruption. 
* Adafruit_Requests library has 3 new API examples for OpenSky Networks which is a public flight database of active commercial aircraft. You can track 1 specific aircraft or all aircraft in a small geographic region using lat/lon coordinates. It can return a lot of data so it’s only recommended for microcontrollers with M4 or better MCU’s, preferably ESP32-S2 or S3 (currently). User Timex40’s project has already been featured in the Adafruit Blog if you want to see a great example of what it can do. His example uses a Pyportal. I wrote an API to be available for any Circuit Python device capable of handling a JSON data stream using the adafruit_requests library.
* Had family visit this week and they helped me accomplish more tasks in 1 week than I could have done by myself in months. 


23:28 @foamyguy (missing meeting)
* Cleaned up the current state of the hidden tilegrid issue PR and completed more thorough testing of the problem reproducer and other scripts
* Testing ESP32SPI socket compatibility change in conjunction with MiniMQTT, HTTPServer, and WSGI libraries. 
* Created a PR proposal to move the esp32spi_wsgiserver module over to the WSGI library, and update it to work with the new compatible socket version
* Started coding an enigma machine app for the Macropad, it has a basic UI and controls utilizing the buttons and rotary knob to configure the machine settings, then allows the user to run text through the machine and type out the result over HID / keyboard.


24:28 @jepler
* Mostly non-circuitpython work
* Last week:
   * Finished & published ‘runcpm’ retrocomputing project https://learn.adafruit.com/rp2040-runcpm-emulator-with-usb-keyboard-hdmi-screen
   * Got initial support for ‘patching’ different mouth movements into teddy ruxpin stories
* This week:
   * Transcoding & Patching in new audio & converting mouth movements from ‘rhubarb’ json format
   * Other stuff if I get done with that
   * Would really like to do a ‘two feather’ solution that reuses the USB-keyboard-to-serial from the runcpm project but works with CircuitPython to get input & use the REPL, but doing that is not officially scheduled.
* Other:
   * Oops, bought the Zelda game, now my time is just all spent playing it


27:52 @kattni
* Last week:
   * Published NeoKey breakouts guide
   * Published TRRS jack breakout guide
   * Started I2S BFF guide
* This week:
   * Finish I2S BFF guide
   * STEMMA QT Gamepad guide
* Past weekend:
   * Recently got a new split keyboard, which does not have a numpad. I thought initially it might be helpful to have one in case I wanted it, so I decided I would build one. Well, I’ve had the keyboard for a week or two now, and it turns out I use the numpad WAY more than I realised. So now it’s kind of critical. I had already gathered what I needed for the build but hadn’t started it. This past weekend, I soldered it all up (the method for which turned out to have a learning curve), and tested it with code. It mostly worked. Once I fixed one missing wire, and one miswire, and then correctly sorted out the code, everything is working! We’re working on the 3D printed case for it, the design for which is nearly completed. Getting close! Unsure whether there will be a guide for this or not, but I’ll post pictures somewhere at least, and consider posting the code and model files in a repo as well.


29:29 @MakerMelissa
* Last Week:
   * Tested out a bunch of guides
   * Worked on fixing code on the guides that failed
   * Working on a large guide update that requires a circuit design and 3d print design change
* This Week:
   * Finishing updating the large guide update
   * Updating the 1.2” 7-Segment Display Guide
* Other:
   * Participated in my first speedcubing competition this past weekend
## 30:49 In The Weeds
31:13 @DJDevon3
* Had a brief discussion with FoamyGuy about adafruit_requests examples changing to settings.toml and stop using secrets.py completely. As long as 9.0 is planned to be a major breaking change, is it time to swap all online examples to settings.toml? Would like opinions/guidance as any new adafruit_requests API examples I contribute must make a choice between the two. Is this type of change preferable moving forward? This might have larger implications for learn guide changes required too. Basically anything that required a secrets.py file (online projects) would be affected. In 8.0 it’s been optional to use either and that will likely always be the case with a py file but worth discussing. My only concern is having web workflow enabled by default which takes resources in the background. There must be a clear way in examples to disable it by default especially for lower power boards that can’t afford to spend the background resources. I’m personally fine with either. This kind of decision isn’t something I want a say in, only guidance/direction.


50:44 @tannewt
* How do we want to do/coordinate “USB keyboard” workflow?

## 1:04:28 Wrap-Up
