Blogger

Print Your Own Book

My dad has (over the years) written several poems and short stories, and I thought it'd be a nice idea to get them bound into a book. A quick survey of book publishing options gave me the following.

Low cost, mini-mass production -- www.scaruffi.com
Summary of self-publishing options -- mashable.com
Lulu (books, media, storefront) -- www.lulu.com
Blurb (has booksmart) -- www.blurb.com
Xlibris (for serious authors) -- www.xlibris.com
Photo Books -- www.apple.com
Discussion on Self Publishing -- www.fonerbooks.com
Semi-useful blog about how to use Lulu -- www.makeuseof.com
Cafe Press (low cost) -- www.cafepress.ca

My requirement was to print (not for resale) ~4 books of ~30 pages with flexible layout options using roughly the standard novel paper size and with the ability to embed illustrations. After reading the above, I decided it was a draw between the following two options:

LuLu: Perfect Bound, 32 pages, Softcover, 5.83in x 8.26in, $5.14 USD/book.
Blurb: Perfect Bound, 32 pages, Softcover, 5in x 8in, ~$5/book.

I'd previously heard of Blurb's booksmart software, and Lulu looks like its niche is more for helping you re-sell your final product, so I went with Blurb.

Big mistake.

In the end I was able to produce what I wanted, but the path was full of pain and misery. If I ever try something like this again, it'll be with Lulu.

In the booksmart software, there are three modes: preview, edit and layout. The preview mode (presumably) shows you exactly what your final product will look like. This is a nice feature and is pretty much the only thing I appreciated about booksmart.


Edit mode is where you add your text. It has a zoom feature but as soon as you move your cursor from one editable area to another, it reverts to the default zoom, making the zoom feature frustrating and effectively useless. Another pisser is the restriction on window size (in all modes). They have scroll bars, but for whatever reason, you're not allowed to resize the window much smaller than full-screen -- again, useless.

There are two types of text areas: fixed size and flowing. Fixed size means that if your text fills more space than the available area then it just disappears past the bottom. This isn't very useful for anything other than captions. Flowing means that when text goes past the bottom of the page, a new page is started and the text appears there -- not a break-through technology, that's how every other word processor functions. But here's the coup de grâce: if you have text flowing from page 5 to 6 and you later add text to page 5 or change font size or do anything to effect where in your text the page-break occurs then:
1. extra line-breaks are arbitrarily inserted
2. characters from you text are arbitrarily deleted.

Insane. Unbelievable. Garbage. Just to be totally clear: you add a paragraph on page 3 and text is deleted from every following page. That's totally unacceptable.


When you're in layout mode it looks like the following. Because of the "arbitrarily delete your text" bug described above, I ended up making my own layouts (one for left pages, on for right pages). And because I didn't like the dimensions of their header, I added my own. These choices made production of the book very tedious, because I had to copy (and align) my header text for every page, and I had to decide before-hand the layout of all my page text because I had to use fixed size containers and text couldn't flow from page to page. So if you're editing page 20 and you change your mind about page 3 you basically have to redo pages 3 to 20 if the page 3 changes at all effect page 4.


Finally, it has an automatic save-as-you-go feature, which I normally appreciate. But since the interfaces and controls were so horribly non-intuitive and buggy, it was difficult to know the effect (sometimes sweeping) of your actions and how to reverse them. They do offer the ability to archive the current state of your book, which I used often as a means to recover from the devastating effects of their frequent bugs.

In the end, I managed to cobble together an acceptable product and placed an order for four copies on Dec. 22nd 2009. They arrived about 30 days later, and my dad was delighted.

My advice: do publish books; don't use blurb.


Clearcase Cheat Sheet

• write a new config spec with private branch (by hand)
• this doesn't work unless the "branch type" already exists (see below)

element * CHECKEDOUT
element * ...\my_private_branch\LATEST
mkbranch my_private_branch
element * \main\LATEST
element * \main\0

• windows example of creating the "branch type"
• you might have to do this on all vobs from which you plan to checkout
cd /d "X:/my_vob"
cleartool mkbrtype –nc my_private_branch

• here's where the help files are on my computer
file:///C:/Program%20Files/Rational/ClearCase/doc/help/cc_ref/ct_rmname.htm

• to remove a file from a view (it still exists in clearcase) you use the rmname command
• the folder must already be checked out
cleartool rmname myfile.cxx

• to move a file from one place to another, you use the mv command
cleartool mv myfile.cxx somewhere\myfile.cxx

