What happened in 3.1.9

I wanted to apologize for the problems in 3.1.9 and explain what happened.

In short, I decided to use a sorting function that is sensitive to particular locales and is smart enough to sort English books one way, Japanese books another, and so on. When I found the function in Apple’s developer documentation, I wondered why I never used it in the first place.

The short answer is that there was no such function “in the first place”. A sort selector (”localizedCaseInsensitiveCompare:” for those keeping score) that had been available in the NSString classes since Mac OS X 10.0 (click here to see), it did not work with Core Data until 10.5.

Given that I didn’t know that I was putting Leopard-specific code into Books (I have no plans to include Leopard-specific functionality in the 3.x line), I didn’t rigorously test on Tiger before release. When Tiger users downloaded and ran the code, their systems tripped up on the fact that no localized compare function was available and anything that sorted strings bailed. Hence the eternal “Loading…” screen. The data had loaded, but it was unable to be displayed.

Books 3.1.10 added checks for Leopard systems and used the proper available function.

I want to stress that Books did not erase anyone’s data and updating to 3.1.10 will allow your Books to show your data again.

In the future, if you suspect that Books has deleted your data, e-mail me and I’ll look into the problem ASAP. Nine times out of ten, the data is still there, but the system cannot display it or it’s choking on some edge case. Do not try to start over with a new library before contacting me - that will erase your data and I won’t be able to help you at that point. When you try to start over before contacting me, you’re doing the equivalent of hosing down a crime scene before the police can investigate - you may be tidying things up, but you’re destroying all the evidence that may be used to discover the culprit.

I know that I can be slow to respond to e-mails at times, but I do take reports of data loss very seriously and I do try to get to the bottom of things as soon as I hear about them.

Posted by Chris Karr on June 29th, 2008 | 2 Comments »

Books 3.1.10

Books 3.1.10 is now available.

This is a bugfix update that fixes problems for 10.4 users introduced in 3.1.9.

As always, post any comments or bug reports in the comments below or send an e-mail to books@aetherial.net.

Posted by Chris Karr on June 29th, 2008 | No Comments »

Books 3.1.9

Books 3.1.9 is now available.

This is a bugfix update that improves iSight barcode scanning and includes other minor bug fixes.

As always, post any comments or bug reports in the comments below or send an e-mail to books@aetherial.net.

Update: If you’re experiencing problems, please e-mail me the files located at

Library/Application Support/Books/Books.books-data

and

Library/Preferences/net.aetherial.books.Books.plist

Please include which version of OS X you are running and your system’s default language.

Update 2: If you’re running into problems on 10.4.x, please download 3.1.10a at

http://books.aetherial.net/downloads/Books.zip

and let me know if the new version fixes your problems. I believe that I found the problem (a display bug, not a data bug) and fixed it in the version linked above. I’d like to get confirmation that the problem’s been squashed before releasing it officially as 3.1.10.

Also, do not submit the 3.1.10a version linked above to any software trackers. I have had problems with this in the past. An official version will be coming out shortly.

Posted by Chris Karr on June 28th, 2008 | 15 Comments »

More Books 4 brainstorming

After posting my last blog entry about Books 4, I went ahead and fired up Xcode to begin implementing and exploring ideas for the application(s) that I described. Several hours of hacking over the weekend have given me the first application in the new Books suite: Book Editor.

Below are some screenshots that describe in more concrete detail what I have in mind. (Keep in mind that this is a work in progress, and the images below are one step removed from sketches.)

Quick Look and the Finder

Since Leopard came out, I’ve always wanted to make Books “disappear” and rely upon tools like Spotlight and the Finder to manage records and content. I decided to use bundles for the core Books file type and here are a few reasons why. (Click through any of these images to get the full resolution versions.)

Books 4: Finder / Grid

With Books files as bundles, I can begin to do interesting things like generate files that use the book covers as icon images as shown in the grid view above. In these images, two authentic Books 4 files are shown in a standard window. Since this uses standard Quick Look functionality, you could send these files to a friend and they would look the same way, even if no Books 4 applications are installed on the local machine.

Books 4: Finder / Quick Look

In the image above, I’ve switched to the standard Cover Flow view and the images show up with high resolution icons that look great (in my humble opinion).

