January 28, 2013
I’ve always wanted to print a book, just to go through the exercise of picking out fonts, layout, and making a cover, but I didn't have enough content. I finally accumulated enough writings to print a small book. The title and format was inspired by (well, copied from) the book Tim O'Reilly in a Nutshell.
To make the contents of the book I went through all my writings and collected the ones I wanted to print. On the website they're all statically generated by a Python program from a giant XML file, so I modified the program to also generate a separate single giant HTML file for the book with the entries in the right order and in the various sections.
I used a program called Prince to generate the PDF. Prince is free if you're willing to show their icon on the first page, which I was fine with. Prince uses normal HTML and CSS and adds a few directives that are print-specific, like knowledge of left and right pages and construction of a table of contents. It's great. The final PDF is 215 pages long (the book is 6"×9").
For the cover I wrote a Java program that generates a PNG file.
The hardest part was the drawing of a picture of me. I started with a photo and wrote another Java program to make it look engraved. It's not nearly as nice as the engraving of Tim, which I assume was done by hand.
I printed the book using Lulu at $9 per book. I printed one as a test, which arrived in four days and looked great. I then ordered five more, which came misprinted: every left page was too low. I told Lulu and they printed five more, which were fine. I was surprised and a bit dismayed that I could get printing problems without changing the PDF. What if I had just shipped those directly to someone else?
Overall the process was pleasant and it's surprisingly nice to hold a physical book of your own.