A week and a bit of excited waiting and I just got my first book back from Blurb. Thought I would write and tell you about my experiences. My first impression of the book is very impressive, as good as I could have hoped. There is only one minor thing that disappointed me which is the fabric cover has no markings on it, I was hopping that the spine would have the book name. In general the colour of the images was spot on with nice rich colours and dark blacks. A few of the images were slightly dark which is probably down to me using a laptop with uncalibrated screen on top brightness. I have just uploaded a modified edition with those few images lightened and a few design changes. So the next few that I order should come out perfect.


So the question is how did my experiences with BookSmart fare. I am going to split this into two, the experiences as a user and designer and my technical impressions.

User Experience

I like BookSmart a lot to use, it is very intuitive and simple to use. there is one thing I found challenging that could be improved. After importing an image into an image box I was zooming and panning it to set the crop. It is hard to get fine adjustment of this and as a result I got small cracks though the background between a few images. On some pages these show up when zoomed out and some they only showed up when I zoomed in. There are two things that could really improve this problem: adding support for moving an image small amounts with the arrow keys and adding some indication symbol when there is a small gap between the image and the frame.

The other thing is I would have liked more creative control. I know it is a hard balance between making the application simple for consumers and powerful enough to keep the power users happy. There is not much of extra functionality I would like: choice of custom colors for background color. The big one is more flexibility with layouts, either though custom layouts or just a few more layouts. The main issue was the majority of the photos I had to put in were 4:3 or 3:2 aspect ratios and I didn’t want to crop them much. There are not many layout that suit images of either of these aspect ratios.

I liked they way that you can upload the book and go online later to buy them, which meant that I can easily leave it uploading overnight as it takes over an hour. It would be nice if I could create a PDF of the book directly without any watermarks. I have printed a version to PDF with Apples PDF support but it has proof watermarks which is a shame although at least they are subtle.


Technical Experience

I have long been saying that it is possible to build high class desktop applications with Java and Swing even in challenging areas like images, DTP and video. Generally the performance was very good though I am running it on a MacBook Pro with 2GB RAM. So getting good performance is quite a challenge as I have about 5Gb of photos in my book and most are 14Mpix which take 48.5Mb memory in Java as a IntRGB. So with a double spread with 4 images per page means processing 400Mb of images. All the main functionality of importing images, going page to page and zooming are all very snappy. Unfortunately it does not stay snappy, after a hour of working on the book adding pages and images it gets slower and slower. It is easily fixed by closing and reopening BookSmart and then it is fast again.

One technical thing that lets the user experience down is progress indication. When printing and exporting it can take 10s of minutes, during most of this time there is not much progress indication. If I had not looked at the CPU usage I would have killed it.

Swing Tip: Writing good progress indication is a challenging part of any GUI application. In Swing there is a handy class ProgressMonitor that helps with the UI side of progress indication. All you have to do is provide it with progress updates from 0-100%, it will show progress dialog if the task takes longer than a set mount of time. It is sometimes helpful to write simple InputStream or OutputStream that wraps another and keeps a count of the bytes that pass through. That can help in the hard part of progress indication which is getting good data to say how far through the task you are.


Overall BookSmart is a very well done application that would be impressive if it was native or Java. Though I have listed a few issues I had here it is still totally usable and amazingly polished for a beta version. I will be continuing to recommend that people checkout BookSmart as it a very impressive Swing application and I hope it will inspire more amazing Java Swing applications.

The quality of the book is very impressive and I am sure you wont be disappointed. I can’t wait to have enough free time to put together a book of my favorite photos I have taken over the last few years.