Some weeks ago, I heard about Redis from Chu Yeow’s tweet. Redis is a key-value database, similar with memcached, but with the persistence feature. And one of the first things that popped up into my mind was, this is going to be handy to extend Singapore National Library Board (NLB) catalog search on BookJetty.

So I stopped my adventure with iPhone for a while to work on this hack. After all, BookJetty was built to be a proxy to plug-in other catalogs easily. With the plug, all vertical features found in BookJetty such as importing books to your shelves, tagging, book reviews, ratings, the social networking features, Google Books preview, author pages, cross libraries search, and other vertical features will be immediately available for the catalog. Well, with just a plug or an adapter.

BookJetty Services

I was lucky that Redis 0.900 (1.0 RC 1) was just released, though not a production release, I took my chance. It was very Ruby to work with Redis; download the codes, read the documentation, bam bam and you got it working, one of the reasons why I chose Redis over Tokyo Cabinet (What a name!). More about the differences between Redis and Tokyo Cabinet here.

There is an issue with NLB search result, it does not return ISBN and some other information BookJetty needs to perform the matching and to display the information nicely. Thus, it needs a second call, and it is expensive. A fast database is required to cache this kind of information, and Redis is the answer.

Previously on BookJetty, you can only search Amazon catalog, and BookJetty will find matches in NLB catalog based on the book ISBNs. But due to data discrepancies, some books found in Amazon are not found in NLB.

As a library user myself, I had always wanted to search the other way round. And today, I’m glad to announce to you, and I hope you are as excited as me. We can now do the other way round; search NLB catalog, and BookJetty is smart enough to find matches in Amazon and probably from other sources in the future. I dreamt about this, and today that dream is fulfilled. Click image or here for a sample search.

NLB Search

There is one limitation though, the search API does not sort by the newest books as in NLB online catalog. Hopefully there will be an upgrade to the API soon, and we would be close in our quest to find the holy grail for our local library search. Meanwhile, let’s cherish what we have.

May the books be with you.

I have finally jumped into the bandwagon of Objective-C development with XCode, out of curiousity to develop an iPhone application. And the first thing that I usually did when playing with a new IDE or editor is to learn the shorcuts.

And thanks to Colin Wheeler for the cheat-sheet:
http://cocoasamurai.blogspot.com/2008/02/complete-xcode-keyboard-shortcut-list.html

The cheat-sheet is comprehensive, and out of those, here are of ones that I find I can’t live without.

Alt+Shift+Up      -> Switch between header and implementation files
Alt+Shift+Left    -> Switch to the previous opened file
Alt+Shift+Right   -> Switch to the next opened file

Cmd+Double Click  -> Jump to the file definition for the clicked class name
Alt+Double Click  -> Jump to documentation window for the clicked word
Shift+Cmd+D       -> Open file quickly
Shift+Cmd+C       -> Open Class Browser window

Ctrl+?            -> Open documentation window
Ctrl+Alt+?        -> Open research assitant window
Ctrl+1            -> Show opened file dropdown
Ctrl+2            -> Show methods drop down

Option+Escape     -> Edit completion list
Ctrl+Period       -> Move to next completion list
Ctrl+/            -> Select next placeholder in auto completion brackets
Cmd+/             -> Comment text

Strangely I couldn’t find the Delete Line and Duplicate Line shortcuts in XCode, miss the equivalent of ‘yy’ and ‘dd’ in vim or Ctrl+Shift+K and Ctrl+Shift+D in Textmate. Tried custom key bindings from TypeErrorStudios, but not working my MBP, let me know if it works on your end. Thanks.

Hacheette Book Group is back with its free books giveaway on BookJetty. Halloween is around the corner, so it’s getting spooky this time with these collection of books.

halloween_books.jpg

And all are yours for free if you are a BookJetty member (sign up as one if you are not) and put at least one book on your bookshelf by end of November. Note that this contest is only open for those who reside in the United States or Canada, and remember to update your profile country in BookJetty.

Special thanks for Hachette Book Group, the last book giveaways have brought some surprises to the winners with a big box of books arriving at your porch.

  1. THE HERETIC’S DAUGHTER By Kathleen Kent $24.99, 0316024481
    ISOLATION By Travis Thrasher $13.99, 0446505544
  2. THE 13 BEST HORROR STORIES OF ALL TIME By Leslie Pockell $21.99, 9780446679503
  3. THE MONSTERS: Mary Shelley and the Curse of Frankenstein By Dorothy Hoobler , Thomas Hoobler $14.99, 9780316066402
  4. THE MYRTLES PLANTATION: The True Story of America’s Most Haunted House By Frances Kermeen $7.99, 9780446614153
  5. GHOSTLY ENCOUNTERS: True Stories of America’s Haunted Inns and Hotels By Frances Kermeen $7.99, 9780446611459
  6. THE TERROR By Dan Simmons $14.99, 9780316017459
  7. DRACULA By Bram Stoker $10.99, 0316014818
  8. WHEN GHOSTS SPEAK: Understanding the World of Earthbound Spirits By Mary Ann Winkowski $24.99, 9780446581189
  9. THE HISTORIAN By Elizabeth Kostova $9.99, 9780316067942

