Mobile Trends – Looking Back 1 Year

I’m still fairly new to mobile development, just a little over a year. As I dig deeper, it just gets more and more interesting. This won’t be a technical writing like a tutorial but more to how the development scene has been evolving for the past 1 year. Putting it simple: Trends.

I started my mobile development efforts with Blackberry. Against all odds, I installed the SDK on a Windows virtual machine using Parallels Desktop. The experience developing using a virtual machine was painful. For long term use, it’s too slow and too awkward. Anyways, I managed to connect the Blackberry device with the IDE. So I created my first Hello World with it. It took me a great deal of my time learning about the platform. Most of the key information are for paid developers unfortunately and sadly enough, BIS is needed and I didn’t have it. A big roadblock for a newbie developer.

Being dissatisfied with Blackberry, I moved on to iPhone. I got myself an iPhone 3G and boy that was the worst iPhone I’ve ever played with. Why I say this, the experience is just sour with iPhone 3G. The hardware couldn’t keep up with apps that are demanding. However, it was even worse with its SDK. So I downloaded and installed Xcode + iPhone OS SDK (at the moment). I couldn’t get apps to be deployed to the iPhone without a paid ADC membership. Well being a single minded person, I jailbroken the iPhone and followed tutorials to get it to work with my intentions.

The most powerful thing an iPhone has to offer is its native development approach. They are using Objective-C and that directly translates into better performance (supposedly) compared with Java platforms. Okay I surrender the argument, Android can use NDK instead of SDK to develop BUT only in Android, kudos to Google! Back to iPhone, I managed to get my first Hello World running. The next step was to study Objective-C in depth. The result: none. I hated pointers in C and still hate it today. So I didn’t learn Objective-C at that time, instead I came across Titanium Developer.

Titanium uses a wrapper API on top of Objective-C like what Objective-C is to C. The programming language is JavaScript so a web developer like me got comfy instantly. At the time, the support was still limited both in iPhone and Android however it’s enough to built a simple Augmented Reality application. So I made one and boy webkit’s CSS 3 3D transformation were a lifesaver! Thanks for this Webkit Developers, you guys rock! With Titanium, it enabled me to focus on the app instead of the platform and that’s the key point!

Although my first experience developing in iPhone left happy memories, I wasn’t satisfied with its distribution in Indonesia. No one was using it so I thought why not try the Green Robot, the userbase at the time can be rounded to 0 meaning actual users were very limited. I sold the iPhone and bought a Nexus One. First impression: YEAYYYYYYYYYY!!!!!!!!!!

I was completely stunned how smooth an Android was. A Nexus One is Google’s example of how every Android device should be and the bar was set very high! The quality of the hardware was pristine as do with any HTC devices able to run Eclair without much effort. I eventually upgraded it to Froyo and was really satisfied with the phone’s performance. However, although Android can be a developer’s best friend immediately, still the UX was way off compared to iPhone. It didn’t bother me much, it’s a motivation actually to be better than average.

Immediately I started learning to develop on an Android and must I say, the learning curve was not as I expected. I never coded in Java other than Hello World in Blackberries. I was comfortable because syntax-wise, it was not quite much different than PHP. The 1 thing I was grateful in Java and PHP is Garbage Collectors. I mentioned before that Android has its own NDK allowing developers to code in pure C if needed so performance of an Android app is actually tweakable.

Now I’m using an iPhone 3GS and boy it was one of my most memorable gadget buying decision. The performance woes I experienced with iPhone 3G was not present with 3GS. The experience of a proper Apple device is just magnificent. Apple focuses on experience and the consumptive nature of any perfectly normal human beings and I was sold lol.

Enough with hardware, what I really want to write about is software. An example of superb apps in my opinion are Wunderlist, Evernote, Angry Birds and Instagram. This is limited only to my knowledge and the apps I have used before in any platforms so you are welcomed to debate.

Wunderlist is a To Do list organizer and it’s available in iOS, Android (beta), Chrome Webapp (beta), Macs and Windows. This is a prime example of how an app is bringing its experience agnostically across different platforms. This particular app is made with Titanium Developer which makes its development efforts actually faster than native developments. Apart from Wunderlist’s functions as an app, it showed a glimpse of the future.

After Wunderlist, there’s another productivity booster I can’t live without which is Evernote. Note taking has never been so easy and because it’s cloud driven, the notes are immediately available. Need I say more about this app? It’s just fantastic, lifesaving and above all, all my data is available 24/7 from any device I access it with. Evernote is amazingly available for iOS, Android, Blackberry, Palm Pre/Pixi, Windows Mobile, Macs, Windows and Chrome Extension.

