The best kittens, technology, and video games blog in the world.

Showing posts with label beeminder. Show all posts
Showing posts with label beeminder. Show all posts

Monday, April 06, 2015

The Unreasonable Effectiveness of Beeminding Checklists

Selfie by SethBahl from flickr (CC-NC)

I've been using beeminder for year and a half now, and I wrote about it previously many times.

A few things are extremely easy to quantify and beemind (canonical example is exercise - just use a stopwatch app on your phone), but such things are really an exception, and most of the things I wanted to change weren't easily quantifiable.

I tried a lot of approaches, all unsuccessfully - they generally took a lot of effort to track, and results were rather discouraging.

This year I tried something different - just a simple end-of-day checklist, number of ticks goes to a single beeminder task. Any major project, any "do this" or "don't do that" habit, they each get one box on the checklist.

And it's been working unreasonably well, compared with everything I tried previously, while taking much less tracking effort.

I keep my checklist and daily results in a text file (in a git repository etc.), but I can totally imagine that beeminder might one day add a checklist goal, where you can do all this online.

One difference between what I've been doing and what is the usual beeminder way is that any checklist adjustments (as it obviously won't stay the same forever) happen right away, not one week ahead. Technically you could use that to weasel out of approaching fail, but then you could redefine beer pong as exercise to avoid failing that, and it doesn't seem to be a serious problem.

So far I didn't bother giving different boxes different values - they're all worth 1 point, but that's a fairly straightforward extension of the system.

Or you could track percent of boxes ticked, which possibly makes more sense (and reduces potential weaseling) if checklist size keeps changing, but I didn't want another step in the process so I went for the straightforward option.

Thursday, August 14, 2014

Beeminder resolution problem

Cute squirrel monkey by **Mirm** from flickr (CC-NC-SA)
Beeminder tries to be two distinct things at once:
  • quantified-self system - helping you tracking relevant information about yourself
  • self-improvement system - nudging you towards better behaviour
These two tasks are highly entwined - you can't nudge yourself meaningfully without tracking your progress; and things you want to track tend to be things you care about improving, or at least maintaining at certain level, so it ought to make sense to have one tool for both.

The primary reason it doesn't work all that well in practice is that optimal resolution for tracking is drastically different from optimal resolution for commitment.

You generally want to track things at high resolution, but commit at low resolution. What you want to commit to is "getting enough exercise". What you want to record are things like "10 km on a bike", "30 minutes on a treadmill", or "10 sets x 10 reps with dumbbells". It's common to make the mistake of setting each such activity as a separate goal, enforced every week, which inevitably leads to mass derailing pretty quickly, even if you are getting decent amounts of exercise.

Instead, what you need do is throwing these data points all together into a single "exercise" commitment goal. They don't come in the same units, so you need to convert them somehow - to hours, intensity-adjusted hours, some kind of per-exercise point system, daily did/didn't exercise points, or something more creative. Whichever way to aggregate them you pick, what you want to commit to is low-resolution aggregate of high resolution tracking data.

This kind of aggregation is not supported too well by beeminder. What if you want to change from one way to aggregate data to another? Editing data for current goal is not only tedious manual process, it will most likely retroactively derail you. Or you could archive current goal and start a new one, eventually ending with "exercise-17" goal. There are ways within the system, but it's not helping you.

This might not be a huge deal if all you want from beeminder is some help with akrasia - for this past data is not a huge deal since it's already done its job nudging you. If you care about long term data, your choice is messiness of manual aggregation, or huge number of microgoals with frequent derailing.

I used "exercise" as an example, but that's actually one the easiest goals to aggregate. What if you wanted to commit to "work", "education", "doing new fun things" or some other difficult to measure goal? Hours of effort, which work tolerably for exercise, are really bad measure for most other goals, and point systems will require frequent tweaking. (I wonder how many programmers have "lines of code written" as beeminder goal - it might still be less crazy than "hours spent coding").

Resolution is not the only case where what you want to track is not what you want to commit to. For just about any area of life you'd like to improve, you want to commit to effort, and track outcomes. It's a miserable experience if you commit to an outcome like weight loss, school grades, earnings, or whatever else you're concerned with, put serious effort into it, and derail anyway because of one unlucky week.

