Saturday, August 6, 2011

Would you want online backup?

I currently utilizes Microsoft's Windows Azure cloud platform for the back end of the Serenity Carb Counter. I am very satisified with their cloud solution. I was thinking about adding online backup to the Serenity Carb Counter. When a user buys a new phone, they want access to their history and their favorites. I have a couple of questions for the users:
  1. Would you be OK with me storing a copy of your local database in the cloud? It would only be accessible by you. I would perform the uploads over a secured socket layer for additional security.
  2. Would you be willing to pay an additional $1 for this feature as an "in-app" purchase? Cloud hosting fees are not cheap, since it is very reliable. Storage also costs extra.
This feature would also allow me to build tools for users that change platform. If you had an Android phone and bought a Windows Phone, I could probably handle the conversion in the cloud.

Thanks everyone,

Ryan

Friday, August 5, 2011

Serenity Carb Counter v1.0.2.6 Releases! Thank you all for contributing to the database!

Last week I released version 1.0.2.6 of the Serenity Carb Counter to the Android Market. It includes the following new features:
  • Users can now submit manual entries to the global database for everyone's benefit
  • Favorites can now be filtered for faster navigation
  • I made the History activity a tabbed activity. It now contains a tab that plots your net carbs consumed versus your target.
  • I made the error messages more user friendly. If you didn't have a good signal, it would inform you the host could not be resolved. It now provides a better message indicating you have  no connection to the Internet.
  • Favorites are now editable.
  • Manual entries now allow you to specify the serving size.
The first release of 1.0.2.x was actually 1.0.2.3. It is possible that you may have had to upgrade twice over the weekend instead of once. I apologize for that; a friendly user from Qu├ębec found a bug in the new version that affected new installers of the application and informed me.

The Serenity Carb Counter is my first Android application; I am still new to developing on this platform. I test as much as I possibly can, and so far I have not received any crash reports. I was unaware that the database upgrade scripts were not run on new installs. I corrected the issue within three hours of being notified. Thank you Rejean for contacting me rather than hitting me with a one star review. I really appreciate that. I am a one man show, and I do the best I can to provide you a quality user experience.

I would also like to point out that most of the new features were requested by the users. There are almost 650 users of the application now, but I have received feedback from less than 1%. I love user feedback, even if it is negative.

There is one feature that I added that benefits both myself and all of you; the ability to submit foods to the global database. This is a Web 2.0 type of architecture where the community drives and improves the system.

So far I am happy with this new feature. First, I like to see that some of your are contributing to the database. Second, based on the submissions you are all doing the diet properly. Someone submitted a meal from El Pollo Loco to the database. I eat there three times a week, so I was happy to see some people like the same foods as me. I plan on submitting the rest of their items this weekend.

I would also like to point out that all submissions are anonymous. I do not associate the submission with your Google Account or anything else. In order to do that, the application would require an additional permission on install granting me access. I plan on keeping it completely anonymous.

Most of the negative reviews the Serenity Carb Counter receives points out that the Foods database is not as large as it should be. I am hoping all of you will help me improve it with the latest release. I tried to negotiate a nutrition information database from someone, but they won't part with it for anything less than a five-figure number that I cannot afford at this time.

Thank you all, and I hope you have continued success on the low-carb diet.

Please take the time to review Serenity Carb Counter on the Android Market.

Wednesday, July 20, 2011

New Feature / Enhancement / Bug Tracker Launched

As I get closer to the release of version 1.0.2.x of the Serenity Carb Counter for Android, I decided to launch an Issue Tracking System. This will allow the users to see how much progress I have made and what is left to be done. You can see the remaining issues here.

Please submit feature requests and bug reports using the Contact Us page.

I decided to use BugNET which is an open source issue tracking system. I chose it because it is implemented using ASP.NET which means it co-exists with the rest of the Celerity Software website. It took some tweaking of the web.config file to get it working on my shared host Server 2008 R2 / .NET 4. I also had to manually insert some string resources, but now that it is up I love it. I wish my shared host would allow outgoing HTTP requests so that I could allow users to log in using OpenID.

Sunday, July 10, 2011

Why I Created the Serenity Carb Counter

I created the Serenity Carb Counter for several reasons. First, years of a sedentary lifestyle, hectic schedule, and poor diet caused me to gain a lot of weight. Second, I am always looking for a reason to learn new technologies.

Unfortunately this wasn't the first time I had to lose a bunch of weight. I had dropped sixty pounds using the low-carb or Atkins diet my senior year of high school. It turned out that a few years of college, eating junk food, and living with roommates that kept a keg floating in the bath tub was a recipe for disaster. Engineering degrees are also extremely demanding, especially when you are also working twenty hours a week. I had a lot of "one credit hour" labs that I seemed to spend eight hours a week in. One example was the embedded systems class. It required a special project board with a microcontroller from Freescale on it. It was difficult to work on that from home.