• to add a new file to source control, you use the mkelem command
• here's an example in unix
cd /vobs/myvob/myfolder
cleartool checkout -unr -nc mysubfolder
cd mysubfolder
cleartool mkelem myexistingfile.cxx
.
cleartool checkin myexistingfile.cxx
<your comments here>
.
cd ../
cleartool checkin mysubfolder
.

• to see the difference between two versions of a certain file
cleardiff \myvob\myfolder\myfile.cxx@@\main\mybranch\2 \myvob\myfolder\myfile.cxx@@\main\anotherbranch\3

• to get/set permission info for a file in clearcase
Z:\myvob\myfolder>cleartool describe -long myfile.exe

version "myfile.exe@@\main\1"
created 2009-03-30T13:45:41-04 by Michael Holtstrom (myname.mygroup@mymachine)
"checkin comments"
Element Protection:
User : DOMAIN\myname : r--
Group: DOMAIN\mygroup : r--
Other: : r--
element type: compressed_file
predecessor version: \main\0
Attributes:

Z:\myvob\myfolder>cleartool protect -chmod 755 myfile.exe

• to get help
cleartool man

• for a given view, what are the versions of a certain set of files
Z:\myvob\myfolder>cleartool find . -nr -type f -name sk*.h -cvi -print

. All elements in and below the current directory [Z:\myvob\myfolder]
-nr Don't recurse. Only look at elements within this directory.
-type f Only look at elements that are of type file (i.e. not directories, not symlinks)
-name sk*.h Only look at files whose names start with 'sk' and end with '.h'
-cvi Display the version that is currently selected by this view.
-print Print the result-set to screen

• same as above but the search location is explicitly specified
Z:\>cleartool find "Z:\myvob\myfolder" -nr -type f -name sk*.h -cvi -print

• for a set of files, find those that are on a certain branch and report the version selected by this view
Z:\myvob\myfolder>cleartool find . -nr -type f -name sk*.h -branch "brtype(mybranch)" -cvi -print

-branch "brtype(mybranch)" == First eliminate all versions of selected elements that *aren't* on branch 'mybranch'
-cvi == Then from the remainder, only keep the versions that are currently selected by this view.

See above for meaning of [ . -nr -type f -name sk*.h -print ]

• for a set of files, find those that aren't on a certain branch and report the version selected by this view
Z:\myvob\myfolder>cleartool find . -nr -type f -name sk*.h -branch "!brtype(main)" -cvi -print

-branch "!brtype(main)" == First eliminate all versions of selected elements that *are* on branch 'main'
-cvi == Then from the remainder, only keep the versions that are currently selected by this view.

See above for meaning of [ . -nr -type f -name sk*.h -print ]

• find all files of a certain type in a certain location
Z:\>cleartool find "Z:\myvob\myfolder" "Z:\myvob\another" -nr -type f -name *.h -cvi -print

"Z:\myvob\myfolder" "Z:\myvob\another" == All elements in and below these directories [Z:\myvob\myfolder], [Z:\myvob\another]
-name *.h == Only look at files whose names end with '.h'

See above for meaning of [ -nr -type f -cvi -print ]

• find all files from a set of types/extensions in a certain location
Z:\>cleartool find "Z:\myvob\myfolder" "Z:\myvob\another" -nr -type f -name *.[tch]* -cvi -print

-name *.[tch]* == Only look at files whose names contain '.t' or '.c' or '.h' (i.e. '.txt', '.cpp', '.cxx', '.c', '.h')

See above for meaning of [ "Z:\myvob\myfolder" "Z:\myvob\another" -nr -type f -cvi -print ]


How To Use Picasa

You'd think that a Google product wouldn't need instructions, but Picasa seems to be the exception. Have a look at the help fourms and you'll find a lot of angry customers. So, having wasted many hours messing with Picasa, I've decided to put together a list of tips to help others and probably also myself in the future.

It's been my experience that when you let software like iTunes or Picasa manage your files, they do a bad job. So I don't let Picasa watch my folders and I archive all my images (and music) to an external drive (which is most of the time read-only). I use a date-by-alphabetic folder structure as shown below.

Organizing by year and prefixing by numbers as you add sets of images lets you [ View > Folder View > Sort By Name ] and still have your sets of images sorted by date. This is valueable if you have many old images or scans that don't have correct "date picture taken" tags embedded in the picture files.

I would love to find a piece of software that given a folder will open all images, sorted by name alphabetically and embed date/time information sequentially, starting at a given date/time. But this folder structure lets me live without it.

I add files to Picasa via the following procedure.

[1] - Organize new images into a date-by-alphabetic folder structure and move them to the Picasa folder on the external drive.

