Posts in the “personal” category

Song of the Day: Brothers in Arms, Dire Straits

“Now the Sun’s gone to hell
And the Moon riding high
Let me bid you farewell
Every man has to die.

But it’s written in the starlight
And every line in your palm
We’re fools to make war
On our brothers in arms.”

Today’s song of the day is Brothers in Arms, by Dire Straits.

Amazon Kindle eBooks: OPF file example

As a quick note today, I’ve been trying to build my own Amazon Kindle eBook using HTML and CSS, and yesterday I learned that I also need an OPF file as part of the process of creating both the eBook and the Table of Contents (TOC).

This morning I found that Amazon has a collection of sample books that you can use with Kindlegen, and the “Guide” project specifically includes the following example OPF file, which is well-documented.

An example Kindle OPF file

As mentioned, this example Kindle OPF file is well-documented, and comes with Amazon’s eBook samples, as part of their Kindlegen documentation. I include it here because it was the only way I was able to create an OPF file for my own Kindle eBook:

<?xml version="1.0" encoding="utf-8"?>
<!--
  The unique identifier in <package unique-identifier=”XYZ”> is a reference to
  the identifier specified in <metadata> as <dc:Identifier id=”XYZ”>.
-->
<package xmlns="http://www.idpf.org/2007/opf" version="2.0" unique-identifier="BookId">

<!--
    Metadata:
    The required metadata element is used to provide information about the publication
    as a whole.
    
    For detailed info visit: http://www.idpf.org/2007/opf/OPF_2.0_final_spec.html#Section2.2
-->
    
<metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:opf="http://www.idpf.org/2007/opf">
  
  <!-- Title [mandatory]: The title of the publication. This is the title that will appear on the "Home" screen. -->
  
    <dc:title>Kindle User's Guide</dc:title>
  
  <!-- Language [mandatory]: the language of the publication. The language codes used are the same as in XML
  and HTML. The full list can be found here: http://www.w3.org/International/articles/language-tags/
  Some common language strings are:
  "en"    English
  "en-us" English - USA
  "en-gb" English - United Kingdom
  "fr"    French
  "fr-ca" French - Canada
  "de"    German
  "es"    Spanish
  -->
    <dc:language>en-us</dc:language>

  <!-- Cover [mandatory]. The cover image must be specified in <manifest> and referenced from
  this <meta> element with a name="cover" attribute.
  -->
  <meta name="cover" content="My_Cover" />
  
  <!-- The ISBN of your book goes here -->
  
    <dc:identifier id="BookId" opf:scheme="ISBN">9781375890815</dc:identifier>
  
  <!-- The author of the book. For multiple authors, use multiple <dc:Creator> tags.
       Additional contributors whose contributions are secondary to those listed in
       creator  elements should be named in contributor elements.
  -->
    <dc:creator>Amazon.com</dc:creator>
  
  <!-- Publisher: An entity responsible for making the resource available -->
  
    <dc:publisher>Amazon.com</dc:publisher>
  
  <!-- Subject: A topic of the content of the resource. Typically, Subject will be
           expressed as keywords, key phrases or classification codes that describe a topic
           of the resource. The BASICCode attribute should contain the subject code
       according to the BISG specification:
       http://www.bisg.org/what-we-do-20-73-bisac-subject-headings-2008-edition.php
   -->
    <dc:subject>Reference</dc:subject>
  
  <!-- Date: Date of publication in YYYY-MM-DD format. (Days and month can be omitted).
       Standard to follow: http://www.w3.org/TR/NOTE-datetime
  -->
    <dc:date>2009-11-17</dc:date>

  <!-- Description: A short description of the publication's content. -->
  <dc:description>An overview of all the Amazon Kindle features and how to use them. 3rd Edition.</dc:description>
    
</metadata>

