Ever since I read about "The Printable CEO", I've experimented with keeping
track of some personal metrics. Whilst the PCEO allowed me to keep a rough score
of how much work I was doing, I always felt that with a little tweaking it could
answer much more detailed questions.

Specifically, I wanted to be able to answer questions like:

What am I really spending my time doing?

Where am I wasting the most time?

What parts can I remove or automate to make me more efficient?

Once I started thinking about what I'd like to know, my brain started throwing
out way more questions:

Am I more effective in the morning, afternoon or night?

Does spending longer on the computer help me get more done?

How often should I take a break? For how long?

What websites waste my time the most? More importantly, does spending my
time on these sites make me feel happy or miserable?

How much does exercise do I do? What has the most effect on my weight? What
about on my mood?

What habits should I create to make me happier?

That's a lot of questions, but in essence what I really wanted to know was:

What can I do to be happier?

Perhaps that question is a little too big to be answered by a bunch of
numbers and charts,

I tried to take an approach that took work and play into account, rather than
just trying to wring another few minutes out of my day in the name of
"productivity".

Answering questions

Most of my work is based on the computer, so I naturally went for a technical
solution to all of this. To answer most questions, I needed to track the
following:

What I'm doing on the computer

My todo items (scheduled + completed)

Exercise + diet

My mood

Tracking computer usage

I've used RescueTime in the past to track time spent on the computer. Although
the Linux client doesn't get much love these days, it works well enough once
it's setup. RescueTime automatically collects statistics silently in the
background, so it's a pretty frictionless way of keeping tabs on things.

The RescueTime API provides plenty of ways to access information. The free
version doesn't give access to document titles, so you can't track which
websites you spend time on, but there's still enough information to build a good
profile of where your time is spent.

If you use Google Chrome as your browser you can access the history database
which is stored using SQLite. You still need to categorize sites into
positive/negative productivity, but it's a start. Chrome History in R is a good
place to start if you're interested in taking that route. I don't currently use
it to build any stats, but I may integrate it at some point.

Tracking TODO items

Of all the to-do software I've used over the years, I've found Emacs + Org Mode
suites my workflow the best. The learning curve is pretty steep, and it's
certainly an acquired taste, but it's extremely powerful and configurable. It's
probably the closest thing I've found to pen + paper, but with all the benefits
of being digital (searchable, queryable etc).

Emacs itself is incredibly flexible, and Org Mode can generate summaries of time
worked, along with a diary of work for each day. It can be extended with a
little Lisp knowledge, although I use Perl for extracting detailed information
as it has a few libraries for querying org files (and my Lisp knowledge is
pretty poor).

Tracking exercise + diet

This one was a little trickier. There's no shortage of exercise tracking
software, and wearable trackers are becoming even more prevalent. When I first
started a regular fitness programme I used Traineo to track things. It's pretty
nice to use, but there's no API which meant I couldn't access the data.

In the end I opted for the hacker approach and rolled my own solution. It didn't
need to do anything particularly complex, just track exercise done, the times
and calories burned. Org mode supports adding properties to any headline, so
it can be used as an ad-hoc database.

With a little bit of tweaking it possible to just hit a few keystrokes and
automatically insert your exercise.

Tracking my diet was the done in the same way. With a f keystrokes I can enter
any data I need.

A key point was NOT to make things too complicated, but to give enough data so
things can be charted.

Tracking mood

As with the exercise planning, Emacs was the winner here. The biggest problem
with tracking mood is it can be quite difficult to quantify. It's also relative
to how I've recently felt - much like temperature. 70f feels cold in summer but
warm in winter.

To begin with I tracked mood as a simple 1 - 10 scale, with 1 being miserable
and 10 being happy, but after a few days it became clear this wasn't going to be
as useful as I thought.

There's a lot more to be said about this, but for now I use two measurements:
positive/negative mood and relaxed/stressed.

Tools Used

I tried to keep things based around my current workflow. I use emacs org-mode
for most of my project management, so most of my manually tracked data is done
with org-mode.

Turning all the data into something human readable is a bit of a Rube Goldberg
experience. I use a Perl script to extract info from my org files so they can be
stored in an Sqlite database. A PHP script then generates the various HTML files
for monthly & yearly reports. It's not as elegant as I'd like, but it only takes
~60 seconds to generate all the reports and deploy them, so for now it's good
enough.

Publishing my Stats

I've just added a new guide to the site: Personal Development Blogs List. It's
a list of popular personal development blogs, ordered by their Alexa rank. I've
been pretty liberal with what can go on the list, and any blog that focuses on
helping other people to achieve more is a good fit.

At the moment there are just under 30 blogs on the list, but I hope to grow that
over time.

If you have a blog you'd like added to the list, just leave a comment and I'll
update things.