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.

GWT: Bounded TextField in GXT

This article provides a solution for creating a TextField with bounded user input in Sencha GXT (aka Ext GWT), for use in GWT applications.

The Problem

Recently, I was looking for a way to limit the amount of text a user could enter on an HTML form within a GXT application – for example, limiting a zip code input field to five characters. I wanted something that functions identically to the maxlength attribute found in HTML <input type=”text”> fields. While GXT does offer a maxlength attribute within a TextField object, it does not function as one might expect. Instead of limiting the number of characters the user could enter, it interacts with the validation process and displays a validation error (such as highlighting the TextField in red) after the fact if a user entered too many characters.

The Solution

I discovered a post on the Sencha support forum that shows how to create a subclass of TextField with the expected functionality, ie, to limit the number of characters the user can type to be the maxlength attribute. Since I believe such a class is desirable throughout my application, I generalized the original anonymous inner class solution to be a regular Java class.

Simply add the following class to your application and replace all your instances of TextField with BoundedTextField and the maxlength attribute will function as a text limiter. I hope Sencha will eventually include support for this form of maxlength functionality within the API. Thanks to Sven at Sencha for providing the original solution.

package net.selikoff.gxt.ui.widget;

import com.extjs.gxt.ui.client.widget.form.TextField;
import com.google.gwt.user.client.Element;

/**
 * Class works like TextField class but Max Length specifies the maximum
 * amount user can type, instead of being used as limit for validation.
 * 
 * @author Scott Selikoff
 */
public class BoundedTextField<D> extends TextField<D> {
	@Override
	public void setMaxLength(int m) {
		super.setMaxLength(m);
		if (rendered) {
			getInputEl().setElementAttribute("maxLength", m);
		}
	}

	@Override
	protected void onRender(Element target, int index) {
		super.onRender(target, index);
		getInputEl().setElementAttribute("maxLength", getMaxLength());
	}
}

Nintendo 4DS Announced

Nintendo 4DS Following the successful launch of the Nintendo 3DS last week, Nintendo fans got a treat when it was revealed this Friday morning that the next version of the hand-held portable would be called the “Nintendo 4DS”, and support what game industry experts call “time-altering software”.

The Infinite Generation Portable

One of the lead developers was quoted in an interview as saying “After pioneering motion-based controllers and releasing the first 3D device that doesn’t require goofy glasses, we figured space-time vortex manipulation was the obvious next step. At Nintendo, we don’t just think of our products as ‘gaming devices,’ but as devices that let you alter the fabric of space and time itself”.

President and CEO of Nintendo of America Reginald “Reggie” Fils-Aime was also quoted as saying “Cha-ching!”.

Time Travel
Nintendo software engineer Hubert Farnsworth said that the device uses patented time-extending and compressing software, based on the same technology that makes standardized tests seem to last forever.

“Once we realized it was possible to warp time through the mere application of algebra and geometry, it was a simple leap to designing a working time-warping chip (TWC),” Farnsworth said. “I can’t imagine any problems with putting this technology in the hands of children.”

Nintendo had no comment on rumors that 11th Century Chinese Emperor Shigeru Miyamoto, whose name is the same as the famed creator of Mario and The Legend of Zelda, was actually a time traveler from the future who used his collection of innovative platformers and game mechanics to conquer the country in less than 2 years.

What do you think? Will Nintendo’s ability to make you your own grandfather pay off or will it be crushed by Sony’s PSP2, which supports a revolutionary (for Sony) touchpad.

Future Release Date

Nintendo also announced they will have the device finished in a couple hundred years. Despite this production delay, Nintendo promises they will then use the completed Nintendo 4DS to travel back in time so that the device will be available by the holidays. Price is expected to be around 50 trillion dollars, and comes with a 2GB memory card, RAR (really-augmented-reality) cards, and a plutonium charging station.