Recently I suffered multiple keyboard-related Repetitive Strain Injuries. I tried several "forced break" tools to alleviate this condition but found I needed something smarter - I wanted a system that would help me stay "in the zone" when coding but still track posture info so that I could make frequent, small adjustments instead of just pausing after fixed amounts of time or typing. I also wanted a tool to help me track hand exercises I should be doing, which is why I brought in the Leap Motion sensor as part of this project.

How it works is designed to be highly affordable - it consists primarily of a magnet-sensing TI SensorTag that is affixed via Velcro to the back of a standard office chair, along with a thin adhesive magnetic strip that is placed on the back of a standard belt. The system communicates over Bluetooth Low Energy with an OS X application that then coordinates posture scoring and alerting. A dashboard icon is used as an initial indicator of bad posture, however a break alert will be scheduled to the user's Outlook calendar if this warning is ignored. A user can additionally perform hand exercises (tracked by an optional Leap Motion controller) which are counted positively in the overall scoring system.

Challenges I ran into

Finding an office chair on Craigslist in FiDi the day before the Hackathon and getting it up to Midtown in one piece

Coming up with a reasonably robust algorithm to track "bad" posture

Porting an open-source SensorTag communication library from working with iOS to working on OS X

Learning correct Outlook REST API time format to create a scheduled break at correct future time

Creating bridging headers for Leap Motion's XCode SDK so it could be fully used in a Swift-based project

Accomplishments that I'm proud of

Created a working prototype that I hope will become something real and truly help improve the posture and health of developers and office workers everywhere.

What I learned

Read the source! One can't always trust documentation, especially around Swift to Objective-C interoperability.

Test, test, test! Edge cases abound

What's next for

Trying to find other interested developers who could help me bring this technology to folks who could use it

Share this project: