Bookworm feature updates: sorting and pagination

Wednesday, July 30th, 2008

It is now possible to re-sort books in your library by title, first author or creation date, and to re-order those in ascending or descending order:

If the number of books in your library exceeds 20, you will be presented with next/previous pagination controls.

In an earlier post I listed several features that I planned to add shortly, and two are now completed:

  1. Optimized layouts for mobile readers (including the iPhone)
  2. Search within book content
  3. Methods for sorting and managing one’s library
  4. 100% compliance with the IDPF guidelines for ePub reading systems (in regards to XHTML 1.1 content)

Looks like search is up next!

Bookworm mobile screenshots / OSCON

Monday, July 21st, 2008

I’ll be in Portland, OR this weekend for the O’Reilly Open Source Convention, talking with people about future directions for Bookworm and other threepress projects. If you’ll be there and would like to get in touch, the best way to contact me is by email liza@threepress.org.

Some samples of the current version of Bookworm Mobile running on an iPhone:

(more…)

Mobile Bookworm launched

Friday, July 18th, 2008

A mobile web-optimized version of the Bookworm ePub ebook reader is now available at http://mobile.threepress.org/.

Bookworm Mobile has been specifically customized for the iPhone. Other improvements for different mobile web browsers will be rolled out over time, starting with Opera Mobile.

I welcome input on how to improve the reading experience on small devices, so please comment or send email to info@threepress.org. (I’m especially curious about the Kindle over Whispernet, since I believe Bookworm is the only way to read ePub books on the Kindle at this time.)

Additionally, small user interface enhancements and bug fixes have been released on the main Bookworm site as well.

Django/MySQL database backup script

Thursday, July 17th, 2008

I’m sure everyone has one of these lying around, but here’s mine in case you are as lazy a programmer as I usually am.  The only thing Django-specific about it is that it reads your database configuration directly out of your settings file.

If you run this via cron it will automatically create its backup directory and a zipped SQL dump with the name of the current day of the week.  If one already exists, it simply overwrites it.  This means you’ll have a week’s worth of daily rolling backups.  If you need more granularity, add a timestamp to the datestamp.  If you need more persistent backups, switch to a full date scheme.

The latest version of this can always been found here.
(more…)

Bookworm: an online ePub reader

Tuesday, July 15th, 2008

To coincide with the first launch of ePub books by a major publisher, I’m happy to announce the open beta of Bookworm, a web-based reader for the ePub ebook format.

Unlike most other ePub readers, Bookworm allows for full use of stylesheets and images, which is especially critical for technical books which include HTML tables and code samples.

Bookworm is free for us and open source under the BSD license; the code is part of the threepress project and is available here on Google Code.  Currently it should be considered beta software — this is especially true as new publishers begin to release ePub-formatted books in varying methods.

Please be patient if you encounter errors — detailed error reports are automatically emailed to me, but user bug reports are always helpful too.

There will be several major updates to Bookworm in the coming weeks, including:

  1. Optimized layouts for mobile readers (including the iPhone)
  2. Search within book content
  3. Methods for sorting and managing one’s library
  4. 100% compliance with the IDPF guidelines for ePub reading systems (in regards to XHTML 1.1 content)

For more information on Bookworm, please see our About page.

Colorful terms, A-G

Friday, July 11th, 2008

I’ve been slowly making my way through the Dictionary of American Underworld Lingo, which is less of an endurance contest than reading the entire Oxford English Dictionary, to be sure.  I’m dividing the interesting entries up into categories, the first of which are the cute ones that make early 20th-century criminals seem like adorable ragamuffins.  Keep in mind that there are an enormous number of offensive and scary terms I won’t be posting at all.

I cross-referenced the online OED for all the terms and indicated if it was found with an identical or related meaning.

Axeman: a prison barber

Beagles: sausages

Cackle-factory: insane asylum

Camisole: a strait jacket [OED, c. 1881]

Chatterer: machine gun

Die: to leave the underworld and go straight

Diver: one who robs drunkards [OED: pickpocket, through 1887]

Dream gum: opium

Eel: a slippery and unprincipled fellow [OED: U.S. A nickname for a New Englander. c. 1840]

Eye-wash: tear gas

Fourth of July: a gun fight

Get out the crying towel: “stop complaining”

Giggle academy: insane asylum [OED: giggle-house Austral. and N.Z. slang c. 1919]

To have go-go in one’s eyes: to be determined to escape from prison

Googs: eyeglasses

Grab scenery: to ride the top of a freight car (”Hobo”)

Griddle: to interrogate ['grill' is not listed but the OED shows it already in common usage]

ALA 2008: Technical solutions to increasing the visibility of libraries

Tuesday, July 8th, 2008

I had a great time meeting people and attending talks at this year’s ALA conference in Anaheim.  Although I’ve so far focused on software development for publishers, there’s a lot of need for innovation in library software as well, and is something I’m interested in exploring.

User-generated content

Tim Spalding from LibraryThing convincingly demonstrated that ordinary readers can, in aggregate, contribute accurate metadata and even scholarly initiatives.  UGC initiatives don’t replace professional cataloging or research, but they can galvanize interest in a subject by using tools “where people are” on the net, whether it’s LibraryThing, Facebook or Amazon.

Once a resource’s content and metadata are available on the net, the library can broaden the scope of what its “local community” means. It may no longer service just people living in its immediate vicinity but anyone who has a interest in the library’s holdings, e.g. retirees who grew up in that area, or individuals with historical interest in the location.

This Flickr photostream from the Library of Congress allows anyone to add historical notes and corrections. Ironically, this project also validates the need for editorial control, as some popular photos are overloaded with inane comments. A sensible moderation policy admits potentially-useful information while deleting random valueless statements (”nice hat!”).

For better or worse, most archival library holdings will draw less attention, and thus UGC is likely to be of higher quality.  Without UGC many collections might languish unseen for decades because the resources don’t exist to professionally catalog them.

Software services and discovery

I’m reading about a book on the net, and decide I’m interested in it — but not to buy.  Perhaps it’s out of print, or extremely expensive, or I’m only mildly curious about the title.  I should be a maximum of one or two clicks away from finding out that it’s available via my local library and ordering it.

(I don’t especially care where the book is or how the library acquires it, although I do need to know an estimated time of arrival in case that’s important to my use case. One ALA speaker suggested the unorthodox practice of buying used books online and mailing them directly to patrons, simply because it can be cheaper than old-fashioned inter-library loan.)

Right now, my local library catalog accepts only inbound requests.  I have to go to the site and initiate a search for the title of interest (assuming I even know what I want). My library network (a consortia of many city libraries in a well-off, highly-educated region) isn’t part of WorldCat and certainly doesn’t provide any advanced discovery tools of its own.

Libraries need to move in the true Web 2.0 direction of providing outbound services.  They should broadcast their catalogs using a simple REST-like API.  It could be as simple as asking for http://mylibrary.org/isbn/123456789 and getting a brief XML response back: the book is available via loan and will take 3-5 days to arrive at the local branch. (An authenticated POST request could then reserve it.) There are already good models for these services in the form of the Google Books and Amazon APIs and there is nothing technically infeasible about it.

The regional library of the future should not be just a physical building to store books but a public service for getting books into its community.

Inspired by the conference, I did come back and make my first online request to my local library. It wasn’t difficult, and this morning I got an email notice that the book is waiting for me at the regional branch a couple blocks away. But it could be even easier, and I’d love to help build out that infrastructure.