Barcodes are the all-important middlemen of the modern retail experience, yet they remain almost completely invisible to consumers. Of course, the moment the flow breaks down and the code becomes unscannable, both purchaser and cashier quickly decide the whole thing is annoying and obsolete.
Nevertheless, barcodes are invaluable for passing around information. Although we usually associate them with products, they can actually encode any kind of information. Naturally enough, the more information you want to encode, the more dense the code graphic has to be, and the more you have to start worrying about the potential for slow and/or incorrect scanning. Most barcodes are the one-dimensional type you see on products and ISBNs, whose implementation dates back to 1949; they are widely supported but also prone to error. QR (“Quick Response”) codes, created in 1994, are much more robust – they include error-correction (so you can smudge or obscure the code and it will still work), and are designed to be scanned very quickly.
Ruby users are fortunate to have several open-source options for generating QR codes.