I always had an excuse for why the diet would have to wait, but I finally promised myself I would lose the weight after I graduated from college. Six months after my graduation, I reminded myself of that promise after tipping the scale at 340lbs. I had recently moved to a new team at work which had me traveling about once a month to customer sites. Getting on airplanes was demoralizing. I usually did last minute upgrades to first class if possible (I covered the additional cost), so that I didn't have to be "that guy" you don't want in the middle seat.

I ended up getting an Android smart phone, the HTC Hero, a month before I started the diet. I get a lot of cross-training in many different technologies at work, but we haven't really done any mobile device development. So I got an Android book, read it, and decided to write an application that I could publish to the Android Market.

While dieting I noticed that it was difficult to keep track of my daily intake. I always try to stay in the Atkins "induction phase" where you keep the net carbohydrate count under twenty grams a day. There isn't much room for error, and they add up pretty quickly. After dieting for a few months, you learn what you can and cannot eat, but it is difficult at the beginning. I would also guess sometimes and be wrong. For example, I was at a Sizzler and decided to do the salad bar. I saw some chickpeas (garbanzo beans) and thought they were low-carb even though most legumes are not. I was confused because they are low glycemic complex carbs and not low carb.

I needed a way to quickly track my daily intake, and I needed to be able to look up the net carbohydrate content of a food on the fly. I didn't want to make anymore mistakes at Sizzler or other restaurants. I noticed there were a lot of free applications for calorie counting on the Android Market. Some of them were very cool and included features like UPC scanning. The problem was that I wasn't counting calories, and scanning UPCs takes too much time. I find that I won't consistently use an application, if I cannot accomplish a task quickly. UPC scanning loses the "whoa that's cool" factor after you use it three times, especially if you are only tracking one piece of nutritional information.

This is why I created the Serenity Carb Counter. It only tracks net carbohydrates, and it is quick / simple to use. Once you build up a list of favorites via search or manual entry, tracking your net carb intake is a breeze. I finished the search and daily journal features a long while back, and I used the application before releasing it to the public for a couple months to ensure I completed the goals I set out to accomplish.

I have been on the diet for over a year now, and I am down over 85lbs. It is probably more like a 100 hundred, since I introduced a weight lifting regiment six months ago and started tracking body fat percentage. I am enjoying my more active lifestyle, and I finally feel my age again.

I hope you all have the same or better success with the app. I still have about thirty pounds to drop. I am debating whether or not I should post "before" and "after" photos.

Serenity Carb Counter Released on Android

The Serenity Carb Counter was released on Android four weeks ago. It is available here. I am currently working on additional features and the Windows Phone 7 version. My friend is currently writing the iPhone version as well.

I am happy to see the installation count approach 250 installs after one month. The Android Market rating system has been having issues, and I have received emails from users saying their reviews are not posting. The sales also originally slowed early on due to an initial two-star negative review. I am happy with the first version, but I look forward to adding additional features to improve the ratings. Please answer the poll on this blog to let me know what I should focus on for the next version. Also feel free to send me  any feedback.

Here is what I am currently focused on:

Improve the Foods Database
The database is hosted in the Windows Azure Cloud, so it is reliable hosting. Microsoft guarantees 99.95% availability which amounts to approximately 5 minutes of maximum downtime a week. To host it in this cloud, it is more expensive, but I think it is worth it. I want the users to always be able to look up foods without an issue. The initial negative review pointed out that the database is lacking a lot foods, specifically the Atkins branded products.

I am already preparing to update the back end to support the additional foods; however, the Android application will also have to receive an update. Atkins products heavily rely on Sugar Alcohols. The current database I use is published by the US Department of Agriculture, and it does not track sugars alcohols, so I had to add a column to the database. I will also have to propagate this change to the web service and Android application.

Allow Users to Submit Foods to the Global Database
I have decided to utilize a Web 2.0 style architecture, and allow the users to grow the global database. The Manual Entry activity will include a "Submit to Global Database" check box. Selecting the check box will enable additional fields, allowing you to submit the entry to the global database. This will also improve the size of the Foods Database.

OCR (Optical Character Resolution) Food Input
I will explain why I don't want to do UPC scanning in another post, and why I like OCR better. Microsoft Research has a hosted OCR service already. I would like users to be able to take a picture of the Nutrition Facts label on their phone, and then the application would read the carbohydrate information from it automatically. I am currently investigating this solution; let me know if this feature sounds particularly awesome.

Your feedback keeps me motivated to continue adding features, so please let me know what you would like to see added.