Narthur's Beeminder Journal

Inspired by @penten’s journal and @matti’s “tagebuch”, I’ve decided to start my own Beeminder journal. I’ve added a goal to post an update once a week, which will probably end up coinciding with my weekly beetuning goal.

https://www.beeminder.com/narthur/bm-journal

I’m starting this journal for a few reasons:

  • I tend to procrastinate on optimizing my goals, and I hope this journal will break me out of that pattern and get me to be more methodical in thinking about my systems.
  • I hope that sharing my challenges will make it easier for others to share theirs, and that maybe someone might learn from what’s worked for me.
  • I anticipate learning from the insights of the community in response to my updates.

Goals

Below are the goals I currently have, their purposes, and how well or not-well they currently seem to be working.

banned-sites

:star:

Basically a list of sites I never want to visit. Currently YouTube, Twitch, and Steam. This goal has been working ok, but not as well as I’d like, for a few reasons:

  • It’s a do-less goal, with all the regular downsides they carry.
  • Presumptive pessimistic datapoints are turned off, so it’s easy to ignore. I originally turned them off because I didn’t want to be charged simply because I forgot to enter a datapoint, and I’m very sensitive to how much effort just using my goals takes on a day-to-day basis.
  • The sites that are actually banned are buried in the fine print, making it easy to forget which sites I don’t want to visit.
  • For YouTube, the goal doesn’t accurately represent my desired boundaries, as I do allow myself to use the site for career learning, which leads to the goal becoming fuzzier over time.
  • Even if I’m not using YouTube, I can just as easily waste time on online video using Bing video search. Probably still better than using YouTube directly since Google knows so much about me that they are frighteningly good at sucking me in. But the problem doesn’t feel quite solved.
  • I shy away from adding site after site to this goal like its flexibility allows, since it feels like a never-ending game of system 2 banning time sinks while system 1 finds more to replace.

For all these reasons, I think this goal needs to be seriously rethought and probably replaced.

Next action: Schedule archival and add a goal for screen-free meals.

beetuning

:star::star::star::star:

Once a week I’m required to look through my goals, schedule breaks, tune commitments, etc. This is a must-have to make the akrasia horizon limits work for me. However, my beetuning sessions have become rather shallow, which I’m hoping this journal will help to combat.

Next action: Start this journal.

frogs

:star::star::star::star::star:

I added this goal recently, inspired by @matti. The name comes from Brian Tracy’s book Eat That Frog, in which he recommends that you order your tasks by impact, and then do the most-important, most-impactful task first. I’m keeping this goal pretty simple—I add a zero datapoint with the task in the comment, and then change the datapoint to a one when I’ve completed it. As soon as I complete the task, I add a new zero datapoint. So far it’s been working great.

Next action: None.

go-outside

:star::star:

I work from home, so I can easily never leave my bunker if I let myself. This goal was intended to at least get me outside my door. I only added this goal recently, and it’s currently far too lenient, at only 3 exposures per week.

Next action: Change the frequency to 6/week, rename to /walk and require taking a walk instead of just opening my door.

help-michelle

:star::star::star:

This goal is for the purpose of prompting me to help my wife around the house. However, I think it’s too vague as it stands. I think I would be better-served by replacing it with two or three goals for specific chores around the house.

Next action: Replace with chore-specific goals.

no-games

:star::star::star::star:

This one is a ban on all computer & video games. I feel rather conflicted about this one. It’s done quite well for me, but I just bought Cities: Skylines, and so obviously this goal is scheduled for archival. I’m a little nervous about how I’ll manage not having this goal, though. I’ve considered replacing it with a do-less goal with a specific amount of time per day (half an hour? an hour?). Then I imagine I’d decide how much of my time I’d spend on the game before starting, and set a (preferably visible) timer for that duration before I start playing.

Next action: Try replacing with a do-less goal.

pills

:star::star::star::star::star:

Perfectly boring and perfectly effective. Reminds me to take my vitamins.

Next action: None.

read

:star::star:

This goal is a time-based do-more goal. I like it a lot better than my prevous page-based goals, since I read paper, Kindle, and Audible books, and this allows me to switch seamlessly between books and mediums. However, at 0.5 hours per week, this goal is currently far too lenient to make any impact.

