A webcam barcode reader