On the other hand what good is committing to certain number of hours of effort, if you're not getting results you want even long term?

Beeminder is trying to do something new, and even in its imperfect state it's still highly useful. It still has very long way to go.

Saturday, April 19, 2014

Beeminding the unbeemindable

It's going to be pretty awesome a couple decades in the future when all this will just be common knowledge, but we're just starting all this and we all need to go through the process of discovery what works and what doesn't individually.

And we should definitely hold ourselves to a much higher standard than "doesn't suck any more than it would otherwise". It's a good thing I don't have that particular problem, for which I don't really have a good solution, and I'm perfectly aware how poor track record of all existing "solutions" is when they are put to actual rigorous trial.

Anyway, as I said before, things that have good beeminder goal and measure go well and quite reliably so for me, but everything else - well, sometimes it does, often it doesn't. And I have a huge number of extremely important projects I need to keep pushing forward, and many of them haven't been moving as much as I'd like. Of course I can take the nuclear option of just dropping everything and taking a few months off mo get things I want done, but it's a good idea to try a few less drastic courses of action first. And for that matter to make sure if I ever go all the way, it will be highly efficient use of my time.

Idea #1: Per-project measures. One way would be to setup twenty or whatever number of measures, one for each project, but that's a ridiculous overkill, especially on beeminder which doesn't work that amazingly for things that move forward less often than once a week. One sort of workable thing would be to setup tracking for top 3 projects, and for the rest, well, "it won't suck any more than it would otherwise". I never seriously attempted that, and even beeminder discourages having too many beeminder goals.

Idea #2: Tracking time. What I actually tried at first was getting pomodoro timer and counting time spent on any project on the projects list, with beeminder target. This was a miserable failure, since time has very little relationship with progress, and such system just assumes single-tasking and no interruptions - both things which are just completely incompatible with my reality. It was a miserable failure for me.

Idea #3: Track everything. For this I skipped beeminder, since I wanted tracking, not necessarily a target, at least not initially. Everything, on my lists or not, which changed state of the world in direction I wanted, got a +1. It was extremely broad definition on purpose, and I did it for a month with +163/day average. And things were sort of moving forward fast, just not the important things. I'd say it way not very successful, and I don't think adjusting point criteria or explicit target would make much difference.

Idea #4: Priority tasks. Finally I took the opposite approach, lowered all other beeminder targets by about 1/3 to make sure I have time for it, set up a very short list of extremely high priority tasks, with a target of 1/day. 3 weeks later, it's not amazing, but it's been working considerably better than any of my earlier attempts, which were total failures. My first idea was to limit the priority list to just 3-5 items, but it has tendency to grow, and I have to trim it back regularly, moving things back to regular todo lists.

That's it for today. No real solution, but I hope my self-experiments will be useful to others as well.

Sunday, February 23, 2014

5 months with Beeminder

I'm forever blowing bubbles... by hehaden from flickr (CC-NC)
It's been 5 months, plus or minus a few days, since I started serious some beeminding.

Early on I tried to set goal levels somewhere near where I want my long term averages to be, minus some reasonably wide margin for things which might go wrong (it's not pessimism, it's an outside view), but that's actually how I failed one of my goals once and these days I readjust short term goals often and aggressively.

