William Darwin

Civil Engineer

Code surrounded by plant, clock and wall
Data input into my time tracking code prototype.

Time Tracking

Tracking my time is a pursuit I became interested around 2021. I have tried various methods, from paper journals to digital tools, but in each I found limitations that made them unsuitable for my needs. I have detailed some of the philosphy regarding why I believe this is a useful activity in my essay The Power of Time Tracking. This piece also expands upon my journey of reviewing existing home-grown time tracking tools and details the specific features, design and functionality I value in these tools—I encourage reading this essay before proceeding further as it provides valuable context. This project page is a more unstructured exploration of some prototypes and dashboards I created throughout the research journey in order to better understand my own time tracking needs, which I thought may be a valuable supplement to my writing.


Capturing Inputs

I knew that I eventually wanted to build out a dashboard view of my time, with some data visualisation software, but started with the basics. Version 1 of my time tracking included a simple, straightforward way to create multiple logs each day. I decided to use a .csv format, as I was very comfortable with the format and believed it was frictionless and universal enough to serve as a raw input format.

The initial format for a log is shown below:

DATE,DURATION,TYPE,CATEGORY,NOTES
01-01-21,3.0,Code,Development,Website

Even something as simple as this one entry has a number of decisions built in. I used a DD-MM-YY date format as that is the format I’m most comfortable with; I use a VSCode extension called Insert Date String which allows me to use Ctrl+Shift+I to insert the formatted date. I found that start and end dates were less useful to me (and more work) than simply adding a duration. I use this number and round to the nearest 0.5 hours for each log (less than that is usually not worth recording). I also like that rounding to one decimal point on each duration allows me to quickly see errors, due to the monospace font I use in VSCode.

Categories were basically created through trial and error—once I logged enough activities to see patterns in my work types, I formalised definitions and worked through old logs to unify them and ensure they were adequately captured in my category definitions.

The TYPE column was probably the hardest to decide upon, but each log is classified under one of four types of work:

  1. Code
  2. Writing
  3. Design
  4. Abstract

The first three captured the bulk of my time and abstract was kind of a catch-all for the rest. I was not totally happy with this setup, although it did work fairly well.

Version 1

The initial dashboard used data from an ObservableHQ notebook and is shown below:

Initial dashboard for time tracking
V1 dashboard, built in ObservableHQ

Version 2

The second iteration of the log was based on a customised version of Rostiger’s Logbook and looked as follows:

Version 2 dashboard for time tracking
V2 dashboard, based on Rostiger's Logbook code

I liked this a lot and almost ended up using this as my full-time solution, however having to input every hour of each day was quite an effort. An example of the type of code formatting required is shown below:

Example V2 code inputs
Example of input data required for V2 dashboard

I did really like the look of the ‘tags’ section of the logbook, and was looking to use this section with a simplified methodology moving forward. This was the start of iteration 3.

Version 3

Version 3 came about after writing a quarterly media review. In this summary, my media was controlled purely by summing the individual episodes, movies and podcasts to create an overall duration of time spent on each media type. The skills sections came from version 2 statistics. The result was a simple yet powerful overview of my previous 3 months tracking:

Version 3 dashboard
Version 3 dashboard

I feel that these versions may look from the outside as though they are moving backwards. The reality is that the best time tracking system for me is the one with the least amount of friction—I want to be tracking my time every day for many years so any improvements in efficiency can save a tremendous amount of time in the long-term. In any case, the above iterations are helpful as an exploration to understand what I value in a time tracking system and how I can best capture my time.