# Beeminder API

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:

1. To get a better idea of how much time I actually have. Especially for hobby projects and such.
2. To figure out what I spend that time on.

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.