App developer’s dilemma

February 5, 2011

I’ve been a mobile app developer since the early Microsoft Pocket PC days (circa 2001) and I’m amazed at the selection of smartphones currently available. You have the Apple iPhone, Google Android OS, Palm WebOS, Blackberry RIM, and Microsoft Windows Phone 7 OS devices as the big players. So as a developer, which platform should you choose to develop apps for?

You really can’t developer for all of the platforms, since coding for one usually isn’t easily transportable to another. For example, the Apple iOS (iPhone, iPad, iPod Touch) use Apple’s Objective-C programming language for app development (which you need an Apple computer also). The Android OS requires the Java language, and the Palm WebOS requires Javascript (or C++ for games). Microsoft WP7 requires Microsoft’s own programming language (C# (or Visual Basic) and Silverlight), so as you can see you would need to be trained and skilled in many, many different languages for creating apps for multiple platforms.

So as a developer, you need to make some tough decisions if you want to create apps to sell for a smartphone device. In most cases your time is valuable, so you want to minimize your efforts and maximize your profits and results. I have been in such a dilemma, and here are my thoughts:

For all of the platforms, the Apple iPhone definitely has the biggest online app store. They have tens of thousands of apps available, free and paid. In my opinion, a new developer creating apps for the iPhone would easily be lost in this sea of apps, and the prospect of making a decent return on investment is quite slim. In addition, you need to own an Apple Mac to do such development and also learn the Objective-C language. Developing iOS apps has a steep learning curve and something I’m not willing to do at this moment for the possible return.

The Android OS is in a similar position as the Apple iOS, in that there’s thousands of apps already available. Most ideas for apps you might come up with have already been created. Java is a very popular language and if you already know it, then you’re more than half way there. Android developers use the Eclipse IDE (which is free) and it runs on many different computer platforms (Windows, Mac, Linux). I’ve found that the Android development tools are not the easiest to work with, but they are all free and readily available from the Internet. I’ve opted to not pursue developing Android apps since I don’t know Java and it would be a huge effort to get up to speed in that language. Now, I have not excluded writing Android apps, but at the moment I’m holding off any serious development effort with that platform.

I’ve spent the last year or so developing apps for the Palm WebOS devices, and I find it very easy to do. If you’re a web site developer and know HTML, CSS, Javascript you can create WebOS apps. Palm uses the Eclipse IDE and it’s fairly easy to code up your apps. As with the Android, you can do your development on a Windows, Mac, or Linux machine and all the development tools are free.

The biggest issue I have with WebOS app development, is with Palm. Palm has been very supportive of their developers, but it’s been over 8 months without them releasing any new smartphone devices. Since the acquisition of Palm by HP, handset releases have been non-existant. Sure, Palm release the Palm Pre 2, but that’s basically the same design as the Palm Pre. In fact, a lot of cell phone carriers have dropped selling WebOS smartphones so a developer must question if it makes sense to begin or continue developing for WebOS devices.

Microsoft released their Windows Phone 7 OS devices last year, refreshing their old Windows Mobile OS to something that is comparable to the iPhone, Android, and WebOS touch-screen devices. Amazingly, a lot of pundits like the new look of the WP7 OS (including me). Even though there’s not many WP7 smartphones on the market (GSM version only available), I believe Microsoft will throw lots of money at the WP7 project and won’t give up until they grab a big part of the smartphone market segment. As such, the total number of WP7 apps currently available is the smallest of the smartphone group, which in my opinion is a good thing for developers. This means more opportunity to create useful apps and games that will be noticed in the online catalog. Once you’ve established yourself and have good ratings, you will be in a good position to make considerable profit as more WP7 handsets are sold.

So do you develop apps for the iPhone, Android, WebOS, or Microsoft WP7 smartphones? Which platform will give you the biggest profits? If you have a “killer app” (like Angry Birds) I’d say go with the iPhone and/or Android since they have the biggest user base. If you’re a Java programmer, then go for the Android OS. If what you really know is HTML/CSS/Javascript, then dive into WebOS app development. Finally, if you know C#, Silverlight, or Visual Basic then check out the WP7 platform.

What am I planning to do? That’s a tough question to answer at the moment. I’ve pretty much decided to focus on two platforms: WebOS and WP7 since I already have apps selling on both platforms. I’m concentrating my efforts for the moment on WP7 since it seems to be an easy platform for creating nice looking apps, and their app store is low in quantity of good apps. But, I’m keeping my eye on what HP/Palm will be announcing next week on February 9th. If they announce some incredible hardware and the release of new app SDKs then I may drift back to that platform.

The smartphone industry is quite dynamic at the moment, so a developer needs to stay alert and keep all their avenues open.


Mac Programming is Driving Me Nuts!

September 26, 2010

I’ve been writing computer programs since the old Timex Sinclair 1000 came out when I was in Middle School back in the 70′s. Back then it was some form of BASIC language that was stored and loaded from cassette tape. Over the years I’ve learned several languages such as Fortran and C, as well as scripting languages such as tsh, Perl, Javascript, etc. I’ve written programs for the Pocket PC and later Windows Mobile devices, as well as UNIX X11 apps and Microsoft Windows (WIN32) apps all using straight C programming. Recently I’ve written several apps for the Palm Pre/Pixi WebOS smartphones using Javascript and various HTML5 components.

Since switching from a Microsoft Windows PC-based system to an Apple iMac, I’ve decided to explore writing applications for my Mac as well as the iPhone/iPod Touch and iPad devices. Fortunately, Apple supplies the development system (IDE) free with every OS X installation disk, so it would be no added expense to have all the compilers, etc. to create Apple applications.

I understood that programming for the Mac is done using “Objective-C”, so I purchase three programming books on the topic (as recommended on Amazon.com) to get me up to speed. So this weekend I’ve been reading parts of each of these three books and working through the various included examples. I have to say that after three days with this stuff I just want to scream!

I’ve been programming in straight C for over 20 years, and haven’t done much with C++ (which is a superset of C that implements Object Oriented Programming), so the OOP stuff is new to me. I thought I knew the basics of OOP, but after going through the Objective-C material I’m totally lost. Putting everything in classes with the @interface/@end and @implementation/@end notations, and the -/+ symbols before the method names is just nuts. Why make this so difficult? Am I just stupid? Maybe I should have bought the book, “Mac Programming for Super Dummies” because I just don’t get it.

I really like the Interface Builder tool which allows you to interactively create the application’s interface with buttons, text boxes, etc. But having to hook up those controls to the application via classes and objects is so convoluted.  It might seem easy, but to me it is very confusing and difficult to come back and maintain if put aside for several months.

At one time I did some Mac programming (with the Mac Classic OS) but this NextStep Cocoa Framework stuff is really complicated. I just wonder how are so many people creating iPhone apps for the Apple App Catalog? Am I just a big dummy and can’t get it? It sure seems that way right now.

Since I usually never give up, I’ll keep at it and see if all this nonsense will make sense to me at some point in time. I’m hoping all this convoluted Class stuff is limited to mainly the GUI, and if that’s the case I can use straight C programming for the bulk of my app and just brute-force my way with the GUI coding. I’ll also do a Google search to see if anyone else feels the same way as I, and has some saged advice on how to get through this rough patch of mine.

If you have any pearls of wisdom that you would like to share, I certainly do welcome it! :)

