Digital Semaphore: the 2D Tag

unicorn_qr_chaser.png

I'm a 2D tag freak. These squares of dots and rectangles seem as exotic as hieroglyphics, even though they're as mundane as yesterday's junk mail. A 2D tag (sometimes called a 2D barcode, even though there aren't any bars) uses all two glorious dimensions to encode data. This provides a much denser blob of information. A 1D barcode might incorporate just a few digits; a 2D code occupying the same space, dozens to hundreds of characters. The most common format is QR Code, although there are several others. And the most common text to be encoded is a URL. (QR Code is patented and has other protections, but creator Denso-Wave has foresworn enforcement.)

Made popular early in the oughties in Japan, where handset makers, advertisers, and telecom firms collaborated to build an end-to-end QR Code ecosystem, we're just now starting to see widespread appearances of codes in the United States and Europe. There have been plenty of pilot projects, but it's clear that casual use in media, ads, billboards, and kiosks is growing. Planet Money, the NPR podcast, mentioned a few days ago that the designer T-shirt project the show's staff is developing will be superhot because they'll put a QR Code on the front (listen at mark 18:18).

QR Codes have no particular scale, either: they are limited in interpretation by the resolution and clarity of the camera taking the picture, although you can encode with extra error correction to cope with poor cameras. 2D tags are actually more easily interpreted by phone cameras than 1D barcodes, which were designed to work with lasers. Diffraction sometimes combined with the low resolution on a fixed-focus lens makes it impossible at the necessary focal distance to measure correctly all of the gaps and lines in a 1D barcode. 2D codes are designed to work with cameras, and take diffraction into account.

I like QR Codes because they are this weird amalgam of analog and digital. They're like a universal a-to-d converter, whether the analog part is a page in a magazine, an image on a monitor, or a ginormous tag on a billboard hundreds of feet away. It's like semaphore for the digital age.

I use QR Codes when I want to arc the gap between one medium and another. For instance, I'm reading an article in a Web browser on my desktop computer, and want to continue reading it on my phone. I could copy the URL, switch to my email program, create a new message to myself, paste it in, launch my phone's mail program, retrieve email, open the message, and click. Or I could pop up a QR Code on my desktop, tap a couple times to bring up a 2D code reader on my phone, and tap to open the URL. It seems more efficient, but perhaps that's just me.

Mainstream media and advertising seems to have finally decided the time is ripe, although when you see a QR Code in print, there's typically an explanation alongside it. People might otherwise wonder, is Proctor & Gamble trying to give me a Rorschach? I see a bunny! For advertisers and media alike, QR Codes provide precise source tracking: an ad with a custom QR Code in a bus station in Pittsburgh, or a run of 10,000 copies of a magazine regionally distributed in California. QR Codes can be inkjet printed just like custom ad copy is now in some publications; you could be tracked as an individual if you have a magazine or newspaper subscription, if it were worth it to the advertiser.

The less sinister part is that software is readily available for cheap or free for stupid and smartphones alike. Google incorporated QR Codes directly into the Android Market by using and encouraging the use of 2D tags to link to apps. On the iPhone, I prefer QuickMark 4 (99 cents), which can also generate QR Codes. There are plenty of others, including eBay's RedLaser, which is designed for product comparisons, but can also read 1D barcodes and QR Codes. ScanBuy has its own code system, but also supports QR Code in its software, which is available nearly every smartphone platform and a number of Sprint feature phones.

The one problem I've had with QR Codes is generating them. On a couple of Web sites which I run or develop for, I was using a quirky perl library that hasn't been updated in years, and for which the licensing and provenance were murky. The fine folks at Kaywa offer an online QR Code maker, but the company asks it be used for noncommercial purposes, and it's a round-trip to another Web site if you're just trying to grab an URL.

A few days ago, however, my friend Lex Friedman–co-author of the Snuggie Sutra–and I were talking about creating a Safari extension, as he has a few under his belt. He found that Google's charts site (Chart API) lets you send parameters in a URL for a QR Code that Google returns in real time as an image. You can programmatically incorporate such URLs to have them generated for yourself or users. (Google doesn't limit chart API calls, but asks you contact them for quantities over 250,000 per day.)

javascript_sniplet.pngLex turned this into a nifty bookmarklet that worked across all the browsers we tested to pop up a QR Code of the current page's URL. Copy the code from the text below or snap a picture of the code at right, then create a new bookmark, pasting in the code into the location field. Stick that in your bookmark bar, and you can make codes with a click.

javascript:void(window.open('http://chart.apis.google.com/chart?cht=qr&chs=150x150&chl='+encodeURIComponent(top.location.href)+'&chld=H|0','qr','width=155,height=155'));

I don't think QR Codes are revolutionary–they're 15 years old, for cripes' sake–but they are useful at avoiding retyping material to move from one place to another. With Google's Chart API, even the tiniest Web site could add their use at no cost. We might be ready to catch up with Japan ten years ago.