topbanner_forum
  *

avatar image

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
  • Thursday April 18, 2024, 11:49 am
  • Proudly celebrating 15+ years online.
  • Donate now to become a lifetime supporting member of the site and get a non-expiring license key for all of our programs.
  • donate

Last post Author Topic: Looking for a very flexible timer  (Read 26333 times)

tomos

  • Charter Member
  • Joined in 2006
  • ***
  • Posts: 11,961
    • View Profile
    • Donate to Member
Looking for a very flexible timer
« on: April 07, 2015, 11:29 AM »
I know there's loads of timers out there, so maybe this exists already:

looking for a timer where I can add subtract from the time shown e.g.
say it's showing 1:30:25 - I can change that time (via slider or numerically) to, say, 1:15:00.
Using a slider could be a bit like an mp3 player UI - here based on Trout:

Screenshot - 2015-04-07 , 18_12_13_copy.png

Bonus points if I can use it to keep track of what I'm actually doing during this time i.e. make notes within the app itself.
Even more points if that's exportable ;-)
Tom

Edvard

  • Coding Snacks Author
  • Charter Honorary Member
  • Joined in 2005
  • ***
  • Posts: 3,017
    • View Profile
    • Donate to Member
Re: Looking for a very flexible timer
« Reply #1 on: April 10, 2015, 01:26 AM »
Do you mean like a countdown timer for set time tasks, or a set-it-and-let-it-run timer to evaluate time spent on tasks?

tomos

  • Charter Member
  • Joined in 2006
  • ***
  • Posts: 11,961
    • View Profile
    • Donate to Member
Re: Looking for a very flexible timer
« Reply #2 on: April 10, 2015, 02:16 AM »
Do you mean like a countdown timer for set time tasks, or a set-it-and-let-it-run timer to evaluate time spent on tasks?

I mean a 'a set-it-and-let-it-run timer to evaluate time spent on tasks'.
Tom

Shades

  • Member
  • Joined in 2006
  • **
  • Posts: 2,922
    • View Profile
    • Donate to Member
Re: Looking for a very flexible timer
« Reply #3 on: April 10, 2015, 06:29 AM »
'Manic Timer' would be the first timer I would think of when you want a set-it-and-let-it-run timer. Keeps track of anything you do in your system and can create reports from that. Comes in both free and commercial versions.

Jibz

  • Developer
  • Joined in 2005
  • ***
  • Posts: 1,187
    • View Profile
    • Donate to Member
Re: Looking for a very flexible timer
« Reply #4 on: April 10, 2015, 09:14 AM »
I'll second ManicTime, if you are looking for time tracking/management software. It stays in the background and on your computer.

tomos

  • Charter Member
  • Joined in 2006
  • ***
  • Posts: 11,961
    • View Profile
    • Donate to Member
Re: Looking for a very flexible timer
« Reply #5 on: April 10, 2015, 09:50 AM »
I'm a bit torn really -
good  time tracking/management software would be good -
but my original idea was a basic timer that could be modified. Say it's running and I go out for coffee and forget to pause it -
when I come back:
I can pause it, take the 15 mins or whatever off the total, and leave it run on again.

The ManicTime suggestion would work around this by keeping track of activity. I find the $67 pricetag a bit steep - not saying it's not worth it. It probably would encourage good use of time...

looking for a timer where I can add subtract from the time shown e.g.
say it's showing 1:30:25 - I can change that time (via slider or numerically) to, say, 1:15:00.
Using a slider could be a bit like an mp3 player UI
Tom

dr_andus

  • Supporting Member
  • Joined in 2012
  • **
  • Posts: 851
    • View Profile
    • Dr Andus's toolbox
    • Donate to Member
Re: Looking for a very flexible timer
« Reply #6 on: April 10, 2015, 10:41 AM »
Say it's running and I go out for coffee and forget to pause it -
when I come back:
I can pause it, take the 15 mins or whatever off the total, and leave it run on again.

