Quick notes on my current interface for time-tracking
| quantifiedI don’t think I’ve posted a description of my current interface for tracking, so here are a few quick screenshots. This is the main interface that I’ve bookmarked on my phone and on my computer. It’s a simple web-based interface with lots of big buttons. It lets me track baby-related things as well as my time with a tap or two. If I need to do something more complicated, I can use the command button to pass a text command to my tracking interface.
For example, here’s what clicking on the Track button will show:
I sometimes need to backdate entries, so tapping on Adjust gets me this screen:
When I have a little more time, I might tweak the interface a bit, but it will do for now. I’m glad I put this together. It makes time tracking something I can do even with a baby, yay!
All the reports in my blog posts are handled by Emacs Lisp functions that talk to quantifiedawesome.com and summarize my time data. You can find the code at https://sachachua.com/dotemacs and lisp/quantified.el .
I probably won’t be able to help anyone build a similar system any time soon, but maybe these notes can give you a few ideas. =)
9 comments
Will
2017-06-09T18:58:02ZSacha, thanks for sharing this. Is quantifiedawesome.com set up to provide a button interface for users who sign up or is this something that you haven't made public yet?
sachac
2017-06-10T04:38:27ZAs you can probably tell, that button interface is totally idiosyncratic. It's a tangled mess of HTML and JQuery making calls to the Quantified Awesome API and to my personal adapter around baby-connect.com. Someday I might clean it up and make it something I can post in public, or even something people can configure. In the meantime, replicating it will require a bit of geeking around. The basic idea is pretty simple, if you're okay with HTML and Javascript - big buttons that do stuff. =)
Will
2017-06-10T11:56:08ZFrom reviewing your earlier posts, it seems like you changed interfaces a few times. But this one is based, more or less, on the approach you took here http://sachachua.com/blog/2... correct?
sachac
2017-06-12T05:45:58ZYup, that's a good starting point.
I switched from using Tasker + HTML + Javascript to NodeJS + HTML + Javascript when I found myself wanting to build my own interface around baby-connect.com (too many small-target clicks). My NodeJS server takes a string as a command (ex: "nursed left side for 5 minutes", or "track -5m kitchen") and dispatches the appropriately-reformatted request to baby-connect.com or Quantified Awesome, as appropriate. I store a copy of the baby data for easier analysis, too.
The combination of baby-connect and Quantified Awesome is so specific that I'm not quite sure how to build a general-purpose configurable thingy that other people might be able to use. The best approach is probably for you to build an interface of your own, if you can. Any chance you happen to be a NodeJS/HTML/Javascript sort of person as well? I can probably strip out my token info and share the rest of the source with you. Warning: it's a bubblegum-and-string amalgamation of hacks written while sleep-deprived.
I think it might be possible to build all the functionality I use into Quantified Awesome if I add multiple timeline support to the time tracking system, but complex coding has been hard to fit into my small, unpredictable chunks of focused time. That might have to wait!
Will
2017-06-12T18:37:40ZSacha, Thank you for taking the time to explain your overall approach! I truly appreciate it.
And I'm comfortable changing parameters but I'd have to rely upon my friends for assistance with NodeJS and Javascript. That said, your interface example in all its specificity is probably more useful to me than you might know so I'd welcome it should you decide to share it.
EDIT:
Maybe it would be best to experiment with the elisp you use to make org-mode and Quantified Awesome work together first. If that's successful, I'll be in touch about building an interface using your code as a model. Do you see any problems with Google two-factor authentication and the QA API as its used in your elisp?
sachac
2017-06-17T07:00:39ZHmm, I haven't tried that combination, since I've been using a username and password. I think you might be able to still define a username and password on the user settings page and use that to log in from Emacs Lisp so that it can get a token, keeping Google auth for convenience when you use the web interface.
Working on rebuilding my development environment and remembering where things are around here... <laugh> It's been a while!
radicalEd
2017-06-10T04:22:12ZAwesome, thank you.
Karl Voit
2017-06-21T14:48:34ZHi Sacha,
I've created a very similar interface (without the clever adjust feature) with Tasker for Android: http://tasker.dinglisch.net/
This can be created directly on the phone without any programming knowledge of Java or similar.
On my Android desktop I got an icon for "log". Pressing on it reveals a simple interface with a dropdown that holds the different "events" I want to log or an input field for a custom event. Confirming this selection results in a new CSV line of my mobile phone Memacs file: https://github.com/novoid/M...
The process of transferring data of the Memacs phone file to Org-mode is done by this Memacs module: https://github.com/novoid/M...
Keeping my data off the public cloud is a crucial thing to me: http://karl-voit.at/tags/pr... and http://karl-voit.at/cloud/
HTH
sachac
2017-06-23T05:53:52ZYou have a lot of cool stuff in memacs. =) Rock on!