

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:49 ## Community News
PyConAu was just over a week ago and talks are now available on YouTube, including:
Open-Source Communities and Ten Years of MicroPython - Damien George (PyCon AU 2023)

Damien George's talk "Open-Source Communities and Ten Years of MicroPython" at PyCon AU 2023 is now available online, with very interesting insights into the language and community - YouTube.
You Can't Do That in MicroPython! - Matt Trentini (PyCon AU 2023)

Matt Trentini's talk at PyCon AU 2023: MicroPython is great for hobbyists! You can control LEDs and motors, it's so easy! But you wouldn't use it for anything serious. Right? Surely not! It's too slow. You can't use all the features of a micro. It consumes too much power. You don't have control over memory... (Hint: all wrong, you can do soooo much - Ed.) - YouTube.
3:56 Python in Excel: Microsoft Combines the Power of Python and the Flexibility of Excel

Microsoft has announced new analytical capabilities available within Excel with the release of a Public Preview of Python in Excel. Python in Excel makes it possible to natively combine Python and Excel analytics within the same workbook - with no setup required. With Python in Excel, you can type Python directly into a cell, the Python calculations run in the Microsoft Cloud, and results are returned to the worksheet, including plots and visualizations - Microsoft Excel Blog and The Verge.
Python creator Guido van Rossum states he helped the Excel team with this initiative - Twitter/X.
4:38 CircuitPython 8.2.4 Released
CircuitPython 8.2.4 is the latest bugfix revision of CircuitPython, and is a new stable release. It now appears that minor changes will be going into the 8.x branch as version 9.0 is expected to take some time, as significant changes and updates from MicroPython are being incorporated - Adafruit Blog.
Notable changes to 8.2.4 since 8.2.3
* New and fixed boards.
* Improved messages and documentation.
### Newsletter Details
The CircuitPython Weekly Newsletter is a CircuitPython community-run newsletter emailed every Monday. 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.
5:27 ## 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.**
5:41 ### Overall
* 26 pull requests merged
  * 17 authors - weblate, hexthat, Ashtreighlia, ccattuto, jim-mckeown, wtuemura, RetiredWizard, bergdahl, elpekenin, tannewt, FoamyGuy, DJDevon3, deshipu, bill88t, dhalbert, rhooper, jepler
  * 7 reviewers - FoamyGuy, tannewt, dhalbert, microdev1, makermelissa, gamblor21, jepler
* 9 closed issues by 3 people, 14 opened by 11 people


6:07 ### Core
* 20 pull requests merged
  * 12 authors - weblate, hexthat, ccattuto, wtuemura, RetiredWizard, deshipu, bergdahl, elpekenin, bill88t, tannewt, dhalbert, jepler
  * 5 reviewers - tannewt, dhalbert, microdev1, gamblor21, jepler
* 31 open pull requests
  * https://github.com/adafruit/circuitpython/pull/6555 (Open 419 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/6913 (Open 345 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/7151 (Open 302 days)
  * https://github.com/adafruit/circuitpython/pull/7220 (Open 283 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/7440 (Open 229 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/7618 (Open 189 days)
  * https://github.com/adafruit/circuitpython/pull/7675 (Open 177 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/7711 (Open 170 days)
  * https://github.com/adafruit/circuitpython/pull/7718 (Open 168 days)
  * https://github.com/adafruit/circuitpython/pull/7811 (Open 151 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/7997 (Open 101 days)
  * https://github.com/adafruit/circuitpython/pull/7996 (Open 101 days)
  * https://github.com/adafruit/circuitpython/pull/8033 (Open 94 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8095 (Open 69 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8100 (Open 67 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8190 (Open 37 days)
  * https://github.com/adafruit/circuitpython/pull/8188 (Open 37 days)
  * https://github.com/adafruit/circuitpython/pull/8233 (Open 29 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8262 (Open 22 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8285 (Open 12 days)
  * https://github.com/adafruit/circuitpython/pull/8293 (Open 10 days)
  * https://github.com/adafruit/circuitpython/pull/8292 (Open 10 days)
  * https://github.com/adafruit/circuitpython/pull/8305 (Open 6 days)
  * https://github.com/adafruit/circuitpython/pull/8323 (Open 5 days)
  * https://github.com/adafruit/circuitpython/pull/8327 (Open 4 days)
  * https://github.com/adafruit/circuitpython/pull/8335 (Open 1 days)
  * https://github.com/adafruit/circuitpython/pull/8341 (Open 0 days)
  * https://github.com/adafruit/circuitpython/pull/8340 (Open 0 days)
  * https://github.com/adafruit/circuitpython/pull/8339 (Open 0 days)
  * https://github.com/adafruit/circuitpython/pull/8338 (Open 0 days)
  * https://github.com/adafruit/circuitpython/pull/8336 (Open 0 days)
