Building that Perfect Quantified Self App: Notes to Developers, Part 1
After posting about my search for the best mobile app for self-tracking, I received several e-mails and DMs from developers, asking me to advise more on specifics of the “perfect” app. In response, I offered to write “notes for developers” from the end user perspective, describing the app just as I, Quantified-Self practitioner, imagine it. In this, and the following posts I will share these notes, along with more elaborate details, concrete examples, and even some monetization ideas. In other words, I will describe the app that I would have built myself, if I had necessary resources or skills. I hope that this post will be interesting not only to developers, but also to other folks involved in Quantified-Self movement.
If you recall, the first and foremost criteria for the “perfect” Quantified-Self app was versatility. A lot of existing apps for self-tracking chose to focus on a particular niche: fitness, health, habits, mood, etc, thus limiting themselves to only one or two small sectors of the Quantified-Self movement. However, if you look at the QS blogs and sites, you will see that more than often self-tracking projects transcend the “topical” niches. When tracking physical fitness, people now want to see not only number of miles ran or calories burned, but how their performance is related to supplements taken, changes in mood and other psychological states and behaviors. The diet logs now are not just about counting calories, but also tracking allergies and more serious ailments, and effects of ingredients on mental and physical performance, or sleep. The happiness has been already tied to location, and will soon probably be linked to the weather, quality of sleep, or activities on Facebook. Just to give you an idea, here is the list of some variables that people might be interested in tracking, most likely at the same time:
- PHYSICAL ACTIVITIES: miles, steps, calories, repetitions, sets, METs
- DIET: calories consumed, carbs, fat, protein, specific ingredients, glycemic index, satiety, portions, supplement doses, tastiness, cost, location
- PSYCHOLOGICAL STATES & TRAITS: mood, happiness, irritation, emotions, anxiety, self-esteem, depression, confidence
- MENTAL & COGNITIVE STATES & TRAITS: IQ, alterness, focus, selective/sustained/divided attention, reaction, memory, verbal fluency, patience, creativity, reasoning, psychomotor vigilance
- ENVIRONMENTAL VARIABLES: location, architecture, weather, noise, pollution, clutter, light, season
- SITUATIONAL VARIABLES: context, situation, gratification of situation, time of day, day of week
- SOCIAL VARIABLES: influence, trust, charisma, karma, current role/status in the group or social network
This list can go on and on. You personally may know a variable or two that you don’t see on this list, but have been tracking yourself, or plan to track in the future. So why not just let users to define ANY variable they want? This is exactly what rTracker and Track & Share developers did. They even let you organize variables into higher-order customizable categories, which is very convenient. Image to the right: my log in rTracker; this is the list of categories that I currently measure in the morning.
Of course, being able to add any variable is just the first step. The users must be also able to pick the measurement scale that they deem appropriate. This is where the “customizability” criteria comes in. Let me quickly remind you what kind of scales are currently widely used out there:
- Numeric scale (e.g., weight, temperature, time)
- Time (date, time, in different formats)
- Binary scale (e.g., Yes/No)
- Mutually Exclusive Multiple-Choice Scale (a.k.a. radio-buttion, e.g. Sunny/Cloudy/Rain/Snow).
- Multiple-Choice Scale (a.k.a. check box, e.g., “weekend hung out with Lenny, Robert, John, Jim.. – check all that apply)
- Likert scales (n-point scales, e.g., 5-point scale Disagree Completely/Disagree Somewhat/Neutral/Agree Somewhat/Agree Completely)
- Open ended questions (a.k.a. text or text box)
- Location (could be name venue from Foursquare or actual coordinates)
In other words, I want to be able to record my weight in pounds or kilos as a number, rate my sleep quality on a n-point scale, and check off the list medications that I took this morning, all in the same app. Most of these scales are already offered in apps like rTracker and Track & Share, but offering even more options would be helpful. Image to the left is a screenshot of my log in rTracker; measuring psychological states using sliding scale.
Of course, sometimes we have no choice but to leave the measurement of certain variables to other apps and devices. For instance, I can look up the distance I walked or biked in RunKeeper, or amount of calories I burned while at the gym, and manually log that information into my tracking app. But why should I? Why can’t I just link my app to the Bodymedia app or Runkeeper (Instant Heart Rate, Zeo or Sleep Time, etc.) so data is appended automatically? In addition to convenience, imagine how many interesting insights you can get from such data mashups! So I would definitely enable data integration with Facebook, Twitter, Foursquare, Bodymedia, Runkeeper, and other web and mobile apps, to make user’s data even more rich.
Further, there are already hundreds of questions with scales out there that have been tested and validated by scientific and Quantified Self community. Why not enable users to build their logs by adding the questions from the open-source, peer-reviewed depository of QS tools?
Finally, while rTracker and TrackNShare allow you to create and modify variables right in the app, I also liked approach used by meTracker: you “build” your questionnaire on their website, and then track data using mobile app. This is particularly convenient if you are tracking a lot of variables.
Now about the actual process of logging data. If you are going to offer a mobile app for tracking, make sure that it is truly mobile. The user should not depend on a network connection or Wi-Fi, at least when recording data. The one of the weaknesses of meTracker was that I could not even open it while in the subway. That means that the app needs to be either native, or hybrid; web apps in the mobile browser won’t do. It would be even better if I could log my data both from my mobile phone and computer, depending on where I am right now. Let’s admit, most of us spend 6-7 hours in front of the computer anyway, especially those who work full-time. So it makes sense to make the app a cross-platform.
I will sign off for today. In my next post, I will discuss the analytical features of the app, and potential ways to monetize it. Stay tuned!