QR Codes on the Command Line
I recently got a new Android phone and found that QR codes were a cool, quick way to transfer URLs and text. There were a couple cases where I found it useful to automatically generate the QR code and display it on my laptop screen for me to scan with my phone.
Instead of generating the codes as a png with an existing program and opening them in my image viewer, I figured I'd hack together a quick ruby script to do the job. Here's the result.

It encodes either its first argument or standard input to a QR code and prints that directly to the terminal with a small white border. I've found that the ZXing scanner program has a very easy time reading this. It automatically choses the smallest size of code which can fit the input, and has the lowest setting for error recovery.
Here's the script:
#!/usr/bin/env ruby
require 'rubygems'
require 'rqrcode'
LEVEL = 'l'
BLACK = "\e[40m"
WHITE = "\e[107m"
DEFAULT = "\e[49m"
SPACER = " "
text = ARGV[0] || STDIN.read
# make a qr code of the smallest possible size
qr = nil
(1..10).each do |size|
qr = RQRCode::QRCode.new(text, :level => LEVEL, :size => size) rescue next
break
end
width = qr.modules.length
puts WHITE + SPACER * (width + 2) + BLACK
width.times do |x|
print WHITE + SPACER
width.times do |y|
print (qr.is_dark(x,y) ? BLACK : WHITE ) + SPACER
end
puts WHITE + SPACER + DEFAULT
end
puts WHITE + SPACER * (width + 2) + BLACK
This requires the rqrcode gem and a terminal supporting ANSI color escape sequences (which is pretty much everything).