I’m probably not going to submit this package to GNU/nonGNU ELPA or MELPA. It is hosted as a public repository for a technical reason, but it’s not meant for attracting users. The code base is not well-tested, and it is difficult to develop new features without regression.
Still, it serves as a prototype for seeking ideas for time management inside Emacs with Org mode, and I am using it on weekends (not at work, unfortunately). Maybe I will implement a backend in a statically typed language (e.g. Haskell, OCaml, etc.) in the future to make it more reliable.
Therefore this project is not recommendable to general users, but you can use the code for reference. See also license.
As this project is not in a usable state yet (and it is probably not going to be), it can only serve as a proof of concept. I will share the gist of this project.
org-memento
integrates seamless /time blocking/ into Emacs.
org-mode
already has time tracking with org-clock.el
and also supports timers and notifications, but org-memento
adds a separate layer for time blocking to Emacs.
Rather than you clock into individual tasks, you first define blocks which are actually a set of buckets for tasks and track time spent on them.
Those buckets are defined in a single journal file, which is an org-mode
file with date headings in reverse chronological order.
While Org is useful because each entry contains information needed to carry out the task, buckets don’t contain any information but timing. They are cheap, so you can delete them without worries.
The core functionality of org-memento
is to display a timeline of time blocks inside Emacs.
It is unlikely that you consistently define all budgets beforehand.
In real life, you have urgent tasks and other spontaneous activities.
You usually don’t properly schedule them, but it distracts you and consumes some amount of time.
Normal people can’t avoid it.
org-memento
lets you handle that kind of situation.
The timeline interface also displays activities in org-mode
files.
You can select a continous sequence of activities and group them with a time block.
You first get it done, and then describe the sequence of activities.
A typical workflow with org-memento
is as follows:
- In the morning, check in to the journal of
org-memento
. - Work on tasks.
- When you finish the day, check out from the journal.
Even though the above workflow works seamlessly for *tracking* time, I have come to wonder what would be a good way to *control* time budgets. It also has an issue of synchronization with external systems, e.g. online calendars.
I am thinking of developing a backend server for better planning of budgets. The server language can be Elixir, OCaml, or even something else. Until I implement the backend, I am not going to submit this Emacs Lisp package. Life is short, so there is a chance I won’t finish the project within my lifetime.