Using an Android app and a fitness tracker to train my sense of time

Sometimes I forget what time it is, or misjudge how much time in a day is left. This can be very inconvenient.

How to solve this issue?
Technology, of course.

I love approaches which place the intuitive mind in some kind of fast feedback loop. What I mean is things like this↗ fun app by Mikhail Samin. It plays a tone based on which way you’re facing. The idea is that this trains you to be aware of your cardinal direction, hopefully giving you a new sense.

Inspired by that, I decided to vibe code my own app. I’m using a Garmin fitness tracker. My initial idea was to have it buzz periodically, say every twenty minutes. That way, I receive a sort of clock pulse, which hopefully trains my brain to keep track of time.

The fitness tracker doesn’t come with a documented API, or firmware source code, which is to be expected but still sad. But I’m on Android, and thanks to the great folks working on Gadgetbridge↗, it is possible to use it without the Garmin app. And Gadgetbridge comes with an API. Unfortunately, it is still impossible to control the intensity and length of the buzzing. But, it is possible to create a short buzz and a long buzz, a short buzz by using notifications and a long buzz by abusing the “find my device” feature.

What do we need a long buzz for? Well, I would like to measure if my time perception is getting better at all. My solution is to periodically display a prompt asking me either what time it is or what percentage of my awake time has passed1 (covering everything else on the screen so I cannot see the clock). The arrival of this prompt is indicated by a long buzz. It is also possible to skip the prompt, which I do if I have accidentally seen a clock somewhere.

Of course, the periodic prompting also creates a feedback loop. I input some number, then see the clock on my lock screen. That is essentially deliberate practice with instant feedback. If I see an improvement, then it will be hard to say whether it came from the buzzing or the repeated prompts.
But I am mainly interested in the result here, so I’m accepting this drawback.

First image: screen to configure the app. Second and third image: the two prompts (percentage and time) I’m shown during the day.

Not much can be gleaned from the data yet. I have set it to show two time prompts and two percentage prompts per day. The time for these is rolled from a uniform distribution over all awake hours.

Since I’ve skipped a few prompts, the total is 22 percentage data points and 13 time data points. Not a lot of samples to draw conclusions from and not a lot of training time yet.

0 7 14 -60 -30 0 30 60 days error (minutes) 0 7 14 -10 0 10 days error (%day)

My prediction error over the days. The first diagram shows results from the time prompts, the second diagram from the percentage prompts.

But yes, you’re seeing this right. I seem to have gotten slightly worse! At least in the percentage guesses.

What I did notice is that I was paying more attention in the beginning. In fact, I might be not so bad at telling the time after all, if I make a conscious effort to detach myself from what I’m currently doing to estimate. However, this mental motion feels deeply unnatural to me. This might explain how I got worse over time: I got used to the prompts, which led me to do that mental motion less.

Furthermore, estimating actual time feels more unnatural than estimating what fraction of the day has passed. This might explain the difference in error distributions between the two different types of guesses2 (figure below). My percentage guesses are usually not far off and are more over- than underestimates. In contrast, the time distribution consists almost entirely of underestimates, with a few large outliers where I presumably was not paying attention.

-30 0 30 60 0 0.5 1 error (minutes) fraction of datapoints 0 10 0 0.5 1 error (%day) fraction of datapoints

Empirical CDFs from the data collected so far. The first diagram is from the time prompts, the second diagram from the percentage prompts. Note the outlier over-estimates in time prompts (i.e. me thinking it's far later than it is).

I will continue the experiment and post a follow-up in a month with more data. It will be interesting to see:

  • Whether I continue to get worse, or some learning effect sets in
  • Whether the two distributions stay meaningfully different
  • If I do improve, whether that causes me to feel like I have a better sense of time subjectively

  1. The awake time is defined from when I nominally get up (08:00) to when I nominally go to bed (24:00).↩︎

  2. And why I seem to skip time prompts more? I thought I was being honest in only skipping prompts when I saw the time already…↩︎