In July, I showed the nearly feature-complete version of a project I’ve been tentatively called "iSelf". In August I managed to get all of the components you saw on the breadboard stuffed into a wearable case:
In the last full week of August, I took iSelf out for the first official test drive – wearing it on my belt while I was at work, and then downloaded the data in the evenings. About halfway through that week, though, I found that the download application I wrote wasn’t always able to finish correctly. In fact, there were times it wouldn’t even start downloading correctly. On those nights, I opened the case, popped the micro SD card out, and manually pulled the data off.
What I thought was a minor glitch turned into three solid weeks of troubleshooting, debugging, and refinement of both iSelf’s onboard program as well as the app I wrote to download the data. I finally got everything working this past Wednesday, so on Thursday the 17th I again wore it to work.
Everything was proceeding normally until it stopped recording about mid-day. I tried rebooting it several times, again thinking it was just a glitch. Nothing worked.
Between Thursday night and last night, I wrote a suite of diagnostic programs, testing each component until I found the problem. As it turns out, I had two. The micro SD card logger, OpenLog, stopped responding correctly to the initialization routine I wrote. I found through trial and error that it would still accept data in "write" mode, and would accept commands in "command" mode, so I modified the initialization routine to work around this issue.
Then I tested the BMP085 temperature/pressure sensor. I found it wasn’t sending any data any more, even after a reset.
With all of the components soldered onto the motherboard now, it was going to be extremely difficult to replace those components. Starting over from scratch would mean buying replacements for the Arduino Micro, the PowerBoost, the OpenLog, and a temperature/pressure sensor. It would mean at least another 10 hours of work to cut out new pieces of protoboard, and solder everything together again.
I left things last night depressed and a little angry. I had just gotten it working, after weeks of solving problem after problem, and had collected four hours of real data – only to have it fail. This project was 9 months of work – after my day job is done, after the house chores are done, after my kids are in bed.
9 months – lost.
Well – perhaps not completely lost.
I’m reminded of the story of a Foursquare-like check-in startup called "Burbn". In 2010, the founders got together to talk about its future. Burbn was having problems getting traction – problems of the sort that would shutter them permanently if they didn’t do something. They took a hard look at what they had built so far, and found that one particular piece of their service was actually being well-received. They decided to focus on that one piece and let the rest die. Years later, their photo-sharing application – called Instagram – was sold to Mark Zuckerberg for $1 billion.
One of the components I built for iSelf was a twice-an-hour survey that I give myself. This survey collects a number of data points about my mental or physiological state, or other topics that would be difficult to collect any other way:
This application has consistently worked well, and as a result I now have nearly 2 full months of data from it. I’m still collecting 11 different data points from it every day. Hmm…
After 8 hours of relatively good sleep last night, I remembered what my focus in this project really was: finding things that contribute to my headaches. The focus was not "to build a wearable". The analogy between Burbn and iSelf is clear – focus on what I’m getting traction with. (And if the analogy extends to me selling this down the road for a billion dollars – hey, all the better.)
My next task, then, is to get the raw data I’ve been collecting from the survey into a system where I can start formulating questions. Stay tuned.