Widgets now available

May 12, 2007

In the “your account” menu at BookMooch there is a new choice for “Widgets: fun tools you can embed in your web site or blog”.

“Widgets” are explained as: “A widget is a small piece of HTML code that you copy/paste into your blog or personal web site. The widget then displays live information from BookMooch on your web page.”


The list of widget choices is a bit on the long side, but there are only a few variations on the theme. All the widgets display a book cover or a book title, from either your inventory, wishlist or mooched history.


In order to use a BookMooch widget, you must have your own blog or web page. There are many web site technologies on the Internet, and so there are many ways of embedding widgets in them.

The simplest way to test which embedding technologies will work for you is to copy/paste the test HTML into your web page, and see which messages it displays. Then, use the first listed method which works. The test HTML is displayed if you leave the default technology as “I don’t understand” :


Once you know what widget technology your web server supports, you go back and choose it, and the HTML you need to copy to your web page is given to you. There is also a live example of the widget in action, so you can customize it to your needs.


I would love feedback on:

1) other widgets people would like to see

2) what you think of all this

3) was it too complicated? do you have suggestions to simplify it?

4) other ways to improve the widgets. Putting them under “your account” may be too buried, I welcome suggestions of another place to link to it from (if people find the widgets useful).

In the BookMooch wiki entry for “widgets” I put some additional information about the widgets, which I’m reproducing here as well:

You can test a widget easily by copying just the URL out from the HTML code, like so:

and putting it in as the URL in your web browser. In this case, you’ll see 10 book covers.
You can also modify the URL in various ways to get more options than the pull down menus give you. For example, this is the default URL for the “5 most recent books you’re giving away, separated by a space” :

if you wanted to separate each book with ” | “, you change the + (which is the HTML for a space in a URL) to “+|+” like so:

and if you wanted to show just 3 books instead of 5, change the number in the URL

You can also change the user that the widget is getting information from: it doesn’t need to be you. For example, if I change “johnbuckman” to “buckman_ca” the widget changes accordingly:

The “en” in each URL specifies the language any text in the widget would return in. Currently, none of the widgets returns any text other than the author name and book title, which we never translate.

The “html” parameter in the URL above determines the output format of the widget. Currently, there are only two choices, “js” for javascript, and “html” for plain HTML.


Margo Milner volunteered to write some help/documentation pages for BookMooch, and I thought this was a great idea, but I also wanted everyone to be able to add to the help pages, just as we do today for the translations.

The solution was to put the help on the BookMooch wiki, so that each page at BookMooch would like to a dedicated help page, and anyone could edit the wiki page to add helpful information.

Now, on every page at BookMooch, you’ll see a (?) button on the top right of the page, across from the title. Clicking this pops up a help page on the Wiki, for the page you were on. Most pages are currently blank (since I just launched this today), so you can help out by:

1) putting in some helpful information yourself, about the BookMooch page

2) editing the page and putting questions in, and things you’d like answered about how that page at BookMooch works

Note that if you use BookMooch in a non-english language, you will get your own help page at the wiki for that page. In other words, the help pages are multi-language compatible.

Also note that some pages, such as the pending page, have multiple title sections, and hence multiple help. This is on purpose, so that there can be a separate page for “Books accepted to send” and “Books waiting to receive, which have been sent”. Since these concepts are a bit complicated, and these are big page sections, I thought it’d be helpful to have separate help for them.

The email address you use at BookMooch now needs to be confirmed. The next time you use BookMooch and go to the “add books to inventory” page or try to mooch a book, you will be asked to confirm your email address.

A very short email message will be sent to you with a URL in it. When you click on the URL in the email, your email address is confirmed.

You won’t be able to mooch or add books until you confirm your email address. This is what the page looks like that you’ll see until you confirm:

Confirm Email

New accounts at BookMooch will be able to log in right away, and use all the features at BookMooch, except for adding books to their inventory or mooching books. Many sites won’t let new users log in at all until they confirm their email address, but I thought that was unfriendly, as that stops people from checking BookMooch out to see if they like it, and what we really want to do is stop actions that affect other members (adding and mooching) until we know their email address is valid.

