# CircuitPython Weekly Meeting for January 16, 2024
Here is the notes document for next TUESDAY’s CircuitPython Weekly Meeting. It is at the normal time of 11am Pacific / 2pm US Eastern here on Discord. Add your hug reports and status updates to the document before the meeting. If you are unable to attend but would still like to contribute, feel free to add your 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 before the meeting, alphabetically by your username. During the meeting, we go through them in order. 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/0AiRXLfS2G4).


Join here for the chat all week: http://adafru.it/discord.


The CircuitPython Weekly Meeting normally is held at 2pm US 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 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. The canonical URL for the podcast version is https://adafruit-podcasts.s3.amazonaws.com/circuitpython_weekly_meeting/audio-podcast.xml which you may be able to enter directly into compatible podcast apps.
## 03:36 Community News
### 03:43 CircuitPython 2024 is Coming
As the year starts, it's time to share goals for CircuitPython in 2024 and beyond. Just like in past years, the CircuitPython team would like like everyone in the CircuitPython community to contribute by posting their thoughts to some public place on the internet. Keep an eye on the Adafruit Blog for the kickoff post from Scott Shawcroft and start gathering your thoughts to post on the social media platform of your choice with hashtag #CircuitPython2024.
### 04:12 New Episode of The CircuitPython Show Podcast
The CircuitPython Show is an independent podcast hosted by Paul Cutler, focusing on the people doing awesome things with CircuitPython. Each episode features Paul in conversation with a guest for a short interview – CircuitPython Show.
The latest episode was released January 15th and features CircuitPython core developer Jeff Epler. Jeff discusses his role as a core developer, adding jpegio support to CircuitPython, and the recent addition of over 2000 new fonts to CircuitPython.
### 04:53 Project of the Week: A Raspberry Pi Pico HAM Transmitter

Jon Dawson has created a HAM radio transmitter with a Raspberry Pi Pico. Dawson can transmit single-sideband, AM, FM, and even CW. It has a supported range of between 500 KHz and 30 MHz. The software for this Raspberry Pi project was created from scratch by Dawson and is written in both Python and C++ - Tom's Hardware, GitHub and YouTube.
### 05:39 Newsletter Details
The Python on Microcontrollers 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 or email cpnews@adafruit.com, or tag a post with #CircuitPython on Mastodon, Bluesky, or X (formerly known as Twitter),.
## 06:48 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.**
### 07:34 Overall
* 22 pull requests merged
  * 16 authors - AdamCummick, hexthat, how2flow, andibing, picospuch, makermelissa, us3r64, BlitzCityDIY, ilario, casainho, rgrizzell, bill88t, weblate, mahenzon, CedarGroveStudios, Saentis
  * 5 reviewers - dhalbert, BlitzCityDIY, silabs-ChatNguyen, makermelissa, tekktrik
* 10 closed issues by 6 people, 11 opened by 11 people


### 08:51 Core
* 3 pull requests merged
  * 6 authors - hexthat, bill88t, weblate, picospuch, andibing, Saentis
  * 2 reviewers - dhalbert, silabs-ChatNguyen
* 28 open pull requests
  * https://github.com/adafruit/circuitpython/pull/6555 (Open 560 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/7440 (Open 370 days)
  * https://github.com/adafruit/circuitpython/pull/7618 (Open 330 days)
  * https://github.com/adafruit/circuitpython/pull/7675 (Open 318 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/7811 (Open 292 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/7997 (Open 242 days)
  * https://github.com/adafruit/circuitpython/pull/7996 (Open 242 days)
  * https://github.com/adafruit/circuitpython/pull/8033 (Open 235 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8100 (Open 208 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8233 (Open 170 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8349 (Open 138 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8457 (Open 105 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8647 (Open 55 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8699 (Open 41 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8713 (Open 35 days)
  * https://github.com/adafruit/circuitpython/pull/8725 (Open 31 days)
  * https://github.com/adafruit/circuitpython/pull/8773 (Open 16 days)
  * https://github.com/adafruit/circuitpython/pull/8783 (Open 12 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8781 (Open 12 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8786 (Open 10 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8787 (Open 9 days)
  * https://github.com/adafruit/circuitpython/pull/8791 (Open 7 days)
  * https://github.com/adafruit/circuitpython/pull/8792 (Open 6 days)
  * https://github.com/adafruit/circuitpython/pull/8796 (Open 2 days)
  * https://github.com/adafruit/circuitpython/pull/8800 (Open 1 days)
  * https://github.com/adafruit/circuitpython/pull/8798 (Open 1 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8803 (Open 0 days)
  * https://github.com/adafruit/circuitpython/pull/8801 (Open 0 days)