* 7 closed issues by 3 people, 9 opened by 7 people
* 698 open issues
  * https://github.com/adafruit/circuitpython/issues
* 6 active milestones
 * 8.2.x: 7 open issues
 * 9.0.0: 49 open issues
 * Libraries: 22 open issues
 * Long term: 597 open issues
 * Support: 15 open issues
 * Third-party: 8 open issues
 * 4 issues not assigned a milestone


7:54 ### Libraries
* 6 pull requests merged
  * 5 authors - jim-mckeown, DJDevon3, FoamyGuy, Ashtreighlia, rhooper
  * 2 reviewers - makermelissa, FoamyGuy
  * Merged pull requests:
    * https://github.com/adafruit/Adafruit_CircuitPython_Fingerprint/pull/51 (Days open: 131)
    * https://github.com/adafruit/Adafruit_CircuitPython_DisplayIO_SSD1306/pull/33 (Days open: 88)
    * https://github.com/adafruit/Adafruit_CircuitPython_MatrixPortal/pull/91 (Days open: 45)
    * https://github.com/adafruit/Adafruit_CircuitPython_HTTPServer/pull/64 (Days open: 23)
    * https://github.com/adafruit/Adafruit_CircuitPython_Display_Shapes/pull/62 (Days open: 3)
    * https://github.com/adafruit/Adafruit_CircuitPython_MatrixPortal/pull/92 (Days open: 1)
  * 46 open pull requests (Oldest: 375, Newest: 2)
* 2 closed issues by 2 people, 4 opened by 4 people
  * 636 open issues
  * 20 good first issues
* https://circuitpython.org/contributing


#### Library PyPI Weekly Download Stats
* **Total Library Stats**
  * 139174 PyPI downloads over 312 libraries
* **Top 10 Libraries by PyPI Downloads**
  * Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 7537
  * Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 6993
  * Adafruit CircuitPython Register (adafruit-circuitpython-register): 1968
  * Adafruit CircuitPython ADS1x15 (adafruit-circuitpython-ads1x15): 1475
  * Adafruit CircuitPython NeoPixel (adafruit-circuitpython-neopixel): 1420
  * Adafruit CircuitPython Motor (adafruit-circuitpython-motor): 1331
  * Adafruit CircuitPython Wiznet5k (adafruit-circuitpython-wiznet5k): 1151
  * Adafruit CircuitPython Display Text (adafruit-circuitpython-display-text): 1142
  * Adafruit CircuitPython MiniMQTT (adafruit-circuitpython-minimqtt): 1081
  * Adafruit CircuitPython PCA9685 (adafruit-circuitpython-pca9685): 1044


