Start work on prettier styling of main application
Update bug status in readme
Add mean hours to graph hover in report
A work sampling based time tracker. That runs in the browser with no additional anything. Try it out: https://xkqr.org/flowratio/
Here's some background: https://two-wrongs.com/flowratio-stochastic-time-tracking.html
Open the web page, and allow notifications. If it says "PENDING", go do whatever you were going to do next. At some point in the future, you'll get a notification and it will ask you about what you are doing. Write down a short keyword that indicates what you are doing RIGHT NOW.
If you want to structure your keywords, you can use a colon to separate a subcategory from a main category, like "work:docs" for writing documentation at work.
Once you've done this a few times, you can click on report to see how you spend your time.
You don't need to track everything you do in great detail! If you're curious e.g. how much time you spend in meetings, you can just tag "meetings" and "other" for a few weeks and you'll find out. Or if you want to increase the amount of time you spend on writing documentation, you can just tag "docs" and "other" for a while and try to make the number go up.
If you want to test your changes, open index.html in a browser and it should
work. Maybe you have to go through a separate web server like python -m http.server 8001
.
In development you might want faster feedback. Add ?dev=1 to the URL to get much more aggressive time constants. If you want to clear out the data because you have toyed around, load it with ?clear=1 – but remember to remove that before you refresh in case you collect data you want to keep.
I think these are the bare minimum needed to reach the dangerous dogfooding point.
There are also some nice-to-haves.
I can sense at least one advanced feature unlikely to happen.
These bugs are apparent.
[x] When AFK, it gets into an infinite loop somehow
[x] Fan speed goes up when using – caught in rerendering loop or just tired computer?
[x] Notification disappears after a brief while, despite requireInteraction: true – why is that? I'd prefer it to time out with the afk auto-submission.
[x] Subsequent prompts triggered when afk should be auto-tagged afk, not flowratio. That said, this is probably a low-prio bug since under realistic settings it will rarely happen. (But it does happen all the time under development, so it's easy to reproduce!)
[x] When my Windows laptop is closed, FlowRatio can generate both "off" and "afk" events, sometimes at the same time. Something something modern standby and how do I prevent it? - This happens also on Linux and I'm now thinking it's not that it does things while asleep, but rather that when FlowRatio catches up, everytime a new expired ping time is generated, the submission form races to auto-submit an AFK before the generation code submits an OFF. Sometimes the form wins handily and the OFF never comes in, sometimes the OFF wins and the AFK never comes in, and sometimes – and this was the clue – the AFK happens instants before the OFF and both are submitted – but never the other way around! - This seems to indeed have been the problem. I haven't gotten any double submissions now.
[x] When my Windows laptop is closed, FlowRatio seems to generate an excessive amount of pings, on average every 32 minutes. This might not sound far from 45 minutes, buuut unless I'm doing statistics wrong, this should happen extreemely rarely by accident. - For some reason, this may have been fixed now as well. I'm now consistently getting ping counts within 1–2 standard deviations. Not sure why fixing the above problem fixed this too, or if I'm just been lucky since then. It's worked long enough that I'm going to call it fixed for now.
[ ] Sometimes during night (when the Windows machine restarts, maybe?) ten tags from during the day are somehow copied onto the most recent off/afk samples. This is relatively easy to correct manually (export, change the tags to off, import again) but it's annoying and confusing!
My best guess is that it has something to do with the in-line sample
editing functionality, that it somehow saves the value of the text inputs
on top of the just-generated off pings, when maybe focus automatically
moves away from those boxes for some reason?
It does indicate that I should be more careful about using "unfocus as
save" for this sort of thing. Maybe I should add an explicit save button
just to rule this out as the cause.
These bugs are latent.
This is a fun refactoring project I might play with at some point.