Push vs Pull: Two Approaches for Cell Phone Barcode Scanning

By Erik Hermansen, September 27, 2008

Push itSome weeks ago, I was sitting in a downtown Seattle Starbucks, sipping my icy mocha, and thinking about cell phones scanning barcodes.  And I actually heard voices talking about cell phones scanning barcodes.  Not because I was crazy, but because, coincidentally, there were two strangers at a nearby table chatting about it.

The "Push" Model

I wasn't trying to spy on them, and eventually moved so I could think in peace.  But I still couldn't help hearing what their project was about:

  1. You buy a sandwich from a certain well-known vendor.
  2. There's a barcode on the sandwich wrapper.  You scan it with your cell phone.
  3. Your phone shows a little promo web page about saving money and winning prizes when next you purchase from the company.

I've intentionally left out the name of the sandwich peddler because I don't want to get the two dudes in trouble for breaking NDA or something.

Although barcodes are always just passive data that something has to act upon, you can categorize the agents that act upon them as push- or pull-oriented.  The above situation involves the cellphone pushing information to you in response to you scanning the barcode.  Although you choose to scan the barcode, you do not choose which web page will be sent to you.  Whoever made the barcode--in this case, the sandwich vendor--encoded that decision into the barcode.

So that's the "push" model.  There's nothing universally bad about it, but it does have limitations.

The "Pull" Model

The "pull" model for barcode scanning retrieves some information from the barcode and then follows user-specified instructions to retrieve further information related to it.  An example of the "pull" model is Big in Japan's ShopSavvy application for Google Android.  Ironically, I think this baby is going to be much bigger in the United States than in Japan, but that's another story.  In a nutshell, here's how ShopSavvy works:

  1. You scan a product's UPC code.  It could even be a sandwich, I suppose, if it was the pre-packaged kind.
  2. A list of places offering the product are shown, complete with prices and reviews.

With the "pull" model, you are getting information about products from wherever you choose.  With the "push" model, you are getting whatever information about the product that the person selling it wants you to have.  You would never expect the vendor to tell you that you can get the same product across the street for five bucks less.

I don't think I have to argue very hard which of the two things is cooler.  If you were stranded on a desert island, and could only bring one piece of technology embodied in a cell phone, which would you bring?  Okay, obviously, I mean a desert island with at least two competing stores, electric power, cellular packet data networking, and a functioning currency system.

Did you say "pull"?  I knew you would.

1D Versus 2D

The barcodes scanned by ShopSavvy and other technology-assisted spending applications are the ones with which you're already familiar: vertical lines of varying widths arranged in 1 or 2 square inches.  This is the linear, or "1D" barcode.  The most common type of linear barcode, a UPC code, has the purpose of uniquely identifying a product.  It only expresses ten digits of information.  The first five digits identify a manufacturer.  The last five identify a product supplied by that manufacturer.

QRCodeWhen cell phones started coming with cameras, attention turned to a different kind of barcode that could hold much more information: the 2D barcode.  The idea was that you could put lots of things in that barcode that the phone would scan in: contact information, street addresses, or, perhaps most enticing of all, web URLs.  An encoded URL acts as a stepping stone to the real piece of information.  If you wanted a barcode to, by itself, deliver Tolstoy's War and Peace to a cell phone, you'd need a barcode about 8 square miles in size.  But thankfully, you can instead just encode a URL to the text that will be just a few square inches in size.  In fact, the one on the right does just that.

Some of the 2D barcodes in use address the current limitations of mobile devices.  It's pretty hard to buy a cell phone without a camera today, despite the fact that only about half of their owners even use them.  But the capabilities of these tacked-on cameras tend to fall far short of even low-end dedicated digital cameras.  The resolutions are lower, and the lenses can't focus on close-distance objects, like a barcode printed on packaging.

Try taking a picture of a UPC barcode with your pre-2009 cell phone, and you'll probably see what I mean.  Pretty blurry, eh?  If it's hard for you to distinguish individual lines in the image with your human eyes, it will be at least as hard for a machine to do the same.  However, if you encoded the same data in a QR-Code, (the most popular 2D code at time of writing) it gets much easier for the machine, because of built-in error correction and cues for interpreting the data.