I could either increase the commitment on this goal, or add new goals to impact my reading indirectly. I’m pretty sure I’ll be adding a no-screen-meals goal which would make it more likely that I’d do more Audible listening, though I’m just as likely to instead increase my podcast listening instead, so I think raising the slope on this goal would still have value.

Next action: Increase my commitment to one hour per week and see how it goes.

retainer

:star::star::star::star::star:

Requires that I put my retainer in almost every other day. I skate quite a bit on this one, and that’s fine with me. Works great.

Next action: None.

systems-upgrade

:star::star::star::star::star:

A recent addition. This goal was inpsired by @matti’s “asi” goal, which was, in turn, inspired by Beeminder’s “uvi” goal. It currently requires that I make three upgrades to my systems per week. I was super unsure how hard this goal would be when I created it, hence the low commitment + a high initial buffer. I think I’m ready to raise the commitment and retroratchet, as this goal has exceeded my expectations in both ease and impact.

Next action: Increase commitment & retroratchet.

vivo-sleep & vivo-steps

:star::star::star::star::star:

These are two goals which are only for tracking purposes. I use a Vivofit 3 to collect the data. At some point I have this idea that I may write a simple dashboard to pull the data from these two goals into my own graph to help me visualize the impact of these two metrics on other measures of productivity and well-being.

Next action: None.

work-commitments

:star::star::star::star:

I only added this goal recently, and it’s quickly become one of my most important goals. Since I work from home, it falls to me to ensure I put in the work my job needs. In the past I’ve found this very challenging due to headaches, fatigue, anxiety, and distractions only a few clicks away. There have been several things outside of this goal that I’ve done already to address the challenge, but this goal has certainly pulled its weight.

At the beginning of the day I set a datapoint with a negative number large enough to put me in the red. In the comment, I include the number of hours I’m committing to work that day. Once I meet the commitment, I change the datapoint to a positive one. When I created the goal I shortcircuited it to a ridiculous $2,000+ stakes to remove any question of whether or not the goal is optional.

This strategy effectively addresses the anxiety and distractions issues by allowing me to remove the option of backing out of the time I’ve decided to put in for the day. I often find adding my initial datapoint for the day to be a great relief.

The goal does, however, have problems:

  • While the goal will pull me through my headaches and fatigue, it doesn’t directly address these issues, and I think it would be expecting to much from one goal to ask it to. I need to be experimenting with other goals along side this one to help with the well-being aspects.
  • On especially-lazy or akratic mornings, it’s far too easy to put off making my commitment until late in the morning, or to not make one at all.

I could prevent myself from never committing by simply increasing my weekly commitment (I’m currently only requiring four successful commitments per week). But preventing myself from putting off the commitment until later in the day is trickier. I could define a commitment as only being successful if I make it before a certain time in the morning, but that doesn’t feel like it’d be worth losing $2k over. I’m currently leaning towards making an additional meta goal for making the commitment before such-and-such a time in the morning. If anyone has an easy way I could automate data entry on that, I’d love to hear it.

Part of me does wonder if I just need to bite the bullet and create a weekly hours goal. I had one in the past, but didn’t have a very good experience with it. That may have been due to the stakes not being high enough, however short-circuiting a ridged 40-hours-per-week goal to a high stakes level is pretty scary given the other issues I’m still working to address. Also, I’d want to subscribe to a plan with weekends off. Should I make the plunge?

Next action: Create a time-committed meta goal.

work-gratitude

:star::star:

I created this goal recently in the hopes that it would help me be more intentional about investing my relationships with my coworkers. Being a remote worker it’s too easy to disconnect from my colleagues. At one thanks per week, my current commitment is too low to really give it a chance.

Next action: Increase my commitment.

7 Likes

What a great list! I hope you don’t mind a comment. :wink:

About banned sites: Have you considered/tried freedom.to to block sites/apps? It’s not that cheap but might be worth it, they have had 50% off sales pretty regularly though and also offer a lifetime plan. You might also be able to automate this somewhat, since rescuetime also can track the sites you visit. These are just thought, if you still would like to make it work somehow.

