CheckPoint 2: Cardio Empty Stomach Vs Post-Workout for Maximum Fat Burn

CheckPoint 2: Cardio Empty Stomach Vs Post-Workout for Maximum Fat Burn

This post is a follow up on the last two posts about the affects of doing cardio done empty stomach vs post workout for maximum weight loss. If you are interested in why we are doing and what we are doing, read here. If you want to read my last week progress on weight loss of nearly 1 lb or 0.4%, click here. Now with obligatory introduction out of the way, lets dive in.

Week 2 progress

The good news is that morning cardio is working. I am down 3.6 lbs in 2 weeks. So in week 2 (6/5-6/11), I lost about nearly 2.6 lbs or 1.5%. This is 3 times the weight loss as compared to week 1.  week 2wl Also lets compare the energy level for week 2.


As you can see that energy level is pretty consistent (~7) throughout the week. I know that the energy level of 7 is pretty low for morning workout. But in my case, it is primarily due to my evening workouts and not because of late night coding on GYMINUTES. Well may be sometimes.

As I’ve mentioned, I have been doing Madcow (review coming soon) routine for strength training. For people who are not familiar  with Madcow routine, the only thing important to know is that Madcow is usually 8 week long workout plan. You ramp-up to your 1RM till week 4 and then starting Week 5, every workout you basically try to set new Personal Records. The goal of the routine is not to reach week 8 and fail before that but with new higher PR.

I am in week 5 of Madcow Round II, so naturally I am lifting heavy. That not only drains me physically but also mentally. This is because

So I really have to visualize setting new PR before I can actually lift them. This exhaust my body and mind. And as my most evening workouts end at around 9:00 PM and morning cardio starts at 7:45 am, it doesn’t leave much time for my body to recover.

That being said, what was different in week 2 that resulted in 3 times the weight loss as compared to week 1. The only thing I can say that was different was mindset of getting cardio done. Week 1 was specially hard because I had to force myself to do cardio. I was not doing them religiously before week 1 and after I wrote the post to self test the theory on myself, I had to get committed. So w.r.t. to focus, I found week 2 was much more smooth sailing and maybe thats why I was able to do 5 cardio sessions. Also I would say that in terms of snacking,Week 2 was much more controlled. And as I step into week 3, I am getting more cautious with every food item I eat.

Now do I believe that 2 weeks of data is enough for deriving a conclusion on our theory and move onto phase II i.e. doing cardio post workout? I don’t think 2 weeks is enough. This is because of 2 main reasons

  1. Not enough data to map energy level to cardio in morning.
  2. As I head deeper into madcow routine, post workout exhaustion is extreme. I am not sure if I will be able to do any cardio after my workout.

So instead of trying to go to phase II and screwing the experiment by not doing the cardio, I am going to do another week of morning cardio. Once I have week 3 data in, I will then decide if I am ready to move to phase II of the experiment.

On side note, I think I will include cardio tracking in GYMINUTES in future release. I thought that fitbit would be able to track it better but the data is so distributed that I have to jump between apps to get the whole picture. If you would cardio tracking to be part of GYMINUTES, do let me know.

Till then. Happy lifting.




CheckPoint 1: Cardio Empty Stomach Vs Post-Workout for Maximum Fat Burn

CheckPoint 1: Cardio Empty Stomach Vs Post-Workout for Maximum Fat Burn

This is an update on the last week post I did on doing cardio empty stomach vs post workout in order to identify which is the best time to maximize the fat burning process. If you want to read the details from research paper and why we decided to do this test on ourselves, please click here.

Lets dive straight into the current progress. Doing cardio in morning is much harder than I thought. Not only because I am not a morning person, but also because I have a 3 month old son. He gets up at 6:00 AM and has more energy that I have entire day. As me and my wife have divided the work among us, morning is my time to feed him, change his diaper and rock him to sleep. After this, squeezing 45 minutes of cardio before getting ready and heading off to work is bit more tricky that I thought it would. But nevertheless, I still managed to do cardio 5 days in this week.