There are a few goals with this change:

1) when you try to mooch from someone, there will be a greater chance that they’ll get the email message requesting the book if they confirmed their email address

2) if you have an anti-spam program, it’s an immediate reminder to set your anti-spam software up to allow BookMooch messages

3) we’ve had some abuse of the system, both with people adding an account and immediately mooching as well as (less frequently) adding lots of books that people have on their wishlist, causing spurious wishlist notifications.

4) with this additional step, we administrators can ban people who repeatedly cause trouble, and make it just a bit more difficult to hit us repeatedly

People have long asked for a way BookMooch could identify members who have abandoned their BookMooch accounts, so that people don’t see their books as moochable and then get disappointed when the book isn’t sent to them.

Alternatively, if someone goes on a long vacation, and isn’t answering any mooch requests, it would be good for their account to be automatically put “on vacation” so that no-one mooches from them while they’re unresponsive, but when they come back all is set back to normal.

Many ideas for doing this were discussed on the forum, but the idea I liked best was based on the scenario of “I tried to mooch from this person, but they never replied”. I like this because a human being makes the judgement, which can then handle more odd cases than a computer judgement. For instance, if we auto-vacationed people who haven’t logged in since 30 days, that would remove people who would respond to mooch requests that would come in, but otherwise don’t use the service. Those people should be allowed to remain, it’s only non-responsive members that we don’t want.

So, here’s how the new feature works: if you go to cancel a mooch, and it’s been more than 7 days since you made your request, you can now indicate that “the book owner never responded”. This choice *only* appears on the cancel page if 7 days or more have elapsed since your mooch request. Here is what it looks like:


If you do indicate that “the book owner never responded” then the book owner’s account is immediately put on vacation. Vacation, if you don’t remember, means that the person’s inventory is set aside, so that their books don’t appear in searches and aren’t moochable. They then get an email like this:

Subject: Your BookMooch account is now ON VACATION
Date: May 3, 2007 10:40:50 PM BDT

Your BookMooch account is now ON VACATION

A recent book requestor has indicated that you did not respond to their book mooch request within 7 days.

BookMooch has therefore assumed that you are currently not replying to requests and has automatically put your account on vacation.

To undo this, log into your account by going to:

BookMooch does this so that people who stop using our service automatically have their books removed. That way, people cannot request books from people who are no longer using our service.

In the future, to avoid having your account go on vacation, we ask that you respond to all mooch requests within 7 days. You do not need to send your books within 7 days, but you should acknowledge the request.

If the book that was cancelled is on multiple wishlists, no wishlist notifications are sent out, since the owner’s account is put on vacation. This is an important improvement, because until now, an annoying cycle occurs when someone cancels a book from someone who is inactive, which then triggers a wishlist notification to others who want the book, they try to mooch it, and the cycle continues. However, if the mooch request is cancelled due to non-response, and the owner comes back from vacation a few weeks later, then the wishlist notifications are sent out then, as they should be.

Back to the cancel screen. If the requester has not waited 7 days before asking to cancel, then a message is displayed on-screen that says:

Are you cancelling because you haven’t heard back from the book owner?

If so, we ask that you wait 7 days before cancelling, to give the person plenty of time to reply.

After 7 days, if you cancel because the owner did not respond, BookMooch will automatically put the owner’s account “on vacation” so that other people do not accidentally request books from this person until they become active again. This helps other people avoid requesting books from people who do not respond, and is another reason we ask you to wait 7 days before cancelling.

Thereby encouraging people to be a little bit patient.

Note that if you go to cancel a book within 24 hours of your request, BookMooch assumes that you are cancelling it because you changed your mind, and no “please wait 7 days” plea is displayed, the cancel page works as it always has.

I’m hoping this fairly simple feature is fair and also effective at slowly weeding out accounts that have been abandoned.

