Tracking My Tasks
Modern day corporate warriors are all about productivity hacks and optimising their lives around Notion. A couple of months ago, I began using Google Tasks to track everything I need to do. Its mobile app makes it very easy for me to create and tick off completed tasks on the go, while on my desktop, I can open Google Tasks through Google Calendars. I like how I can link Google Tasks to Google Calendar by specifying a date and time to my tasks. In principle, this method weaves our tasks into our schedule, and allows us a more direct way to keep what tasks we need to perform. The simple integration to Google Calendar is the main reason I love using Google Tasks.
However, I do still have some pain points using it:
- I can create multiple lists on Google Tasks to represent different things, but there is no overview of all my tasks across all the lists.
- Completed tasks are just ticked off and hidden, and there is no way to evaluate them, especially across different projects. I wanted a way to review and optimise the progress of my various projects.
I knew the Python programming language can help me build on what I like about Google Tasks and customise it for my own needs. After a few months of tinkering, this is what I have done and achieved.
[ Success ] Google Tasks API
To have my Google Tasks tasks show on a better user interface, I need to extract them from Google Tasks in a scalable way, and the way I knew to do so is through the Google Task API. Fortunately, to authenticate and access my Google Tasks data through Python, I just needed to configure my service access rights from previous Google Projects to enable Google Tasks API access. This was done on the Google Developer Console. The Google Tasks API documentation was a bit confusing, but I managed to figure out how to get my tasks with some brute force API calls.
[ Success ] Optimising Tasks Creation on Google Tasks
Next, I restructured my tasks with three concepts - (1) themes, (2) projects and (3) tasks.
Firstly, rather than having a single list to store all my tasks, I create different lists to represent different life themes: Admin, Work, Learning, Self and Leisure. Each task has to belong to one of these themes.
I then start each task with its project name, a dash (to separate the project name from the task name), and then the task name itself. When possible, when creating the task, I include the date and time of when I plan to perform them, but date and time information can be added retroactively after the task was created. Date and time is needed for the tasks to show up on my Google Calendar, and is a necessary step for my completed task summary that I created. Lastly, I experimented with task descriptions and subtasks, but I decided to not use them to keep my tasks creation simple.
[ Failed ] Notion API
I initially wanted to use Notion to show the overview of all my tasks, Notion seemed to have a lot of nice customizations. However, after reading the Notion API documentation and tinkering with it for hours, I still couldn’t get it to work. So, in the end, I had to give up the idea of using Notion, and turn back to my favourite API service — Google Sheets API.
[ Success ] Google Sheets APIs
As I already used the Google Sheets API for work and personal projects, I knew this was an easy fix for my failed Notion API attempts. Once I consumed and processed my tasks from Google Tasks, I just need to push the processed data into Google Sheets via Python.
After testing a few variations, the most intuitive approach was just to combine tasks from various lists into a single Google Sheets. I could then leave the visual elements and customisations onto Google Sheets itself.
[ Success ] Google Sheets Aesthetics
Here is how I showcase my to-do tasks on my Google Sheets. Most of the visuals were customizations done on Google Sheets itself.
- I arranged my tasks from all projects into a single sheet by their date and times, with the most urgent tasks being on top, and tasks with no timings being placed at the bottom.
- I included conditional formats to highlight tasks by themes. This gives me a quick idea on what themes I am currently more focused on.
- I included a conditional format to highlight tasks for the day (in bright yellow), so that I am more aware of what I need to do for that day.
[ Partial Success | WIP ] Jupyter Notebook Outputs
I currently have an output that displays all on my completed tasks on Jupyter Notebooks. It shows a table of the completed tasks by the weeks that they are completed. The date and time parameters are used to indicate when the tasks are completed. This table is currently not pushed into my Google Sheets because I have some ideas to improve on this.
Some Learnings
Right now, I like how I can create my tasks and have a better grasp of my projects and tasks in general.
Naturally, my flow of course isn’t perfect. Sometimes I forget some new project names, and this requires me to check my Google Sheets and clean up my data accordingly. I also need to trigger my Python script on my laptop to update and view all my tasks on Google Sheets. While this means I can’t see this overview on my phone on the go, I do prefer to see my tasks on my laptop too. Also, while I track my completed tasks per week within each theme, this view is subjected to a few caveats.
The most important caveat is my tasks have no concept of duration. They are just tasks, regardless of whether I took 30 minutes or 3 hours to complete them. Two completed tasks can have very different effort and time commitments. I am mindful that this inconsistency and lack of a universal atomic value of “task” across my projects makes evaluating completed tasks tricky. Completing 50 “Admin” tasks that include “paying bills” is very different from completing 10 “Learning” tasks like “Read Statistics Book”.
In addition, as a task like “Read Statistics Book” requires a lot of time and effort to complete, I am constantly shifting the task to a later date until I finally complete the book, even though I may have performed but did not complete the task in previous sessions. In theory, I should break the task down into smaller chunks, such as “Read 10 pages of Statistics Book”, and complete each task as I finish each 10 page session. However, this means I may have to create 20 different tasks to complete one book, which I feel is quite a laborious approach to keep myself accountable. There is also no easy way on Google Tasks to create multiple similar tasks, although you can create repeated tasks to occur always at the same time and same day.
Maybe I just need better task definitions, but I am still undecided on my approach to solving this situation.
Phase Two — Beyond Tasks
Now that I am comfortable enough with my workflow to write a Medium post about it, I realise something is lacking in this flow. Creating and tracking my tasks is to better organise my life. However, how can I organise my life if I didn’t include events?
In fact, planning my Google Tasks tasks on Google Calendars means my calendar events are staring right into me, almost judging me for not accounting for their roles in my life while I woefully optimise around my tasks. The truth is these events, such as my weekly Thai language classes, do require effort from me that I am not accounting for in my task optimization flow.
Hence, for my next phase (and potential next Medium post), I want to include Google Calendar Events into my overall life optimization flow. This means reviewing my defunct side project, where I used the Google Calendar APIs for a previous life optimisation project.
But as of now, let me finally tick off this tasks from my Google Tasks!!