Books 4: QL Thumbnail

When I use Quick Look to bring up a preview of a book file that doesn’t have a default file set, Quick Look displays the cover and some rudimentary metadata.

Books 4: QL Preview

If a Books 4 file has a file associated with it, Quick Look opens up that file as the preview, instead. In the image above, I have a PDF file assigned as the “default version” (more on that in a minute), so I can actually read the file using Quick Look without any Books 4 software.

If I wanted to associate an audio or video file instead of a PDF, Quick Look previews of those files would be displayed instead. As long as there’s a Quick Look plugin available for the default version, the system will use that in the context of Quick Look.

Books 4: Summary

If the user wanted to open the Books 4 file, they would need to install the Books 4 applications. Double-clicking one of the files within the Finder would launch Book Editor, and a screen similar to the one above would be shown.

This is the Summary screen. It’s designed to provide a quick summary of the metadata associated with a given book record. The top section contains information such as general details. The next section contains user-defined fields and values. The third section displays borrower information, and the bottom section displays the different versions associated with the record. If a version is a file, the user can click the right-most icon (now a grey box) and that will launch the file in an external application associated with the file type.

The point of this screen is to display commonly-sought information and to provide quick access to files associated with the book record. In the case of the file with an associated PDF file, the PDF file would be one version and the user could launch it within an application such as Preview, Skim, or Adobe Reader.

Books 4: Info

The Info tab provides editable fields for the user to change or update a record. There are standard fields that describe the work, and a space to record contributors, and reading status.

In Books 4, the author, illustrator, editor, and translator fields are going away and will be replaced with a “contributors” field. This field allows creators of a work to be associated with it in a more flexible fashion. While the image above does not show the contributors field, I’ve already settled on its structure. In Books 4, a “contributor” will consist of a name and a role. The name describes the creator (”Stephen King”, “Jim Lee”, “Jim Shooter”), and the role describes what they did (”writer”, “penciller”, “editor”). A single record may contain an arbitrary number of contributors with all of the roles being user-defined (with a few defaults such as “author”, “illustrator”, etc. thrown in for good measure).

The reading status field is intended to help users keep track of what they’ve read, when they’ve read it, and how they liked it. Using this information via Spotlight in the Finder will allow users to create smart folders of unread books, 5 stat books, and so on.

I am skipping the Details and Custom tabs at the moment due to a lack of implementation. The Details tab will provide space for work descriptions and contents (such as a list of stories in a collection). The Custom tab will contain the necessary interface for allowing the user to add custom fields, as is the case in Books 3.

Books 4: Versions

The Versions tab is probably the most important new addition to Books 4. Conceptually, the information in the Info and Details tab describes a “work”. Think about a work as being the abstract concept of a book that is independent of its physical or digital manifestations. For example, “Frankenstein” is a work created by “Mary Shelly” that may classified under the “Horror” genre and was first published in 1818. All physical and digital manifestations share the same details of the “work”

In Books 4, a “version” describes a specific physical or digital manifestation of a book. One version of “Frankenstein” is the Signet Classics edition that is a 240 page paperback published in 2000 with an ISBN-13 of 9780451527714 (link). Another version of the work is the Project Gutenberg edition that is a 452 KB HTML file that was released in 1993 (link). The paperback version has its own cover image, while the Gutenberg version does not. Te Gutenberg version has a digital file associated with it, while the paperback version does not. Additional versions could include audio book readings of the text or files created for PDAs and mobile book readers.

Each book record will have a default version that is used to generate the cover image and provide Quick Look previews. When I get around to building an eBook transfer application, the transfer application can introspect each book reader and determine if an appropriate version is available for the mobile device. When you e-mail a book file to another user, all of the versions associated with the record go along with it as well.

This introduces new complexity within the Books application, but this is necessary for making the application useful for content as well as cataloging. Astute observers will notice that I’ve located the ISBN number within the Versions tab instead of the Info tab. Quickfill will be launched from the Versions tab and I plan on implementing it such that you can still just type in the ISBN and the work details will populated from the version information as necessary.

~