Since 2D codes seem to work better for cell phones, why don't we just use them?

Well, we should use them, and we will.  But it would be really dumb to forget about the billions of products sitting on store shelves already marked with old-fashioned 1D barcodes.  These barcodes tell you, with a precious lack of ambiguity, exactly what the thing you have scanned is.

If these billions of products were instead marked up with 2D barcodes that provided the same unique identifier, that would be an even better situation, because the crummy cams on current mobile devices would have more success reading them.  However, 2D barcodes aren't planned to be used that way.  Instead, they're intended to push promotions and other vendor-supplied content at consumers.  If you want to benefit from the "pull" model, your phone has to read Ye Olde Barcode from the 1970's.

Cellphone 1D Scanning Moves Out of the Garage

I've been irritated over the last year because I felt too much attention was being paid by industry and press to cell-scanning 2D codes.  I kept hearing about how the Japanese were heavy into QR-Code, with 75% of their phones supporting it.  For me, saying something is popular in Japan is the second worst argument to make for it becoming popular anywhere else, since Japan goes into a craze over the weirdest techno-fads.  (The very worst argument, by the way, is to say that something is popular with Japanese schoolgirls.)

But now that the hype has worn off a little, 1D barcode scanning is getting the appreciation it deserves.  It looks like the killer app on the new Google Android-based G1 is going to be technology-assisted spending, i.e. ShopSavvy, CompareEverywhere, and others.  These days, when a tech reporter wants to write up Android Market or the G1 to sound extra cool, it seems they will trot out barcode scanning.  Maybe Google or HTC featured it in their press releases, and writers are picking it up that way--I'm not sure.

The iPhone, for all its other impressive features, doesn't have good hardware and O/S support for barcode scanning.  In comparison, the G1's 3-megapixel camera has a higher resolution for better scans.  And the Android O/S that runs on the G1 doesn't require a time-consuming storage of a scanned image before it can be processed.  Instead of waiting ten seconds to learn of a failed scan, you get virtually instant results like those shown in this video of the ZXing barcode scanner running on a G1.  Says ZXing Group's, Sean Owen, "This [barcode scanner] is good at being 'fast' rather than 'thorough'. For clear images, it works quite well, and is quite quick.  For blurry images, it does not do so well."  So while 1D barcode scanning on cell phones has been possible for some time, previous solutions needed to trade off speed to work with really bad images from ill-suited camera optics.

Pull is Good for (Almost) Everyone

Cell phones will start pulling information off the internet about products and companies.  And nobody will be able to control it except the people doing the pulling.  Who wins or loses when everybody gets the information they want to make spending decisions?

The consumer wins.  Obviously.  Dramatically.  How many bad decisions have you made with no greater input than a price tag, product packaging, and the advice of a 19-year-old wearing a tie and sneakers?  No more, my friend.  Head into those flourescent-lit aisles armed with knowledge.

The mobile manufacturers win, because technology-assisted spending is the killer app that will finally cut through feature apathy.  People are buying these sophisticated machines that they don't really understand, so they mainly just use them as phones.  Most people have figured out SMS and ring tones by now, but beyond that, the non-geeks don't care much about all the bells and whistles.  To make people truly interested in what mobile devices can do, a "gateway" feature with real-world value is needed.  Save money on your shopping bill--everybody gets that, so lead with it!

People who write TAS applications and services win.  A new market is opening up for that.

Vendors that distinguish themselves by the actual value of their products and services win.  Cut that marketing budget and reinvest in R&D!

The flip side is that vendors that can't compete based on the true value of their offerings will lose.  Imagine a world where a company that created a shoddy product couldn't succeed.  It wouldn't matter how much advertising you bought, how shiny the package was, or what false promises were made to would-be buyers.  If the thing sucked, people would quickly know to not buy it.

The other way a vendor could lose is by ignoring Google's "Don't Be Evil" motto.  If you dump pollutants into rivers, employ child labor, or rig elections, people are going to learn this about five seconds after they cellscan your product on a store shelf.

So evil loses.  I can live with that!

-Erik