I like Adium, but recently there were just too many spams from my MSN account, I tried finding the privacy settings under Preferences, only to find out later that it was not there.

The secret is it’s under Adium menu (on top left screen) > Privacy Settings (Alt + Cmd + P). Choose your MSN account, check ‘Allow only contacts on my contact list’, and it’s peaceful again.

But, I’m still wondering why can’t they just put Privacy settings under Preferences.

p.s. Trying out MarsEdit, saved me a couple of extra steps required to blog, trying to justify the reason why I only blogged like once every decade lately.

Yesterday Google Book Search officially launched a set of free tools to allow anyone to embed books from the Google Book Search Index. And it also introduces Book Search API for greater integration to its search index and readers’ ratings, reviews and book collections.

BookJetty is glad to be able to integrate with Google Book Search, by introducing a new list type that indicates if book previews are available, and the embedded book preview just makes it feel closer to having a real bookshelf.

I’m really happy for this new addition to BookJetty, find it very handy to check out if books are worth a read, and glad to have BookJetty mentioned as one of its case studies.

Google Book Search

BookJetty Books Giveway

THU, 11 SEP 2008

I’m glad to announce BookJetty first books giveway, thanks to Hachette Book Group USA, 10 best selling books offered for free to host Back to School Book Bonanza! For 5 lucky BookJetty users.

To be entitled, you just need to write one book review in the month of September, and winners will be picked up randomly. I’ll inform the winners through email on October 1.

Hachette Group Books Giveaway

There’s only one catch, according to Hachet Book Group USA, the giveaway is only for BookJetty users residing in United States and Canada, sorry guys. So do remember to update your country profile in BookJetty.

Here is the list of 10 best-selling books for the giveaway:

  1. Dewey: The Small-Town Library Cat Who Touched the World
    By Vicky Myron, Bret Witter
  2. The Book of Calamities: Five Questions About Suffering and Its Meaning
    By Peter Trachtenberg
  3. Say You’re One of Them
    By Uwem Akpan
  4. Bo’s Lasting Lessons: The Legendary Coach Teaches the Timeless Fundamentals of Leadership
    By Bo Schembechler , John Bacon
  5. Knowing Right from Wrong: A Christian Guide to Conscience
    By Fr. Thomas D. Williams
  6. Titanic’s Last Secrets: The Further Adventures of Shadow Divers John Chatterton and Richie Kohler
    By Brad Matsen
  7. A Whack on the Side of the Head: How You Can Be More Creative
    By Roger von Oech (25th Anniversary)
  8. Ethics 101: What Every Leader Needs To Know
    By John Maxwell
  9. The Self-Esteem Trap: Raising Confident and Compassionate Kids in an Age of Self-Importance
    By Polly Young-Eisendrath
  10. Roads to Quoz: An American Mosey
    By William Least Heat-Moon

permalink_fu has been great to create a Search Engine Optimized (SEO) friendly URL, but I was a bit irritated when the-permalink-is-getting-too-long-with-too-many-unecessary-keywords.

From some of the SEO tips I read, it is advisable not too put too many keywords in the URL. Unecessary stop words such as ‘the, a, in, on, and the list goes on’ can be removed, and the search engine robots will not be irritated too.

I wrote permalink_fu_hack plugin some time ago to solve this problem, thought some of you may find it useful in your application. To think about all the possible stop words, I took the shortcut, and got the inspiration from SEO Slugs Wordpress plugin by Andrei Mikrukov.

It is a monkey patch for permalink_fu, you need to first install the permalink_fu plugin. It also has an additonal :unique option to turn off the feature to automatically create unique permalink, which on some cases where the permalink already includes a unique primary key id, I find that the extra check is not necessary. With the :unique option, you can set it to false for such occasion.

Installation

  script/plugin install git://github.com/technoweenie/permalink_fu.git
  script/plugin install git://github.com/jugend/permalink_fu_hack.git

Example

  class Article < ActiveRecord::Base
    has_permalink :title, :filter_stop_words => true,
        :unique => false
  end

  article = Article.new
  article.title = 'The Permalink Is Getting Too Long With Too Many Unecessary Keywords'
  article.save
  puts article.permalink     # => 'permalink-getting-long-unecessary-keywords'

Additional has_permalink Options

  :unique               
     # Create unique permalink (default: true).
  :filter_stop_words 
     # Flag to filter to stop words (default: false)
  :stop_words         
     # Array of stop words to filter (default: auto assigned to stop words similar to SEO Slugs Wordpress Plugin).
  :max_words         
     # Maximum number of words to show on permalink (default: 6)

BookJetty in Digital Life

WED, 13 AUG 2008

BookJetty in Digital Life

BookJetty finally makes it to Digital Life, I’m humbled to read BookJetty mentioned as one of the high flying-tech from Singapore, considering it was started from a bare simple application started out of curiosity.