Gzip-Icon-SmallI reported last week that I was experimenting with a page-compression technique, to make BookMooch pages load faster. I was testing it out on only some pages at that time, to make sure it worked right. However, most of the big pages didn’t do it.

I’ve now turned gzip compression on every page at BookMooch. The speed increase is most significant on large pages, such as my history with details on, which is 496k of html “the old way”, and now transfer as just 27k of gzipped data. So, the new way needs to transfer far less data over the internet to your computer, in this case only 6% as much as previously, resulting in a super-huge speedup on large html pages.

If you “show details” on search results, it used to be a bit slow, but now what was 100k for just 10 books of details on the search results, is 11k with this new compression technique.

Pretty neat…

Part of the testing period was also to figure out if BookMooch “did the right thing” with people with firewalls, old web browsers or proxy servers that don’t like gzip. One person replied having problems last week with what I had, but said that my fixes a few days later worked for her.

If you have any problems reading BookMooch pages now (ie, some sort of browser error) do drop a comment on this blog.


There’s a little-know trick for making big web pages download faster called “gzip compression”.

I’ve enabled this technique on many BookMooch pages.

The web server can choose to compress the web page with gzip compression, which typically makes it about 80% smaller, and the web browser decompresses it automatically. Since decompressing files like this is fast on modern computers, and it’s slower to download large files, this is a big win.

For example, the “browse by zip codes” page at BookMooch is 236k large, but gzipped it’s just 37k large (85% smaller) thus 6.5x faster to download.

Please do me a favor, and visit this page:

and leave a comment if the page *doesn’t* work for you.

For technical reasons too boring to go into here, only some of the pages at BookMooch are currently using this technique.

In programming BookMooch, there’s an “Easy way” to do this technique, which works with pages like the Browse Page. And, there’s the “hard way” that I have to do for pages like http://bookmooch.com/zip/07013.

It’s the “hard way” that I’m a bit nervous about, because I had to code that myself, whereas the easy way comes with the web server and thus “just works”, but not for a lot of the pages at BookMooch, which use another technology, and thus have to use the “hard way” to do it.

So…if no-one has any problems with http://bookmooch.com/zip/07013 then I’ll put this speed trick into place everywhere, and long pages at BookMooch will start to load faster.


If you’d like to see whether a page is compressed, use Firefox and install the “Live Headers” add-on from http://livehttpheaders.mozdev.org/.

With this add-on, when you choose “info” on a page, a new tab titled “headers” is now available. Click on that tab, and look for “Content-Encoding: gzip” on the bottom window (i.e. the “Response Headers”). If there’s no “Content-Encoding” then the trick is not being used on that page. You’ll also see the transferred size of the file (2022 bytes in this case) and if you save the file to disk, you can see what the real size is (12k in this case) and thus what the speedup was.

Feed-Icon-32X32BookMooch now has RSS feeds available of:

– a member’s inventory, ordered by date the book was added, so you can be told when someone whose book tastes you like adds a book

– any search you can build, so you can be notified whenever books meeting your criteria become available

If you’re not sure what RSS is, take a look at wikipedia’s page about RSS.

Next to the member name on any inventory page there is now a small orange RSS icon. Click it, and you’ll get an RSS feed icon:

Click on that icon, and if you’re running Firefox, IE7, or any web browser that knows what to do with an RSS feed, you’ll see something like this:

which lets read and/or subscribe to the feed. RSS feeds are cached on a one minute timeout, so it’ll take up to 60 seconds for a new book to appear in the RSS feed.

With advanced search is where this new RSS feature gets interesting. Any search can be saved as an RSS feed.

For example, if you wanted to see what books by Orson Scott Card are added each day, you could do this advanced search:

click on the RSS feed icon and you get:

Here’s another scenario: you want to be notified any time any book appears with the title “Omnivore’s Dilemma“. This is a very popular book that is mooched immediately when it appears on BookMooch. You could use the related editions feature to find the various editions and wishlist them, but that wouldn’t help you if a new edition came out that BookMooch didn’t know it was a related book yet.