About video games: How about bundling the amount of time you can spend playing games to some kind of metric? It’s just a crazy Idea but maybe you could allow yourself an equivalent of let’s say 10% (or 50%?) of the time you worked that week for video games. This way your work this week would determine your video game time allowance for the next week, which you would commit to when doing your beetuning session. Just an idea!

About Frogs: I like the wrinkle of immediately adding a new frog! I might try that myself!

Generally I love your presentation of your goals - the stars, a paragraph or more about them and the next action. I might need to update my journaling game!

2 Likes

Great post! Thank you for sharing.

As @matti said, actually blocking sites might be a good idea. On android I use Blockada for ad-blocking and also blocking youtube, reddit and hackernews. I find that the more I restrict “bad” time usage, the easier it is to do well on my other goals (for example reading tends to expand to fill that space). I have actually been struggling a bit with the site blocking recently, finding myself turning off blockada to check youtube now and then. I’ve put it in a folder called “please don’t” and added password protection, but this doesn’t seem enough. I am considering asking my partner to change the password and not tell me unless I can give a good reason.

For work-commitments, I do something similar, by planning my todo list for the next day each evening. My beeminder goal is then to clear the whole todo list for the day. It might be worth trying to set the commitment the day before, I find this separates the planning from the execution enough to prevent me under-committing or forgetting to commit to anything at all.

2 Likes

Thanks for the input, guys! Love hearing the different angles. :smiley:

av-updates

:star::star::star::star::star:

I do contracting for a single client on the side, and my email updates had been becoming less and less frequent. This goal will ensure I send an update at least once weekly. Pretty straight-forward. I think this will solve the issue.

Next Action: None.

banned-sites

:zzz:

This goal has been archived. It’s still early days without it, so we’ll see how things go.

I’m definitely going to keep this in mind. I’ve already purchased Focus, which is great because it has an API that can be scripted together with Beeminder’s API fairly easily. I’m not going to jump to that right away, as I’m interested in experimenting with how I can affect the issue indirectly.

Next Action: None.

bm-journal

:star::star::star::star::star:

I’m really enjoying the thought that publicly journaling is forcing me to put into my systems, not to mention the great feedback you guys have contributed! This goal looks to be a huge success.

Next Action: None.

commit-early

:star::star::star::star::star:

This goal compliments my work-commitments goal by requiring that I commit before 8pm at least four times a week. I may increase this commitment in the future, but it seems to be working fine as-is for the moment.

Next Action: None.

dishes

:star::star::star::star::star:

This goal is the first chore-specific goal to replace my previous help-michelle goal. Currently it’s a little lax at 3 / week.

Next Action: Increase to 4 / week.

frogs

:star::star::star::star:

This goal is fantastic, but I gave myself sooo much buffer when I created it. It’s time to retroratchet!

Next Action: Retroratchet.

games

:star::star::star::star::star:

This goal replaced my previous no-games goal.

Since switching to a do-less goal for computer games instead of an outright-ban, I’ve found that just the act of setting a timer before starting an akrasia-prone activity has a much larger effect than I had anticipated. I think it’s for a couple of reasons:

  • When I spend half the night playing a computer game or watching YouTube, it’s because the motivation has shifted from feeling good (“YouTube is fun!”) to not feeling bad (“As soon as I stop watching YouTube I’m going to feel soooo guilty for wasting my time and sooo tired and I better just keep watching stupid videos”). Setting a timer for how long I’m going to spend addresses the guilt part of that, by explicitly giving me permission to do X for N minutes.
  • Having a timer go off, signaling the end of my decided time, creates a natural break point which most compulsive-behavior-inducing activities lack, and it’s so liberating!

I like this idea! I’m a little unsure if the upkeep it creates would add much value beyond a standard do-less slope. I do think that this goal might lend itself to autoratcheting, since I don’t necessarily want a couple of weeks without computer games to warrant a 24-hour binge.

I could also try automating something with Focus, since it can block software as well as websites—say, only let me open my games if I’m in the green on these N goals.

Next Action: None.

read

:star::star::star:

This goal still feels too lax, but the increased slope only kicked in a few days ago, so I’ll give it a while longer before I decide to crank it up again.

Next Action: None.

screen-free-meals

