# CircuitPython Weekly for July 20, 2020

Video is available here [on YouTube](https://youtu.be/PDYe0vdqU-c) and [on diode.zone](https://diode.zone/videos/watch/389cc9e6-c557-484c-9e75-b4902ed3d1d7).


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 using the following link: https://raw.githubusercontent.com/adafruit/adafruit-circuitpython-weekly-meeting/master/meeting.ical for use with standard calendar applications or in your browser: https://open-web-calendar.herokuapp.com/calendar.html?url=https://raw.githubusercontent.com/adafruit/adafruit-circuitpython-weekly-meeting/master/meeting.ical


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.
## 4:27 Community News
### 5:07 Python events happening this coming week
#### EuroPython Conference July 23 - 26
EuroPython 2020 this year will be an online conference from July 23-26. The schedule is now available - Website.
Attending the conference days will require a ticket, participating in the sprint days will be free - EuroPython.
#### PyOhio 2020 July 25-26
The 13th annual PyOhio will be July 25-26, 2020. The online event will consist of 5 and 10-minute talks, sprints, and discussion - Events Overview and Registration.
### 6:02 An electronic security lock with CircuitPython and an Adafruit PyPortal
Build an electronic security lock for package delivery, securing physical documents, or granting access to a secret lab. This project uses AWS Serverless to create a touchscreen keypad lock that uses SMS to alert a recipient with a custom message and unlock code.
CircuitPython runs on an Adafruit PyPortal open-source IoT touch display. A relay wired to the PyPortal acts as an electronic switch to bridge power to an electronic solenoid lock - idk.dev.
### 6:49 CLUE Internet Data Display
With Adafruit's CLUE, CircuitPython and e-radionica's WiFibit, it's simple to fetch data from the Internet and show it on screen - Twitter and commented example code.
### 7:08 Using Real-time Clocks with CircuitPython
Jeff Epler has done a deep-dive into using the PCF8523 and DS3231 real-time clock circuits, which Adafruit sells in Feather form factor boards. Sample code is provided to detect which of these two boards may be connected to a CircuitPython host as they both use the same I2C address but different register layouts - Blog.
In a companion post, Jeff discusses calibrating the DS3231 and PCF8523 RTCs against a known frequency source - Blog.
### 8:02 Build a Custom Animated LED Sign Assembly - Part 2
Melissa demonstrates Part 2 of her Python-Powered Custom Animated LED Sign Series, covering the software setup of the sign, including how to get your Python script running upon starting the sign - YouTube.
### 8:32 Microsoft seeks a Senior Program Manager
Microsoft's Developer Division is looking a Senior Program Manager to help make Azure the best cloud for Python developers - Microsoft Careers and Twitter.
And for more jobs in Maker and tech industries, visit the Adafruit Jobs Board - it's free for you and companies to use - jobs.adafruit.com.
### 9:04 Coming Soon: CircuitPython Day
Adafruit has chosen September 9, 2020 (9/9/2020) as the snakiest day of this year for CircuitPython Day! Much more to come on events and happenings to include a CircuitPython team livestream, collaboration with hardware and software folks, and highlighting all things Python and Python on Hardware. More information will be forthcoming. Ideas? Send them via email to circuitpythonday@adafruit.com.
### 9:51 Newsletter
As always, please let us know of any *Python projects you create or see online. We’d love to have them in the newsletter. This week’s draft is here: https://github.com/adafruit/circuitpython-weekly-newsletter/blob/gh-pages/_drafts/2020-07-21-draft.md
## 10:22 State of CircuitPython, Libraries and Blinka
### 10:42 Overall
* 25 pull requests merged
  * 16 authors - kattni, jepler, georgebohnisch, deshipu, siddacious, makermelissa, tannewt, dherrada, dunkmann00, kmatch98, jerryneedell, razvanphp, fede2cr, dglaude, tinkeringtech, madgrizzle
  * 11 reviewers - kattni, jepler, FoamyGuy, siddacious, tannewt, dhalbert, rhooper, dherrada, ladyada, caternuson, makermelissa
* 21 closed issues by 11 people, 13 opened by 9 people


Overall: We’re getting there on 6.0. Jeff did the background task that was blocking it.  We want to let it soak for a few weeks.  Expect to see an unstable release this week and let us know if you encounter any issues.  However, we think it’s pretty stable.  
### 12:25 Core
* 6 pull requests merged
  * 4 authors - deshipu, tinkeringtech, jepler, tannewt
  * 3 reviewers - jepler, dhalbert, tannewt
* 15 open pull requests
  * https://github.com/adafruit/circuitpython/pull/2914 (Open 64 days)
  * https://github.com/adafruit/circuitpython/pull/2966 (Open 53 days)
  * https://github.com/adafruit/circuitpython/pull/3044 (Open 33 days)
  * https://github.com/adafruit/circuitpython/pull/3101 (Open 18 days)
  * https://github.com/adafruit/circuitpython/pull/3099 (Open 18 days)
  * https://github.com/adafruit/circuitpython/pull/3107 (Open 17 days)
  * https://github.com/adafruit/circuitpython/pull/3144 (Open 9 days)
  * https://github.com/adafruit/circuitpython/pull/3149 (Open 6 days)
  * https://github.com/adafruit/circuitpython/pull/3164 (Open 2 days)
  * https://github.com/adafruit/circuitpython/pull/3163 (Open 2 days)
  * https://github.com/adafruit/circuitpython/pull/3162 (Open 2 days)
  * https://github.com/adafruit/circuitpython/pull/3161 (Open 2 days)
  * https://github.com/adafruit/circuitpython/pull/3160 (Open 2 days)
  * https://github.com/adafruit/circuitpython/pull/3172 (Open 0 days)
  * https://github.com/adafruit/circuitpython/pull/3166 (Open 0 days)
* 4 closed issues by 4 people, 7 opened by 5 people
* 310 open issues
  * https://github.com/adafruit/circuitpython/issues
* 7 active milestones
  * 6.0.0: 10 open issues
  * 6.x.0 - Features: 2 open issues
  * 6.x.x - Bug Fixes: 3 open issues
  * 7.0.0: 3 open issues
  * Libraries: 11 open issues
  * Long term: 279 open issues
  * Support: 1 open issues
  * 1 issues not assigned a milestone


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


* Brief discussion of issue triage milestone vs label.
### 14:46 Libraries
* 17 pull requests merged
  * 12 authors - kattni, jepler, georgebohnisch, siddacious, dherrada, dunkmann00, kmatch98, jerryneedell, razvanphp, fede2cr, dglaude, madgrizzle
  * 9 reviewers - kattni, FoamyGuy, siddacious, tannewt, rhooper, dherrada, ladyada, caternuson, makermelissa
  * Merged pull requests:
    * https://github.com/adafruit/Adafruit_CircuitPython_BNO055/pull/52 (Days open: 13)
    * https://github.com/adafruit/Adafruit_CircuitPython_PM25/pull/3 (Days open: 6)
    * https://github.com/adafruit/Adafruit_CircuitPython_LED_Animation/pull/61 (Days open: 2)
    * https://github.com/adafruit/Adafruit_CircuitPython_BLE/pull/95 (Days open: 2)
    * https://github.com/adafruit/Adafruit_CircuitPython_Pypixelbuf/pull/23 (Days open: 2)
    * https://github.com/adafruit/Adafruit_CircuitPython_BME680/pull/30 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_BME680/pull/25 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_BME680/pull/27 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_Display_Text/pull/69 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_BNO055/pull/54 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_Pypixelbuf/pull/26 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_Fingerprint/pull/21 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_ServoKit/pull/21 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_PyPortal/pull/82 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_Register/pull/39 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_CircuitPlayground/pull/96 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_Bundle/pull/257 (Days open: 1)
* 14 closed issues by 7 people, 6 opened by 5 people
* https://circuitpython.org/contributing
  * 163 open issues
  * 5 good first issues
  * 39 open pull requests (Oldest: 560, Newest: 1)
Library updates in the last seven days:
**New Libraries**
 * [Adafruit_CircuitPython_AS7341](https://github.com/adafruit/Adafruit_CircuitPython_AS7341)
**Updated Libraries**
 * [Adafruit_CircuitPython_ImageLoad](https://github.com/adafruit/Adafruit_CircuitPython_ImageLoad)
 * [Adafruit_CircuitPython_Display_Text](https://github.com/adafruit/Adafruit_CircuitPython_Display_Text)
 * [Adafruit_CircuitPython_LED_Animation](https://github.com/adafruit/Adafruit_CircuitPython_LED_Animation)
 * [Adafruit_CircuitPython_BNO055](https://github.com/adafruit/Adafruit_CircuitPython_BNO055)
 * [Adafruit_CircuitPython_BLE](https://github.com/adafruit/Adafruit_CircuitPython_BLE)
 * [Adafruit_CircuitPython_Pypixelbuf](https://github.com/adafruit/Adafruit_CircuitPython_Pypixelbuf)
 * [Adafruit_CircuitPython_Fingerprint](https://github.com/adafruit/Adafruit_CircuitPython_Fingerprint)
 * [Adafruit_CircuitPython_ServoKit](https://github.com/adafruit/Adafruit_CircuitPython_ServoKit)
 * [Adafruit_CircuitPython_Register](https://github.com/adafruit/Adafruit_CircuitPython_Register)
 * [circuitpython](https://github.com/adafruit/circuitpython)
 * [Adafruit_Blinka](https://github.com/adafruit/Adafruit_Blinka)
 
### 17:14 Blinka
* 2 pull requests merged
  * 1 authors - makermelissa
  * 3 reviewers - kattni, makermelissa, ladyada
* 2 open pull requests
  * https://github.com/adafruit/Adafruit_Blinka/pull/304 (Open 42 days)
  * https://github.com/adafruit/Adafruit_Blinka/pull/316 (Open 10 days)
* 3 closed issues by 2 people, 0 opened by 0 people
* 23 open issues
  * https://github.com/adafruit/Adafruit_Blinka/issues
* PyPI Downloads in the last week: 1503
Number of supported boards: 52

## 18:06 Hug reports


19:03 @tannewt
* @warriorofwire for displayio and async thoughts. @foamyguy for jumping in and trying vectorio
* @pt and @ladyada for always doing the right thing even when it’s hard
* @ckyiu and @matthijs for helping in #circuitpython


@v923z [lurking]

@Andrew Tribble (Lurking)
* Group Hug


@anecdata (lurking)


@Anne B (lurking)


19:53 @brentru
* @kattni for air quality sensor work - going to do a project with it soon!
* Community moderators
* @foamyguy and all those working on displayio text libraries
* @tannewt Broadcastnet, networking lib. API work
* @jerryn for still pushing ahead on the rfm9x size issue!


@cater (lurking)


@CGrover (just listening today)


20:46 @charlesburnaford
* Hug to @tannewt for deep dives
* Group hug


21:16 @danh
* @DavePutz for doing thorough testing of longint background task fix
* @jepler for really thorough thinking-through of the background task list PR
* @stargirl for becoming an expert on SAMD51 ADC
23:26 @Dave P
* Hug report to Scott for the recommendation to use         a logic analyzer
* To Dan for taking the time to help figure out weird timing issues where adding code made it run faster
* Group hug to all


23:57 @DavidGlaude (lurking)
* @kattni for work and review on PMS 5003 air quality sensor
* @tannewt for BroadcastNet and @JohnPark for the learn guide
* @tannewt for live broadcasting an internet major failure and continue to code


24:30 @deshipu
* @danh for reviews
* @tannewt for Friday streams
* @hierophect for work on STM32
* @stargirl for squeezing more from the hardware
* @jepler for the work on background tasks


@erdmmic26 (assuming lurking)


26:18 @foamyguy
* @kmatch98 for helping with and testing display_text changes, and many great discussions around it.
* @warriorofwire for their initial work on vectorio as well as jumping in to help me learn how to use it and fix a few issues that I found.
* Github user @gfbarros for pointing out an issue with the Progress Bar library
* Scott for looking into it and verifying my thoughts about the cause.


27:25 @hierophect
* @jepler for reviews
* @deshipu, @stargirl, @iotpanic, @shurik and @madbodger for their helpful tips on PCBs
* @arturo for parts advice


@JacobT (lurking)


28:11 @jasonp (lurking)
* @tannewt for the custom board lib guidance last week


28:38 @jepler
* Group hug
* @danh and @tannewt for reviews
* @danh again for working with me on a particular nRF wrinkle
* @foamyguy for reporting a problem that was due to background tasks stuff
* @foamyguy again for concentrating on displayio text


29:38 @jerryn
* Group hug -- this really is a great community - as a moderator, sometimes the problem users tarnish the atmosphere, but it is uplifting to see all the great help that is being provided across the channels. 
* @ladyada for the quick response and tips on how to get the R503 fingerprint sensor working under CP.


30:34 @kattni
* @siddacious for helping a community member out with a weird sensor issue in the #help-with-circuitpython channel
* @Mr Certainly for updating the #welcome channel with the new info, and making the rest of it significantly more readable
* @jepler for continuing to work towards running this meeting
* @Anne B for putting together the original-sized images used in the newsletter for me for the newsletter video.
* @siddacious for the suggestion to solder a STEMMA QT cable onto my Metro Mini to have a perma-STEMMA connectable Arduino board
* @community helpers on Discord for always being available and willing to look into everything
* @community moderators for staying on top of keeping our Discord community amazing, and everything that involves
* Group hug


32:05 @kmatch98 text only
* @foamyguy for your diligence on display_text to give it more capability and accuracy.
* @kjw for finding a performance issue with backgrounds on BuiltinFont with display_text
* Thanks for everyone being cool and positive in crazy times. It’s good to have a safe harbor!


32:45 @MakerMelissa:
* @kmatch98 and @foamyguy for working on improving the Display Text library
* Group Hug


@Mark(Gamblor) lurking


@Mr. Certainly [lurking]


32:59 @stargirl
* Group hug - this is the best community. :)

## 33:42 Status Updates

34:05 @tannewt
* Got a number of PRs out on Friday I need to follow up on.
* Added memorymonitor.AllocationSize and AllocationAlarm for easier debugging of memory issues.
* Added .find to bytearray.
* Disabled native networking.
* Enabled PYSTACK to prevent function state from hitting the heap.


@v923z [lurking]

@Andrew Tribble (Lurking)


@anecdata (lurking)


@Anne B (lurking)


37:00 @brentru
* Evaluating nanopb (plain-c implementation of protocol buffers for embedded/resource-constrained systems) library on Arduino


@cater (lurking)


@CGrover (just listening today)


@charlesburnaford (lurking for updates)


37:55 @danh
* HCI _bleio advertising works fine now. Extended advertising is not available.
* Now working on ATT (attribute) protocol, which sadly is not implemented by the HCI adapter directly. I’m converting the ArdiunoBLE ATT code to C and using its basic structure.
* Did a usual bunch of reviews.


39:42 @Dave P
* This week: Working on my PR for long running computations 
* Read and understand the changes to background tasks


40:12 @DavidGlaude (lurking)
* Provided PR for PM25 UART to be more reliable on reading error.
* Started to take a look at how to use BroadcastNet to communicate from EnviroPlus FeatherWing to Adafruit.io.
* Wrote a python script to update my lib folder: https://gist.github.com/dglaude/f5f3423288861bc44fe758212dbaac61
* Investigating ps2io (for PS2 keyboard input), but it only exist on M4.


41:03 @deshipu
* Rewrote the pew library and menu for PewPew M4, freeing ~5kB flash. Enabled AnalogIO on it.
* PewPew 10 and PewPew M4 should last longer on battery now, with lowered brownout protection voltage threshold.
* The USB-C version of Fluff M0 works and is actually used by other people now, working on a micro-USB version, because not everyone has USB-C.


@erdmmic26 (assuming lurking?)


42:15 @foamyguy
* Progress Bar library update for more consistent drawing performance
* Continued work on display_text library around background color and different font types
* Found and dove into the vectorio module
        Next week
* Design and print shaped “neon” neopixel strip holder
* Play with some of the micro:bit addons with CLUE
* Try out the Pew Pew M4 updates


44:06 @hierophect
* Last week:
   * Protomatter reworks
   * RGBMatrix testing
   * Installing the toolchains for the ESP32-S2 and testing modules as a control
   * PulseIO on the ESP32-S2
* This week
   * Wrap up PWMOut for the ESP32-S2
   * Start on PulseOut and PulseIn
   * Clean up timer PR to fix suggestions
   * More custom PCB work


@JacobT (lurking)


@jasonp (lurking)


45:34 @jepler
* Last week:
   * Background task PR merged, yay!
   * Two smaller PRs on esp32s2, yay!
   * Improvements to some libraries, fun to swim on that side of the pool for a change
   * Write a couple of CircuitPython blog posts over the weekend on my personal blog: https://emergent.unpythonic.net/
   * Reviews, community help, show&tell, circuitpython clock project
   * After a substantial delay, the new page https://circuitpython.org/contributing/wIeblate has been added
* This week:
   * At least two background task bugs to fix, may be PR’d by the time you read this
   * Returning to SDIO: wrapping up stm32, writing documentation
   * Major new task after that TBD
   * At least one more blog post, showing the clock itself
   * Reviews, community help, etc


47:23 @jerryn
* Updated fingerprint library to work with the new R503 sensor.
* RFM9x build status.
   *  I had hoped to switch to bitbang for the DHT on the M0_RFM9x board since I have to remove pulseio to get the library “frozen” but it is not working for M0 (or M4) -- more “in the weeds”
   * Have a build with many modules removed (analogio, pulseio, neipixel_write, hid, midi, touch)
   * Followup “in  the weeds” if general interest - otherwise can discuss anytime on Discord.


49:10 @kattni
* Last week:
   * Updated BMP280 guide to include the new STEMMA QT version
   * Fritzing diagrams added to PCF8591 guide, and object updated
   * Worked with PT and the team to put together a section for the #welcome channel explaining Adafruit and the Adafruit Discord server
   * Updated the CircuitPython on Linux and Raspberry Pi guide to include PWM, including pulsing an LED and controlling a servo.
   * Updated the Servos with CircuitPython guide to include Raspberry Pi references
   * Completed the PMSA300I guide and put it into the moderation queue.
   * Updated the PM2.5 guide to use the new PM25 library for both CircuitPython and Arduino
   * Moved the first CircuitPython library from `master` to `main` default branch - Adafruit CircuitPython CircuitPlayground
   * Started updating the Contributing to CircuitPython with Git and GitHub guide to reflect the in-progress move from `master` to `main`. 
   * Realised the Git/Hub guide is deeply out of date and needs to be updated. 
      * It still refers to the old GitHub UI which it turns out was a more significant change than I realised (I adapted to it without really registering it), and to TravisCI. Much of the UI is the same, but there were a few small but significant changes that need to be addressed, as well as the move to Actions and using Black.
* This week:
   * Fritzing diagrams for BH1750 guide.
   * Fritzing objects for ALL THE (NEW) THINGS.
   * Newsletter video
   * Update VL53L0X guide with STEMMA QT version
   * Hopefully updating the Git and GitHub guide - will need to go through the PR process again with the new UI, Actions, and Black.


55:40 @kmatch98 (text only)
Past week:
* Reviewed display_text updates
To do this week:
* Bundle up Sparkline library into a usable format with examples
* Learn how to build CP so I can tackle a minor bug with displayio Group.insert()
Other:
* Demo’d the all-mechanical 7-segment display counting 0 to 9. https://youtu.be/7nkcWKIuw_o
* Decide what mechanical project to restart (the self-rolling D12 die or the rope braiding machine)


56:28 @MakerMelissa
* Last Week:
   * Finished writing 2 guides on the eInk Display
   * Reviewed a guide page update from @kattni
   * Fixed the ImageReader library for arduino to work more efficiently with eInk displays
* This Week:
   * Work on a RGB Matrix version of PyPortal-type library


@Mr. Certainly [lurking]


57:07 @stargirl
* Wrote another blog post about the SAM D ADC. This time it’s about how to squeeze the most accuracy out of it. Planning one more post about using DMA with the ADC to measure multiple channels.
* Moving is taking up most of my time and now most of my equipment is packed away 😭

## 58:26 In The Weeds
58:58 Display_text improvements and documentation (@foamyguy @kmatch98)


1. We have made improvements to the capabilities for background highlighting, now both for BuiltInFont (terminalio.FONT) and loaded in “.BDF” style fonts. The added options and complexity now warrants some additional documentation. Would this fit in an update to the label learn guide?


* Ping Kattni to get added as contributor to the page, and you can update it.






Maybe here:
https://learn.adafruit.com/circuitpython-display-support-using-displayio/text


2. 1:01:21 We have created a “TextMap” library that uses less memory for displaying text. In contrast to the current version of label.py that uses a collection of tileGrids, the TextMap places text glyphs into a bitmap buffer. This seems to use a lot less memory.  This new TextMap library is useful for applications where memory is tight or when text display is generally stagnant for a while.  In contrast the existing label.py library is good when portions of the text display are modified regularly and when there is plenty of memory. 


We’d like to discuss whether this TextMap library (or whatever we end up calling it) is desired to be added as a parallel option to the existing label.py. 


If so, this will now be more complex to users since there are two options of creating text. 


display_text Questions:
Should we add this new TextMap library?  
Does this make it too complex for the target audience?
If “GO”, what suggestions on making the API as similar between the two types?
How do we inform users on how to choose which to use and why?
What documentation is required to clarify the use of these? Where does this documentation fit?




1:04:24 @jerryn (if of general interest and time allows)
* DHT driver
   * Found that bitbang for the DHT sensors is not working for M0 or M4...have not tried others. Did it ever work on M0/M4? Is this a result of  the “low power” changes?  May only work now on RPi but even there it is not the default since Blinka now has Pulseio.  Do we care about it on CP boards? Is bitbang option in the DHT driver needed anymore -- are there some Blinka build that do not have Pulseio?
   * There are much better I2C options that can be used instead of  the DHTs. 
* 1:08:15 RFMxx builds
   * Is it worthwhile to create a really stripped down build for the m0_rfmxx boards?
   * Would not have analogio,pulseio,neopixel_write,hid,midi -- no DHT support.
   * It will handle many I2C and SPI Sensors, just not DHT.
   * Can a user who wants the full module set use m0_basic and “microcontroller.pin” to configure the non-exposed CS and RST pins?
   * This could be a “breaking” change for current users if they need any of the removed modules.


1:13:03 @deshipu
With the last upgrade of the Stage library, the main.py menu program on PewPew M4 needs to be upgraded, because it can no longer use the graphics that have been embedded in the library. Do we have a process for doing this? Would it be possible to include the filesystem in the UF2 file for the board (it doesn’t use external flash)? Should we just add a note and a link to the updated version to the circuitpython.org page of that board?


1:17:10 @Dave P
While doing some debugging of timing I found that compiling for an itrsybitsy m4 that using the -O2 compiler optimization option reduced the run time by 50%. Is it worth looking at different optimization options for platforms with larger flash memories?


1:25:50 @WarriorOfWire I can hop in voice if you want to talk async however I suspect we've already reached an understanding on what you expect; and I'm still unsure the upsides of the changes are worth furthering the divergence from micropython - so it's probably not something I'll try to do in the immediate future. I tried to increase async compatibility with cpython and found mpy/py compilation differences that seem surprising so I aborted it for now.


1:40:00
## 1:44:25 Wrap-Up