<!--
    Manifest:
    The required manifest must provide a list of all the files that are part of the
    publication (e.g. Content Documents, NCX table of contents, image files, CSS style sheets).
  Kindlegen however does not require CSS and images to be specified in the manifest if they
  are referenced from the content HTML.
    The manifest element must contain one or more item elements with the following media-type attributes:
  
  text/x-oeb1-document      HTML content files
  application/x-dtbncx+xml  NCX table of contents
  image/jpeg                JPEG image
  image/GIF                 GIF image
  
    For detailed info visit: http://www.idpf.org/2007/opf/OPF_2.0_final_spec.html#Section2.3
-->

<manifest>
  <!-- HTML content files [mandatory] -->
    <item id="item3" media-type="application/xhtml+xml" href="UG-C2.html"></item>
    <item id="item4" media-type="application/xhtml+xml" href="UG-C3.html"></item>
    <item id="item5" media-type="application/xhtml+xml" href="UG-C4.html"></item>
    <item id="item6" media-type="application/xhtml+xml" href="UG-C5.html"></item>
    <item id="item8" media-type="application/xhtml+xml" href="UG-C7.html"></item>
    <item id="item1" media-type="application/xhtml+xml" href="UG-C1.html"></item>
    <item id="item14" media-type="application/xhtml+xml" href="toc.html"></item>
    <item id="item15" media-type="application/xhtml+xml" href="UG-C6.html"></item>
    <item id="item13" media-type="application/xhtml+xml" href="Welcome.html"></item>
    <item id="item16" media-type="application/xhtml+xml" href="UG-C8.html"></item>
    <item id="item18" media-type="application/xhtml+xml" href="UG-C9.html"></item>
    <item id="item19" media-type="application/xhtml+xml" href="UG-C10.html"></item>
    <item id="item20" media-type="application/xhtml+xml" href="Specifications.html"></item>

    <item id="GraphicsC5_C5Screen-rating" media-type="image/gif" href="GraphicsC5/C5Screen-rating.gif"/>
    <item id="GraphicsC5_C5Screen-Storefront" media-type="image/gif" href="GraphicsC5/C5Screen-Storefront.gif"/>
    <item id="GraphicsC5_C5Screen-Details" media-type="image/gif" href="GraphicsC5/C5Screen-Details.gif"/>


    note from Al: these items go on for about 85 lines ...


    <item id="GraphicsC3_C3Screen-blognextarticle" media-type="image/gif" href="GraphicsC3/C3Screen-blognextarticle.gif"/>
    <item id="GraphicsC3_C3Screen-newspaper" media-type="image/gif" href="GraphicsC3/C3Screen-newspaper.gif"/>
    <item id="GraphicsC3_C3Screen-readermenu" media-type="image/gif" href="GraphicsC3/C3Screen-readermenu.gif"/>
    
  <!-- table of contents [mandatory] -->
    <item id="My_Table_of_Contents" media-type="application/x-dtbncx+xml" href="KUG.ncx"/>
  
  <!-- cover image [mandatory] -->
  <item id="My_Cover" media-type="image/gif" href="GraphicsWelcome/WImage-cover.gif"/>
</manifest>

<!--
    Spine:
    Following manifest, there must be one and only one spine element, which contains one
    or more itemref elements. Each itemref references an document designated
    in the manifest. The order of the itemref elements organizes the associated content
    files into the linear reading order of the publication.
    
    The toc attribute refers to the id ref of the NCX file specified in the manifest.
    
    For detailed info visit: 
        http://www.idpf.org/2007/opf/OPF_2.0_final_spec.html#Section2.4
        http://www.niso.org/workrooms/daisy/Z39-86-2005.html#NCX
-->
    
<spine toc="My_Table_of_Contents">
  <!-- the spine defines the linear reading order of the book -->
    <itemref idref="item14"/>
    <itemref idref="item13"/>
    <itemref idref="item1"/>
    <itemref idref="item3"/>
    <itemref idref="item4"/>
    <itemref idref="item5"/>
    <itemref idref="item6"/>
    <itemref idref="item15"/>
    <itemref idref="item8"/>
    <itemref idref="item16"/>
    <itemref idref="item18"/>
    <itemref idref="item19"/>
    <itemref idref="item20"/>
