Tagging Time Spent


Continuing the discussion from Simplifying Beeminder:

My tagging is only semi-structured, which is probably right. No point spending much time agonising over what tag to use. Some of my tags are pretty consistent, others are all over the place, others become consistent. (The cntpings tool is good for exploring what you’ve tagged after the fact.)

I mark travel along with the activities that I’m travelling to do; so my daily commute would be tagged dj travel.

I tag time spent at work separately from time spent working. That’s important because most jobs contract you to N hours per week, not N insanely-productive hours per week. You may want to increase the latter, but almost certainly not to 100%. (As you’d expect, Beeminder is not like most jobs, so our meta graphs don’t just reflect time spent in the office.)

You can post-process tag files. I fix misspelled tags that way, add category tags (like fit if it sees run, swim, etc), and to add travelling abroad markers for specified time periods. (Note to self, get that on github. Done.) Mostly this means that if you notice a mistake later, it can be fixed, so even less stress in getting the tags exhaustively complete and correct when the ping happens.

Here’s the annotated output from my (hacked) ping-counter showing tags that took more than 4% of my time over the last year.

$ cntpings --year --four
11599 (362d11h15:00s) / 11599 (8699h15:00s ~ 8753h23:58s) = 100%
Start: 2013-11-13 00:00:00 WED  (pings before this: 10876)
  End: 2014-11-12 17:46:34 WED  (pings after this:  0)
  tag         pings  pct   total time  time/day  time/week
  *ALL*       11599 100% 362d11h15:00 23h51:01s 166h57:12s
  sleep        4006  35% 125d23h19:54  8h17:20s  58h01:22s    *asleep*
  dj           1199  10% 37d16h53:11s  2h28:51s  17h21:58s    *dayjob*
  arf          1121  10% 35d06h01:11s  2h19:10s  16h14:11s    *girlfriend*
  social       1056   9% 33d04h57:51s  2h11:06s  15h17:42s    *with folks*
  nnj          1030   9% 32d09h20:31s  2h07:52s  14h55:06s    *non-dayjob-jobs*
  abroad        639   6% 20d02h15:14s  1h19:19s   9h15:19s    *away from home*
  morning       569   5% 17d21h25:29s  1h10:38s   8h14:29s    *getting up/ready*
  badly         566   5% 17d19h09:38s  1h10:16s   8h11:52s    *subset of sleep*
  travel        554   5% 17d10h06:15s  1h08:46s   8h01:26s    *en route*
  fit           497   4% 15d15h05:10s  1h01:42s   7h11:54s    *fitness*
  eat           471   4% 14d19h27:50s    58:28s   6h49:19s    *lower bound*
  bmndr         440   4% 13d20h04:06s    54:37s   6h22:22s    *beeminder work*
  profdev       438   4% 13d18h33:32s    54:22s   6h20:38s    *learning*
  mtg           407   4% 12d19h09:47s    50:31s   5h53:41s    *meetings* :( 

n.b. I left my day job during the past year, so don’t read too much in to those values; my life patterns changed significantly!

Also, tags are not exclusive, so heading out to dinner with my girlfriend and some friends would be tagged arf eat social travel, and maybe walk too if that’s how we got there!

What you value is reflected in  p r e c i s e l y  how you spend your time.
—Tom Peters

@chelsea You’ll also slowly get used to the fact that Tagtime is random. Sometimes you’ll get pinged three times in a row, other times not for hours. And sometimes it’ll seem perverse. Just now I was writing a forum response that would’ve counted as bmndr (this one wouldn’t) and a friend came over; we chatted for less than 2 minutes, but when I turned back to my laptop I saw that I’d been pinged… social. Sigh. Just trust that, over time, it’ll build up a true picture. (And again. FFS. But now I know why a) working in coffee shops may be a bad idea, and b) I’ve got so much time racked up against social.)

A good approach to merge TagTime logs

thanks for the excellently detailed reply! i really do just need to get over my perfectionist tendencies and go for it – like you said, i can always edit later.

and i also need to figure out how to use it at work without lugging around my own laptop (no android here)…


@pjh, that’s gorgeous, can I have a copy of that script?

Even prettier: https://alexschell.shinyapps.io/tagtime-trends/

My pro tip for @chelsea, though no one else ever thinks this is a good idea, is to constrain yourself to 3-letter tags. It reduces the friction in answering pings, makes the layout on Android (where each tag gets a button) a lot nicer, and it turns out to to be plenty evocative. As a compromise, make tag name length inversely proportional to prevalence. Like really common activities get single-character tags.


@dreev I’ve committed that to https://github.com/pjjh/TagTime

The prettier output is in cntpings.pl & cntpings.sh, the tag post-processing is in settings.pl & merge.pl

Here’s my (less gorgeous) timeline of notionally productive time:

$ cntpings --timeline --nwo
  period      pings  pct   total time  time/day  time/week
  *week*         51 100%  1d14h15:00s  5h48:29s  40h39:25s
  *fortnight*   140 100%  4d09h00:00s  7h43:43s  54h06:05s
  *month*       283 100%  8d20h15:00s  6h55:48s  48h30:38s
  *quarter*     706 100% 22d01h30:00s  5h46:43s  40h27:06s
  *halfyear*   1372 100% 42d21h00:00s  5h36:13s  39h13:34s
  *year*       2788 100% 87d03h00:00s  5h44:07s  40h08:49s
  *ALL*        5238 100% 163d16h30:00  5h35:50s  39h10:56s

UPDATE: added another filtering option


FWIW, after some experiments I have an extremely simple tagtime structure: I only use tags that correspond directly to beeminder goals.

This is partly an artifact of the fact that it’s a complete nuisance to get data off the android app, but I’ve also found it usefully clarifying in terms of trying to decide what I care about tagging: It means that I only tag things where if the numbers turned out to be a certain way I would want to move them.

My current tags for this are: sitting, reading non-fiction books, being outside (the latter will archive in a week though). I used to have more but I’m currently engaged in an extremely harsh culling of my beeminder goals.


I started using tagtime by tagging roughly whatever I was engaged in. I realised after a while that what it was most useful for was figuring out whether I was (a) doing something, (b) half attending to something I was doing and half distracted or © just distracted. I deleted my logs and started again (I haven’t Beeminded it yet, I was experimenting) with just two tags, which would cover the three scenarios above. I noticed the above use when, on several occasions, I was pinged and realised I was distracted and needed to get back to work.


I also do something similar. I like to use the randomness to take a moment and just breath and be in the moment. I’m not beeminding it either, but I feel like I need to pair down some of the tags that aren’t that important.

I want it to be “Am I working on/doing something that I consciously chose” or “am I being an idiot just surfing around the internet.”


Agreed this is the best idea I have heard yet. I use rescuetime for my daily time tracking but tagtime could be really good for tracking your attention level