* 0 closed issues by 0 people, 5 opened by 5 people
* 699 open issues
  * https://github.com/adafruit/circuitpython/issues
* 8 active milestones
 * 10.0.0: 2 open issues
 * 8.2.x: 0 open issues
 * 9.0.0: 49 open issues
 * 9.x.x: 7 open issues
 * Libraries: 23 open issues
 * Long term: 573 open issues
 * Support: 14 open issues
 * Third-party: 11 open issues
 * 18 issues not assigned a milestone


### 10:55 Libraries
* 16 pull requests merged
  * 10 authors - us3r64, BlitzCityDIY, AdamCummick, rgrizzell, CedarGroveStudios, prcutler, jposada202020, ilikecake, michalpokusa, TonyLHansen


 * 4 reviewers - tekktrik, dhalbert, FoamyGuy, BlitzCityDIY
  * Merged pull requests:
   * https://github.com/adafruit/Adafruit_CircuitPython_ADT7410/pull/24 (Days open: 209)
    * https://github.com/adafruit/Adafruit_CircuitPython_CLUE/pull/61 (Days open: 66)
    * https://github.com/adafruit/Adafruit_CircuitPython_TemplateEngine/pull/2 (Days open: 5)
    * https://github.com/adafruit/Adafruit_CircuitPython_24LC32/pull/23 (Days open: 2)
    * https://github.com/adafruit/Adafruit_CircuitPython_Wiznet5k/pull/134 (Days open: 27)
    * https://github.com/adafruit/Adafruit_CircuitPython_MCP3421/pull/4 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_MCP3421/pull/3 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_MCP3421/pull/2 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_MCP3421/pull/1 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_Wiznet5k/pull/137 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_Wiznet5k/pull/139 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_ESP32SPI/pull/185 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_ESP32SPI/pull/183 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_Bundle/pull/452 (Days open: 1)
    * https://github.com/adafruit/CircuitPython_Community_Bundle/pull/205 (Days open: 1)
    * https://github.com/adafruit/CircuitPython_Community_Bundle/pull/204 (Days open: 1)
  * 54 open pull requests (Oldest: 516, Newest: 2)
* 8 closed issues by 5 people, 5 opened by 5 people
  * 715 open issues
  * 19 good first issues
* https://circuitpython.org/contributing


#### 14:15 Library PyPI Weekly Download Stats
* **Total Library Stats**
  * 145042 PyPI downloads over 324 libraries
* **Top 10 Libraries by PyPI Downloads**
  * Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 9450
  * Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 9442
  * Adafruit CircuitPython Register (adafruit-circuitpython-register): 3263
  * Adafruit CircuitPython ADS1x15 (adafruit-circuitpython-ads1x15): 1323
  * Adafruit CircuitPython NeoPixel (adafruit-circuitpython-neopixel): 1294
  * Adafruit CircuitPython MiniMQTT (adafruit-circuitpython-minimqtt): 1227
  * Adafruit CircuitPython Pixelbuf (adafruit-circuitpython-pixelbuf): 1220
  * Adafruit CircuitPython DHT (adafruit-circuitpython-dht): 1165
  * Adafruit CircuitPython ESP32SPI (adafruit-circuitpython-esp32spi): 1157
  * Adafruit CircuitPython Display Text (adafruit-circuitpython-display-text): 1074