#### Library updates in the last seven days:
* **Updated Libraries**
  * [adafruit/Adafruit_CircuitPython_HTTPServer](https://github.com/adafruit/Adafruit_CircuitPython_HTTPServer)
  * [adafruit/Adafruit_CircuitPython_Display_Shapes](https://github.com/adafruit/Adafruit_CircuitPython_Display_Shapes)
  * [adafruit/Adafruit_CircuitPython_Fingerprint](https://github.com/adafruit/Adafruit_CircuitPython_Fingerprint)
  * [todbot/CircuitPython_MicroOSC](https://github.com/todbot/CircuitPython_MicroOSC)


9:32 ### Blinka
* 0 pull requests merged
  * 0 authors - 
  * 0 reviewers - 
* 5 open pull requests
  * https://github.com/adafruit/Adafruit_Blinka/pull/417 (Open 929 days)
  * https://github.com/adafruit/Adafruit_Blinka_bleio/pull/40 (Open 689 days)
  * https://github.com/adafruit/Adafruit_Python_PlatformDetect/pull/299 (Open 92 days)
  * https://github.com/adafruit/Adafruit_Blinka/pull/694 (Open 23 days)
  * https://github.com/adafruit/Adafruit_Python_PlatformDetect/pull/307 (Open 20 days)
* 0 closed issues by 0 people, 1 opened by 1 people
* 103 open issues
  * https://github.com/adafruit/Adafruit_Blinka/issues
* PyPI downloads in the last week: 10576
* Piwheels Downloads in the last month: 10361
Number of supported boards: 119




10:17 ## Hug reports
10:33 @Paul (hosting)
* Group hug!


10:36 @CGrover (text only):
* Liz Clark (@blitzcitydiy) for excellent synthio examples and musical concepts scattered throughout the fascinating Circle of Fifths learning guide. Special hug to Jeff Epler (@jepler) for the impressive synthio core module that just works and keeps on giving.


10:54 @david.glaude: (text only):
* @Dan and @Jepler for releasing 8.2.4 and backporting many fixes and new board support.


11:07 @DJDevon3 (text only)
* @ CGrover for the PaletteFader library and the help in discord. It’s exactly what I needed for a project.
* @PaulCutler for the advice to use PaletteFader.
* @TodBot for a really neat synthio wavetable visualizer on the PyGamer this week. Even if you don’t intend on ever using it I recommend everyone listens to it, it sounds beautiful.
* @LadyAda & PT for a particularly informative Desk of LadyAda this week that included a sneak peak at a new octal PSRAM version of the ESP32-S3 and 40-pin TFT’s of all shapes and sizes.
* @FoamyGuy for 2 weekend streams on creating a red team CTF style challenge with intentional exploits to find.


11:54 @foamyguy
* @MarkMcgookin whose blogpost and library on github provide helpful example code and a utility for working with the aesio module.
* @MichaelPokusa for reaching out about looking into further improvements for HTTPServer library based on my usage of it.
* Github user @BJap for submitting a fix for the gzip core module that resolves an issue I ran into, but didn’t have nearly as deep of an understanding of.


13:17 @jepler
* Group hug


13:24 @kattni
* Group hug!


13:31 @makermelissa
* Group hug


13:38 @tannewt
* @bill88t for the pico w wifi improvements.
* @deshipu for helping folks in #help-with-circuitpython


13:52 @todbot (text only)
* @danh for all these circuitpython releases! 
* @clever in #circuitpython-dev for helping me try to understand & characterize Quad SPI flash performance on RP2040
* @kattni, @danh, & @jepler for helping me understand Sphinx/readthedocs, and @jepler for a patch in CircuitPython CI that I could use to fix readthedocs builds for my libraries
* @joshmarinacci for his cp_synth project that reminded me about the PyGamer and `adafruit_bitmapsaver` to save screenshots! 
* @jepler for adding `socket` constants useful for multicast UDP


14:38 ## Status Updates
14:59 @Paul (hosting)
* I struggled getting MQTT to communicate this weekend with AdafruitIO in a CPython web app that I need to talk to a microcontroller.  I came across the Adafruit-IO library and pip installed it and it made working with Adafruit IO so much easier.  


15:25 @CGrover (text only):
* Putting the finishing touches on the first version of the IoT-based Windless Garden Chimes project running on an ESP32-S2 Feather with a MAX98357A I2S amp. The chime physics and waveform harmonics are sounding like the real thing. All that’s left for version 1.0 is to model the wind speed probability scheme to create realistically weighted random playback. Version 2.0 will encompass simultaneous wind chimes of various materials and scales. My favorite scale so far is in an ethnic minor key – just in time for Halloween. Leaning towards camouflaging the electronics in a garden gnome.
* The Reintegrator Direct Input PCBs just arrived from OSH Park, to be assembled and tested later this week. This is a self-powered Class-D speaker output to audio line level signal converter, called a ‘DI’ in pro audio-speak. It pirates the power needed for its dual op-amp analog circuitry from the incoming Class-D speaker signal. Looking forward to directly connecting the speaker output from a PyPortal or PyBadge or PyGamer to a guitar amp or my DAW using this device.


16:34 @david.glaude: (text only):
* Pico DV base week:
   * Wanting to make noise (synthio) without involving my soldering from last week, I used my Pico DV (from Pimoroni) that add DVI+SDcard+I2S+3Button to a standard Pico.
   * After hours of testing with two separates Pico and the firmware could not load, I decided to file an issue.
   * @Dan quickly found the bug and fixed, while @RetiredWizard confirmed it working, the PR is now in 8.2.4
   * Tested a few code sample from Tod
   * Implemented “My Pico DV Base 3 buttons drums” https://gist.github.com/dglaude/36f540a2b2776b69901c1ab908410e65 but it is mostly usage of @gamblor21 drums.py


17:17 @DJDevon3 (text only)
* Got 4 matrix panels up and running with the MatrixPortal S3 this week. It’s 128px X 64px squished down version of my feather weather script. Highest bit depth I could achieve without artifacts is a 4-bit color background image. I don’t think a single MatrixPortal S3 will drive more than 4 panels with a reasonable bit_depth for displaying an image. I’m not even close to approaching the ram limitation so it has to be a CPU or bus limitation. Plan to experiment with an iMX driving the panels next. 
* Finally had a reason to use CGrover’s PaletteFader library to dim an image layer with DisplayIO. I’m sure it works amazing on TFT’s but also works pretty well on matrix panels too.


18:02 @foamyguy
* Worked on a web “Capture The Flag” exercise in which a user can hunt for various flags that are scattered around a small and intentionally vulnerable web application. These types of CTF exercises are common in cybersecurity. I thought  it would be fun to make one with CircuitPython using the HTTPServer library. 
* Getting back into library reviews, tested out a few over the weekend that included new examples for various libraries. Digging into an issue that RTD is reporting on a docs build for matrix portal multiple libraries. 
* Following up on typing PRs that stalled to try to get them finished up
* Test out the gzip PR from core
* Filling in for Deep Dive on Friday


20:31 @jepler
* Documentation build fixes in cirucitpython (readthedocs is getting rid of old compatibility stuff and it bites us sometimes)
* Documentation improvement for RGBMatrix, canio (pointer for people with feather can, which does not use canio)
* Merged 8.2.x to main, want to do it again already because of the doc build fix
* Added “multicast UDP” constants to socketpool, it helped todbot with a project
* Merged & reviewed PRs
* Lcd display work on wednesday and thursday but no light yet
   * Seems to be a “DMA never starts” problem but hard to tell
   * Can also look at arduino gfx source for initialization code
   * Limor suggests enabling double-buffering.
      *  We have the PSRAM available for most reasonable display sizes
      * Not sure if the current “framebuffer display” abstraction works well with double-buffering so I’ll probably target single-buffering first in any case


21:42 @kattni
* Metro ESP32-S3 guide is live.
* Next up is the EYESPI Pi Beret guide


22:25 @makermelissa
* Last Week:
   * Worked on message board guide
* This week:
   * Finish up guide
   * Work on various GitHub issues


@michalpokusa (text only)
* Improvements to adafruit_httpserver: 301/302 Redirects, FormData.files, support for multiple headers with same name and cookies support for Request and Response


22:58 @tannewt
* Investigating issue @kattni found on S3 metro. We are resetting pins used for flash or ram.
* Working on updating sdkconfigs and the updater script for IDF 5 PR.
* Need to do some smoke tests on IDF 5 PR to verify we’re not missing used TLS settings.
* Out Friday and Monday for holiday weekend.
* Get keys to new office space and internet install on Thursday so likely offline. Goal is to work from there Tuesday next week. Will have lots to move still but less urgent.
* Thinking about storing many dev boards in shallow cardboard boxes that are custom sized for the Ikea kallax bookshelf.
26:41 ## In The Weeds


@david.glaude: (text only would like to hear the CP team opinion):
* To Paul the host: Feel free to stop reading anywhere, the summary should be sufficient to start the conversation, a lot of the pro and cons have been discussed in #circuitpython-dev channel.
* Summary: “It would be great to have a simpletest_code.py together with every board, either in adafruit/circuitpython or [or linked from] adafruit/circuitpython-org). With that piece of code, you could have a working demonstration of the sensor, led, button, … available on the board.”
* Just like you have at least one simpletest.py file in every library (either supported by Adafruit or in the community bundle), I would like to propose this optional simpletest_code.py test/demo code for each board.
* That file should cover the on board hardware feature and build-in sensor such as:
   * Button (is it Pull Up or Pull Down)
   * LED (is it inverted)
   * NeoPixel / DotStar (does it require Power)
   * PWM or I2S audio (what pin does what)
   * Display (via displayio)
   * microSD (if plugged)
   * …
* The file usage can be for quick testing of a new release or for quickly being bootstrapped in using the board by seeing working code.
* It can be provided by the Adafruit for their board or by the vendor, the maker or the community.
* It might be possible to automatically generate some test just based on pin’s name, but the idea is to only contain the code needed and embed the board specific knowledge, just like in a well done product guide that you find on the learn platforme from Adafruit, except that non Adafruit board can have their simpletest_code.py.
* It is complementary to CircuitPython Essentials (https://learn.adafruit.com/circuitpython-essentials) as it is directly working for the board with the right pin without having to tweak the code.
* The benefit of being in adafruit/circuitpython is that it can evolve with CP version (even if most of the features are rather stable). The benefit of being in adafruit/circuitpython-org is that it is available near the place where you download the firmware for your board.
* Argument against being in one of those adafruit repo is that Adafruit does not want to make it look like they support boards from other companies, so a 3rd party repository could work, but would lose all the benefits mentioned above.
* Somehow, you also need all the libraries to run that simpletest_code.py and I don’t really have a good solution, so I suggest this could be done with discotool autoinstall. Of course a zip file like for projects from the learn web site would be great, but I don’t want to make it complex.
* Trivia idea:
   * Such demo code did exist for Gemma M0 and Trinked M0 and you receive those two boards flashed with CP and working code.py + library… but that was hard to maintain, and the CP version quickly was out of date (3.0). Also the space becomes limited on (non express) M0 boards.
   * Some boards from Adafruit have an easy to use gigantic library that handles many aspects of the board, think PyPortal, MatrixPortal, … but the same hardware functionality can be enabled without those super libraries and just with more simple code. It would be interesting to have that pre-super-library code still available.


34:11 @michalpokusa (text only, would like to hear the CP team opinion)


* Idea: “repl.py” file, that would be automatically imported/executed on Ctrl-C when entering REPL, similarly to “boot.py” and “safemode.py” which run on specific events
   * I am not sure if I am alone in this but I often find myself manually importing multiple libs/files when debugging stuff, recently I started writing that to said “repl.py” and then importing only it to save time
   * Also it is a good place to define some functions useful during development but not during normal usage
   * Seems to me like a good fit to other files that have similar behavior
   * There is one risk I can see, if someone accidentally writes a code that crashed the MCU, one might get stuck in infinite loop of restarts
   * I believe the solution to that could be that if the MCU booted in safemode, the repl.py is ignored, thus preventing infinite restart loop 
40:07 ## Wrap-Up