Bookbox Update – Pictures

I did an update to my BookBox project, adding additional storage in the form of a rescued 320 GB harddrive from my old media center computer. This was a simple matter of formatting, copying the ebooks and mounting the new drive on the /books folder that I used in the earlier form of the project.

This project has proved extremely robust, running 24/7 for two years.

20130214_200410 - Labels


Bookbox HTML Bookbox Landing




The BookBox : A localized, portable ebook delivery system using open-source components

Ebooks are becoming an essential part of library services. Most library eBooks are delivered through third party vendors encumbered by DRM and access controls. Open and out of copyright ebooks provide a large library of books and articles that Librarians and information professionals can experiment with and provide to their patrons.

This post shows how librarians can use cast-off technology to create a localized ebook  delivery system to deliver ebooks over a Wifi connection. The system described in this post can be put together with a wide variety of hardware, much of which can be re-purposed from obsolete components. This system can also be powered by battery power to deliver a large number of electronic texts to school rooms, agricultural centers or higher educational institutions even in areas without consistent electrical power.

Components of the system.

  1.  A computer that can run the Debian operating system. Old laptops, old desktops, plug computers and even NAS devices like the PogoPlug can be used as the computing platform.
  2.  A Router capable of running  the DD-WRT open source firmware
  3.  A USB drive or flash memory key ( if computer doesn’t have memory like the PogoPlug)
  4.  (optional) A battery pack
  5.  (optional) An enclosure to hold the system.

For my example build I used a Seagate FreeAgent DockStar as the base computer and a Asus WL – 330GE as the router. My example build fits in a standard metal lunch box, including a battery pack. My example build cost ~$100 US.

Plug the computer into a router with an ethernet cable.

Install Debian on the computer platform. Debian can be downloaded from

In my example build, I used a Seagate DockStar FreeAgent NAS device and installed Debian from the version maintained by Jeff Doozan. His instructions for installing Debian on the Dockstar are found at

If using the DockStar as I did in my example build, David Dart’s guide to creating the ‘PirateBox’ can give you additional valuable advice on mounting partitions on your drive or USB memory key.

Install the Monkey webserver software on your project computer.
The Monkey webserver is an extremely simple webserver with minimal configuration required. You can install monkey using the apt program manager by issuing the command

sudo apt-get install monkey

All of the monkey configuration files are found in conf/ directory.
Open monkey.conf in nano by issuing the command

sudo nano monkey.conf

In monkey.conf, ensure that monkey is listening on port 80, and note the location of the HTTP directory. If necessary, you can change the location of the HTTP directory. This is the location where we’ll be uploading the ebook files.

Save the monkey.conf file.

To test, create an index.html file with ‘Hello World’. Open the IP address that your router has given the computer like this http://%5BIP Address]:[Port Number].

On another computer, use the Calibre software ( ) to create an ebook library from the source of your choice. Calibre is a powerful tool for organizing, editing, creating and distributing eBooks. Sources for your library include the Project Gutenberg books, open access books from the Internet Archive, or a project like TEEAL Using Calibre you can add metadata, download covers and other details from and the Internet Archive.

Once your Calibre library is created, you can use a companion program called Calibre2odps to create a set of static HTML pages.

This set of static HTML pages can be uploaded to any webserver, in any location.

Copy the complete Calibre2odps library over to the HTTP directory of your Debian webserver.

Your webserver can now be plugged into any network connection, and will serve up the complete catalog in HTML and ODPS formats on port 80.

I created a simple index.html landing page pointing to both the catalog.html and catalog.xml files. This is the default landing page.

To create a standalone system, use an old router capable of running the DDWRT open source firmware. You can find a list of compatible routers by visiting

Install DDWRT according to the directions for your particular model. For my project I used the Asus WL330GE because it can be powered by a USB cable.

Once DDWRT is installed, you can change the SSID to something more appropriate, I suggest ‘Bookbox’

Plug the DDWRT router into your computer platform, turn everything on and connect to your ‘Bookbox’ wireless network.

The goal of this setup is to force all traffic to visit index.html when they connect to the network.

Point your browser to to visit the control interface for the router.  Go to Status > LAN and write down the IP address that has been assigned to the computer by the router. This may take a while.

Next, go to Services > Services  and set the DNSMasq and Local DNS buttons to Enable. In the “Additional DNSMasq Options” add the following

address=/#/ (enter the IP address you wrote down)

Click Save.

Go to Services > Hotspot tab and click Enable beside HTTP Redirect.

