Wednesday, February 27, 2013

All calorie-counting diet applications suck, except for one, and that one sucks too.

Why calorie-counting diet applications suck

I have now tried all 14 billion calorie-based weight-loss applications, and all of them suck (except for one) because they all (except for one) are based on these same baseless assumptions:
  • 3500 calories == 1 pound gained/lost - Hogwash! Someone did a calculation once (based on the estimate of pure energy stored in a pound of body fat) and that number has stuck in everyone’s fat head despite total lack of empirical testing on real people, and especially in testing on real people who are dieting, and especially in testing on you.
  • We know how many calories are in food - Rubbish! To measure calories in food people put that food in an oxygen chamber, burn it, and see how much it raises the temperature of the surrounding water. Does that sound anything like the biological processes our bodies follow?
  • All calories are the same - Balderdash! Does it matter if the calories come from protein versus fat versus grapefruit? I don’t know, and neither do any of these applications, but they all assume that a calorie is a calorie. I’ll tell you one thing for sure: a gallon of gasoline contains about 10,500 calories, but drinking it will not cause you to gain 3 pounds.
  • We all estimate food portions the same, and correctly - Hooey! Quick, you’ve got a piece of chicken in front of you. Is that 3 ounces? 2.5? 5? Is it as big as your palm? As thick as your palm? Is your palm the same size as your neighbor’s? Are you drunk-estimating?
  • We know how many calories we burn during exercise - Drivel! I’m told that measuring oxygen consumption is a pretty good way to measure calorie burn (at least during aerobic exercise), but even that differs between individual users and activities. And how often do we exercise with an oxygen mask?
  • Our bodies all act the same - Poppycock! What works for you may not be what works for me. Diets assume that you are just like anyone else who is your age, sex, height, and weight
  • Our bodies behave the same while we’re losing weight as while we’re not - Baloney! Our dieting bodies hate to lose weight and are much smarter than any application about how to use every possible calorie to prevent further weight loss.
  • Our bodies behave the same one month to the next - Harumph! Our schedules change. Our size changes. The weather changes
  • Every day is a new start - Ridiculous! Every calorie counter (almost) starts each day anew, as if it doesn’t matter that you over- or under-ate over the past two days.

The calorie-counting applications start with these wrong assumptions, perform an incorrect calculation, and tell you how much to eat and exercise today if you want to lose X pounds per week. “It’s just math.”

How to fix the calorie-counting applications

Fixing the applications would be pretty simple. The applications just need to learn a little bit based on the data they receive day after day.

First-order fix: data smoothing:

It is simple to smooth the data over at least a few days, so if I overeat yesterday, or plan to overeat tomorrow, it is easy to compensate today.

Second-order fix: adjust the 3500 value:

The formula (in-out/3500) is a fine starting point, but if within a couple of weeks the application sees that the person is losing weight too quickly, or too slowly, then the application should start to tweak the formula. Maybe for this person to lose weight over the formula should learn to be (in-out/2500). Over time that simple first-order approximation may need to change from time to time based on learning from the data.

Maybe the (in-out/3500) formula doesn’t work for this person because they have a non-standard diet-induced metabolism. Maybe it doesn’t work because they’re really bad at estimating. Maybe the person sleep-drinks a gallon of milk every night without entering it. Maybe it doesn’t work because over time their body composition is changing. Maybe it doesn’t work because it’s just a stupid baseless formula.  Whatever reason 3500 doesn’t work doesn’t matter, because the program can learn what value to change that 3500 to to get the user to reach their goal.

Third-order fix: adjust rankings for in versus out:

For some people the changes in eating are much more important than the changes in exercise (or vice versa). This could just be the difference between people’s bodies, or the difference in at-rest lifestyle, or the difference between how well an individual estimates their eating versus how well they estimate their exercise.  Again, the reason doesn’t matter so much as learning from this person’s data.

If the application determines, based on many weeks or months of data, that for this individual the differences in exercise matter more or less than the differences in eating, then the application should learn and adjust its formulas accordingly.

Fourth-order fix: look for individual patterns:

Suppose you tend to lose a lot of weight when you eat low-fat for a few days, or you tend to get low metabolism if you don’t binge at least once a week, or you get water-bloated after you eat lactose. These things are too subtle for you to notice and test for, but shouldn’t be too subtle for an application that has been receiving your data every day for months.

Over time, the application should be able to mine data and learn specifics about you. (Now it gets fun.)

Fifth-order fix: look for patterns among all users:

If an application is gathering data for every individual user, then if all that data is combined and combed through, there should be some very interesting big-data trends to learn about. With enough people entering data, we might get some better ideas about what caloric values are way off. Maybe we learn that people who eat corn flakes with honey tend to die on Fridays (we suspect they’re dead because they’ve stopped entering data). Maybe whole new secrets of dieting are uncovered. Maybe we learn that eating daily at Taco Bell is the secret to health (this is the result I’m hoping for).

Because the data is entered unscientifically, by unreliable reporters, it will not compare to double-blind laboratory-controlled studies, but because it will be a whole lot more data than any controlled study can put together, it will point toward areas that need better research.

The one application that doesn’t suck (and why it sucks)

DietPower is the only application that implements any of these fixes--data-smoothing and adjusting the 3500 value--and that makes a really big difference.  For at least seven years I used DietPower and kept my weight in check. Over that time it would adjust my daily allowance of calories based on my recent history. For some periods I had an allowance up to 2200 cal/day, while for other periods it might get as low as 1500/day, but it always kept my weight where I wanted it to be.

BTW, That’s another nice little difference with DietPower. Instead of specifying how much weight to lose each week, just tell it what you want to weigh, and how aggressive to be, and stick with that.

But DietPower sucks because it only runs on Windows and only on a big Windows display. Since I don’t run Windows anymore, DietPower is now useless to me (and even when I did run Windows, I did not go to every meal with a Windows computer in tow). Poop!

(Come on, DietPower. This is 2013. If I can’t run the application on my phone, or at least on a web site, it’s crap!!!!)

Someone please make a calorie-counting application that doesn’t suck:

Yes, weight-loss is “just math”, but it’s not simple math. When will your applications ever learn?


Addendum, February 5, 2015: I got tired of waiting for a proper app or web site to appear, so I caved in and bought a cheap Windows laptop which I use solely to run DietPower. That was last June. My instructions to DietPower were "make me weigh 173 pounds in 8 months". As you can see, it worked.

I will continue to use DietPower every day, to help me maintain my 173 pounds. And I will continue to hate that I can't do this from my phone, or from the web anywhere in the world, and that I have to have a special laptop solely for running this Windows program.

Related Links:
P.S. I'm growing tired of waiting for someone to do this right and may start on the issue myself (starting with a simple website where people can enter their information and we'll working on getting the  math right). If you're interested, email me.