Keep stats on your time.
Try it out on App Engine.
- all time
- today
- this week
- this month
- this year
- this day of the week
- this 10-minute time
- this 10-minute time on this day of the week
- minutes up to 24 hours (1440)
- Timer creates singleton with start time
- Timer writes end time and..
- Transactional insertion of reaper task with guid
- Reaper task updates dimensions 1-8 if guid doesn't match (idempotence)
- Deletes timer (reset)
Each dimension also records the number of contributing samples, average, median and the standard deviation. Dimensions 2-5 accumulate history (one Datastore entry per day, etc...) Dimensions 1 and 6-8 are singletons and accumulate over the lifetime of the timer.
Timers are namespaced by who is timing and what they are timing. A user cannot run multiple timers simultaneously, even if they are timing different things.