The way I deal with this problem is that I use external devices for tracking time ("Repeat Timer" app in iPod Touch or a cheap manual stop watch), record the time periods (Pomodoros plus breaks) in a Google Sheet, and if I forget to turn something off or on, Google Sheet tells me when the last change was saved, so I can add to/subtract from that and account for the break (and easily calculate or track a variety of productivity metrics).

bob99

  • Supporting Member
  • Joined in 2008
  • **
  • default avatar
  • Posts: 345
    • View Profile
    • Donate to Member
Re: Looking for a very flexible timer
« Reply #7 on: April 10, 2015, 01:40 PM »
Here's one you might take a look at.
XNote Timer http://www.xnotestopwatch.com/#overview

Says it has count up and countdown functions. There is a free limited function version on the downloads page. For about $29 they have a version with Excel logging and other bells & whistles.
I haven't used this, but I found it interesting they have a forum page. Looking through a few of the posts it looks like the program has some power to use it on a bigger scale too.

tomos

  • Charter Member
  • Joined in 2006
  • ***
  • Posts: 11,961
    • View Profile
    • Donate to Member
Re: Looking for a very flexible timer
« Reply #8 on: April 10, 2015, 03:02 PM »
^
^ thanks for the tips.

Will have a look for a physical timer (I want one anyways); and have downloaded xnote timer for a look (portable - yay) :up:
Tom

skwire

  • Global Moderator
  • Joined in 2005
  • *****
  • Posts: 5,286
    • View Profile
    • Donate to Member
Re: Looking for a very flexible timer
« Reply #9 on: April 10, 2015, 03:35 PM »

Edvard

  • Coding Snacks Author
  • Charter Honorary Member
  • Joined in 2005
  • ***
  • Posts: 3,017
    • View Profile
    • Donate to Member
Re: Looking for a very flexible timer
« Reply #10 on: April 14, 2015, 01:23 AM »
Tomos, have you found what you need yet?  If not, I'm working on a few ideas in Pascal/Lazarus.
Questions:
1- Would you want to always track time from 0? or should the beginning time be settable, maybe even from actual time?
2- Would you want to have the tasks/notes be running timestamped? or starting a new task starts from 0?
3- Should a list of tasks/notes be hidden until exported, or should there be a running list showing?

I'm having trouble getting everything to sync up close-to-perfect with real time, so:
4- What kind of time tolerance would be acceptable? Say, +/- 1 or 2 minutes per hour?

5- Hotkeys?

If you could, sketch out how you'd like the UI to look.  The Trout example is good, but a slider would only be possible if there were a definite 'quitting time', like say you only want to spend 5 hours doing what you're needing done.  A slider would be rather inaccurate as well.  In the code I'm playing with, I have buttons for forward/reversing seconds, minutes and hours.  No direct text entry yet.

Let me know, I'd love to stretch my coding muscles even further...

TaoPhoenix

  • Supporting Member
  • Joined in 2011
  • **
  • Posts: 4,642
    • View Profile
    • Donate to Member
Re: Looking for a very flexible timer
« Reply #11 on: April 14, 2015, 01:48 AM »

I'm having trouble getting everything to sync up close-to-perfect with real time, so:
4- What kind of time tolerance would be acceptable? Say, +/- 1 or 2 minutes per hour?

...

Let me know, I'd love to stretch my coding muscles even further...

I'm fascinated with what could cause that big of a time gap! I thought computers were pretty good at keeping time! I could see off by a few seconds, but then maybe do "leap adjustments".

What doesn't work with some kind of "triple timekeep" system something like:

Pre: Start time such as starting with a real clock time as desired. If not, this is 0.

A1: Task 1
A2: Task 2
(Various toggles of increment one or both)

