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.)


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)…

1 Like

@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.

1 Like

@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

1 Like

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.”

1 Like

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

1 Like

[I know this thread’s old, but it seemed like the most appropriate place for these thoughts as I’m figuring out how to set up my TagTime categories.]

Given the calculations by @dreev in another thread that [quote=“dreev, post:6, topic:4012”]
If TagTime says you spent 220 hours there’s a 90% chance that’s within 10% of the truth
[/quote], then if, say, you only valued data that would give you that confidence level & margin of error at the end of a single year, there’d be no point in tracking anything on which you’d spend fewer than about 36 minutes a day on average (220 hours/year), right?

Most won’t actually value the information only if it’s at that confidence level etc., but it still might help with getting a little perspective about how to break things up. Knowing how much time is needed given the confidence level, etc. you want over the timeframe that matters to you seems like it can help in figuring out how to divide up tags into appropriately-sized categories, avoiding splitting larger categories into too many activities, which might be considerably less accurate anyway. (Likewise, knowing which things you absolutely want to be fairly accurate about might also be a good way of working out what interval works for you. E.g. if there’s a 10-minutes-per-day activity about which relative accuracy is particularly important to you, a 45-minute interval might not be the right fit.)

Anyway, assuming it’s year-end totals I care about, if I’m spending only 5 to 20 minutes per day on something, it’s probably not worth tracking as a separate tag, right? Am I being wrongheaded in my thinking here?


If there’s an activity about which relative accuracy is particularly important to you, maybe tagtime isn’t the right fit…

I use both a timer and tagtime. They’ve got different usefulnesses.

Good point about tag granularity! My tagtime log merging script also adds category tags, which means that I don’t have to remember to add them manually. Now that you mention it, this also means that my ‘work’ tag is a better indicator of hours worked than any of the individual client or project tags…

1 Like

That’s a strange thing to say… why would you say that? Over time tagtime will get very accurate. You just have to choose the correct interval for the amount of time you spend on the activity.

1 Like

Mathematically speaking, that’s correct. For any given volume of activity and desired confidence level over a time interval, there is a ping interval that will in theory get you that confidence.

But… the human cost might not be worth it, given that even the default 45 minute pingterval will sometimes result in multiple pings per minute. I find that more annoying to deal with than the long periods of pinglessness.

Worse, we’re not usually talking about a single activity, but about monitoring a number of activities that take different anticipated actual volumes of time. And yet, there’s only one ping interval, which means that your confidence in TagTime’s representation of the true elapsed time will also vary per task. An interval that works well for tracking one task may be too [in]frequent for another task.

I use both a timer and tagtime, but for different purposes, though sometimes for the same tasks. Neither approach subsumes the other.

In particular, I find it stressful to tie my Beeminder goals to the randomness of TagTime, so my goals are mostly timer-based, even if I use TagTime to look at the trends of time spent.

@drmaciver has outlined a brilliant approach to mix modes, so that you could switch between pings and a timer without invalidating the math.

1 Like

In the end, I decided to break my tracking up into larger categories, each with smaller sub-categories. The larger categories’ll be what’s most accurate over time, and will let me keep an eye on whether my time is balanced roughly the way I’d like, and the sub-categories can be just interesting extra info. with varying degrees of accuracy. We’ll see how that works out as I play with it.