I have status of my beeminder tasks on my GTD dashboard, and it display both time-to-fail and long term weekly averages. That's what actual averages are:
  • Try new fun things - 2.55/week. The "new" being the key here in case you're wondering why I bothered to put it as a task. About half of these turned out to be awful, but the point is for trying something out. I could probably use broader definition of what counts as a new fun thing.
  • Exercise - 2.15h/week. (due to counting method that actually means something closer to 2.5h/week) That's about sensible long term average for a busy person. If I have time for more I'll do more, but there's only so much time in a day.
  • Online Education - 2.38 lessons/week. That's a very interesting one. I redefined "lesson" in a different way for just about every single education resource, whatever was closest to 1-2h/lesson time. Interestingly even at this aggressive pace it doesn't seem like I'll be finishing any courses anytime soon. There's some diminishing returns here, and it feels more fun and more useful to try something else out rather than spend time "finishing" what I already started.
  • Play Magic - 7.19 games/week (that is about 3 full matches/week, I'm counting this way because EDH, casual etc. don't use matches, and people ragequitting after game one are a thing). Making sure I allocate some time each week for Magic led to discovery of a lot of interesting decks I'd otherwise miss. And yet I haven't played much of any Constructed formats other than Standard and a bit of Modern lately.
  • Commits to Open Source repositories - 8.36 commits/week. That's about 100% github these days. That's mostly me being more aggressive about putting stuff I write on github if possible instead of just stashing it in my personal ~/everything repo. And it turns out a lot of stuff I write for myself still can't reasonably go public.
  • Blog - 1.68 posts/week. I counted a few blog-sized things I posted on Google+ which I didn't want here because they were even more off topic than usual stuff I tend to post here, but even disregarding them that's very active blogging.
  • Books - 0.8 books/week. And I'm nowhere closer to getting through the ridiculous stashes of books I sort of meant to read. At least they're mostly electronic form these days, so they take less space. If Amazon releases that rumored high resolution e-paper Kindle this year, that might increase by a lot.
I'm reasonably satisfied with how all these things are going, and I'm in very low risk of failing since average time-to-fail for these goals is somewhere in 20-30 days range typically, so if anything horrible happened that would significantly reduce my ability to do them I'd have enough time to adjust the targets accordingly.

As for things I want to see done which are harder to beemind - I haven't found a decent solution. I tried a pomodoro beeminder target but that was a miserable failure. My experience with pomodoros has generally been pretty underwhelming. Single-tasking is just not very compatible with me. I tried a lot of non-beeminder-linked things, with varying degree of short-term success, but nothing really looks like a good long term solution. If you have any ideas for things worth giving a try, definitely tell me.

Wednesday, December 18, 2013

First Beeminder failure retrospective

Sand cat walking towards me by Tambako the Jaguar from flickr (CC-ND)
So it happened, and after a few months of beeminding I finally derailed on blogging commitment, costing me $5, or some tiny fraction of a bitcoin ;-p

I don't feel it was really akrasia-related in any way - just a lot of things happened that made it more difficult - each one individually was totally possible to overcome, but together they just made it too hard. I didn't adjust my commitment levels downwards early enough, so these levels which were originally fairly conservative became fairly optimistic, and one of the commitments failed.

For that matter I don't even thing there was anything wrong with my commitment level in the long term view, just that it was somewhat risky short term, and that's why it failed.

It's technically a legitimate fail, but it doesn't feel like a vindication of Beeminder's akrasia-centered model at all. Maybe just tracking the goals is more useful than putting money on the line.

Sunday, November 24, 2013

Correction for excessive beeminding

So very lazy by mada299 from flickr (CC-NC)
It seems I overcommitted myself somewhat, with estimated time spent beeminding being about 26h45m a week. I cut things to get it to estimated 20h or so. These numbers are all quite vague of course.

So what got cut (ordered from hardest to easiest task):
  • Pomodoros doing important things. This really isn't going anywhere near as well as I hoped for some reason. 7/week down to 4/week for the time being. At some point I either need to get good at it, or scrap it completely. Lowering the pressure might leave some space for experimenting with this.
  • Blogging. 3 posts/week down to 2.5 posts/week. It's still far more activity that this blog has usually seen.
  • Open Source contributions. 10 commits/week down to 7 commits/week. I have a pretty major project going of migrating things out of taw.chaosforge.org that probably won't see many commits but it will sure take a lot of time.
  • Play Magic: the Gathering. 10 games/week down to 6 games/week. I'll probably ramp it back up when formats get refreshed - like after Born of Gods release on February 1st. Standard is pretty decent these days, but I don't have as much time as I'd like and other things take priority.
  • Exercise. Staying unchanged at 3 nominal "hours" a week, which are closer to 3h30 actually. For health reasons that really shouldn't be cut, especially since I'm keeping up with this really well.
  • Try new fun things. Staying unchanged at 2/week. This goal has very high time variety, since sometimes I decide it's not fun after a few minutes, and sometimes it takes days to enjoy something fully, so it's hard to say how much time this is really taking.
  • Online Education. 3 lessons/week down to 2 lessons/week. Mostly due to my Internet connection becoming really shitty lately.
  • Books. Staying unchanged at 3/month. To be honest it's not terribly valuable, but I'm mostly reading in otherwise dead time like trains and so on, so it wouldn't really save much time to cut it. 
