The Python Foundation has really been amping up the real-time capabilities of Python with the new asyncio library. Asyncio enables Pythonistas to write code that is asynchronous, allowing for a more event-driven approach to writing software.
What platform would benefit more from this new tech than microcomputers like the Raspberry Pi, which are finding new life as lightweight, yet powerful IoT (Internet of Things) devices? In my never-ending quest to set up a feedback system in my office where light levels can be communicated to an automated shade setup, I figured this would be the very first step to get there.
I wanted to have a Raspberry Pi that checks the following boxes:
Raspbian is the go-to OS for Raspberry Pi. It has the most support on this hardware, and also runs the smoothest. It is a Linux Distro that is Debian-based, so a lot of the software packages you can install in Debian and Ubuntu are the same as the ones you can install on Raspbian.
PiBakery Route (Recommended)
Using a Python version manager like pyenv to install Python makes the process less a painful chore and more a pleasant pastime. Raspbian comes with Python 2.x and the package manager enables installing Python 3.4.x, but if we want to mess around with asyncio's fabulous async/await syntactic sugar, Python ≥3.5 is where it's at.
And that's it! Optionally, you can install something like virtualenvwrapper, but on lightweight platforms like the Pi, I tend to just install things directly, since it's unlikely I'll be using it for anything else.
At this point, you might be asking me, "Dean, why did you make me go through pyenv-installer to install Python 3.5 when Python 3.4 also has asyncio, albeit in a slightly diminished form?". Let me refer you to this page, which details all the ways in which asyncio is made even better with the availability of things like asynchronous context managers (because calling anything.close() directly is such a drag), async/await syntax, and other new goodness. Also, with PEP448, unpacking from lists and dicts is even better! Who wouldn't want that!
The Yeti team recently developed a new internal tool called "Yurt" - a command line application designed to streamline the process of setting up new code bases by incorporating our preferred preferences and patterns. Take a look at our article and video to learn how you can do the same!
Streamline workflows and boost productivity with AI powered software development! In this article and video seasoned software engineer James Feore discusses how how you can get the improve your development process with ChatGPT and Co-Pilot. Get ready to explore the transformative capabilities of Chat GPT for real-world applications.
Part of the Yeti Lunch and Learn series - our amazing developer, Resdan, gives a presentation on creating a reusable component library. Enjoy the video!