Update: After doing a search on Amazon.com I found this: Objective-C for Absolute Beginners: iPhone and Mac Programming Made Easy. So hopefully armed with this book I should make more headway into Mac programming. I’ll post an update after I receive the book in a few days and let everyone know if it is truly for “absolute beginners”!


I Love WebOS Programming!

October 4, 2009

webosFor the last 8 or so years, I’ve been writing apps for the Microsoft Pocket PC (and subsequently the Microsoft Windows Mobile OS) devices. In the early days, I was making some substantial income selling these apps on the Internet, however, my software sales have gone down every passing year to where I’m making just enough to cover my minimal operating expenses. I don’t think you can even buy a new Pocket PC PDA these days, as most people favor using their smartphones with the same integrated features. So in my opinion, the Windows Mobile OS is a dying platform for application developers.

The popularity of the Apple iPhone has created an entirely new arena for application developers. The iPhone’s best feature is its applications, and owners are definitely buying these apps in large volumes. As such, I looked into the possibility of switching my development efforts from the WM OS to the iPhone. To do so, I would have to purchase an Apple Mac computer as well as an iPhone with AT&T service for testing. I would also need to learn Apple’s Objective-C programming language and the entire process for writing an iPhone app. This would require lots and lots of time and money on my part, something I didn’t want to invest at this time.

