Different Time Tracking Ideas
If you look at, or think about, different methods of tracking time, you will find out that there are a handful of different paradigms that can be employed. Here are some of the paradigms I have identified:
- Specify both a start time and an end time.
- Record a duration and when it happened.
- Specify only a start time for a new project.
- Specify only an end time for what you were just doing.
Specify Start And End
With this paradigm, your database would contain both a start time and end time for each period, like this:
Each line is a complete accounting of a task. It has the start time and end time, so you can calculate the duration from that single line. If the time column also contains the date, then all the entries can be jumbled in your database and things would still work.
Emacs org-mode is like this. For every task, you have to “check in” and “check out” of the task. Only then can the elapsed time for that task be calculated. You are required to use this approach if your database entries are not in chronological order, like when they are scattered around a “to do” list.
I think you would also use this paradigm if you were using something like MySQL for your database.
Record A Duration And When It Happened
In this scheme, you record the duration, and when it started or ended. Your database would be something like this:
In the above example, the start time is specified, along with the duration. You could equally specify the end time.
Worklog uses this approach for its database, though it is more like org-mode in how you use it. You have to “start counting” and “stop counting” for any given task.
Specify Start Time Only
In this paradigm, your database would only contain a time stamp every time you start a new project. This is the method you might use if your were working with pen and paper: “8:00 am—Start new project.” Here is what your database might look like:
Each line specifies the start time of the activity described on that line. Each line relies on the line following it to provide the end time for the task, so there can be no gaps.
I can’t think of any software that uses this paradigm.
Secify End Time Only
In this paradigm, your database contains a time stamp every time you stop a project. Your database would look like this:
Each line specifies the end time of the activity described on that line. Each line relies on the line before it to provide the start time for the task, so there can be no gaps.
I know that GTimeLog uses this paradigm.
Which Does STOPTHAT Use?
STOPTHAT uses the “Specify an end time only” paradigm. That’s where the name of the program comes from. You are typing a description of the task, and saying you want to stop that task.
The two paradigms, “Start Time Only” and “End Time Only” are very similar. The main difference is where your head is when you are doing the time accounting. If you are writing down what you are going to do next, you will be wrong much of the time. What you plan to do is not always what you end up doing, even with the best intentions. You will be correct all of the time if you regularly write down what you were doing immediately prior.
There is one notable flaw to the “Start Time Only” and “End Time Only” paradigms. If you change activities but forget to record it, you will get bad results. If you spend two hours on the internet, and then two hours doing billable work for a client, but fail to record when you stopped browsing the internet... it will appear that you have spent four hours of billable time.