B1: Idle1 - when the tasks are paused, increment this perhaps 1-7 times per second - In some senses this is the "Master Idle" that acts like a checksum or such
B2: Custom Idle - User Toggle-able Idle where you know you're not doing a task but you want to know a chunk of time more specific than just the "balancing idle timer". I keep a lot of time notes, and so for ex if reading a portion of a book is the task, I'll wanna know just how long it takes me to stop and go put my laundry into the laundry service. But I don't care about the total idle time such as reading the Complete Collected Posts of Edvard. So you'll end up with a total Idle1 of an hour and a half, and 17 minutes visiting the laundry service.

C: "Emergency Checksum" - With brutally simple math perhaps 3x a minute, the computer simply looks at the computer clock and its various timestamps and accumulates here if something goes wrong and the timed values go off. It could add these back into one of the other categories to keep them on track. Could involve a user dialog if it gets really out of whack. This could also cover the case of the time program closed and re-opened. This part would notice "hey, I'm missing 8 minutes, where do you want to put them?" (Cases include both reboots and "Gaaah I have too many open apps" RageQuitting! Hehe)




tomos

  • Charter Member
  • Joined in 2006
  • ***
  • Posts: 11,961
    • View Profile
    • Donate to Member
Re: Looking for a very flexible timer
« Reply #12 on: April 14, 2015, 02:55 AM »
Tomos, have you found what you need yet?  If not, I'm working on a few ideas in Pascal/Lazarus.
Questions:
1- Would you want to always track time from 0? or should the beginning time be settable, maybe even from actual time?
2- Would you want to have the tasks/notes be running timestamped? or starting a new task starts from 0?
3- Should a list of tasks/notes be hidden until exported, or should there be a running list showing?

I'm having trouble getting everything to sync up close-to-perfect with real time, so:
4- What kind of time tolerance would be acceptable? Say, +/- 1 or 2 minutes per hour?

5- Hotkeys?

If you could, sketch out how you'd like the UI to look.  The Trout example is good, but a slider would only be possible if there were a definite 'quitting time', like say you only want to spend 5 hours doing what you're needing done.  A slider would be rather inaccurate as well.  In the code I'm playing with, I have buttons for forward/reversing seconds, minutes and hours.  No direct text entry yet.

Let me know, I'd love to stretch my coding muscles even further...

Great :)

1) No / Yes / Yes - i.e. ideally would be startable from say 1 hour or 15 mins - starting from real time would be a bonus but not necessary to me.

2) this question overlaps with #1 (?) Timestamped would be a bonus, but again, not necessary to me.

3) I'd prefer a running list shown

4) a couple of minutes wouldnt bother me

5) Hotkeys are always good - but for what exactly :-/
Its difficult to find universal hotkeys that will suit every system, so probably better to either have customisable hotkeys - or no universal ones.
I imagine it running in the tray, when I think about it, mouse is fine really.

Wow, it's difficult to imagine an app completely from scratch.
I'm good at being critical of UIs that already exist - I can try them out and see their weaknesses. But I will give this a go and post some sort of a sketch shortly.
Tom

tomos

  • Charter Member
  • Joined in 2006
  • ***
  • Posts: 11,961
    • View Profile
    • Donate to Member
Re: Looking for a very flexible timer
« Reply #13 on: April 14, 2015, 04:14 AM »
some method of selection on the left there

Screenshot - 2015-04-14 , 11_12_51.pngLooking for a very flexible timer

It's starting to seem a bit more like a PIM/IM - I wonder are we trying to reinvent the wheel :-\

what do you/ye think?
Tom

Edvard

  • Coding Snacks Author
  • Charter Honorary Member
  • Joined in 2005
  • ***
  • Posts: 3,017
    • View Profile
    • Donate to Member
Re: Looking for a very flexible timer
« Reply #14 on: April 15, 2015, 01:34 AM »
I'm fascinated with what could cause that big of a time gap! I thought computers were pretty good at keeping time! I could see off by a few seconds, but then maybe do "leap adjustments".
Exactly.  There's quite a span of difference between lower-level tracking along with system time, and throwing a sleep(1000) and calling it more or less one second.  If the system is reliable, that's good enough.  But if any significant load occurs in the larger time period, the discrepancies can add up.  I planned to do some testing to indeed see if real-time tracking is needed, or if 1000-millisecond timers can do "good enough".