When the Google Android phone appeared on the market (through T-Mobile), I investigated programming for that platform since it was based on Java programming. Google provided a Windows-based emulator that seemed to work quite well, so I wouldn’t need to buy a new T-Mobile phone immediately for development and testing. As I began my research and investigating, I realized that programming for the Google phone was just too difficult. Google’s documentation was too sparse, and it required developers to dig around and experiment to figure out how to use advanced feature calls. I tried for a month to learn and develop some Google Android apps, but ultimately gave up because the learning curve was way too steep. In hindsight, I think the decision to not develop for the Android phone was a good one, since I don’t see these phones selling like the Apple iPhones.

A few months ago Palm reinvented themselves by releasing the Palm Pre phone which runs the new WebOS operating system. It is very much like the iPhone and Android phones, but all of its applications are based on javascript and web-page programming. So the Palm Pre basically acts as a small web server, displaying web pages and using javascript for function calls very much like a standard web page on the Internet. Since I am a web site developer (on the side), creating applications for the Palm Pre didn’t require a lot of education (as with the iPhone and Android OS).

I’ve been working with the WebOS for the last few months and I really love it (having a good Windows-based emulator is really helpful). I can very quickly create useful and nice looking apps, and I don’t have to drop down to the low-level C progamming language to do so. I just finished writing a electronic wallet app for the WebOS and I’m now writing a companion application for my Desktop Vista PC, and I’m just dreading it. After writing for the WebOS, having to go back to Microsoft Windows C-programming just seems archaic! Lots of mind numbing coding, abstract system function calls, etc. I feel like I’m back to the dark ages again. I know I can use some higher level programming languages for Windows (like .NET) but I don’t want to invest a lot of time learning those languages.

So, I’m planning to stop all Windows Mobile OS application development in favor of the Palm WebOS platform. It’s fresh new ground, and I’m hoping to duplicate the initial success I had with the Pocket PC platform with the WebOS. I’m also looking at getting a Palm Pre Pixi phone with Sprint Service when it comes out next month, so I’ve definitely decided to invest my time and money on this platform. Good luck to Palm and their reentry into the smartphone market!


Windows Mobile OS — On Its Last Breath?

August 30, 2009

ripArguable, the Apple iPhone is one of the most successful smartphones on the market. Its slick, flashy user interface and tie to the Internet for data retrieval are its most attractive features. Its only downfall is the exclusivity on the slow and spotty AT&T Network.

Other phone developers and cell phone carriers are following suit, creating smartphones that run a similar iPhone operating system (e.g., Google’s Android OS and Palm’s WebOS). Touch screen, finger flicking, swiping, and pinching, full web browser, etc. are all typical features that users expect from these high-end smartphones.

Microsoft’s Windows Mobile OS has been around for quite a while, and compared to the iPhone, Android, and WebOS devices seems archaic. It is very apparent that the Windows Mobile OS is based on the Microsoft Windows Operating system with its popup menus and standard dialogbox screens. I’ve been using a Motorola Q phone (with Windows Mobile 5 OS) for a few years now, and it routinely hangs when I try to access an application, screens don’t display properly, and I’m forced to pull the battery out and restart quite often. Definitely not as slick or user-friendly as the more modern touch screen OSes. Read the rest of this entry »


Palm Pre WebOS Development Has Gone Public!

