Beeminder Forum

Narthur's Beeminder Journal

@openmedi That’s really great! Didn’t look at the code too hard. Did you find a wrapper for TaskWarrior similar to taskw for Python?

On to the update:

General Stuff

Started using Sleep As Android. Don’t have any Beeminder goals for it yet, but it’s been informative already. I snore a lot. Trying to take measures to decrease the snoring in hopes that it’ll increase my sleep quality / efficiency.

Been trying out the Notion app, and it seems pretty slick. Moving all my research documents into the app.


Did a bunch of updates to my TaskWarrior scripts:

  • Started using this wrapper around the Beeminder API to simplify things.
  • Extracted a bunch of the logic into GoalRepository and Goal objects to get things under test harness.
  • Switched away from pushing my tasks to GitHub and instead am now using a free hosted taskd server FreeCinc. My scripts run sooo much faster now.
  • Switched to firing a datapoint on my on-modify hook for my tw-changes goal, instead of using GitMinder. This has the nice side effect of allowing me to include descriptive data point comments.
  • I’m now adding tasks for almost all my Beeminder goals. For the ones where they can’t really post data back for me, the tasks are of the form “Add datapoint to /goal-slug ($5)”. So I do the data entry manually and then complete the task.
  • I’ve modified the .taskrc file to highlight my Beeminder auto goals yellow (of course!)
  • I’ve also started setting the wait: attribute on my auto-generated tasks to be 3 days before they’re due. This way my list isn’t dominated by Beeminder tasks that I don’t even need to think about right now. This also has the nice effect of being rather motivating to complete the tasks to kick them beyond the 3-day visible threshold.


I’m not commenting on all my goals, and I won’t be listing these as I did last time, since I’m assuming that’s probably of no use to anyone.


The slope is now flat on this one, which means I have to go to bed early to offset the nights I end up going to bed late. I like that.


New goal. Translates to “butt in chair.” Data points = time I sit down in my home office in the morning minus my ideal time. So this ends up being similar to bed–gotta get in early some days to offset the days I get in late.


I got way ahead on a car trip on this one a while back, but my buffer has worn off, so I’m skating on this one now. Which I don’t mind. Gets me to read, which is the whole point.


Did the absolute minimum commit (revised one paragraph in my resume) to keep from derailing. But that one commit also involved pulling down the repository and re-familiarizing myself with how I had it set up, so I think this is working.


I know I said I was going to delete the bad data slowly, but I didn’t. I deleted it all, causing three derails, and then asked support to cancel the charges. @shanaqui & team are awesome! :clap:


This goal has worked so much better than using UrlMinder. We now have an appointment with a CPA to get our complicated tax situation figured out. A+, and scheduling for archive.


One problem with this goal is it’s just too easy to put off entering my commitment until late in the day, if at all. So… I wrote a cron script to do it for me. If I don’t add my own data point by 8am Sunday-Thursday, it’ll add a data point that commits me to working 2 hours or the average of the last five data points, whichever is higher. (I’ll probably end up increasing that minimum, but the idea is that most of the time it’ll be using the average anyway.)


Emergencies on this goal are just not fun. It’s scheduled for archive. I think there must be a better goal for this, but I’m not sure what it would be… Maybe for keeping a list of things I appreciate about people? Not sure.


Basically decide what I’m going to accomplish at work for the day. I think there’s still room for improvement on this goal, but not sure what that looks like. I really wish I could create tasks in TaskWarrior when a card is assigned to me in Trello. I tried creating an IFTTT recipe that would add data points with the card title as the comment in a Beeminder goal, in anticipation of then pulling those data points into TaskWarrior as tasks. But the recipe doesn’t seem to be working. Sigh…

1 Like

I just call taskwarrior (e.g. task status:pending export) as a child process in my script and parse the JSON. Works pretty well.

1 Like

One of the biggest things I’ve done recently is to change most of my Beeminder deadlines to be earlier in the day–5pm for most of my work goals and 6:30pm for most of my chore goals. This was in response to some advice I received from my counselor that I need to find a way to have more time for self-care and relaxation in the evenings. I only made this change yesterday, so still getting used to the change. It’s a little weird to see a red goal at the end of the day and know I have ~24 hours to until that goal is actually due.

Also, I’ve started turning on weekends off for most of my goals. Both this and the deadline changes should make it easier to spend time with my wife without constantly feeling like I need to be fielding beemergencies.


