The eBook is finally finished!

This was my third time around the block in the process of creating an eBook; the first two times were not successes but I learned a lot in the process. Mostly that this isn’t a mature technology where you can just use some kind of lovely WYSIWYG editor, press a button and then expect to see nice results across all platforms. There are programs and services out there that do promise this, but if the book has any complexity to it — in our case, code formatting + embedded fonts — they don’t handle it very well, or at all. For our book, I had to (eventually) take an early-adopter stance and just become fairly expert at all the details of eBook production. My best friends were BeautifulSoup (a Python library for manipulating HTML), Calibre, Sigil and Amazon’s Kindlegen. (I’ve sent donations to the first three, which are open-source).

I also had to test on as many devices as possible because every device seems to have its own idiosyncrasies and unless you try each format on at least a few devices you can’t really hope that it’s going to look OK. So I’ve accumulated a Kindle 3 (Keyboard), a Nook, an Android tablet, and an iPad (the ePub version looks fantastic on the iPad!). I also tested with friends’ devices. It’s always risky in the software world to say “it’s done,” but I will say that it’s been reasonably well tested.

We decided against any kind of digital rights management (DRM) — that makes it painful to install and also to put it on multiple devices.

I created the eBook in 4 formats, to try to make sure that everyone has as many choices as possible. The zip file you get when you buy includes all of them:

  • HTML
  • PDF with index for easy navigation
  • ePub which works on non-Kindle devices and in Apple iBooks
  • mobi for all Kindle devices including and after the Kindle 3 (Keyboard); also works on Android and other devices which support the Kindle reader software.

The package includes a README.txt which includes installation instructions.

I’m using for sales and delivery, and they have an automatic system to push updates to customers, so if we do find errors or need to make changes, you’ll get the updates seamlessly.

I’ve also come up with what I think is a good solution for showing corrections and updates to the book (page numbering is not a fixed quantity with ebooks).

We also have the solutions available (Dianne worked long and hard on these), along with all the example code from the book (James Ward has also set this up to work with Typesafe Activator).


Print Friendly
Bookmark and Share
This entry was posted in Uncategorized by bruceteckel. Bookmark the permalink.

About bruceteckel

Bruce Eckel is the author of Thinking in Java and Thinking in C++, and a number of other books on computer programming. He’s been in the computer industry for 30 years, periodically gets frustrated and tries to quit, then something like Scala comes along and offers hope and sucks him back in. He’s given hundreds of presentations around the world and enjoys putting on alternative conferences and events like The Java Posse Roundup. He lives in Crested Butte, Colorado where he often acts in the community theatre. Although he will probably never be more than an intermediate-level skier or mountain biker, he finds these very enjoyable pursuits and considers them among his stable of life-projects, along with abstract painting. He is currently studying organizational dynamics, trying to find a new way to organize companies so that working together becomes a joy; you can read about his struggles in this arena at, while his programming work can be found through

Comments are closed.