#### Library updates in the last seven days:
* **New Libraries**
  * [cedargrovestudios/circuitpython_waveviz](https://github.com/cedargrovestudios/circuitpython_waveviz)
* **Updated Libraries**
  * [adafruit/Adafruit_CircuitPython_ESP32SPI](https://github.com/adafruit/Adafruit_CircuitPython_ESP32SPI)
  * [cedargrovestudios/circuitpython_waveviz](https://github.com/cedargrovestudios/circuitpython_waveviz)
  * [tekktrik/CircuitPython_functools](https://github.com/tekktrik/CircuitPython_functools)


### 15:09 Blinka
* 7 pull requests merged
  * 5 authors - ilario, casainho, how2flow, mahenzon, makermelissa
  * 2 reviewers - makermelissa, tekktrik
* 7 open pull requests
  * https://github.com/adafruit/Adafruit_Blinka_bleio/pull/40 (Open 830 days)
  * https://github.com/adafruit/Adafruit_Blinka_bleio/pull/65 (Open 48 days)
  * https://github.com/adafruit/Adafruit_Blinka/pull/749 (Open 41 days)
  * https://github.com/adafruit/Adafruit_Blinka/pull/766 (Open 18 days) (draft)
  * https://github.com/adafruit/Adafruit_Python_PlatformDetect/pull/335 (Open 18 days) (draft)
  * https://github.com/adafruit/Adafruit_Blinka/pull/773 (Open 8 days)
  * https://github.com/adafruit/Adafruit_Python_PlatformDetect/pull/340 (Open 2 days)
* 2 closed issues by 1 people, 1 opened by 1 people
* 78 open issues
  * https://github.com/adafruit/Adafruit_Blinka/issues
* PyPI downloads in the last week: 14162
* Piwheels Downloads in the last month: 4496
Number of supported boards: 128






## 16:57 Hug reports
17:22 @foamyguy (hosting)
* Other meeting hosts for flexibility in hosting schedule and coordination
* Lady Ada for a new game / learn guide quest for 1D Pacman game on one of the Qualia looooong screens.
* Group Hug


18:02 @CGrover (text only)
* @jepler and @paulcutler for the most recent CircuitPython Show podcast. Reminded me of how much I’ve learned and applied from the @jepler Python collection. When I grow up, I hope to be as innovative and proficient a programmer as @jepler.
* @tekktrik for catching an error in a recent CommunityBundle submission.
* Group hug.


18:38 @danh
* @us3r64 (github) for fixing some long-standing issues in ESP32SPI and WizNet5k libraries
* @jepler for bitmapfilter image processing
* Welcome back @tannewt!


19:29 @DJDevon3
* FoamyGuy for live streams this week working on displayio.
* Paul Cutler & Jepler for a nice Circuit Python Show interview
* Group hug


20:02 @jepler (missing meeting)
* Welcome back hug for @tannewt – it’s not the same without you around
* Paul Cutler for having me as a guest on his podcast
* Group hug


20:23 @Liz
* @jepler for helping me get the MCP3421 library to pass CI
* @tannewt welcome back
* @todbot for bitmaptools rotozoom examples
* Group hug


20:48 @tannewt
* @foamyguy and @blitzcitydiy for being meeting hosts
* @jepler, @danh and everyone else for keeping things going while I was out. 
## 21:21 Status Updates
21:53 @foamyguy (hosting)
* Library PR reviews
* Chasing bugs in displayio or widget libraries. Working on getting FlipInput functional. After some bisecting of different core builds and trialing library version I’ve narrowed it down to FlipInput relying on behavior in Label that has since changed. Specifically around the way it manages the location of its TileGrid internally.
* Updated infrastructure for library in Circuitpython Org and made a first release for it to hopefully resolve the issues with that bundle. GH side of release successful but pypi side needs a bit more tinkering, something in the repo settings needs changed about using API token instead of user/pass authentication.
* Starting code and learn guide for “1D Chomper”. Clone of a web game that confines pacman to a single hallway moving only back and forth to escape the ghosts and collect pellets. It will be a natural fit on one of the very long qualia displays. I’ve been able to re-use some art and components from a different pacman game I worked on previously. I’ve started building out the “rough draft” version at first with Blinka_DisplayIO + PyGame display on my PC, and this morning moved to a different qualia screen with my sprites scaled down some to fit. Due to the easy displayio Group scaling I’m able to still work with a map that is logically the same size as the final one albeit smaller visibly on the display.


24:29 @CGrover (text only)
* Updated the WaveViz widget to plot any one-dimensional list, not just synthio wave tables.
* Working on WaveStore, a collection of helpers to store and retrieve synthio objects starting with wave tables, envelopes, and WaveViz bitmap icons. Hoping to eventually emulate the simplicity of @jepler’s font library approach so that stored synthio objects can easily be imported and used.
* Took a glance at display_shapes.Polygon and bitmaptools.Polygon to learn enough to suggest some improvements. Hoping to find a way to make polygon closure optional for display_shapes and to extend the 8-bit x-y coordinate value range for the bitmaptools version to accommodate full-screen polygons.
* Having fun assembling @JohnPark’s Faderwave project, but have to wait to finish until this week’s cold snap abates. The heat pump out there can’t sufficiently warm the workshop for soldering when the outside temp hovers around 10F.


25:58 @danh
* Tending to 9.0.0 issues.
* Arduino: diagnosed an analog pin problem with Arduino mbed core for Giga R1, for a user who was using our touchscreens and driver.
* Fixed some settings for ReadTheDocs/circuitpython-libraries integration.


27:50 @DJDevon3
* Worked on some performance issues with Feather Weather Touch. Appending displayio groups & labels only when visible dramatically reduces loading time. Hidden layers are fine for a few labels but multiply it by 100 labels and the performance difference becomes more obvious. The best GUI tip I’ve learned from this project thus far is if a group, layer, or label is not visible on a page it should be removed and only appended back when needed. With this type of displayio optimization, on an ESP32-S3 Feather with TFT Featherwing, the soft keyboard grid layout is generated as fast as a single screen refresh, almost instantly.


29:09 @jepler (missing meeting)
* I’m putting finishing touches on the “bitmapfilter” PR, will set it ready for review once I look over the docs one last time & the build is green
* Next up is implementing UVC (usb video camera) mode. Someone has done this on RP2040 with TinyUSB, so it should be possible. First will be a quick hack to see if it’s at all feasible. Most CircuitPython devices are limited to 12 megabit per second (12Mbit/s) over USB, so the framerate and quality of UVC mode is extremely limited, but it would be a cool tech demo for the Memento camera.
   * Ultimately this should work like a displayio framebuffer, I think


29:59 @Liz
* I worked on two new product guides: the cap touch TFT FeatherWing and the MCP3421 which is an 18-bit ADC. I also worked on some code for a NeoPixel fidget toy that Noe is working on this week. I was able to incorporate a paired down version of our NeoPixel run game, which we’d wanted to do a smaller version of for quite some time.
* Now I am back to working on the compass project. I had called it “done” before I went on vacation but as I was working on the guide I really didn’t like the UI so I’ve spent the past day kind of ripping it up and starting again. I like the direction its going in now though and I hope it will be a helpful example for folks for coding a compass and doing more complicated graphics with the round displays
* Not necessarily CircuitPython related but I had a chance to do my first jam with the modded cat piano with some spacy guitar pedals and it was everything I hoped it would be. The meow synth voice really comes alive with some reverb and delay. Definitely motivating me to work on the next phase of the mod that would control it via MIDI or CV (which would be CircuitPython.


31:25 @tannewt
* Back after visiting family. Getting caught up!
* Finish SD card over wifi and BLE PR.
* Make PR with additional kwarg for supporting 13.3” epaper display. Boolean to set pixel addressing instead of packing them into bytes.
* #CircuitPython2024 post


33:13 @tekktrik
* Library CI now announces the versions of pre-commit hooks being used, which will help in debugging specific related CI issues
* Looked into creating typing stub files for libraries, but PEP 561 doesn’t have a mechanism for marking modules as typed and distributing those typings, only for packages.  Pylance can be tricked into seeing them using the data-files field in pyproject.toml, but I couldn’t get mypy to do the same.
   * There is a draft PEP that would allow modules to provide their own stubs which hopefully gains traction.
   * This would allow us to remove the try/except block at the top of files by simply creating stub files and using mypy to enforce parity between them and the code.
Added the wraps functionality to my functools community library to help the iRobot’s Python SDK for Root and Create robots support CircuitPython.  It’s just a pass-through function so not a huge achievement, but always neat to see your code help build cool things!
* Looked back at my plan to make GitHub actions using rp2040js to estimate memory usage
   * I enjoyed getting to compile the Pico B2 bootrom so I can add it to the Action, which previously used the B1 bootrom.
   * I plan to create an action for comparing memory usage in the next couple weeks, as well as a proposed plan for how such functionality would be added to a repository.


## 35:21 In The Weeds




## 35:43 Wrap-Up
Next meeting 1/22/24 at normal time. See you there!