:star::star::star::star:

This is a new goal I created to help me stay off my computer / phone while I’m eating. It may be a little lax, but I’m tentatively ok with that for now.

Next Action: None.

todo

:star::star::star::star::star:

I literally just created this goal, but I’m already pretty stoked about it.

The biggest problem I have with todo lists is how quickly they go stale. After ignoring the list for a day or two, it’s a little less relevant, a little less aligned with reality. This lack of relevance makes it more likely I’ll continue to ignore the list, which means it becomes more stale, and the cycle continues.

Enter Taskwarrior. Taskwarrior is a command line task manager which stores its data as JSON files in a user-configurable directory. I’ve committed this directory to a GitHub repository, and included a Taskwarrior hook script that attempts to pull from the remote and then commits and pushes any new changes back. What this results in is a dumb sync service AND a way of tracking any change (add, complete, modify) made to the list that’s accessible to Beeminder via the GitHub integration.

With a little help from @bee, I’ve set up this goal to require at least four changes of any kind to my Taskwarrior todo list per week. I’ll probably end up increasing this commitment later on, but I’m just happy to have it working at all at this point!

Yay for task lists that stay relevant!

Next Action: None.

walk

:star::star::star::star::star:

Forcing myself to get out of the house and take a walk (almost) every day has been a very good thing! I think this one is something I need to make working from home sustainable.

Next Action: None.

5 Likes

This past weekend my wife and I moved into a new apartment about an hour away from where we were previously living. We’re glad to be (mostly) settled into our new place. We have an extra room in the new apartment which I’m using strictly for career and work-related activities, which is showing a lot of promise.

I have so many Beeminder goals now! Currently 22, and most of them manual entry, and lots more ideas for new goals. I’m a little concerned that I’m heading for Beeminder burnout. My hope is that this journal will keep my goals tuned well enough that burnout doesn’t become a problem, or at least it will be addressed promptly.

I created a very basic Beeminder dashboard so that I could categorize my goals and view only the work-related ones, for example. Lots of ideas as to how the dashboard could be improved, but I’ll be trying to reign in my enthusiasm so as to only spend as much time on it as will result in real benefit to myself.

av-updates

:star::star::star::star:

This goal has been working great, making sure I send an update to the organization I’m contracting with at least once a week. My only problem with it now is that it’s a little too aggressive. I generally work on these contracts on the weekend. If I do some work and send an update on Friday, and then wait until the following Sunday to work on the contract again, this goal will give me issues. I think dialing down my commitment just slightly will help fix this problem.

Next action: Dial down my commitment slightly.

games

:star::star::star::star::star:

This goal is working very well. It allows enough flexibility that I never feel deprived, while the act of always setting a timer before starting a game has kept the behavior to something much healthier than what it’s been in the past.

Next action: None.

screen-free-meals

:star::star:

I think there still may be potential here, but it’s just been a pain to track and hasn’t had that much impact. Archiving for now.

Next action: Archive.

su-uvi

:star::star::star::star::star:

New. Stealing this from @dreev for my day job as a programmer. A nice side effect for an employee is that user-visible improvements are also boss-visible improvements. :wink:

Next action: None.

todo

:star::star::star::star::star:

Had to work out some kinks in the hook scripts for this one, but it’s been working great. Time to retroratchet and up the commitment.

Next action: Retroratchet and increase commitment.

tramp

:star::star::star::star:

New. My wife said she wished I’d spend 15 minutes every day jumping on our rebounder. So I created a goal for it. Little concerned that starting out with a 15 minute / weekday slope is too steep for a brand-new goal, but maybe I’m being too conservative. :stuck_out_tongue_winking_eye:

Next action: None.

video

:star::star::star::star::star:

New. This is a simple do-less goal with the same rules as games. And it’s working just as well!

Next action: None.

4 Likes

Wow, beautiful work on your custom beeminder dashboard! (Did you see @mary’s similar thing that I think she’s not actively using now so as to be more dogfoody now that she’s soon-to-be COO/CFO?) Speaking of which, we’d love to nerd out about what Beeminder would need to do to make your dashboard obsolete. Did you know about the shamefully-still-very-hidden tags feature: http://beeminder.com/changelog#2080 (HT @bee for saying that over my shoulder when she say your impressive dashboard)