Changes of course go live 7 days from now. I'm sure I'll be readjusting everything for holiday season as well.

Sunday, November 17, 2013

Beeminder status update

Mohan doing acrobatics! by Tambako the Jaguar from flickr (CC-ND)

I think I have taken about as much stuff to do as is reasonable. By back of an envelope calculations it would take me about 27 hours a week to do all the things I committed myself to, and in practical terms my mean time to derailment is now pretty stable near 25 days or so, rather than going into space.

Here's update by goal. As usual, from hardest to easiest:

Thing I'me really struggling with

Pomodoros of important things (goal - 7 pomodoros / week). That's one goal I've been really struggling with, and it's not really clear why. It's not lack of time - it takes literally 25 minutes a day to stay on course with this one . And it's not lack of clarity on what to do - by per-project list contains 44 things I could be pomodoroing right now.

There's something about shutting off everything else and focusing singlemindedly one one thing that's just hard. Also timers, they're annoying. I'll keep trying, hopefully I'll find some way for this to work.

Things that work about right

Blogging (goal - 3 posts / week). The blog could always be more active, but it's already more active than at any time since 2006-2007 (back when I was at university and had nearly infinite amounts of free time), so that's fine.

Exercise (goal - 3h / week). Time a week I spent exercising feels about right. I want to add more variety, and maybe increase intensity somewhat. Sadly there aren't really that many exercise games out there, I don't have much space for exercise equipment at home, it's too cold right now to do that outdoors, and I don't like gyms much due to their very low ratio of time actually spent exercising to total time spent, including commuting, changing clothes, and such.

Play Magic (goal - 10 games / week). I feel there isn't really that much more to discover in Standard. Meta more or less stabilized, none of the top decks are anything special, and the card pool is too small right now to do much creative brewing. I miss Birthing Pod. Anyway, it's probably time to explore some other formats like post-Jund Modern.

Open Source contributions (goal - 10 git commits / week). I didn't have any serious projects recently other than Skype exporter, but I've added a bunch of missing functionality to my existing utilities, wrote some tools for manipulating Magic decklists, and contributed better decklist importer to Cockatrice.

Online Education (goal - 3 lessons / week). This one has really good reason why it's not going any better. It's BT being steaming pile of shit. Recently I can't get anything better than 2mbit (of 20mbit I'm paying for), and that's literally not enough to even watch standard quality youtube videos without buffering issues. My alternatives here are various BT resellers with no guarantee of being any better, or moving to a different place where I could get something else. Fucking first world, huh? Ironically it would work OK with a 60 minute lecture in a single video, since I could simply let it fully buffer or download, then watch it in one block later, but all MOOCs just break the videos into tiny bits, and that does not buffer well. There are workarounds - not everything I want to learn is video-intense, or I could setup some video downloader. Or I could move to a place where ISPs don't suck. South Korea?

Things that into space

New Fun Things (goal - try 2 new things / week). Unsurprisingly that causes zero problems and I'm far exceeding this very modest goal. I put reviews of some of things I try on my Google+ if you're interested.

Books (goal - read 3 books / month). This also exceeds expectations, but for a different reason. There's just so much dead time during a week, and since I ran out of podcasts (recommendations welcome) I'm just listening to random audiobooks instead. It's also a good thing to do while doing low/medium intensity exercise. Either way - this is mostly happening in a time which would otherwise be wasted.

Saturday, October 26, 2013

Some things beemind better than others

Winy and her water by Tambako the Jaguar from flickr (CC-ND)

I'm in the middle of long overdue full GTD review, and one thing I've noticed was that aspects of my life that have a Beeminder goal connected to them tend to do a lot better than those that don't.