It's starting to seem a bit more like a PIM/IM - I wonder are we trying to reinvent the wheel  :-\
Well, I don't know of any PIMs that track time spent on multiple tasks down to the second, so there is a wheel to be invented yet!  :P

Like I said, this would be a programming exercise for me, and hopefully something you can make use of.  For now, here's a teaser screenshot until I can get back at it tomorrow.  Sleep time now.  I still haven't implemented a few things (obviously), and the spacing of the UI elements need work, but I'm getting there...

tomostimer.png

tomos

  • Charter Member
  • Joined in 2006
  • ***
  • Posts: 11,961
    • View Profile
    • Donate to Member
Re: Looking for a very flexible timer
« Reply #15 on: April 15, 2015, 02:48 AM »
Looking great Edvard  :up:
-
ps was thinking FlexiTimer for the name (?)
Tom

TaoPhoenix

  • Supporting Member
  • Joined in 2011
  • **
  • Posts: 4,642
    • View Profile
    • Donate to Member
Re: Looking for a very flexible timer
« Reply #16 on: April 15, 2015, 06:09 AM »
Looking great Edvard  :up:
-
ps was thinking FlexiTimer for the name (?)

DinoTimer!

:D

Edvard

  • Coding Snacks Author
  • Charter Honorary Member
  • Joined in 2005
  • ***
  • Posts: 3,017
    • View Profile
    • Donate to Member
Re: Looking for a very flexible timer
« Reply #17 on: April 17, 2015, 10:06 PM »
Sorry I haven't checked in with more progress, I've been a little under the weather lately and can't think as straight as I normally do (which isn't saying much...).  On the other hand, I did figure out how to make the grid thingy resize with the GUI, which was driving me batcakes.  I got it so the time columns stay the same size and the Task one resizes.  It's the weekend now, so I can get back into the 'real' coding part.

tomos

  • Charter Member
  • Joined in 2006
  • ***
  • Posts: 11,961
    • View Profile
    • Donate to Member
Re: Looking for a very flexible timer
« Reply #18 on: April 18, 2015, 01:19 AM »
^ no worries, hope you feeling better
Tom

Edvard

  • Coding Snacks Author
  • Charter Honorary Member
  • Joined in 2005
  • ***
  • Posts: 3,017
    • View Profile
    • Donate to Member
Re: Looking for a very flexible timer
« Reply #19 on: April 18, 2015, 07:48 PM »
Feeling a *little* better, so working on this is my "down" activity.  :P

OK, so it looks like this project is shaping up to be the most ambitious one I have done to date, and is really stretching my "how do I do that?" muscles.  I'm not going to give up, but before I go any further, I feel a need to ask for opinions on implementation and direction.  Tomos, since I intended this as an answer to your appeal, I'll take your suggestions first, and implement them as I am able, but I'm open to advice from anyone.

Regarding the clock, and time-keeping in general:
Right now, the clock is started and stopped via clicking on the clock text itself; the background changes between light green and pink to indicate the status. Should it instead:
  -Use a separate start/stop button?
  -Click on the clock allows manually editing the time?
  -Clicking on the "Reset" button sets the clock to 0.  How about a Right-click sets it to the current time, or vise-versa?

The buttons on either side of the clock allow incrementing the seconds/minutes and I planned to add a third for changing the hours, but then I thought about leaving off the buttons, and just set the time manually, or would the buttons still be convenient?

Regarding the "New Task" button:
  -Is that an appropriate name for the function it does?  Or is there a more universal word for "something I'm doing that I want to measure the time I've spent doing it"?
  -As it is now, when the "New Task" button is clicked, it stops the clock, enters the Task and Begin time in the next available row.  I had planned to make it add the End time and Total time when another Task is entered, but that got me thinking... is that really the best way?  What would your opinion be on how to coordinate setting a new task, begin and ending time, and coordinating with the clock?

