I lost 44 pounds in the last 6 months. I did it without a diet or going hungry. I used basic methods that are known to most programmers for optimizing my behavior.
Here is a short guide to optimizing yourself into losing weight.
Will power == CPU cycles
This is one of ourunderlying assumptions: You want to spend as little will power as you possibly can, when making a decision about your eating choices. The more will power you spend, the less likely you are to succeed with losing weight.
Will power, like CPU cycles, is a limited resource, if every day you need to spend a lot of it in order to keep your weight, you will always fail at one point or onother. Not only that, will power is a shared resource – so if you spend it on going to the gym, you have less for other things.
The common diet algorithm
The commonly used diet algorithm looks something like this:
Map thingsICanNotEat = ...
Int willpower = ..
function boolean canIEatThis(sugar){
if(thingsICanNotEat.contains(sugar) and willpower>0){
willpower --
return False
}
return True
}
This is described in Nir Eyal’s blog post about fitness apps. After having lunch with Nir, I came up with a new algorithm.
The optimized version that does not spend will power
Here is algorithm I used:
static final boolean _canEatSugar = False
function boolean canEatSugar(){
return _canEatSugar
}
Wait… what happened to will power?
Well apparently, if you have static final variables (yes, contradiction in terms) you do not need to spend will power. This is the main hack of our minds – If you chose not to eat something because you hate it, or you are allergic to it, or it is against your religion, then you do not need to spend will power as you would with a dynamic type diet.
My hack definition
static final boolean canEatSugar = False
static final boolean canEatPasta = False
static final boolean canEatRice = False
static final boolean canEatWheat = False
I spent zero will power to maintain my eating habits, I chose things I can do without and took them away. I eat food I love (meat, fish, veggies, cheeses) and never go hungry. I do not second guess myself and never spend will power. My programming is in the static final identity level.
This way I never run into this:
And I work for Google
Final optimization – walking meetings
We all have 1:1 meetings, sync meeting and other “useful” meetings in our life – I turned most of my meetings into walking meeting. benefits include: no presentations, more effective outcomes, and usually shorter meetings.
Simply put:
Conclusion
Moving our preferences to the identity level, declaring things as final, changes our will spend and makes our choices easier. You still need to have conviction, but you are not second guessing yourself all the time.
Wow. You look different
Great job ! I liked the post even that I’m not coding…
Thanks for sharing
How does one address variables that are slightly more complex?
Maybe wheat is actually an object and it’s type might vary the result?
Inother words – how do you cover the edge cases for wholeWeat and wholeRice?
I work in simple variables but you can have complex ones as long as they are static.