[2] - Open Picasa [ Tools > Folder Manager ]. Only the Picasa folder structure should be marked "Scan Once" (the check mark). Everything else should be marked "Remove From Picasa" (the red x).

[3] - Select the root folder (in my case "images") and select "Remove From Picasa" then select "Scan Once" then click OK. That procedure seems counter-intuitive, but it has the effect of asking Picasa to re-scan your folder structure and pickup the new images you just added.

Having done this much, Picasa can serve as a handy tool to view your archived images. But you probably want to organize images into groups based on people and occasions. Albums are a handy tool for this. They are basically playlists of images. The fact is that you I take more photos then are worth looking at, but with cheap storage there's no reason to delete anything unless it's truely hideous. Before adding files to Picasa, I go though them, delete any that are awful and rotate the sideways images (see below for why to not let Picasa do your edits). Having added a new folder to Picasa, you can [ right-click > Select All Pictures ] and then use the blue icon near the bottom left of the screen to create a new Album.

Having created a new album of all the new images from your folder, you can then select the album, double-click the first image, and remove images from the album with the delete key. This just delets them from your album, not your disk and is a fast way trim down the number of files so that your friends and famaily won't have to suffer through too many pictures.

Warning: I've read that if you open Picasa while your external hard-drive is unplugged then all your albums will be toast. Protect yourself against this and other disasters by backing up the album PAL files. Your Picasa has a name. Mine is named b8ebd58cc0bbd85077b3521f7a54046a, and all my albums live in that folder. Each album has a name and lives in a file. For example: 1c6f0c62952b69bd4ddbc981aaa63b92.pal


Here's how to manually create an album.

[1] - In Picasa, select an image then add it to a new album, such that you've created an album with just that image.
[2] - Close Picasa.
[3] - Go to your albums folder (mine is b8ebd58cc0bbd85077b3521f7a54046a) and find the smallest PAL file. This is your new album. Open it in wordpad. Mine is named 696fd5f8756a6af8d395d4c24cd68841.pal and looks like this:
<picasa2album>
<DBID>b8ebd58cc0bbd85077b3521f7a54046a</DBID>
<AlbumID>696fd5f8756a6af8d395d4c24cd68841</AlbumID>
<property name="unread" type="flag" value="0"/>
<property name="uid" type="string" value="696fd5f8756a6af8d395d4c24cd68841"/>
<property name="token" type="string" value="]album:696fd5f8756a6af8d395d4c24cd68841"/>
<property name="name" type="string" value="My Custom Album"/>
<property name="date" type="real64" value="40138.893333"/>
<property name="category" type="num" value="0"/>
<files>
<filename>[Z]\images\photos\2009\03 - Fish &amp; Chips\001.jpg</filename>
</files>
</picasa2album>
Now it would be great if Picasa let you work with these files, but instead it actively fights against you. Anything you do to this file will be wiped out next time you start Picasa. This is because Picasa really keeps its info in [ ...\Local Settings\Application Data\Google\Picasa2\db3 ] and notices that you've tampered with the pal file and undoes your changes. You can rebuild your database from pal files but that is a bad idea. It takes forever, it's spooky, and it breaks the link between albums and web-albums.

Here's what you can do.

[4] - Re-name the new album to an unused value. For example, increment the number by one: [ 696fd5f8756a6af8d395d4c24cd68842.pal ]. I think that any 32 digit hex value not currently used in your albums folder is okay to use.

[5] - In the file, set dbid to null and the three instances of the albumid to the new value and enter any file list you want. An example follows. Notice that the drive (in my case Z) is denoted by "[Z]" instead of the usual "Z:". Further note that the "&" character must be escaped as "&amp;".
<picasa2album>
<DBID>null</DBID>
<AlbumID>696fd5f8756a6af8d395d4c24cd68842</AlbumID>
<property name="unread" type="flag" value="0"/>
<property name="uid" type="string" value="696fd5f8756a6af8d395d4c24cd68842"/>
<property name="token" type="string" value="]album:696fd5f8756a6af8d395d4c24cd68842"/>
<property name="name" type="string" value="My Custom Album"/>
<property name="date" type="real64" value="40138.893333"/>
<property name="category" type="num" value="0"/>
<files>
<filename>[Z]\images\photos\2009\03 - Fish &amp; Chips\001.jpg</filename>
<filename>[Z]\images\photos\2009\03 - Fish &amp; Chips\002.jpg</filename>
<filename>[Z]\images\photos\2009\03 - Fish &amp; Chips\003.jpg</filename>
</files>
</picasa2album>
So this album is actually specifying the following three files:

