As an interaction designer working with data and connected devices, I’m interested in information displays that minimize context-switching, prioritization, and filtering (ie. not screen design). When I saw the score API by Software for Good, I immediately knew a scoreboard was in order.
I used a wifi-connected numeric LED display I made a year ago. This USB powered PCB uses Electric Imp for network connectivity and the microcontroller. I plugged it into a charger and stuck it above the TV.
For the data, I initially polled the API from the Imp’s agent and updated the score on the LED display. I finished the proof of concept as a game ended with a last-moment score, and the score ticked from 0–0 to 0–1. Success!
Independant from my TV, laptop, and phone, the device turned itself on when a game started and off when it was over. Even if I wasn’t watching a game, I could see the score. Was a team dominating in an expected evenly matched game? Were lopsided teams tied late in the second half? Registering the score sometimes prompted me to turn on a game and watch the final minutes.
This was a good start and I let the device run for a few games. However, the API is populated with data by scraping FIFA’s website every minute. With my device checking the API every minute it could be up to two minutes behind the live game. I could do better! Instead of an API to be polled, I wanted the data pushed to my device as it happened. I turned to Twitter, a treasure trove of unorganized data with a streaming API.
@FIFAWorldCup tweeted the scores including when a game commenced and concluded. The language was consistent making it easily parsable. LIVE and underway were clues that a game was starting and the score should be set to 0 — 0. GOAL followed by scores separated with a ‘dash’, 1 — 0, for the current score. And RESULT IN when the game was over and the display should be blanked.
Writing a quick and dirty Python script, I subscribed to Twitter’s streaming API for @FIFAWorldCup and checked each tweet for keywords. For the device, I created a webhook endpoint on the Imp for Python to push the score data to as goals happened.
The improved latency was significant. The delay was rarely more than a few seconds behind the TV feed and often ahead. One goal, I noticed, was more than a minute ahead of the ESPN broadcast. While not ideal, I was satisfied with the immediacy of the display showing real-time data.
Facts being shown moments before the supposed ‘live’ broadcast gave me a heightened awareness of delays through our digital infrastructure. I began to have a feeling of uncanniness to the game. With this device, I knew the future. During tense corner kicks I was at ease knowing the ball would end up in the net. When play was slow, I was clued in something big was about to happen. Obviously, no ‘live’ video or audio is ever happening at that exact moment, but I was surprised by the impact on watching a game with tension at its core.
This foretelling could be removed by better syncing the device to the broadcast. Querying geolocated tweets near a user for relevant hashtags would gather a consensus of the facts of the game. Comparing these to ‘official’ tweets allows us to hone in on a time-offset for the broadcast so realities can be merged.
Another issue throughout this experiment was an unclear context. We confront detailed information in the digital products we use throughout our day. Along with up to 140 characters, the minimal sharable content of a tweet contains the user’s handle, full name, avatar, tweet date, number of retweets, and number of favorites. These minimal data points help us understand the the message’s origin, raison d’être, and popularity even when the text content is obtuse. My rudimentary numeric display only has nowness for context. The user knows it is about something at this moment but must remember what data point is being displayed. As the tournament progressed and multiple games were played at once, there was no indication to which score was being displayed. Connected devices allow a configuration page accessible from the web to set priority for desired teams, but this added layer dilutes the core simplicity of a single function display.
This was a quick experiment that is far from being productized. Nonetheless, it shows the feasibility of devices that bring back glanceability and simultaneous users not afforded by handheld screens. Development of these connected devices is getting cheaper, both in cost and time. Maybe soon we’ll have some devices we desire in our lives.