I’ve increased the slope on this one to give me a little more fudge room as to when I actually get into my office. This has become necessary since I don’t have complete control over when I eat breakfast.


Increased the slope on this one, too, because the dishes would pile up and then getting clear on this goal would be a lot of work. Hoping that the increased slope will make it more manageable.


This goal has been working really well for me. Currently it’s a flat slope, I enter positive data points when I engage in entertainment activities, and TaskWarrior enters negative data points based on completed task urgency. This system has been working well to help me keep my life in balance while simultaneously relieving some of the guilt I’m prone to when I spend some time on entertainment. After all, now I can prove I earned it!


This is a new goal for the purpose of encouraging me to make appointments for oil changes.


I’m still focusing on allowing myself more room for relaxation in the evenings, and somewhat on the weekends. Made a few more adjustments to deadlines, and added a goal /deflate to ensure I do a routine every evening to leave the workday behind. ATM that consists of taking a walk.

I’m also taking steps to ensure I more-consistently follow a written plan for my time. I’ve set up TagTime on my phone, and one of the tags I’m using is on-plan, which equals doing an activity on my daily plan when I planned to do it. I can change my plan at any time throughout the day, but TagTime keeps me accountable to sticking to whatever the plan is at the moment. Next step will be to create a Beeminder goal to track the average amount of time I stay on-plan.

1 Like

I am actually working on / thinking about on some automatism that should help with the whole “leave the evening free for relaxation” issue. Care to hear more?


Would love to! What are you getting up?


I have a rather big and intimidating goal and being the procrastinator that I am I tend to wait until the very last moment of the day to do it. Which would be less of a problem if the goal wasn’t to work multiple hours on my university project each day.
So I create an earlybird goal that would make me do some of those hours before 1pm. That helped but added more housekeeping.
Eventually I would then take a “break” directly at 1pm and that break would then last until the end of the day just in time for me to do the remaining hours of the goal.
Yeah. Nobody could have seen that coming :wink:
So I created another goal that would charge me with $5 if I did more than x of those hours after 6pm. Allowing for some buffer to amass. And that worked actually really well but added an even bigger amount of manual housekeeping.

I tried setting the deadline earlier but that created its own share of problems. So what’s my proposed solution? I shall automate this. At the end of the day (hrr hrr) all that is needed really is to be able to specify a timeframe in which a goal can have datapoints added.

That should help you, me and others.

1 Like

@phi Interesting! How would restricting the times when data points can be added be different from changing Beeminder’s deadlines per-goal?

The Update

Is it ridiculous that I have so many goals that I have to do my beetuning in an AirTable spreadsheet, copy it to a MarkDown table generator, and then finally paste it here?

Yes. Yes, it is.

Is my life running more smoothly now than it has in multiple years?

Yes. Yes, it is.

