Hacker News new | comments | show | ask | jobs | submit login
Doing: command line tool for keeping track of what you’re doing and have done (brettterpstra.com)
141 points by ingve on Mar 16, 2014 | hide | past | web | favorite | 43 comments

If you want something simpler:

    now() {
      echo $(date "+%Y-%m-%d %H:%M:%S") - "$@" >> $HOME/.now

    now "Working on Project A"
    now pause
    now continue
    now done
You won't get a nice report and you'll have to calculate hours yourself, but it supports every edge case you can think of. Need to back-date an entry? Just open the file and change the timestamp. Want to nest tasks? Just do `now $ working on sub task` and you can easily see the indentation.

I wrote something like that that also writes the cwd because that made it easier to go back and recall what project I was on if the comment didn't make it explicit.

Aliased it to '@'.

This is something people should write for themselves because the best usage comes from tailoring it to your own particular needs. Also, you have to maintain it then it may not get all featured-up and bloated. Maybe. :)

Modified to also record the elapsed times:

  # from https://news.ycombinator.com/item?id=7411120
  export NOW_FORMAT='%F %T'
  export NOW_FORMAT2='+%Y-%m-%d %H:%M:%S'
  export NOW_FILE="$HOME/.now"
  now() {
    if [ -e $NOW_FILE ] &&
       last_line=$(tail -n1 $NOW_FILE | cut -d " " -f 1,2) &&
       time0=$(date -j -f "$NOW_FORMAT" "$(tail -n1 $NOW_FILE)" "+%s") && 
       time1=$(date -j "+%s")
    then echo "ET $(( $time1 - $time0 ))" >> $NOW_FILE
    echo $(date +"$NOW_FORMAT") - "$@" >> $NOW_FILE
    tail $HOME/.now # show the last few lines

I was basically doing the same thing but I recorded what I just finished instead of what I was working on. I got that idea from gtimelog. I haven't been using it lately but I might go back to it.

    dun started
    dun Implemented feature xxx
    dun reddit and hn **
    dun Fixed bug xxx
    dun lunch **
Without an argument it just opened the log file in vim.

I like this style of recording things but I would like to be able to log back to a server from anywhere and have things like git commits added as well for additional context. And then there is report generation.

use the .plan or .project files

then you can finger(1) and get info.

If you are doing some consulting and tracking your time and running Linux, I heavily recommend you Hamster: http://projecthamster.wordpress.com/

It is both simple to use and efficient, everything is stored in a SQLite database (easy to backup and extract data out of it) but anyway, the reports are really well made and can be used to do your work reports for your customers. I managed more than €100k for of work with it without a single loss of data, failure or any kind of issue.

Here's a stupid one. I keep getting lost what I was doing in each of 20 screen windows. So I keep a "goal" per shell that appears in the $PS1 for each.

  goal () 
    if [ $# -gt 0 ]; then
        echo Your current goal is: $MYGOAL;
That's it. Put ($MYGOAL) in your PS1 and type "goal fix this bug" or "goal working on that thing". No args just echos back (redundant).

Cool: Really interesting command line utility to record what I'm currently doing. I'd love that. task warrior is nice to track my tasks, but to track what I'm doing/what I've done? So far it's not a good match.

Not for me: Uses a format of some application that I've never heard of, on OS X which I don't own.

Since this is the first time I heard about TaskPaper: Are there alternatives for the other two big operating systems (or at least one of them)?

Taskpaper is as much a plaintext file format as it is a piece of software. As an example, here's a plugin for Sublime that supports it: https://github.com/aziz/PlainTasks - and here are assorted plugins for other editors, as well as other pieces of software: http://www.hogbaysoftware.com/wiki/TaskPaperRelatedProjects

Thanks for pointing me to PlainTasks, I don't really like bloated TODO apps so I'm usually just using a text file, that one's perfect for me.

indeed. +1 for plainTasks. i've been using it for a month now. it's like freeform task tracking with syntax highlighting, magic dates, and automatic formatting. it's exactly what i've been looking for for years now.

'task all' will display all of your tasks with the status (e.g. pending/active/completed).

'task reports' lists a number of all the premade reports that will give you some of the information you are looking for. You can also list reports based on status by doing 'task status:pending'. Please see the docs page (http://taskwarrior.org/docs/tutorials/filter.html) on using filters.

The burndown reports are pretty useful too (they are graphical and can help you visualize that status of a project very easily).

> I'd love that. task warrior is nice to track my tasks, but to track what I'm doing/what I've done? So far it's not a good match.

Try adding annotations to your tasks.

  $ task <id> annotate "text"
This adds a timestamp and a note for that particular task.

I will stick with emacs org-mode.

Me to, but I'm now tempted to implement something similar to throw TODOs into a .org file that my agenda can pick up.

You can do so with org capture if you're not familiar with it.

Very cool! I wrote a project a few years ago to do something similar: https://github.com/christiangenco/t_time_tracker

It lets you add tasks like this:

    $ t browsing HN
    Started: browsing HN (now)
    $ t @website writing blog post
    Finished: browsing HN (0:12)
    Started: @website writing blog post (now)

That is a seriously good idea, love it.

I made doing because I get manic and don't even realize I'm switching to a new task until I've already forgotten what I was doing before. It's probably not an issue for most people. So, for me, I have Day One pop up every hour and ask me what I'm doing, which then gets converted to a "WWID" file in nvALT via the library in doing (and Hazel). If I do remember to track between tasks, I just jot it off on the command line.

I love the idea of a timer, though. I do use Timing to do something similar. http://timingapp.com/

And the organization by nested CSVs has some great potential for longer-term data collection.

`doing now writing too long of a post on HN`

I tried your project and found a bug. When a task starts on one day, and finishes on the next, the total time reported is negative.

for instance:

  23:34, task started
  00:09, task done
  expected time spent: 35 mins
  reported time spent: -24 mins
Aside from this bug, I really like it and plan on using it.

Pull requests are welcome :)

I don't have particularly awesome coding skills but I'll see if I can find the problem and come up with a solution ;)

By the way, I've always thought ActoTracker had potential but I haven't locked into it yet: http://freecode.com/projects/actotracker

I've been tracking my work for over a year now with a tool similar to this and now I would not live without (I should finally package it up and ship it...)

Some ideas, you can do very nice things through bash autocompletion, for example:

- immediate jumping between timelines (I have hundreds, by topic-project-task and so on)

  $ tau jump proj tau<TAB><TAB>
  ..and so on..
- autosuggest for todo lists:

  $ tau done<TAB><TAB>
  [ 1] setup JTAG probes
  [ 2] write script to control probe
  ..and so on..
And after you use this for a while you realize it can do more than manage log messages and todo lists, the same interaction can be used to quickly access bookmarks, reference material and local paths you often have to `cd` into :)