This wraps up my description of the Book Editor application. I think that it provides a great foundation for making the Mac a first-class electronic book platform and the underlying design will make it much easier to transfer that content to other machines, mobile readers, and similar devices.

However, since this is a document-based application, Book Editor by itself loses some of the functionality of Books 3. In particular, any operations that involve collections of records will be impossible within Book Editor. These operations include exporting lists of records, batch record editing, statistical generation, and so on.

I still plan on using the native Leopard system features to handle the bulk of the cataloging and searching work, but it will be necessary for me to create another application that implements some of these necessary batch operations. This collection-management application will be quite similar to the current version of Books.

Thoughts, questions, comments? What do you think about this new direction? Am I missing anything in the designs above that you need and use on a daily basis? Any other features that I should be considering? Etc.?

Posted by Chris Karr on June 22nd, 2008 | 6 Comments »

Some Books 4 thoughts…

I’ve been a bit sparse on this blog lately, so I wanted to drop a note about some of my recent thoughts concerning the next version of Books. In each major iteration of Books, I try to take what I’ve learned and apply it in a new and creative ways in order to build better apps. Books 3 came out a few months after the Tiger release, and it’s well over two years old at this point. Quite a lot has happened since then and I want Books 4 to reflect that. That said, here are a few of my initial thoughts:

1. My major new focus in Books 4 will no longer be cataloging, but content. It’s becoming increasingly clear to me that much of our book content is moving online as audio books, e-books, DVDs packed with PDFs, electronic files from places like Project Gutenburg, and so on. I’m not planning on abandoning cataloging in Books 4, but I really want to find ways to make digital book content more useful.

2. Books 3 uses a single database for cataloging metadata. This works well in that it makes things quick and easy to search, but it sidelines content (such as cover images) into cover image folders and the like. In Leopard, Apple finally made Spotlight quick and usable, so I’ll be doing away with the master database design to book bundles that contain metadata, cover images, digital versions, and so on. If you want to share your electronic books with someone else, it will be as simple as mailing a book file or copying it to a thumb drive.

While this may seem like a step backward, moving to a book-per-file scheme allows me to take advantage of a lot of native functionality, including:

  • Cross-network searching and sharing
  • Better system Spotlight integration
  • Native Cover Flow & Quick Look support within Finder
  • More robust and flexible digital file support

3. Instead of there being one single Books application, Books will become a suite of related applications. Books Catalog will be the next version of the current cataloging application. Books Editor will be a simple editor for editing and adding content to book files. Books Device Manager will be an application for managing content on electronic book readers such as the Sony Reader, Amazon Kindle, iPhone, etc.

The current Quickfill functionality will become part of the Books Editor application, while the import and exporting will be included in the cataloging application. The device manager will handle converting content for particular devices.

4. Splitting things up in this manner will allow me to better manage the development process by splitting code modules into smaller, more maintainable chunks. Consequently, I’ll be able to improve on different parts of the system as quickly as needed without worrying about the whole system.

5. Personally, I’m beginning to think that the dominant cataloging metaphor employed in systems like the *Pedias, Delicious Library, and similar apps has reached its useful limits. I’m amazed at how well the catalogs work, but now that we have that problem solved, I’m interested in moving onto the next one - how do we make the Mac a compelling reading platform?

Anyways, that’s what’s going on in my head at the moment. I’m currently working on defining what a book file is and how it works within the system. (This work includes building the Books Editor application.) Once that’s complete, I’ll begin defining the Spotlight, QuickLook, and Cover Flow plugins. Once that’s finished, I’ll begin rebuilding the cataloging application.

I expect that this process will take several months, but I’m looking forward to posting my progress and getting feedback from the Books community. I’m also planning on maintaining Books 3 until we get to a point where Books 4 is stable, so keep the Books 3 feedback coming.

(Cross-posted at the Audacious Software weblog.)

Posted by Chris Karr on June 20th, 2008 | 3 Comments »

Updated iSight driver coming soon

I’m still in the middle of the chaos of wrapping up the academic year, but I wanted to post a note letting everyone know that I’ll be updating the iSight driver for Books in the next release. I don’t know if everyone’s aware of this, but the Books iSight feature uses code written by Conor Dearden of Bruji, creators of the (*)pedia cataloging apps.

