Wednesday, February 18th, 2009
Once the availability of the iPhone SDK hit the streets I have been very interested observer. I still don’t actually own an iPhone (just yet), but I did receive an 8GB iPod Touch for Christmas. The iPod Touch is basically an iPhone without the phone. It supports nearly all the same apps and as a development platform, matches the iPhone specs. I am surprised at how often I use my iPod for things that I always wished I could use other phones for.
- Internet access – check
- Simple interface – check
- Useful embedded apps – check
- Ability to store and access music, videos and podcasts – check
This little thing has really become an indispensable part of my life and I while I’m perfectly happy with Verizon as a carrier I am strongly debating dumping them for a new plan for my wife and I. She couldn’t care less about having an iPhone, but there are lots of free phones she would be perfectly happy with so I’m not worried about the cost of switching. On the other hand, the two-year contractual agreement with the added stipulation of carrying a data plan for those two years is a significant consideration these days, especially with the current pace of technology churn in mobile electronics. Still, I really do feel that I would use the data plan. Oh yeah, I said that before too. See a pattern here?
What I haven’t attempted to discuss which is no less important and certainly shouldn’t be discounted is the argument that there are still other viable options available for mobile application development; namely, the G1 and Android. Java-based platform…nice, deep Google integration with geolocation services…very nice, open platform…very very nice, platform adoption rate…hmm we’ll have to get back with you on that.
I did read over the weekend that the Android Store was open for developers to begin publishing apps. That’s certainly a good sign. To wit, Microsoft is going to offer a similar service for WinMo apps as well. For me, at least, it’s a situation where I need to pick my poison as it were. While it would be nice to have the option, I really can’t justify the purchase of an unlocked development G1 phone from Google for $499. The ability to write Java is a powerful incentive since I’m going to need to become an Objective-C / Cocoa Touch ninja which I feel is quite achievable, but within what timeframe? I am certain I could crank out Java-based apps quicker, but I guess the anecdote “if it were easy anyone could do it” is true. When you consider that, as of EOY 2008, Apple has sold roughly 4 million iPhones. Next, how many of those are software developers or have the skills to enter the market; smaller number. Next how many of those developers either have a Mac or are willing to burden the cost of the hardware to enter the market; much smaller number, I’d argue. Next, how many of those Mac owners are application developers either experienced with or want to learn Objective-C; significantly smaller number, certainly. Next, how many of those developers are even interested in developing for the iPhone; smaller number yet. Get the picture? The vast majority of iPhone users are perfectly happy with using the iPhone to make and take calls and the total pool of talent for the iPhone development is quite small by comparison. When you plot that against the number of Java developers, the simple economics of supply and demand make a strong argument in favor of the iPhone. I for one hope to capitalize on my investment in learning by earning a few dollars on my application. If I do that’s great. If I don’t I’ll still be happy that I can choose to work on an alternative development platform if I choose to. Seriously, it’s C and I know C very well. To me, it’s a win-win. I can always do Java just like 3-5 million other developers.
Tuesday, February 17th, 2009
I’ve owned several Windows CE-powered devices and have written both commercial and personal apps utilizing that platform and while the familiarity of the Windows idioms, Win32 API and other developer-friendly attributes from Microsoft, I’ve always felt that there is a certain sterility and ho-hum quality to the end product. There was always something missing; graphics quality, marginal OS stability, kludgy device integration are just a couple that come to mind. Regardless of my perceptions, the applications were usually developed for business use and not really targeted at a consumer market. I know this and for the intended purpose, development on the Windows CE platform was straightforward and presented few problems that I wasn’t able to work around. But, this expected in early 2000-2001. The platform was immature and Visual C++ and Visual Basic were the development languages able to target the variety of targetable processors available in the handful of devices on the market. Typically I used a Compaq iPaq or the HP Jornada for commercial development. Since I was an experienced Visual C++ programmer, the Win32 API was plenty fast and didn’t require the monolithic runtime that Visual Basic imposed. It was the only real choice for professional development.
Over the years, I have also owned several Windows Mobile OS-based phones and have still felt that each successive release of the OS brought less functionality and more robust hardware requirements. The tradeoffs didn’t seem interesting to me, but I still bought the phones out of necessity. I wasn’t interested in the rapidly-declining mindshare of Palm OS. Even now, my “daily driver” is a Palm Treo 700W phone running Windows Mobile 5. It does the job, but in all honesty I’ve never used the SD slot for anything, I don’t store any MP3s on it, I don’t use any of the Pocket Office apps. Hmm…why do I use it? Well, back when I bought it, having a full-blown Web browser on a phone was avant garde and I justified the cost of the phone and the exorbitant monthly cost of the data plan from Verizon as something I would use all the time for things like Googling the address of a store, using Google maps, instant Wikipedia access for those situations where I had to know the MSA data for Pocatello, Idaho for an argument I might find myself in. You get the picture and I’m sure you have also rationalized the same kinds of things. You know what, I never found myself in a situation where knowing the MSA data for any city in any country was useful, I never needed Google maps since I have a GPS device in my car, and I never really needed to use Google while driving. Basically, the only times I needed the Web browser was to surf the web while waiting in line somewhere or while waiting at the dentist’s office. Fun stuff, sure, but certainly not enough fun to justify a $49.95 data plan on top of a $39.95 voice plan. I decided I would find an Internet-connected PC if I needed to perform any real stuff. Bingo, problem solved and I canceled the data plan within 6 moths of buying the phone.
To be honest, I have always missed the convenience of knowing I could access anything on the Internet from my little phone on a moment’s notice. So, I have continually been on the lookout for something that was could deliver an immersive user experience at a reasonable price point. What I’ve had been looking for was the iPhone. I finally saw a device that much more than a something to place and receive calls. I marveled at the overall simplicity and quality of construction. It seemed to possess most important attributes I felt lacking in the available phone, small size, useful embedded applications, fast Internet connectivity, a brilliantly designed user-interface that is both immersive and simple to use and, finally, and most importantly, an extensible development platform which could be leveraged for a broad range of customers and application types.
I didn’t rush out and get an iPhone as some did. I wasn’t interested in the cool factor so much as the stability and uptake beyond the early adopters. Remember, I mentioned that an extensible development platform was a deal breaker for me and I didn’t see that Apple had a story to tell here. So I waited and finally rumors surfaced that Apple was, indeed, going to have a developer story to tell. Flash to now…availability of the iPhone SDK.
Monday, February 16th, 2009
I am planning on writing a series of blog posts which chronicle the progress of the development and publication of my first iPhone application. I am an experienced Microsoft developer and want to share my experiences. I have a lot to learn about Macs, the Xcode, iPhone SDK and a bunch of stuff I don’t even know yet. Maybe something I write here will help or inspire someone else. I don’t make any promises about the outcome other than to say that I am highly motivated to see this through as I think I will learn a set of valuable skills which is never a bad thing. I don’t really have a set format as I’m sure that circumstances of my progress will dictate the content both in terms of length and level of detail.