The starting weight on 30th May 2016 was 183.4 lbs and week ended with 182.8 lbs i.e. 0.4% in week 1. The chart below denotes last week weight progress.


The energy level throughout the week was pretty consistent too.


Looking at 2 charts, one thing that can be deduced is that on days when I did cardio, I definitely saw a weight drop. However, from our last post, we are more interested in finding out if cardio done at lowest energy level burns more calories. BTW, I am only reporting my cardio progress here, but I am still performing my strength training routines 3 times per week in the evening. This week, the strength training was done on 5/30, 6/1 and 6/2. Thats why I had to take a break on 6/3 to recover.

The current data set is too small to make any co-relation w.r.t to energy level. So I will continue to record my progress for next week and see if we can conclude something.

On side note, during the days of low energy such as 6/4/16, I realized that I had to push myself to finish the workout. I did grab the support bar on treadmill more than other days and was constantly looking at the clock. This may be an indication that in low energy state, your body burns more calories because it has break the fat reserve to produce more energy to be able sustain a workout. Not only its hard physically to finish a workout, its also hard psychologically.

But the data set is too small to reach any conclusions. We have to wait for more data. So I will report back next week with new findings. Till then, happy lifting.


GYMINUTES – The best workout tracking app.


Cardio Empty Stomach Vs Post-Workout for Maximum Fat loss

Cardio Empty Stomach Vs Post-Workout for Maximum Fat loss

Everyone loves to lift but hate doing cardio. After all its “Cardio is the nemesis of muscle building” or is it? Cardio should be a big part of everyone’s workout. If its not part of yours, then we recommend you add it. Unless you are on the plan called “FOREVER BULK”, you will find this post interesting.

At GYMINUTES, not only we strive to achieve best possible workout to gain muscle, we try to evaluate each and every aspect of working out. One of the questions we are trying to answer in our lab is, “Is working out in morning is better than working out in the evening?”

Even though it may seem like a simple question, it is pretty complex to answer. Why?

When we say working out in the morning, do we mean working out empty stomach or post breakfast. Similarly, if you workout in the evening, how long after you had your pre-workout meal. 1 hour, 2 hour or 3 hours before you start your workout? We are still trying to analyze and verify our findings w.r.t lifting weights. But what about cardio? Cardio is a crucial part of bodybuilding, powerlifting and strength training.

At GYMINUTES, we are trying to answer similar question as above about doing cardio. Is cardio empty  stomach better than doing it post-workout?

If you are interested in reading research paper of this and a detailed article, please click here. If you are just interested in summary, read below.

Summary of article:

The article above basically consist of data from different studies performed by scientist on affect of cardio on empty stomach, post breakfast, 50 mins in morning and 50 minutes in evening. The cardio exercise used was stationary cycling. The parameters used to measure the affect were VO2(oxygen consumption) and RER (substrate utilization, estimated by the respiratory exchange ratio).

The assumption as mentioned in the article is

“The basic premise for this practice is that low levels of glycogen (and/or glycogen depletion during the exercise bout itself) and insulin, shift energy utilization away from carbohydrate for fuel, thereby allowing greater mobilization of stored fat that can be used for fuel (fat oxidation). “

After various tests it was found that in short term, you may burn 50 more calories (330 kcal in morning vs 280 kcal in evening) over 24 hour period by doing cardio empty stomach vs doing it in the evening. But this is primarily contributed to transient energy deficit in the morning.


If above conclusion is true, then doing cardio in morning does not have much advantage than when done in evening. If at the end of the day, you are burning 50 more calories, then you can adjust your diet to consume 50 less calories or  workout for 5 more minutes in the evening post workout. However, here are possible reasons why you would want to do cardio in morning or evening


  1. You are a morning person.
  2. You like to lift in evening and don’t want to spend 2 hours in the gym.


  1. You like to go to gym 1 time and you are done.
  2. You are not a morning person.

So to finally  answer the question if cardio is better done in morning vs in the evening, our take is


But if you are like us, who wants to optimize the cardio session then this study can provide basic steps on identifying best cardio time for an individual to maximize the calories burned. So thats what are going to do next.

Further investigation and Our testing.