4 Likes

Why would it make her less dogfoody to use it? Isn’t having the experience of implementing and updating dashboard code more dogfoody?

This is the first time I have ever seen anyone non-ironically use a non-brand name for a Trampoline™.

2 Likes

Well, that’s power user dogfooding. She’s focused on newbees at the moment.

2 Likes

Hey, that is cool! I think that pretty much obsoletes my dashboard right there. :wink:

Here’s my wish list for Beeminder’s goal list page, though, since you asked:

  • A filters-while-you-type search box so I can quickly find a specific goal
  • A tabbed interface using the tags, ideally changing the URL so they’d be bookmarkable
  • A sort option based on pledge / days until derail, descending. Not sure if this would work well or not, but it was something I wanted to experiment with in my dashboard.
4 Likes

Look ahead search is such a good idea. I use it all the time on beedroid!

2 Likes

Oh wow, didn’t know beedroid had that! Thanks!

Welp. Had a relatively-large derail last night. When it’s all over, it’ll be a $20 charge ($5 /video, $5 /commit-early, $10 /retainer). Here’s how it went down:

Around my bedtime, I somewhat foolishly decided to tackle scheduling turning off the Internet on my Linux desktop to help me go to bed earlier. Unfortunately, setting up the cron jobs I had in mind wasn’t as easy as I had hoped, and in between waiting for the jobs to run, I opened up YouTube without setting timers beforehand. This resulted in me getting sucked into a binge that lasted eight hours (!). Not good.

Psychologically, how these binges work for me is that the activity (in this case, YouTube) becomes a way to escape from the exhaustion and guilt caused by the activity itself, so the longer the binge lasts, the harder it is to break free from it.

I’m taking a few insights away from the experience:

  • Starting a timer ahead of time is really important for me. I can’t make exceptions.
  • Getting to bed on time is something that still needs work. I’m going to keep thinking on how I can make this easier.

Today I finally got the cron jobs working (turns out they needed to be in the sudo crontab). One turns off my Internet an hour before my bed time, and then repeatedly every five minutes for a couple of hours (in case I try to sneak back on). Then, at midnight, a different job runs to re-enable networking. I’m including them below. These are running in Debian Stretch.

*/5 19-22 * * * /usr/bin/nmcli networking off > $HOME/cron.log 2>&1
0 0 * * * /usr/bin/nmcli networking on > $HOME/cron.log 2>&1
3 Likes

I’ve been doing a lot of changes with my system, so there’s a lot I could potentially talk about. I don’t think I’ll get to it all since I’m short on time. But I’ll dive in and see what I can cover.

TaskWarrior has become the central hub of my system. It’s really working well for me for several reasons:

  • Being able to beemind changes to the list (not just completions) has definitely helped it stay relevant and helped me stay engaged.
  • TaskWarrior sorts by an urgency metric by default which also helps with keeping things relevant.
  • TaskWarrior supports custom hook scripts which allow me to beemind a lot of different things automatically.

A few of the ways I’ve further connected TaskWarrior and Beeminder, beyond the basic Git sync tracking:

I’ve set up some tag-goal mappings in one of the hook scripts so that, if a task is completed with one of these tags, a data point is posted to a respective goal with the description of the task in the comment. So far I’m doing this with systems-upgrade, su-uvi, and frogs.

This has had by far the largest impact on the systems-upgrade goal:

If you look at the graph, you’ll see a large uptick in data points about March 1. That’s precisely when I added this integration.

Being able to keep track of a backlog of upgrade ideas, and then having a data point pushed automatically just by completing the task, has reduced the friction so much. That’s actually why I have way too much to talk about in this journal.

Today I added another connection–now, when I complete the task with the highest urgency score in the list, a data point is automatically posted to /frogs, again with the description in the comment. I’m hoping this will help bias me towards completing the more-important tasks in my list in the kind of rewarding way that the /systems-upgrade integration has.