Goal Notes Next Action Effectiveness Difficulty Score
beetuning 5 3 2
systems-upgrade 5 1 5
frogs This goal gets a data point when I complete the first item or an item tagged with +frog in TaskWarrior. The unfortunate thing about counting very urgent tasks as frogs is that tasks with due dates tend to relieve the pressure on important tasks that have had the +frog tag applied to them manually. Stop counting most-urgent tasks as frogs 4 3 1
shred-zero 5 4 1
inbox-zero 5 3 2
bm-journal 5 3 2
email-zero I really want to automate this, but I also really want weekends off, and I don’t want to redefine it to ignore unread emails. So… manual it stays, unless someone can tell me how to achieve this. 5 3 2
sn-zero New goal. I have a note on my phone that I record new tasks in when I’m not close to a TaskWarrior terminal. This makes sure I move these into TaskWarrior on a regular basis. 5 3 2
tw-changes 4 1 4
tw-urgency Tracking goal
av-ui1-time This is a short-term goal to ensure that I put in the time on this contract that I assumed I would in my estimate. 5 3 2
resume 5 4 1
su-time New goal. I’ve been working a lot, but my hours for my primary employer have been suffering. This goal should fix that. 5 4 1
worktime 5 3 2
tr-time 5 3 2
slick New goal. Working from home can too easily become an excuse to never shower or shave. I think both my work and my wife will benefit from this one. 5 2 3
tr-updates 5 3 2
av-updates 5 3 2
work-targets This goal has morphed over time into something that just ensures I’m actually completing tasks instead of just hitting the clock. I think it might work better, though, if I was more clear about what I’m allowed to mark as a target. Draft some rules in the fine print to define what can and can’t be desginated a target 3 3 1
av-wp5-time This is a short-term goal to ensure that I put in the time on this contract that I assumed I would in my estimate. I’ve completed the contract, so the goal is set to archive. 5 2 3
work-commitments I’ve made this road float, meaning I don’t have to commit, but I’m still on the hook as soon as I do. My other work time goals have reduced my reliance on this goal. 3 4 1
bic I really need a way to automate this. It basically equates to how early I sit down at my office computer in the morning. If anyone has an idea on how I could do that, please share! Brainstorm ways to automate 3 3 1
dirty-plates I’ve joined the dirty plates club. I’ve noticed a big difference in how I relate to food, and a lot less mindful eating, which is good. 5 2 3
deflate This ensures I follow my cool-down routine every evening. At this point, that’s just taking a walk between 6 and 7pm every day. It’s done a lot to help me handle my stress. 5 2 3
retainer 5 3 2
walk 5 3 2
tramp 5 3 2
pills 5 1 5
vivo-sleep Tracking goal
vivo-steps Tracking goal
weight New tracking goal. Since getting married, I’ve gained 20 pounds. (My wife is an awesome cook!) Initially, this goal isn’t for the purpose of forcing me to reverse this gain, but rather to help me regain awareness of how my weight is changing. 2
bed Had another setback on this goal. I need something that will remind me, “Hey, you need to get to bed by X time or you’re going to derail.” This goal lets me build up buffer, so that time isn’t the same every night. Not sure how to fix this. 4 3 1
dishes 5 3 2
trash 5 1 5
filter 5 1 5
oil-appointments 5 5 1
purifier-filter 5 4 1
ynab 5 3 2
read 4 3 1
distracted A TagTime bug is preventing this from working, since it won’t let me connect the goal to the TagTime tag on my Android phone. I have other ideas for TagTime goals, too, but until this bug is fixed it’s a no-go. However, just checking into TagTime helps with awareness, so I’m calling it a partial win. 3 2 2
entertainment I’ve modified my cron scripts to post negative data points to this goal when I post data points to other Beeminder goals, as well as when I complete TaskWarrior tasks. I’ve stopped generating TaskWarrior tasks for Beeminder goals, so this was a part of making that transition. I have a lot of buffer right now, but I don’t actually mind since all my other goals are making sure I’m staying productive, and it feels good to earn something that I get to keep, all mine. :wink: 5 2 3

Can you explain this more? How did you automate the timeframe limits, and how would that solve the problem?

Sounds very cool :slight_smile:

@phi It could be that I’m not understanding your problem completely. But I had the issue where I’d be working on Beeminder goals well into the evening, which wasn’t allowing me time to decompress from the day. So I changed most of my deadlines to either 5pm or 6:30pm. I allow myself to enter data points after the deadline for the previous “day,” but only if the work was actually completed before the deadline.

Would that solve your issue?

Also, quick question for everyone: I’ve decided that I simply have too many goals for it to work well to combine beetuning and posting to this journal, so I’ll be beetuning separately. What would you guys like me to focus on in my updates here? What do you find most valuable?

1 Like

I did rush my previous reply. Allow me to alleviate some confusion:
I have set up a goal called “nowl” which tries to be a pun on no, owl, night owl and now. Something like that. It grants me 3hrs of buffer each day. Any time I spend on my big intimidating goals after 6pm gets deducted from the nowl goal. So I will have to be done by 9pm +/- any buffer I accumulated or used up by being later or earlier than that. Or I buy myself free for $5.
To reduce the housekeeping I am working on a little web service that registers a hook so it gets updated when a datapoint is added to one of my big intimidating goals (currently that’s only my spiht goal). It then looks at the value and does the housekeeping for me, putting the correct amount of time into my earlybird goal (get stuff done before 1pm) and my nowl goal.
I want to make this somewhat generic so others can use this too. There’s an IFTTT applet that copies datapoints to other goals and that’s basically what I am doing, only with the addition of filtering and mapping those datapoints in between.

