<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/rss-style.xsl" type="text/xsl"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	    xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	     xmlns:dc="http://purl.org/dc/elements/1.1/"
	   xmlns:atom="http://www.w3.org/2005/Atom"
	     xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	  xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>
<channel>
	<title>ebook &#8211; Terence Eden’s Blog</title>
	<atom:link href="https://shkspr.mobi/blog/tag/ebook/feed/" rel="self" type="application/rss+xml" />
	<link>https://shkspr.mobi/blog</link>
	<description>Regular nonsense about tech and its effects 🙃</description>
	<lastBuildDate>Tue, 14 Apr 2026 21:38:14 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://shkspr.mobi/blog/wp-content/uploads/2023/07/cropped-avatar-32x32.jpeg</url>
	<title>ebook &#8211; Terence Eden’s Blog</title>
	<link>https://shkspr.mobi/blog</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title><![CDATA[How long does it take to upgrade an eBook?]]></title>
		<link>https://shkspr.mobi/blog/2025/08/how-long-does-it-take-to-upgrade-an-ebook/</link>
					<comments>https://shkspr.mobi/blog/2025/08/how-long-does-it-take-to-upgrade-an-ebook/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Fri, 08 Aug 2025 11:34:12 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[a11y]]></category>
		<category><![CDATA[accessibility]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[ebooks]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=61927</guid>

					<description><![CDATA[The older I get, the more comfortable I become with complaining. Not merely moaning on social media, but writing a direct email to the perpetrator of some annoyance.  I&#039;d purchased an eBook and was appalled by how crappy the accessibility was. If you don&#039;t know, modern ePub books are just HTML wrapped in a zip file. They have all of the accessibility advantages of the web and should be easy to…]]></description>
										<content:encoded><![CDATA[<p>The older I get, the more comfortable I become with complaining. Not merely moaning on social media, but writing a direct email to the perpetrator of some annoyance.</p>

<p>I'd purchased an eBook and was <em>appalled</em> by how crappy the accessibility was. If you don't know, modern ePub books are just HTML wrapped in a zip file. They have all of the accessibility advantages of the web and should be easy to read no matter if you're sighted or not.</p>

<p>But not this eBook!  Part of the story concerned WhatsApp messages sent by the protagonist. Here's one of them:</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2025/07/whatsapp.webp" alt="Text with a tiny emoji, the size of a full stop." width="1000" height="502" class="aligncenter size-full wp-image-61928">

<p>See that smudge in the middle? The one smaller than a full stop? That's meant to be an emoji. Rather than use an <em>actual</em> emoji, they've stuck in a tiny pixel image which won't scale with text size.</p>

<p>Here is is:</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2025/07/f0006-01.jpg" alt="Tiny emoji" width="13" height="14" class="aligncenter size-full wp-image-61929">

<p>Can't see it? Let me blow it up to a more readable size.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2025/07/f0006-01.jpg" alt="Pixelated mess." width="130" height="140" class="aligncenter size-full wp-image-61929">

<p>OK, that's annoying for sighted readers, but just about understandable. What about people who are using a screen reader? Luckily, ePubs can use HTML's "alt text" feature which will describe an image which can't be seen.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2025/07/alt.webp" alt="The alt text just says 'image'&quot;." width="808" height="123" class="aligncenter size-full wp-image-61931">

<p>Curses! That's, perhaps, not <em>too</em> annoying for a decorative image - but later in the book there are pictures of a ransom note. Despite the plot-twisting text in the illustration, the alt text just says "image".</p>

<p>I found the publisher's website and scoffed at their proclaimed accessibility statement. I sent them an email which basically consisted of the above. I realised it was probably futile, but I've got to spend my privilege points somehow.</p>

<p>The next day, they wrote back!</p>

<blockquote><p>I wanted to reply to let you know we are taking our commitments to accessibility in our ebooks seriously […] I will get our ebook team to check this as a matter of urgency and get back to you with an update.</p></blockquote>

<p>Fair play. But talk is cheap, would they actually take action? A few days later, they sent a follow-up:</p>

<blockquote><p>We have checked the file for this title again and found issues with it. We have sent this back to the conversion house to have the file corrected and expect this to be delivered by the end of the week. We would then expect this corrected version to be with Kobo by the end of the following week, i.e. 25th July.</p>

<p>We have also been spot-checking other files to see if there is a wider issue and where necessary will follow the same workflow to ensure fully accessible versions are available as widely as possible.</p></blockquote>

<p>And, you know what, I think that's totally reasonable. Yeah, they should have caught it before publication - but it is a complex book and they're a small publisher. They took my complaint seriously and actually did something about it.</p>

<p>A week or so rolled by and they sent me this:</p>

<blockquote><p>Just to update you that we have been back and forth with the conversion house getting this title up to scratch. There were various complicating factors which should now be resolved and an updated file has now been distributed and should be available through your chosen retailer presently. If you have any other queries please do let us know.</p></blockquote>

<p>I logged on to my eBook provider, clicked "read" and…</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2025/08/fixed-epub.webp" alt="Text with large colourful emoji." width="1080" height="544" class="aligncenter size-full wp-image-62328">

<p>It was fixed! All the images had decent alt text as well.</p>

<p>Rather annoyingly, the retailer didn't notify me that there was an update available. I can't blame the publisher for that though.</p>

<p>Still, 3 weeks from report to fix is pretty good I reckon.</p>

<p>When I last contacted a publisher about a mistake in their ebook, <a href="https://shkspr.mobi/blog/2011/06/how-long-does-it-take-to-fix-an-ebook/">it took over 3 months to fix it</a>. Perhaps things are slowly getting better?</p>

<p>Anyway, please complain about poor accessibility. Don't shout into the void of social media - write a polite but insistent email telling (not asking) people to fix their shit. Sometimes, just sometimes, it does work.</p>

<p>Anyway you should read <a href="https://shkspr.mobi/blog/2025/07/book-review-the-mysterious-case-of-the-alperton-angels-by-janice-hallett/">The Mysterious Case of the Alperton Angels by Janice Hallett</a> - it is brilliant <em>and</em> accessible.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=61927&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2025/08/how-long-does-it-take-to-upgrade-an-ebook/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Some thoughts on LCP eBook DRM]]></title>
		<link>https://shkspr.mobi/blog/2025/03/some-thoughts-on-lcp-ebook-drm/</link>
					<comments>https://shkspr.mobi/blog/2025/03/some-thoughts-on-lcp-ebook-drm/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Fri, 14 Mar 2025 12:34:22 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[drm]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[ereader]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=58799</guid>

					<description><![CDATA[There&#039;s a new(ish) DRM scheme in town! LCP is Readium&#039;s &#34;Licensed Content Protection&#34;.  At the risk of sounding like an utter corporate stooge, I think it is a relatively inoffensive and technically interesting DRM scheme. Primarily because, once you&#039;ve downloaded your DRM-infected book, you don&#039;t need to rely on an online server to unlock it.  How does it work?  When you buy a book, your vendor…]]></description>
										<content:encoded><![CDATA[<p>There's a new(ish) DRM scheme in town! LCP is <a href="https://readium.org/lcp-specs/">Readium's "Licensed Content Protection"</a>.</p>

<p>At the risk of sounding like an utter corporate stooge, I think it is a relatively inoffensive and technically interesting DRM scheme. Primarily because, once you've downloaded your DRM-infected book, you don't need to rely on an online server to unlock it.</p>

<h2 id="how-does-it-work"><a href="https://shkspr.mobi/blog/2025/03/some-thoughts-on-lcp-ebook-drm/#how-does-it-work">How does it work?</a></h2>

<p>When you buy<sup id="fnref:licence"><a href="https://shkspr.mobi/blog/2025/03/some-thoughts-on-lcp-ebook-drm/#fn:licence" class="footnote-ref" title="*sigh* yeah, technically licencing." role="doc-noteref">0</a></sup> a book, your vendor sends you a <code>.lcpl</code> file. This is a plain JSON file which contains some licencing information and a link to download the ePub.</p>

<p>Here's a recent one of mine (truncated for legibility):</p>

<pre><code class="language-json">{
    "issued": "2025-03-04T12:34:56Z",
    "encryption": {
        "profile": "http://readium.org/lcp/profile-2.0",
        "content_key": {
            "algorithm": "http://www.w3.org/2001/04/xmlenc#aes256-cbc",
            "encrypted_value": "+v0+dDvngHcD...qTZgmdCHmgg=="
        },
        "user_key": {
            "algorithm": "http://www.w3.org/2001/04/xmlenc#sha256",
            "text_hint": "What is your username?",
            "key_check": "mAGgB...buDPQ=="
        }b
    },
    "links": [
        {
            "rel": "publication",
            "href": "https://example.com/96514dea-...-b26601238752",
            "type": "application/epub+zip",
            "title": "96514dea-...-b26601238752.epub",
            "length": 14364567,
            "hash": "be103c0e4d4de...fb3664ecb31be8"
        },
        {
            "rel": "status",
            "href": "https://example.com/api/v1/lcp/license/fdcddcc9-...-f73c9ddd9a9a/status",
            "type": "application/vnd.readium.license.status.v1.0+json"
        }
    ],
    "signature": {
        "certificate": "MIIDLTCC...0faaoCA==",
        "value": "ANQuF1FL.../KD3cMA5LE",
        "algorithm": "http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha256"
    }
}
</code></pre>

<p>Here's how the DRM works.</p>

<ol>
<li>Your client downloads the ePub from the <code>links</code> section.</li>
<li>An ePub is just a zip file full of HTML files, the client unzips it.

<ul>
<li>The metadata and cover image are <strong>not</strong> encrypted - so you can always see the title and cover. All the rest - HMTL, images, fonts, etc - are encrypted with AES 256 CBC.</li>
</ul></li>
<li>The <code>.lcpl</code> file is placed in the <code>META-INF</code> directory and renamed <code>license.lcpl</code>.</li>
<li>A new ePub is created by re-zipping the files together.</li>
</ol>

<p>When your client opens the encrypted ePub, it asks you for a password. If you don't know it, you get the hint given in the LCPL file. In this case, it is my username for the service where I bought the book.</p>

<p>The password is used by Readium's super-secret <a href="https://en.wikipedia.org/wiki/Binary_blob">BLOB</a> to decrypt the file.  You can then read the book.</p>

<p>But here's the nifty thing, the encrypted file is readable by <em>any</em> certified app.  I used the LCPL to download the book in two different readers. I unzipped both of them and they were bit-for-bit identical. I copied the book from one reader to another, and it was read fine.  I built my own by downloading the ePub and manually inserting the licence file - and it was able to be opened by both readers.</p>

<h2 id="apps-and-certification"><a href="https://shkspr.mobi/blog/2025/03/some-thoughts-on-lcp-ebook-drm/#apps-and-certification">Apps and Certification</a></h2>

<p>In order for this to work, the app needs to be certified and to include a binary BLOB which does all the decryption. <a href="https://readium.org/awesome-readium/">Readium have a list of readers which are available</a>, and there are plenty for all platforms.</p>

<p>On Linux, I tried <a href="https://thorium.edrlab.org/en/">Thorium</a> and <a href="https://fbreader.org/linux/packages">FBReader</a>. Both were absolutely fine. For my eInk Android, I used <a href="https://fbreader.org/android">FBReader Premium</a> (available for free if you don't have Google Play installed). Again, it was a decent reading experience.</p>

<p>I took the file created by Thorium on Linux, copied it to Android, set the Android offline, typed in my password, and the book opened.</p>

<h2 id="open-source-and-drm"><a href="https://shkspr.mobi/blog/2025/03/some-thoughts-on-lcp-ebook-drm/#open-source-and-drm">Open Source and DRM</a></h2>

<p>To be fair to Readium, <a href="https://github.com/readium/">they publish a <em>lot</em> of Open Source code</a> and the <a href="https://readium.org/lcp-specs/">specification</a> seems well documented.</p>

<p>But the proprietary BLOB used for the decryption is neither <em>libre</em> -</p>

<blockquote><p><a href="https://github.com/edrlab/thorium-reader">Thorium Reader supports LCP-protected publications via an additional software component which is not available in this open-source codebase</a></p></blockquote>

<p>Nor <em>gratis</em> -</p>

<blockquote><p><a href="https://www.edrlab.org/projects/readium-lcp/pricing/">Our pricing is structured into tiers based on a company’s revenue</a></p></blockquote>

<h2 id="whats-the-worst-that-could-happen-with-this-drm"><a href="https://shkspr.mobi/blog/2025/03/some-thoughts-on-lcp-ebook-drm/#whats-the-worst-that-could-happen-with-this-drm">What's the worst that could happen with this DRM?</a></h2>

<p>Ultimately, our fear of DRM comes down to someone else being able to control how, when, and even if we can read our purchased books.  Could that happen here?</p>

<p>I'm going to go with a cautious <em>maybe</em>.</p>

<h3 id="positives"><a href="https://shkspr.mobi/blog/2025/03/some-thoughts-on-lcp-ebook-drm/#positives">Positives</a></h3>

<p>Once downloaded, the ePub is under your control. Back it up on a disk, store it in the cloud, memorise the bytes. It is yours and can't be forcibly deleted.  You can even share it with a friend! But you'd have to tell them the book's password which would make it trivially linkable to you if it ever got shared widely.</p>

<p>At the moment, any LCP book reading app will open it. Even if your licence is somehow revoked, apps don't <em>need</em> to go online. So there is no checking for revocation.</p>

<p><a href="https://www.w3.org/publishing/epub3/">ePub is an open standard</a> made up of zipped HTML, CSS, images, and fonts. An <em>unencrypted</em> ePub should be readable far into the future. LCP is a (paid for) <a href="https://www.iso.org/standard/84957.html">ISO Standard</a> which is maintained by a <a href="https://readium.org/membership/overview/">foundation</a> which is primarily run by <a href="https://www.edrlab.org/about/">an EU non-profit</a>. So, hopefully, the DRM scheme will also be similarly long-lived.</p>

<p>Because the underlying book is an ePub, it should have the same accessibility features as a normal ePub. No restrictions on font-sizes, text-to-speech, or anything similar.</p>

<p>Privacy. The BLOB only checks with the <em>issuer</em> of the book whether the licence is valid. That's useful for library books where you are allowed to borrow the text for a specific time. If you bought books from a dozen sources, there's no central server which tracks what you're reading across all services.</p>

<h3 id="downsides"><a href="https://shkspr.mobi/blog/2025/03/some-thoughts-on-lcp-ebook-drm/#downsides">Downsides</a></h3>

<p>Will the proprietary BLOB work in the future? If it never gets ported to Android 2027 or TempleOS, will your books be rendered unreadable on your chosen platform?</p>

<p>The LCPL file contains dates and signatures related to the licence. Perhaps the BLOB is instructed to check the licence after a certain period of time. Will your books refuse to open if the BLOB hasn't gone online for a few years?</p>

<p>If you forget your password, you can't open the book. Thankfully, the LCPL does contain a "hint" section and a link back to the retailer.  However, it's up to you to securely store your books' passwords.</p>

<p>The book seller knows what device you're reading on. When you load the LCPL file into a reader, the app downloads the ePub and sends some data back to the server. The URl is in the <code>status</code> section of the LCPL file. After opening the file on a few apps, mine looked like:</p>

<pre><code class="language-json">{
    "id": "fdcddcc9-...-f73c9ddd9a9a",
    "status": "active",
    "updated": {
        "license": "2025-03-04T12:34:56Z",
        "status": "2025-03-09T20:20:20Z"
    },
    "message": "The license is in active state",
    "links": [
        {
            "rel": "license",
            "href": "https://example.com/lcp/license/fdcddcc9-...-f73c9ddd9a9a",
            "type": "application/vnd.readium.lcp.license.v1.0+json"
        }
    ],
    "events": [
        {
            "name": "Thorium",
            "timestamp": "2025-03-04T15:49:37Z",
            "type": "register",
            "id": "7d248cae-...-c109b887b7dd"
        },
        {
            "name": "FBReader@framework",
            "timestamp": "2025-03-08T22:36:26Z",
            "type": "register",
            "id": "46838356-...-73132673"
        },
        {
            "name": "FBReader Premium@Boyue Likebook-K78W",
            "timestamp": "2025-03-09T14:54:26Z",
            "type": "register",
            "id": "e351...3b0a"
        }
    ]
}
</code></pre>

<p>So the book seller knows the apps I use and, potentially, some information about the platform they're running on. They also know when I downloaded the book. They may also know if I've lent a book to a friend.</p>

<p>It is trivial to bypass this just by downloading the ePub manually and inserting the LCPL file as above.</p>

<h2 id="drm-removal"><a href="https://shkspr.mobi/blog/2025/03/some-thoughts-on-lcp-ebook-drm/#drm-removal">DRM Removal</a></h2>

<p>As I've shown before, you can use <a href="https://shkspr.mobi/blog/2021/12/quick-and-dirty-way-to-rip-an-ebook-from-android/">OCR to rip an eBook</a>. Take a bunch of screenshots, extract the text, done. OK, you might lose some of the semantics and footnotes, but I'm sure a bit of AI can solve that. The names of embedded fonts can easily be read from the ePub. But that's not quite the same as removing the DRM and getting the original ePub.</p>

<p>When the DeDRM project published a way to remove LCP 1.0, <a href="https://github.com/noDRM/DeDRM_tools/issues/18">they were quickly hit with legal attacks</a>. The project removed the code - although it is trivial to find on 3rd party sites. Any LCP DRM removal tool you can find at the moment is only likely to work on <a href="https://readium.org/lcp-specs/releases/lcp/latest#63-basic-encryption-profile-10">Basic Encryption Profile 1.0</a>.</p>

<p>There are now multiple different encryption profiles:</p>

<blockquote><p><a href="https://www.edrlab.org/projects/readium-lcp/encryption-profiles/">In 2024, the EDRLab Encryption Profile 1.0 was superseded by 10 new profiles, numbered “2.0” to “2.9”. Every LCP license provider chooses one randomly and can easily change the profile.</a></p></blockquote>

<p>If I'm reading <a href="https://github.com/search?q=repo%3Aedrlab/thorium-reader%20decryptPersist&amp;type=code">the source code</a> correctly<sup id="fnref:idiot"><a href="https://shkspr.mobi/blog/2025/03/some-thoughts-on-lcp-ebook-drm/#fn:idiot" class="footnote-ref" title="Not a given! I have no particular skill in this area. If you know more, please correct me." role="doc-noteref">1</a></sup>, the user's password is SHA-256 hashed and then prefixed with a secret from the LCP code.  That is used as the decryption key for AES-256-CBC.</p>

<p>I'm sure there's some digital trickery and obfuscation in there but, at some point, the encrypted ePub is decrypted on the user's machine. Maybe it is as simple as grabbing the binary and forcing it to spit out keys. Maybe it takes some dedicated poking about in memory to grab the decrypted HTML. Given that the key is based on a known password, perhaps it can be brute-forced?</p>

<p>I'll bet someone out there has a clever idea.  After all, as was written by the prophets:</p>

<blockquote><p><a href="https://www.wired.com/2006/09/quickest-patch-ever/">trying to make digital files uncopyable is like trying to make water not wet</a><sup id="fnref:wet"><a href="https://shkspr.mobi/blog/2025/03/some-thoughts-on-lcp-ebook-drm/#fn:wet" class="footnote-ref" title="Is water wet? I dunno. Take it up with Bruce!" role="doc-noteref">2</a></sup></p></blockquote>

<div id="footnotes" role="doc-endnotes">
<hr>
<ol start="0">

<li id="fn:licence">
<p>*<em>sigh</em>* yeah, technically licencing.&nbsp;<a href="https://shkspr.mobi/blog/2025/03/some-thoughts-on-lcp-ebook-drm/#fnref:licence" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>

<li id="fn:idiot">
<p>Not a given! I have no particular skill in this area. If you know more, please correct me.&nbsp;<a href="https://shkspr.mobi/blog/2025/03/some-thoughts-on-lcp-ebook-drm/#fnref:idiot" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>

<li id="fn:wet">
<p><a href="https://www.sciencefocus.com/science/is-water-wet">Is water wet?</a> I dunno. Take it up with Bruce!&nbsp;<a href="https://shkspr.mobi/blog/2025/03/some-thoughts-on-lcp-ebook-drm/#fnref:wet" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>

</ol>
</div>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=58799&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2025/03/some-thoughts-on-lcp-ebook-drm/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Accents and eBooks]]></title>
		<link>https://shkspr.mobi/blog/2024/05/accents-and-ebooks/</link>
					<comments>https://shkspr.mobi/blog/2024/05/accents-and-ebooks/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Fri, 17 May 2024 11:34:27 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[unicode]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=50580</guid>

					<description><![CDATA[By and large, the English language doesn&#039;t use diacritical marks.  Even our loanwords are stripped of them; we drink in a cafe rather than the more pretentious café.  This has a consequence for HTML and, by extension, eBooks.  As a quick primer, modern computing gives us two main ways of displaying a letter with an accent.  The first is simple - encode every single accented letter as a separate …]]></description>
										<content:encoded><![CDATA[<p>By and large, the English language doesn't use diacritical marks.  Even our loanwords are stripped of them; we drink in a cafe rather than the more pretentious caf<strong>é</strong>.  This has a consequence for HTML and, by extension, eBooks.</p>

<p>As a quick primer, modern computing gives us two main ways of displaying a letter with an accent.  The first is simple - encode every single accented letter as a separate "pre-composed" character. So è (U+00E8), é (U+00E0), ê (U+00EA), and ë (U+00EB) are all stored as different codepoints.</p>

<p>But this seems a little inefficient and can make it hard to search through text for an exact lexical match.</p>

<p>So there is a <em>second</em> way to add accents. You take the base character - e (U+0065) - and then apply a separate "combining" accent character to it. For example the combining accent ◌́ (U+0301).  That means you can add an accent to áńý ĺét́t́éŕ!́</p>

<p>Note, the accent ◌́ (U+0301) is separate from the character ´ (U+00B4). In fact, most accents have a pre-composed, combining, <em>and</em> separate form.  This, understandably, causes much confusion!</p>

<p>Here's a good example. I was reading the excellent <a href="https://shkspr.mobi/blog/2024/05/book-review-fallen-idols-alex-von-tunzelmann/">Fallen Idols</a>, when I noticed this typesetting bug.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2024/05/macron.png" alt="The phrase &quot;Swords of Qadisiyyah.&quot; But the combining macron over the letter &quot;a&quot; has been rendered as a separate dash." width="341" height="221" class="aligncenter size-full wp-image-50583">

<p>It's always hard to transliterate languages. The Victory Arch in Iraq is known as قوس النصر, and usually written in English as the "Swords of Qādisīyah".</p>

<p>Examining the HTML code in the eBook, it was obvious that the publishers had used a macron ¯ (U+00AF) rather than the combining version ◌̄ (U+0304).</p>

<p>I've reported it to the publisher. I've no idea if they'll fix it in a subsequent re-issue.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=50580&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2024/05/accents-and-ebooks/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Stop treating eBooks like paper books]]></title>
		<link>https://shkspr.mobi/blog/2023/04/stop-treating-ebooks-like-paper-books/</link>
					<comments>https://shkspr.mobi/blog/2023/04/stop-treating-ebooks-like-paper-books/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Fri, 14 Apr 2023 11:34:31 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[epub]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[rant]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=45470</guid>

					<description><![CDATA[As part of my never-ending quest to banish this skeuomorph from the world…  I was reading a fascinating eBook recently which was, sadly, designed to mimic a legacy / paper book. To the point where the authoring software had hard-coded in page numbers and forced them to be displayed.  Here&#039;s what it looked like:    There are two abominations here. There&#039;s no need to interrupt the reading e…]]></description>
										<content:encoded><![CDATA[<p>As part of my never-ending quest to banish this skeuomorph from the world…</p>

<p>I was reading a fascinating eBook recently which was, sadly, designed to mimic a legacy / paper book. To the point where the authoring software had hard-coded in page numbers and forced them to be displayed.</p>

<p>Here's what it looked like:</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2023/03/ebook-pages.png" alt="Screenshot of a page of an eBook. The page number splits the page in half. Footnotes are visible at the bottom of the bisected page." width="1091" height="520" class="aligncenter size-full wp-image-45499">

<p>There are two abominations here. There's no need to interrupt the reading experience by bisecting a page and displaying the page numbers. And there's no need to put footnotes at the actual foot of the artificial page.</p>

<p>The whole point of an eBook is to free the reader from the tyranny of the publisher's choices. If the reader wants to justify the text, change the font, hide all footnotes, or has strong opinions about <a href="https://www.indesignskills.com/tutorials/widows-and-orphans/">widows and orphans</a> - they can choose a reading experience which suits their needs.</p>

<p>Let's take a look at the code behind the page and how it <em>should</em> been written.</p>

<h2 id="page-numbers"><a href="https://shkspr.mobi/blog/2023/04/stop-treating-ebooks-like-paper-books/#page-numbers">Page numbers</a></h2>

<p>The HTML the book uses to show the page numbers is:</p>

<pre><code class="language-html">   ...
   &lt;div class="page-break"&gt;end p.16&lt;/div&gt;
   &lt;div id="page_16"&gt;&nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="page-bounds"&gt;
   &lt;div id="acprof-0195171276-div1-8c"&gt;
      &lt;div class="para"&gt;
         ...
</code></pre>

<p>The CSS is:</p>

<pre><code class="language-css">div.page-break {
    text-align: right;
    line-height: 1px;
    font-size: 10px;
    color: #aca368;
    border-bottom: 1px solid #706650;
    padding: 3px 4px 8px 0px;
    margin: 0px 2px 10px 0px;
}
</code></pre>

<p>So, what <em>should</em> it be?  I've previously <a href="https://shkspr.mobi/blog/2020/11/how-do-you-raise-a-software-bug-with-a-book-publisher/">written about the support ePub has for page numbers</a>. And the answer is well documented in the specification.</p>

<p>It's simply this:</p>

<pre><code class="language-html">&lt;span epub:type="pagebreak" id="page_123_a" title="123" /&gt;
</code></pre>

<p>That inserts an invisible pagebreak. The reader can <em>choose</em> to render one page per physical screen. Or they can <em>choose</em> to display a page number. Or they can <em>choose</em> to ignore the suggestion.</p>

<h2 id="html-footnotes"><a href="https://shkspr.mobi/blog/2023/04/stop-treating-ebooks-like-paper-books/#html-footnotes">HTML Footnotes</a></h2>

<p>Here's the code as presented in the ePub:</p>

<pre><code class="language-html">   &lt;div class="para"&gt;Not only was that result in disagreement with the other trials made by the committee but also it was the direct opposite of the observations by Adams and De Luc, &lt;/div&gt;
&lt;/div&gt;
&lt;div class="footnote-inline"&gt;
   &lt;div&gt;15. See &lt;span id="xref-acprof-0195171276-bibItem-84c"&gt;&lt;a href="content9.html#acprof-0195171276-bibItem-84"&gt;De Luc 1772&lt;/a&gt;&lt;/span&gt;, 1:219-221, §408.&lt;/div&gt;
&lt;/div&gt;
&lt;div class="footnote-inline"&gt;
   &lt;div&gt;16. See ...&lt;/div&gt;
&lt;/div&gt;
&lt;div class="page-break"&gt;end p.16&lt;/div&gt;
...
</code></pre>

<p>There's no need to put footnotes <em>alongside</em> the text. If you do that, you're basically telling the reader that you know better than them how they want to read the book.  Most eReaders will pop-up a footnote, making it easy to read and easy to close:</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2023/04/footnote-popup.jpg" alt="Product photo of a Kindle showing the popup." width="900" height="650" class="aligncenter size-full wp-image-45500">

<p>The footnote link should have a specific ePub type, and the footnote itself is semantically represented as an <code>&lt;aside&gt;</code> with it's own type:</p>

<pre><code class="language-html">&lt;p&gt;The use of dilithium crystals was discouraged&lt;a epub:type="noteref" href="https://shkspr.mobi/blog/2023/04/stop-treating-ebooks-like-paper-books/#n1" id="fn1"&gt;1&lt;/a&gt;.&lt;/p&gt;

&lt;aside epub:type="footnote" id="n1"&gt;
    &lt;p&gt;&lt;a epub:type="noteref" href="https://shkspr.mobi/blog/2023/04/stop-treating-ebooks-like-paper-books/#fn1"&gt;1.&lt;/a&gt; Scott, M (2257).&lt;/p&gt;
&lt;/aside&gt;
</code></pre>

<p>The footnote text can be placed at the end of the chapter or the end of the book. No need to force it into the reader's eyeline.</p>

<p>There's also <a href="https://kdp.amazon.com/en_US/help/topic/GH4DRT75GWWAGBTU#footnote_guideline">similar advice from Kindle</a>.</p>

<h2 id="what-have-we-learned-today"><a href="https://shkspr.mobi/blog/2023/04/stop-treating-ebooks-like-paper-books/#what-have-we-learned-today">What have we learned today</a></h2>

<p>Books are magical. And, in my humble opinion, eBooks are <em>better</em> than legacy paper books. I can boost the font size of my eBook rather than having to buy an expensive large-print version. I can navigate by searching, or by semantic features, rather than grubbing around with page numbers. And I can choose to follow a footnote or ignore it as the whim strikes me.</p>

<p>But all that requires the publishers actually understanding how to take advantage of the format.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=45470&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2023/04/stop-treating-ebooks-like-paper-books/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[How Blockbuster was superior to Netflix]]></title>
		<link>https://shkspr.mobi/blog/2022/12/how-blockbuster-was-superior-to-netflix/</link>
					<comments>https://shkspr.mobi/blog/2022/12/how-blockbuster-was-superior-to-netflix/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Thu, 22 Dec 2022 12:34:22 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[drm]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[libraries]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=44235</guid>

					<description><![CDATA[It&#039;s a Friday night in the late 1990s and my teenaged friend group are bored.  We&#039;re not cool enough to hang about in the park drinking cider. And we&#039;re not nerdy enough to play D&#38;D.  We don&#039;t have enough money to go to the cinema.  What we do have is a Blockbuster card and, between us, just enough cash to rent a newly released movie.  Eight of us pile into the local Blockbuster and begin to…]]></description>
										<content:encoded><![CDATA[<p>It's a Friday night in the late 1990s and my teenaged friend group are bored.  We're not cool enough to hang about in the park drinking cider. And we're not nerdy enough to play D&amp;D.  We don't have enough money to go to the cinema.</p>

<p>What we <em>do</em> have is a Blockbuster card and, between us, just enough cash to rent a newly released movie.  Eight of us pile into the local Blockbuster and begin to scavenge the shelves. DVDs have yet to appear in our sleepy town, so we hold up chunky VHS boxes for appraisal.</p>

<p>"The English Patient?" "Rubbish."</p>

<p>"Trainspotting?" "Seen it."</p>

<p>"The Full Monty?" "My mum won't let me watch that."</p>

<p>"Titanic?" "Oooooh! Go on then!"</p>

<p>I took the empty carcass up to the desk. The incredibly worldly-wise 19 year old looked at us disdainfully. "Sorry mate, out of stock."</p>

<p>You see, hard as it may be to believe, the local Blockbuster franchise had underestimated the popularity of Titanic.  They'd purchased a dozen copies to rent out.  Once those walked out the door, that was it.  We could ask them to ring us when a tape was returned - but we'd be at the bottom of a long waiting list.</p>

<p>So we leafed through a few display racks and went home with the kid's film about a genie, "Shazaam". It wasn't very good, as I recall.</p>

<p>If only Netflix were like that!  Imagine if you tried to watch Stranger Things and were told that too many people were streaming the first episode.  Netflix will notify you when there's a slot available. In the meantime, why not watch "Clarissa Explains It All"?</p>

<p>Wouldn't that be brilliant! Netflix could restrict demand, make things artificially scarce, and just generally make a worse user experience for everyone.</p>

<p>Wait... no... that'd be shit!</p>

<p>And yet, that's <em>exactly</em> how digital library books work in the UK!</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2022/12/wait-list.webp" alt="Screenshot from an online library. Two Agatha Christie books are available to borrow. The other two have a wait list." width="1024" height="469" class="aligncenter size-full wp-image-44398">

<p>Look, perhaps a Netflix for books wouldn't work; it's harder to read than it is to stick on TV in the background. But there's a healthy library scene in the UK. Authors get paid when people borrow their books.  So why are libraries restricted to only loaning out a limited number of copies at once?</p>

<p>There's a part of me - a very small part - which can see the utility in this. If everyone could borrow the latest Dan Brown smash-hit all at once, would they ever explore any further? When you're told "Sorry, we don't have that - but you might like..." it could expand your reading horizons.</p>

<p>But that's a weak argument.  With an endless supply of books, people can choose what they want to read, when they want to read it.</p>

<p>There is no digital scarcity. We need to rid the world of this analogue thinking.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=44235&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2022/12/how-blockbuster-was-superior-to-netflix/feed/</wfw:commentRss>
			<slash:comments>9</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Quick and dirty way to rip an eBook from Android]]></title>
		<link>https://shkspr.mobi/blog/2021/12/quick-and-dirty-way-to-rip-an-ebook-from-android/</link>
					<comments>https://shkspr.mobi/blog/2021/12/quick-and-dirty-way-to-rip-an-ebook-from-android/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Mon, 27 Dec 2021 12:34:32 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[drm]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[MSc]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=41412</guid>

					<description><![CDATA[I recently purchased a book for my MSC which was only available via a crappy Android app. There was no obvious way to decrypt it to read on a more sensible device, so I resorted to the ancient art of screenscraping.  This is a quick-and-dirty way to grab images of the pages and convert them to a standard PDF using Linux. There&#039;s a lot more you can do to make the end book more useful, but this&#039;ll…]]></description>
										<content:encoded><![CDATA[<p>I recently purchased a book for my MSC which was <em>only</em> available via a crappy Android app. There was no obvious way to decrypt it to read on a more sensible device, so I resorted to the ancient art of screenscraping.</p>

<p>This is a quick-and-dirty way to grab images of the pages and convert them to a standard PDF using Linux. There's a lot more you can do to make the end book more useful, but this'll get you started</p>

<h2 id="lots-of-screen-shots"><a href="https://shkspr.mobi/blog/2021/12/quick-and-dirty-way-to-rip-an-ebook-from-android/#lots-of-screen-shots">Lots of Screen Shots</a></h2>

<p>With a USB cable plugged into my phone and laptop, I wrote a horrible little bash script:</p>

<pre><code class="language-bash">#!/bin/bash
for i in {00001..00555}; do
   adb exec-out screencap -p &gt; $i.png
   adb shell input tap 1000 2000
   sleep 1s
done
echo All done
</code></pre>

<p>This runs a loop 555 times. Takes a screenshot, names it for the loop number with padded zeros, taps the bottom right of the screen, then waits for a second to ensure the page has refreshed.  Slow and dull, but works reliably.</p>

<p>Images range from 200KB to 2MB depending on complexity.  Back them up before doing the next bit.</p>

<h2 id="cropping"><a href="https://shkspr.mobi/blog/2021/12/quick-and-dirty-way-to-rip-an-ebook-from-android/#cropping">Cropping</a></h2>

<p>The screenshots are all 1080x2160. But the page only takes up part of that. The top left corner is at 50x432 and the bottom right is at 1028x1726.</p>

<p>This command crops all the images. It is destructive, so make sure you have a backup.</p>

<pre><code class="language-_">mogrify -crop 978x1294+50+432 +repage *.png
</code></pre>

<p>It's also useful to trim the images to remove any whitespace from the borders. That makes a smaller file size.</p>

<pre><code class="language-_">mogrify -trim *.png
</code></pre>

<p>Images can be shrunk with:</p>

<pre><code class="language-_">pngquant *.png
</code></pre>

<h2 id="pdf-and-ocr"><a href="https://shkspr.mobi/blog/2021/12/quick-and-dirty-way-to-rip-an-ebook-from-android/#pdf-and-ocr">PDF and OCR</a></h2>

<p>Sticking all the images together into a single PDF is pretty easy:</p>

<pre><code class="language-_">convert *.png +repage output.pdf
</code></pre>

<p>The <code>+repage</code> option keeps the aspect ratio of the trimmed image.</p>

<p>But there's no text to search. There are a bunch of OCR programs on Linux, I like <a href="http://www.tobias-elze.de/pdfsandwich/"><code>PDF Sandwich</code></a>:</p>

<pre><code class="language-_">pdfsandwich -rgb -nopreproc output.pdf
</code></pre>

<p>That'll get you a colour PDF with OCR'd text embedded in it.  The text is "sandwiched" behind the image of the page, so you can't see it but can search for it.</p>

<p>You can also use <a href="https://github.com/ocrmypdf/OCRmyPDF/">OCRmyPDF</a> which may result in a smaller file:</p>

<pre><code class="language-_">ocrmypdf -l eng output.pdf output_ocr.pdf
</code></pre>

<p>And that's it. I now have a searchable PDF which I can read on any device.</p>

<h2 id="what-have-we-learned"><a href="https://shkspr.mobi/blog/2021/12/quick-and-dirty-way-to-rip-an-ebook-from-android/#what-have-we-learned">What have we learned?</a></h2>

<p>DRM on textbooks is an annoyance. For computer science books, it's little more than a fig-leaf.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=41412&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2021/12/quick-and-dirty-way-to-rip-an-ebook-from-android/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Download ACSM files in Linux - without using Adobe Digital Editions!]]></title>
		<link>https://shkspr.mobi/blog/2021/07/download-acsm-files-in-linux-without-using-adobe-digital-editions/</link>
					<comments>https://shkspr.mobi/blog/2021/07/download-acsm-files-in-linux-without-using-adobe-digital-editions/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Mon, 26 Jul 2021 11:15:07 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[drm]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=39673</guid>

					<description><![CDATA[After my rant the other day about Adobe Digital Editions, I discovered libgourou by Grégory Soutadé  libgourou is a free implementation of Adobe&#039;s ADEPT protocol used to add DRM on ePub files. It overcome the lacks of Adobe support for Linux platforms.  There are a few limitations, but nothing too serious:   Only ePub is supported. No PDF Command line only Alpha quality software. It works - but i…]]></description>
										<content:encoded><![CDATA[<p>After my rant the other day about Adobe Digital Editions, I discovered <a href="https://www.mobileread.com/forums/showthread.php?t=340479"><code>libgourou</code> by Grégory Soutadé</a></p>

<blockquote><p>libgourou is a free implementation of Adobe's ADEPT protocol used to add DRM on ePub files. It overcome the lacks of Adobe support for Linux platforms.</p></blockquote>

<p>There are a few limitations, but nothing too serious:</p>

<ul>
<li>Only ePub is supported. No PDF</li>
<li>Command line only</li>
<li>Alpha quality software. It works - but is a bit finickity</li>
</ul>

<p>You can compile the code yourself, but I just <a href="http://indefero.soutade.fr/p/libgourou/downloads/">downloaded the pre-built binaries</a>.</p>

<p>On Ubuntu / Pop I needed to <code>sudo apt install libzip-dev</code>.</p>

<p>Once you've unzipped the download, <code>cd</code> into it and run:</p>

<p><code>export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD</code></p>

<p>Then</p>

<p><code>./adept_activate -u youremail@example.com -p SuperStrongPassword</code></p>

<p>Use the same credentials as you do in Adobe Digital Editions. You can just use the <code>-u</code> flag and type your password in at the prompt - but I couldn't get that to work. The <code>-p</code> flag worked fine.</p>

<p>After a few seconds, you'll see:
<code>youremail@example.com fully signed and device activated in /home/you/libgourou_utils_0.3.1/./.adept</code></p>

<p>Then run:
<code>./acsmdownloader -f whatever.acsm</code></p>

<p>After a few moments, you'll see:
<code>Created whatever.epub</code></p>

<p>That's it! Your file is downloaded and you can read the ePub.</p>

<p>Note: If you try to download a PDF, you'll get an error saying:
<code>Exception code : 0x5007
Message        : whatever.epub</code></p>

<p>You can rename the file back to .pdf, but it will still be encrypted.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=39673&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2021/07/download-acsm-files-in-linux-without-using-adobe-digital-editions/feed/</wfw:commentRss>
			<slash:comments>13</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[A brief look at ACSM files]]></title>
		<link>https://shkspr.mobi/blog/2021/07/a-brief-look-at-acsm-files/</link>
					<comments>https://shkspr.mobi/blog/2021/07/a-brief-look-at-acsm-files/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sat, 24 Jul 2021 11:26:29 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[drm]]></category>
		<category><![CDATA[ebook]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=39629</guid>

					<description><![CDATA[Adobe&#039;s accursed eBook DRM is just the worst. Not only does it lock up books that you have purchased - but it&#039;s impossible to use sensibly on Linux.  Sure, you can futz around with Docker, WINE, and old versions of Python - and if you&#039;re lucky, you might get a book out of it.  I wasn&#039;t quite so lucky. I wanted to see if I could download an ePub without using Adobe Digital Editions. Spoilers! I…]]></description>
										<content:encoded><![CDATA[<p>Adobe's accursed eBook DRM is just the worst. Not only does it lock up books that you have purchased - but it's impossible to use sensibly on Linux.</p>

<p>Sure, you can futz around with <a href="https://github.com/timakro/adobe_diged_docker">Docker, WINE, and old versions of Python</a> - and if you're lucky, you might get a book out of it.</p>

<p>I wasn't quite so lucky. I wanted to see if I could download an ePub without using Adobe Digital Editions. Spoilers! I couldn't. But this is what I found.</p>

<h2 id="the-first-acsm-file"><a href="https://shkspr.mobi/blog/2021/07/a-brief-look-at-acsm-files/#the-first-acsm-file">The First ACSM file</a></h2>

<p>When you buy an eBook, the vendor sends you a <code>.acsm</code> file. Adobe Content Server Message is a simple XML file. This is what it looks like and what each line means:</p>

<pre><code class="language-XML">&lt;fulfillmentToken fulfillmentType="buy" auth="user" xmlns="http://ns.adobe.com/adept"&gt;
  &lt;distributor&gt;urn:uuid:b479af7f-09bf-48f5-a6c6-...&lt;/distributor&gt;
  &lt;operatorURL&gt;http://drm.firebrandtech.com/fulfillment&lt;/operatorURL&gt;
  &lt;transaction&gt;67809895895d46aab...&lt;/transaction&gt;
  &lt;expiration&gt;2021-07-19T18:55:59-04:00&lt;/expiration&gt;
</code></pre>

<p>This states I've purchased the book, who distributes it, where the download server is, and some metadata</p>

<p>Next, metadata about the book:</p>

<pre><code class="language-XML">  &lt;resourceItemInfo&gt;
    &lt;resource&gt;urn:uuid:77d79621-0e96-4f4f-8fee-...&lt;/resource&gt;
    &lt;resourceItem&gt;0&lt;/resourceItem&gt;
    &lt;metadata&gt;
      &lt;dc:title xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;The End of Bias&lt;/dc:title&gt;
      &lt;dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;Jessica Nordell&lt;/dc:creator&gt;
      &lt;dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;Granta Publications&lt;/dc:publisher&gt;
      &lt;dc:identifier xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;urn:ean:9781846276774&lt;/dc:identifier&gt;
      &lt;dc:format xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;application/pdf&lt;/dc:format&gt;
    &lt;/metadata&gt;
    &lt;licenseToken&gt;
      &lt;resource&gt;urn:uuid:77d79621-0e96-4f4f-8fee-...&lt;/resource&gt;
      &lt;permissions&gt;
        &lt;display/&gt;
        &lt;excerpt/&gt;
        &lt;print/&gt;
        &lt;play/&gt;
      &lt;/permissions&gt;
    &lt;/licenseToken&gt;
  &lt;/resourceItemInfo&gt;
</code></pre>

<p>Finally, a digital signature:</p>

<pre><code class="language-XML">  &lt;hmac&gt;rL4Ttn7ASp16Y4...=&lt;/hmac&gt;
&lt;/fulfillmentToken&gt;
</code></pre>

<h2 id="the-second-acsm-file"><a href="https://shkspr.mobi/blog/2021/07/a-brief-look-at-acsm-files/#the-second-acsm-file">The Second ACSM file</a></h2>

<p>When you open the <code>.acsm</code> file in Adobe Digital Editions (ADE), the software creates a new <code>.acsm</code> file.  This one is signed with the key that Adobe generates when you register with it.  This is what the file looks like and what each line means:</p>

<p>First, information about me as a user, and my device:</p>

<pre><code class="language-XML">&lt;fulfill xmlns="http://ns.adobe.com/adept"&gt;
  &lt;user&gt;urn:uuid:99b1e32d-5b39-4968-8ef6-c5cb6a739ec8&lt;/user&gt;
  &lt;device&gt;urn:uuid:ac790662-5da0-4075-aee2-99b3c4592619&lt;/device&gt;
  &lt;deviceType&gt;standalone&lt;/deviceType&gt;
</code></pre>

<p>Then a repeat of the original <code>.acsm</code>:</p>

<pre><code class="language-XML">  &lt;fulfillmentToken fulfillmentType="buy" auth="user"&gt;
    &lt;distributor&gt;urn:uuid:b479af7f-09bf-48f5-a6c6-...&lt;/distributor&gt;
    &lt;operatorURL&gt;http://drm.firebrandtech.com/fulfillment&lt;/operatorURL&gt;
    &lt;transaction&gt;67809895895d46...&lt;/transaction&gt;
    &lt;expiration&gt;2021-07-19T18:55:59-04:00&lt;/expiration&gt;
    &lt;resourceItemInfo&gt;
      &lt;resource&gt;urn:uuid:77d79621-0e96-4f4f-8fee-...&lt;/resource&gt;
      &lt;resourceItem&gt;0&lt;/resourceItem&gt;
      &lt;metadata&gt;
        &lt;dc:title xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;The End of Bias&lt;/dc:title&gt;
        &lt;dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;Jessica Nordell&lt;/dc:creator&gt;
        &lt;dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;Granta Publications&lt;/dc:publisher&gt;
        &lt;dc:identifier xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;urn:ean:9781846276774&lt;/dc:identifier&gt;
        &lt;dc:format xmlns:dc="http://purl.org/dc/elements/1.1/"&gt;application/pdf&lt;/dc:format&gt;
      &lt;/metadata&gt;
      &lt;licenseToken&gt;
        &lt;resource&gt;urn:uuid:77d79621-0e96-4f4f-8fee-...&lt;/resource&gt;
        &lt;permissions&gt;
          &lt;display/&gt;
          &lt;excerpt/&gt;
          &lt;print/&gt;
          &lt;play/&gt;
        &lt;/permissions&gt;
      &lt;/licenseToken&gt;
    &lt;/resourceItemInfo&gt;
</code></pre>

<p>Then, a <em>different</em> HMAC:</p>

<pre><code class="language-XML">    &lt;hmac&gt;rL4Ttn7ASp16...=&lt;/hmac&gt;
  &lt;/fulfillmentToken&gt;
</code></pre>

<p>And, finally, another digital signature</p>

<pre><code class="language-XML">  &lt;signature&gt;znoLnR2A4wG1uE85oXPYzSZjTRNo76ctgfR8COY8nlNTCcPge9O6VeB5UY...=&lt;/signature&gt;
&lt;/fulfill&gt;
</code></pre>

<h2 id="posting-the-file"><a href="https://shkspr.mobi/blog/2021/07/a-brief-look-at-acsm-files/#posting-the-file">POSTING the file</a></h2>

<p>Digital Editions then posts the new <code>.acsm</code> file to the DRM server mentioned.  It replies with a location where the file can be downloaded from.  In this case:</p>

<pre><code class="language-txt">http://drm.firebrandtech.com/media/77d79621-0e96-4f4f-8fee-....pdf
</code></pre>

<p>That's literally just the resource's UUID as the filename.  It can be downloaded and opened in ADE.</p>

<h2 id="signing-the-file-yourself"><a href="https://shkspr.mobi/blog/2021/07/a-brief-look-at-acsm-files/#signing-the-file-yourself">Signing the file yourself</a></h2>

<p>So, if you've downloaded the first <code>.acsm</code> file and have your encryption keys extracted from ADE you can sign it yourself, right?</p>

<p>I dunno. I'm no good at reverse engineering binaries. I suspect so. ADE is a Shockwave / Flash app - so I doubt it has anything too taxing in there - but it is beyond my skillset.</p>

<h2 id="further-reading"><a href="https://shkspr.mobi/blog/2021/07/a-brief-look-at-acsm-files/#further-reading">Further Reading</a></h2>

<ul>
<li><a href="https://github.com/gedonder/book">gedonder's notes on ACSM</a></li>
<li><a href="https://karl-voit.at/2017/08/26/ADE-error-2038/">Karl Voit's rant about ADE</a></li>
</ul>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=39629&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2021/07/a-brief-look-at-acsm-files/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[KOReader - change forward and back to bottom and top]]></title>
		<link>https://shkspr.mobi/blog/2021/03/koreader-change-forward-and-back-to-bottom-and-top/</link>
					<comments>https://shkspr.mobi/blog/2021/03/koreader-change-forward-and-back-to-bottom-and-top/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sat, 13 Mar 2021 12:15:53 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[eink]]></category>
		<category><![CDATA[ereader]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[koreader]]></category>
		<category><![CDATA[linux]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=38359</guid>

					<description><![CDATA[(Mostly notes to myself)  KOReader is the best eReader software I&#039;ve found. It works beautifully on eInk screens, Android, and Linux. Just a gorgeous - and infinitely customisable - experience.  There&#039;s one thing I don&#039;t like - to move forward a page, you have to click the right of the screen and, to move back, the left. That&#039;s fine if you&#039;re holding the book in your right hand. But sometimes I…]]></description>
										<content:encoded><![CDATA[<p>(Mostly notes to myself)</p>

<p><a href="https://koreader.rocks/">KOReader</a> is the best eReader software I've found. It works beautifully on eInk screens, Android, and Linux. Just a gorgeous - and infinitely customisable - experience.</p>

<p>There's one thing I don't like - to move forward a page, you have to click the right of the screen and, to move back, the left. That's fine if you're holding the book in your right hand. But sometimes I behave in a sinister fashion and hold it in my left. I want to tap the bottom of the screen to move forward, and the top to move back a page.</p>

<p>My previous eReader had an easy-settings menu like this:
<img src="https://shkspr.mobi/blog/wp-content/uploads/2021/03/0-page-fs8.png" alt="Various forward and back configurations." width="1024" height="326" class="aligncenter size-full wp-image-38360"></p>

<p>KOReader doesn't have anything like that - yet - so here's how to set it up manually.</p>

<ol>
<li>In the book selection screen (<em>not</em> when reading a book) tap the top of the screen to bring up the menu bar, then press 🛠️ for Tools<br><img src="https://shkspr.mobi/blog/wp-content/uploads/2021/03/1-Tools-fs8.png" alt="" width="500" height="667" class="aligncenter size-medium wp-image-38367"></li>
<li>At the bottom of the menu, scroll across to page 2<br><img src="https://shkspr.mobi/blog/wp-content/uploads/2021/03/2-Tools-2-fs8.png" alt="" width="500" height="248" class="aligncenter size-medium wp-image-38366"></li>
<li>Select "More Tools"<br><img src="https://shkspr.mobi/blog/wp-content/uploads/2021/03/3-More-fs8.png" alt="" width="500" height="368" class="aligncenter size-medium wp-image-38365"></li>
<li>Select "Advanced Settings"<br><img src="https://shkspr.mobi/blog/wp-content/uploads/2021/03/4-Warning-fs8.png" alt="" width="500" height="286" class="aligncenter size-medium wp-image-38364"></li>
<li>Read the big scary warning message and press "OK"<br><img src="https://shkspr.mobi/blog/wp-content/uploads/2021/03/5-Advanced-Settings-fs8.png" alt="" width="500" height="667" class="aligncenter size-medium wp-image-38363"></li>
<li>Scroll along until you find "<code>DTAP_ZONE_BACKWARD</code>". Tap on it, and edit the values to read <code>h=0.5 w=1 x=0 y=0</code><br><img src="https://shkspr.mobi/blog/wp-content/uploads/2021/03/6-Backwards-fs8.png" alt="" width="500" height="237" class="aligncenter size-medium wp-image-38362"></li>
<li>For "<code>DTAP_ZONE_FORWARD</code>", set the values to <code>h=0.5 w=1 x=0 y=0.5</code>"<br><img src="https://shkspr.mobi/blog/wp-content/uploads/2021/03/7-Forwards-fs8.png" alt="" width="500" height="231" class="aligncenter size-medium wp-image-38361"></li>
<li>Press the "X" in the top right corner, and restart KOReader.</li>
</ol>

<p>Done!</p>

<p><a href="https://github.com/koreader/koreader/issues/6227">Adapted from this GitHub issue</a>.  I've also added these instructions to the <a href="https://github.com/koreader/koreader/wiki/Change-Next-Page---Previous-Page-touch-targets">KOReader Wiki</a></p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=38359&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2021/03/koreader-change-forward-and-back-to-bottom-and-top/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Why is it so hard to give digital gifts?]]></title>
		<link>https://shkspr.mobi/blog/2021/02/why-is-it-so-hard-to-give-digital-gifts/</link>
					<comments>https://shkspr.mobi/blog/2021/02/why-is-it-so-hard-to-give-digital-gifts/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Wed, 10 Feb 2021 12:49:23 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[digital]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[MSc]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=37981</guid>

					<description><![CDATA[I am reading The Digital Transformation Playbook for part of my MSc. It&#039;s a good book, but I found this passage about eBooks a little confusing:  what  about  gift  giving?  No  one  I  have  ever  asked  has thought that an e-book was an acceptable substitute for a printed book when giving a gift.  I&#039;ve received an eBook as a gift (thanks David!) and it was perfectly acceptable. It was nice to…]]></description>
										<content:encoded><![CDATA[<p>I am reading <a href="https://amzn.to/3tfGB0I">The Digital Transformation Playbook</a> for part of my MSc. It's a good book, but I found this passage about eBooks a little confusing:</p>

<blockquote><p>what  about  gift  giving?  No  one  I  have  ever  asked  has thought that an e-book was an acceptable substitute for a printed book when giving a gift.</p></blockquote>

<p>I've received an eBook as a gift (thanks David!) and it was perfectly acceptable. It was nice to receive, and didn't feel like any less than a gift. I <a href="https://shkspr.mobi/blog/2012/03/burning-all-my-books/">got rid of most of my physical books</a> a few years ago. Receiving a paper book is also nice - but it comes with the burden of having to dust it, shelve it, and deal with its bulk when I come to move.</p>

<p>Similarly, some friends got me a lovely CD as a gift (thanks Sookie &amp; Emo!) and it took me a few days to find a CD player! A digital copy might have been easier to use play - if we were all using the same music service.</p>

<p>And, I think that's the real reason why digital gift giving hasn't gone mainstream - the infrastructure doesn't support it.</p>

<h2 id="is-it-possible"><a href="https://shkspr.mobi/blog/2021/02/why-is-it-so-hard-to-give-digital-gifts/#is-it-possible">Is it possible?</a></h2>

<p>Some platforms just don't allow you to send digital content as gifts. For example, <a href="https://www.androidcentral.com/how-buy-digital-copy-playstation-4-game-your-friend">PlayStation doesn't support gifting</a>. You can send a gift voucher to a friend, but there's no way to buy them Day of the Tentacle.</p>

<p>Others are laggards. <a href="https://twitter.com/edent/status/1042343696430186496">Amazon only recently supported giving eBooks as gifts in the UK</a>.</p>

<p>But even if you can send a gift, can the recipient <em>receive</em> it?</p>

<h2 id="platform-lock-in"><a href="https://shkspr.mobi/blog/2021/02/why-is-it-so-hard-to-give-digital-gifts/#platform-lock-in">Platform lock in</a></h2>

<p>I don't have iTunes. If someone gifts me the latest Spice Girls album, I'd have to sign up for an account, download iTunes, and find a way to get music onto my Android phone.</p>

<p>If I give someone a DVD, they can play it on any DVD player. If I <a href="https://www.amazonforum.com/s/question/0D54P00006zSlew/gift-a-movie-to-another-amazon-prime-member">gift an Amazon movie</a> they need the right TV, dongle, broadband speed, and online account.</p>

<p>There's no way for me to buy a digital voucher for "SpiceWorld: The Spice Girls Movie" - and have it redeemable on the <em>recipient's choice</em> of platform.</p>

<p>Similarly, I <em>could</em> buy a DRM-free copy of a book - but I'd need to know whether the recipient can read ePub or not (hint - Kindle can't unless it is manually converted).</p>

<h2 id="information-leakage"><a href="https://shkspr.mobi/blog/2021/02/why-is-it-so-hard-to-give-digital-gifts/#information-leakage">Information leakage?</a></h2>

<p>Some stores <em>do</em> let you give digital gifts. Steam, the video game shop, lets you do that. With one interesting detail:</p>

<blockquote><p>How can I tell if my friend already owns the game(s) I would like to gift?
If your friends are members of your Steam Friends list, you can learn whether they already own the game you'd like to give. 
<a href="https://support.steampowered.com/kb_article.php?p_faqid=549#own">Steam FAQ</a></p></blockquote>

<p>For a social gaming experience like Steam, it may make sense for your friends to know what games you have. But do you want all your friends knowing you own an eBook copy of "Spice Up Your Life: The Authorised Biography of the Spice Girls"?</p>

<p>Audible - the audio book company - handle this quite well:</p>

<blockquote><p>What happens if I buy somebody a book they already have?
If you give a book that the other person already has in their library, we'll give them a credit or coupon they can use to choose something else.
<a href="https://www.audible.co.uk/ep/giftcentre">Audible gift FAQ</a></p></blockquote>

<h2 id="abuse"><a href="https://shkspr.mobi/blog/2021/02/why-is-it-so-hard-to-give-digital-gifts/#abuse">Abuse</a></h2>

<p><a href="https://support.steampowered.com/kb_article.php?p_faqid=549#gifts-recipient">Steam only lets you give gifts to people on your friends list</a>. What's the potential for abuse if you can send a gift to anyone with an email address?</p>

<p>I'm sure you could think of a dozen ways you could annoy or harass someone if you could send them gifts without prior permission.</p>

<h2 id="the-gift-that-keeps-on-giving"><a href="https://shkspr.mobi/blog/2021/02/why-is-it-so-hard-to-give-digital-gifts/#the-gift-that-keeps-on-giving">The Gift That Keeps On Giving</a></h2>

<p>At the moment, there are limited options for giving of specific digital gifts. If a store allows it, you can buy a digital gift and then hope your friend is on that specific platform.</p>

<p>Is there a better way?</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=37981&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2021/02/why-is-it-so-hard-to-give-digital-gifts/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[How do you raise a software bug with a book publisher?]]></title>
		<link>https://shkspr.mobi/blog/2020/11/how-do-you-raise-a-software-bug-with-a-book-publisher/</link>
					<comments>https://shkspr.mobi/blog/2020/11/how-do-you-raise-a-software-bug-with-a-book-publisher/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Mon, 23 Nov 2020 12:26:12 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[epub]]></category>
		<category><![CDATA[NaBloPoMo]]></category>
		<category><![CDATA[publishing]]></category>
		<category><![CDATA[standards]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=37325</guid>

					<description><![CDATA[Recently, I bought an eBook which has a bug. I&#039;d like to explain what the bug is, why it is a problem, and how I&#039;m trying to get it corrected.  Amazon sells eBooks in KF8 format. That is an ePub with some proprietary extras. ePub is a standard based off HTML5. You can read the ePub 3 specification but, basically, it is a .zip of HTML files.  If you unzip an eBook, you can read the source code…]]></description>
										<content:encoded><![CDATA[<p>Recently, I bought an eBook which has a bug. I'd like to explain what the bug is, why it is a problem, and how I'm trying to get it corrected.</p>

<p>Amazon sells eBooks in <a href="https://wiki.mobileread.com/wiki/KF8">KF8 format</a>. That is an ePub with some proprietary extras. ePub is a standard based off HTML5. You can <a href="https://www.w3.org/publishing/epub3/epub-overview.html">read the ePub 3 specification</a> but, basically, it is a .zip of HTML files.  If you unzip an eBook, you can read the source code behind it.</p>

<p>When trying to read a Kindle book on a non-Kindle device, I noticed a bug. Some words were not displaying.  I took a look at the underlying source code, and found this:</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2020/11/Screenshot-from-2020-11-19-09-20-27.png" alt="HTML code - a span wraps the first letter of a word." width="931" height="65" class="aligncenter size-full wp-image-37328">

<img src="https://shkspr.mobi/blog/wp-content/uploads/2020/11/Screenshot-from-2020-11-19-09-19-56.png" alt="HTML code - a span wraps the first word of a sentence.." width="680" height="65" class="aligncenter size-full wp-image-37329">

<p>Sometimes words and letters were wrapped with a <code>pagebreak</code> span like this:</p>

<pre><code class="language-html">&lt;span id="pg5" epub:type="pagebreak"&gt;‘But&lt;/span&gt; of course!’
</code></pre>

<p>When I tried to read the book using <a href="https://koreader.rocks/">KOReader</a> the word "‘But" didn't appear. Why?  Let's take a look at the <a href="https://idpf.github.io/epub-vocabs/structure/#pagination">ePub3 specification concerning page breaks</a>:</p>

<blockquote> <strong>pagebreak</strong>
<ul><li>  A separator denoting the position before which a break occurs between two contiguous pages in a statically paginated version of the content.
</li><li>  HTML usage context: phrasing and flow content, where the value of the carrying elements title attribute takes precedence over element content for the purposes of representing the pagebreak value</li></ul></blockquote>

<p>Here's the problem - eBooks can have page numbers. Despite "<a href="https://shkspr.mobi/blog/2011/02/quoting-page-numbers-from-ebooks-considered-harmful/">Page Numbers in eBooks Considered Harmful</a>" lots of publishers still use them. I guess it is <em>kind of</em> useful if you want to refer to something on a printed page - but eReaders allow you to change font size and line spacing, so the concept of a page is somewhat nebulous.</p>

<p>The way the spec is written, means that you can write something like:</p>

<pre><code class="language-html">&lt;span epub:type="pagebreak" id="page_123_a" title="123"&gt;123&lt;/span&gt;
</code></pre>

<p>You use the <code>id</code> for internal linking and the <code>title</code> attribute for the value.</p>

<p>Because of this, most eReaders do not display the physical page number inside the span. It has no semantic content for the reader, and breaks flow. If they did display it, you might end up reading text like this:</p>

<blockquote><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean vel</p>

<p>9</p>

<p>risus at metus molestie tincidunt. Donec aliquet aliquam lorem, ...</p></blockquote>

<p>So KOReader <em>deliberately</em> ignores any text which is wrapped with <code>epub:type="pagebreak"</code>.</p>

<p>If you look at <a href="https://github.com/IDPF/epub3-samples/search?l=HTML&amp;q=pagebreak">the example ePubs provided by the International Digital Publishing Forum</a>, you'll see that the majority of their spans are self-closing.</p>

<pre><code class="language-html">&lt;span epub:type="pagebreak" id="p123-a" title="123"/&gt;
</code></pre>

<p>Very occasionally, you see something which has just a page number in it:</p>

<p><a href="https://github.com/IDPF/epub3-samples/blob/68ba020fe5c99625d45dd50a94c4b202c5f220e1/30/childrens-literature/EPUB/s04.xhtml#L11"><code>&lt;span epub:type="pagebreak" title="169" id="Page_169"&gt;169&lt;/span&gt;</code></a></p>

<p>I checked with <a href="https://github.com/koreader/koreader/issues/6894">KOReader</a> and they confirmed that they were following the spec. I agree with them. There's no reason to wrap readable content in a metadata span like that.</p>

<p>I've checked several other books from different publishers. None of them abuse <code>pagebreaks</code> this way.  I think Penguin Random House are doing it wrong and I would like to correct them.</p>

<h2 id="reporting-it"><a href="https://shkspr.mobi/blog/2020/11/how-do-you-raise-a-software-bug-with-a-book-publisher/#reporting-it">Reporting it</a></h2>

<p>I've previously <a href="https://shkspr.mobi/blog/2011/03/how-do-you-upgrade-an-ebook/">reported buggy ebooks to vendors</a>. But because the Kindle app doesn't exhibit this problem, I thought it was futile going via Amazon. So I thought I'd try going directly to the publisher.</p>

<p>Sadly, <a href="https://github.com/puk">Penguin UK's GitHub repo is dead</a>. Their dedicated digital publishing team <a href="https://mobile.twitter.com/PRHDigital">haven't tweeted in 2 years</a>.</p>

<p>Their <a href="https://www.penguin.co.uk/company/about-us/notices/faqs.html">contact page</a> has a suggestion for what to do if there is an error in an eBook:</p>

<blockquote><p>It is best if you return the book to the original bookshop from which it was purchased; they should be happy to exchange it for a perfect copy. If you have any difficulty with this then please return the cover and title page of the book to us.</p></blockquote>

<p>Hmmm....</p>

<p>I dropped them an email, and got back this very reasonable reply:</p>

<blockquote><p>Thank you for reaching out and bringing this to our attention. The distinction you’ve made is already a part of our specification; this was an oversight which we’re looking into as a result of your input—it bypassed checks both because it validates and also passes visual checks on all the major platforms we screen for. This isn’t reflective of our entire library and should be limited to specific titles which we’re currently investigating.</p></blockquote>

<p>That's fair enough. The rendering quirk is specification compliant - but hard to spot because of the Kindle monoculture.</p>

<h2 id="change-the-spec-change-the-world"><a href="https://shkspr.mobi/blog/2020/11/how-do-you-raise-a-software-bug-with-a-book-publisher/#change-the-spec-change-the-world">Change the spec, change the world</a></h2>

<p>I've made <a href="https://github.com/w3c/epub-specs/issues/1437">a suggestion on GitHub that the spec should be clarified</a>. I don't think it's particularly obvious that content in a <code>pagebreak</code> may not be displayed.</p>

<p>Most resources agree that the content of a <code>pagebreak</code> should either be blank, or be the page number.</p>

<blockquote><p>If you include the page numbers as text content within a <code>span</code> or <code>div</code>, the pages will be more easily accessible to both sighted users and users using assistive technologies. This method has been employed in previous DAISY standards. The potential downside, however, is that mainstream user agents will not provide equivalent functionality to turn off unwanted content, forcing users to hear and view the page numbers.</p>

<p><a href="https://kb.daisy.org/publishing/docs/navigation/pagelist.html#faq">Digital Accessible Information System (DAISY)</a></p></blockquote>

<h2 id="whose-fault-is-it-anyway"><a href="https://shkspr.mobi/blog/2020/11/how-do-you-raise-a-software-bug-with-a-book-publisher/#whose-fault-is-it-anyway">Whose fault is it anyway?</a></h2>

<p>This is a tricky one. I think Penguin have undoubtedly made a mistake with the way they publish ePubs. But, so far, KOReader is the only rendering engine I've found which suppresses the content of <code>pagebreak</code>s by default.</p>

<p>Generally speaking, a user wouldn't want to display page numbers on an eBook. Software could have a user defined toggle to switch them on or off. Luckily, KOReader has a variety of style-sheets for rendering eBooks - so I picked one which displayed <code>pagebreak</code> content.</p>

<p>Software is hard.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=37325&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2020/11/how-do-you-raise-a-software-bug-with-a-book-publisher/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[If you don't sell it, I can't buy it]]></title>
		<link>https://shkspr.mobi/blog/2020/03/if-you-dont-sell-it-i-cant-buy-it/</link>
					<comments>https://shkspr.mobi/blog/2020/03/if-you-dont-sell-it-i-cant-buy-it/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Tue, 03 Mar 2020 18:05:28 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[academia]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[piracy]]></category>
		<category><![CDATA[publishing]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=34228</guid>

					<description><![CDATA[I don&#039;t understand the world of academic publishing. Incredibly niche books, some barely longer than a novella, are sold for ridiculously high prices. Or, worse than that, they&#039;re not sold at all.  Let me explain.  A friend of mine recommended an obscure book, published a couple of years ago. The blurb made it look right up my alley, so I tried to buy it.  I only read eBooks, but I couldn&#039;t find…]]></description>
										<content:encoded><![CDATA[<p>I don't understand the world of academic publishing. Incredibly niche books, some barely longer than a novella, are sold for ridiculously high prices. Or, worse than that, they're not sold at all.  Let me explain.</p>

<p>A friend of mine recommended an obscure book, published a couple of years ago. The blurb made it look right up my alley, so I tried to buy it.  <a href="https://shkspr.mobi/blog/2012/03/burning-all-my-books/">I only read eBooks</a>, but I couldn't find it anywhere for sale in the UK.  Amazon had a listing for a paper copy, but it was permanently out of stock.</p>

<p>In desperation, I went straight to the publisher. They <em>would</em> ship a dead-tree book across the Atlantic to me. With shipping costing even more than the book.</p>

<p>I found someone on Twitter who was posting highlighted screenshots of the book, so I Tweeted him and the publisher to find out where to get a copy. He graciously offered to send me a PDF.</p>

<p>At which point, the publisher waded in - furious at the situation.</p>

<blockquote><p>How dare you give this away for free? We're a small publisher and we have to sell books to stay in business!</p></blockquote>

<p>Fair enough. So I asked them where I could buy an eBook version. Their response was disappointing.</p>

<blockquote><p>It's only available on Proquest and Ebsco. Sorry!</p></blockquote>

<p>Both of those are academic databases, available on subscription only, with no public pricing available.</p>

<p>So, let's be clear. You don't want people giving it away, but you won't actually sell me a copy?</p>

<p>What do you want me to do? <em>Not</em> read your book?</p>

<p>I took the emailed PDF. I'm not particularly proud of that. The book is good, and I'm enjoying learning from it. I just wish I could have paid for it.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=34228&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2020/03/if-you-dont-sell-it-i-cant-buy-it/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Guide: Add an English Dictionary to Boyue Likebook eReaders]]></title>
		<link>https://shkspr.mobi/blog/2019/12/guide-add-an-english-dictionary-to-boyue-likebook-ereaders/</link>
					<comments>https://shkspr.mobi/blog/2019/12/guide-add-an-english-dictionary-to-boyue-likebook-ereaders/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Wed, 11 Dec 2019 07:48:11 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[boyue]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[gadget]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=33363</guid>

					<description><![CDATA[This is a quick guide to adding a new dictionary to your eBook.  This uses the English Wiktionary Dictionary. I&#039;ve tested it on my Likebook Ares and it works!  Download the latest dictionary from DictInfo.com. At the time of writing, the latest English version is October 2018  The dictionary file is a .7z file. It&#039;s easiest to unzip it on your computer, rather than the eReader. I recommend 7zip.  …]]></description>
										<content:encoded><![CDATA[<p>This is a quick guide to adding a new dictionary to your eBook.  This uses the English Wiktionary Dictionary. I've tested it on my <a href="https://shkspr.mobi/blog/2019/11/gadget-review-boyue-likebook-ares/">Likebook Ares</a> and it works!</p>

<p>Download the latest dictionary from <a href="http://www.dictinfo.com/">DictInfo.com</a>. At the time of writing, the latest English version is <a href="http://www.dictinfo.com/stardict/wikt-en-en-2018-10-07.7z">October 2018</a></p>

<p>The dictionary file is a <code>.7z</code> file. It's easiest to unzip it on your computer, rather than the eReader. I recommend <a href="https://www.7-zip.org/download.html">7zip</a>.</p>

<p>There are three files:</p>

<ul>
<li><code>wikt-en-en-2018-10-07.ifo</code></li>
<li><code>wikt-en-en-2018-10-07.idx</code></li>
<li><code>wikt-en-en-2018-10-07.dict.dz</code></li>
</ul>

<p>Copy <em>all</em> of the files to the <code>/Dict</code> folder in the root of your eReader.</p>

<p>Open up a book using the default reader app.  Long press on any word and the default definition will pop up.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2019/12/System-Dictionary-fs8.png" alt="Dictionary popup." width="702" height="450" class="aligncenter size-full wp-image-33368">

<ul>
<li>Press the A-Z dictionary icon in the top right corner.</li>
<li>Untick the system dictionary and make sure the Wiktionary dictionary is ticked.</li>
<li>Then press the up arrow so Wiktionary is at the top.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2019/12/Dictionaries-fs8.png" alt="List of dictionaries." width="702" height="278" class="aligncenter size-full wp-image-33369"></li>
<li>Press back.</li>
<li>Long press on a word again.</li>
</ul>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2019/12/Wikitonary-fs8.png" alt="Wikitionary definition popup." width="702" height="450" class="aligncenter size-full wp-image-33370">

<p>Tada!</p>

<p>That's it! Your eReader now has a modern English dictionary with definitions.</p>

<h2 id="bonus"><a href="https://shkspr.mobi/blog/2019/12/guide-add-an-english-dictionary-to-boyue-likebook-ereaders/#bonus">Bonus!</a></h2>

<p>You can build your own dictionaries using the <a href="https://github.com/korhoj/wiktionary-convert-no-db">Open Source Wikitonary Convert tool</a></p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=33363&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2019/12/guide-add-an-english-dictionary-to-boyue-likebook-ereaders/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Gadget Review -  Boyue Likebook Ares]]></title>
		<link>https://shkspr.mobi/blog/2019/11/gadget-review-boyue-likebook-ares/</link>
					<comments>https://shkspr.mobi/blog/2019/11/gadget-review-boyue-likebook-ares/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Tue, 26 Nov 2019 12:30:58 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[eink]]></category>
		<category><![CDATA[ereader]]></category>
		<category><![CDATA[gadget]]></category>
		<category><![CDATA[kindle]]></category>
		<category><![CDATA[NaBloPoMo]]></category>
		<category><![CDATA[review]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=33161</guid>

					<description><![CDATA[I&#039;ll be upfront, I mostly got this eReader because it&#039;s the only one on the market with a USB-C connection.  OK! OK! That&#039;s not the main reason. It has pretty good support from the manufacturer and a vibrant community around it. Masses of memory, warm lighting, and oodles of space. And, I think, pretty hackable.  Quick video    Specifications   Android 6.0 - with a promise to update it to Android …]]></description>
										<content:encoded><![CDATA[<p>I'll be upfront, I mostly got this eReader because it's the only one on the market with a USB-C connection.</p>

<p>OK! OK! That's not the <em>main</em> reason. It has pretty good support from the manufacturer and a vibrant community around it. Masses of memory, warm lighting, and oodles of space. And, I think, pretty hackable.</p>

<h2 id="quick-video"><a href="https://shkspr.mobi/blog/2019/11/gadget-review-boyue-likebook-ares/#quick-video">Quick video</a></h2>

<iframe title="Unboxing: Boyue Likebook Ares Note eReader" width="620" height="349" src="https://www.youtube.com/embed/cO0Wk6PLz5M?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe>

<h2 id="specifications"><a href="https://shkspr.mobi/blog/2019/11/gadget-review-boyue-likebook-ares/#specifications">Specifications</a></h2>

<ul>
<li>Android 6.0 - with a promise to update it to Android 8.0</li>
<li>Touchscreen with Wacom stylus</li>
<li>1.5GHz CPU</li>
<li>2GB RAM</li>
<li>32GB storage plus a microSD slot</li>
<li>7.8 inch E-ink Carta HD (300 PPI) screen</li>
<li>Dual colour front lights</li>
<li>USB-C for charging, data transfer, and headphones</li>
<li>WiFi and Bluetooth</li>
<li>Speakers and microphone</li>
<li>3200 mAh battery</li>
</ul>

<p>Essentially it's an Android tablet with an eInk screen. The Wacom stylus can be used for handwriting and note-taking.</p>

<h2 id="the-reading-experience"><a href="https://shkspr.mobi/blog/2019/11/gadget-review-boyue-likebook-ares/#the-reading-experience">The reading experience</a></h2>

<p>Amazing! The screen is goregous. You have precise control over the thickness of the fonts, line spacing, word spacing, and more. Pinch to zoom works perfectly. You can even side-load your own fonts. You can also read in landscape mode with two columns. I find that particularly useful.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2019/11/Two-column-mode.png" alt="A book with two columns." width="749" height="562" class="aligncenter size-full wp-image-33205">

<p>Links within books work, as do footnotes and endnotes. The keyboard is pretty quick for searching. You can change how bright the light is - and flip between warm and cool lighting.</p>

<p>It also does Text-To-Speech, so a little robot can read books out via the stereo speakers. It'll also play MP3s. No headphone jack - but it supports Bluetooth and USB-C.</p>

<p>There are some glitches in the default reading experience - especially when it comes to punctuation.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2019/11/Spaces-between-letters-and-punctuation.png" alt="Spaces between letters and punctuation." width="915" height="512" class="aligncenter size-full wp-image-33199"></p>

<h3 id="formats-supported"><a href="https://shkspr.mobi/blog/2019/11/gadget-review-boyue-likebook-ares/#formats-supported">Formats supported</a></h3>

<p>A sample of ePub, .mobi, PDF, and .txt files all worked well.</p>

<p>It shows up as an MTP device when connected to a computer via USB. Or you can send files via Bluetooth. It also has a built in webserver, so you can send via WiFi.</p>

<h3 id="epub-3"><a href="https://shkspr.mobi/blog/2019/11/gadget-review-boyue-likebook-ares/#epub-3">ePub 3</a></h3>

<p>I tried the default reader using some of the <a href="https://idpf.github.io/epub3-samples/30/samples.html">sample ePub 3 documents</a>. It coped with Arabic (right to left), Japanese with Ruby, and inline images.</p>

<p>Weirdly, it didn't like linebreaks in running text - collapsing them so there was no spaces between words.</p>

<p>It didn't support embedded fonts in eBooks. But, that's ok, you can add your own!</p>

<h3 id="fonts"><a href="https://shkspr.mobi/blog/2019/11/gadget-review-boyue-likebook-ares/#fonts">Fonts</a></h3>

<p>Create a directory called <code>/fonts/</code> on the device. Paste in either <a href="http://www.differencebetween.net/technology/difference-between-ttf-and-otf/">TTF or OTF</a> fonts. They magically appear in the reading app!</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2019/11/Font-selection-screen.png" alt="Font selection screen." width="749" height="562" class="aligncenter size-full wp-image-33204">

<p>No support for WOFF / WOFF2 fonts in the default reader.</p>

<h2 id="apps"><a href="https://shkspr.mobi/blog/2019/11/gadget-review-boyue-likebook-ares/#apps">Apps</a></h2>

<p>There are a few built in apps - the standard Android browser is included. There's an app store and the ability to side-load.  There are a bunch of reading apps if you don't like the default one.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2019/11/App-store.png" alt="List of reading apps." width="702" height="936" class="aligncenter size-full wp-image-33202">

<p>Yup, you can install the Amazon Kindle app if you really want to!</p>

<p>(Screenshots are in colour, but the screen is black and white.)</p>

<h2 id="note-taking"><a href="https://shkspr.mobi/blog/2019/11/gadget-review-boyue-likebook-ares/#note-taking">Note taking</a></h2>

<p>I don't like handwriting - but the Wacom stylus is easy to use. You can draw on the screen, annotate PDFs, and erase your scribblings.</p>

<h2 id="quirks"><a href="https://shkspr.mobi/blog/2019/11/gadget-review-boyue-likebook-ares/#quirks">Quirks</a></h2>

<p>It doesn't come with a case, nor a screen protector. I'm in two minds about this. It has a glass screen, so should be fairly rugged. I don't plan on using the Wacom stylus, so I doubt that'll scratch it. But seeing as any blemish interferes with your reading experience, some protection is a must.  <a href="https://amzn.to/2XMtMM7">I purchased a £20 case for it</a>.</p>

<p>Start-up time is slow. This is an Android tablet, so doesn't have quite the same energy efficiency as other readers. From off to reading takes about 45 seconds. You can set it to never switch off, but you'll need to charge it a little more often.</p>

<p>The UI isn't brilliantly translated into English. You'll understand it, but the grammar and spacing are quirky.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2019/11/Weird-UI.png" alt="The UI says &quot;readed&quot; rather than read." width="1404" height="660" class="aligncenter size-full wp-image-33201">
You can also see a few HTML entities in the the UI. So, not perfect quality. But usable.</p>

<p>There are also some untranslated /UI elements.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2019/11/Untranslated-UI-elements.png" alt="Chinese text in the English UI." width="1404" height="816" class="aligncenter size-full wp-image-33200"></p>

<p>The UI takes a little getting used to. Some options are hidden away in menus, others behind icons. Most things you'll only have to set once, but it can be a challenge finding everything.</p>

<p>The first time I rebooted, it reverted to Chinese, but it was pretty simple to set it back.</p>

<h2 id="cost-and-verdict"><a href="https://shkspr.mobi/blog/2019/11/gadget-review-boyue-likebook-ares/#cost-and-verdict">Cost and Verdict</a></h2>

<p>I paid £190 from eBay - plus <a href="https://amzn.to/2XMtMM7">£20 for a case</a>. I reckon that's a bargain! There are cheaper eReaders out there - but this is the only one I found with USB-C.  It doesn't tie you in to the Amazon Kindle monoculture.</p>

<p>As an Android table, it's basically fine. Good enough for occasional web browsing, and some specifically optimised apps.</p>

<p>And as a book reader? Close to perfect! Text is crisp and clear, page turns are instant. Lots of options to fiddle with to get your books just right.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=33161&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2019/11/gadget-review-boyue-likebook-ares/feed/</wfw:commentRss>
			<slash:comments>9</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA["I, Robot" - the 3 laws considered harmful ★★★★★]]></title>
		<link>https://shkspr.mobi/blog/2019/01/i-robot-the-3-laws-considered-harmful/</link>
					<comments>https://shkspr.mobi/blog/2019/01/i-robot-the-3-laws-considered-harmful/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Thu, 31 Jan 2019 12:25:17 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[Book Review]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[robots]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=31337</guid>

					<description><![CDATA[What happens when a robot begins to question its creators? What would be the consequences of creating a robot with a sense of humour? Or the ability to lie? How do we truly tell the difference between man and machine? In &#34;I, Robot&#34;, Asimov sets out the Three Laws of Robotics – designed to protect humans from their robotic creations – and pushes them to their limits and beyond.  After attending a…]]></description>
										<content:encoded><![CDATA[<img src="https://shkspr.mobi/blog/wp-content/uploads/2019/01/I-Robot.jpg" alt="A metal face with glowing eyes stares at you." width="300" class="alignleft size-full wp-image-31330">

<blockquote><p>What happens when a robot begins to question its creators? What would be the consequences of creating a robot with a sense of humour? Or the ability to lie? How do we truly tell the difference between man and machine?
In "I, Robot", Asimov sets out the Three Laws of Robotics – designed to protect humans from their robotic creations – and pushes them to their limits and beyond.</p></blockquote>

<p>After attending <a href="https://mymisanthropicmusings.org.uk/ethics-and-self-driving-cars/">a lecture on the ethics of self-driving cars</a>, I decided to re-read Asimov's "I, Robot".</p>

<p>Any discussion of robots killing people inevitably returns to the supposed wisdom of the "3 laws of robotics".</p>

<p>I argue that the "3 laws" should be <a href="https://meyerweb.com/eric/comment/chech.html">considered harmful</a>.</p>

<p>Let's remind ourselves of the laws:</p>

<ol>
    <li>A robot may not injure a human being or, through inaction, allow a human being to come to harm.</li>
    <li>A robot must obey the orders given it by human beings except where such orders would conflict with the First Law.</li>
    <li>A robot must protect its own existence as long as such protection does not conflict with the First or Second Laws.</li>
</ol>

<p>The first thing to note is that these are a <em>literary</em> device - not a technical device.  Killer robots are boring sci-fi. The interesting sci-fi is looking at "good" robots which inexplicably go bad. "I, Robot" is essentially a collection of entertaining logic puzzles.  Æsthetics are not a good basis on which to build an algorithm for behaviour.</p>

<p>The second thing to note is that the laws are vague. What do we mean by "harm"? This is the lynchpin of one of the stories where (spoilers!) a telepathic robot avoids causing psychological pain.</p>

<p>Most people can't deal with complexity.  Here's a common complaint:</p>

<blockquote>Archimedes’ Principle: 67 words
The Ten Commandments: 179 words
The Gettysburg Address: 286 words
The Declaration of Independence: 1,300 words
The US government regulations on the sale of cabbage: 26,911 words

<cite>As circulated by email from everyone's "kooky" relative</cite>
</blockquote>

<p>The claim above is <a href="https://www.snopes.com/fact-check/of-cabbages-and-kingmakers/">utter nonsense</a> - but laws are complex.  The Ten Commandments may be short - but they cause a huge amount of ambiguity. What does "Thou shalt not kill" cover?  Gallons of ink has been spilled interpreting those four words.  Ironically, blood has been shed trying to resolve those ambiguities.</p>

<p>Would it have been helpful to have, from the start, 30,000 words explaining exactly what each rule meant?</p>

<p>Thirdly, these aren't natural laws. Too many people - including scientists - seem to think that these are hard-wired into robots! I've had conversations with otherwise rational people who haven't quite grasped that these aren't baked into the fabric of existence.</p>

<p>The "laws" are a harmful meme. That's testament to the power of Asimov's writing. His stories have infected every discussion of robotics and ethics. Even though we know it is fiction, something deep inside us recognises them as a necessary part of creating "acceptable" robots.</p>

<p>The 3 laws are brilliant for story-telling, but lousy for AI policy making.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=31337&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2019/01/i-robot-the-3-laws-considered-harmful/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Book Review - Longitude ★★★★⯪]]></title>
		<link>https://shkspr.mobi/blog/2019/01/book-review-longitude/</link>
					<comments>https://shkspr.mobi/blog/2019/01/book-review-longitude/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Wed, 30 Jan 2019 21:13:55 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[Book Review]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[science]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=31313</guid>

					<description><![CDATA[The dramatic human story of an epic scientific quest: the search for the solution of how to calculate longitude and the unlikely triumph of an English genius.  A fascinating look at a defining moment in technological development.  Full of intrigue, double-crossing, maths, and science.  It cracks along at a fair pace, sometimes lightly skipping over details. I would gladly have read this if it…]]></description>
										<content:encoded><![CDATA[<img src="https://shkspr.mobi/blog/wp-content/uploads/2019/01/Longitude.jpg" alt="A book cover." width="289" height="475" class="alignleft size-full wp-image-31311">

<blockquote><p>The dramatic human story of an epic scientific quest: the search for the solution of how to calculate longitude and the unlikely triumph of an English genius.</p></blockquote>

<p>A fascinating look at a defining moment in technological development.  Full of intrigue, double-crossing, maths, and science.</p>

<p>It cracks along at a fair pace, sometimes lightly skipping over details. I would gladly have read this if it were twice the length. Not a bad thing for a book to leave you wanting more.</p>

<p>The only weakness is a lack of diagrams and maps. Happily, there is <a href="http://www.davasobel.com/books-by-dava-sobel/2016/9/2/the-illustrated-longitude">an illustrated edition</a>, which I will check out in due course.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=31313&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2019/01/book-review-longitude/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Book Review - Death's End ★★★⯪☆]]></title>
		<link>https://shkspr.mobi/blog/2019/01/book-review-deaths-end/</link>
					<comments>https://shkspr.mobi/blog/2019/01/book-review-deaths-end/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Mon, 28 Jan 2019 14:12:52 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[Book Review]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[Sci Fi]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=31286</guid>

					<description><![CDATA[Death’s End (死神永生) is a science fiction novel by the Chinese writer Liu Cixin. It is the third novel in the trilogy titled Remembrance of Earth&#039;s Past, following the Hugo Award-winning novel The Three-Body Problem and its sequel, The Dark Forest.  This is an unforgiving book. Did you remember every detail from the last two novels? No - better go back and take some notes!  It is epic sci-fi. Boun…]]></description>
										<content:encoded><![CDATA[<img src="https://shkspr.mobi/blog/wp-content/uploads/2019/01/deaths-end.jpg" alt="An explosion in space." width="316" height="500" class="alignleft size-full wp-image-31173">

<blockquote><p>Death’s End (死神永生) is a science fiction novel by the Chinese writer Liu Cixin. It is the third novel in the trilogy titled Remembrance of Earth's Past, following the Hugo Award-winning novel The Three-Body Problem and its sequel, The Dark Forest.</p></blockquote>

<p>This is an unforgiving book. Did you remember every detail from the last two novels? No - better go back and take some notes!</p>

<p>It is epic sci-fi. Bouncing between times, exploring big ideas, and gently bubbling techno-horror.</p>

<p>But it is uncompromising in how much work it expects you to do. A throwaway line towards the end of the book directly relates to a minor plot-point in the first.</p>

<p>Overall, the three books are a masterwork - but it requires a lot of effort to appreciate.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=31286&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2019/01/book-review-deaths-end/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Book Review - This Is Going To Hurt ★★★☆☆]]></title>
		<link>https://shkspr.mobi/blog/2019/01/book-review-this-is-going-to-hurt/</link>
					<comments>https://shkspr.mobi/blog/2019/01/book-review-this-is-going-to-hurt/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sun, 27 Jan 2019 10:05:47 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[Book Review]]></category>
		<category><![CDATA[comedy]]></category>
		<category><![CDATA[ebook]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=31300</guid>

					<description><![CDATA[​Welcome to 97-hour weeks. Welcome to life and death decisions. Welcome to a constant tsunami of bodily fluids. Welcome to earning less than the hospital parking meter. Wave goodbye to your friends and relationships... Welcome to the life of a junior doctor.  I saw Kay perform his delightfully disgusting parody songs on the Amateur Transplants tour way back in 2008.  The humour in this book is m…]]></description>
										<content:encoded><![CDATA[<img src="https://shkspr.mobi/blog/wp-content/uploads/2019/01/This-is-going-to-hurt.jpg" alt="A doctor's white coat hangs on the wall. A red pen in the pocket is leaking." width="330" height="500" class="alignleft size-full wp-image-31289">

<blockquote><p>​Welcome to 97-hour weeks. Welcome to life and death decisions. Welcome to a constant tsunami of bodily fluids. Welcome to earning less than the hospital parking meter. Wave goodbye to your friends and relationships...
Welcome to the life of a junior doctor.</p></blockquote>

<p>I saw Kay perform his delightfully disgusting parody songs on the <a href="https://en.wikipedia.org/wiki/The_Black_and_White_Menstrual_Show">Amateur Transplants tour</a> way back in <a href="https://twitter.com/edent/status/793815477">2008</a>.  The humour in this book is much the same - bodily fluids, a healthy disregard for squeamishness, and some big-and-clever swearing.</p>

<p>If you have any mates in the medical profession, you'll have heard similar anecdotes to the ones in the book. Patients sticking stuff up their bums, doctors accidentally chopping off the wrong bits, bosses leaving equipment inside a patient. It is a well-worn seam of comedy.</p>

<p>Don't get me wrong, it is funny - and a stark look at the realities of working in the NHS - but it probably won't teach you anything new. It's a quick read and entertaining enough - although not great for people with a fear of blood.</p>

<p>I'd recommend that you read <a href="https://amzn.to/2HwY8xX">Blood, Sweat, and Tea</a> - Brian Kellett's amazing account of life working on London's Ambulances. Funnier and more raw.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=31300&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2019/01/book-review-this-is-going-to-hurt/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Review - Space Odyssey the Making of a Masterpiece ★★★★☆]]></title>
		<link>https://shkspr.mobi/blog/2019/01/review-space-odyssey/</link>
					<comments>https://shkspr.mobi/blog/2019/01/review-space-odyssey/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Wed, 23 Jan 2019 13:15:34 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[2001]]></category>
		<category><![CDATA[Book Review]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[movies]]></category>
		<category><![CDATA[Sci Fi]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=31131</guid>

					<description><![CDATA[Celebrating the fiftieth anniversary of the film’s release, this is the definitive story of the making of 2001: A Space Odyssey, acclaimed today as one of the greatest films ever made, including the inside account of how director Stanley Kubrick and writer Arthur C. Clarke created this cinematic masterpiece.  This is the ultimate &#34;DVD Extra&#34; of a book. Every single detail of the genesis and r…]]></description>
										<content:encoded><![CDATA[<img src="https://shkspr.mobi/blog/wp-content/uploads/2019/01/61XN9DVwfeL.jpg" alt="A red-suited spaceman floats inside a giant computer." width="331" height="500" class="alignleft size-full wp-image-31110">

<blockquote><p>Celebrating the fiftieth anniversary of the film’s release, this is the definitive story of the making of 2001: A Space Odyssey, acclaimed today as one of the greatest films ever made, including the inside account of how director Stanley Kubrick and writer Arthur C. Clarke created this cinematic masterpiece.</p></blockquote>

<p>This is the ultimate "DVD Extra" of a book. Every single detail of the genesis and revelation of 2001 is documented in painstaking detail.  The author has exclusive access to original manuscripts, and has conducted dozens of interviews with everyone from Arthur C Clarke to - <em>literally</em> the on-set tea boy.</p>

<p>Full of odd little anecdotes - some barely more fleshed out than an IMDb trivia entry - including some absolute gems of stories in there. A complete guide to how the film twisted and turned in its creation.  I'd go so far as to call it a pure biography of a cultural artefact.</p>

<p>At times it feels like each chapter is written by a different author.  There are meandering asides, and spurious footnotes - but it is all rather jolly.</p>

<p>It is long - but what else would you expect?  A great book for anyone who loves the film.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=31131&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2019/01/review-space-odyssey/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Review - Why I’m No Longer Talking to White People About Race ★★★★⯪]]></title>
		<link>https://shkspr.mobi/blog/2019/01/review-why-im-no-longer-talking-to-white-people-about-race/</link>
					<comments>https://shkspr.mobi/blog/2019/01/review-why-im-no-longer-talking-to-white-people-about-race/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Tue, 22 Jan 2019 20:18:40 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[Book Review]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[racism]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=31100</guid>

					<description><![CDATA[Exploring issues from eradicated black history to the political purpose of white dominance, whitewashed feminism to the inextricable link between class and race, Reni Eddo-Lodge offers a timely and essential new framework for how to see, acknowledge and counter racism. It is a searing, illuminating, absolutely necessary exploration of what it is to be a person of colour in Britain today. …]]></description>
										<content:encoded><![CDATA[<img src="https://shkspr.mobi/blog/wp-content/uploads/2019/01/415UGa1hIkL.jpg" alt="Book cover." width="311" height="500" class="alignleft size-full wp-image-31103">

<blockquote><p>Exploring issues from eradicated black history to the political purpose of white dominance, whitewashed feminism to the inextricable link between class and race, Reni Eddo-Lodge offers a timely and essential new framework for how to see, acknowledge and counter racism. It is a searing, illuminating, absolutely necessary exploration of what it is to be a person of colour in Britain today.</p></blockquote>

<p>Sparked off by her <a href="http://renieddolodge.co.uk/why-im-no-longer-talking-to-white-people-about-race/">explosively popular blog post</a>, this is a timely and deliberately provocative book.</p>

<p>Some parts absolutely struck a chord with me - especially the lack of education in Britain about the country's role in the slave trade.  I also found the discussion of the structural biases within certain institutions to be extremely relevant.</p>

<p>If I'm being selfish, I'd have liked to have seen some discussion of events like the <a href="https://web.archive.org/web/20151206160416/https://www.telegraph.co.uk/history/world-war-two/12035018/Revealed-How-Britons-welcomed-black-soldiers-during-WWII-and-fought-alongside-them-against-racist-GIs.html">Battle of Bamber Bridge</a>, where white British people weren't quite as awful as they might have been.</p>

<p>I felt the polemic occasionally got in the way of the argument.  But perhaps this isn't a subject which deserves dispassionate analysis.</p>

<p>All that's thin criticism to an excellent and convincing book. Highly recommended.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=31100&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2019/01/review-why-im-no-longer-talking-to-white-people-about-race/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
