Canrylog

Gitlab
Gitlab

My own time tracker.

The core idea is that we simply track a list of events stating that from a moment onward, some task is currently active.

I want it to be available in many platforms, but so far there is only an Emacs version.

Tracking file

The core tracking file looks like this:

2019-01-15T22:40:18+0900  Entertainment:Gaming:osu!
2019-01-15T23:04:56+0900  Development:Canrylog:Emacs
2019-01-15T23:13:41+0800  Notes:Scheduling
2019-01-15T23:28:19+0800  SocialMedia:Youtube
2019-01-16T00:24:53+0800  Sleep

Each line represents a “task switching event”. Each line starts with a timestamp, a separator (two spaces), and a task name.

The task name can be broken down into a hierarchy, using a colon (:) to separate paths.

This tells us that the currently active task is Sleep, while SocialMedia:Youtube was active between 2019-01-15T23:28:19+0800 and 2019-01-16T00:24:53+0800. All timestamps are in ISO 8601, sorted chronologically (taking the UTC offset into account).

Emacs version

My usual workflow is:

  • Use canrylog-switch-task to switch to something I’m doing or working on

  • Switch to the task “Downtime” to signify that I’ve clocked out

  • Use canrylog-describe-task to see a summary on a task

  • Use canrylog-view-main (aliased to canrylog) to see my current task and how much time it’s been active for.

I’ve also built a task list view, although that’s something that isn’t really fleshed out just yet.

https://d33wubrfki0l68.cloudfront.net/204086fb8f809f8cce8c14221afa49a052620f44/bf7f2/canrylog-20201118-task-view.png
Task view
https://d33wubrfki0l68.cloudfront.net/b9f9ff98c4f3d22fdde7a94f52bb26f5ecb9448d/0d5a4/canrylog-20201118-dashboard.png
Main view

Command line version

https://gitlab.com/canrylog/canrylog-cli

Currently the tracking file location is hard coded, as I’ve only been working on the current version for less than 3 hours.

Commands implemented:

  • canrylog switch-to <task>

  • canrylog current