I hoped it would but it didn’t really. I mean it did but there have been numbers of times where things came up in the day that would delay me working on it. And I am no good with safety buffer in this particular instance. So I had to run to support a lot and this is my attempt to fix this.
The point I’m trying to make: I priced the goal “get it done that day” (aka the big important goal) at $90 (or $30 now) and whilst I think that’s an OK amount of money to put on the other side of the scale (you know those old scales where in one arm there’s your big amount of work and on the other you put how much it is worth to you and it balances itself out? That’s what I have in mind). Where was I? Right. I felt $bigMoney is OK for making sure I get it done but way too expensive for “get it done before evening”.
I wanted to price that cheaper.
Something something multiple goals for multiple aspect of a single “complex goal”. Does this make sense?

With so many goals, remembering what’s happened in a given week can be quite difficult. So I’ve written a Python script to hopefully make this easier. It does the remembering work for me, generates some Markdown, and then I just need to add descriptions, etc. Very much open to feedback. :slight_smile:

Update 2019-04-29


Key Value
Number of goals 43
New goals this week 3
Newest goal av-wp6-time (2019-04-25)
Oldest goal worktime (2018-06-05)
Highest pledge work-commitments ($2430.0)
Total pledges $2715.0
Derails this week 2
Systems upgrades this week 6

Random Goal: sn-zero

This is one of my inbox-clearing goals. I’m currently using TaskWarrior as my main todo list, but there isn’t really a good way to use TaskWarrior on a phone. So I have a note pinned to the top of SimpleNote called “Inbox.” That note can get pretty stale if I don’t clear it out often, so this goal ensures I do that. It’s doing just what I asked it to.

New Goals

  • fam: Created 2019-04-23. Since getting married, I’ve found it quite challenging to make the time to call my family regularly. I’m hoping this goal will make that happen, and help eliminate another source of guilt in my life.
  • av-wp6-time: Created 2019-04-25. I now create short-term time goals for each of my contracts, ensuring that I put in the time each week that I assumed I would when estimating how long it would take to complete the contract. End result, Beeminder keeps me on track and helps me build trust with my clients.
  • buffer: Created 2019-04-22. This is an experimental meta goal designed to encourage me to start building up buffer on my goals. I talked more about it here.


  • buffer: 2019-04-27, 2019-04-27. This weekend I actually derailed on three goals, but this one is the only one that I haven’t deleted the derail commit on yet. The three were buffer, bed, and dirty-plates. My wife and I took a weekend trip. I put most of my goals on pause, but thought I would be fine leaving these unpaused. Turns out we didn’t have Internet or data on the trip, so I had no way to enter data even though I kept up with the behaviors. Still working with support to clean up the mess. :stuck_out_tongue:

Max-Min Buffer Over Time

This chart shows the largest that the minimum buffer for any goal was during each day. (I really need a better way to explain this.)


Seems the graph urls require auth? They’re publicly visible goals, so the graphs aren’t private. Any ideas why it’s this way?

As always, I’d love to see the code to maybe adapt it to my own needs. After all I have a similar issue with my own journal thread. :wink:

1 Like

Ask and you shall receive. :slight_smile: This code is using (a modified version of) the Beeminder wrapper code here.

Also, TK is just a placeholder. It’s meant to be easy to search for so you don’t miss any of them.

1 Like

@openmedi Quick note to let you know that I updated my gist to get rid of all the many print statements, so it should be much more readable now.

1 Like

Like this idea!, I’ve had success with short-term goals like that in the past, they feel very motivating to me due to being able to fully complete them.


Second time using the journal generation script. I really like it so far; it seems to make journaling with a lot of goals a lot more approachable.

One thing I really, really wish I could do is programmatically find goals that either were archived within the last week or are scheduled to be archived in the coming week, as I think such goals should be included in my journal updates. Sadly, I haven’t been able to figure this out. Please, if anyone knows how, let me know!

Update 2019-05-06


Key Value
Number of goals 42
New goals this week 1
Newest goal mueller (2019-05-04)
Oldest goal worktime (2018-06-05)
Highest pledge work-commitments ($2430.0)
Total pledges $2680.0
Derails this week 1
Systems upgrades this week 8

Random Goal: vivo-sleep

vivo-sleep is a tracking goal that captures how long I sleep each night via my VivoFit 3. It’s a backup and a dataset I keep thinking I’ll get around to graphing in some clever way that will let me spot how my sleep habits affect other areas of my life.

