I've been away from the blog sphere for a few months due to contracts I had to complete. I can't and won't complain about that since its these piles of work that get the bills payed. The types of jobs I've been getting lately have been changing, I've seen customers requesting for 3 different platform implementations of mobile applications. So these past few months I've been working on Android, Windows Mobile, Windows Phone 7, and as of last week iPhone. I find these challenges to be really fun even though the initial start up with a new platform doesn't always go that fast. Once you get a hang of it you learn to appreciate the architectural difference of each platform.
There are always a bunch of obstacles, some things are easier done in some platforms and some things are just more straight forward and runs faster in some platforms. The Microsoft platform's have extremely good development environments where productivity is kept at a constant high. I feel very at home in the Microsoft space since I've been doing mobile development since the days of Windows CE 3.0. Developing applications for Windows Phone 7 is very easy as long as one sticks to the development guidelines (provided by Microsoft) from the start.
What I came to really appreciate lately was Android development. I think this platform is very well designed and thought through. Getting started wasn't so hard and since Java is rather similar to C# I didn't have any trouble switching languages. The performance of Android applications is to my surprise superior to Windows Phone 7 and highly optimized Windows Mobile .NETCF applications and the API's provided for Android are elegant and well documented.
I haven't really gotten too far with iPhone development and I can't say much about that for now. But I am very pleased with the iPhone itself. Until the release of Windows Phone 7 devices I carried an iPhone around. It's extremely easy to use and it provided the very first software input panel that actually impressed me and that I really found useful.
I usually don't post my random thoughts on my blog. So what does all this mean? Well this post is meant to be the start of a long series of articles on multi-platform mobile development. The purpose of this series is to explain and demonstrate how to implement mobile applications on different platforms; to discuss architectural considerations for multi-platform design; demonstrate how to share common assets between the different platforms; to explore the best design patterns applicable to each platform, etc etc.