# CircuitPython Weekly Meeting for June 21st, 2022
Video is available [on YouTube](https://youtu.be/I6zxR0Nj1nU).


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:34 Community News
### 02:41 MicroPython 1.19 Released
 MicroPython 1.19 

MicroPython v1.19 was just released! The release has seen a big change to the format of MicroPython's .mpy files. These files - which contain precompiled bytecode - now contain mostly static data which is ready to execute without any changes (previously a lot of linking steps were required when importing .mpy files). This simplifies things and improves import speed, and most importantly will soon allow you to easily "freeze" precompiled bytecode into a linear filesystem, without needing to rebuild the main firmware. This dynamic freezing feature will be available in a future release.
There are many other enhancements, fixes and additions in v1.19, including a new port to Renesas RA microcontrollers. One neat addition is the ability to customise the REPL prompt (the >>> part) by setting sys.ps1 (and sys.ps2) to whatever string you like. This can be very useful to distinguish different boards, by making sys.ps1 unique on each of them. For example "D2> " on a PYBD-SF2, or "RP> " on a RP2040-based board - Release Notes, Changelog, Forum Post and Downloads.
### 03:24 Hackster.io Article on CircuitPython 8.0.0
 Articles on CircuitPython 8.0.0 

Hackster.io writes about CircuitPython 8.0.0 - hackster.io.
Shiny New CircuitPython 8.0.0 Alpha Brings New Board Support, Bug Fixes, and More, Offering support for new boards, including Adafruit's latest ESP32-S2 Feathers, CircuitPython 8.0.0 is ready for testing.
### Two Python "Cheat Sheets"
 Two Python "Cheat Sheets" 
 Two Python "Cheat Sheets" 











Here are two single page summaries of Python information, sometimes called "cheat sheets". Such sheets have been rather popular on this newsletter. Here are two new ones: a general Python 3 sheet and a list of Python questions that could come up in interviews. Check the links for higher resolution images of both - General Python 3 Sheet and Interview Sheet.
### 04:14 Project of the Week: The Cube of Rainbow Torment
Tod Kurt makes an inexpensive, blinky colorful RGB LED cube - Twitter.
The code is in CircuitPython and it's just barely fast enough to control the 64 * 6 RGB LEDs that make up the cube. The code running above is taken straight out of the Adafruit LED Animations Learn Guide.
### 04:45 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.
## 05:26 State of CircuitPython, Libraries and Blinka
### 05:44 Overall
* 25 pull requests merged
  * 15 authors - DavePutz, dhalbert, caternuson, evaherrada, JulianOrteil, bergdahl, ladyada, tekktrik, jepler, wtuemura, Neradoc, tannewt, gamblor21, omerk, weblate
  * 7 reviewers - dhalbert, caternuson, makermelissa, ladyada, FoamyGuy, tekktrik, tannewt
* 28 closed issues by 13 people, 16 opened by 14 people


### 06:08 Core
* 10 pull requests merged
  * 8 authors - DavePutz, dhalbert, bergdahl, jepler, wtuemura, tannewt, omerk, weblate
  * 3 reviewers - ladyada, tannewt, dhalbert
* 14 open pull requests
  * https://github.com/adafruit/circuitpython/pull/5352 (Open 278 days)
  * https://github.com/adafruit/circuitpython/pull/5999 (Open 131 days)
  * https://github.com/adafruit/circuitpython/pull/6037 (Open 125 days)
  * https://github.com/adafruit/circuitpython/pull/6119 (Open 107 days)
  * https://github.com/adafruit/circuitpython/pull/6217 (Open 80 days)
  * https://github.com/adafruit/circuitpython/pull/6247 (Open 76 days)
  * https://github.com/adafruit/circuitpython/pull/6256 (Open 75 days)
  * https://github.com/adafruit/circuitpython/pull/6349 (Open 47 days)
  * https://github.com/adafruit/circuitpython/pull/6397 (Open 37 days)
  * https://github.com/adafruit/circuitpython/pull/6410 (Open 32 days)
  * https://github.com/adafruit/circuitpython/pull/6458 (Open 17 days)
  * https://github.com/adafruit/circuitpython/pull/6492 (Open 4 days)
  * https://github.com/adafruit/circuitpython/pull/6508 (Open 0 days)
  * https://github.com/adafruit/circuitpython/pull/6506 (Open 0 days)
* 6 closed issues by 4 people, 8 opened by 6 people
* 525 open issues
  * https://github.com/adafruit/circuitpython/issues
* 5 active milestones
  * 7.3.x: 2 open issues
  * 8.0.0: 45 open issues
  * Libraries: 22 open issues
  * Long term: 451 open issues
  * Support: 0 open issues
  * 5 issues not assigned a milestone


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


### 07:44 Libraries
* 15 pull requests merged
  * 7 authors - gamblor21, tekktrik, Neradoc, caternuson, JulianOrteil, ladyada, evaherrada
  * 7 reviewers - tekktrik, tannewt, dhalbert, caternuson, makermelissa, ladyada, FoamyGuy
  * Merged pull requests:
    * https://github.com/adafruit/Adafruit_CircuitPython_MPR121/pull/34 (Days open: 14)
    * https://github.com/adafruit/Adafruit_CircuitPython_GPS/pull/80 (Days open: 3)
    * https://github.com/adafruit/Adafruit_CircuitPython_NeoPixel/pull/130 (Days open: 2)
    * https://github.com/adafruit/Adafruit_CircuitPython_VL53L4CD/pull/7 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_Colorsys/pull/21 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_Display_Text/pull/173 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_DS1307/pull/29 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_NeoTrellis/pull/19 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_PYOA/pull/33 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_GPS/pull/81 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_VC0706/pull/31 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_VC0706/pull/30 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_Logging/pull/31 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_seesaw/pull/104 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_NeoKey/pull/8 (Days open: 1)
  * 25 open pull requests (Oldest: 630, Newest: 2)
* 21 closed issues by 10 people, 7 opened by 7 people
  * 634 open issues
  * 183 good first issues
* https://circuitpython.org/contributing
Library updates in the last seven days:
**Updated Libraries**
 * [Adafruit_CircuitPython_DisplayIO_Layout](https://github.com/adafruit/Adafruit_CircuitPython_DisplayIO_Layout)
 * [Adafruit_CircuitPython_VL53L4CD](https://github.com/adafruit/Adafruit_CircuitPython_VL53L4CD)
 * [Adafruit_CircuitPython_Colorsys](https://github.com/adafruit/Adafruit_CircuitPython_Colorsys)
 * [Adafruit_CircuitPython_Display_Text](https://github.com/adafruit/Adafruit_CircuitPython_Display_Text)
 * [Adafruit_CircuitPython_DS1307](https://github.com/adafruit/Adafruit_CircuitPython_DS1307)
 * [Adafruit_CircuitPython_NeoTrellis](https://github.com/adafruit/Adafruit_CircuitPython_NeoTrellis)
 * [Adafruit_CircuitPython_PYOA](https://github.com/adafruit/Adafruit_CircuitPython_PYOA)
 * [Adafruit_CircuitPython_GPS](https://github.com/adafruit/Adafruit_CircuitPython_GPS)
 * [Adafruit_CircuitPython_VC0706](https://github.com/adafruit/Adafruit_CircuitPython_VC0706)
 * [Adafruit_CircuitPython_Logging](https://github.com/adafruit/Adafruit_CircuitPython_Logging)
 * [Adafruit_CircuitPython_seesaw](https://github.com/adafruit/Adafruit_CircuitPython_seesaw)
 * [Adafruit_CircuitPython_NeoKey](https://github.com/adafruit/Adafruit_CircuitPython_NeoKey)
 * [Adafruit_CircuitPython_MPR121](https://github.com/adafruit/Adafruit_CircuitPython_MPR121)
 * [Adafruit_CircuitPython_NeoPixel](https://github.com/adafruit/Adafruit_CircuitPython_NeoPixel)
 * [CircuitPython_Community_Bundle](https://github.com/adafruit/CircuitPython_Community_Bundle)


### 09:25 Blinka
* 0 pull requests merged
  * 0 authors - 
  * 0 reviewers - 
* 4 open pull requests
  * https://github.com/adafruit/Adafruit_Blinka/pull/417 (Open 496 days)
  * https://github.com/adafruit/Adafruit_Blinka/pull/496 (Open 330 days)
  * https://github.com/adafruit/Adafruit_Blinka_bleio/pull/40 (Open 256 days)
  * https://github.com/adafruit/Adafruit_Python_PlatformDetect/pull/201 (Open 196 days)
* 1 closed issues by 1 people, 1 opened by 1 people
* 76 open issues
  * https://github.com/adafruit/Adafruit_Blinka/issues
* Piwheels Downloads in the last month: 8579
Number of supported boards: 89






## 10:03 Hug reports
10:32 @kattni (hosting)
* @tekktrik for migrating all of the I2C Addresses guide data to Markdown on GitHub, and then updating the guide with GitHub embeds
* @foamyguy for writing up some code for me for a future project using the GitHub API.
* @jerryn for all of his help with the mailbox project
* @krayola for working really hard to update the mailbox code to do the last bits I wanted it to do, 
* Group hug!


11:34 @tannewt
* @NeraDoc, @gamblor and @foamyguy for getting the bundle fixed over the weekend.
* @foamyguy for banning a spammer over the weekend.


11:56 @tannewt (Status Update)
* Made really good progress on web workflow
   * Basic auth is working
   * MDNS and redirect is working
   * GET file works
   * GET directory HTML works
   * PUT directory makes a directory
   * PUT a file works
   * DELETE directory and file works
* Need to:
   * GET directory JSON
   * Basic Javascript to do upload, delete and mkdir from directory HTML


13:07 @BlitzCityDIY (text only)
* @kattni for all the help with the QT Py ESP32-S3 guide
* Group hug


13:17 @CGrover (text only)
* @cater for diving deeper into the NAU7802 Arduino library’s startup sequence to test timing of the chip rev register. Confirms the approach taken for the CircuitPython library.
* Group hug


13:35 @danh
* @DaveP for several fixes
* @Eva for jumping in to Discord support


13:50 @dglaude (lurking)
* Group hug
* @jepler for a beer and trusting me to be his guide for one of his holiday day
* @danh for the numerous release he handled while the other usual suspects were not present


14:05 @DaveP
* @tannewt for giving good guidance on how to handle a BLE disconnect issue.


14:27 @foamyguy (not attending today)
* Neradoc for reporting and fixing an issue with the generated mpy files in the bundle
* Scott for the initial work on the new webflow, very exciting possibilities.
* Github user @leftrightthere for submitting some improvements to the PyPortal Interface learn guide code


14:48 @jepler (text only)
* Group hug
* @dglaude for the chance to meet & for showing us around some of your hometown
* @danh congratulations on cracking that matrixportal bug!


15:04 @tekktrik (not present)
* @kattni for showing me how to use the Learn guide system to make changes to guides
* Group hug!
## 15:18 Status Updates
15:36 @kattni (hosting)
* Last week:
   * Helped out Liz with the QT Py ESP32-S3 guide
   * Guided Tekktrik through migrating and updating the I2C Addresses guide
   * Continued work on GitHub Profile guide
* Last weekend:
   * Mostly finished up the mailbox project - it’s been deployed! The receiver code still isn’t completely done, but the two bits are talking to each other over the distance and through the barriers. Hoping to finish it up this week.
* This week:
   * Catch up on email and various miscellaneous assignments
   * Finish up GitHub Profile guide
   * Update alert on I2C Addresses guide to instruct folks to submit PRs instead of guide feedback or forum posts.
   * Next guide is a GitHub Actions status tower light.


16:48 @CGrover (text only)
* The displayio object fader/normalizer project found a hard crash issue when displayio.Palette.make_transparent() was set outside of the palette index range. Negative numbers were the most problematic but surprisingly didn’t cause instant crashes. Submitted an issue describing the problem.
* Also submitted a wish list issue for adding two displayio.Palette property getters to help with palette management.
* Will wrap up a learning guide -like tutorial about the fader/normalizer project this week. It’s an intermediate level approach that uses some embedded code to support the new class, hence the need for a tutorial. 
* Ultimately, the fader/normalizer scheme could be the proof-of-concept for pushing palette and color brightness into the displayio core. Would be useful to have a tool that works like an audio track mixer for graphics objects and groups. It’s essential for brightness control of RGB LED matrix displays that lack hardware brightness control.
* The Father’s day pressure washer gift is a lovely hammer that makes everything look like a dirty nail. Only wish it had come with a bigger bow.


17:57 @danh
* Fixed non-atomic SAMD DMA setup, which was exacerbated by the large amount of time spent in an ISR in RGBMatrix (ProtoMatter). This seems to fix a large source of hangs on the MatrixPortal. Still need to look at some other ESP32SPI issues, but they are recoverable.
* Tested an ESP32-S3 I2C fix. It seems to fix the problem in test programs but not in CircuitPython. Need to figure out why.
* Backporting several fixes to 7.3.x so we can do a 7.3.1 release.
* Will be working on ESP32 (plain ESP32) support for CircuitPython, targeting the Feather ESP32 V2 first.


20:47 @dglaude (lurking)
* Made my first DigiKey order (mostly of Adafruit products), it seems like a good option for Europeans.
   * Replaced the screen of my CLUE
   * I now have a VL53L4CX that does NOT have a CP driver (maybe there need to be a visual way to identify products with/without a CP driver and with/without an Arduino driver)
* BBQ20KBD as a CP board (BlackBerry keyboard from @arturo182  / @solderparty)
   * Driving the I2C 128x128 OLED from the Stemma QT connector


21:22 @foamyguy (not attending today)
* Tested mpy fix for build tools that get used to make the bundles
* Tested MPR121 library typing PR that includes a different kind of type annotation that we haven’t used in other libraries yet. Both mpy-cross and the microcontroller run successfully with it.
* Started tinkering with web workflow functionality. During deep dive I got a basic editing page created and able to load the content from a file. Over the weekend I also got saving files to work and started integrating the Ace code editor module which brings syntax highlighting, line numbers and many other QoL features.
* This week
   * working on a PyGamer port of an old Nintendo Game & Watch style game called Octopus.
   * Test and review some improvements to PyPortal Interface learn guide project code.


22:12 @jepler (text only)
* Past weeks: vacation!
* This week: Wrapping up vacation
* Next week: Back to working on Adafruit stuff!


22:24 @tekktrik (not present)
* Last week:
   * Exposed adafruit_logging.Handler methods for customization like in CPython
   * Submitted PR to fix Learn guides using adafruit_logging
   * Documentation updates to libraries I had been meaning to get to
   * Moved the I2C address Learn guide contents to a GitHub repo
   * Turned the tools I made for adabot (checking CI and RTD docs build status) into CLI tools that could be used in CI builds for the bundle
* Next week:
   * Exploring introducing CLI tools to CI workflows
   * Adding more inter-linking documentation to the core.
   * Continue working on Bluefruit Connect image transfer feature addition
   * Looking at making a CircuitPython game for a month-long game jam, would be fun to build something on my PyGamer.  Going to look into what FeatherWings I have to get some add-ons I might end up using.  Will look into streaming the process as well, currently looking at doing one in November.


## 23:31 In The Weeds


23:55 @tekktrik (not present)
* Should we look at using GitHub’s Dependabot to keep track of library dependencies in the Bundle?  It might make tracking (or even pinning) inter-library dependencies easier to manage with regards to dependencies, since it auto-PRs dependent libraries.  I’d be happy to be the PR assignee to help keep track.  The two points are below:


        Using Dependabot:
        Dependabot is capable of being set to trigger for only major, minor, and/or patch revision updates per semver.  So for example, it can be combined with version requirements like dep_module==1.*, and only when dep_module gets to v2.0.0 would a PR be submitted and then approved (with changes to the library made if necessary).


        Pinning dependency versions:
        Pros:  Libraries being pinned at specific minimum version might make it easier to problem solve reported bugs/issues moving forward, would make it easy to update libraries whose dependencies have API breaking changes (like adafruit_logging recently)
        Cons:  Most libraries work fine without a minimum version, but they are also rarely dependent on other libraries (like adafruit_logging, adafruit_motor, etc. are), might cause some initial hiccups of reports when first implemented


        I would say there is benefit in setting up Dependabot as described in that block so things are always triggered for at least API breaking changes, optionally minor revs could be useful too for looking at optimizations.
## 28:41 Wrap-Up
Next meeting is at the normal time on Monday 27 June 2022, 2pmET/11amPT.