New Goals

  • mueller: Created 2019-05-04. This is a little experiment with breaking books out into their own goals. I feel that I should read The Mueller Report, as it’s an important document which both sides of the political isle are strongly motivated to spin in their favor. It’s also very long and dense. This goal should get me through it regardless. (Also, if anyone’s interested, the audio version is free on Audible.)


  • dirty-plates: 2019-05-06. On Sunday I went with my wife to the graduation of two of her cousins. I didn’t have Internet for the day, and ate a very hasty breakfast without thinking about leaving anything on my plate. By the time we got back home, I had derailed. I also derailed on my buffer goal at the same time. I’ve archived the buffer goal as it’s been pretty tricky to get working right. May try again at some point…

A skeleton of this summary was generated using a Python script and then carefully filled-in by hand.

Update 2019-05-13


Key Value
Number of goals 42
New goals this week 1
Goals scheduled for archive 3
Newest goal overkill (2019-05-07)
Oldest goal worktime (2018-06-05)
Highest pledge work-commitments ($2430.0)
Total pledges $2685.0
Derails this week 3
Systems upgrades this week 7

Random Goal: fam

This goal helps me to remember to call my family. It’s been working very well for me so far.

New Goals

overkill: Created 2019-05-07. This is a new goal I’ve been playing with as an alternative to directly beeminding buffer. I tried beeminding buffer a couple of different ways, but it just wasn’t working for me. I think because I have so many goals doing that directly becomes quite challenging. So this goal aims to beemind an input instead of the output (buffer).

Currently, this goal gets a 1 every time the following criteria are met:

  • The sum of the day’s values for a given goal is greater than 1 or the goal was already on the good side of the road. This prevents binary goals from getting an overkill when I’m just doing the minimum to get back on the good side of the road.
  • The sum of the day’s values for a goal is at least 1.1x the goal’s daily rate. In other words, I’m doing at least a little bit more than is required to break even.

The idea behind having this goal is that I can up my commitment in order to force myself to start putting in the effort to build up a buffer on my goals.

I also have it in the back of my head to create another goal called “preemptive” which would get data points whenever I made progress on a goal that was already in the green. I like the idea, but haven’t gotten around to it yet.


  • av-wp6-time: 2019-05-12. Legit. This derail happened because I forgot I didn’t have weekends off on this goal until it was too late on Friday to do enough to have Saturday off, and I try to guard my Saturdays religiously, so derail it was. This is part of what prompted me to write a custom break-scheduling script.
  • email-zero: 2019-05-07. This derail was not legit, but is worth mentioning. I changed my inbox-zero goal to a custom goal with its aggregation set to nonzero. This means that all the times I cleared my inbox multiple times in a day got aggregated down to a 1 per day, which immediately derailed the goal. I think the new rules will make the goal more useful in the long run, though, as archiving a single email three times in one day to build up a large amount of buffer is quite counter-productive to the goal’s purpose.

Scheduled for Archive

  • oil-appointments: Since I work for home and my wife works for an interpreting agency, I basically never drive and she basically always has the car. I was nervous that this would make it difficult for me to meet this goal since it would require coordination with her to set up an appointment. I’m not sure if this is a good excuse, and I may cancel the archive… We’ll see.
  • read: I’ve really gotten into the idea of having individual goals for reading books. It’s much more interesting to be able to say, “At this rate, I’ll finish this specific book by this specific date” than it is to say, “At this rate, I’ll have read this many pages by such-and-such a date, and perhaps not finished any books at all.” So I’m going to be trying using individual book goals instead of a single “read” goal.
  • work-commitments: This goal has been completely supplanted by a plurality of other worktime goals. This goal served its purpose when I was still too nervous to hold myself to a set amount of hours per week, but I’m past that point, so this goal is no longer needed.

Overkill Top 5

  • tw-urgency: 2. This is a tracking goal, so the fact that it made a couple overkills isn’t really that interesting.
  • vivo-steps: 2. Same with this one. I should really start excluding these tracking goals…
  • tr-time: 2. This is my TaskRatchet time tracking goal. These overkills were well-earned. I spent quite a bit of time learning and working on getting interviews in the past week, so much so that I’ll probably be needing to retroratchet soon.
  • walk: 2. These overkills were earned. I have quite a bit of buffer in this goal, and a couple days last week I took two walks in a day instead of one. I may consider archiving this goal, as my deflate goal has been carrying the weight of both goals I think.
  • read: 2. This has been a pretty conservative goal, so these overkills aren’t that impressive. The goal is scheduled for archive, so nothing needs changing otherwise.

A skeleton of this summary was generated using a Python script and then carefully filled in by hand.