This doesn't necessarily mean it's thanks to Beeminder - there's also a lot of reverse selection, since only things I have clear goals and metrics for can really go to Beeminder, and that alone usually means they might go better, but it sure is a suggestive correlation.

What doesn't work too well on Beeminder

Anyway, I'm in the process of archiving one goal. I was very reluctant to add it, and pretty much all my worries about it were confirmed. It was a "do less" goal to try 80% paleo diet I wanted to try for a while. Now the goal was never in any danger of derailment, but it felt really wrong all the time.

A "do more" goal is something you need to think a few times a week, requires minimal data collection, and all that data collection corresponds to a successful outcome on the graph - you're getting some awesomepoints! You need to think about it sometimes - but vast majority of your time you can completely ignore its existence.

A "do less" goal on the other hand is something looming over you 24/7. It requires constant tedious data tracking (I only sent daily summaries to beeminder, but total number of data points collected for it was much higher than for all my other goals combined), and is associated with negative rather than positive emotions all the time you collect data for it. There are no redeeming qualities here.

About the only thing worse than a "do less" goal would be a weight loss one - not only you get all the negatives of a "do less" goal, you don't even have any reasonable amount of control over the outcome.

Now I never bothered to look at Beeminder's data to see if "do more" goals have higher success rate than "do less" and "weight loss" goals, but I'd be surprised if that wasn't the case. And even if they don't, they're sure much more fun and less stressful.

As for paleo diet in particular, it's fine when you can cook at home, but it's rather impractical otherwise without seriously stretching definitions of what counts as "paleo". There's huge choice for people who for some reason want industrial waste from soybean processing and similar garbage (also known as "vegans"), but if you want real food, you're on your own. Maybe it will change one day but for now full paleo is just too much effort and the best one can do is avoiding the worst of industrial crap.
Yawning tiger cub II by Tambako the Jaguar from flickr (CC-ND)

Goal Status

I don't really have any hard long term targets - I adjust them based on how difficult it currently is and how important I feel the goal is - if the goal is important but current target is too easy that's a good reason to ramp it up.

Anyway, goal status, from hardest to easiest:
  • Try new fun things - That's a new goal I added recently, so it has no data points yet. I'm not really worried about meeting this goal, but it sure is fun to get some points for things I want to do anyway (2/week).
  • Pomodoros of important things - Another new goal. Initial target at 7/week, but it will need to go a lot higher once I get used to it. I have a lot of projects I want to move forward without good goals or measures, so rather than ignoring them or adding 20 or so separate goals of dubious quality, I'm adding a catch-all "pomodoros spent on doing any of them" goal (anything covered by another goal doesn't count here). This might still end up leaving half of the projects without any significant progress, but that's better than all of them. 
  • Exercise - This goal has been suffering from serious difficulties. Early on I managed to get sick, last week my exercise equipment broke down (fortunately ebay was pretty fast as shipping replacements). I'm about right on track for 3h/week target, and I might consider increasing it to 3.5h/week someday, but for now I'm just going to stick to current target.
  • Online Education - I found a lot of resources other than Udacity, so this goal is safer long-term than I was originally worried. I still feel it's relatively hard to find quality resources in subjects that interest me, and in a few months I might run out of them, but for the time being 3 lessons/week is just fine.
  • Play Magic - No troubles here, but I don't feel any major reason to ramp this up from 10 games/week.
  • Open Source contributions - This has been going surprisingly well, and I'll soon post about some of the things I've been working on, and since this is really important I'm going to increase the rate from 7 commits/week to 10 commits/week.
  • Blog posts - It seems I accidentally wrote a post that got into top 10 of this blog ever just a few days ago. It's so random which posts become popular and which posts almost nobody reads... Anyway I've got ton of things I want to write about, and I really like this blog being much more active, so I'm increasing the target from 2 posts/week to 3 posts/week.
  • Books - I feel a bit like a Soviet factory manager here since I went through my list of things to read, sorted by shortest first, and I'm focusing on these first. But then correlation between length of the book and its intellectual value is not that high, so it's a totally reasonable behaviour. I'm going to increase the target from 2/month to 3/month since I still have a huge stack of things I want to read, and it's going to take me years to get through it no matter the target.

