Bozzcoins for Motivation and Discipline

LH Fong
ESTL Lab Notes
Published in
6 min readMar 3, 2018

--

We have a prata shop near our office where we sometimes go for lunch. The prata is crispy, delicious and also very unhealthy.

Crispy, delicious, unhealthy prata

We like it, but we don’t want to go too often. One day, someone suggested that we should only go for prata when the whole team has collectively done 1000 pull-ups. We finished that challenge and went for prata, but some people felt left out of this because they were unable to do pull-ups.

For the next iteration, we decided to include more types of exercise, such as running, push-ups and sit-ups. There has to be some common medium to track how much these exercises are worth, kind of like how real money is used as a medium of exchange and as a store of value, allowing disparate things to be compared by a dollar value. Since cryptocurrencies and initial coin offerings are all the rage these days, we named our new currency Bozzcoin, and created a little logo for it too.

Bozzcoin Logo

Motivation and Discipline

The Bozzcoin system serves two purposes. It motivates exercise, and maintains discipline. Earning Bozzcoins through exercise encourages us to exercise. It doesn’t take much to earn Bozzcoins, a few push-ups or sit-ups will do. As we started tracking exercise activity, more colleagues have joined in and started doing ad-hoc exercise at home. Many of us already have regular exercise routines, but having it tracked does provide some motivation to continue and maintain consistency.

The other half of the system is discipline. Assigning a price in Bozzcoin to visiting the prata restaurant prevents us from going too often. Over time, we’ve also added Starbucks and McDonalds outings as events which require Bozzcoins. Without enough exercise, we don’t go. When we go to any of these restaurants, we deduct an amount from the accumulated Bozzcoin balance.

We can also see how much each person has contributed to the Bozzcoin balance. This leaderboard gives us an idea of who is exercising more. The names have been removed in the screenshot below.

Individual contributions

Bozziplier

Our colleague whom we nickname Bozz is the main target for all this motivation. He has often espoused a desire to exercise more and change to a more healthy lifestyle. To further encourage him, we added a bozziplier system to the Bozzcoin economy.

How does it work? The bozziplier is a multiplier which reduces the amount of Bozzcoin earned if Bozz has not exercised for a period of time. After 48 hours, all Bozzcoins earned by the rest of us are multiplied by 0.8. For each further 48 hour period with no exercise from Bozz, the bozziplier is multiplied by 0.8, leading to exponential decay.

Naturally, the rest of us are most unhappy when our contributions are not given full credit.

Reduced Bozzcoins due to the bozziplier :(

After the first few reductions in the bozziplier and the resultant nagging on Slack, Bozz has indeed started exercising more regularly. Even some weights in the gym or some static exercise by Bozz resets the bozziplier and keeps everyone earning Bozzcoins happily at the full rate.

Bozzcoin’s Technology

Like all electronic coins these days, Bozzcoin uses blockchain! Miners must upload unique pictures of Bozz eating prata to the mining pool. This is known as “proof of cheat” and will earn extra Bozzcoins. Now let’s get some investors, make an initial coin offering and get rich!!

Well… no, not even close. The Bozzcoin tracker is implemented on top of our team’s custom Hubot. We message the bot on Slack, just like how we usually communicate for work. Regular expressions extract the number of repetitions and figure out the exercise type, then a conversion function is called to figure out how many bozzcoins should be awarded.

A function with a switch statement holds the mapping of exercise type to the number of bozzcoins. It’s easy to extend the script to add new exercise types, or to change the rate of reward of existing exercise types.

Since we started the Bozzcoin system, gym repetitions, sport steps, which covers activities like badminton, squash, frisbee and floorball, and cycling are the new exercise types which have been added to the system. Having the conversion function separated out makes it easy to add new exercise types. It is also simple to adjust the earning rates for each exercise.

The data is stored in Hubot’s brain, which is backed by Redis. The current Bozzcoin count, a hash map of who has earned how many Bozzcoins, and the time when Bozz last exercised all have to be stored. Our Hubot and its Redis store are deployed with Docker Compose. A volume is mapped to the Redis container, allowing the data to persist across restarts, which also allows the data to persist across updates and code changes.

The code can be found on GitHub.

We also added the Bozzcoin logo above as an emoji in Slack, allowing us to use it in our conversations with the keyword :bozzcoin:.

Balancing the System

The original idea used 1000 pull-ups. Having fewer contributors meant that it took slightly more than a month to reach our first target. With more contributors and more ways to earn Bozzcoins, we hit the next prata day too soon.

After that, we raised the price of a prata day and added McDonalds and Starbucks to the list. It’s still a careful balance between the prices of the cheat days and how much to reward for each exercise type. The earn rates for the various exercise types should be commensurate with the effort required.

Bozz sneakily tried to double the earn rate of the push-ups, sit-ups and gym repetitions when he added gym repetitions to the exercise types. That would have caused Bozzcoin inflation and made gym reps too profitable for the amount of effort they require, so we decided to reduce the pull-up earn rate instead.

Positive Behavioural Changes

One of the debates we had early on was whether to allow exercise in the course of commuting to work to count, or whether the exercise must be a purposeful activity. In the end, we decided to allow it.

Our colleague Naobot (not the real name) nao cycles to far-flung MRT stations instead of taking the bus, earning Bozzcoins in the process. Personally, I’ve also discovered that using shared bikes and cycling to the MRT station takes half the time compared to waiting for the bus. Healthier and faster too, what a win!

After implementing this, we found that Sweatcoin does something similar. It’s nice to know that the idea is good enough for a company to make it their core business.

So if you’ll like to help your team be more healthy and limit “cheat days”, try a Bozzcoin reward system. Feel free to look at our code and tweak it to your needs. Happy exercising!

--

--