Z:\images\photos\2009\03 - Fish & Chips\001.jpg
Z:\images\photos\2009\03 - Fish & Chips\002.jpg
Z:\images\photos\2009\03 - Fish & Chips\003.jpg

If any path in the file list is invalid, then that file and all files after it will be dropped from the album.

[6] - Restart Picasa. It will add your album to it's database, and you're good to go. Note that I've heard that setting dbid to null doesn't work for some people. It worked for me. I used Picasa Version 3.1.0 (Build 71.43, 0) on WinXP.

Okay, that's it. You've now made your custom album. Why bother? Well, like me you could have spent an hour going through tonnes of photos and recording their paths via [ right-click > Copy Full Path ] because you just wanted to export them and it was easier than [ right-click > Add To Album ], but then you decide, hey I do want these in an album after all.

Or you could be like the many people I read about who started Picasa while their drive was unplugged or whose Picasa just crashed and ate their albums, or whose Picasa killed a bunch of their albums during upgrade. Using the above you can recreate albums from old PAL files and recover from these situations. That's an aweful lot of greif to go to, but it seems that Picasa doesn't measure up to Google's usual standard of "don't worry about it, it's easy and it just works". From my experience it's more like microsoft's standard of "wow this is stupid", but I still prefer Picasa to the alternatives I've seen.

Backup

Having read the above, and knowing that your edits and stuff like that are stored in hidden [ Picasa.ini ] files alongside your images, there's only two things you need for a full backup.

[1] - Your folder structure. In my case: "Z:\images\".
[2] - Your PAL files. In my case "C:\Documents and Settings\Obadiah\Local Settings\Application Data\Google\Picasa2Albums\b8ebd58cc0bbd85077b3521f7a54046a".

You can use picasa's built in backup, or you can just copy these locations yourself or you can use some 3rd party package. But be warned, Picasa's restore sucks. All the backup does is copy files from your disk to your backup location and all restore does is copy them back. So if you restore some PAL files and your current db3 already has an entry for them, then it'll just nuke your restored album and use the old "presumeabley broken" one. And if it doesn't have an entry for your pal file, it'll just nuke it (although if you use the procedure above you can restore old albums as custom new albums).

Furthermore, if the location of your files ever changes, all your albums will be broken. Say for example that you bought a new computer and you tried to move Picasa there but the file paths weren't identical. Then you'd have to manually edit all your PAL files and use the above procedure to add them as custom albums. That's one of the reasons I have my data on an external drive. You can tell WinXP that it should always be mounted as Z: or whatever, so you're guaranteed to have the same folder structure wherever you go.

Web Albums

For me, the biggest draw of Picasa is the web albums. For $20/year you get 80GB of online storage. That's not bad. Plus the web album interface itself is pretty decent. It still has a lot of room for improvement in my opinion, but its certainly better than anything I've written myself.

So, just click on an album and near the top right of the screen, tell it to "Sync to Web". Sounds simple, but there are plenty of gotchas.

With all that online storage, you'll want to upload full quality images. This is controlled via [ Tools > Options > Web Albums ]. Obviously you need to select "Original size (slowest upload)". What exactly is meant by "Use 1600 pixel size when sharing" isn't clear to me but from my reading you probably want that unchecked.

All good? Fat chance. There's a huge entry on the Picasa forum about attempts to upload at original size. There was a bug, fixed in Picasa 3.1, version 71.36 that just always degraded your image quality. There is still a "feature" that degrades your image quality for all images that have edits. They propose a work-around, but it would be so labour intensive, that I'll just stop using picasa to do edits and live with the bad quality for my existing edits.

On top of all that, even if you do get the full quality image up there (verifiable via [ Download > Download Photo ], near the top left of the Picasa webpage), there's no online interface to view photos at full quality.

Once you've got a bunch of albums online, you'll probably feel cramped by the fact that they're all listed on one page, either by name or by date. Sort by date is nice for event based albums like "Halloween" or "Trip to Costa Rica". But for subject based albums like "Photos Of Ottawa" an album date doesn't make sense (i.e. when the contents span several years). I've worked around this by choosing to sort by date and assigning false dates far in the past to subject based albums. The result is that my event based albums are listed first and my subject based albums are listed second and alphabetically (via careful choice of fake dates).

Which brings us to another surprise limitation. From the online help it really does sound like changes to album description, date and location on your local computer will be reflected in online synced albums. That just doesn't happen. So choose these wisely before syncing to web. Thereafter you'll have to make changes locally and then make them again on the web. And the web interface is slower and more tedious.

If you're interested. You can see my pictures here or here.

 |  Tribal Worker  |  Terms  |  Aggressive Software  |  Feedback  |