</spine>

<!--
    Guide:
    Within the package there may be one guide element, containing one or more reference elements.
    The guide element identifies fundamental structural components of the publication, to enable
    Reading Systems to provide convenient access to them.
  
  For detailed info visit: http://www.idpf.org/2007/opf/OPF_2.0_final_spec.html#Section2.6
  
  The Kindle reading system support two special guide items which are both mandatory.
  type="toc"  [mandatory]: a link to the HTML table of contents
  type="text" [mandatory]: a link to where the content of the book starts (typically after the front matter)
    
  Kindle reading platforms need both thede guid items to provide a consistent user enxperience to the user.
  
  It is good practice to include both a logical table of contents (NCX) and an HTML table of contents
  (made of hyperlinks). The NCX enables various advanced navigation features but the HTML table of
  contents can easily be discovered by the user by paging through the book. Both are useful.
    
-->
    
<guide>
    <reference type="toc" title="Table of Contents" href="toc.html"></reference>
    <reference type="text" title="Welcome" href="Welcome.html"></reference>
</guide>

</package>

Discussion

Amazon also has their Kindle Publishing Guidelines PDF document, but seeing this sort of OPF file example was the only way I was able to piece together what should go in an OPF file when you’re creating a Kindle eBook from your own HTML and CSS. The documentation in this file is priceless if you’re trying this process on your own.

On deleting a chapter from the Scala Cookbook

In an effort to “Get rid of the crap,” I asked my editor if we could delete an entire chapter from the Scala Cookbook, and she said yes. I didn’t know if they’d allow that since the advance they paid me is based on a proposal of X chapters, but they’re all-in on just trying to create a good book, which is nice.

“Sooner or later, we all go through a crucible”

“Sooner or later, we all go through a crucible ... Most believe there are two types of people who go into a crucible. The ones who become stronger from the experience and survive it, and the ones who die. But there’s a third type. The ones who learn to love the fire and choose to stay in their crucible because it’s easier to embrace the pain when it's all you know anymore.”

Sebastian Blood, Arrow

“You watchin’ this?”

While I’m on the treadmill, an extremely large, muscular guy walks into the fitness center. He looks at the big-screen television, which is currently playing a commercial, and then looks at me. “You watchin’ this?,” he asks forcefully.

As he turned to look at me, the show I was watching came back on. I catch my breath, point at the tv, and say, “The Princess Bride.”

He turns and looks back at the tv for a few moments. “Cool,” he says, and begins to lift some weights.

Tom Petty and The Traveling Wilburys’ “End of the Line”

Whenever I think about Tom Petty, the first things I think of are the song Free Fallin’, and the Wildflowers album. Other great songs are Runnin’ Down a Dream, Mary Jane’s Last Dance, and Learning to Fly. But today I’m thinking of The Traveling Wilburys’ End of the Line:

Well it’s all right, even if you’re old and grey
Well it’s all right, you still got something to say
Well it’s all right, remember to live and let live
Well it’s all right, the best you can do is forgive.

One fighter with a sharp stick and nothing left to lose can take the day

“Saw Gerrera used to say one fighter with a sharp stick and nothing left to lose can take the day. They’ve no idea we’re coming. They’ve no reason to expect us. If we can make it to the ground, we’ll take the next chance. And the next. On and on until we win, or the chances are spent.” ~ Jyn Erso

It’s not a stretch to say that the last 55 minutes of Rogue One: A Star Wars Story are as good as any movie I’ve ever watched.

Medical records

After a while you both get used-to and tired-of seeing medical bills like this (a bill from my recent surgery).

It’s a little weird to think I left my appendix in Alabama, my gallbladder in Alaska, and my thyroid and now some additional parts in Colorado.