You might be able to do something like this automatically on Linux at least. You can have a job that asks the X server what the title of the focus window is, which in the case of a browser will include the name of the active tab. In the case of a terminal, your prompt_command can set the tab or window title which would also get caught. Emacs can set its own frame title if you want that too. Etc. etc.
I suspect Hammerspoon on OSX could so something similar.
Pretty sure something like this exists for X11. If not, it would only be a few lines of shell code calling out to xlsclients, xwininfo, etc.
It makes me wonder if you could use a body camera and some machine learning to guess what the user is doing and then just provide a log to the user of their daily time spend. You could even break it down by minute. With a corresponding app on their PC and phone, you could turn "Phone time" into a description of what exactly they were doing on the phone.
15 minutes is the smallest billable increment for most very expensive lawyers and consultants. I'm guessing the reason is because anything less, like every 10 minutes, is just too much granularity and overly disruptive to getting work done.
The standard billing increment in the U.S. is tenths of an hour, i.e. six minutes. I'm sure someone, somewhere bills in ten or fifteen minute increments, but the standard is six [1].
Source: Collaborated with multiple biglaw attorneys on ideas for a more efficient time tracking method.
About your collaborations, did you come up with anything interesting?
The system I’ve settled on is to just keep a steno notebook on my desk, and write a couple words in one column, and hours in the other.
Something like:
1, 1.4, 3.4 | Revise App. Br.
Timers got too confusing because of multiple tasks, and any system involving typing on a computer or using my phone had too high an activation cost and ended up needing supplementing.
It involved an Apple Watch app that was essentially that. You’d set up your matters beforehand and use a one button start-stop timer with voice dictation for notes. It was an improvement in my opinion.
Security concerns around the product itself make it somewhat more complicated given the sensitive nature of the data.
Creator here - surprisingly, it's less annoying than you'd think, (at least for me).
I built this mostly from the point of view of personal productivity/improvement.
The idea is that it will keep asking you what you're doing even when you don't feel like putting an effort into tracking your time that day. Even when you didn't sleep enough or feel lazy, it'll still keep asking you, collecting the stats, and reminding you that it's watching.
I like the idea a lot, because i have memory problems and tend to get distracted very easily, which causes me to often forget what i was doing. So a constant reminder is very helpful.
"What have you been doing in the last 15 minutes?" - "I've been trying to get back into the task I was working on after my concentration was broken because I needed to update this time tracker"
What would be awesome is to include an option for random time, stochastically centered around a certain length, since that is perfect for not being able to game the system. I know that a tool called "Beeminder" had something like this back in the day.
This. TagTime (which is Free, made by the Beeminder people, and plays nicely with their goal tracking product if you want it) is scheduled such that you are equally likely to be 'pinged' at any moment as any other, with an expected value of every 45 minutes.
I have been using it for the past five years or so. Apart from being a gloriously hacky bundle of perl scripts (and not playing wonderfully well when run on multiple machines) I've found it perfect. There's also an Android version nowadays I think, though.
I use Daylio for this. It tracks moods that you can configure (and sub-class, so "excited" and "relieved" could be under "good") as well as any activities you add (exercising, coding, watching movies, etc). You can then see your mood over time correlated with what activities you engaged in those days, as well as export it to do some analysis of your own. I just passed a 365 day streak, and it was super interesting to look back and see e.g. how many days I worked, how many days I drank, how many days I played video games, etc., as well as how many days I was happy, sad, anxious, etc
Some companies that offer remote work already have more advanced solution: take screenshot every 10 minutes, then feed it to AI to check whether the user is working or slacking :)
I was thinking about how more and more people will be working remotely and what services would be beneficial to offer (such as ensuring productivity of employees) but this seems almost dystopian to me
yes I hired some guys from india off of an outsourcing site. There was a checkbox there if I required screen shot software installed on the devs machines. I did not require it, but when I got to talking with the guys, they said, "yeah we just use virtual desktops for that app so it looks like we are always working :P"
Really not the smartest idea when you look at tools like Gryzzly that are doing the time tracking from Slack ! People are better when self accountable, like Maesure makes you feel. Interesting experiment !
Almost nobody tracks their time to better understand how they are spending it. I've talked to several people that have started, but even the most detailed oriented find it to not be worth the hassle.
If you really want this data, I think it's best to correlate data crumbs you leave after the fact and tally up your time at the end of the week. GPS data, computer activity logs, phone screen time, etc.
Another good enough answer is to track the time that is most important to you. Billable hours, exercise time, etc.
I track all my time for the week in 15 minute intervals on a piece of paper, spending ~15 minutes planning my week on Sunday evening or Monday morning. Funny enough I started by doing what you suggest: only tracking the time that is most important. I would suggest the same for anyone thinking of trying this out.
This sounds like it's about accountability of your time, not understanding where your time goes. People already know they aren't doing what they want to be doing, so they have reminders to keep them accountable to themselves.
I've been tracking all my productive hours since November 2018. I can highly recommend it. I also know some others that do the same. nateliason.com comes to mind.
It's not as insightful as I expected, but certainly brings about enough benefits to continue doing it.
I recommend everybody do it at least for a while, and go back to it when productivity suffers. It's remarkable how well it can keep you focused- not screwing off when you know you're going to have to write it down if you do.
I have done it before, there are tools that you can install that will capture the title of your active window and then graph it.
I can see if I spend 2 hours in Terminal or 1 hour in Vscode or 5 hours in Firefox. I can even see the title of sites I spent most time in the browser, etc.
That's the best approach I have found. One example I can think of is https://wakatime.com/ I personally use a python script I found a long time ago that does the same while keeping all my data locally. But it has less integrations and is not as nice.
> Almost nobody tracks their time to better understand how they are spending it.
It's not something a person needs to do forever (unless they want to), but doing it for a week or 2 can be very informative. It's a lot tracking what someone eats for a week to really understand where all the hidden calories are coming from. People are terrible at looking back any length of time and remembering the details of something.
Haha nice. I do basically the same thing except with a script.
while true; do
sleep 900
zenity --entry --text="what u doin" >> done.txt
done
Although now it's just a reminder that isn't logged.
zenity --question --text "Are you working?"
It doesn't really mean "Are you goofing off" but rather "Are you doing what truly matters right now instead of refactoring code or responding to less-than-useful emails?"
I have similar that ties in to Toggl timers. If the time's within the work day and I've not got a timer going it bugs me to do stuff [1]
If there is a timer running it also knows (based on my calendar) if I should be doing something else and asks if I am and offers to change the timer for me [2]
[1] custom script
[2] the same custom script pings my phone/tablet via a Pushcut webhook. This pings me the notification but also allows me to tap the notification and start a new, relevant, timer using iOS shortcuts and Zapier
I've never had a boss or customer say "I need those class names changed, and before Tuesday!" :) It sometimes helps achieve goals, but it's never the primary goal itself.
Refactoring code is part of the work being done much like emptying the dust bin is a part of ensuring you can continue to clean house effectively. Leave one and the other suffers. It's a goal as much as having a clean house is - it is inseparable from it and a direct consequence of doing it, but it is often discounted or ignored - because it is seen as a separate task. It is not.
I wonder if it'd be possible to check if only mouse events have occurred within the past 10 minutes or so. Then pop up a message saying "Stop browsing and get back to work!"
Instead of doing it every 10 min, it should keep expanding the period while you keep giving the same answer.
so 10, 20, 30, 60, 120.
There used to be a app for mac that did just that. To me it was the perfect balance between convinience and useful data.
Not necessarily. If it did that, it will skip a lot of things you do after ending a long task.
I use one I made myself, and it is set to ask every 13 minutes - the largest prime below 15. Being a prime means it's unlikely to align to any real-world task boundaries, and it's also coprime to 60, so it won't keep asking at the same times every hour.
(Timer like this is actually a nice use case for a smartwatch, along with pomodoro timers. It removes friction from the UX, makes the whole thing less distracting, and allows it to be monitor almost all tasks during the day.)
It should go up if you're focused and down if you're not. If you are on track, it will go from 30 to 60. If you are not on track, it will go from 30 to 20, etc. That way the more in the flow you are, the less interruption. However as with all things, the weakest link is us. I'll just ignore it if I'm not motivated enough. :-)
I think a question asking app that helps you build a reliable schedule would be useful . Eg what are you doing ? When do you normally do it ? Are you doing X now? Should you be? Etc
I like the app, but I am a bit confused by the data usage.
* As a starter: The source code is only a JS snippet. No HTML in there.
* Right away I "fullstory.com" appear in the JS. So I have reason to believe that all user interactions (mouse, keyboard, etc.) are uploaded to fullstory.com. Not sure this is actually the case. Certainly not in favour of it.
* In the network tab, I see requests to heapanalytics.io.
Setting aside the question if such data use is necessary, appropriate, or done elsewhere.
I wonder if this is actually legal.
I certainly did not consciously agree to my data being collected in this way and shared with third parties.
When you scroll down, you eventually see a Privacy Policy and TOS links in grey:
> By using this site you agree to the [Terms and Conditions] and the [Privacy Policy].
- Is a text like this actually effective?
- Am I violating EU law, if I use the same patterns in my Apps? (I am EU based.)
This actually sad. People here understand why people despise these schemes and tracking yet still do it and post it here. Can't even blame marketeers or manager pressure.
You're allowed first-party cookies that are necessary for your website to work.
The whole cookie banner and permissions things is partly a smoke-screen by advertising agencies to hide the fact that you don't actually need up front consent for necessary cookies. :)
It's depressingly funny how carefully some of those banners are worded.
"Cookies are necessary to make this site work. Click here to enable cookies!" Fine, but those aren't the same cookies, and mysteriously the website works just fine for me even if I kill the third-party cookies.
IANAL, but AFAIK it is a common misconception that cookies are a problem. They don't.
Closer to the truth is that tracking is a problem.
So as long as you don't use any tracking, you don't have to care about privacy consents. But be aware that simple things like assets hosted on 3rd party servers (e.g. web fonts) can be used to track your users by your partners. Furthermore, everything related to ads or social media is most likely being used to track users.
So if you want to avoid any trouble, host everything yourself and don't include any tracking/ads/social media. However, most likely you will still be required to have a privacy policy on your page if you have EU users.
EDIT: Btw. when I say 'tracking', I mean web tracking like Google Analytics, not time tracking (might be ambiguous in this context).
A question, since I have the ear of an individual who chose to add tracking to their small website: what exactly do you hope to get from these trackers? Do you think there could be some critical piece of information which could be gleaned from these logs which could help?
I associate trackers with megacorps where they're essentially playing Telephone between management and the boots on the ground doing the work ("we need tracking!" "ok, next on the work checklist is tracking, and here's a service that says it does that...").
We make a large, enterprise-targeted app at my startup. Fullstory has accelerated our search for product-market fit by allowing us to make some significant discoveries in how users use our app.
We could have made all these discoveries by properly instrumenting our code with our own tracking framework. That said, Fullstory provided us a big bang for our buck in [time spent : value provided]; half-day implementation led to all the usage info we could need.
We've gone as far as creating a recurring "Game Tape Friday" meeting where the whole development team sits down and watches 5-10 user sessions together to record bugs and possible UX improvements.
We're not a small website so this anecdote may be of limited value to you, but I would personally give up syntax highlighting before I would give up Fullstory.
Fullstory basically lets me sit behind the shoulder of every user and e.g. watch them use the app in a way I didn't think of, or stumble over the features that I thought were obvious but turns out are very counter-intuitive.
It's totally a game changer for UX design.
Heap, Google Analytics, etc are actually not as useful; I find the app's DB and server logs provide more relevant data. So I don't think I'll add them back.
Yes, it's a violation of GDPR to tell people that they're consenting. You have to ask them, and they have to perform an "affirmative act" - even a pre-checked checkbox is a violation.
Mine uses Pebble and Tasker (with AutoPebble to mediate between the two). It works like this (there's no easy way to export something that's not an XML dump full of bloat, so I'll just describe it):
- Profile: every 13 minutes
between 08:00 and 23:00
- Launch task: Request time log
- Profile: on command from AutoPebble
- Launch task: Log time
- Task: Request time log
- Show a screen on Pebble via AutoPebble
- Type: List
- Contents: %OPTIONS
- Vibration pattern: 300, 200, 300
- Task: Log time
- Save "%DATE, %RESPONSE" into a CSV file.
- Variable: %OPTIONS
- hn, work, eating, foodprep, hobbyproj, ...
Running a tool like this on smartwatch is a win, because it's minimally distracting, and easy to use for everything I do daily. As said elsewhere, I picked 13 minutes to have something below 15 minutes that won't accidentally overlap with periodic tasks or generate regular patterns on the clock. I used to have a bit of randomization in there (skip Request time log if random%2 == 0), but it turned out to be more annoying than useful, as it would frequently miss an hour worth of data.
I made it one afternoon in a grand total of ~30 minutes (including debugging and testing). It requires no Internet connection, doesn't spy on me, I can use it anywhere I am as long as I have my phone in my pocket, I get to own my data in a machine-readable format, which I can trivially send out to my desktop for processing later. Overall, it's a win, and just an example of Tasker being amazingly useful tool in general.
EDIT:
Some extra use notes:
- The logged time is the time I selected an option on my smartwatch, so if I delay or miss a time log request, nothing bad happens. I don't expect my CSV to have perfectly regular entries.
- If I don't select an option in 13 minutes, the prompt will be overwritten by new one; again, nothing bad happens.
- To add, change or remove options, I simply edit the %OPTIONS variable on my phone.
- In the rare case when I select a wrong option, I pull up my phone and use nano in Termux session to quickly edit the CSV directly.
Please, do NOT sign up in this site until author fixes this noobish vulnerability:
When the sign up request is sent, it shows a S3 error not finding corresponding key. The true misdeed is requesting the resource with get and passing email and password as query parameters in the URL. Such a shame >-(
Yes. But URLs tent to be logged more than HTTP headers or payloads. Any L7 proxy can spit out requested paths and the password will be preserved in different places for long periods of time.
Wow. I can't believe that anyone would ask to be interrupted every f'ing ten minutes for nothing.
I can't stand being interrupted more than once or twice a day.
The person you're referring to is talking about a different kind of focus -- focus as in not going off task.
Some of us have a habit of getting distracted from the task at hand easily and going off on a HN/Youtube/Reddit/browsing/timewasting session.
Continual prompts like this you could catch this within 10 minutes in to a timewasting session and remind you to get back to work.
Personally I probably wouldn't use 10 minutes though as it seems a little too frequent and would go closer to the standard Pomodoro time of 25 minutes (which I have personally used and found useful).
As well as a reminder for those not good at staying on task, it sounds worth considering for those who spend their day satisfying constant small ad hoc requests who later get asked "What have you been doing all day?"
Hopefully it has a "same as last time" button, I doubt this has the same cognitive distraction level as fielding a question from a colleague as well. I.e. understand their question, think of the context, etc etc
I wrote and ran something like this but the sweet spot was 20 min not 10. The purpose for me was to discover how many 20 min chunks of time were actually productive. The efficiency of planned tasks declines when you assign more hours to it.
But that was not what I ended up measuring. The widget (it was) was like someone looking over my shoulder and modified my behavior. I became insanely productive for a few days then had a weird kind off burn out where I declined to enter anything or wrote "watching youtube videos" for days.
Eventually I replaced the widget with a careful cut out from the movie 1984 so that it looked like a telescreen with big brother looking at me. A factory bell would ring and I would be "forced" to take a break. I got bored with that before figuring out the ideal work/break ratio. (It didnt care what I was doing)
I considered automating self-inflicted activity monitoring but any amount alters your behavior... much like your gut told you it would.
This is a great idea, but where is the privacy? The privacy policy literally says that your personal information will be shared with Google & other third party apps. [0]
This is a great way to collect data on what people do every day.
The problem with all time trackers that require any manual input is that eventually you stop using them. Either a small disruption in your life, or simply that the habit doesn't stick.
Full recording of physical and digital actions + analytics might work. Some sort of spying on yourself.
128 comments
[ 6.6 ms ] story [ 193 ms ] threadI suspect Hammerspoon on OSX could so something similar.
Pretty sure something like this exists for X11. If not, it would only be a few lines of shell code calling out to xlsclients, xwininfo, etc.
Just food for thought.
Source: Collaborated with multiple biglaw attorneys on ideas for a more efficient time tracking method.
[1]: http://www.cand.uscourts.gov/cja/billing_increment_chart
The system I’ve settled on is to just keep a steno notebook on my desk, and write a couple words in one column, and hours in the other.
Something like:
1, 1.4, 3.4 | Revise App. Br.
Timers got too confusing because of multiple tasks, and any system involving typing on a computer or using my phone had too high an activation cost and ended up needing supplementing.
Security concerns around the product itself make it somewhat more complicated given the sensitive nature of the data.
I built this mostly from the point of view of personal productivity/improvement.
The idea is that it will keep asking you what you're doing even when you don't feel like putting an effort into tracking your time that day. Even when you didn't sleep enough or feel lazy, it'll still keep asking you, collecting the stats, and reminding you that it's watching.
Cool build though!
Found the blog post they did back then: http://messymatters.com/tagtime/
I used this for a while and it really was extremely helpful since it activated the "gamey" part of my brain.
I have been using it for the past five years or so. Apart from being a gloriously hacky bundle of perl scripts (and not playing wonderfully well when run on multiple machines) I've found it perfect. There's also an Android version nowadays I think, though.
That blog link explains it well.
I'm being picky because I do plan to use this daily. But I am already happy. Kudos to you dev. =))
Why would you do it to yourself? It’s yet another distraction for any deep work.
You could plot a curve of an activity and do fun math with it.
I was thinking about how more and more people will be working remotely and what services would be beneficial to offer (such as ensuring productivity of employees) but this seems almost dystopian to me
<Error><Code>NoSuchKey</Code><Message>The specified key does not exist.</Message></Error>
If you really want this data, I think it's best to correlate data crumbs you leave after the fact and tally up your time at the end of the week. GPS data, computer activity logs, phone screen time, etc.
Another good enough answer is to track the time that is most important to you. Billable hours, exercise time, etc.
It's not as insightful as I expected, but certainly brings about enough benefits to continue doing it.
I can see if I spend 2 hours in Terminal or 1 hour in Vscode or 5 hours in Firefox. I can even see the title of sites I spent most time in the browser, etc.
That's the best approach I have found. One example I can think of is https://wakatime.com/ I personally use a python script I found a long time ago that does the same while keeping all my data locally. But it has less integrations and is not as nice.
It's not something a person needs to do forever (unless they want to), but doing it for a week or 2 can be very informative. It's a lot tracking what someone eats for a week to really understand where all the hidden calories are coming from. People are terrible at looking back any length of time and remembering the details of something.
If there is a timer running it also knows (based on my calendar) if I should be doing something else and asks if I am and offers to change the timer for me [2]
[1] custom script
[2] the same custom script pings my phone/tablet via a Pushcut webhook. This pings me the notification but also allows me to tap the notification and start a new, relevant, timer using iOS shortcuts and Zapier
Makes me wonder about code golf for shell scripts. Now there's a rabbit hole...
IMO you can spend days shuffling around the same code if you want. It's not that refactoring is bad it's a priority thing.
Also if you refactor too frequently that's a sign you need to take a step back and more thoroughly plan out your system.
You want good code that's maintainable? You're refactoring (and probably adding tests) as you go.
I use one I made myself, and it is set to ask every 13 minutes - the largest prime below 15. Being a prime means it's unlikely to align to any real-world task boundaries, and it's also coprime to 60, so it won't keep asking at the same times every hour.
(Timer like this is actually a nice use case for a smartwatch, along with pomodoro timers. It removes friction from the UX, makes the whole thing less distracting, and allows it to be monitor almost all tasks during the day.)
EDIT: See https://news.ycombinator.com/item?id=20625346 for details.
* As a starter: The source code is only a JS snippet. No HTML in there.
* Right away I "fullstory.com" appear in the JS. So I have reason to believe that all user interactions (mouse, keyboard, etc.) are uploaded to fullstory.com. Not sure this is actually the case. Certainly not in favour of it.
* In the network tab, I see requests to heapanalytics.io.
Setting aside the question if such data use is necessary, appropriate, or done elsewhere. I wonder if this is actually legal. I certainly did not consciously agree to my data being collected in this way and shared with third parties.
When you scroll down, you eventually see a Privacy Policy and TOS links in grey:
> By using this site you agree to the [Terms and Conditions] and the [Privacy Policy].
- Is a text like this actually effective?
- Am I violating EU law, if I use the same patterns in my Apps? (I am EU based.)
Most certainly, yes.
Won't put them back without adding consent.
There's also a first-party cookie called "visitor", though that will require a bit more work because there's actual functionality that depends on it.
It's those analytic services that we despise.
The whole cookie banner and permissions things is partly a smoke-screen by advertising agencies to hide the fact that you don't actually need up front consent for necessary cookies. :)
"Cookies are necessary to make this site work. Click here to enable cookies!" Fine, but those aren't the same cookies, and mysteriously the website works just fine for me even if I kill the third-party cookies.
Closer to the truth is that tracking is a problem.
So as long as you don't use any tracking, you don't have to care about privacy consents. But be aware that simple things like assets hosted on 3rd party servers (e.g. web fonts) can be used to track your users by your partners. Furthermore, everything related to ads or social media is most likely being used to track users.
So if you want to avoid any trouble, host everything yourself and don't include any tracking/ads/social media. However, most likely you will still be required to have a privacy policy on your page if you have EU users.
EDIT: Btw. when I say 'tracking', I mean web tracking like Google Analytics, not time tracking (might be ambiguous in this context).
I associate trackers with megacorps where they're essentially playing Telephone between management and the boots on the ground doing the work ("we need tracking!" "ok, next on the work checklist is tracking, and here's a service that says it does that...").
We could have made all these discoveries by properly instrumenting our code with our own tracking framework. That said, Fullstory provided us a big bang for our buck in [time spent : value provided]; half-day implementation led to all the usage info we could need.
We've gone as far as creating a recurring "Game Tape Friday" meeting where the whole development team sits down and watches 5-10 user sessions together to record bugs and possible UX improvements.
We're not a small website so this anecdote may be of limited value to you, but I would personally give up syntax highlighting before I would give up Fullstory.
It's totally a game changer for UX design.
Heap, Google Analytics, etc are actually not as useful; I find the app's DB and server logs provide more relevant data. So I don't think I'll add them back.
The main relevant sections are probably:
Article 7: https://gdpr-info.eu/art-7-gdpr/
Recital 32 (explains some of the valid/invalid methods): https://gdpr-info.eu/recitals/no-32/
I made it one afternoon in a grand total of ~30 minutes (including debugging and testing). It requires no Internet connection, doesn't spy on me, I can use it anywhere I am as long as I have my phone in my pocket, I get to own my data in a machine-readable format, which I can trivially send out to my desktop for processing later. Overall, it's a win, and just an example of Tasker being amazingly useful tool in general.
EDIT:
Some extra use notes:
- The logged time is the time I selected an option on my smartwatch, so if I delay or miss a time log request, nothing bad happens. I don't expect my CSV to have perfectly regular entries.
- If I don't select an option in 13 minutes, the prompt will be overwritten by new one; again, nothing bad happens.
- To add, change or remove options, I simply edit the %OPTIONS variable on my phone.
- In the rare case when I select a wrong option, I pull up my phone and use nano in Termux session to quickly edit the CSV directly.
10 mins is ridiculous and will make people ignore your product.
When the sign up request is sent, it shows a S3 error not finding corresponding key. The true misdeed is requesting the resource with get and passing email and password as query parameters in the URL. Such a shame >-(
Some of us have a habit of getting distracted from the task at hand easily and going off on a HN/Youtube/Reddit/browsing/timewasting session.
Continual prompts like this you could catch this within 10 minutes in to a timewasting session and remind you to get back to work.
Personally I probably wouldn't use 10 minutes though as it seems a little too frequent and would go closer to the standard Pomodoro time of 25 minutes (which I have personally used and found useful).
Hopefully it has a "same as last time" button, I doubt this has the same cognitive distraction level as fielding a question from a colleague as well. I.e. understand their question, think of the context, etc etc
But that was not what I ended up measuring. The widget (it was) was like someone looking over my shoulder and modified my behavior. I became insanely productive for a few days then had a weird kind off burn out where I declined to enter anything or wrote "watching youtube videos" for days.
Eventually I replaced the widget with a careful cut out from the movie 1984 so that it looked like a telescreen with big brother looking at me. A factory bell would ring and I would be "forced" to take a break. I got bored with that before figuring out the ideal work/break ratio. (It didnt care what I was doing)
I considered automating self-inflicted activity monitoring but any amount alters your behavior... much like your gut told you it would.
This is a great way to collect data on what people do every day.
[0] https://maesure.com/privacy-policy
[1] https://waitbutwhy.com/2016/10/100-blocks-day.html