Who's in the Office? (Space-oriented Personal Location Sharing)
Most personal location sharing services are people oriented — the applications are designed for following specific people. For example, with Find my Friends, you can share your GPS location with selected contacts. Instead, what if a location sharing service were designed for following people’s presence in a single physical space?
Recently, I built and deployed a location sharing system designed for a particular physical space to solve a specific problem. I’m part of a student group called HackMIT, and we have an office in the student center where we like to hang out. However, it’s no fun to hang out in our office when nobody else is there, and it’s kind of awkward to always be asking “is anyone in the office?” on Slack. So we wanted a better way of knowing when people are there. Maybe this sounds slightly ridiculous, but it’s a real problem we had. Our solution was OffiX, a WiFi-based presence tracking system for our office.
Such a system that inverts traditional location tracking has some interesting properties. Based on feedback I’ve gotten, space-oriented systems feel less awkward to use than person-oriented systems. Furthermore, even though it’s an always-on system, the space-oriented system better respects people’s privacy, because their location is only shared when they’re in that specific place. Plus, in our case, people’s privacy is enforced by the physical limitations of the implementation: the system cannot possibly be used to track people outside the space.
Interface
OffiX was designed to require minimal effort to set up and use. We have a web interface for initial setup, where each individual creates an account and adds the wireless MAC addresses of their devices:
And that’s it! After that, people can see who is in the office by looking at the web interface:
We also have a Slack interface, so people usually end up using that over the web interface:
The Slack interface even has push notifications to #social
for new arrivals
to the office:
Implementation
The technology powering the system is quite simple. It uses WiFi for tracking presence, so it doesn’t require any sophisticated hardware. Here is how it works: every couple minutes, wireless-enabled devices broadcast a special type of 802.11 frame called a probe request. The frame includes the device’s MAC address, which is a globally unique identifier. Once people register the MAC addresses of their computer and phone to create an association between their identity and their devices’ addresses, it’s possible to monitor presence by passively monitoring WiFi signals. All it takes is a wireless card supporting monitor mode and a little bit of C code to extract the data. The physical setup is pretty simple, too:
Impact
Before deploying OffiX, my hypothesis was that people would visit the office a lot more often as a result of deploying the system. And luckily, it did turn out that way — OffiX actually had a pretty huge impact on the frequency of people hanging out in the office. Even when people knew the office was empty, they’d go there, knowing that others would hear about it and probably come hang out.
OffiX significantly increased office traffic, probably helped most by the Slack integration, especially the “$name is in the office!” announcements. Now I hear stories like this every so often: “I was walking by the student center, and I was going to go home, but then I saw that someone was in the office, so I went there to hang out”.
When I asked my friends about their thoughts on OffiX, they had some interesting things to say:
Source Code
As is the case with a lot of projects I work on, the source code for OffiX is available under a free software license. If you do anything cool with it, be sure to let me know!