This web site has been retired. Please follow my activities at

the personal site of patrick paul

Python Wrappers for Beeminder & Streak CRM & FatSecret APIs

A few months ago, I started experimenting with Beeminder. They are a commitment device whereby you pledge money and promise to keep with a goal (e.g. running or reading nightly). You pledge to do something X times per week or else Beeminder charges you $Y. They offer integrations with RunKeeper, Duolingo, Github, and many more. In fact, I am writing this blog entry in my account and Beeminder tracks how many words I write each day. (I have pledged to write 100 words a day … easy!)

You can of course add any arbitrary goal, and make your pledge… For my part, I find it too easy to weasel when I am recording my data directly into Beeminder. On the other hand, integrations like RunKeeper track my actual running activities via the GPS-enabled mobile app. (Weaseling is faking the quantities you enter into Beeminder.) So if I am about to de-rail on a Beeminder pledge, I can either actually run (and have the RunKeeper integration feed my activity into Beeminder) or I can weasel by faking manual data entries into RunKeeper (instead of Beeminder!).

Fortunately, Beeminder has a developer API and I have written two further integrations for tracking some activities: Streak CRM (for my outbound sales calls) and Fatsecret (weight loss and exercise). ;) I think it has helped me be more diligent about make sales calls, and at any rate, at least I don’t need to duplicatively enter data into two different web apps!

These integrations are installed as cron scripts on my web server. I need to enter data into Streak CRM weekly for it to track into Beeminder… And my beeminder pledge amount keeps me from procrastinating. I’ve had the cron script ticking since late February when I wrote these scripts.

I took care to code the differing Streak and Fatsecret API wrappers in Python to have a similar class interface. Gists below.