Take the 2-minute tour ×
Personal Productivity Stack Exchange is a question and answer site for people wanting to improve their personal productivity. It's 100% free, no registration required.

What do you think about time tracking applications (application that log the activities of a person) ?

Do you think it is useful ?

share|improve this question

closed as not constructive by THelper, Muz, Gruber, Rory Alsop Apr 10 '13 at 23:07

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

    
Welcome to Personal Productivity! Please note that your question is rather subjective and as such does not fit very well on this site (see also this blog on good subjective/bad subjective). You might want to rephrase your question to prevent it from being closed. –  THelper Mar 31 '13 at 13:15
1  
There are plenty of questions under the time-tracking tag. Please be more specific as to why they don't work for you. –  Muz Apr 1 '13 at 5:53

4 Answers 4

Keeping a time journal, and knowing how you spend your time, can be very useful. When I first moved to this city I started logging my commute to and from work. Because I use the trains and busses, and don't pay attention to what time it is, I was shocked to find out my commute, round-trip, was six hours. So, I moved closer to my office. (This is an inspect and adapt loop.)

As to the question about applications, if you want to track your time primarily just before and after an event (preferable), I recommend finding an app you can take with you, is quick to launch, and that you can quickly start and stop activities.

Having said that, whether you use an application to help you out, or just pen and paper, keeping a time journal can be very useful (similar to keeping receipts for purchases). However, if you do not review the journal on a regular basis, then you won't be taking complete advantage of what the data can show you.

share|improve this answer

I use ManicTime and it is plenty useful for me. Can be really eye-opening. The killer feature is autotagging, this way I can configure it once and have my time automatically marked with projects. But corrent setup can be tricky though. The other huge downside is that it is built with WPF, so it is slow and requires .NET runtime.

share|improve this answer

I have a small piece of code that takes a screenshot of my desktop every five minutes - it's the work of a moment to flick thought and work out how many screenshots are of, say, facebook...

/**
 * Code modified from code given in http://whileonefork.blogspot.co.uk/2011/02/java-multi-monitor-screenshots.html following a SE question at  
 * http://stackoverflow.com/questions/10042086/screen-capture-in-java-not-capturing-whole-screen and then modified by a code review at http://codereview.stackexchange.com/questions/10783/java-screengrab
 */
package com.tmc.personal;

import java.awt.AWTException;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
import java.util.concurrent.TimeUnit;

import javax.imageio.ImageIO;

class ScreenCapture {

    static int minsBetweenScreenshots = 5;

    public static void main(String args[]) {
        int indexOfPicture = 1000;// should be only used for naming file...
        while (true) {
            takeScreenshot("ScreenCapture" + indexOfPicture++);
            try {
                TimeUnit.MINUTES.sleep(minsBetweenScreenshots);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    //from http://www.coderanch.com/t/409980/java/java/append-file-timestamp
    private  final static String getDateTime()
    {
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd_hh:mm:ss");
        df.setTimeZone(TimeZone.getTimeZone("PST"));
        return df.format(new Date());
    }

    public static void takeScreenshot(String filename) {
        Rectangle allScreenBounds = getAllScreenBounds();
        Robot robot;
        try {
            robot = new Robot();
            BufferedImage screenShot = robot.createScreenCapture(allScreenBounds);
            ImageIO.write(screenShot, "jpg", new File(filename + getDateTime()+ ".jpg"));
        } catch (AWTException e) {
            System.err.println("Something went wrong starting the robot");
            e.printStackTrace();
        } catch (IOException e) {
            System.err.println("Something went wrong writing files");
            e.printStackTrace();
        }
    }

    /**
     * Okay so all we have to do here is find the screen with the lowest x, the
     * screen with the lowest y, the screen with the higtest value of X+ width
     * and the screen with the highest value of Y+height
     * 
     * @return A rectangle that covers the all screens that might be nearby...
     */
    private static Rectangle getAllScreenBounds() {
        Rectangle allScreenBounds = new Rectangle();
        GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
        GraphicsDevice[] screens = ge.getScreenDevices();

        int farx = 0;
        int fary = 0;
        for (GraphicsDevice screen : screens) {
            Rectangle screenBounds = screen.getDefaultConfiguration().getBounds();
            // finding the one corner
            if (allScreenBounds.x > screenBounds.x) {
                allScreenBounds.x = screenBounds.x;
            }
            if (allScreenBounds.y > screenBounds.y) {
                allScreenBounds.y = screenBounds.y;
            }
            // finding the other corner
            if (farx < (screenBounds.x + screenBounds.width)) {
                farx = screenBounds.x + screenBounds.width;
            }
            if (fary < (screenBounds.y + screenBounds.height)) {
                fary = screenBounds.y + screenBounds.height;
            }
            allScreenBounds.width = farx - allScreenBounds.x;
            allScreenBounds.height = fary - allScreenBounds.y;
        }
        return allScreenBounds;
    }
}
share|improve this answer
    
Just curious and not picky. Is it a screenshot or the active window/app? –  JeffO Apr 9 '13 at 17:23
    
Whole desktop (including multiple monitors) hang on - I'll post the code (althought I have a nagging feeling I've already posted it on SE... –  Joe Apr 10 '13 at 7:52
    
Comically - having looked at the code It also includes references to where I asked questions on SE, and to where I had the code review done. Well done past self! –  Joe Apr 10 '13 at 7:54
    
+1 Interesting way to keep yourself in check. –  haylem Aug 16 '13 at 10:03
    
@jeffO this is screenshots -I seperately have started using some active window code. Will try and get around to posting about it. –  Joe Aug 16 '13 at 10:38

Tracking your time can be useful if your are multitasking. If you can get in the habit of using a tool consistently, it helps on a couple levels.
1. Looking back and estimating at the end of the day, how time was spent, relies on memory. Depending on the number of tasks you are dealing with and the pace of the day, sometimes memory can fool you.
2. The other benefit would be the ability to do some type of analysis on how your time was spent.

If you are interested in a tool, I settled on this free one, but the other answers give you a few other tools that may work for you if you are considering trying one out.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.