Future goals

There's a lot of things I want to improve, but they don't have obvious good goals. I tried a dubious goal with paleo diet, and that didn't go too well, so I'll stay away from other "do less" goals.

Doing new fun things sound like a good catch-all goal to make sure time spent having fun still feels like achieving something, and it's important to have some balance in life. Goals are self-correcting, since ones that have lowest "days until derailment" feel most like an achievement to focus on, so there's no worry I'm just going to play new video games all time next month for some nice points.

Another area that really benefits from adequate focus, and which I often got bad at taking care of in the past is maintaining my GTD system. Unfortunately none of the metrics are sensible - my GTD inbox will invariably go way above 0 (and likely >200) since I tend to do reviews using "dump everything into inbox, then dump all my thoughts into inbox, then process one item at a time" system and it can take a long time to get it together. Even not counting reviews inbox often gets temporarily flooded by new content, and that's perfectly fine, as long as it all gets processed within reasonable time. I have no idea what to do about it all.

Of all the projects currently covered by "do more pomodoros" goal - some of them might end up having their own goals if I can come up with any, or they might just get completed or blocked for longer time (another reason why I don't want to put them all onto separate goals). I'm not sure if the pomodoro goal will really work or not. If not - I'll have to come up with some other way of ensuring these things are moving forward.

See you next time.

Friday, October 18, 2013

Akrasia Theory and Beeminder update

risky game by mathias-erhart from flickr (CC-SA)

So this post will be about two only loosely related things - some problems with akrasia theory and my Beeminder status update.

Akrasia Theory

First, akrasia theory. The theoretical underpinning of it is that humans and animals for that matter use "incorrect" and time-inconsistent hyperbolic discounting instead of much more "correct" and time-consistent exponential discounting.

This is extremely problematic from evolutionary point of view - since any animal that moves even one bit closer towards "correct" discounting models could be massively more successful than ones that use "incorrect" models.

There's a bunch of ways to deal with this issue. A hopefully exhaustive list would be:
  1. Exponential discounting is more correct, but brains cannot implement exponential discounting even in principle
  2. Exponential discounting is more correct, brains can implement exponential discounting in principle, and it would be major evolutionary advantage, but in never evolved yet
  3. Exponential discounting is more correct, brains can implement exponential discounting in principle, but it wouldn't bring major evolutionary advantage
  4. Hyperbolic discounting is more correct
The first of these is just extremely problematic. Bounded rationality is fine, but exponential discounting is mathematically extremely simple, and it's hard to come up with any argument why it would be even tiny bit more complicated or difficult to implement than hyperbolic discounting - something even tiniest animal brains seem to have no problems with. Hyperbolic discounting has a small advantage that natural scale for most things is logarithmic, not linear, but we can think about linear scales if we want to. What's worse - if we accept that linear scales are impossible to think with, that completely destroys any chance of game theory or any other mathematical theory of mind working - and nearly 100% of things evolutionary psychology postulates are far more complex than that, so we'd have to reject them all a priori (I'm quite willing to reject most of them for this reason anyway, but not to such extreme).

The second alternative is actually somewhat promising, since we know of huge number of extremely successful evolutionary traits that evolved only once, even though nothing obvious prevented them from evolving much earlier. Like basically everything humans do. Even simple things like ability to synthesize all essential vitamins is entirely possible in principle, and it would be advantageous to organisms that lost it (which is all animals, pretty much) - but once organisms lost such ability, they never regain it. Still, it would really deserve some explanation why this is a particularly difficult thing to evolve into, and it's hard to come up with any.

