Native vs. Mobile is the New "Abortion" Topic

It seems that no matter where you go in the mobile development/marketing circles you always find people who are VERY passionate on their views on the future of mobile apps...whether one is better, faster, offers more features, cheaper, has a better business model, etc.  My personal opinion on the matter is that there is room for both and there are instances when most companies need both and others where you need one or the other.  Where most companies make their mistake is that they don't have a mobile strategy, but that is a sermon for another Sunday. This past week, RIM made a pretty bold statement/pot-shot at Apple in regards to this topic.  Liam Cassidy over at Gigaom wrote a very interesting article, Poking Holes in RIM’s Anti-Apple Rhetoric, where he definitely gives RIM some serious food for thought.

"Let’s think back to 2007 when Jobs demonstrated the iPhone to a stunned WWDC. At that time, Apple only endorsed a single way of getting new functionality onto the iPhone - via web apps."

"It’s an easy answer: Native apps provide improvements in performance and storage; they work offline; and they are better at remembering where you last left off. Native apps can also exploit the platform’s built-in technology, such as the iPhone’s camera or Location Services (Twitter’s website, for example, always gets my location wrong, but the official Twitter app, hooking-into iOS’s Location Services, never fails to figure out where I am.) "

"At best, they belie a serious lack of understanding of the tablet/mobile device market as it exists today"

Now look at the mobile ecosystem and get back to me Balsillie.

I Do Not Present Like Steve Jobs

I remember the first public speech I ever gave. I was in sixth grade and terrified out of my mind. What makes my experience from most is that growing up I stuttered VERY badly.  I rehearsed my little three minute speech a thousand times and felt pretty confident.  A lot of students wrote their entire speech on note cards and just read. My mom got her first degree in journalism and taught me that one should never do that.  Just make bullet point reminders and TALK to you audience. As such I can't stand when people put a thousand bullet points on a deck and read to me on top of which now I have to look at distracting animations that serve no point. I still follow the practice of having talking points and I RARELY use animations.

In prepping for my talk at this years BarCamp in Memphis I decided to break away from Keynote, which is awesome, but I just don't use 1/32 of its power, and use Google Docs of which I am a huge fan of already. The experience couldn't have been nicer. Not only was the interface straight forward but I loved the benefit of being able to access it from any location and machine. In addition,  when I was done I can share it with a click of a button. I don't have to give up control of ownership by uploading it to another service like SlideShare.

Thanks Google for the wonderful option. For the minimalist like myself who don't present like Steve jobs Google Docs is the way to go.

Memphis BarCamp 2010 Experience

This past Saturday I participate in my first BarCamp here in Memphis. Most of the user groups and conferences that I attend are very technical in nature and while @barcampmemphis did have technical discussions and developers there it was a good mixture of marketing and general interactive as well. My presentation, The Fine Print of iOS Development, was one of the ones voted on to be presented. However, my session wasn't until later that afternoon so I had some time to kill. I went and listened to a few sessions, but what I enjoyed the most about BarCamp was the networking and general conversations between the people in the various industries. Due to the nature of my talk I had a lot of preliminary sidebars with a few marketers which was great because that is who my presentation was geared toward. I made some slight changes to my deck as a result.

One the most asked questions I got was "Why should someone have a native iPhone app instead of a mobile web app?" I gave my two cents for the pros and cons of both, but there was one particular company's experience that I have been thnking about a lot. Not to pop my own collar but I think their experience exemplifies why agencies and marketers should hear my talk. The individual that I was talking to worked for Company A. Company A sells a particular service which currently has some pretty steep competition. Early this year Company A hired Company B to build an iPhone app for their service. The app was submitted in the early summer and has yet to be approved by Apple. I asked why not and person from Company A explained that company b wasn't getting a straight answer from Apple and that Apple keeps changing the rules. At the time I didn't think it was my place to really say anything about Company B because I didn't know them nor their circumstances of the app functionality. It was unfortunate for Company A because they are falling further and further behind their compition as a result of this. In addition, Company A now thinks that investing in an iPhone app is a waste of time and money and that it would serve their users better to just have a mobile web app.

After doing some research on Company A's service and the company they hired....sorry Company A, but you hired people who don't know what they are doing. The amount of time between the first submission and now should have been more than enough to get the app fixed unless Company B is using private API or mimic apple logos, copyright functionality, not following the human interface guidelines, etc.  I have been submitting apps to the app store for over a year now and even when something is rejected Apple has been pretty clear about it and even helped me the resubmission process. Something isn't stirring the koolaid here. Yes I know about the Google Voice debacle but trust me nor Company A nor B are Google. 

The lesson to be learned here is that agencies, marketers, companies in general need to:
  1.  Watch my presentation
  2. Understand that if your app is rejected, Apple will work with you on the resubmission or provide a pretty straight forward answer as to why they wont except it. Company B should have known this and been able to fix the problem and not thrown up their hands and blamed Apple for their mistakes to Company A.
  3. Having a basic understanding of underlying technology of iOS devices from an abstract point of view will save you countless hours of frustration.
All and all I really enjoyed being apart of BarCamp and especially being a presenter.  I look forward to future events and hopefully presenting again.

Upcoming to Universal iOS App on GitHub

In anticipation for the upcoming public release of iOS 4.2, I have updated my Universal iOS App project (iAd Branch).  The project will run on 3.2 and up with iAd support for iPhone and iPad (4.2 only for iPad).

I ran into some interesting hurdles while working on this update.  The first of which is that adding in iAd support for a project using a UISplitViewController SUCKS! #FAIL When iAds where first offered in the 4.0 iOS they came in two different size: 320 x 50 (ADBannerContentSizeIdentifier320x50) and 480 x 32 (ADBannerContentSizeIdentifier480x32) which served their purpose since you could use iAds only on the phone.  When iAd support was added for the iPad Apple was smart and deprecated those properties and added ADBannerContentSizeIdentifierPortrait and ADBannerContentSizeIdentifierLandscape, thus abstracting the dimensions that are available for any current and future devices.  This unification works great on the iPhone and iPad...except for when you implement UISplitViewController on the iPad.  The reason being that even though your root view or "detail" view controller are in landscape or portrait mode their widths aren't in the expected frame width for either choose of iAd. Thus you get an inaccurate display and you will an error in:

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error

stating that an ad has displayed but is being obscured. In order to get around this I had to add in some padding to readjust the 'y' coordinate for the tableview's frame (only when the ad appears).  Why the rotation, and only on the iPad, gets screwed up I am not sure at the moment.  I created a simple, iPad only project and got the same results so there might be a bug, but until I am able to verify, my "padding" works".

It is important that if you clone/run this project that you read the debug console for iad display errors.  These are relevant errors passed to the delegate method and don't have to do with my code.  You will notice in the video that ad fails to load the first round.  This is due to an error from Apple serving up the ad because inventory is not available. Second time is the charm.

*important - always implement delegates to handle failures

In the next few weeks I'll be adding a branch where the Universal app will have Tabbar support.

CWCustomAccessoryView - Custom UITableViewCell AccessoryView

Around the same time that Oliver Drobnik (Formely Dr. Touch) published his blog entry, Custom-Colored Disclosure Indicators, I was also in the middle a client's project where the table view cells each had a different colored uitablviewcellaccessory.  I had to deal with 20 different images for the accessory views (10 for pre-iPhone4 and 10 for retina display).   At the time I knew having to manage the images themselves and the code to display those views was unwieldy and cumbersome.  I took inspiration from Oliver's post to come up with a class, CWCustomAccessoryView, which allows the developer to customize the way the accessoryView for a cell looks which includes the stroke, _>_, and fill color.

Though the code is almost a month old and I haven't had that much time on improving it, but after reading Ray Wenderlich's blog on Arc's and Paths I see I need to make the accessory view look for like Apple's detail disclosure button to make everything look really polished.

Per usual the code is hosted over at GitHub.  Comments and improvements are ALWAYS welcomed.

Force UINavigationBar Back Bar Item Display

The latest project that i have been working on has the CRAZIEST workflow that I have ever experienced.  The app isn't in the app store, but is used as a sales tool for the type of services that their company can offer.  Surprisingly, at least to myself, I was able to come up with my own navigation controls to manage the workflow.  The workflow consisted of various tabbarcontrollers, uinavigationcontrollers, fullscreen views, some with navigation bar, some without.  What ended up being the trickest parts to deal with was handling the transitions between full screen views and views with the navigation bar along with the back button.  My first attempt in the transition worked except for the fact that the back bar item was BEHIND the uinavigationbar titleView.

The problem was that I was setting the back baritem to visible in viewWillAppear:animated: and then calling setNeedsDisplay on the navigationbar.  That works, but the "refresh" of the view and animation would stop once the method ended.  The fix ended up being setting the back baritem to hidden and refreshing the navigationbar in viewWillAppear:animated:

Why Google TV Won't Catch On

Today came two announcements from Logitech and Sony stating that their impending unveiling of their upcoming Google TVs. I have been interested in seeing a real production of this platform in hopes that it will make up for Android.  Before all the flame wars start let me clarify that I really like  Android…the platform, but I am not a big fan of how the various phone manufacturers have forked it and given the big narcissistic middle finger to developers and how the MarketPlace allows apps that are sending personal information to advertisers.

In reading the various news articles today concerning Google TV I hear a lot speculation about the success or failure dealing with retail price sweet spot.  Even though price does play a factor into a purchasing decision I think in this case what is going to cause the lack-luster sales of the TV's is in the following statement.

"Logitech is also apparently working on a variety of peripherals for Google TV, including keyboards and remotes."

People DON'T want a variety of peripherals, including keyboards and remotes.  People DON'T want to sit across the room and have to reach for some wireless keyboard and/or joystick to navigate the UI only to find out that the battery is dead.  The moment the hardware manufacturers start fragmenting out the different ways to control their TVs will be the death nail on that coffin and consumers will pull the plug. Literately.

Sony is at least doing the right thing by offering a free iPhone app.

Second Chance At A First Impress with AppleTV 2

There are few products (software or hardware) that have come out in the past few years that I have been as excited about outside of the iPhone4 and iPad.  However, I was extremely excited about the new AppleTV launching because of the improvements that were made.  Granted, I wished that I was able to develop native apps for the device out of the gate, but I think that will be coming soon.  Remember the first iPhone didn't have native app development support.  Apple did not disappoint me in the least with their new offering.  I received it in the mail on Monday set it up without ANY issues.  Listening to my music, watching Netflix (I am a huge Netflix fan and customer) and streaming HD movies from laptop via iTunes Home Sharing.

The only real issue that I ran into was that I had to reset my wireless router after fours of heavy usage.  However, I think that is do to my router being old and not really handling to the amount of bandwidth.

Seeing how easy and enjoyable it is to interact with my media, especially movies, what will happen is that I am going to stop buying DVDs and only downloading iTunes HD movies and watching Netflix.  Can't really see the point of even watching regular TV. Programming sucks and I refuse to pay the high prices for digital cable. It is not worth it.

How do you iike them Apples?!