Introduction and Background

For more than a decade, software development has been primarily focused on the web. Server-based code could be written in any language - as long as it communicated to users through HTML and JavaScript. With the rise of smart phones, all of that is changing.

For many of us, we see this as a good thing. In fact, if you go back to the mid 90s, you may be surprised to hear that application design (arguably) took a huge step backwards by abandoning natively written applications and favoring HTML 3. My first experience with Server-based development was both exciting and disappointing: It was great to see an application work across all platforms, but I was shocked at how basic the look and feel was.

Moreover, even client-based programs were suffering from a “least common denominator” philosophy. In the Java world, the initial widgets (AWT) weren’t that impressive - even if they ran “everywhere”.

Over the years, techniques like AJAX and CSS manipulation have greatly increased the browser-based experience, and it’s possible to build a truly elegant application within a browser. On top of that, the rise of HTML5 promises to provide a huge leap in browser-based functionality. Nevertheless, many of us pine for the days of native application development. Enter the mobile device.

I think it wasn’t until I saw an Apple commercial that I recognized the potential of the native mobile platform. When I saw some of the amazing apps that they advertised, I was stunned. I wanted to dive in immediately, but there was a catch: I didn’t have a Mac, an iPhone, or even the desire to sign the curious Apple developer’s agreement, so I waited.

When Google launched Android, I jumped right in. Since they leveraged Java, it was a relatively smooth transition to that platform. But after writing several apps, I became curious about how the “other half” lived, so I got a Mac, and dove in.

Almost immediately, it became obvious that there were significant differences between the two platforms, and I’d have to dedicate significant time transferring my skills. Undaunted, I pressed forward.

Along the way, I had to accept an unpleasant truth: As I get older, I can’t keep all my knowledge of development in my head. Case in point: Some years ago, I wrote an app in Flex. Last year, I went back into the code, and was dismayed to discover that I had forgotten nearly everything about Flex. It was at that point I realized that I had to write down anything I wanted to recall after long periods of absence.

With the mobile world, it can be even worse: A few weeks closely focused on iOS will lead to some initial sluggishness when you first return to Android (and vice versa). With that goal in mind, I’m putting these articles together in an attempt to more quickly switch between the two dominant mobile platforms: iOS and Android. Here's hoping these articles are helpful to more developers than just me. :-)