One of the most difficult elements of creating the time tracker was deciding how to split up the way I categorise my time. At first, I was going to create a single log for a different category: One for coding, another for writing, etc. I realised that though these categorisations would prove useful in terms of numbers of hours, having so many would ruin the ability to quickly see the type of work I was doing. I decided to combine this category with a type in order to see the proportion of work that these categories fell into. The table below describes these types:

Where I apply skills I have learned from media consumption into notes and ongoing projects.Quality time I spend with people - events, meals and social events.Consuming content created by others including podcasts, books and movies/tv.General life duties including jobs, managing finances, and other miscellaneous tasks.


After defining the types and categories of my work, I needed a simple way to input daily logs that would feed into the time tracking dashboard. For this, I used the .csv format, as it is extremely straightforward and can be added in a frictionless way. At the end of each day, I will add a line in the following format:


For example, a log looks something like this:


For a day which has a number of separate categories, I will add several rows in order to capture each. This .csv is then synced to my GitHub account and pulled into a d3.js dashboard, which is hosted on ObservableHQ. Below is the dashboard, using dummy data for the year to demonstrate the final output. My actual dashboard is on my stats page but may not demonstrate the full capabilities of the dashboard, depending on how far through the year the logs currently show.

Sample output