Next up is that hyper-popular game named Angry Birds. Another example of cross platform success. Angry Birds is available initially in iOS devices but now has widen its reach to Android, Windows and Macs. A clear example of how microprices (sub $10) apps/games flourish. I’d pay for this game without even thinking about it because it’s damn cheap and I can play it in any platform I have in my hands at any moment. The experience with multiple platforms does not a change a bit, gameplay is consistent and boy its fun to play with.

Last but not least, this app is only available with iOS but has instantly received success. None other than Instagram. The app is a photo sharing app instantly enabling the average person to get an experience as a professional photographer. Okay it’s quite shallow but it’s simple and less is more I must say! Instagram is only available for iOS but now opening up its API to be used by developers. With that many photos from millions of users, I must say it’s an interesting API to play with. They are fishing for creativities and innovation from developers like you and me to use their data and turning them into food on the platter (information) for users.

If you noticed, I didn’t talk anything about monetizing apps because the ecosystem is not there yet, at least if you’re looking into monetizing from users. Only iOS I say have the best monetizing platform, they have paid apps and in app purchases while others still only offers paid apps. So I’ll leave it for another blog post.

The conclusion is as a mobile developer, I must be as agnostic as possible when it comes to platforms. Being good enough in 1 platform is not good enough. With platform fragmentation rates very high, a mobile developer need to have a clear understanding of the concept of experience. Tech stuffs I say is geeky and very interesting but it’s not enough to win over users. Futuristic is cool and we’re getting there ;)

Mobile App Analytics

flurry

We’ve all heard, used, tweaked and cherish Google Analytics either for its web or mobile web capabilities of serving us information about our visitors. So I’ve been wondering about a mobile app equivalent I can use with the exception of mobile ad networks. I came across Flurry a couple months ago and still using it until now.

One of Flurry’s edge compared to other platforms is plainly and simply because it’s the most flexible and complete with a price tag 0 in any currency. For time being it doesn’t have any options for paid versions but they do say that in the future they will add paid features.

Another point to be considered is Flurry’s libraries for mobile platforms is extensive. Flurry supports J2ME, Blackberry, Android, iPhone and iPad. I used the Android version and its SDK is dead simple. For the basics, all you have to do is just insert Flurry codes in the onStart() and onStop() method of your app’s activities. I can’t say for sure with other platforms but in the coming weeks I’m sure to offer more updates.

The next gem is Flurry Events. These are events that happens in your app. It basically tracks all interactions anonymously. For instance, when a user is registering for an account, it sends a Register Account event and when the registration is complete, Flurry then sends a Register Complete event. Yes you can do this on your own with your web services statistics but what if you don’t have access to it? Or if you just want to focus on the app itself and not have more efforts with the statistics.

My second favorite is User Paths. From the first time your app is launched until a user stops the session (Flurry has 2 minutes idle time before considering a new session), Flurry tracked them and therefore spits up useful information about what users are doing with your app. This can help a lot with business related decissions.

Last but not least is a more technical side which is the ability to track Exceptions in your app and log it according to handsets. This has been one of the feature of Flurry that helped me a lot with bug fixing. Android Market does have error reporting but NOT as informative as Flurry’s subjectively.

There you go, one of the best mobile app analytics platform: FLURRY!

Android Dev Tip: Show Your “Invisible Apps” in Android Market

qrcode-urbanesia

Aren’t you pissed when you’ve done all the codings and debugging only to find out after you pay $25, your apps didn’t show up at Android Market? Okay this particular issue has bugged me twice in the last 3 months and it’s suffice to say, I must share this with other developers who might be experiencing the same issue.

Yes it’s the Urbanesia app I’m talking about :) Today was planned to release the app to Android Market. So I uploaded the app to my Market Publisher account and filled all the required info and graphics. I did a search with my Nexus One and it showed correctly. Asked for help with some friends using Samsung Spica and Motorola Droid, it showed correctly on their phones. After that, the Nexian Journey was next. It didn’t show up :(

I dug through the usual channels only to find that I was not alone with this annoying bug from Android Market. Other developers are experiencing the same old thing. This is a guide of what to be done when you’re caught in the middle of it.

  1. Make sure that all your Android Manifest permissions and features are formatted with android:required=”false” or required=”false” if the particular permission or feature is a luxury with different phone models. The documentation showed that there are default values if not explicitly defined, however Android Market is not in sync with the documentation. Examples:
    • <uses-feature android:name=”android.hardware.camera.autofocus” /> should be formatted as <uses-feature android:name=”android.hardware.camera.autofocus” required=”false” />
    • <uses-permission android:name=”android.permission.CAMERA” /> should be formatted as <uses-permission android:name=”android.permission.CAMERA” android:required=”false” />
  2. Remove this particular permission from your Android Manifest:
    • <uses-permission id=”android.permission.CALL_PHONE” /> instead use this with your source code Intent callIntent = new Intent(Intent.ACTION_DIAL);
  3. Do not Copy Protect your app from your Android Market Publisher console or your app will only be visible to Android Market “included” phones that has their respective fingerprint registered. This is a big roadblock for emerging manufacturers. Google should make this a requirement. Anyways, with a rooted phone, you can still break the Copy Protect feature so what’s the use of protecting it anyways?

The conclusion, Android Market is still far from maturity. Needs a whole lot more openness when actually Google is preaching it lol. So if any of you guys is experiencing this annoying itch, I hope this blog post can comfort you ;)

