Today I learned about the Beeminder API.
Beeminder is a goal tracking tool backed by commitment contracts. Roughly that means you make a commitment to make progress towards a goal and you track it. If you stick to it then you get a nice graph, and reminders of what you need to make progress on. If you fail then you cough up a pre-committed amount of money. Since this explanation hardly does it justice I highly recommend checking out the site. Also the blog has great posts on how people use the tool, as well as the science and philosophies behind it. I'm firmly a fan.
Another place to get information is the forum. Actually my dev lesson learned today is captured over in this post!
TLDR: The following API call will make a goal “integery”
curl -X PUT -d integery=true https://www.beeminder.com/api/v1/users/USER/goals/GOAL.json?auth_token=AUTHTOKEN
The long and short of it is I learned enough of the API in order easily customize my beeminder goals. This is something I've been meaning to do for a while, and it turned out to be relatively straightforward. Awesome.
Bonus: Time tracking
On a meta development note I spent some time digging into both Watson and taskwarrior as a way to keep track of my time. The reason I am interested in time tracking is twofold:
- To get a better idea of how much time I actually have. Especially for hobby projects and such.
- To figure out what I spend that time on.
Taskwarrior
I had tried taskwarrior in the past and really like the idea of a nice command line methodology with a seemingly robust ecosystem of integrations. Unfortunately I never got over the learning curve to where it was easy to start/stop, search/filter the tasks. Since it's such a full featured tool I'm pretty sure I am just trying to use too many aspects and am missing the core.
One thing I was particularly interested in was the bugwarrior integration to sync with Gitlab Issues. However when I tried it today, it was taking over 10 minutes just to do an sync. Perhaps a configuration issue on my end but somewhat of a bummer.
Watson
I had also previously read about Watson which just focuses on time tracking. It is also a command line tool but is absolutely simple and laser focused. Essentially just projects, tags, start and stop.
One thing that had changed since I last checked it out was the creation of Crick a synchronization backend with a nice user interface. I really like the clean and simple cli as well as the webpage.
One thing I ran into today was that the Crick has no method for deleting a frame/project. This means that while locally I can remove frame they always get restored from the server. It's open source so perhaps this can be added.
User Error
One pain point of the above is that they require me to remember to start and stop the clock. Since I already revealed my beeminder-fandom above I'd be remiss if I didn't also mention TagTime which seeks to solve this problem. I've also tried this one in the past but fizzled out because I didn't have a good system of what to report when it pinged me.
Future Work
Well between these three I probably spent a good portion of my time today that I could have otherwise been developing cool things. So perhaps the true lesson learned it less meta overhead tooling.