Enter the following items

HTTP Destination IP: (Your server’s IP Address)

HTTP Destination Port: 80

HTTP Source Network: (the “0” denotes the whole range of IP addresses under this address)

Click Save, then go to the Administration > Management tab and click the Reboot Router button at the bottom of the page. Wait for the router to reboot and enter any address in the address bar of your browser. You should now be redirected to the index.html landing page .

If you connect to the Bookbox wireless network with a ODPS compatible ebook reader you can browse a catalog of ebooks within the ereader.

If this system has been put together with a plug computer, or using one of the systems that David Darts prototyped with his Piratebox systems, you should be able to power the entire system using a consumer laptop external battery pack. The DockStar or Pogoplug systems are particularly easy to power as their extra USB ports can easily provide power to the router over USB. The entire system, when set up using the DockStar and the Asus WL330GE  can be fit into a standard tin lunchbox, including a fairly large battery pack.

I have found that simpler web browsers, such as those found on e-readers actually handle this system better than the more complex Mobile Safari. From the feedback from David Darts project, it looks like Android phones seem to handle this connection quite well.


Barcodes are dead. Long live the barcode!

I’ve noticed a mindless consensus among the geek literati when talking about QR Codes. Often a blog post will discuss the various uses they are put to, then end with the phrase ‘But I think that NFC will replace them in the near future’.


I have an RFID system in my library. My long term experience in libraries is with barcodes. I’ve already done the QR Code vs NFC dance. While both have their advantages, I think the two technologies are complementary, not competitive. And barcodes have the advantage.

The cost of production for barcodes is ink and paper. They have a standard protocol for communication between the reader and the computer. I can plug a barcode reader into a USB port and scan off the raw numbers on the barcodes into Excel.

I can make a barcode whenever I want using standard office products. If I’m enthusiastic I can decode what a barcode means with a Mark 1 Eyeball. This simplicity of communication between printed text and computer systems is the major advantage of barcodes

The major problems with barcodes is the bandwidth and the data storage. Laser scanning is a little slow, and the few bits you can store in a printed barcode are not really sufficient.

Using barcodes as identifiers, then pulling the rest of the information from a networked system solves the bandwidth and information storage problem.

RFID tags cannot just replicate what barcodes do. If I’m using a NFC tag to point to a URL, what’s the point? The $1 NFC tag sticker pointing to that URL is redundant when it can be duplicated by my printer as part of the standard design for a few cents in design fees and ink.

RFID will work in a few crucial areas.

  1. The offline data requirements are of a larger size than what can be accommodated in a barcode.
  2. You need to avoid the one-at-a-time scan bottlenecks of barcodes.
  3. You need to track the location of a tagged item at all times.
  4. You have two networked devices (say POS and smartphone) that need to communicate securely only in a specific place. (and Facecash proves that QR codes work just fine for this)

RFID stickers will not replace the barcode.

NFC Point of Sale devices have promise, and are actually in use already with many tap-to-pay services. Industry and government will continue to use RFID in the locations where it works. NFC will probably revolutionize device-to-device communication.

For you and me, the easiest way to get information from print to computer will still be some variation of the barcode.

Computer Troubleshooting for Librarians

Troubleshooting is a specialized domain of problem solving that is mostly concerned with computers, electronics and mechanical systems. As librarians we have to deal with all of these as a part of our job and in our private lives.

The principles of troubleshooting are usually specific to a field, electronics engineers do one type, programmers use another set of tools. There are general principles that apply across all disciplines, and I’ll try to bring out a couple of specific techniques for computers that can help us solve problems on our own.

First, keep it simple, stupid. Most computer problems are solved by restarting the computer. Write down any error code the computer shows. Connection points are the most likely places for any connection to fail, so check the cables by pulling them out and putting them back in carefully.

Second, use your resources. Have any of your co-workers had this problem before? Ask a question on a listserv, or read the manual. If your manuals are electronic, use your search skills. A good desktop search program, like Copernicus or Google Desktop Search, limited to just that set of files, will give you better results than the built-in Adobe or Microsoft search.

Third, just Google it. Operating system errors and program errors will have happened to other people, many of who are more experienced at troubleshooting than you or I. This will not work for your proprietary systems like your ILS, especially if you are using something more than 3 or 4 years old. Use advanced search techniques, you’ll often get better results than the IT department. (Yes, this is what they do.)

