Python, asyncio, libgpiod, and Pointless Blinking (glt24)

Published: April 6, 2024, noon

Python's lovely [asyncio](https://docs.python.org/3/library/asyncio.html) library allows me to write event-driven programs in a style that looks much like multithreaded code but isn't. Combining [asyncio](https://docs.python.org/3/library/asyncio.html) with the equally lovely [Linux GPIO subsystem](https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git) is just another logical step. In this talk I show what [asyncio](https://docs.python.org/3/library/asyncio.html) is, how [libgpiod](https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git) works, and how both are used to do pointless projects.\n\nContinuing the [story of pointlessly blinking lights](https://www.faschingbauer.me/about/site/work-in-progress/blink/glt2023/index.html) from my last year's talk, I show\n\n* How GPIO interrupts are configured to get notified of hardware button presses, and how this can look like in Python (hint: *generators*, and *iteration*).\n* How button-events can be used in an ``async`` programming style (hint: *asyncronous generators*, and ``async for``).\n* How this fits into the pointless project of blinking lights.\n\nAdditionally, I give an overview of async libraries that are more to the point, like\n\n* [Textual](https://textual.textualize.io), a terminal UI framework\n* [python-sdbus](https://github.com/python-sdbus/python-sdbus), the Python binding for the systemd D-Bus client implementation\n\n"Slide" material available on [my homepage](https://www.faschingbauer.me/about/site/work-in-progress/blink/glt2024/index.html)\nabout this event: https://pretalx.linuxtage.at/glt24/talk/7XWWLC/