Beeminder, Org Mode, and Mental Illness

So today I want to write a little bit about how I use productivity and organizational tools to help me deal with the problems I talked about in a previous post.

First off, I’ve been using Org mode on and off for a couple of years to try and organize my notes and my todos. It mostly works for me because it’s very flexible and I’m already a dedicated emacs user. I even use org2blog to post to this blog from my file. While the agenda in org mode is a really nice way to figure out individual things I want to accomplish, since I can list by day all the things I’ve scheduled and keep track of them that way, what’s more difficult is keeping myself working on long-term projects. By which I mean oh, say, publishing papers. The issue I have with working on long-term things is pacing myself. In a moment that feels entirely too arrogant, I can say that when I’m having a Good Day I can get a massive amount of work done. If I can get four or five Good Days in a row, I can pretty much start-and-finish a publishable piece of work. The problem is that I tend to burn out very quickly on my Good Days. I get frantic because I don’t know how long they’ll last and I tend to work myself into complete exhaustion, which then means I have a physical and mental crash that can last for weeks or months depending on how bad it is. Now, I’ve learned a lot about trying to manage my illness so that I can make the Good Days happen more frequently and crash less hard, but pacing myself is still really hard as is getting started again when I’ve had several bad days in a row.

That’s where beeminder comes in. Now, for those who haven’t heard of it beeminder is a cute little system for tracking goals you’ve committed to. They’re all just numeric metrics that you’re tracking in terms of weekly rates of increase or decrease, essentially. It integrates with a lot of things I already use, like codeschool, github, duolingo, etc. Now I understand that for most people the incentive is based around money and the fact that you will be charged a small amount if you don’t meet your goal. The idea is that this should override your inertia since an immediate loss of money is perceived as worse as having to stick to your goals consistently.

In my case, the money thing is kinda irrelevant. Mind you, I’m a total cheapskate and the idea of spending money unnecessarily is rather horrifying so it’s not like it’s not a deterrent but the real deterrent for me is that I see it as a matter of pride that I don’t derail on any goal. What’s nice for me, then, about the way they track things is that, say, if I have the goals of writing three blog posts per week on average or writing 6000 words per week on average then I have an automatic way of pacing myself: I need to stick to those averages. If I have a couple of Good Days but then crash for a week, I can’t do that. If I have a few bad days and feel like it’s not worth getting started again, I have that average looming to get me to do something.

It’s already helping me still get some work done even though I’ve both quit nicotine and gotten a really bad cold in the past two weeks. Not a lot, but I’ve still gotten something done just to keep from derailing on my goals and that’s a pretty big deal for me. It helps me build back my momentum in a sustainable way, which will help prevent the feast-and-famine work cycle I deal with so often.

Now, the only thing that would be even better is if there was integration between org-mode and beeminder so I could update a goal every time I mark a TODO item as DONE. I have a feeling such a thing wouldn’t be difficult but I don’t really know any elisp. If anyone has any recommendations for tutorials for emacs lisp, it’d be appreciated!


8 thoughts on “Beeminder, Org Mode, and Mental Illness

    • Well, it’s not totally irrelevant. The idea of spending money is pretty odious to me, but what scares me even more is the idea of Publicly Breaking a Promise which makes my stomach hurt even thinking about. Which, yeah, sounds a good bit like the writer you linked me to! It’s mostly how my mental illness works and what kinds of things matter to me.

  1. The Beeminder API lets you easily get an authentication token for your own account and then you can use json.el to interact with the API, so yes, you can totally learn how to do that. C-h i (info) – you can check out the Emacs Lisp Intro manual for starters, and then read Emacs Lisp to get a sense of how people use it.

    I’m guessing that trying it out would look something like this:

    1. (require ‘json) <– add to your init.el, or M-x load-library json to load it temporarily
    2. Log on with your web browser, then go to to get your token.
    3. Set the GOAL property on one of your TODOs (this is a custom one, see the code) – use C-c C-x p (org-set-property)
    3. Use something like the following code, editing it appropriately:

    I don't use Beeminder (yet?), but here's a somewhat similar Emacs Lisp thing that I use to talk to another JSON-based API: . Maybe you can borrow ideas from it?

    Feel free to reach out if you need more help! You can e-mail me at or set up a time to chat at . =)

  2. So I took Sacha’s idea and ran with it a little. I’m not an expert on lisp, but I managed to get something working that can notify Beeminder when an org-mode task is complete. It also supports inheritance, so you can assign a Beeminder goal to a headline and all sub-tasks will use it too.

    You can grab the code here:

    Feel free to get in touch if you have any questions!

  3. Pingback: Press Roundup 5 | Beeminder Blog

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s