I have a few things I’d like to add to the hooks:

  • I’d like to post a data point to a new goal that would use the urgency score of the task as the value. I think I’d start the goal out with a very shallow slope and just use it as a tracking goal to begin with. This feature shouldn’t be too hard to add to my scripts.
  • I’d also really like to figure out a way to pull in the Trello cards assigned to me at work into TaskWarrior. I’d like to pull them in with a specific tag, and then probably post a data point to a work tasks goal. Since I work in a Trello board with several other people, the default Trello integration won’t work for me. I’m not so optimistic about whether or not I’ll be able to figure out how to do this.

And, a whirlwind tour of my goals:

  • av-updates: It’s working great for me.
  • bed: Added this since I’ve been having trouble getting to bed on time. Not sure how well it’s going to work since it’s not auto data atm.
  • beetuning: thumbs up
  • bm-journal: This has been working great for me and has really been helping me to stay engaged with my goals, keep tweaking them, and not ignore them.
  • commit-early: I should probably up my commitment on this one, maybe to every day even. Next: Up the commitment
  • dishes: Working really well for me.
  • email-zero: Added this one today and it feels good. At the moment it’s just requiring that I get my inbox to zero once a week. At some point I’ll probably be adding a goal for my physical inbox, too.
  • filter: My apt has a filter that I’m required to change once a month. This should help that happen.
  • frogs: Been working great.
  • games: This is working fine.
  • pills: check.
  • read: I’m not really sure that this is doing what I need it to do. But I’m not sure what I’d replace it with, either. Maybe I just need to up my commitment. Next: Up the commitment
  • retainer: Yup, it works.
  • su-uvi: This is good, but I think somehow figuring out how to pull data out of my work trello board would be better. Next: Try to get Beeminder working with my work Trello board
  • systems-upgrade: This has been going gangbusters. Already upped my commitment a couple of times.
  • taxes: Because they need to get done. This is a urlminder goal for a project doc.
  • todo: Working great; keeps track of all changes to my todo list.
  • todo-time: Time spent working on the todo app project. Think I need to retroratchet. Next: Retroratchet
  • todo-updates: Post updates on the forum about the todo project progress. I think this one is doing fine.
  • tramp: Must keep hopping! Working great.
  • trash: Take out the trash ~once a week. Working good.
  • video: Keeping me honest, keeping me sane. Derailed a couple times on this one recently, but I think in this case that just means I need the goal.
  • vivo-sleep, vivo-steps: Yeah, tracking goals. Doing what they’re intended to do.
  • walk: Making sure I get out side and get some exercise. Working great.
  • work-commitments: I think upping the commitment on commit-early will help this one do better.
  • work-gratitude: Seems to be a good thing. Not life-changing, but a good thing.
  • ynab: Reconcile my accounts periodically. Has already helped me feel less stressed out.

Is that a ridiculous number of goals? I think that’s a ridiculous number of goals. But so far, so good.

3 Likes

I do this a lot. One thing I try to do is get to the root of the issue therapeutically, as well as try to find tools and tricks to work around it.

Like I get to the root by really looking at the guilt and escapism and reminding myself what I’m doing by writing down and saying “I’m escaping from my exhaustion and guilt by watching more videos, so even though I’m getting sucked in and it’s harder to break free, I’m at least avoiding the bad feeling now.”

Basically reminding myself and getting in touch with that part of myself. It’s a form of Coherence Therapy (aka Depth Oriented Brief Therapy).

2 Likes

Very interesting! Can you say a little bit more about how you set it up to work with Beeminder?

1 Like

My system is still very much in flux, but let me see if I can summarize:

