Hackster is hosting Hackster Holidays, Ep. 6: Livestream & Giveaway Drawing. Watch previous episodes or stream live on Monday!Stream Hackster Holidays, Ep. 6 on Monday!

Shae Erisson's Adafruit MagTag FlowLight Tracks Programming Flow in Emacs to Dodge Disturbances

Inspired by a paper published in 2017, this DIY FlowLight tracks activity in Emacs and warns passersby when you're not to be disturbed.

Developer Shae Erisson has built a status system that aims to help maintain a state of "flow" during programming — by warning passersby when it's not a good time to drop in for a chat.

"I read [the paper] Reducing Interruptions at Work: A Large-Scale Field Study of FlowLight and built my own FlowLight," Erisson explains of the project's origins. "When I first heard about this paper from the second author, Chris Corley, he said something to the effect of 'the easiest way to detect if a programmer is in flow is to see if they’re typing into their programmer’s editor.' This is the approach I wanted to implement."

The state of "flow" is when you feel "in the zone," concentrating smoothly on the task at hand — and is easily interrupted by simple questions or even a quick greeting. While it's possible to read a user's brainwaves using an electroencephalograph (EEG) sensor and attempt to ascertain when the subject has entered such a state, there's an easier approach: if a programmer is actively typing, they're probably not to be disturbed.

Erisson's flowlight is a compact Adafruit MagTag, which pairs a 2.9" greyscale ePaper display with four buttons and four RGB LEDs. When the user is in a flow state, the LEDs illuminate read and the display reads "BUSY"; otherwise, the LEDs are green and the display reads "FREE."

"The original authors tracked keypresses and mouse clicks, but I want to do this entirely inside Emacs," Erisson writes of the way "flow" is tracked. "[An] idle timer waits for ten seconds, then appends the pair of (now,seconds-of-idle-time) to a list. The other timer runs every sixty seconds to calculate the status to send, and removes elements older than seven minutes. My MagTag board already has a case with an attached battery, and its own set of magnet feet, so I can stick it on the wall for anyone to see."

The project is detailed in full on Erisson's website with source code on GitHub under an unspecified open-source license; the original FlowLight paper, written by Manuela Züger and colleagues at the University of Zurich in partnership with ABB Corporate Research, was published in the Proceedings of the CHI Conference on Human Factors in Computing Systems 2017 (CHI '17) under closed-access terms; a PDF copy is available under open-access terms courtesy of the second author.

Gareth Halfacree
Freelance journalist, technical author, hacker, tinkerer, erstwhile sysadmin. For hire: freelance@halfacree.co.uk.
Latest articles
Sponsored articles
Related articles
Latest articles
Read more
Related articles