Nice; I'd like something like that, but with the addition of allowing me to track the estimated vs. the real time of a job. I.e., when I start a task, I estimate the time needed, when I finish it, it tells me the real time it took. Ideally, I could take breaks in between, but even just having a linear task would be great. E.g.:

  $ doing estimate 3h fixing bug 1234
  [ time passes/working ... ]
  $ doing done ["fixing bug 1234"]
  done fixing bug 1234: task took 1d5h50m longer than estimate
  $ cat ~/.plan
  2014-03-12 12:00:00 begin "fixing bug 1234" (3h)
  2014-03-13 17:50:00 done "fixing bug 1234" (1d8h50m) [+1d3h50m]
Does something like that already exist?

Seems I have found it, at least for OSX:


Not perfect, but as close as possible

Turns out, atea does all I need and integrates nicely into the OSX UI with an icon in the menu bar. It does:

  - project-based task management
  - proiority ordering of tasks
  - Dropbox-based syncing of one or more task files
  - time tracking
  - comparison of real times to estimates
So, in the end, maybe it is actually the perfect solution, and it is free, too.

I found this to be one of the better apps out there for its sheer simplicity and use of colors:


Non-App-Store link:


Just bought it - thanks for the recommendation :)

For US based folks, here's the US link: https://itunes.apple.com/us/app/tyme/id670592452

Really recommend Trello for a day to day work to do list.

You can drag cards between lists (To Do, Doing, Done) (feels nice to drag items to the "Done" pile and build a long column), has check-lists in cards for sub tasks, and works everywhere.

Have you heard the good word about taskwarrior? I did not see any mention of this cli utility in this post. I have not tried doing, but use taskwarrior on a daily basis. It is fairly simple and allows for prioritizing tasks as well.

Did they ever finish the Android client? I looked into them very briefly 2+ years ago, and I wanted something to finally get me to use a smart phone for something other than procrastination.

I found Mirakel[0] but I do not think that was the app promised by the original dev. Still googling after I hit submit out of curiosity.

[0] http://mirakel.azapps.de/taskwarrior.html

I don't think the main Taskwarrior group is focusing on a specific mobile app. With the task server now available hopefully other developers will create mobile apps for Taskwarrior. I'd like an iOS app, while Todo.txt works ok with dropbox and the iOS app I'd prefer Taskwarrior since i wouldn't have to use a cron job to set up recurring tasks.

A quick google led me to this (https://github.com/svijee/taskwarrior-androidapp). I did not develop it and, unfortunately have an iphone 4 for the next few months. It looks fairly promising though (looks like it is still being developed).

This is an absolutely brilliant idea. I applaud you for this. I often find it very hard to recall everything I've been doing today, and even more often I will be bombarded with things to do 'soon' and will either open a text file to write it down or just try to remember. This way I don't have to leave the terminal. Class.

And by the way, I have no idea what TaskPaper is nor do I care. All I care about is that I can jot down some memos while I'm in my little linux terminal.

I've been meaning to try tracking what I do throughout the day and then keeping a log of that in a journal like Day One and/or service like iDoneThis.

This looks like a great way to accomplish that. Will be trying it tonight while I work on some stuff.

Nice... Anybody using cli tools like this in conjunction with a git client-side post-commit hook?

Interesting but how do you move one task from lets say later to another section ?

You use TaskPaper or a text editor. Doing isn't designed for full management, just a fast way to log.

Hello. Thanks for sharing! I also found the BBedit plugin, so that I can edit it from the TaskPaper link above. Here is a simple AppleScript to install it, when you don't have administrative rights on your user account:

   do shell script "cd ~/Downloads/doing-master; gem install doing" with administrator privileges

^ (He's the author)

how do I run its commands without typing "doing" each time?

smth like:


doing now updating todo file in orgmode

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact