Bait and Switch in the AppStore

As Barney Stinson from How I Met Your Mother once pointed out, “New Is Always Better”, but does this principle hold true for free application updates on Apple’s AppStore? This article delves into the alarming practices of “bait and switch” by some application developers on the AppStore, as well as how this situation will be exacerbated by Apple’s upcoming iOS 5 release.

I. The Past

As an early iPhone/iPad adopter, I used to get excited when application developers released an update, because I knew it meant an expanded set of features, bug fixes, or for games, new levels. It was a pleasant surprise and often done as a “Thank You” do those that made the app a success. Updates from Epic Games’s popular Infinity Blade, for example, included a great deal of new content, levels, and multiplayer features, all free to those who already purchased the game. Others, from the developers of RedLaser included lots of new features and options that expanded the usefulness of the application far beyond the initial version.

II. The Present

The first time I ever experienced “Buyer’s Remorse” after updating an application on my iPhone was when I downloaded a Lightsaber update, after Lucas’s legal team had intervened in the original, unlicensed app. They took what was a simple and fun application and added tons of advertisements, popups, and ultimately reduced the “fun” of the application to a giant commercial. As good developers should know, simple is often better. Another good example of advertising gone wrong is when I updated my originally-free Newton’s Cradle app, which now includes an advertisement for a movie directly on the icon for the application.

A couple of disappointing updates later, I discovered my first instance of “bait and switch” on the AppStore when I updated U Connect, a simple connect-the-dots styled game. As soon as I launched the new version I discovered that pop-up advertisements had been added to the “paid” version of this game. The confusing part is that there is already a paid (full) and free (lite) version of this game, but the developers have decided to add advertisements to both versions, which up until now has been uncommon for apps in the AppStore.

The scary part is there is no way to revert to an older version of the app. Even if you paid the for app, you are stuck with the most recently downloaded version. On top of that, Apple has refused to add a “Skip” or “Ignore” button for updates that lets you indefinitely postpone updates for a particularly troublesome application. Keeping track of what applications to not update creates more cumbersome problems. For example, if there are ten updates out this week and there is one you do not wish to update, you cannot use the “Update All” button, but instead must select each of the other nine applications individually, now as well as for all future updates. This is both time consuming and frustrating and makes for a terrible iOS user experience.

These days I just delete an application if the update adds unwanted ‘features’ – but when it’s an application I’ve paid for, I’m especially disappointed and feel taken advantage of.

III. The Future

As Apple prepares to release iOS 5, with a strong emphasis on over-the-air updates as well as PC Free support, I am concerned this issue is going to grow more out of control. If the rumors of Automatic Download are true, then app developers will be free to push new, more advertising-heavy applications to your iOS device without even letting you know. I’m concerned the life cycle of AppStore applications might evolve such that, as applications age past their initial user base, the only new feature is an increased amount of advertising.

Where do we go from here?

Normally, I would say managing application updates is out of Apple’s control but their screening and approval process for new applications is so involved, perhaps they should exert some efforts to reviewing updates for existing applications. Whether or not they have the right to tell an application developer that their paid application is not allowed to have advertisements is up for debate, but something needs to be done to stem the tide of alarming application updates. For me, I would like a “Skip” button that lets me ignore updates for apps that I have identified as problematic, so I can mark it once and forget about it and/or a way to downgrade to older versions of an application. Ultimately, this is a quality control issue that Apple needs to address and in lieu of that, they should give iOS users a chance to take control of the issue.

Live Blogging with an iPad

iPad with Keyboard and Dock As regular readers know, Jeanne and I blogged heavily at TheServerSide Java Symposium 2011, writing over 30 articles in a three-day period. What we may not have had time to mention is that we both did so entirely from a pair of Apple iPads. Below is a summary of some of things I learned during my experience.

1. Set up and Blogging Software
For my blogging spree, I used an Apple iPad 2 with an Apple Wireless Keyboard. I started with the WordPress iPad application, but found it too frustrating to use. The local/remote saving of articles was problematic, as Jeanne explains, and the interface felt very last-minute and cheap. I had three options remaining for blogging: the WordPress web interface in Safari, word processing software such as Apple Pages, or a plain old text editor. Since Internet was unstable at the conference, the first solution was out. I also vetoed fancy word processing software, since in the end the articles would be copied as plain text to the web browser for publishing. I settled on a plain text editor and was pleasantly surprised that my document management app, GoodReader, doubled as a text editor.

2. GoodReader as a Live Blogging Software
I liked blogging in GoodReader right away because it presented me with a full-screen text editor and my documents were always saved locally. I wrote up dozens of articles in GoodReader and then pasted each article into the WordPress web browser editor for publishing, which only took a minute. The only downside of using GoodReader was in the creation and naming of new files. By default, new text files are saved as “New File.txt”. In order to change the name of an article, you have to exit out of writing, open the file management interface, select the file, rename it, close the file management interface, and re-open the file. I would have preferred a more direct approach, such as offering me the chance to name the file when I created it. Also, a spell-checker after I had finished typing would have been nice.

3. iPad + Keyboard
Prior to this conference, I had never used my iPad with a keyboard. After writing thousands of words with the wireless keyboard, I can honestly say I would never go back to touch-typing for blogging. With the keyboard, the iPad became much closer to a real laptop — or more accurately a netbook — but was much smaller, lighter, and lasted a lot longer on a single charge than my full-sized MacBook Pro.


  • Easy access to special characters such as @, #, $, often used in developer presentations. Also easy access to HTML brackets for writing HTML tags quickly.
  • Arrow keys for easy navigation, particularly on web-pages with missing scroll bars. Side note: Jeanne discovered you can use two fingers to scroll in HTML windows with missing scroll bars.
  • Command-Up and Command-Down worked as Home/End keys moving the cursor to the top/bottom of the window.
  • Special keys give instant access to control brightness to prevent people from viewing what I write if I wanted to check my mail.
  • I could type faster with fewer mistakes; tactile feedback means I don’t need to look at my hands while typing.
  • Shortcut keys! I never realized how much I relied on Copy/Paste/Cut/Select All while writing until they were taken away!
  • Shortcut to show/hide on-screen keyboard using the eject button.


  • Turn off AutoCorrect. On a keyboard mistakes are far less common and AutoCorrect often makes mistakes with technical words. Rejecting AutoCorrect suggestions interrupted typing and slowed it to a crawl since it required an on-screen click.
  • No Command-F for find, much needed feature.
  • Command-S for saving with the application. Had to touch the screen to save. This is more likely a limitation of the software than iOS, although it’s difficult know for sure.
  • The Apple Wireless Keyboard desperately needs an “Off” switch. I had a lot of issues on the final day with putting the iPad in my bag only to discover later that the battery had been drained by 10% when I wasn’t using it due to the keyboard waking up and activating.

I loved typing with an iPad, so long as a wireless keyboard was available. Contrasting this to JavaOne two years ago, where I had to go from presentation to presentation hunting power outlets because my MacBook could barely go half the day without power. I could honestly see taking it to business meetings and typing for hours on it. While there are still some additions I’d like to see to iOS, such as Command-F for find, the experience was quite enjoyable.

Live from TSS-JS – Mobile Development with Mark

Currently attending “Comparing, Contrasting, and Differentiating Between Mobile Platforms” by Mark Spritzler, a fellow CodeRanch moderator.  The presentation is in part an open discussion with the audience of what people have tried and works well in the Mobile environment.

1.  What is out there?

  • Android OS (Java)
  • Apple iOS for iPhone/iPod/iPad
  • Web applications with custom UI for mobile applications.  CodeRanch currently offers a mobile web version of the website
  • J2ME (not common)
  • BlackBerry (custom Java)
  • SymbianOS (C)

2.  Android OS Review
Built by Google and uses Java and can run Flash.  UI built with declarative UIs using XML primarily and supports visual tools such as Droid Draw and/or Interface Builder.  MVC-like architecture with view as XML, and control/model as Java classes.  The API is quite open so there’s a lot of ability to customize for developers.

There is currently a large variety of Android devices so splintering of the code base could be in the future.  Some devices cannot upgrade the Android OS, leading to permanent branching of code base.

Also, Android requires a lot of manual work to integrate with a database, such as SQL Lite, whereas Apple iOS has this built in.

3.  Apple iOS Review
Built by Apple and uses Objective-C, and cannot run Flash.  Developers must manage memory manually.  The API is completely proprietary and there are limit tools for developers.  For example, the developer must have a Mac and use an xCode.  Closed APIs but Apple promises stability (although it did change in iPad with split/view feature).

Dicussion on Apple’s strigent application approval process followed.  One participant commented that they waited 1-2 months for Apple to approve it.  Apple has also stopped approving ‘pointless’ apps.  I asked Mark if he thinks the delays are worth the improvement in quality, to which he replied that it does lead to better applications.  He also informed the audience that Apple wants you to use certain visual controls in particular manners to help build a consistent UI, and may reject applications based on improper usage.  Apple sometimes comments on why applications are rejected but not always.

4.  J2ME Failure Review
Idea was to develop using Java and runs on a variety of devices.  One of the major problems is Sun certified J2ME mobile phones that didn’t properly or fully implement the spec.  Also, lead to splintering of code base and very inconsistent results across devices.

5.  Native vs Web applications
Web applications have greater reach since they can run on many devices, but have weaker performance and require the developer to self-promote them.

6.  App Generating Frameworks
Build mobile applications from predefined templates using a CMS system often entered in a web browser, such as MobileRoadie, but it is a paid service.  Builder frameworks (often open source) that generate mobile applications based on existing code including Appcelector, Rhomobile, PhoneGap.

Write once and run on many devices through generation.  They may have limited functionality since they use a subset of features available in the language.  Multi-touch is also very limited in Android over iOS.  HTML5 does support location-aware so it can help in application generation.

Mark ended the presentation with an open discussion asking people to share their own mobile development experience.  He pointed out that there a lot of pros and cons to using different mobile platforms and mobile devices, and you should consider the resources on hand when deciding how to proceed in development.