This is one in a series of articles about Time Tortoise, a Universal Windows Platform app for planning and tracking your work schedule. For more on the development of this app and the ideas behind it, see my Time Tortoise category page.
I’m wrapping up a year of working on my Time Tortoise programming project. Next week, I’ll post an overview of what I learned from the project. For this week, I have some ideas about where the project might go in the future.
But first, let’s review the current state of the project.
Time Tortoise Features
In its current state, Time Tortoise is a simple time tracker with idle time detection and a daily activity report.
Activities
An activity identifies work to be tracked. On the main Time Tracker screen, the list of activities is in the top left. The user can add an activity, delete an activity, or edit an activity name. To start timing, an activity must be selected.
Time Segments
A time segment records work time. Each time segment has a start time, an end time, and an associated activity. When an activity is selected in the Time Tortoise UI, its associated time segments are shown in the top right. Time segments are normally created using the Start/Stop button, which the user clicks to indicate when work starts and stops. The user can also manually add a time segment (by entering a start and end time), delete a time segment, and edit an existing time segment (change the start and/or end times). A calendar control allows the user to filter the time segment list, showing only time segments on or after the selected date.
The Work Timer
Time Tortoise is designed to run in the background during work hours. When the user clicks Start, a timer starts running. When they click Stop, a time segment is added to the list for the current activity. The time segment start and end times are recorded automatically.
Idle Time Detection
Time Tortoise is optimized to record time for work that is happening on the computer that it is running on. However, it can also track time away from the computer. If the user leaves the computer (stops using the mouse and keyboard) for a period of time, Time Tortoise goes into idle mode. When the user returns, they can click the Include button to keep timing and include the away time in the current time segment, or Exclude to stop timing and set the end time to the moment when the user left.
Daily Summary
Time Tortoise auto-generates a daily report in the form of a text file. The Daily Summary file currently lists the activities for the day, and the total time spent on each one.
Future Plans
As I worked on Time Tortoise throughout the year, I kept a backlog of ideas for future enhancements to the app. Here’s what I came up with.
UI Enhancements
The Time Tortoise user interface is rather basic. This may be a good thing considering the limited popularity (and therefore the uncertain future) of UWP, the framework that the Time Tortoise UI is built on. If I do decide to move to another UI framework like WPF, there will be less UI functionality to move.
Nevertheless, there are a few UI enhancements that would improve the usability of the app:
- Labels, boxes, and column headers: UWP encourages a sparse visual style, but a few more labels and some lines to delimit parts of the UI would help make things more visually understandable.
- Total time: The Daily Summary file shows the total time for an activity, but that statistic doesn’t appear anywhere in the main UI.
- End Time: Allow filtering the time segments by End Time, not just Start Time.
- Better Start/Stop button: It’s a frequently-clicked button, so it deserves more visual emphasis, like a color change to indicate whether the timer is stopped or running.
- Move a time segment: Currently the only way to “move” a time segment between activities is to delete from one and add to the other. The UI needs a move function.
- Multi-select: A full-featured UI would support operating on multiple activities or time segments at a time.
- Small timer window: The timer is designed to be running most of the time. Users shouldn’t have to open the main window to check the timer status.
- Shortcut to the data directory: The Daily Summary file is written to an obscure location, due to the limitations of UWP file system permissions. The UI should have an easy link to it.
- “Speed Dial” Buttons: On a given day, it’s common to work on just a few activities selected from the complete list. Configurable buttons would make it easier to start and stop these favorite activities.
- Companion app status: Idle time detection only works if the companion app is running. The UI should display a status indicator to notify the user when it can’t communicate with the companion app. Conversely, the companion app could display a notification when it can’t detect Time Tortoise, which might mean the user has forgotten to start a timer.
- Other minor issues: Too many to enumerate here. One example: the list of activities is sorted in order of creation time, which isn’t very useful.
Safety
The bare-bones nature of Time Tortoise in its current state means that the app doesn’t do much to prevent mishaps. These features would help rectify that.
- Automatic backup: Make a copy of the database periodically (e.g., once per day).
- Auto-save: Periodically (e.g., once per minute) save the current state of the system to the database, so timing data isn’t lost if the program or computer crashes.
- Are You Sure? dialogs: The app doesn’t currently confirm any actions.
- Undo button: In case the user thought they were sure, but later decided they weren’t.
- CSV export/import: This is a safety feature because it provides another form of backup that allows for manual editing. But it’s also a useful way to inter-operate with other programs.
- Detect data problems: For example, overlapping time segments, or a start date that occurs after the end date for the same time segment.
- Log file: In addition to the Daily Summary file, write a plain-text log file of all operations. This would give the user a simple way to manually recover data.
Larger Enhancements
The enhancements listed above are individually small, though it would take some time to implement all of them. I also have some ideas for larger enhancements.
- Daily Work Plan: There’s a productivity technique that relies on planning every minute of your work day. It involves planning in advance which activities you’ll work on at which times. Time Tortoise could support this technique by accepting a plan in advance, indicating whether the actual activity matched the planned activity throughout the day, and using the Daily Summary report to indicate how successfully the user followed the plan.
- Idle/Active View: Track the user’s idle/active status whether or not the timer is running. In the Daily Summary, superimpose this data on the manual time tracking data as a way to validate data accuracy and detect trends.
- Text File Viewer: Time Tortoise updates the Daily Summary report throughout the day. A dedicated viewer window could show this report as a supplement to the main window.
- Special day rollover processing: Daily Summary and time tracking-related techniques like daily time goals rely on data collected during a 24-hour period. In my experience, time trackers like to extend time segments across midnight, which can make the daily calculation confusing. Time Tortoise should automatically split the current time segment at midnight (or another user-defined time, based on the user’s customary work hours).
- Daily Summary in rich text: Write the Daily Summary file in HTML or Markdown to allow for fonts, colors, images, and other rich text features.
- More data sources: In addition to manual time tracking data and idle/active data, collect data from other devices or systems that relate to time tracking. For example, the Daily Summary file could incorporate asleep and awake time as tracked by a FitBit device.
- The original plan: In my first post of 2017, which introduced the Time Tortoise project, I listed a number of features that haven’t yet been implemented, such as activity tagging, a time bank system, measurements of focus, as well as tracking streaks and other achievements.
(Image credit: Salvatore Vastano)