The third alternative is probably the most popular (just after pretending the problem doesn't exist) - sure, exponential discounting would be better, but then animals' decision processes are based on duct taping huge number of silly heuristics together, so whatever problems hyperbolic discounting causes have been papered over by other biases and heuristics anyway, so it's not a big deal outside completely artificial laboratory conditions. It's difficult to come up with a convincing counterargument against this. It forces us to abandon all mathematically simple of human or animal behaviour, but these were totally silly in the first place anyway.

The last alternative is something that almost nobody except me seems to take seriously, and perhaps they're all right, but maybe - just maybe - animals use hyperbolic discounting because it models the real world better than exponential discounting? The thing is - exponential processes despite their mathematical simplicity are nowhere to be found in the nature. Even radioactive decay - the classic example of exponential process - looks much more hyperbolic once you move from a single element to a mix of elements (or include secondary products of radioactive decay in the distribution). I have no way to prove it, but it definitely feels right, and avoids completely ridiculous conclusions that come from taking exponential discounting seriously.

sleeps with bees by splityarn from flickr (CC-NC-SA)

Beeminder Update

Anyway, here's my regular Beeminder update. My 6 "do more" goals, even after previous ramp up got to average of 34 days until fail, which basically means Beeminder is currently completely toothless. So far it looks like I'm not going to pay them a single dollar ever, but then who knows.

I feel it's important to distinguish between target levels (I wish to do X/week) and commitment levels (I commit to do X/week). Commitment should be much lower than target. By how much depends on variance - for low-variance goals like exercise they can be pretty close, for high-variance goals you should commit to much less than you target, at least initially. If it works, you can always increase commitment levels.

Goal status, from hardest to easiest:
  • Exercise. It's going most smoothly of all goals. I'm going to increase it from 2.5h/week to 3h/week commitment (current average is 3.4h/week). All this is in wii fit / ddr "minutes", and 3h of such "minutes" is actually about 3h45m wall clock time. I have no plans to ever commit myself to anything more than that, since there's only so much time in the week and there are diminishing health benefits to exercise. If that's ever too easy I'll just increase exercise intensity instead.
  • Online Education. I found a bunch of alternative resources since then, so it's not just Udacity now. The problem is conversion factors between them, and I'm taking a fairly generous interpretation here that full unit is full unit, even if most are much easier than Udacity's GPGPU course. I'm increasing this from 2.5/week to 3/week, and I might increase this again in the future, depending on what other education sources I'll find.
  • Play Magic. I could easily increase the commitment to play 10 games/week, but that's a good number and there's no reason to overdo it. I'm definitely playing enough to stay up to date with all the developments in the game, and I'll explore other formats some more once I get bored with Theros Standard.
  • Open Source. This is going really well right now. I feel this is extremely important, so I'm just increasing it from 3 commits/week to 7 commits/week. This might increase further, depending on circumstances.
  • Blog. My blogging has been really active recently, and I plan to keep it this way, so I'm doubling the rate from 1 posts/week to 2 posts/week. This also might increase a lot more.
  • Books. There's a big problem of what counts as a "book" here, since some are a lot longer than others. I'll be going through a ton of audiobooks for exercise anyway, and still I have a ton of paper and Kindle books to read in addition to that, so I'll increase it from 1 book/3 weeks to 1 book/2 weeks to maybe get through all these stacks someday. Perhaps I'll change this goal to count shorter books for less and longer books for more someday? We'll see.
I also have a bunch of things I want to measure but I don't yet feel like committing to them on beeminder. I added one of them - a "do less" goal to give 80% paleo diet a try, and so far it's going quite well. The biggest position on the non-paleo budget is unsurprisingly coffee, which just isn't particularly good without sugar, milk, and chocolate, and considering my coffee requirements and realistic off-paleo days for external reasons I doubt I'll be tightening that 20% non-paleo allowance anytime soon. To be honest I haven't noticed any interesting effects from that, other than it forced me to try different things in the kitchen.

As for my other non-beeminder measures, two of them are reasonably on-track, and one is very much off-track. No idea if I'm going to commit to them or not anytime soon, but I'm thinking about it.

Sunday, October 06, 2013

Beeminder ramp up time

Chocolate by Alba Soler Photography from flickr (CC-NC-ND)

Ten days ago I started serious Beeminder experiment. I came up with 10 things I want to track, and 6 of them seemed sensible enough to put on Beeminder (the other 4 I'm just tracking offline for the time being, there are various complications with them, I might add them to beeminder later).

My initial goals were very conservative, and it doesn't surprise me that I had little trouble meeting them. As of writing this I'm 15 days away from failing on the slowest moving goal, and 31 days on average (some of my offline goals are doing a lot worse).

Here's a per-goal update, sorted by time to fail from hardest to easiest.
  • Online Education. That was all long overdue. It goes very smoothly, feels very useful, and I see no problem with ramping this up from 2/week to 2.5/week. I put some effort into finding out some non-Udacity courses, but it's relatively problematic what will count as a "unit" there. It's relatively hard to rush it if I ever fell behind, since most online education requires some serious homework, not just watching instruction videos. Really happy with this. I might increase it more once I'm happy with non-Udacity courses as well.
  • Exercise. That went really well. I'll only increase it from 2h/week to 2.5h/week since I'm  also gradually increasing intensity, and I don't want to overdo this too suddenly, since that would risks injury.
  • Books. It's really difficult to say how it's going to work, since I only finished one book during last ten days (on Kindle). I tried some long overdue paper books I wanted to read, and that mostly just reminded me how awful and inconvenient paperbooks are. I sorted out audiobook player on my phone, since DicePlayer kept crashing all the time and wrote a script for speeding up audiobooks just to be sure. I'll probably should just throw away all the paperbooks in my backlog, and find ebook (or audiobook) versions instead if possible. Did I mention how much paperbooks suck? Anyway, increasing the rate from 1/4 weeks to 1/3 weeks feels safe enough.
  • Open Source contributions (as counted by github commits). I set this goal very conservatively to be below my average github contributions over the last year, but it was actually very close to derailing since these tend to happen in a very spikey manner. I had 1 commit over 9 days, and 8 commits today. Since this is important, I'm going to increase the rate from 2/week to 3/week.
  • Play Magic - for a moment I was worried that UW Control and Esper Control might screw Standard completely, in which case I might find it too unfun to play for the next three months, but everything looks good now after all. This is ton of fun, so I'll just double the goal from 5 games/week to 10 games/week. It's pretty silly to have "have fun" as a goal, but why not.
  • Blog - the unfortunate thing about this goal is that it tracks quantity, not quality, but there's nothing wrong with writing more shorter posts, when the alternative is not writing at all. I'll just double the goal from 1/2 post a weeks to 1 post a week, since that doesn't seem too difficult.

Tuesday, October 01, 2013

Displaying your beeminder goal status with Ruby

Taz, working on his cat loaf by DirtBikeDBA (Mike) from flickr (CC-NC-ND)
I have one rake task that updates everything that needs updating (git fetch -p and such stuff), and another that displays status of all things in progress. I want to add status of my Beeminder goals to that.

Step one is to login to Beeminder in a browser, open this URL, and copy auth token (without the rest of JSON stuff) to ~/.beeminder_auth_token.

Step two is to gem install beeminder.

Step three is the following code:
require "beeminder"

class Beeminder::Goal
  def days_to_lose
    (losedate.to_date - Date.today).to_i
  end
end

class Array
  def avg
    inject(0.0, &:+) / size
  end
end

desc "Display beeminder status"
task "beeminder:status" do
  token = File.read("#{ENV["HOME"]}/.beeminder_auth_token").chomp
  goals = Beeminder::User.new(token).goals.select{|g| g.days_to_lose >= 0 }
  goals.sort_by(&:days_to_lose).each do |g|
    puts "* #{g.title} - #{g.days_to_lose}"
  end
  puts "Avearge: %.2f" % [goals.map(&:days_to_lose).avg]
end

I monkeypatch Beeminder::Goal#days_to_lose since that's the most relevant information here. It is one higher than number displayed on Beeminder graphs, since it includes reporting day - you're not really meant to do things that extra day.

Then I add Array#avg - something that really should be in the standard library.

Then I get auth token, fetch goals from beeminder, reject goals that are already lost (one from my previous attempt forever ago), and display and average the rest.

It's all pretty straightforward, and it seems that submitting datapoints via API will also be pretty simple once I get to that.

Thursday, September 26, 2013

Second attempt at Beeminder

Bee Antena! by Danny Perez Photography from flickr (CC-NC-ND)

I decided to give beeminder another try, and this time making all goals I reasonably can public (as public as I can). Wish me luck. Any feedback very much appreciated.