Red-Green-Code

Deliberate practice techniques for software developers

  • Home
  • About
  • Contact
  • Project 462
  • CP FAQ
  • Newsletter

Time Tortoise: Self-Hosting Task Backlog

By Duncan Smith Nov 11 0

Backlog

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.

In order to be viable for self-hosting, Time Tortoise needs a few more key features. Here are the ones that I think are the most important.

Safety Features

One of the worst things a program can do is lose user data. To depend on Time Tortoise as a primary time tracker, users need assurance that their carefully collected time data is safe. Time Tortoise currently has some deficiencies in that area.

Backup

Backup is a basic defense against data loss. Fortunately, Time Tortoise doesn’t lock the TimeTortoise.db file while it’s running, so any backup program can make a copy of it. An even safer option would be for Time Tortoise to automatically make a daily copy of the database (with an appropriate unique name) in conjunction with the daily summary file feature. Think of it as a simple implementation of a point-in-time backup system.

Confirm

It can be annoying when a program continually asks “Are you sure?” when you take actions. But some operations are catastrophic enough that they deserve a confirmation prompt. For example, deleting an activity in Time Tortoise requires just one button click, doesn’t prompt for confirmation, and deletes all associated time segments. This could result in the user unintentionally deleting a lot of data. The daily backup would reduce the severity of this situation, but a warning message is nevertheless warranted given how rarely users need to delete an activity. In contrast, deleting a single time segment probably doesn’t require a prompt.

Transaction log

Yet another form of backup would be to write the day’s time segments into the daily summary file. This would be useful information for a daily summary, and could also serve as a way to manually restore time segments that were inadvertently deleted.

Autosave

Currently, Time Tortoise only saves to the database when the user takes an action. This could lead to an in-progress time segment being lost if the program or computer crashes. Therefore, it would be prudent for Time Tortoise to automatically save periodically while the timer is running.

Convenience Features

Here are a few small features that would make Time Tortoise more convenient to use in its current form.

Link to data directory

UWP apps like Time Tortoise keep their data in %UserProfile% \ AppData \ Local \ Packages \ [Package_Name] \ LocalState. That isn’t a convenient path to type. But the LocalState directory contains files that the user will want to open, such as the text files containing the daily summaries. To help the user get there quickly, it would be helpful to link to the path from the Time Tortoise main window.

Move a time segment

I find that a common occurrence in time tracking is getting a few minutes into a time segment, then realizing that it’s associated with the wrong activity. Time Tortoise allows deleting and adding time segments, and that could be used to correct this situation. But it would be more convenient to be able to move time segments between activities in one step.

Show status of Time Tortoise Companion connection

The Time Tortoise Companion app must be running for Time Tortoise to recognize away time. Without idle time detection, it’s easy to leave one’s computer without stopping the timer, and come back with extra time recorded. Because of the way the two apps are connected via SignalR, Time Tortoise can tell when Time Tortoise Companion is running. It would be helpful to have an indicator on the main Time Tortoise screen to remind the user to start the companion app.

More Features

This is far from a complete list of potential features, but along with the current feature set, it’s enough for a solid self-hosting version of Time Tortoise.

(Image credit: Drew Stephens)

Categories: TT

Prev
Next

Stay in the Know

I'm trying out the latest learning techniques on software development concepts, and writing about what works best. Sound interesting? Subscribe to my free newsletter to keep up to date. Learn More
Unsubscribing is easy, and I'll keep your email address private.

Getting Started

Are you new here? Check out my review posts for a tour of the archives:

  • Lessons from the 2020 LeetCode Monthly Challenges
  • 2019 in Review
  • Competitive Programming Frequently Asked Questions: 2018 In Review
  • What I Learned Working On Time Tortoise in 2017
  • 2016 in Review
  • 2015 in Review
  • 2015 Summer Review

Archives

Recent Posts

  • LeetCode 1022: Sum of Root To Leaf Binary Numbers January 27, 2021
  • LeetCode 1288: Remove Covered Intervals January 20, 2021
  • LeetCode 227: Basic Calculator II January 13, 2021
  • A Project for 2021 January 6, 2021
  • Lessons from the 2020 LeetCode Monthly Challenges December 30, 2020
  • Quora: Are Math Courses Useful for Competitive Programming? December 23, 2020
  • Quora: Are Take-Home Assignments a Good Interview Technique? December 17, 2020
  • Quora: Why Don’t Coding Interviews Test Job Skills? December 9, 2020
  • Quora: How Much Time Should it Take to Solve a LeetCode Hard Problem? December 2, 2020
  • Quora: Quantity vs. Quality on LeetCode November 25, 2020
Red-Green-Code
  • Home
  • About
  • Contact
  • Project 462
  • CP FAQ
  • Newsletter
Copyright © 2021 Duncan Smith