Exciting times, choosing a platform!
As I sit here and write this post; I have an ActionScript 3 project
open, a Flash Pro project open and a vanilla Java project open. Earlier
I was working in Xcode on an HTML5/JavaScript
Phonegap project.
I know what you are thinking; "This dude is a freakin' badass!" HA! Rest
assured that I'm merely enthusiatic crazy about technology and more
specifically UI/UX and programming (and my children, but this blog is
about tech, not diapers). I'm living and eating this stuff when the kids
are sleeping or out and about.
There is a bit of a problem, however. I would really, really like to
focus on a core programming language and/or platform. I want to be a
Jedi master of the most ubiquitous, most loved and most profitable
language and platform. In this day and age its a fools errand, a pipe
dream and the emperor has no clothes.
Lots of geek pundits have said, "Just focus on iOS and be merry." Yes...
but. There is always a "but" and I would be remiss to leave out the
other exciting platforms. After all, my Android phone got me into this
whole mess and Android is still growing like gangbusters. My problem,
essentially, is that I want my cake and too eat it too. Another silly
cop-out, eh?
I need something that will work on a variety of platforms with
essentially one code base. As a one man shop with limited time, I don't
have the luxury of coding every platform in its native tongue. I would
LOVE to be that BADASS, but I'm not anywhere near that level. I need to
work where I'm comfortable and productive from 8pm to midnight. I have a
full-time job and diapers to change, I don't want to fight with
something I enjoy doing in the hopes to make a quick buck; that simply
isn't worth it.
So I went down the cross platform path to see what I could find;
Phonegap as mentioned previously is righteous.
It works and it works well. The bonus is I get to use the skills I've
aquired from years of HTML and javascript developing hacking
websites. There are some nagging performance issues outside of Phonegap
based on the libraries one chooses. JQuery Mobile is NOT ready for prime
time. In fairness to JQuery Mobile, its still in beta and has some
serious corporate backing with Adobe and Microsoft. So it "should" be
really good in time.
Sencha Touch looks great but will require a significant investment to
learn. The same can be said for Appcelerator Titanium. These
frameworksfor mobile development are basically javascript only and have
a very specific (and different) ways of doing things. There are lots of
reports of strong support for iOS and lacking support for Android with
both. I can't comment directly on the issues with Sencha or Titanium as
I have not used them for any length of time. However, the comments and
blogs are there and in your face when you start to research.
The over arching problem with all of these is the dependence on the
mobile browser. The very thing that made my want to stab myself in the
ear with a pencil while developing websites, rears its ugly little head
in this domain. This much is clear; All of the DOM manipulating cross
platform solutions are dependent on the mobile browser. These browsers
can vary widely and wildly from device to device. Android developers
think fragmentation is bad, add another layer of abstraction and OEM
specific implementations and you have some serious pain coming your way.
The only other game in town for cross platform mobile development is
with Adobe and the Flash-FLEX / Air combo. The Flash apps I have built
and tested for mobile just flat out work. They look great and you get to
use a class based, statically typed language to build them in
ActionScript 3. What is the downside? Reach! The good news is I can
target iOS and Android with basically the same code base, but that is it
(I will not mention the Blackberry Playbook as its sales look dismal,
oops (I went there).
So the moral of this story is almost every solution has real, bonafide
merits and warts and it you came to this article looking for the magic
bullet... I apologize. You see, the magic platform with everything YOU
want including buckets of money does NOT exist. There is an old adage
that I read a lot on stackoverflow and tech-religious pieces; Choose
the right tool for the job. When people are choosing a path, this is
the last thing they want to hear... and I understand the angst. However,
this piece of advice is pure gold and everyone should take it to heart.
I have come to realize my, sometimes unhealthy, curiosity is both a
blessing and a curse... but mostly pure blessing. I like learning new
things and often get tired of "same" ( which is part of the reason my
day job is a riding around in a fire engine, no day is ever the same.)
Timing will always be a challenge as the IT industry moves at break-neck
pace. With a healthy curiosity and a good method to learn, I think its
possible to get on board and make a difference.