Archive for the 'Photography' Category

My first book with Blurb and BookSmart

Monday, April 9th, 2007

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.

BookCover

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.

BookInside

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.

Conclusion

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.

Blurb BookSmart: The best Java app I have seen in a long time

Wednesday, March 21st, 2007

I just got the photos from our photographer of the wedding and would like to get some books printed of them. So I have been doing the usual internet research reading up on all the services out there. There are about 60 of them in the US. There seemed to be 3 that stood out from the crowd for the best quality for a reasonable price. They all have very good comments on the forums and blogs.

I decided to go with Blurb as they have good reports and seem very reasonable. So off I went and downloaded their application for creating a book. After a few minutes using it I thought “Hey this is a nice app I wonder what it is written in” so looking at the about screen and seeing names like Log4j and iText it was obvious it was Java. It was very fast even with the 14Mpix Canon 5D images from the photographers only taking a ~5sec to load and display them. Overall it has a very nice feel to it. There are a few little annoying things and a couple of minor bugs that I came across but I would give it a 9.5/10 and I am sure by the time its out of beta a 10/10. Any of you who know me know I am very fussy about applications and am not easily impressed, but I would be proud to produce an application like that. It gave me that nice feeling that Java Desktop Apps are cool :-) and I am glad that I am now getting a chance to help make Swing better and make it easier for people to create more cool apps like this one. Three cheers to the Blurb team and keep up the good work.

So go download a copy and have a play:

Download Blurb

blurb-booksmart-small.png

Looks like its a custom L&F I have not seen it around before. Has any one else? Something like a cross between Picasa and Flash components.
The seem to be doing well with the image performance I am curious if they are doing any cleaver tricks. Looks like they are just using the JAI-ImageIO to handle more image formats than the core JDK can handle like TIFF and JPG2000. The impressive thing is it seems much faster than Apple Aperture to load and work with the huge 14Mpix images I have of the wedding. I have a been working on my image scaling algorithms I wrote for Imagery recently for another project. I will do a blog on them soon and opensource them. They are not faster general purpose solution but can make huge performance boosts in special cases like scaling large images down to thumbnails. They can generate thumbnails of several large digital camera images a second so great for thumbnail browsers.