Regarding editing:
The grid component is where the Task, Begin, End, and Total are displayed. It's actually a complex beast for a single component, and is the source of much of my research on this project.  
As it is now, once an entry is listed in the grid, it is not editable, because I assume that the time spent on any task is an important metric, and adjusting for breaks and whatnot should be restricted to within the time spent, not fudging the numbers after the fact; BUT:
  - Should I allow direct editing of the contents after the fact?  Of course, one could simply edit the exported text file if the desire arose, I just think it's too much opportunity for 'cheating' to allow in-grid editing, and besides, at that point why have a timer at all? Why not just fill in arbitrary numbers in an Excel spreadsheet?
  - How about deleting rows? (I'm actually OK with that idea).

Regarding the menus: Any ideas for the menu items?
As I have it now, the menu items are -
File
  -Load (to continue a previously-exported time sheet from where you left off)
  -Save (or Export)
Edit
  (nothing in here yet, maybe not needed, unless some preferences be thought up)
Help
  -Manual
  -About

Anything else?

--EDIT--
Regarding exporting:
What file format should be used for the export file?
  -Plain text CSV?
  -Good ol' XML?
  -The new kid in town JSON?
  -Something entirely different (YAML, SDL)?
« Last Edit: April 18, 2015, 10:04 PM by Edvard »

tomos

  • Charter Member
  • Joined in 2006
  • ***
  • Posts: 11,961
    • View Profile
    • Donate to Member
Re: Looking for a very flexible timer
« Reply #20 on: April 19, 2015, 07:25 AM »
Sounds great Edvard :up:
I added some numbers for easier reference:

[1] Right now, the clock is started and stopped via clicking on the clock text itself; the background changes between light green and pink to indicate the status.
seems good!
[1a] I'm presuming whichever Task is running is highlighted in some way?)


[2] The buttons on either side of the clock allow incrementing the seconds/minutes and I planned to add a third for changing the hours, but then I thought about leaving off the buttons, and just set the time manually, or would the buttons still be convenient?
no need for buttons.
[2a] By 'set the time manually', do you mean simply change the numbers in the time field?


[3] "New Task" sounds good.
[3a] when the "New Task" button is clicked, it stops the clock, enters the Task and Begin time in the next available row.  I had planned to make it add the End time and Total time when another Task is entered, but that got me thinking... is that really the best way?
Am I understanding correctly here:
you're talking about starting a new task when one is currently running; and saying that the old one would be stopped and given end-time etc.
So, re [3a] I'm unsure: what would / could be better there?


Regarding editing:
As it is now, once an entry is listed in the grid, it is not editable, because I assume that the time spent on any task is an important metric, and adjusting for breaks and whatnot should be restricted to within the time spent, not fudging the numbers after the fact; BUT:
[4a]  - Should I allow direct editing of the contents after the fact?  Of course, one could simply edit the exported text file if the desire arose, I just think it's too much opportunity for 'cheating' to allow in-grid editing, and besides, at that point why have a timer at all? Why not just fill in arbitrary numbers in an Excel spreadsheet?
[4b]  - How about deleting rows? (I'm actually OK with that idea).
-
[4a] is this correct:
the grid will show a start time, and end time, and a total. The total is *not* end-time minus start-time, but will be whatever was shown in the timer clock, based on starting/stopping of same, and including any modifications made by the user.
^IIUC, then, there would be no need to edit anything in the grid. The only thing that might beg editing would be the description i.e. the task name - but if that's in any way difficult, I would leave it out.
-
[4b] so deleting a row would delete a task?
Could confirmation be requested?


[5] menus sound good


[6] eport to CSV would be what I would use
Tom

Edvard

  • Coding Snacks Author
  • Charter Honorary Member
  • Joined in 2005
  • ***
  • Posts: 3,017
    • View Profile
    • Donate to Member
Re: Looking for a very flexible timer
« Reply #21 on: April 19, 2015, 05:12 PM »
[1a] I can add that

[2a] Yes, and the way the "String to Time" function works, you enter something like "10:47:20" or "5:30" or even "7 pm", but not "4".  I thought the buttons might be a good way to add or subtract a few minutes or seconds at a time, without having to re-enter the time manually.  I'll keep them for now.
Also, I'm thinking that the 'Reset' button should reset the clock to the 'Begin' time.

[3a] To explain: I'm finding a bit of a dance between starting/stopping the clock and the 'New Task' button.  As the code sits, stopping the clock adds the end time and total to the current row, but re-starting the clock and stopping later will amend it.  Clicking 'New Task' starts a new row, leaving the previous one locked, but there is a bit of a bug; if the clock had never been stopped on the previous Task, then clicking New Task will simply start a new row without 'finishing' the previous one or stopping the clock.  Describing it now, I think I know what to do:
1- 'New Task' starts a new row with the task title, but no time, and will set the 'Total' time for the previous task and stop the clock, unless it is the first entry in the list.  The 'Begin' time will not be set until:
2- Starting the clock sets the 'Begin' time, and stopping sets the 'End' time, but does not set 'Total', as the clock can be re-started, which will change the 'End' time entry.
3- To finish up a sheet of tasks, simply click 'New Task' with a blank entry.  That will finish off the last 'Total' entry and stop the clock.
Sound good?

[4a] The Total is End time minus Start time.  The timer counts from whatever time it is set to.  Should it be different?
Editing just the Task entry in-grid while locking the time entries may be problematic.

[4b] Correct.  I could add in confirmation, no problem.

[5] For the 'Edit' menu, I'll add in "Set time", "Reset", "Reset to 0".

[6] CSV it is.  The Grid component's built-in export format is CSV, so that'll be easy.

tomos

  • Charter Member
  • Joined in 2006
  • ***
  • Posts: 11,961
    • View Profile
    • Donate to Member
Re: Looking for a very flexible timer
« Reply #22 on: April 20, 2015, 08:57 AM »
2a & 3a sound great :up:

-----------------

[4a] sorry, I'm still confused here
How about this scenario:

  • a) I start the clock on a task
  • b) I stop it for a break
  • c) start it again
  • d) take a break and forget to stop it, so when I come back I stop it, and:
  • e) I modify it manually (or manually using the buttons) to substract my break time

