# Beeminding your Dailies

**URL:** <https://forum.beeminder.com/t/beeminding-your-dailies/1759>\
**Category:** Tech\
**Created:** [December 28, 2015, 2:41pm UTC](https://forum.beeminder.com/t/beeminding-your-dailies/1759 "2015-12-28T14:41:46Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![philip](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/philip/32/1505_2.png) [@philip](https://forum.beeminder.com/u/philip)\
**Post date:** [December 28, 2015, 2:41pm UTC](https://forum.beeminder.com/t/beeminding-your-dailies/1759/1 "2015-12-28T14:41:46Z")

</div>

I’ve finally bitten the bullet and implemented something to help me mind my daily tasks. You know, the things that seem too granular to warrant an entire Beeminder goal of their own. These are the things that I used to track using Habitica, albeit without any beeminding.

It’s not very elegant, but I wanted something that I could make work quickly. Posting in case it’s of use to someone.

There are three parts to this:

- creating a suitable Beeminder goal
- ~~an init script to set a bunch of tasks to 0~~
- a script to be able to toggle each task to 1

### the goal

Mine is a custom **do more** goal, with an [aggregation method](http://forum.beeminder.com/t/documentation-of-aggregation-methods-would-be-nice/549/4 "why on earth is uniqmean the default kind of mean?") of **truemean**. This means that I’m beeminding the average daily percentage completion of my daily tasks.

I’ve set the slope to **daily** and **0.5** which means that (as I start this experiment) I need to complete at least half of my intended daily tasks.

I’ve also set the **max safe days** to **0** , which means that every day is an **eep!** and I need to complete the slope-proportion of my dailies. And I’ve pinned the goal to the top of my gallery using the deprecated sorting parameter.

~~### the init script~~~~ Since these are recurring daily habits, I need to re-seed the list every morning. I run [this shell script](https://github.com/pjjh/bmndr/blob/master/bmndr.daily.init) every morning; you can automate running it in several ways. ~~~~New habits get added to the file.~~
### the toggle script

Every time I complete one or more of these tasks, I run [this perl script](https://github.com/pjjh/bmndr/blob/master/bmndr.daily) to check one or more tasks off the list.

For example, having stretched and gone for a run this morning, I ran this command to see the current state of my dailies, and to tick those two off the list:

```
$ bmndr.daily flex sweat
0 anki zero
0 sweat
> toggled to 1
0 flex
> toggled to 1
0 floss

```

**UPDATE:** the toggle script now copies forward yesterday’s dailies, no init script required.

---

<div class="post-metadata">

**Author:** ![apolyton](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/apolyton/32/1965_2.png) [@apolyton](https://forum.beeminder.com/u/apolyton)\
**Post date:** [December 30, 2015, 10:58am UTC](https://forum.beeminder.com/t/beeminding-your-dailies/1759/2 "2015-12-30T10:58:04Z")

</div>

This seems quite complex to setup and implement… The last month i’ve been using the Dailies feature of Habitica with good results:

- you have a counter for number of consecutive days that you’ve done the daily
- each daily has a “health” colour according to how often you do it
- you can set which days each of your Dailies are due (so you can weekends only or weekdays only or anything of your choosing)
- you lack the monetary effect of Beeminder (you can only connect the To-Dos feature of Habitica with Beeminder, not Dailies)
- everything resets at midnight so there is zero setup when you start in the morning

On top of that you have the RPG features (gathering XP, buying armour, pets and mounts…) but you can either use them or ignore them.

---

<div class="post-metadata">

**Author:** ![philip](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/philip/32/1505_2.png) [@philip](https://forum.beeminder.com/u/philip)\
**Post date:** [December 30, 2015, 1:55pm UTC](https://forum.beeminder.com/t/beeminding-your-dailies/1759/3 "2015-12-30T13:55:01Z")

</div>

> [@apolyton](#):
>
> This seems quite complex to setup and implement…

Yep, though that’s why I posted this in the **Tech** category. 😄

Having said that, simplification is in the works, and I may have made it sound more complicated than it is.

I think that the init script will disappear shortly and be subsumed in the toggle script. (I will post an update here when that happens; right now I’m trying to resist the hacking-as-avoidance rabbit hole.) That leaves creating a suitable Beeminder goal, which could be an ordinary **do more** goal if someone wanted to track the number of completed dailies rather than the proportion completed.

Most of my Beeminder goals are either auto-data or scripted. Even the manual ones I tend to update via the command line rather than our website or app. So for me, it’s simpler to use a script for my dailies than it is to visit the Habitica website.

> [@apolyton](#):
>
> i’ve been using the Dailies feature of Habitica with good results:

By all means, use what works. Habitica is great for a lot of people. I used HabitRPG (as it was) for about six months this past year.

Unfortunately, its brand of gamification doesn’t fit my brain well, and I needed a replacement for the value that I was getting from their dailies implementation. After backsliding for a few months, a couple of nights ago I wrote the little scripts featured in this post. So far, so good.

Also, I kept forgetting to enter my Habitica dailies **on the day**. Unless I’m skating the edge, with Beeminder I can easily enter yesterday’s data today. (Habitica does let you restore a winning streak and fix other stats, but it’s up to you to figure out what they might have / should have been…)

---

<div class="post-metadata">

**Author:** ![philip](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/philip/32/1505_2.png) [@philip](https://forum.beeminder.com/u/philip)\
**Post date:** [December 30, 2015, 10:40pm UTC](https://forum.beeminder.com/t/beeminding-your-dailies/1759/4 "2015-12-30T22:40:49Z")

</div>

> [@philip](#):
>
> right now I’m trying to resist the hacking-as-avoidance rabbit hole.

Well, I lost that battle. The ‘toggle’ script now copies forward the most recent day’s dailies when you first run it.

Brought to you in part by my complete failure to add a new habit to my local init script, despite having added it to yesterday’s Beeminder goal.

---

<div class="post-metadata">

**Author:** ![nepomuk](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/nepomuk/32/878_2.png) [@nepomuk](https://forum.beeminder.com/u/nepomuk)\
**Post date:** [January 2, 2016, 8:10am UTC](https://forum.beeminder.com/t/beeminding-your-dailies/1759/5 "2016-01-02T08:10:07Z")

</div>

I’m using Complice (integrated with Beeminder) to track my dailies. They have an “insert boilerplate” command that works beautifully.

---

<div class="post-metadata">

**Author:** ![philip](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/philip/32/1505_2.png) [@philip](https://forum.beeminder.com/u/philip)\
**Post date:** [January 23, 2016, 1:54pm UTC](https://forum.beeminder.com/t/beeminding-your-dailies/1759/6 "2016-01-23T13:54:37Z")

</div>

I’ve updated the script with [more features.](https://github.com/pjjh/bmndr/blob/master/bmndr.daily)

```
Usage: bmndr.daily [--goal goalname] [substring]*
       	 bmndr.daily [--goal goalname] --add [--toggle] description
       	 bmndr.daily [--goal goalname] --delete [substring]

	 display today's entries in the 'dailies' goal
	 checks off items matching any substring provided

Options:
	 --add create a new daily item and check it off
	 --delete all items that match the substring
	 --goal specify the goal to update, default: 'dailies'
	 --toggle toggles items matching any substring provided
	 --test displays output, but doesn't update Beeminder
	 --yesterday adjusts yesterday's items, not today's
	 --help displays this text
```