Fourth, remember that this computer problem is just a research question. Write down the terminology. Map the concepts, Draw the connection between widget A and widget b. Like any good subject librarian, you need to know a broad overview. Don’t worry about programming unless you’re interested in it. Start with a binder. Move on to a wiki if you have the interest.

Fifth, and finally, only solve the problem once. If you discover a solution, or IT helps you solve it, write your steps. Just like finding aids for students, these pathways will get you thinking when you run into the same or related computer problems.

The Scroll and the Codex: Two Different Views on Ebooks

Due to the rather unique collection in our library and our location, we depend pretty heavily on electronic journals and ebooks. I am dealing with a lot of problems with pdf ebooks for research at the moment, and I also read a lot of fiction (Mobipocket and an old Palm T|X at the moment) in ebook format, and I’m struck at the differences.

We are at a transition period in how we consume information, and it appears that we have simply carried forward the information access issues that existed at the turn of the last millenium.

I’m talking, of course, about the scroll and the codex.

A scroll is a single long sheet with words printed from top to bottom. A codex is a book as we would recognize one. I’m dealing with both in interfaces optimized for the scroll.

PDF ebooks have been particularly difficult to deal with. To have the text at a readable level, you have to zoom in significantly. This puts the top and bottom of the page outside of the viewing window of most modern computer screens, especially with the standard 17 inch screens at most workplaces. AJAXy interfaces like Library Press Display make even less sense on small screens. This is because our standard screens work best with an internet-pages, which imitate a scroll.

The small screen on my palm T|X suffers from the same problem, however using the Mobipocket reader converts everything into a scroll.

The scroll is fine for end-to-end reading. It has it’s own built in bookmarking feature. However, it is useless for reference purposes.

The codex is great for reference purposes. It bookmarks well, but not as good as the scroll. It’s more portable and durable than a scroll.

Why are we forcing something so revolutionary and different, viz the electronic book, into these two formats? Using PDF files, which force a codex form on a scroll, or plain text/mobipocket/EPUB files which roll out like a scroll, but suffer from a serious lack of precision in layout and destroy the benefits of the codex.

So, what’s the solution? I’m just a librarian, not a software engineer. Stick with the format that fits. Scroll-type ebooks are great for novels.Forced-codex PDF files are good for making sure that the text and pictures look good when they’re printed out (and very little else). Paper books still have a pretty good advantage over both despite the weight  and size problems. We still don’t have a format for printed words out there that takes the advantage away from the evolutionary, revolutionary, incredible paper book.

Why you need an Information Professional – Checking your Sources

I watched an episode of CSI a few nights ago, # 180 – The Theory of Everything.

The episode itself is pretty amusing, for a former physics geek like me the name-dropping of famous scientists was a lot of fun. The big issue with this episode (and it’s huge) is their choice for the portrayal of certain small, ground dwelling animals. The ground squirrels were miscast.

The first image is the ‘ground squirrels’ depicted in the CSI episode. This is a Grey Squirrel. It lives in trees.

Grey Squirrel

Below, is the ‘Ground Squirrel’ I grew up with in Alberta. This particular variety is called the Richardson Ground Squirrel.

Richardsons Ground Squirrel

There are a great many species of ground squirrel around the world. None of them looks like the Grey Squirrel. Bushy tails are of little use underground.

I’m confused as to the reasons for this error. There are times when the ground squirrels appear to be CGI, and some where they appear to be trained animals. Perhaps it was an executive decision to use the cheaper trained Grey Squirrels with the assumption that very few people would notice.

Have businesses done the ‘squirrel swap’ thinking no one is going to notice? When are two products interchangeable? Even more important, when are two sources of information interchangeable?

In the knowledge economy, simple errors in information like this can have significant implications. Take the example of the Mars Climate Orbiter. Lockheed Martin used English measurements to program the Orbiter. NASA has been using metric since the 1990s. When the two systems tried to communicate, an error happened an a $125 million dollar project became an example in textbooks.

Solving these problems is what Information Professionals do.

Business Tools – PortableApps

There are many uses for portable applications. Security, portability, and keeping all your settings in one place are all advantages of portable applications. However, using these applications can be a little difficult.

My solution for this is the PortableApps suite. You can choose the extent of the applications to install on your USB drive, including OpenOffice for documents and spreadsheets, GAIM for instant messaging and Thunderbird for email.

You’ll note that the PortableApps launcher acts very similar to the U3 launcher I recommended against earlier. The major differences are that the PortableApps launcher is open source, does not require administrator privledges on your computer and can work with a wide variety of open and closed source applications.