So, from the book details page you would click on the title to search for books with that title:

click the RSS feed button, and now you’ll be notified whenever a book with that title appears in BookMooch.

Note that ALL search options are saved in the search, so for example you can show book details in your RSS feed, search inside a topic, or any other feature that advanced search supports.

RSS Search Feeds are cached on an hourly basis.

I know that there are a few other RSS feeds people really want, most significantly:

1) all new books
2) all new books in my country

3) all new books in a topic
4) all new books in a topic in my country

5) all new books in a certain language
6) all new books in a certain language in my country

I’ll be working on those soon.

What other RSS feeds would be really useful?

Advanced search now done

April 15, 2007

The advanced search feature is all done now, and a whole host of new features that went into it, are available now. This blog entry will go over them all.

The inventory page now has a “search this inventory” feature, which looks for books in the current user’s inventory (very useful for users that have hundreds of books in their inventory):

The wishlist page now lets you search for books in that wishlist, as well as searching all wishlists.

The really messy and complicated options that used to appear the bottom of every search result page and look like this:
have all been removed, and all the same options are now available in a clearer form in the advanced search page, and an advanced search button appears on the top right of all search results:
The advanced search form is automatically pre-filled with the values from the current search, so it’s easy to repeat the previous search and modify things slightly. This is especially convenient when you’ve done an advanced search from a “search this topic” page, or some other page where advanced search was automatically used, because you can see how the advanced search features were used in that search, and modify them slightly to your needs.

The advanced search page lets you only show books that are available from your country or from a specific country. This is very handy for people outside the USA who want to see what books are available in their country.


For example, if you’re looking for a book that has many different editions, available all over the world, you can limit the search results to just editions that you can mooch from your country. An example might be if you were looking for an edition of Shakespeare’s MacBeth from the UK.

Recently added books: you can limit the search results to only books that have been made recently available on BookMooch. This is useful if you want to see what books are now available by an author, and only want to see books that were added to BookMooch since you last checked.


Note that when a 2nd copy of a book is made available on BookMooch, the date of the new copy is the one that is considered. This is by design: there may be pre-existing moochable copies of a book that you don’t want to get, perhaps because they’re in another country or the condition is poor. This lets you notice when another copy of that book becomes available.

This advanced search example will find books authored by Shakespeare, available only in the UK, that were added in the past 10 days.

as part of this new search feature, a new piece of information now appears on the book details page, showing the date when the most recent copy of this book was made available on BookMooch. The information is displayed with a “Since:” label:

I don’t like the descriptive label “Since”, as it doesn’t really describe what this date actually is. I thought about “Date added” but that sounds like when the book was first added to BookMooch. I’d appreciate suggestions on a better label for this information.

You can now specify a date range that the books in the search results needed to be published by. This can quite handy if you are a fan of old editions, such as pre-1950 editions of books by John Milton. In general, I was quite surprised how many antiquarian books are available on BookMooch. There was a 1908 edition of a Room With a View available until a few days ago. Wow!

I also use this feature to find recent editions of translated works, because I tend to prefer recent translations. For example, works of Immanuel Kant published after 2000.


You can specify members that you want to search. Normally, you would only specify one name, but you can specify several names if you like, on name per line.

For example, this search searches my inventory for books by Bill Griffith.


this is actually exactly what the “search this inventory” field does for you, and this search has the same effect:


You can search wishlists, inventory, or all books that BookMooch has in its database using this new option in advanced search. Previously, you could only search available books (i.e. books in someone’s inventory).


The pages showing regions in France, Towns in the UK, and areas in the USA give you a simple search bar to search directly in that country. This allows you to avoid having to use the advanced search form and is easy to use.


When browsing books in a language, there now is a pre-filled search bar to search for books published in that language, thus no need to use the advanced search form to do this common task.


When browsing books in a country, there now is a pre-filled search bar to search for books available in that country, thus no need to use the advanced search form to do this common task.


