Assuming you've left your house in the past few years, you've probably seen a QR code. QR codes ( quick response codes) can be thought of as two-dimensional barcodes, which consequently can store much more information than the typical barcode you see in your grocery store, which can usually only store a single number. These codes originated in the auto industry, where individual parts would be labeled with these codes, which was necessary due to the sheer number of components that needed tracking. More recently, QR codes have become popular ways of exchanging web links, because they do not require a user to copy down an address exactly, but instead, the code can be read from a photo taken by a mobile phone, making exchange much faster. Here's an example of a QR code placed in an advertisement, so that viewers can easily access more information:
Japan is a hotbed for QR innovations -- QR codes originated there in the nineties at a company called Denso-Wave, which is a subsidiary of Toyota. There is even a Japanese company called designQR which creates designer QR codes that contain various images and texts within the pixels, adding a touch of personality to the rather bland grids of black and white.
How is this possible? In spite of the fact that a number of pixels in this code are incorrect, leading to errors in decoding, the code still points to the appropriate location, in this case a page on the d-qr website. This is possible due to the inclusion of error-correcting codes in the algorithm to encode values into the code -- meaning that there is redundant information included that can be used to rebuild an entire code even if a component is missing. This was incorporated into the specification in order to help scanning in the real world, where image quality is sometimes lacking, but can be taken advantage of for manipulating the codes for aesthetic purposes.
Inspired by this, I went ahead and wrote a Java program that would create these kinds of codes, using the really handy ZXing (Zebra Crossing) java library. Although my images aren't as pretty as the d-qr ones, they still work, making it possible to create enticing QR codes automatically.
Then I also became interested in creating reflexive QR codes -- QR codes that encode themselves. It's better to just show an example of this:
Here, I am using a font that I made, FATLETTER, together with the QR code algorithm, to encode the name of this blog, both in the QR code itself as well as in the actual letters that make up the code itself. As you can see, QR codes are not only a great way to pass along information, but can be a creative tool in and of themselves!