At its core, my system is set up using several Python hook scripts and a single cron script (also Python), plus a few minor changes to TaskWarrior’s own configuration. Together they result in the following features (at risk of sounding incredibly BussFeed-esque, the last feature is currently my favorite):

  • GitHub syncronization: Pretty much all the scripts including the cron script push and/or pull changes to and from GitHub, creating a super dumb sync service which has been working surprisingly well for the most part. (I still have to resolve conflicts manually at this point, but I think it’s only because I need to add a git pull to the cron job.)
  • Tag mappings: I have a yaml config file that I pull into the Python script which (among other things) defines several tag-goal mappings. The result is that any time a task is completed which contains one of these tags, a data point is created for that goal, including the task’s description in the comment.
  • Auto goals: In addition some goals are registered as “auto goals” (there has to be a better name). For these goals, the cron script runs quite frequently and ensures that there is always at least one task for that goal, based on tag. If there isn’t, it creates one using a default description and setting the due date to the derail date for that goal. Again, when the task is completed, a data point is created on the Beeminder goal. Because these only post a 1 as the value, this is pretty much limited to binary goals at the moment.
  • maybe tag: I configured TaskWarrior to have an urgency coeffecient for the “maybe” tag of -100, pushing them to the bottom of the list. I think TaskWarrior comes with a feature where you can mark a task as waiting:someday (or something similar) and it hides it from the list, but I’m pretty happy with my tag approach for now.
  • First item in the list counts as a frog: The top item in the list, sorted by urgency, when completed, posts a data point to my frogs goal.
  • Highlighting explicit frog tag: I can also tag an additional task as “frog” and it will post a point to the frogs goal when completed (thanks to the tag mappings), and I’ve also configured TaskWarrior to give this additional task a purple background color.
  • Earning entertainment time: I’ve combined my /video and /games goals into a single /entertainment goal and set up TaskWarrior so that, whenever I complete any task, it posts a data point to the /entertainment with a value equal to the inverse of that task’s urgency divided by 60. This, in effect, results in me being able to earn entertainment time by completing urgent tasks. For example, if I complete a task with an urgency of 10, I in effect earn 10 minutes more entertainment time. This has been working great for me.

Once my scripts are in a little better place I’d like to turn them into a git submodule that I can then make public for you guys, in case you want to play around with it. But it’s pretty messy at this point, so it’s not at the top of my list (literally). Of course, if you guys really want to mess with it, I can try to do that sooner.

So, on to the update:

No Comment

  • beetuning
  • bm-journal
  • dishes
  • filter
  • pills
  • read
  • retainer
  • systems-upgrade
  • tr-time
  • tr-updates
  • tramp
  • trash
  • tw-changes
  • tw-urgency
  • vivo-sleep
  • vivo-steps
  • walk
  • ynab

av-updates

This goal has been doing its job. I’ve scheduled a month break since I’m just about to complete a contract and I’m not sure how long it will be until we sign the next one, though I don’t think it’ll be that long. I plan to retroratchet once that happens.

Next Action: None.

bed

Derailed on this one recently, but it was a case of something happening that was more important than saving the money. And… if I had been better about my bed time in the previous days, I would have been fine.

I’m allowing myself to input negative times if I get to bed before my bedtime, so I’ve set the slope to be zero accordingly.

Next Action: None.

commit-early

I’ve increased the slope on this one to six per week. I’m unsure of how I should be committing, though. I’ve been committing to working a certain number of hours for the day, but I’ve been playing around with the idea of committing to completing specific work tasks for that day, instead. Not sure what I’ll be settling on.

Next Action: None.

email-zero, inbox-zero, shred-zero

If I had known how stress-relieving these would be I would have created them long ago. The one problem I have with how I’ve set mine up is that, once I clear them, it’s super easy to clear them again, and so I tend to get way ahead on these goals. I’m reserving judgment, however, on just how big of a problem this really is, if at all.

Next Action: None.

entertainment

I’ve combined my video and games goals into one. I don’t think I was getting much out of the granularity, and this has allowed me to set up the TaskWarrior integration described above such that I can earn entertainment time by completing important or urgent tasks. This has made working on my todo list so much better feeling. Instead my monkey brain saying, “Oh, look at that scary, high-urgency task. I better ignore it,” now it’s all, “Oh, look at that amazing, juicy, worth-15-minutes-on-YouTube task. I should do that right now!”

Next Action: None.

frogs

I think this goal has really benefited from having data points posted to it automatically when my most urgent task in TaskWarrior is completed. I’d kind of like to have my scripts set a due date on the most-important task based on the frogs derail date, but I think it would create too many issues:

  • The most-important task may already have a due date or may need a real due date added after it became most-important.
  • Adding a due date to the most-important task would virtually ensure it stays at the top of the list even if another task is added which should really be the most-important task.

So… I think it stays as it is for now.

Next Action: None.

resume