Three small other changes were made:

  • the bio page no longer lists 10 books from your inventory, since this was not very helpful and made the page busier
  • the member main menu no longer shows your postal address, as this didn’t seem all that relevant and made the page a lot busier. You can see your postal address by clicking on your user name on the member main menu, which brings up your profile.
  • the bio page now links your country of residence to a page listing people in that country (though there seems to be a bug here with the USA, which shows no users, while other countries seem to work fine– I’ll have to fix this)

    I’m going to take a few days off now, as I’ve been working very long hours for about 3 weeks to get all these search features done, and my body needs a rest.


  • The advanced search feature on BookMooch received a few more options today. I’m still working on it, and several more things are due soon, but here is where it stands now:


    The “not in these words” feature lets you specify words that must not appear in the hits. For example, if you search for “card” you will get lots of books by Orson Scott Card. Enter “orson” in the “not in these words” field and books by Orson Scott Card will be removed from the search results.

    The “words appear in” listbox has these choices:

    which are hopefully self-evident.

    The “From country” choice only appears in the advanced search for in the member section, because it needs to know your user id to determine what country to limit search results to. The two options are:

    This is quite handy for non-American members of BookMooch, who want to see if a book they’re interested in exists in their country. What this feature does is look at the country setting of every person who is offering to give away this book, and only shows the book if someone in your country has the book.

    You can specify the language you want the book to be in.

    The most common BookMooch user’s languages are listed as the top 20 or so choices, followed by all the languages in the world.

    This feature doesn’t work perfectly, because it uses the ISBN code to determine what language the book is in, and sometimes this can be wrong, for example if a German publisher prints a book in English, it will probably mis-identify the book as German. But, it’s right a great deal of the time. I may change this feature to use LibraryThing’s “ThingLang” lookup in the future, but I’ll probably always need to lean on the ISBN to some degree, when I can’t get better information about a book elsewhere.

    The “in topics” box lets you type a topic that you want to search in. For example, enter in “Humor” and your search will only find books that have the topic “Humor” attached to them. You can put multiple topics in this option, separated by a carriage return, and books that match any of the listed topics will be shown.

    This “in topics” feature has enabled me to offer a “search in topic” field in the “Browse topics” pages. It looks like this:


    I’m still adding features to advanced search, which will be released shortly. On my todo list are:
    1) search in wishlists
    2) don’t include your own books in the search results
    3) only books added recently (you determine how recent)
    4) search in a single member’s inventory (including your own)
    5) date published

    I’ve long wanted to set the fonts used at BookMooch, but have avoided doing it for various technical and lazy reasons. Until today, the font that you saw BookMooch by was the default one in your web browser, which sometimes made things a little ugly.

    One thing I didn’t like was how my buttons are set to VERDANA (the only place fonts were set) but some browsers would use Times Roman for the text. For example, that’s how Firefox did things:


    the window above is how BookMooch looked in Firefox/Mac until today. My graphic designer really likes Verdana, and that’s what I tried initially, but look how much space it uses (I had to make the window a lot taller to accommodate the same text)


    what I settled for was using Arial on the text, and leaving the buttons as VERDANA, because the buttons look good that way. Having two slightly-different san-serif fonts on the same page is a huge design no-no, but it seems to look ok, if you don’t have a graphic designer background (smirk).

    So here’s what the new fonts look like:


    they take about the same amount of space as Times Roman, but the overall page is a bit more clean. Well, I’m sure it’s all a matter of opinion, but I like it.

    Note that I am *not* hard-setting the font size, so people with bad vision who like to make their fonts bigger, can continue to do so. At BookMooch, I’m sure a good part of my audience is older and has less-than-perfect eyes, which is why I don’t use small type on the site.

    If anyone sees any font mistakes, ie places where Times Roman creeps in, or anything else weird, please let me know. I tested the new site with Firefox Mac and Windows and Ubuntu Linux, IE 6, Opera, Safari and OmniWeb.