July 16, 2009

palm_preFor the last several months, only a select group of developers were allowed access to the Palm Pre SDK (early access program for developers). All that were accepted in the program had to sign non-disclosure agreements to keep what they were seeing in the beta SDK confidential. Fortunately, I was one of the select few who were accepted into the program about a month ago, so I have had some time working with their SDK. As of this morning, Palm has officially released the SDK to all developers publically, so anyone who wants to create Palm Pre apps can now do so.

Here’s a few comments I have regarding the Palm Pre SDK:

First, Palm was stating that a person with HTML, CSS, and Javascript experience could develop Palm Pre apps. The idea was that a person with web site developing skills could easily create Palm Pre apps. Being a person who has created web sites using HTML, CSS, and some Javascript, I thought I would fit into this category, however, that was not the case. I discovered that creating basic apps that mimic web-page operation is doable, but you do need extensive knowledge of the Javascript Document Object Model (DOM) to effectively use the Palm Pre’s widgets (buttons, lists, selectors, sliders, etc). If you don’t know DOM very well, then you’re in for an uphill battle (as with my case). So for those new Palm Pre owners who are expecting to create these wonderful games and apps using the Palm Pre SDK with just basic web site development knowledge, you’re in for a surprise. Read the rest of this entry »


Software Development – Not as Easy as you Might Think

April 25, 2009

programmingI’m trying to get back into developing applications for the Windows Mobile Devices (primarily because I need these certain applications for my own use) and make them available for sale on my software web site. I need to let you know that it’s a big undertaking. Here are the major steps required to create and sell a new application:

  1. Come up with the user interface layout, and create the application.
  2. Do some internal beta testing and fix all found bugs.
  3. Find beta testers to test your application, and email them instructions.
  4. As testers find bugs, fix them and send out updated beta versions.
  5. When it seems that the software is bug-free, make a final distribution.
  6. Get screenshots of the various screens for the application and create the user documentation.
  7. Compile the application executable, documentation, and release notes into an installer program.
  8. Create the new web page content for this new application (screenshots, description, etc.)
  9. Upload new files and web pages to server site.
  10. Modify automated scripts for sending out registration codes to people who buy the application.
  11. Send out an email blast to everyone who signed up for the newsletter mailing list.
  12. Upload the new application and details to 3rd-party vendor sites.

As you can see, it’s a lot of work to develop and make available a new application to the general public. In some cases, it could take almost 1-year to get a product developed and to market. But if you want to do it right, you have to take the time to create quality products.


Smartphone Application Programming

March 9, 2009

smartphonesSince about 2001, I’ve been developing applications for the Microsoft Pocket PC and now Windows Mobile devices. It’s been a part-time effort, where I spend evenings and weekends creating the Windows-based applications. Since the Pocket PC/Windows Mobile OS is basically a slimmed down version of Windows, all the programming structure, function calls, etc. are the same. So, if you know how to develop executables for the Desktop Windows machines, it’s nearly the same thing for the Windows Mobile devices.

Originally, writing Windows programs meant you needed to use a C++ or Pascal Compiler to create binary executables. After a few years, Microsoft introduced their .NET product which was suppose to make it easier for developers to create applications that will run on both the Desktop Windows systems and Windows Mobile systems. I never got into the whole .NET thing, since it required certain libraries, DLLs, and modules to be installed on systems to run the .NET applications. I liked the executable method, since you can compile everything into a single, compact application executable. The only problem with that approach, is that the binary executable you create will only work for a specific CPU processor, but fortunately Microsoft standardized on the ARM processor after 2003 for the Pocket PC/Windows Mobile devices.

Moving forward to 2009, you don’t see many people using Pocket PC devices. Instead, they use their cell phones (or, smartphones) for tracking appointment, emails, and reminders. Although some smartphones run the Microsoft Windows Mobile OS, there are plenty of other devices running the Blackberry OS, Nokia OS, Apple iPhone OS, and Android OS. Read the rest of this entry »


Follow

Get every new post delivered to your Inbox.