In the summer of 2015, we decided to get takeout from a local Greek place. We were apparently not the only folks with the same idea. When I arrived, there was a line outside and all the seats in this small place were occupied. They apologized and told me my order would take about 20 more minutes. So I hopped back in the car and took a short drive around the neighborhoods south of Glassboro.
After passing several houses either for sale or just plain interesting from the curb, I realized that I needed an easy way to search my site based on my phone’s current location. The county roads in South Jersey all have variable names, often changing mile by mile. For example, Woodbury Road becomes “Woodbury-Glassboro Road” somewhere between Glassboro and Woodbury, and then eventually changes to Glassboro Road in Woodbury. The numbering resets at one point as well, which makes searching for a specific house difficult at times.
After dinner, I wrote down my thoughts on what I would need to put a location-based search together. That weekend in June, I implemented it as “Properties Around Me” and I included a cookie to conduct some basic tracking of how the search was used. The cookie has an expiration date of two weeks from the last request and it is only set if the user agrees to share his or her location. It’s a somewhat simple unique identifier, an MD5 hash of several user attributes. The two week expiration will allow me to link users that access the page at least once every two weeks and see their usage patterns. If you use the search less frequently (or use different devices or delete/block cookies) you’ll register as a new user with no history.
Here’s approximately seven months of usage, with the access points represented as linear features; each line is a separate user ID. Viewing the data this way tends to show some interesting patterns.
Excluding a user ID I know to be me, two users accessed the application over 250 times. The average user looks up 2.83 locations (out of 2,374 distinct userids, as of 2016-02-07) and for those that visit more than once, the average duration between their first and last visit is 2 days, 10 hours.
What was somewhat surprising was that the most commonly accessed time of day was within the 11PM hour. Concerned that some of my early testing might be influencing this, I also looked at just December 2015 to today. When limited to the smaller time period, the results are essentially the same: 206 lookups in the 9PM hour. The usage is predominantly after hours, with the hours of 9PM to 12 midnight (inclusive to 12:59AM). It drastically tails off with little usage in the 1 through 8AM hours.
Looking at the days of the week, Sunday holds the top spot, while second-highest is Wednesday. Again, looking at just the last two months and usage flips; Sunday is now third (366) after Monday and Tuesday (415, 397). Even the lowest day of the week, Friday, is not drastically lower than Monday, at 306 requests.
You may also notice in the map above that some of the lines extend outside of New Jersey. The web application itself does not make an API call if the location is outside of New Jersey’s extent rectangle. New Jersey is far from a rectangle, with much of the New York and Philadelphia metropolitan areas falling within the rectangle, but outside of the state.
Both of the points out in the Delaware Bay are single attempts by two distinct userids, so those individuals were likely underwhelmed by the application.
One shortcoming I realized somewhat after the fact is that most phones today provide the accuracy of the device position back to the geolocation object. I used this to show relative accuracy, using the faint blue circle buffer as a visual indicator. In a future revision, I am planning on passing that value as an additional parameter and size the selection buffer used in SQL accordingly.
Analyzing this data has also made me think differently about how sites can infer quite a bit about their users through location. Many of the requests, once mapped as lines instead of just points, can paint a picture of nosy neighbors looking up data while on a walk or visiting friends.
For reference, the distance between the top and bottom of the image above is approximately one mile. While the user above got around quite a bit within his or her neighborhood, the clustering of points at the top is likely because the individual left the page open on his or her phone and would bring it up while at home. One could argue, “making this data accessible makes it easy for someone to spy on their neighbors,” but ignores the fact that the technology that feeds us entertainment, news, and information is also helping others to compile rich data profiles on each of us.