We are now curious on repeating this test on ourselves and see if we can identify our our best cardio time. Specifically the whole “transient energy” thing. Over period of next 1 month, we will be doing following tests

Perform Cardio 4 times per each week at speed of 2.5 mph for 45 minutes on 10 incline level of treadmill.

Week 1 – 2: 45 Minutes Cardio pre-breakfast (empty stomach)

Week 3 – 4: 45 Minutes Cardio immediately after workout.

(Note: We are using treadmill because 1) we only have treadmill 2) 45 min treadmill on incline 10 with 2.5 mph burns same calories as 45 stationary bike)

What we plan to measure?

As we don’t have fancy equipments yet to measure VO2 and RER, we will be using run-of-the-mill workout tracking bands. In addition to that, we will measure

  1. Energy level (0 – no energy, 10 – 3 scoops of pre-workout) before every cardio session
  2. Calories burned – during cardio session
  3. Weight change – daily
  4. Body fat percentage change – daily

As we are measuring weight and BF, we will limit calories to 2300 kCal per day.

What we are really looking for on Cardio Empty stomach vs post-workout?

As per the study above, the major difference in calories burned was caused due to transient energy level.

So what it implies that the lower transient energy you have, the more calories you will burn, thus more weight and body-fat you lose. As energy level is different for each person, we will try to identify what is our lowest energy level time and then do cardio that time everyday. As we don’t have an account on the amount of energy we have in morning and post-workout, this experiment will help us find that out. After 4 weeks, which ever test period of 2 weeks had higher weight loss and body-fat loss by percentage, will be indicative of our ideal cardio time.

We will publish our results weekly starting on June 6th 2016.

If you want to join us on our journey, start your own test and leave a comment below. If you have any questions, send us an email at “”

Also if you are looking to track your workouts and analyze your progress, download “GYMINUTES” for FREE from IOS app store. We promise, it will be the best workout tracking app you will ever use.






Migrating Parse MongoDB to MongoRocks on AWS

GYMINUTES, uses parse to backup our users data. Gyminutes community has lifted more than 8.5 Million pounds till date. Thats a lot of weight and a lot of data for us to store.

We used parse as our backend because it reduced our time to market. But now Parse is going down. So we decided to migrate to AWS.

Here is a step-by-step guide to help anyone who is looking to migrate their app away from PARSE to AWS. Why only AWS, if you may ask? Because its STABLE and unlike Parse to Facebook, AWS is actually bringing in $$. So thats why. I am sure other services are great but I don’t plan to use them PERIOD. Now lets get to it.