For you guys owners of a Nexian Journey, download the app with the QR code above :)

Android Apps for Travelling

Jogja

Today is a start of a 2 days trip to Bacakan, Jogja and FOWAB, Bandung. For this reason, I started hunting for Android apps that are tailored made for travelers. Definitely the kind of apps offer travel-ease and maybe some local content if available. By the way, I haven’t used all of them extensively but worthy of installation nevertheless.

So let’s start with the list!

  1. Wikitude – wikitude.org
    This is the first app that came into mind. Also one of my 7 must-haves. With its Augmented Reality feature, I’m sure it’ll give me a different experience. Someday I’ll be layering for them when the time is right. They have Indonesian contents but I’m not sure it’ll be large enough to cover Jakarta-Solo-Jogja-Bandung. Let’s find out then ;)
  2. My Augmented Reality – mobikats.com
    Now this is a handy app. It basically gets geo coordinates from GPS of your location and lets you tag the location. This will be my number one app for geotagging.
  3. 3D Compass – android.a0soft.com
    Thanks to HTC, my Android has its own compass. With this app, I’m sure it’ll be a neat survival tool if I ever get lost.
  4. Lookator – loftdev.com
    A very cool app to scan for Wifi APs and show you where it is and if you ever get low signals, just head towards the AP in Augmented Reality view to get stronger signals. Need Internet, this is a Must!
  5. TravelCamerAR – futurescope.jp
    This app will take pictures using the camera hardware and automatically geotag the pictures taken. By the way, it’s another Augmented Reality app. I just love AR.
  6. AugSatNav – phyora.com
    One of the best Turn-by-Turn Augmented Reality navigation app for Android. Once I found a cool place to go, I need to know how to get there! Used this app over and over to look for addresses while driving. Very useful and a Must Have!
  7. Twidroyd - twidroyd.com
    I need to tweet so a Twitter client is a Must Have. Java here I come :p

So there you go. My must-haves for travelling with an Android!

7 Must Have Applications for My Android

I just installed myself a slick new ROM for my Nexus One and I figure why not share the applications I deem MUST-HAVE. It would be interesting if in the distant future whether my must-haves still remains the same.

  1. Twidroyd – twidroyd.com
    The BEST Twitter client for Android. What made me comfortable instantly was its UI. Everything is right where they’re supposed to be enabling me to Tweet without being confused small buttons for my thumb.

    The paid version offers a bigger widget applet. I paid for this app not because of the widget but because it’s just plainly great!

  2. Robo Defense Free – Lupis Labs
    If you ask me why the free version, it’s because I can’t pay for it without doing some workarounds. Nevertheless, I’m pretty sure you’re gonna be addicted and consider this game like drugs hahaha.

    Want the paid version? Google it!

  3. Adobe Flash Player for Android – adobe.com
    I didn’t really like Flash on the desktop but with mobile devices, I’m loving it. Code once, deploy everywhere ;) I’m installing this to have a go with Augmented Reality but still need more success with Android’s camera :(

    Other than that, go ahead and install FroYo owners, the games are worth it!

  4. Barcode Scanner – ZXing
    Need I say more? Very useful and handy, you’ll never know when you need this app!
  5. Wikitude World Browser – wikitude.org
    This app is the primary reason why Augmented Reality is a no brainer in Android. You can use this with pre-defined layers or integrate it into your self-built applications.

    The best thing is that for now, everything is still free. So get it now!

  6. Foursquare – foursquare.com
    Ok I admit it. I just love the badges and the points I’m getting everyday lol. It’s just fun and this is what every application should be.

    I haven’t tried Foursquare in any other platforms except Android and Blackberry. I have to say the Android version has a very high usability point. It’s damn easy and self-explanatory. Kudos to the guys behind it!

  7. Google Goggles – google.com
    This is by far the coolest Android app I’ve ever tried. With the support of one of the biggest image bank in the net if not the biggest, Android users can show off anytime to anyone lol.

    I just hope Google stayed on recognizing objects and not people.

So that’s my 7 must-haves. I’m sure with these 7 apps, you’ll always playing with your phone draining the batteries. Thank God for unlimited Internet connection :D