Conor wrote me a note earlier this week letting me know about updates to his framework at

http://www.bruji.com/cocoa/barcode.html

Once the quarter’s over and I have some free time during the summer, I’ll spend some time integrating this updated code.

If you’re a Books user who has been asking me for improvements to this feature, I’d ask that you consider purchasing one of Bruji’s apps as a way of helping me say thanks.

(Personally, I’m a big fan and user of DVDPedia and would recommend giving that a spin.)

Posted by Chris Karr on June 5th, 2008 | No Comments »

Brief hiatus

I just wanted to post a note letting everyone know that I’m receiving and reading e-mails and comments posted to this weblog. I’ve been incommunicado due to my academic responsibilities for the quarter. I plan on replying to the messages I’ve received and releasing updates as soon as the chaos abates.

Thanks for your patience.

Posted by Chris Karr on April 29th, 2008 | 3 Comments »

Books & Italian Quickfill

I promised some users via e-mail several weeks ago that I’d attempt to craft a Quickfill plugin for bol.it. I spent a couple of hours this afternoon investigating a potential way of obtaining the information using Adrian Holovaty’s templatemaker Python library.

Unfortunately, I was unable to get this to work, due largely to the messy nature of the bol.it web pages. The pages and URL schemes are not nearly consistent enough for me to write a plugin, so I am going to have to give up on this endeavor at the moment. If you’re an Italian user and wish to use bol.it as a Quickfill source, please write them and ask them to implement an XML version of their site that may be read by machines.

In the meantime, I realize that the SBN plugin is giving Italian users problems (again), so if there are particular books that SBN is not picking up (and it should), please post the ISBN numbers and titles in the comments below.

I wished that this could have worked out otherwise, but I don’t have a week to craft a plugin that conforms to bol.it’s web pages. (It would probably break as soon as they updated the site in any case.) If there are any Italian developers that would like to try and craft this plugin, I’m happy to provide advice and support.

One final idea - Italian users who wish for a bol.it plugin can make a donation to the Books project and leave me a note saying that the funds are intended for the bol.it plugin. I’m happy to hold that money as a bounty for an Italian developer who wishes to claim the money by implementing the plugin. If this idea is interesting to either developers or users, please post a comment below in support of the idea. If there’s enough support, I can make a more formal announcement and arrangement.

Posted by Chris Karr on April 14th, 2008 | 5 Comments »

Genres v. Keywords

When I implemented the current version of the Books Amazon plugins, I decided to place the values that Amazon calls “Browse Nodes” into the Keywords field instead of the Genres field. I did this because there could be as many as twenty browse nodes, with some encapsulating each other (e.g. “US History”, “The Civil War”, “The Battle of Gettysburg”).

I’ve received a few comments about this and wanted some feedback. Should I place these values in the Genre field instead? From my perspective, you probably only want a few genres for a book, but many keywords. However, I’m not wed to this view and am willing to implement the alternative if desired.

(For those curious, there used to be a Genre field in the Amazon output, but no longer.)

Posted by Chris Karr on April 10th, 2008 | 3 Comments »

Duplicate Amazon plugins?

First of all, thanks to everyone testing the Amazon plugins some weeks ago.

If you’re in the situation that you have duplicate plugins after installing Books 3.1.8, delete the Amazon plugins in the

Library/Application Support/Books/Plugins

folder under your home directory and restart Books to get everything back in non-duplicate order.

Posted by Chris Karr on April 10th, 2008 | No Comments »

Take the Books Tour

Take the Books tour

International Books Sites

Books für MacOS X (German)

Books Developers

Chris Karr
Enrico Richter
Bruce Murphy (Emeritus)

Books Translators

Danish: Preben Nielson
Dutch: Rudi Schmit
Estonian: Kristi Laur
German, French: Enrico Richter (Podcast)
Italian: Gabriele Callari, Andrea Bortolameazzi
Polish: Piotr Chyliński
Portuguese: Matheus Lamberti di Abreu
Spanish: José Luís Pajares Sánchez-Mayoral

Support This Project

Acknowledgments

Colors by kuler.
HTML by TextWrangler.
CSS by CSSEdit.

Made on a Mac.