Gradually evolving my data entry interfaces

I’m interested in Quantified Self as a way to make better decisions through data. When I come up with a question I want to explore, I usually start off tracking things on paper or in a spreadsheet. This means I can get started quickly, and I can check whether the question is useful enough to invest in further.


I track my clothes to make it easier to simplify my wardrobe, and to guide my purchases.

I started by writing down dates and clothing combinations on an index card in the morning. Since my index card was unlined and my brain is pretty fuzzy early in the day, I occasionally had problems with incorrect dates or items not matching up. Eventually, I built a small Rails application (Quantified Awesome) to keep track of the clothes for me. Adding pictures made it easier to select the right item. Over time, I added little conveniences like the ability to display or sort by the last time I wore something.

I often find myself backdating entries, so maybe tracking my clothes isn’t as easy or as fun as it could be. I wonder if making it more prescriptive (“Pick one of these three outfits, or select what you’re going to wear”) would help, or maybe integrating it more into my morning routine.


I track my time to guide my activity decisions and remind me of how I used the time.

I used apps on my phone to track time for a few months. I started with Time Recording and a few categories, adding more as I went along. When the number of categories got to be a bit unwieldy, I moved on to Tap Log so that I could organize the buttons into a menu. Since it didn’t have the built-in time analysis I liked about Time Recording, I added time analysis tools to Quantified Awesome. After I added other features to Quantified Awesome, I shifted to using it as my time tracking and analysis tool.

For a while, I tracked time by bringing up the Quantified Awesome web interface on my phone and typing in a substring of a category name. Then I decided to look into building Emacs integration so that I could automatically clock in from my to-do list. To speed up time tracking on my phone, I used Tasker to create a menu of my most common time categories. Since fiddling with Tasker on my phone was time-consuming and a little annoying, I eventually shifted to using Tasker and Javascript. That way, I could edit my HTML file in Emacs, copy it onto my phone through Dropbox, and get my handy menu of buttons. Using Tasker also allowed me to code extra behaviour such as turning off WiFi when I go for a walk.

My next step is probably to build more time visualizations so I can see the shifts from day to day, week to week.


I track groceries so that I can make better decisions at the supermarket and so that I can get a sense of the balance and patterns of our consumption.

I started by typing in my receipts manually, but it was a little boring. I paid a virtual assistant to enter the data from my scanned receipts. This worked out to be better than the receipt scanning companies that were out there, since I could get line-item detail in a spreadsheet shared in Dropbox. I periodically reviewed the data, fixing errors and analyzing totals.

After some time doing this and quite a few errors in the data, I decided to build my own interface for entering data more reliably. Now that I’ve built my neat interactive interface, I find it faster (and more fun!) to enter the data in myself than to scan it and send it over. I’ve been digging into visualizing the data with D3 too.

Here’s a quick demo:

My next step is probably to build a grocery list interface for it. We’re currently using OurGroceries because it syncs well between my husband’s phone and mine, but I should be able to use either straight AJAX or WebSockets to get the synchronization part working.

So those are a few examples of how I slowly improve my tracking systems, rounding off rough edges and making things a little bit simpler for myself. Web programming is super helpful for me. Backend tools like Ruby on Rails allow me to build my own tracking tools and front-end tools like Javascript allow me to create personalized interfaces and visualizations.

I tend to code the next step of improvements only when something annoys me enough for me to do something about it or when a question makes me curious enough to want to investigate it. I’ve been deliberately working on my personal projects more often, though, and that might lead to more of these little improvements. We’ll see!

One Pingback/Trackback