We (my wife and I) have a lot of books, currently some 637…

$ sqlite3 biblio.db 'select count(*) from books' 
637

But we seem to loose books occasionally because we lend them to people and forget about it. So Linux (and Perl) to the rescue. I already own a bar code reader to read the ISBN number of books and then I use Google to give the author, genre, etc. (fully automated of course).

To keep track of what we lend to people I want to use a piece of paper (don’t know the right English term for this) to be put in the book. Every time we lend the book to someone we take out the paper and write the person’s name on it. Just as in a real library, but more manual.

So now I want to print labels for our books and I need some paper on which I can sticker these labels.

First things first. So I’ve bought a Dymo 400 label printer. Which believe it or not just works out of the box on Ubuntu Jaunty.

Where are the go’old days when this kind of stuff took weeks??!

What next

Plug the label printer in a USB port, apt-get install cupsys, go to localhost:631, configure the label writer. Enter your user name and password when it asks for it and you are done.

The only extra thing I needed to do was to configure it to always print in landscape:

$ lpoptions -o landscape

Printing the labels

Printing with lpr now works 100% correct. So now I just need to format it so that it looks nice.

So I wrote a small Perl utility that transforms this (which is the standard output of sqlite3)

662|9780000000205|The Computer Revolution|Nigel
Hawkes|computer|1971|1221413260|

to this

The Computer Revolution
   Nigel Hawkes

   COMPUTER

ISBN: 9-780000-000205   1971

Which just fits on the label.

Hopefully this will keep us from loosing any books from now on.