Sponsored Link •
I've been doing a lot of media production in recent months and the efforts have borne fruit: I've created my first full-fledged eBook (after lots of research) and I've reworked the Hands-On Java eSeminar so it's now a download instead of mailing a CD.
The Atomic Scala eBook is available for sale! It took a lot longer than I expected, and I've learned a great deal about eBook creation in the process. I worked long and hard to make it look good on lots of devices: eReaders like the Kindle and Nook, tablet computers (it looks especially good in the iPad's iBooks) and desktop/laptop computers.
You can sample the first 100 pages (and make sure it works on your reading device) here.
Whenever I dive into a new technology, I always hope that this time someone will have worked out all the kinks in the process and I can just be a user rather than a pioneer/researcher who has to understand every low-level detail of the technology in order to get it to work. So far, this scheme hasn't worked out, and eBook technology holds true.
There are definitely some good tools out there. Sigil, the free & open-source tool for generating ePub, is pretty flawless -- I didn't have to do much of anything (once I had preprocessed the HTML) other than go through the proscribed steps. Sigil only produces ePub, so for Kindle, I used Calibre, also free & open-source. Both products are pretty amazing, but both require clean & adapted HTML as input. On top of that, in order to produce a Kindle book that properly supports embedded fonts on e-ink devices, I had to hijack the output of Calibre, process it a little and then run it through Amazon's Kindlegen tool. Figuring that out required a lot of wandering around bumping into walls.
Ultimately, I had to understand what the tools wanted as HTML and how to process my "filtered html" output from MS Word to produce that. For this I have become pretty darn good at using the Python BeautifulSoup library, an amazing tool that allows you to automate just about any manipulation on HTML that you can imagine. Extremely powerful, but of course there's a learning curve. This is my third time around the block with eBook generation, and finally I've gotten it all sorted out -- you can see this in the free sample (which includes both ePub and Kindle formats).
Oh, and then there's the eBook readers themselves. Every device has its own idiosyncrasies, so you need to have access to as many of them as possible for adequate testing. I ended up with an oldish Android tablet, a Kindle keyboard, a Nook, and an iPad (boy, do things look nice in iBooks!). I have a friend with a Kindle Fire, and another with a Kobo. Despite all that testing I will still be unsurprised if someone tells me that the format won't work on their device. Fortunately I've included HTML and PDF as backups so I think the bases are covered; also the free download includes the eBook formats so people will be able to decide ahead of time whether the eBook will work for them.
One saving grace: the payment and distribution system I'm using, Gumroad.com, allows you to easily push updates to existing customers. So if there are any problems (and when I do bug-fix updates) it's easy to update everyone.
So now I know much more than I ever hoped to about creating eBooks. It was very much like some point-and-click adventure game where you wander around, then periodically encounter a random puzzle that you have to struggle with but ultimately doesn't have much meaning. Still, it was satisfying to achieve some level of mastery of eBook production, and I'm happy with the results.
This is now available through Gumroad, at a new lower price of 29$ (instead of 50$ + shipping and handling).
For the longest time we've sold this as a CD-ROM (a term which has taken its place alongside "fax" and "pager"). Although I was initially hesitant to reconfigure the course for modern HTML5 browsers, upon reviewing the material I realized that most of it is still relevant for today's new Java programmers, so the course continues to have significant value. To be completely clear: this is the identical content that was published in 2000, but I still think you'll find it beneficial. My apologies to everyone for misdirections in the books and elsewhere: this is the final version of this eSeminar, despite various declarations of upcoming versions.
Have an opinion? Be the first to post a comment about this weblog entry.
|Bruce Eckel (www.BruceEckel.com) provides development assistance in Python with user interfaces in Flex. He is the author of Thinking in Java (Prentice-Hall, 1998, 2nd Edition, 2000, 3rd Edition, 2003, 4th Edition, 2005), the Hands-On Java Seminar CD ROM (available on the Web site), Thinking in C++ (PH 1995; 2nd edition 2000, Volume 2 with Chuck Allison, 2003), C++ Inside & Out (Osborne/McGraw-Hill 1993), among others. He's given hundreds of presentations throughout the world, published over 150 articles in numerous magazines, was a founding member of the ANSI/ISO C++ committee and speaks regularly at conferences.