Migrating from Parse is a simple 2 step process. They are highlighted here. (

Step 1: Migrate Mongo DB

Step 2: Migrate Parse Server. 

This post will specifically cover step-by-step guide to migrate MongoDB (Step 1). More specifically MongoDB to MongoRock.

Why mongoRock ?

Read here. The description is excellent (


  1. Its cheap for small apps as data is compressed to roughly 10x. This means, you save $$.
  2. If it is good for parse to use it, it is good for you too.


I am going to assume that you are new to AWS, Mongo and MongoRock. So I have divided this into multiple steps. Even if you are familiar with AWS and Mongo, I recommend you follow the guide below. It will reduce your debugging time.

  1. Bringing up AWS instance.
  2. Installing MongoRock on AWS
  3. Migrating data from Parse to MongoRock.
  4. Testing the data

Step 1.1 Bringing up AWS instance.

If you know how to set-up instance on AWS, jump to step 1.1.11, as its required for mongoRock.

Step 1.1.1 Login/Signup into AWS. (

Step 1.1.2 Click “Network & Security” > “Key Pair”

Screen Shot 2016-04-28 at 11.19.26 AM

Step 1.1.3 Click “Create Key Pair” on top Left tab.

Screen Shot 2016-04-28 at 11.23.09 AM.png

Step 1.1.4 Give a name and click “Create”.

Screen Shot 2016-04-28 at 11.24.07 AM

Step 1.1.5 It will prompt to download the key, save it somewhere safe. This is your private key that you will use to log into the server.

Step 1.1.6 Click “INSTANCES” > “Instance” from left menu. 

Screen Shot 2016-04-28 at 11.26.35 AM

Step 1.1.7 Click “Launch Instance”

Screen Shot 2016-04-28 at 11.26.46 AM

Step 1.1.8 This will bring up list of OS that you can install it on. We will be using Ubuntu. Click “Select” on ubuntu tab.

Screen Shot 2016-04-28 at 11.27.58 AM

Step 1.1.9: Select the instance type. Now I am assuming your app is small. If it is big, you should size them accordingly. For setup  purpose, choose “t2.micro” and click “Next: Configure Instance Details”

Screen Shot 2016-04-28 at 11.29.38 AM.png

Step 1.1.10: You will see the screen below. Leave everything as is and select “Protect against accidental termination” and “Enable CloudWatch detailed Monitoring” and click “Next: Add Storage”



Step 1.1.11: This is important. For MongoRock, you need to mount 2 more volumes. Click “Add New Volume” and add 2 volumes. It should look like screen below. Once done, click “Next: tag Instance”

Screen Shot 2016-04-28 at 11.33.04 AM.png

Step 1.1.12: Don’t change anything unless you know what you are doing. Click  “Next: Configure Security Group”

Step 1.1.13: You would need to create a security group. Trust me this is for your own good. Just add 1 more rule to the table so we can allow external applications like parse server to talk to our mongoRock DB. It should look like this.

Screen Shot 2016-04-28 at 11.35.54 AM.png

Step 1.1.14: Click “Review and Launch”. Verify everything and then click “LAUNCH”. As soon as you do that, a pop up will appear asking for the key. Select the key we created in step 1.1.3. Click “I ack….” and select “Launch Instance”. Click “View Instance” and wait for it to launch. 

Screen Shot 2016-04-28 at 11.41.11 AM.png

After initialization, you should have the instance “Public IP” and DNS”.


Step 2.1 Installing MongoRock on AWS instance.

Step 2.1.1: Login using your private key that you downloaded in step 1.1.3 and the public ip of your new instance. As we created the ubuntu instance, the username is “ubuntu”. Open a terminal and execute the command,

#> “sudo chmod 600 mongo-key”

#> “ssh -i mongo-key ubuntu@<xx.xx.xx.xx>”

This should log you in the server. Changing permission for key is required otherwise you get error message “key too open. Permission denied”

Step 2.1.2: After you log in, execute following command in this order.

#> sudo apt-get update

#> sudo apt-get install mdadm

#> sudo mdadm –create /dev/md0 –level=stripe –raid-devices=2 /dev/xvdb /dev/xvdc
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

#> sudo mkfs -t ext4 /dev/md0
mke2fs 1.42.9 (4-Feb-2014)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
1048576 inodes, 4194048 blocks
209702 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
128 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done


#> sudo mkdir -p /var/lib/mongodb

#> sudo mkdir -p /var/lib/mongodb

#> sudo mount /dev/md0 /var/lib/mongodb

#> sudo apt-key adv –keyserver –recv-keys 1C4CBDCDCD2EFD2A
Executing: gpg –ignore-time-conflict –no-options –no-default-keyring –homedir /tmp/tmp.Iiwijlcf0j –no-auto-check-trustdb –trust-model always –keyring /etc/apt/trusted.gpg –primary-keyring /etc/apt/trusted.gpg –keyserver –recv-keys 1C4CBDCDCD2EFD2A
gpg: requesting key CD2EFD2A from hkp server
gpg: key CD2EFD2A: public key “Percona MySQL Development Team <>” imported
gpg: Total number processed: 1
gpg: imported: 1

#> echo “deb “$(lsb_release -sc)” main” | sudo tee /etc/apt/sources.list.d/percona.list
deb trusty main

#> sudo apt-get update

#> sudo apt-get install percona-server-mongodb


* Starting database mongod [ OK ]
Setting up percona-server-mongodb-tools (3.0.10-1.5.trusty) …
Processing triggers for ureadahead (0.100.0-16) …
Setting up percona-server-mongodb (3.0.10-1.5.trusty) …

#> service mongod status
* Checking status of database mongod [ OK ]

If you reached here, Congratulations. Your mongo is installed.


Step 2.1.3: Now we need to enable MongoRock. MongoRock is a compression engine that is already compiled with the mongo instance we just installed. So now we need to enable that. Perform Following steps

#> sudo service mongod stop

#> sudo vim /etc/mongod.conf

//uncomment the like “engine: rocksdb”. The config file should look like this. Save and quit

Screen Shot 2016-04-28 at 12.14.07 PM.png

#> sudo service mongod start
* Starting database mongod [fail]
This will most likely fail. Why? Because we already had a mongo instance created before. So a mongo database do exist. And since we are new to installation and bringing up rockdb, we need to clear the directory containing the OLD database. I am assuming you don’t have any data in that database.

#> cd /var/lib/mongodb/

#> ls

#> sudo rm -rf *.*

#> sudo service mongod start
* Starting database mongod [ OK ]

WOO HOO... you are in BUSINESS.

Step 2.1.4: Check if mongo is up and running.

#> mongo
MongoDB shell version: 3.0.10-1.5
connecting to: test
Welcome to the MongoDB shell.
For interactive help, type “help”.
For more comprehensive documentation, see
Questions? Try the support group
Server has startup warnings:
2016-04-28T19:18:15.702+0000 I CONTROL [initandlisten]
2016-04-28T19:18:15.702+0000 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is ‘always’.
2016-04-28T19:18:15.702+0000 I CONTROL [initandlisten] ** We suggest setting it to ‘never’
2016-04-28T19:18:15.702+0000 I CONTROL [initandlisten]
2016-04-28T19:18:15.702+0000 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is ‘always’.
2016-04-28T19:18:15.702+0000 I CONTROL [initandlisten] ** We suggest setting it to ‘never’
2016-04-28T19:18:15.702+0000 I CONTROL [initandlisten]
> db.serverStatus()[“rocksdb”]
“stats” : [
“** Compaction Stats [default] **”,
“Level Files Size(MB) Score Read(GB) Rn(GB) Rnp1(GB) Write(GB) Wnew(GB) Moved(GB) W-Amp Rd(MB/s) Wr(MB/s) Comp(sec) Comp(cnt) Avg(sec) Stall(cnt) KeyIn KeyDrop”,
” Sum 0/0 0.00 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0.000 0 0 0″,
” Int 0/0 0.00 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0.000 0 0 0″,

This means we have mongo up and running. If you want to setup a web access, do following steps:

#> sudo vim /etc/mongod.conf

Remove “bindip:” and add

enabled: true
RESTInterfaceEnabled: true

The file should look like this now…

Screen Shot 2016-04-28 at 12.22.37 PM.png

#> sudo service mongod start

You should now be able to go to your browser and type

http://<xx.xx.xx.xx&gt;:27017/ and see the message

Screen Shot 2016-04-28 at 12.25.22 PM.png

This means your mongo is up. If you want to see actual some stats, go to your “Security group” and add new rule “All traffic”. It will look like this.

Screen Shot 2016-04-28 at 12.27.15 PM.png

Beware that you don’t want to have this open rule. As this is just for testing, make sure you don’t have this rule when it goes to production.


If you look at parse recommendation, the suggest you add following information to config file.

#> sudo service mongod stop

#> sudo vim /etc/mongod.conf

Screen Shot 2016-04-28 at 3.39.41 PM.png

  internalQueryExecYieldPeriodMS: 1000
  internalQueryExecYieldIterations: 100000

Make sure you keep the indentation as it looks like above. Mongo is PICKY.

#> sudo service mongod start

Step 2.1.5: Restart the box.

#> sudo reboot

Why? Because sooner or late your box will go down. It may go down because of IT fault or because you want to resize the instance. In any case, its better if we test this now? You are now assuming that if you restart the box, mongo will comeback up and start running.

WRONG. This is what happens when it comes back up again.

#> mongo

MongoDB shell version: 3.0.10-1.5
connecting to: test
2016-04-28T22:45:42.763+0000 W NETWORK Failed to connect to, reason: errno:111 Connection refused
2016-04-28T22:45:42.764+0000 E QUERY Error: couldn’t connect to server (, connection attempt failed
at connect (src/mongo/shell/mongo.js:179:14)
at (connect):1:6 at src/mongo/shell/mongo.js:179
exception: connect failed

now even if you try

#> sudo service mongod start
* Starting database mongod [fail]

it will fail. Lets look at logs.

#> tail -f /var/log/mongodb/mongod.log
2016-04-28T22:48:34.626+0000 I CONTROL ***** SERVER RESTARTED *****
2016-04-28T22:48:34.628+0000 I ACCESS Initialized External Auth Session
2016-04-28T22:48:34.630+0000 I CONTROL [initandlisten] MongoDB starting : pid=1342 port=27017 dbpath=/var/lib/mongodb 64-bit host=ip-172-31-48-243
2016-04-28T22:48:34.630+0000 I CONTROL [initandlisten] db version v3.0.10-1.5
2016-04-28T22:48:34.630+0000 I CONTROL [initandlisten] git version: 376fb629b3911b74ee040029dd2bdc57fb2927af
2016-04-28T22:48:34.630+0000 I CONTROL [initandlisten] build info: Linux vps-trusty-x64-01 2.6.32-042stab112.15 #1 SMP Tue Oct 20 17:22:56 MSK 2015 x86_64 BOOST_LIB_VERSION=1_49
2016-04-28T22:48:34.630+0000 I CONTROL [initandlisten] allocator: tcmalloc
2016-04-28T22:48:34.630+0000 I CONTROL [initandlisten] options: { config: “/etc/mongod.conf”, net: { http: { RESTInterfaceEnabled: true, enabled: true }, port: 27017 }, processManagement: { fork: true, pidFilePath: “/var/run/” }, setParameter: { internalQueryExecYieldIterations: “100000”, internalQueryExecYieldPeriodMS: “1000” }, storage: { dbPath: “/var/lib/mongodb”, engine: “rocksdb”, journal: { enabled: true } }, systemLog: { destination: “file”, logAppend: true, path: “/var/log/mongodb/mongod.log” } }
2016-04-28T22:48:34.651+0000 I STORAGE [initandlisten] exception in initAndListen: 98 Unable to create/open lock file: /var/lib/mongodb/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
2016-04-28T22:48:34.651+0000 I CONTROL [initandlisten] dbexit: rc: 100

There is a permission issue. Since we create stuff using sudo user, we still need to give permission to mongod user.

#>sudo chown -R mongod /var/lib/mongodb/

#> sudo service mongod start
* Starting database mongod [ OK ]

Thats it. You are all set.

Now reboot again and see if mongod comes up.

Step 3: Migrating data from Parse to MongoRock

Parse has made this step dead simple. So I am not going to repeat that here because that is redundant.

Step 4: Testing your data.

Never finalize anything without migrating.

The next part of Tutorial will cover bringing up parse-server and connecting that to MongoRock.

If you have any comments or suggestions please share below.

GYMINUTES Review: “Missing basic features” Developer Reply

GYMINUTES, received a 2-star review from a user P J Z. You can read the review in the screen shot below.

App Version: 1.2

Screen Shot 2016-04-17 at 8.41.34 PM

Developer Response:

Thanks user P J Z. First, we would like to thank you for trying out GYMINUTES. There are couple of concerns listed in review comment, so we will address them one by one.

  1. Not able to delete exercise from Workout: In GYMINUTES app, you can delete an exercise already added to workout by just sliding it to LEFT. A ‘DELETE‘ button will appear and on clicking that, a confirmation popup will be presented. On clicking “YES“, the exercise will be deleted form the workout. Here is a screen shot from the version 1.2

2. Super-set support not present: Yes, you are correct. In version 1.2 super-set support is not present. In our app description, we did not claim we had that feature. If somehow we conveyed that info, we are sorry.

But as it is important feature to you and many others, the support for super-set, tri-set, giant-set and circuits is coming in version 1.3. You can find more about that on our tutorial section.

3. Not able to create rep schema across multiple sets: Yes, you are correct. In version 1.2, we do not have that support. But as this is one of the requested features, we will try to incorporate that in future release.

4. Gyminutes vs Jefit: We have created a detailed feature-by-feature comparison sheet of GYMINUTES, JEFIT and other top workout tracking apps. It is available on our website at GYMINUTESAPP.COM 

5. Jefit is FREE: We are guessing that you are one of our early users (before v1.2).  Thanks you, thank you, thank you from bottom of our hearts for downloading the app.

When you mentioned that jefit is free, it implies that you downloaded GYMINUTES when it was a paid app. Till version 1.1, GYMINUTES was paid app. Starting v 1.2, the app is FREE to download and premium features can be bought as in-app purchase. For other readers, we would like to highlight that you only pay $4.99 one time on GYMINUTES for PREMIUM PACK whereas Jefit premium is a monthly membership of $4.99.


CLOSING COMMENTS: We truly appreciate and are grateful to P J Z for your comment. We would rather have our users try the app, and leave a review comment whether satisfied or not. This gives us opportunity to address open issues and provide high level of customer service. If you have any questions, please email us at “” or leave a comment below. 

Thanks again  P J Z 🙂

–gyminutes team 



Replying to User Review on IOS App Store

One of the biggest pain as an indie developer with an IOS app, is not being able to reply to user reviews. If you have a play store app, you don’t face this problem but in IOS world, you are screwed.

My app “GYMINUTES”, is available on IOS App store for FREE. I love to lift weights and track my workout. Not being able to find an app that met my requirements, I created one and uploaded to the App store. Now time-to-time I get a review comment. Some are great while few are bad. However, all bad reviews are usually from users who felt that something was missing from the app. This misunderstanding could have been solved if I had a chance to reply to them and explain the information gap. But there is no way to reply to user review thus I have to suffer from bad-review-comment-syndrome.


Not being able to reply to user comment has several issues that only a developer knows..

  1. Poor customer satisfaction: How do provide great customer (user) satisfaction if you can’t reply to customer questions/concerns?
  2. Bad ratings and reviews: Some users don’t read coaching marks, skip walkthroughs and leave a bad rating saying that app is lacking feature when they actually did not explore. How do you reach them.
  3. Less appealing and slower growth:  Lower review rating not only hurts developer feelings but also make app less appealing to new users. This has an indirect affect on app growth and thus revenue.
  4. Angry and annoyed developer: Yep, every developer gets pissed on bad rating/review. No GOOD developer is thick skinned. It hurts. It really does.

I have GOOGLED a solution to this problem. I even went to 2nd page. I believe anytime you visit 2nd page on google, you either are searching using wrong keywords or your problem does not have a concrete solution. Google search gives you following top 3 links as of 4/16/16.


StackOverFlow.. from 2013..

Medium.. article from 2014..

TheNextWeb.. This article is from 2012… That a decade in tech world.. #AppleWakeUp

And thats not even the worst part.. As per stackoverflow, the proposal for the same has been DENIED by apple. WTF….

The medium solution only works if a user has been using same AppleID as twitter or other social handle. So basically < 1% chances of that happening.



How do I plan to deal with this issue?

I will be creating a unique blog post for each review comment and address anything that needs clarification. I will link this blog in my app description, so few users who actually read app description before downloading app can see them.

My intention here is not to put any user on spot. The reason I believe this public forum will help me provide best customer service and will not harm anyone because

  1. All reviews are public anyway and you can see the username of the user leaving the review.
  2. A public reply will help address the same concern that other users may have.

My intention and goal is to provide BEST CUSTOMER SATISFACTION to all my users on APP STORE.

I will continue to put Apple in focus by tagging them to every review that I receive with hashtag #AppleWakeUp


I would recommend every APP developer to create their own blog, to reply to user review comments instead of waiting for Apple to wake up 🙂

If you have others ideas on how to reach users and provide better customer satisfaction, leave your idea in comments below. Happy coding.

-Happy Lifting