Fun with Joe’s Goals
A friend was playing around on the Joe’s Goals website and sent me this screen shot:

It isn’t art but it is kind of funny.
A friend was playing around on the Joe’s Goals website and sent me this screen shot:

It isn’t art but it is kind of funny.
One and a half million checks! Isn’t that amazing? Who would have thought Joe’s little goal tracker would make it so far?
Take a look at these stats as we voyage into the realm of endless goals and see just where all these checks were placed.
Most checked goals
These are the goals with the most users and the most checks. Joe’s Goals has an amazingly “long tail.” The top ten goals only make up around 10% of total checks. There are literally tens of thousands of goals that are unique and tracked by only one person. The top ten, however, show the habits the majority of users are working on.
| Goal | Users | Checks |
Exercise |
3973 | 48112 |
Drink Water |
529 | 17584 |
Eat Out |
1201 | 14391 |
Brush Teeth |
357 | 11814 |
Meditate |
661 | 11026 |
Take Vitamins |
367 | 10204 |
Floss |
514 | 9502 |
Read |
489 | 8573 |
Workout |
637 | 7935 |
Eat Breakfast |
401 | 7373 |
Beverage wars
Call it coke, pop, cola, or soda; there are sure a lot of people trying to break the habit. Here is a summary of the most popular terms people use on Joe’s Goals and how often they’re tracked:
| Goal | Users | Checks |
Soda |
116 | 3322 |
Pop |
37 | 1061 |
Dr Pepper |
5 | 519 |
Diet Coke |
7 | 503 |
Coke |
14 | 289 |
Mountain Dew |
7 | 183 |
Diet Pepsi |
4 | 147 |
Cola |
10 | 90 |
Pepsi |
4 | 56 |
Minutes of productivity
If you were to quantify the minutes of productivity any tool adds to someone’s life, how would you do it? Well Joe’s Goals doesn’t necessarily add any time, but it does provide the inspiration and encouragement many people need to spend their time more wisely. Here are the most popular “minutes” goals users track.
| Goal | Users | Checks | |
Exercise 30 minutes |
39 | 1281 | That’s 640 hours! |
Reading 30 minutes |
40 | 1885 | That’s 942 hours! |
Walk 30 minutes |
25 | 328 | That’s 164 hours! |
Freewrite 15 minutes |
2 | 156 | That’s 39 hours! |
Do nothing for 15 minutes |
2 | 116 | That’s 29 hours! |
A lot of people have a thing for Chocolate
However you track it, it is still delicious.
| Goal | Checks |
Chocolate |
1224 |
Ate Chocolate |
90 |
Eat Chocolate |
89 |
No Chocolate |
88 |
Candy/Chocolate |
44 |
Had Chocolate |
24 |
Too much chocolate |
22 |
Eat Chocolates |
19 |
| and many more… |
Face time above all
The goals that warm my heart the most are the family goals — family dinner time, date night, kid play dates, quality time, etc. It is necessary to human health and happiness that we have contact with other people. In this age of family decay it is wonderful to see people stepping up and making the extra effort to keep their family together. These folks have made that effort.
| Goal | Users | Checks |
Time with [Child’s Name] |
8 | 1484 |
Time with kids |
21 | 179 |
Time with family |
9 | 157 |
Time with a friend |
2 | 32 |
Some use Joe’s Goals to track their diet, stay on their meds, keep track of those days they just want to cry, track when they go to bed, when they get to work on time, finish their homework, or reach out to friends via an email or phone call.
I’ve resisted all pressure to try and force people to pick standard names for goals. Joe’s Goals really means Your Goals. People use it to track what is important to them. To break their bad habits. To track their desires, their efforts, their tears. If it helps just a little to call a goal something specific like “Play Frisbee with kids” then, by golly, it is worth it.
If, in all these checks and goals, just a handful of real people were given enough permission and enough encouragement to make a real difference in their own lives, then Joe’s Goals has been a success. A huge success. That has been my hope and prayer all along.
Thank you for using Joe’s Goals. I’m honored to be a part of your lives, and I hope you are as excited as I am to see what the future holds.
P.S. If you want to see even more data like this, check out the Get Inspired section on Joe’s Goals.
The lazy function definition pattern is pretty simple at heart: you have a function which does some work, caches the results through a closure variable, and then overwrites itself with a new function that simply returns the closure variable. So the first time you run a function will be the only time the function does any work. Each subsequent call is “lazy” and just returns the results of that first call.
This is all fine and dandy, but what if you want to conditionally reset your lazy function?
Functions that work smarter, not harder
Consider this: you have a page with several related but independent widgets. The page is often redrawn as you work on the data, forms, maps, etc. You have to redraw the widgets often even if the state of a particular widget hasn’t changed. By using the lazy function pattern you can easily do this by having the function rendering the widget cache itself. But what happens when the widget’s state is changed? How do you easily reset it and rebuild from scratch?
Sending lazy functions back to work
Here is my test enhancement to make a reset possible:
var curState = "Washington";
var stateInfo = function ()
{
var reset = stateInfo;
var pState = curState;
var theInfo = "The state is " + curState + ".";
var showInfo = function ()
{
return (pState == curState) ? theInfo : reset();
};
stateInfo = showInfo;
return stateInfo();
};
Proof in the pudding
So the first time we call stateInfo() the function does a bunch of work, creates the results we want, and returns the following:
> The state is Washington.
The second time we call stateInfo() the function just does a variable check and then returns the cached copy of the initial results (as in the showInfo() function above):
> The state is Washington.
But what if we change the State?
curState = 'New York';
stateInfo();
> The state is New York.
On this call of stateInfo() the function ends up invoking reset() which is a copy of our original function. Thus it recreates itself and re-caches the new results. Cool eh?
But what if we go back to Washington?
curState = 'Washington';
stateInfo();
> The state is Washington.
What we have here is a ladder of cached results. The reset() function is called by our current stateInfo() function because the state is not New York. But reset is just a copy of the earlier stateInfo() which contains a cached copy of the results for Washington. So that is displayed. If we change the state to something new we will again climb the ladder until we reach the original copy of the reset() function which will produce our results for the new state.
curState = 'Montana';
stateInfo();
> The state is Montana.
How it works
Let’s walk through the code.
Encapsulation and a dirt simple API
This model allows you to easily expose an optimized and extremely simple API for your application. In one single function you roll the “work” your code needs to do, the logic to decide when to do your work, and a cache of the each instance of your rendered results. For your application logic you only ever have to call doSomething() and doSomething() will either find the cached copy or create a new set of results. But in either case it will always do the correct thing.
In April 2007 Technorati reported that:
With all that writing, why is it that half the time I can’t figure out what any of these blogs are talking about?
Making writing easy, simple, and understandable is the goal of this article. I’m posting it here because I think the suggestions are reasonable, tested, and useful. I’ve even attempted to use them in this very post. I do hope that more of fellow internet bloggers will take note and clean up their posts.
Have you ever truly mastered something? Sure you have. At some point in everyone’s life they master something, even if it is only tying their shoes or stacking the dishes “just so” on the rack.
More than nature
Mastering isn’t a survival instinct; it’s an urge to excel. Mastering is one of the experiences that delineates us from animals. It is striving to be more tomorrow than we are today; to perfectly pitch the ball over home plate; to craft the perfect sentence in an article; to open the oven and feel the warm, richly-scented cloud telling you dinner is going to be absolutely extraordinary. We humans crave perfection, to be masters of our domain, to distinguish ourselves by sheer skill and prowess.
Mastering is up to you
I routinely get emails from folks who credit Joe’s Goals with helping them master some aspect of their life. It may be getting in shape or breaking their addictions or practicing their piano consistently for the first time. But you know what? They did it on their own. All any tool can do is give you permission to complete your task. People use Joe’s Goals to carve out a box each day. A square holder containing time and a degree of commitment. And then THEY do it. With God’s help, they do it.
Know it, do it
Mastering is not about perfection. Far from it. Mastering isn’t doing everything perfectly. Rather, it is knowing in your soul that, when the chips are down, you can rise to the occasion. Mastering is the grace, the often unmerited favor, that lets you sink that shot at the buzzer, winning the game. It’s the click of the shutter capturing baby’s first smile. It’s leaping out of the helicopter at 5,000 feet into a field of snow. It’s being #1 in your department two quarters in a row. It’s the straight line, the perfect knot, the well-placed kick. It’s knowing what you are doing.
See mastering in action
Below are a series of videos I’ve been collecting over the last year that show what can happen when someone masters something. They are glimpse at the truly great. I hope you enjoy them and get as much inspiration out of them as I do.
The world has enough mediocrity. What have you mastered?
* Photo courtesy of cyancey.
What do you want to accomplish? Lose weight? Quit smoking? Exercise? Which of the thousands of products and plans out there are most likely to help you succeed? This is exactly the question Zeenami is trying to answer.
Zeenami is a new self-improvement portal that ties together your results from several personality and fulfillment quizzes to create a “success profile” just for you. This profile is used to rank and recommend products and services according to what works best for people like you. Based on the areas of your life you want to work on, you can use Zeenami’s detailed goal tracker (which yours truly helped them implement). You can also share goals and goal plans with other members of the community. There is also a directory for life coaches and other professionals in your area and a growing library of articles and media to encourage you in your quest for improvement.
Check it out, take the short (two page) life fulfillment quiz and be sure to leave the team some feedback.
Basic Instructions is a fun web comic authored by Scott Meyer and taken under the wing of Scott Adams (i.e. Dilbert). One recent comic gives you a quick/useless guide to quiting caffeine. It doesn’t mention Joe’s Goals but given that quiting soda and coffee are some of the more popular goals people track I figured it would be worth a post. Enjoy.Since rolling out chains I’ve received at least one email a day telling me that I should change the way they work for negative goals. To quote one example:
Please change the way the chain tracks for negative goals. If I have a negative goal called eat out I want to see the number of days since I last checked it. That is the chain and my goal is to make that number bigger and bigger.
When user feedback is that dramatic it is time to take action. I update the chain for negative goals so it is days since last check mark. Thanks for your feedback everyone!
Just a couple of quick Joe’s Goals updates. If you are logged in there is now a button in the Get Inspired section that lets you add a goal to your tracker right from there. Since there are hundreds of goals that you can check out in Get Inspired this should hopefully makes things easier and be an encoragment to track more personal goals.
Also, I updated the random quotes that go out with the email reminders each day. I found a bunch that I thought were powerful and meaningful and I hope you enjoy them.
Sleep related goals are some of the most popular on Joe’s Goals. Everyone needs help now and again getting out of bed and to help with that LifeRemix put together a list of 24 excellent tips and suggestions to help you be more consistent. Joe’s Goals doesn’t get mentioned until Tip #24 itself, but I consider that I place of honor.
For those needing that little extra push out of bed, a reader pointed out SleepTracker. This is a little tool that monitors your sleep and gentelly beeps you awake at the point in your sleep cycle that is least likely to leave you feeling groggy or tired.