Motivation
If you've been following my never-ending quest for a light-sensor setup as detailed first in this post (set up a Raspberry Pi with Python 3.5) and then in this other post (make a light sensor with an Arduino and Raspberry Pi), you would know that I've only set up the data-collection half of this project. The other half will involve getting the data to make hardware do stuff in the real world. This post in particular covers how to leverage a PUBSUB (publish-subscribe) Redis server and websockets to this purpose.

Motivation:
About three to six times a day, the sun decides to make life in our trendy, skylit San Francisco office ever so slightly painful for at least one of my colleagues, forcing them to get up and use a long metal rod to slide the fashionable skylight drapes shut. In my never-ending quest to make something in the IoT (Internet of Things) sphere that would remedy this perennial obstacle to productivity, I began with the data collection side of things. Sensors. I bought a fairly cheap Arduino-for-babies kit, grabbed the closest Raspberry Pi I could reach, and got started.

Motivation
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.

Years ago, while working on the second version of Weathermob — a social weather app — we made a mistake. The app had traction, but it also had flaws that we were correcting to help it reach the next level of growth. Rather than solicit user feedback on our new developments, we built and released the new iteration based on our assumptions about the product’s existing user base.
While the relaunch was a success, it did upset a small-but-vocal cohort of users. Small things like font size and interface changes, which we thought were improvements, frustrated a key user base: seniors who enjoyed talking about the weather.
We’d failed to do our homework, and we had to make last-minute changes to address the situation. Worse, we’d missed a big opportunity to show our users that we understood their needs.