Tuesday, January 15, 2013

BlueStacks Review

Just a while ago I heard about an interesting software called BlueStacks which lets you run Android apps on your Windows (or Mac). Before this, I've tried a couple of Android emulators. One from Samsung and the other from the official Android Software Development kit. These emulators are intended to help developers testing their own app. So they don't provide access to Google Play, thus you can not download your favourite apps into the emulators. You can only install an app if you have the installation package (the apk file). I'm sure there are ways to circumvent that, but it's not going to be easy. Furthermore, the performance is sluggish. You'll notice some lag in the GUI responses to your touch (or mouse clicks to be precise). You just can't expect smooth experience using these emulators.

BlueStack, on the other hand, provides access to Google Play (also Amazon's app store, and a couple other app stores which I've never heard of). So it really opens up the possibilities.

BlueStack GUI

Although it doesn't claim to be a full fledge Android emulator, it does spent some effort to make it's GUI feels like an Android. It has the familiar home, back, and menu buttons

Downloading app is not very smooth. Probably due to my intermittent Internet connection, it often got interrupted, and when it does it won't resume. I had to start all over. Nevertheless, I managed to download some game apps in it.

Playing Games

Fruit Ninja is playable using a mouse. The GUI is quite responsive, although not as smooth as when playing in the real device. Note that I'm using a Core 2 Duo CPU -- a rather old processor, but still gets the job done.

However, when I try it on my other PC that has Intel Atom processor, it is unbearably sluggish.

If you try playing Angry Birds, then you start seeing the problem of running Apps on your PC. Without the ability to pinch zoom, you cannot really aim. I guess this problem would disappear if I had a notebook that supports multi-touch.

But the problem becomes really apparent when you try playing Raging Thunder.
Help, how do I turn?
What Do I need BlueStacks for?
So, realistically speaking, there aren't so many use cases for running android apps on your PC/notebook. As someone mentioned to me, you can use it to run WhatsApp using an account which you have registered in your phone before. Running WhatsApp in PC has a benefit since you can use the keyboard so you can chat faster. However, this benefit is not applicable for other instant messaging apps (Line, Facebook Messenger, Yahoo, etc), because they all have PC/Web client. So you can just install them without the need for BlueStacks.

Other than that, I can't think of any use cases for BlueStacks.

What I hate about BlueStacks
Granted I don't see much use of this software, but what really annoys me is that this software is not well-behaved. I see evidences that this software is trying to take root deep in your system.
  • On start up the software always attached itself to the windows task bar. Most software will give options to disable auto start feature, but not this one. 
  • It doesn't give a link for uninstalling. You have to go to Control Panel to do that. 
  • Even after you uninstall it from the Control Panel, it won't uninstall cleanly. Its files are still in Program Files folder. Also, It still has two services that starts automatically when your computer boots up. I had to disable it manually.

I thought I had totally get rid of BlueStacks from my system. I was wrong. It still has a program named HD-Agent.exe which starts automatically at boot time. I had to remove this manually from Windows registry. 

Don't waste you time. Stay away from this. In the meantime, Android apps should stay in real Android devices.

Tuesday, January 1, 2013

Making My First Android App – part 2

The Server
I started with the Server side first, because this is the area I’m most comfortable with. I decided to use Google App Engine as the server platform. This is a cloud service which takes care of all the gory technical details of setting up a server environment such as installation, operation, high availability, scalability, etc. All we need to do is develop the logic. For that, GAE support 3 different languages: Python, Java, & Go. I definitely chose Java, as it is my native language (I was born, raised and live in the island of Java).

The best part of GAE is that it is free for low traffic. This means that you can develop the server app without paying a dime to Google. In fact, you can deploy it for production use and still not paying anything as long as the traffic is still below certain limit. Just pay as you grow.

The Client
Lucky for me, Android app development is also based on Java. Thus learning the Software Development Kit (SDK) is not the most difficult part for me.  The difficult part is designing the GUI. I’m not at all experienced in designed a software with GUI. Whereas in server development you usually deal with performance, memory efficiency, scalability and the likes, here you need to put more emphasis on intuitiveness and handling for unpredicted user behavior.

Another challenge is the fact that Android devices comes in various sized from tiny handset to wide screen tablets. Android SDK provides the framework to work with multiple screen sizes, but the developer still needs to spend some effort ensure that the GUI looks good in all screen sizes. For my particular game, I ended up with two different layouts: one for small to medium screen and another for larger screens.
Even for simple game that does not rely on graphics, designing a visually pleasing GUI can still be time consuming.  I rely on beautiful and free icons from http://icons.mysitemyway.com/ to help spice up the app. Even then, I still need to spend a significant part of development time Photoshopping (I used GIMP actually).

 The Dictionary
Finding a dictionary/word list is one of the last things on my to-do list, since I thought it would be easy to find one. Apparently not.  Scrabble has several official word lists (depending on where you play). They’re called OWL, TWL, SOWPOD etc. The problem is they’re all copyrighted. It seems that many of the word games available in the Internet or Android simply uses one of those lists without license.  And some of them apparently has received not-so-friendly letters from Hasbro / Mattel (Scrabble’s copyright owners) lawyers.

Thus, I decided to look for an alternative. For English, I found English Open Word List (EOWL) which is compiled by Ken Loge (http://dreamsteep.com/projects/the-english-open-word-list.html) for the exact purpose of providing free alternative word list for word games or spell checkers. It’s not perfect – many valid words such as plural forms, past forms are missing. But it’s the best option there is.
With Bahasa Indonesia, things got a bit more difficult. I couldn’t find a single comprehensive word list. I had to resort to Wiktionary (http://id.wiktionary.org). It’s quite comprehensive although still far from complete. The problem is it doesn’t provide the word list in an easily downloadable format. I had to write a script to crawl the site to extract the word list.

Publishing the App
After everything is ready, it’s time to publish the App via Google Play. Registering is almost as easy as it gets.  You need to pay 25 USD to Google to get yourself registered as Developer. I’m not 100% sure, but I think it’s a one-time payment and you don’t need to pay more for uploading more apps. Definitely cheaper from registering an app to Apple’s iTune (which costs 100 USD, CMIIMW ). Google also does not require any certification process for your app. This means your app is ready to be downloaded almost immediately (read: few hours).

So it goes, after 2 months of part time development  (I still need to do my day job, which pays the bill) and several liters of lattes, “Words against the World” is finally available for download.