so the total would be (a to b) plus (c to d) minus (time adjusted in e)
-
Is that correct?

--------------------

4b / 5 / 6 sound great :up:
Tom

Edvard

  • Coding Snacks Author
  • Charter Honorary Member
  • Joined in 2005
  • ***
  • Posts: 3,017
    • View Profile
    • Donate to Member
Re: Looking for a very flexible timer
« Reply #23 on: April 22, 2015, 11:39 PM »
Wow, has it been 2 days?  :o

RE: [4a]
When you start a task, the start time is set.  When you take breaks, set the time back, etc. you are altering the End time, so when you finally stop the clock, your final end time is what gets calculated, which will reflect the breaks and fudges along the way, because you've done the adjustments "on the fly".  There will be no breakpoints in-between to add up.

I only get an hour or so coding time before bed, so I haven't made a ton of progress.  Currently reading up on the "TStringGrid" component, which is a somewhat complex beast.  Trying to get the highlighting on the current task, it doesn't automagically do it for you.  Also working out the kinks in the start/stop/new task workflow.  I think most of the business logic is done, I just have to make the pieces work together without causing more bugs, and I still have the exporting code to do.

I'll post more progress as I go...

tomos

  • Charter Member
  • Joined in 2006
  • ***
  • Posts: 11,961
    • View Profile
    • Donate to Member
Re: Looking for a very flexible timer
« Reply #24 on: April 23, 2015, 03:25 AM »
 :Thmbsup:

and yeah -
that with 4a is good then :up:
Tom