I have a resume that still needs work to be ready for action. This is a Gitminder goal to make sure I get back to fixing it up.

Next Action: None.

su-uvi

This has been working well as long as I remember to tag tasks in TaskWarrior with the appropriate tag. I now have another work-targets goal which uses its own TaskWarrior tag, so I’m thinking I should probably merge them somehow.

Next Action: Merge with work-targets

systems-upgrade

I think some bad data got in here while I was testing some of my scripts, but then I went and retroratcheted so if I delete the bad data I’m going to derail. So…

Next Action: Delete bad data… slowly.

taxes

Derailed on this because I set up Urlminder incorrectly. But the fine folks at support canceled the charge and now we’re back on track… except… I’m really not sure this goal is going to solve the problem, since I can post notes on the document from an article and get lots and lots of lines without actually accomplishing anything really.

Next Action: Schedule for archive and create a tax-time goal

video

Schedule for archive as it’s been merged with /games into /entertainment

Next Action: None.

work-commitments

Scheduled a long break so I could try using just the work-targets goal, which is basically pre-committing to accomplish certain tasks for the day. Really have no idea how I should be handling this long-term.

Next Action: None.

work-gratitude

This one has been going ok, though the last time I had a beemurgency I literally logged into my work email after my bedtime for the express purpose of sending an email of gratitude to one of my coworkers. Is that what I want from this goal? I’m not sure.

Next Action: None.

work-targets

The idea is that I’ll tag certain work tasks at the beginning of the day as the tasks that I commit to accomplish for that day. This may replace work-commitments if it goes well. The idea is that focusing on what I want to accomplish rather than how much time I want to spend may be less overwhelming and more energizing.

Next Action: None.

2 Likes

Random question about this: How did you manage to do that? I played around with an on-exit hook and used this oneliner to see if the completed task is/was the most urgent, but by that point it shows the next most urgent task!

Thanks so much for all your updates! They are very inspiring to me. I took two days to analyze if taskwarrior could replace OmniFocus for me and it can!

1 Like

That’s encouraging to hear you’re finding these updates inspiring!

I do the frog check on my on-modify hook. I think I looked at that one-liner, too, and wasn’t able to get it to work. I’ve ended up using the taskw Python library to ease the querying logic. Here’s the code I use for that, extracted from a larger file (hopefully it’s complete enough):

#!/usr/bin/env python3

import json
import sys
import yaml
import os
from urllib.parse import urlencode
from urllib.request import Request, urlopen

directory = os.path.dirname(os.path.realpath(__file__))
config = yaml.load(open(f"{directory}/config.yaml", "r"))

def post_data_point(goal_name, goal_description, data_point):
    url = (f'https://www.beeminder.com/api/v1/users/{config["beeminder"]["username"]}'
           f'/goals/{goal_name}/datapoints.json?auth_token={config["beeminder"]["token"]}')

    post_fields = {
        'value': data_point,
        'comment': goal_description + " #taskwarrior"
    }

    request = Request(url, urlencode(post_fields).encode())
    json = urlopen(request).read().decode()

jsonTaskOriginal = json.loads(sys.stdin.readline())
jsonTask = json.loads(sys.stdin.readline())

if not jsonTask:
    print("Unable to access task")
    sys.exit(1)

print(json.dumps(jsonTask))

w = TaskWarrior()
unmodifiedTask = w.get_task(uuid=jsonTask["uuid"])[1]

if jsonTask["status"] != "completed" or unmodifiedTask["status"] != "pending":
    sys.exit(0)

tasks = w.load_tasks("pending")["pending"]
maxTask = sorted(tasks, reverse=True, key=lambda k: k["urgency"])[0]
if jsonTask["uuid"] == maxTask["uuid"]:
    post_data_point("frogs", jsonTask["description"], 1)

sys.exit(0)

I’ve tried to include enough that it’s actually a functioning hook script, but I may have missed something, so feel free to ask if you get stuck again.

2 Likes

Thanks! Much better solution than the one I came up with…

I am more comfortable with JavaScript/Node so I have implemented my version this way: https://github.com/openmedi/beemind-hooks (not to steal your thunder… I would love to see your implementation, too!)

I guess this is my first Beeminder integration! :blush:

1 Like