Blog

Links

From CueCat Cues to QR codes

posted: March 4, 2023

tl;dr: Sometimes great ideas are brought to market well before the technology and ecosystem exist for them to succeed...

I have recently been working with Quick Response (QR) codes, and it got me thinking about a predecessor technology from more than 20 years ago: the CueCat, which was a perfect example of an idea being brought to market before the ecosystem was in place for it to succeed.

To understand why the CueCat was such a failure, it helps to understand what QR codes are, as that underpins their success. A QR code is nothing more than a way of displaying text. Usually when text is displayed, such as the text of this blog post you are reading now, it is done in a manner that makes it easy for humans to read. The word “cat” is displayed as three letters in sequence, “c”, “a”, and “t”, aligned in a row, grouped close to each other and separated from the preceding and following words by some whitespace. Displaying text in this manner is great for humans to read it, but less so for computers. Computers can read this kind of text through a process called “optical character recognition” (OCR), but it is error-prone. There are many different fonts that humans like to use, in which the same letter can appear quite differently. The text may be displayed on top of a background image that makes it hard to determine the exact boundaries of each letter. The text may not always be in a straight line. All these situations present challenges for a computer trying to read the text.

A QR code displays text in a manner that is easy for a computer to read but hard for a human to read. A QR code uses none of the letters or other symbols for representing text that are familiar to humans. Instead, all the characters are encoded into groups of black and white squares. The high contrast between black and white makes it easier for a computer to see the characters in poor lighting conditions. The QR code is itself a square, with some alignment squares appearing within it. This makes it easy for a computer to recognize it as a QR code, and for a computer to scan it, as the computer’s camera will typically be at an angle to the QR code. Even the square of the QR code itself conveys information: it says “here is some isolated text that I want you to read”.

A QR code, which is a square on a white background with dozens of smaller black squares within it, forming no obvious pattern except for some large squares in three of the four corners

My website

The text that appears in the QR code can be anything. Often, the QR code is a URL such as https://cjshaver.com. Smartphone makers such as Apple have built image processing software into their phones that can recognize a QR code when the camera is on and is aimed in the general vicinity of one. When the software reads the QR code and sees it is a URL, it pops up a small button that can be pressed to fire up the phone’s browser and go to the web page.

It’s a brilliant system because it is completely decentralized and voluntary, and because there is an ecosystem available to implement it. The QR code is governed by a spec that only needs to describe how to encode text into a QR code. QR codes can be generated by anyone; they do not need to be filed with or approved by a central authority. It is up to smartphone makers to decide whether and how to implement the software to recognize the QR codes which are URLs and open a browser tab. QR codes don’t have to be URLs, they can be used for all sorts of applications. There are now billions of smartphones on the planet; once the smartphone vendors have implemented their software, there’s a huge potential user base that can utilize QR codes without having to pay anything.

There is a downside: a bad actor can generate and display some QR codes in public that lead to a malicious website. A few people may point their smartphones at the QR codes and click through without realizing where they are going. This potential exists with human-readable text-based URLs as well, if the bad actor uses a URL that is chosen to look benign. The QR code just makes this hack a bit easier, since the human user cannot read the URL in the QR code. The phone can display it, however.

In stark contrast to all this QR code amazingness stands the CueCat, a predecessor technology from the dotcom bubble days more than twenty years ago. One of the fun things about getting old is seeing how technology evolves and why certain ideas fail. The CueCat was addressing the exact same primary application as the QR code: scan a machine-readable code and be taken to a website. But given the available technology of the time, it had to do so in a very different, and ultimately fatally flawed, way.

There weren’t billions of smartphones with cameras on the planet in the year 2000. So the CueCat required a dedicated device which was basically a corded optical mouse that plugged into a personal computer where the device’s software had to be installed. I had one of these devices: I believe mine was sent to me by Forbes Magazine, which wanted to kickstart the adoption of the technology (I also subscribed to WIRED at the time, which was also pushing it). Magazines that adopted the CueCat system would place the codes in ads, hoping to entice readers to scan the CueCat code with the reader device and be taken to an advertiser’s webpage to learn more about a product. The CueCat system was centralized: the CueCat code didn’t contain the URL, it was a number that had to be registered. There was lots of tracking and divulgence of personal information, to please the advertisers.

In retrospect it’s easy to see why CueCat failed: the ecosystem hadn’t yet evolved to the point where camera-based smartphones could obviate the need for the CueCat device. But how did it feel at the time? To me it felt like a hassle to use. I usually read magazines anywhere other than in front of my PC. My PC wasn’t always on. If I was reading a magazine and wanted to scan a CueCat, I’d have to go over to my PC, turn it on and boot it up, and then finally scan the code, all just to open a webpage. The reward wasn’t worth the hassle. There was a market need for something like the CueCat, but the ecosystem wasn’t ready yet.