Saturday, June 13, 2015

Easy to understand results

If you've used Clever Surveys before this post, you may notice a difference in prediction results. Previously, we presented predictions as probabilities. Problem is, these results were easy to misinterpret, and when there are many possible predictions, the results tend to squish together.
WoW: What is your favorite race results. Old scaling.
In an effort to make prediction results easier to interpret, we've stretched them out. Now, the top prediction always has a value of 100, and the bottom prediction gets divided by the number of possible predictions. We chose this method because it gives us the desired effect, without removing information about the bottom prediction.
WoW: What is your favorite race results. New scaling.
The probabilities themselves haven't changed. We're just presenting them differently. Now, it's easier to see little details in the results. When I look at my results for World of Warcraft races, I can see a hierarchy form. Worgen is way on top, followed by Gnome and Blood Elf. Then we have a tier containing Goblin, Troll, Night Elf, and Tauren. After that is a lower tier with Draenei, Human, Undead, Dwarf, and Pandaren. Lastly, and way below the previous tier, is Orc. This information was all there before, but I would have never noticed it without this change.

P.S. We also dropped the % sign. Most people probably don't care, but it feels weird to use the % sign if they're not actually percents.

Wednesday, June 3, 2015

Scalability, Thanks to Google App Engine

Google Cloud Platform Icons
Google Cloud Platform
Did you know that Clever Surveys is built on Google's App Engine infrastructure? In addition to a number of development boons, this means the website can easily scale to serve thousands, or hundreds of thousands of users simultaneously.

This was recently put to the test when a post about the World of Warcraft Predictor made it to the top of the WoW subreddit; a community with thousands of active users at any time. The result was hundreds of users suddenly pouring onto the site. I carefully monitored the error logs and performance stats, holding my breath in anticipation of performance issues or website hiccups. However, App Engine was able to seamlessly spin up a number of new virtual servers to handle the extra traffic.

Performance remained very steady, with the exception of a possible memory leak that caused some virtual servers to shut down. Even in that scenario, I was pleasantly surprised to discover that App Engine is nice enough to wait until the server is done handling requests, before shutting it down. This only resulted in a few users using having to wait a couple seconds for a new server to start up.

P.S. Google isn't paying me to write this, and I don't think App Engine is perfect. I'm just happy that my website can handle a lot of traffic without shutting down, and that I don't have to pay for it every day.