Hopefully with this article BookJetty will be able to reach out to more book lovers and library users in Singapore. Special thanks to Irene for the writeup.

Click here for the full article on Straits Times.

Remember how we used to browse books in the bookstores, and check out the innerside of the back-cover, which usually contain a short biography of an author. I find that knowing the author’s biography helps me to appreciate his/her book more, and helps me to decide if I should read or buy the book at the very first place.

There are hundreds of thousands of authors in BookJetty database at the moment, and it is definitely not possible to update all at once. If you are BookJetty users, when you are free, do help out to update the author pages, and gracias for that. Below is the screenshot of how it looks like.

Author Page

You can choose to become fan of an author; author’s average rating and other statistics are also shown on the page. This will help you to find out how popular is an author.

Better Book Covers and Scrolling Effects

Book covers in the scroller now have some dimension to it, it now looks more like a real books instead of just cover sheets, and I’ve also sped up the scrolling effect. With chunky covers, slower scrolling effect is quite distracting for the eyes, and believe it or not, you may feel dizzy after awhile.

Bookshelf Scroller

Polaroid Style Pictures

Other notable enhancement, is the palaroid-like user pictures with username shown below. I find that picture by itself without the username is less interactive and harder to associate with.

That’s all for now, stay tuned for other interesting additions to BookJetty, and happy reading!

The New BookJetty Launched

SUN, 11 MAY 2008

The plan for the new BookJetty was to bring social elements and other book related applications to BookJetty, on top of the existing feature to check books availability in the libraries. The new BookJetty marks the shift from a pet project to an official product supported by Pluit Solutions.

It was a daunting task from the beginning, considering there were so many things to do with very limited resources. The bad news also the existing codebase did not look too good, it was a pet-project codebase, patches were applied without proper product plan, it was on Rails 1.x, there were no unit testings, and stylesheets were not very organised either. It meant basically lots of re-works.

After much persistence and lots of hard work, today I am grateful and glad to announce that the new BookJetty is finally up!

Login Page

For a quick tour of what’s new, here are some of the highlights:

Connect with Your Friends’ Bookshelves

You don’t have to physically be at your friend’s home to check out what they have in their bookshelves. BookJetty now has a news feed that updates you of the new additions to your friends’ bookshelf, new reviews, new discussions and other activites.

Dashboard

Discussion Boards

It would be nice to be able to create a discussion topics about the books you are currently reading or have read. And you can now create a discussion topic.

Recent Discussions

Import Books

The problem with cataloging your books is when you get started. If you are bookaholic, there may be just too many books to add. Fear not if you have maintained your book list some where. You can easily import them to BookJetty. The import feature is smart enough to detect ISBN-10 and ISBN-13 from source data, irregardless of the text format. You can query from a webpage, an uploaded file or copy and paste text with ISBNs.

Invitation

To help you to start building your network of friends the invite feature is handy to invite your friends from your Gmail, Hotmail and Yahoo Mail. It can also import from your Plaxo address book.

Inbox and Sent Messages

Now you do not have to depend on email notifications to communicate with BookJetty members, the thread-based inbox message helps to keep you in conversation with your friends.

Inbox

Notifications

Built-in notifications to keep you informed of the activities related to you, such as replies to your reviews, discussion posts, or comments on your profile page.

Smart Bookshelf

Inline “Add to shelf” link can be found anywhere when you browse for books. Mouse over for more options as to which shelf to add to. On top of inline-rating feature, now you can also edit your bookshelf date with a simple date picker.

Smart Bookshelf

User Wall Posts

Previously there is a shout box on your user profile page. I thought it was too small and restricted. Now a bigger commenting box is available on your profile page. You can also reply to your friend’s post in a thread to keep the conversation going.

Explore

Based on the statistical data from members’ activities, various explore categories have been created, which include most popular, top rated, top favorites, and most discussed. You can also browse the different periods of time, i.e. this week, this month, this year or all time.

Explore

RSS Feed

If you are an RSS junkie, you can follow your friend’s bookshelf through RSS feed.

Privacy Control

I understand that it is important for you to control who can see your data and bookshelf, there is now a finer control of who can see your data.

Time Zone Support

With time adjusted according to your time zone, you won’t be confused about when exactly a post has been made. The best part is you do not have to configure your time zone, as it is automatically calculated with the help of Javascript.

Unicode Support

BookJetty now supports UTF-8 encoding, no problem if you have to comment in Chinese, Japanese and other non-latin characters.

More Bookstores

With the Unicode support, more book stores have been added, i.e. Amazon France, German, and Japan. More will be introduced in the future, the next one will be Barnes and Nobles.

Third Party Advertising

I have also introduced third-party advertising from Google Adsense. The advertising revenue I hope will be able to help to reduce the increasing cost needed the develop and support BookJetty.

Overall the new BookJetty has a better and more consistent layout. And from now on, there will be more regular updates, as the base is now ready. Coming out soon is the group/community feature.

I hope that you like the new BookJetty. For screenshots quick tour, click here.