<?xml version="1.0" encoding="UTF-8"?><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>John Beales</title>
	<atom:link href="https://johnbeales.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://johnbeales.com/</link>
	<description>Professional Independent Web Development</description>
	<lastBuildDate>Tue, 09 Jun 2026 22:17:51 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/07/favicon.png?fit=32%2C32&#038;ssl=1</url>
	<title>John Beales</title>
	<link>https://johnbeales.com/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<atom:link rel='hub' href='https://johnbeales.com/?pushpress=hub'/>
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/>
<atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/>
<atom:link rel="hub" href="https://websubhub.com/hub"/>
<atom:link rel="self" href="https://johnbeales.com/feed/"/>
<site xmlns="com-wordpress:feed-additions:1">3441101</site>	<item>
		<title></title>
		<link>https://johnbeales.com/micro/2026-06-09t181611-0400/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Tue, 09 Jun 2026 22:17:47 +0000</pubDate>
				<category><![CDATA[agentic development]]></category>
		<category><![CDATA[ai]]></category>
		<category><![CDATA[anthropic]]></category>
		<category><![CDATA[claude code]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=45524</guid>

					<description><![CDATA[<p>Asked Claude Code with Fable 5 to write some API docs based on the code, and it did, and also pointed out some bugs in the API, which it is now fixing, and updating the docs to match the fixes.</p>
<p>The post <a href="https://johnbeales.com/micro/2026-06-09t181611-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Asked Claude Code with Fable 5 to write some API docs based on the code, and it did, and also pointed out some bugs in the API, which it is now fixing, and updating the docs to match the fixes.</p>
<p>The post <a href="https://johnbeales.com/micro/2026-06-09t181611-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">45524</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2026-06-09t174853-0400/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Tue, 09 Jun 2026 21:51:40 +0000</pubDate>
				<category><![CDATA[analytics]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[database design]]></category>
		<category><![CDATA[migration]]></category>
		<category><![CDATA[reporting]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=45518</guid>

					<description><![CDATA[<p>I&#8217;m migrating analytics to a new database structure for 4RoadService, it looks like this will take a few days. This should enable faster, better, and more accurate reporting for our customers.</p>
<p>The post <a href="https://johnbeales.com/micro/2026-06-09t174853-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><a href="https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/06/Screenshot-2026-06-09-at-17.48.23.png?ssl=1"><img data-recalc-dims="1" fetchpriority="high" decoding="async" width="960" height="834" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/06/Screenshot-2026-06-09-at-17.48.23.png?resize=960%2C834&#038;ssl=1" alt="" class="wp-image-45519" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/06/Screenshot-2026-06-09-at-17.48.23.png?resize=1024%2C890&amp;ssl=1 1024w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/06/Screenshot-2026-06-09-at-17.48.23.png?resize=300%2C261&amp;ssl=1 300w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/06/Screenshot-2026-06-09-at-17.48.23.png?resize=768%2C667&amp;ssl=1 768w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/06/Screenshot-2026-06-09-at-17.48.23.png?resize=1536%2C1334&amp;ssl=1 1536w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/06/Screenshot-2026-06-09-at-17.48.23.png?resize=2048%2C1779&amp;ssl=1 2048w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/06/Screenshot-2026-06-09-at-17.48.23.png?resize=750%2C652&amp;ssl=1 750w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/06/Screenshot-2026-06-09-at-17.48.23.png?resize=640%2C556&amp;ssl=1 640w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/06/Screenshot-2026-06-09-at-17.48.23.png?resize=510%2C443&amp;ssl=1 510w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/06/Screenshot-2026-06-09-at-17.48.23.png?resize=400%2C348&amp;ssl=1 400w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/06/Screenshot-2026-06-09-at-17.48.23.png?resize=320%2C278&amp;ssl=1 320w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/06/Screenshot-2026-06-09-at-17.48.23.png?resize=960%2C834&amp;ssl=1 960w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/06/Screenshot-2026-06-09-at-17.48.23.png?resize=1000%2C869&amp;ssl=1 1000w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/06/Screenshot-2026-06-09-at-17.48.23.png?w=2164&amp;ssl=1 2164w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/06/Screenshot-2026-06-09-at-17.48.23.png?w=1920&amp;ssl=1 1920w" sizes="(max-width: 960px) 100vw, 960px" /></a></figure>



<p class="wp-block-paragraph">I&#8217;m migrating analytics to a new database structure for 4RoadService, it looks like this will take a few days. This should enable faster, better, and more accurate reporting for our customers. </p>
<p>The post <a href="https://johnbeales.com/micro/2026-06-09t174853-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">45518</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2026-06-09t163409-0400/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Tue, 09 Jun 2026 20:35:40 +0000</pubDate>
				<category><![CDATA[agentic development]]></category>
		<category><![CDATA[ai]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=45511</guid>

					<description><![CDATA[<p>Playing around with Anthropic&#8217;s Fable this afternoon to do some code review and write some documentation. So far it seems to be very thorough.</p>
<p>The post <a href="https://johnbeales.com/micro/2026-06-09t163409-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Playing around with Anthropic&#8217;s <a href="https://www.anthropic.com/news/claude-fable-5-mythos-5">Fable</a> this afternoon to do some code review and write some documentation. So far it seems to be very thorough.</p>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://johnbeales.com/micro/2026-06-09t163409-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">45511</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2026-05-27t195319-0400/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 27 May 2026 23:55:04 +0000</pubDate>
				<category><![CDATA[agentic development]]></category>
		<category><![CDATA[ai]]></category>
		<category><![CDATA[claude code]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=45167</guid>

					<description><![CDATA[<p>So far all my Claude Code work has been with Laravel. Today I&#8217;m starting a new project with WordPress, and will be interested to see how Claude does in a slightly different domain.</p>
<p>The post <a href="https://johnbeales.com/micro/2026-05-27t195319-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">So far all my Claude Code work has been with Laravel. Today I&#8217;m starting a new project with WordPress, and will be interested to see how Claude does in a slightly different domain.</p>
<p>The post <a href="https://johnbeales.com/micro/2026-05-27t195319-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">45167</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2026-05-26t200821-0400/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 27 May 2026 00:09:58 +0000</pubDate>
				<category><![CDATA[agentic development]]></category>
		<category><![CDATA[ai]]></category>
		<category><![CDATA[claude]]></category>
		<category><![CDATA[claude code]]></category>
		<category><![CDATA[database]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=45141</guid>

					<description><![CDATA[<p>I am now a member of the &#8220;Claude code deleted something that it shouldn&#8217;t have from my database&#8221; club! Good thing it was a development database.</p>
<p>The post <a href="https://johnbeales.com/micro/2026-05-26t200821-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I am now a member of the &#8220;Claude code deleted something that it shouldn&#8217;t have from my database&#8221; club! Good thing it was a development database.</p>
<p>The post <a href="https://johnbeales.com/micro/2026-05-26t200821-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">45141</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2026-05-26t151213-0400/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Tue, 26 May 2026 19:14:48 +0000</pubDate>
				<category><![CDATA[development]]></category>
		<category><![CDATA[timezone]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=45123</guid>

					<description><![CDATA[<p>Developer headaches meet real-world applications.</p>
<p>The post <a href="https://johnbeales.com/micro/2026-05-26t151213-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Developer headaches meet real-world applications. </p>



<figure class="wp-block-image size-large"><a href="https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/05/IMG_3361.jpeg?ssl=1"><img data-recalc-dims="1" decoding="async" width="960" height="244" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/05/IMG_3361.jpeg?resize=960%2C244&#038;ssl=1" alt="A screenshot of an iPhone notification stating that time zone information has been updated, and the phone should be restarted to apply the new time zone definitions." class="wp-image-45124" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/05/IMG_3361.jpeg?resize=1024%2C260&amp;ssl=1 1024w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/05/IMG_3361.jpeg?resize=300%2C76&amp;ssl=1 300w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/05/IMG_3361.jpeg?resize=768%2C195&amp;ssl=1 768w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/05/IMG_3361.jpeg?resize=750%2C190&amp;ssl=1 750w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/05/IMG_3361.jpeg?resize=640%2C162&amp;ssl=1 640w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/05/IMG_3361.jpeg?resize=510%2C129&amp;ssl=1 510w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/05/IMG_3361.jpeg?resize=400%2C101&amp;ssl=1 400w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/05/IMG_3361.jpeg?resize=320%2C81&amp;ssl=1 320w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/05/IMG_3361.jpeg?resize=960%2C243&amp;ssl=1 960w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/05/IMG_3361.jpeg?resize=1000%2C254&amp;ssl=1 1000w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/05/IMG_3361.jpeg?w=1179&amp;ssl=1 1179w" sizes="(max-width: 960px) 100vw, 960px" /></a></figure>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://johnbeales.com/micro/2026-05-26t151213-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">45123</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2026-05-23t172847-0400/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sat, 23 May 2026 21:30:15 +0000</pubDate>
				<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=45005</guid>

					<description><![CDATA[<p>That&#8217;s pretty cool that cruise ships are stopping there, it&#8217;s the type of useless, geeky &#8220;visit&#8221; that nobody needs to make, but I would love to be able to say I have done.</p>
<p>The post <a href="https://johnbeales.com/micro/2026-05-23t172847-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">That&#8217;s pretty cool that cruise ships are stopping there, it&#8217;s the type of useless, geeky &#8220;visit&#8221; that nobody needs to make, but I would love to be able to say I have done.</p>
<p>The post <a href="https://johnbeales.com/micro/2026-05-23t172847-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">45005</post-id>	</item>
		<item>
		<title>The Historian</title>
		<link>https://johnbeales.com/books/the-historian/</link>
					<comments>https://johnbeales.com/books/the-historian/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sat, 23 May 2026 21:25:51 +0000</pubDate>
				<category><![CDATA[dracula]]></category>
		<category><![CDATA[fiction]]></category>
		<category><![CDATA[horror]]></category>
		<category><![CDATA[literary fiction]]></category>
		<category><![CDATA[vampire]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=44999</guid>

					<description><![CDATA[<p>I received Elizabeth Kostova&#8217;s vampire novel The Historian for my birthday earlier this spring, and finished it last night. It has been great fun to read. I read Dracula back in 2023, but it seems like this year, for some reason, I have had more exposure to vampire stories, maybe because my Russian Literature professor [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/the-historian/">The Historian</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I received Elizabeth Kostova&#8217;s vampire novel <em>The Historian</em> for my birthday earlier this spring, and finished it last night. It has been great fun to read. I read Dracula back in 2023, but it seems like this year, for some reason, I have had more exposure to vampire stories, maybe because my Russian Literature professor kept talking about them.</p>



<p class="wp-block-paragraph">If I&#8217;m going to nitpick <em>The Historian</em>, (and this could be considered a spoiler) I wonder if everything comes together too nicely in the end. Maybe it&#8217;s because I spent the year reading Russian novels that were written to offer commentary on life, but I feel like Kostova could have left <em>The Historian</em> more open-ended and had an even more realistic story, although one that would surely anger some readers.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img decoding="async" width="263" height="400" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/05/book-44999-cover.jpg?fit=263%2C400&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/05/book-44999-cover.jpg?w=263&amp;ssl=1 263w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/05/book-44999-cover.jpg?resize=197%2C300&amp;ssl=1 197w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/05/book-44999-cover.jpg?resize=210%2C320&amp;ssl=1 210w" sizes="(max-width: 263px) 100vw, 263px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>


<p class="dt_booklinks"><a href="http://www.amazon.com/dp/9780316070638/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/9780316070638/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/9780316070638/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div><p>The post <a href="https://johnbeales.com/books/the-historian/">The Historian</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-historian/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">44999</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2026-05-21t151813-0400/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Thu, 21 May 2026 19:19:41 +0000</pubDate>
				<category><![CDATA[at protocol]]></category>
		<category><![CDATA[bluesky]]></category>
		<category><![CDATA[microblogging]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=44882</guid>

					<description><![CDATA[<p>Switched to the new ATmosphere plugin for Bluesky/AT protocol integration from johnbeales.com, and it seems great. So far it does exactly what I want it to.</p>
<p>The post <a href="https://johnbeales.com/micro/2026-05-21t151813-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Switched to the new <a href="https://activitypub.blog/2026/05/20/atmosphere-1-0-0-liftoff/">ATmosphere</a> plugin for Bluesky/AT protocol integration from <a href="https://johnbeales.com" type="link" id="johnbeales.com">johnbeales.com</a>, and it seems great. So far it does exactly what I want it to.</p>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://johnbeales.com/micro/2026-05-21t151813-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">44882</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2026-05-21t151625-0400/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Thu, 21 May 2026 19:17:15 +0000</pubDate>
				<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=44878</guid>

					<description><![CDATA[<p>WordPress 7.0 upgrade completed, nothing seems broken.</p>
<p>The post <a href="https://johnbeales.com/micro/2026-05-21t151625-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">WordPress 7.0 upgrade completed, nothing seems broken. </p>
<p>The post <a href="https://johnbeales.com/micro/2026-05-21t151625-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">44878</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2026-05-21t150613-0400/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Thu, 21 May 2026 19:06:38 +0000</pubDate>
				<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=44873</guid>

					<description><![CDATA[<p>Time to update to WordPress 7.0! It seems like a big release.</p>
<p>The post <a href="https://johnbeales.com/micro/2026-05-21t150613-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Time to update to WordPress 7.0! It seems like a big release.</p>
<p>The post <a href="https://johnbeales.com/micro/2026-05-21t150613-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">44873</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2026-05-12t180448-0400/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Tue, 12 May 2026 22:05:28 +0000</pubDate>
				<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=44599</guid>

					<description><![CDATA[<p>Did a lot of cleaning today while Claude &#38; Codex were churning. I&#8217;m going to have to spin up a side project or something to handle the waiting.</p>
<p>The post <a href="https://johnbeales.com/micro/2026-05-12t180448-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Did a lot of cleaning today while Claude &amp; Codex were churning. I&#8217;m going to have to spin up a side project or something to handle the waiting.</p>
<p>The post <a href="https://johnbeales.com/micro/2026-05-12t180448-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">44599</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2026-05-04t150536-0400/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Mon, 04 May 2026 19:06:55 +0000</pubDate>
				<category><![CDATA[ai]]></category>
		<category><![CDATA[wix]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=44396</guid>

					<description><![CDATA[<p>Working on a Wix site this afternoon. Has anyone figured out how to make agents do Wix development yet?</p>
<p>The post <a href="https://johnbeales.com/micro/2026-05-04t150536-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Working on a Wix site this afternoon. Has anyone figured out how to make agents do Wix development yet?</p>
<p>The post <a href="https://johnbeales.com/micro/2026-05-04t150536-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">44396</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2026-05-03t200721-0400/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Mon, 04 May 2026 00:08:55 +0000</pubDate>
				<category><![CDATA[emoji]]></category>
		<category><![CDATA[unicode]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=44367</guid>

					<description><![CDATA[<p>This Reddit thread pointed me in the right direction to update my (very old) WordPress database to support emoji.</p>
<p>The post <a href="https://johnbeales.com/micro/2026-05-03t200721-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><a href="https://www.reddit.com/r/Wordpress/comments/16jfk6w/emojis_not_working_in_wordpress_posts/">This Reddit thread</a> pointed me in the right direction to update my (very old) WordPress database to support emoji.</p>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://johnbeales.com/micro/2026-05-03t200721-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">44367</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2026-05-03t200556-0400/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Mon, 04 May 2026 00:06:27 +0000</pubDate>
				<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=44363</guid>

					<description><![CDATA[<p>Updated some database tables and now I think I have emoji working here. 🌻</p>
<p>The post <a href="https://johnbeales.com/micro/2026-05-03t200556-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Updated some database tables and now I think I have emoji working here. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f33b.png" alt="🌻" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>The post <a href="https://johnbeales.com/micro/2026-05-03t200556-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">44363</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2026-05-03t165652-0400/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sun, 03 May 2026 20:58:06 +0000</pubDate>
				<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=44352</guid>

					<description><![CDATA[<p>Dropping the Cloudflare &#8220;Managed Challenge&#8221; hammer on bots that are overwhelming a server. 😗</p>
<p>The post <a href="https://johnbeales.com/micro/2026-05-03t165652-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Dropping the Cloudflare &#8220;Managed Challenge&#8221; hammer on bots that are overwhelming a server. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f617.png" alt="😗" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<figure class="wp-block-image size-large"><a href="https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/05/Screenshot-2026-05-03-at-16.56.10.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="960" height="494" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/05/Screenshot-2026-05-03-at-16.56.10.png?resize=960%2C494&#038;ssl=1" alt="" class="wp-image-44353" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/05/Screenshot-2026-05-03-at-16.56.10.png?resize=1024%2C527&amp;ssl=1 1024w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/05/Screenshot-2026-05-03-at-16.56.10.png?resize=300%2C154&amp;ssl=1 300w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/05/Screenshot-2026-05-03-at-16.56.10.png?resize=768%2C395&amp;ssl=1 768w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/05/Screenshot-2026-05-03-at-16.56.10.png?resize=1536%2C791&amp;ssl=1 1536w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/05/Screenshot-2026-05-03-at-16.56.10.png?resize=2048%2C1054&amp;ssl=1 2048w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/05/Screenshot-2026-05-03-at-16.56.10.png?resize=750%2C386&amp;ssl=1 750w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/05/Screenshot-2026-05-03-at-16.56.10.png?resize=640%2C329&amp;ssl=1 640w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/05/Screenshot-2026-05-03-at-16.56.10.png?resize=510%2C262&amp;ssl=1 510w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/05/Screenshot-2026-05-03-at-16.56.10.png?resize=400%2C206&amp;ssl=1 400w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/05/Screenshot-2026-05-03-at-16.56.10.png?resize=320%2C165&amp;ssl=1 320w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/05/Screenshot-2026-05-03-at-16.56.10.png?resize=960%2C494&amp;ssl=1 960w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/05/Screenshot-2026-05-03-at-16.56.10.png?resize=1000%2C515&amp;ssl=1 1000w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/05/Screenshot-2026-05-03-at-16.56.10.png?w=2250&amp;ssl=1 2250w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/05/Screenshot-2026-05-03-at-16.56.10.png?w=1920&amp;ssl=1 1920w" sizes="auto, (max-width: 960px) 100vw, 960px" /></a></figure>
<p>The post <a href="https://johnbeales.com/micro/2026-05-03t165652-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">44352</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2026-05-03t131301-0400/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sun, 03 May 2026 17:14:51 +0000</pubDate>
				<category><![CDATA[laravel]]></category>
		<category><![CDATA[url]]></category>
		<category><![CDATA[url manipuation]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=44343</guid>

					<description><![CDATA[<p>Discovered today that URLs are supposed to be restricted to ASCII characters. Had to (have Claude) write a command to update some URLs.</p>
<p>The post <a href="https://johnbeales.com/micro/2026-05-03t131301-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Discovered today that <a href="https://datatracker.ietf.org/doc/html/rfc2396">URLs are supposed to be restricted to ASCII characters</a>. Had to (have Claude) write a command to update some URLs.</p>
<p>The post <a href="https://johnbeales.com/micro/2026-05-03t131301-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">44343</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2026-05-02t125337-0400/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sat, 02 May 2026 16:54:28 +0000</pubDate>
				<category><![CDATA[laravel]]></category>
		<category><![CDATA[upgrade]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=44313</guid>

					<description><![CDATA[<p>Cleaning up some unexpected fallout from updating to Laravel 13 yesterday, clearly I need to add a couple more tests to my test suite.</p>
<p>The post <a href="https://johnbeales.com/micro/2026-05-02t125337-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Cleaning up some unexpected fallout from updating to Laravel 13 yesterday, clearly I need to add a couple more tests to my test suite.</p>
<p>The post <a href="https://johnbeales.com/micro/2026-05-02t125337-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">44313</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2026-04-30t155124-0400/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Thu, 30 Apr 2026 19:52:50 +0000</pubDate>
				<category><![CDATA[microblogging]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=44267</guid>

					<description><![CDATA[<p>WordPress.com&#8217;s new microblogging interface makes me think I should release the system I&#8217;m using here for microblogging.</p>
<p>The post <a href="https://johnbeales.com/micro/2026-04-30t155124-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><a href="https://wordpress.com/blog/2026/04/28/a-new-theme-for-short-form-blogging-on-wordpress-com/">WordPress.com&#8217;s new microblogging interface</a> makes me think I should release the system I&#8217;m using here for microblogging.</p>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://johnbeales.com/micro/2026-04-30t155124-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">44267</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2026-04-30t154441-0400/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Thu, 30 Apr 2026 19:45:34 +0000</pubDate>
				<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=44263</guid>

					<description><![CDATA[<p>Put my AirPods Pro in the wash 🙁 They seem to be okay, but are drying out so they stop making weird noises.</p>
<p>The post <a href="https://johnbeales.com/micro/2026-04-30t154441-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Put my AirPods Pro in the wash <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f641.png" alt="🙁" class="wp-smiley" style="height: 1em; max-height: 1em;" /> They seem to be okay, but are drying out so they stop making weird noises.</p>
<p>The post <a href="https://johnbeales.com/micro/2026-04-30t154441-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">44263</post-id>	</item>
		<item>
		<title>My Brilliant Friend</title>
		<link>https://johnbeales.com/books/my-brilliant-friend/</link>
					<comments>https://johnbeales.com/books/my-brilliant-friend/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Thu, 30 Apr 2026 18:51:17 +0000</pubDate>
				<category><![CDATA[fiction]]></category>
		<category><![CDATA[italian]]></category>
		<category><![CDATA[literary fiction]]></category>
		<category><![CDATA[novel]]></category>
		<category><![CDATA[translation]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=44257</guid>

					<description><![CDATA[<p>After the hype a couple of years back I figured I should read it, and it turns out that I enjoyed it. I might read the rest of the series. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/my-brilliant-friend/">My Brilliant Friend</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">After the hype a couple of years back I figured I should read it, and it turns out that I enjoyed it. I might read the rest of the series.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="304" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/04/book-44257-cover.jpg?fit=304%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/04/book-44257-cover.jpg?w=304&amp;ssl=1 304w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/04/book-44257-cover.jpg?resize=182%2C300&amp;ssl=1 182w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/04/book-44257-cover.jpg?resize=243%2C400&amp;ssl=1 243w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/04/book-44257-cover.jpg?resize=195%2C320&amp;ssl=1 195w" sizes="auto, (max-width: 304px) 100vw, 304px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>


<p class="dt_booklinks"><a href="http://www.amazon.com/dp/9781609450786/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/9781609450786/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/9781609450786/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div><p>The post <a href="https://johnbeales.com/books/my-brilliant-friend/">My Brilliant Friend</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/my-brilliant-friend/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">44257</post-id>	</item>
		<item>
		<title>Project Hail Mary</title>
		<link>https://johnbeales.com/books/project-hail-mary/</link>
					<comments>https://johnbeales.com/books/project-hail-mary/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sat, 25 Apr 2026 15:05:36 +0000</pubDate>
				<category><![CDATA[fiction]]></category>
		<category><![CDATA[sci-fi]]></category>
		<category><![CDATA[science-fiction]]></category>
		<category><![CDATA[space]]></category>
		<category><![CDATA[space travel]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=44113</guid>

					<description><![CDATA[<p>With the hype around the movie I felt like I should read the book, and thoroughly enjoyed it. Now maybe I&#8217;ll go see the film. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/project-hail-mary/">Project Hail Mary</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">With the hype around the movie I felt like I should read the book, and thoroughly enjoyed it. Now maybe I&#8217;ll go see the film.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="314" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/04/book-44113-cover.jpg?fit=314%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/04/book-44113-cover.jpg?w=314&amp;ssl=1 314w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/04/book-44113-cover.jpg?resize=188%2C300&amp;ssl=1 188w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/04/book-44113-cover.jpg?resize=251%2C400&amp;ssl=1 251w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/04/book-44113-cover.jpg?resize=201%2C320&amp;ssl=1 201w" sizes="auto, (max-width: 314px) 100vw, 314px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>


<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-0-593-39556-1/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-0-593-39556-1/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-0-593-39556-1/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div><p>The post <a href="https://johnbeales.com/books/project-hail-mary/">Project Hail Mary</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/project-hail-mary/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">44113</post-id>	</item>
		<item>
		<title>Gray Mountain</title>
		<link>https://johnbeales.com/books/gray-mountain/</link>
					<comments>https://johnbeales.com/books/gray-mountain/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 22 Apr 2026 00:33:59 +0000</pubDate>
				<category><![CDATA[fiction]]></category>
		<category><![CDATA[lawyer]]></category>
		<category><![CDATA[mystery]]></category>
		<category><![CDATA[thriller]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=43998</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/gray-mountain/">Gray Mountain</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="322" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/04/book-43998-cover.jpg?fit=322%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/04/book-43998-cover.jpg?w=322&amp;ssl=1 322w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/04/book-43998-cover.jpg?resize=193%2C300&amp;ssl=1 193w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/04/book-43998-cover.jpg?resize=258%2C400&amp;ssl=1 258w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/04/book-43998-cover.jpg?resize=206%2C320&amp;ssl=1 206w" sizes="auto, (max-width: 322px) 100vw, 322px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/9780385537148/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/9780385537148/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/9780385537148/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/gray-mountain/">Gray Mountain</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/gray-mountain/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">43998</post-id>	</item>
		<item>
		<title>The Guardians</title>
		<link>https://johnbeales.com/books/the-guardians/</link>
					<comments>https://johnbeales.com/books/the-guardians/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 22 Apr 2026 00:32:38 +0000</pubDate>
				<category><![CDATA[fiction]]></category>
		<category><![CDATA[lawyer]]></category>
		<category><![CDATA[novel]]></category>
		<category><![CDATA[thriller]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=43992</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/the-guardians/">The Guardians</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="334" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/04/book-43992-cover.jpg?fit=334%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/04/book-43992-cover.jpg?w=334&amp;ssl=1 334w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/04/book-43992-cover.jpg?resize=200%2C300&amp;ssl=1 200w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/04/book-43992-cover.jpg?resize=267%2C400&amp;ssl=1 267w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/04/book-43992-cover.jpg?resize=214%2C320&amp;ssl=1 214w" sizes="auto, (max-width: 334px) 100vw, 334px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/9780385544184/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/9780385544184/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/9780385544184/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-guardians/">The Guardians</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-guardians/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">43992</post-id>	</item>
		<item>
		<title>Anna Karenina</title>
		<link>https://johnbeales.com/books/anna-karenina-2/</link>
					<comments>https://johnbeales.com/books/anna-karenina-2/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 22 Apr 2026 00:30:16 +0000</pubDate>
				<category><![CDATA[fiction]]></category>
		<category><![CDATA[literature]]></category>
		<category><![CDATA[russian]]></category>
		<category><![CDATA[russian literature]]></category>
		<category><![CDATA[russian novel]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=43986</guid>

					<description><![CDATA[<p>Translated by Richard Paver and Larissa Volokhonsky Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/anna-karenina-2/">Anna Karenina</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Translated by Richard Paver and Larissa Volokhonsky</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="303" height="475" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/04/book-43986-cover.jpg?fit=303%2C475&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/04/book-43986-cover.jpg?w=303&amp;ssl=1 303w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/04/book-43986-cover.jpg?resize=191%2C300&amp;ssl=1 191w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/04/book-43986-cover.jpg?resize=255%2C400&amp;ssl=1 255w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/04/book-43986-cover.jpg?resize=204%2C320&amp;ssl=1 204w" sizes="auto, (max-width: 303px) 100vw, 303px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>


<p class="dt_booklinks"><a href="http://www.amazon.com/dp/9780140449174/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/9780140449174/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/9780140449174/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div><p>The post <a href="https://johnbeales.com/books/anna-karenina-2/">Anna Karenina</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/anna-karenina-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">43986</post-id>	</item>
		<item>
		<title>Crime and Punishment</title>
		<link>https://johnbeales.com/books/crime-and-punishment/</link>
					<comments>https://johnbeales.com/books/crime-and-punishment/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 22 Apr 2026 00:27:09 +0000</pubDate>
				<category><![CDATA[fiction]]></category>
		<category><![CDATA[imperial russia]]></category>
		<category><![CDATA[literature]]></category>
		<category><![CDATA[russian]]></category>
		<category><![CDATA[russian novel]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=43980</guid>

					<description><![CDATA[<p>Translated by Richard Paver and Larissa Volokhonsky Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/crime-and-punishment/">Crime and Punishment</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Translated by Richard Paver and Larissa Volokhonsky</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="319" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/04/book-43980-cover.jpg?fit=319%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/04/book-43980-cover.jpg?w=319&amp;ssl=1 319w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/04/book-43980-cover.jpg?resize=191%2C300&amp;ssl=1 191w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/04/book-43980-cover.jpg?resize=255%2C400&amp;ssl=1 255w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/04/book-43980-cover.jpg?resize=204%2C320&amp;ssl=1 204w" sizes="auto, (max-width: 319px) 100vw, 319px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>


<p class="dt_booklinks"><a href="http://www.amazon.com/dp/9780679734505/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/9780679734505/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/9780679734505/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div><p>The post <a href="https://johnbeales.com/books/crime-and-punishment/">Crime and Punishment</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/crime-and-punishment/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">43980</post-id>	</item>
		<item>
		<title>The Boarding-School Girl</title>
		<link>https://johnbeales.com/books/the-boarding-school-girl/</link>
					<comments>https://johnbeales.com/books/the-boarding-school-girl/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 22 Apr 2026 00:24:42 +0000</pubDate>
				<category><![CDATA[fiction]]></category>
		<category><![CDATA[imperial russia]]></category>
		<category><![CDATA[literature]]></category>
		<category><![CDATA[russian]]></category>
		<category><![CDATA[russian novel]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=43974</guid>

					<description><![CDATA[<p>Karen Rosneck translation. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/the-boarding-school-girl/">The Boarding-School Girl</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Karen Rosneck translation.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="306" height="475" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/04/book-43974-cover.jpg?fit=306%2C475&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/04/book-43974-cover.jpg?w=306&amp;ssl=1 306w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/04/book-43974-cover.jpg?resize=193%2C300&amp;ssl=1 193w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/04/book-43974-cover.jpg?resize=258%2C400&amp;ssl=1 258w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2026/04/book-43974-cover.jpg?resize=206%2C320&amp;ssl=1 206w" sizes="auto, (max-width: 306px) 100vw, 306px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>


<p class="dt_booklinks"><a href="http://www.amazon.com/dp/9780810117440/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/9780810117440/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/9780810117440/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div><p>The post <a href="https://johnbeales.com/books/the-boarding-school-girl/">The Boarding-School Girl</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-boarding-school-girl/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">43974</post-id>	</item>
		<item>
		<title>Fathers and Children</title>
		<link>https://johnbeales.com/books/fathers-and-children/</link>
					<comments>https://johnbeales.com/books/fathers-and-children/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 22 Apr 2026 00:22:01 +0000</pubDate>
				<category><![CDATA[fiction]]></category>
		<category><![CDATA[imperial russia]]></category>
		<category><![CDATA[literature]]></category>
		<category><![CDATA[russian]]></category>
		<category><![CDATA[russian literature]]></category>
		<category><![CDATA[russian novel]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=43970</guid>

					<description><![CDATA[<p>I read the Michael R. Katz translation. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/fathers-and-children/">Fathers and Children</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I read the Michael R. Katz translation.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>


<p class="dt_booklinks"><a href="http://www.amazon.com/dp/9780393927979/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/9780393927979/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/9780393927979/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div><p>The post <a href="https://johnbeales.com/books/fathers-and-children/">Fathers and Children</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/fathers-and-children/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">43970</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2026-02-23t104822-0500/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Mon, 23 Feb 2026 15:53:11 +0000</pubDate>
				<category><![CDATA[agentic coding]]></category>
		<category><![CDATA[ai]]></category>
		<category><![CDATA[claude]]></category>
		<category><![CDATA[claude code]]></category>
		<category><![CDATA[llm]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=42613</guid>

					<description><![CDATA[<p>There&#8217;s been talk in the agentic programming universe recently that AI does a worse job of updating existing, older, manually-created codebases than it does updating new AI-created codebases. Maybe I haven&#8217;t worked enough with new AI-created codebases, but I&#8217;m having a great time using AI to update manually-created codebases. I think the thing that helped [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/micro/2026-02-23t104822-0500/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">There&#8217;s been talk in the agentic programming universe recently that AI does a worse job of updating existing, older, manually-created codebases than it does updating new AI-created codebases. Maybe I haven&#8217;t worked enough with new AI-created codebases, but I&#8217;m having a great time using AI to update manually-created codebases. I think the thing that helped most with me was that I ran Claude Code&#8217;s /init in my project directory instead of just relying on Laravel Boost&#8217;s built-in guidelines. Claude did a great job of figuring out my existing code patterns and uses them when making changes.</p>
<p>The post <a href="https://johnbeales.com/micro/2026-02-23t104822-0500/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">42613</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2026-02-18t104548-0500/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 18 Feb 2026 15:48:36 +0000</pubDate>
				<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=42493</guid>

					<description><![CDATA[<p>Burned through my Claude token limit this morning. It&#8217;s nice to be getting on the AI train; I&#8217;ve been a bit behind. Agentic coding does make me wonder how to bill freelance clients, though, do I stare at Claude doing its thing with the timer running? Do I dip in &#38; out, stopping &#38; starting [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/micro/2026-02-18t104548-0500/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Burned through my Claude token limit this morning. It&#8217;s nice to be getting on the AI train; I&#8217;ve been a bit behind.</p>



<p class="wp-block-paragraph">Agentic coding does make me wonder how to bill freelance clients, though, do I stare at Claude doing its thing with the timer running? Do I dip in &amp; out, stopping &amp; starting timers? Do I run many Claudes on the same project?<br /><br />My main client job right now isn&#8217;t automatable via AI, (unfortunately), so I don&#8217;t need to answer that question quite yet. </p>
<p>The post <a href="https://johnbeales.com/micro/2026-02-18t104548-0500/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">42493</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2026-01-28t215017-0500/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Thu, 29 Jan 2026 02:50:57 +0000</pubDate>
				<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=42173</guid>

					<description><![CDATA[<p>Working on a Wix site, and I am wishing there was a way to get AI to click the WYSIWYG editor for me.</p>
<p>The post <a href="https://johnbeales.com/micro/2026-01-28t215017-0500/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Working on a Wix site, and I am wishing there was a way to get AI to click the WYSIWYG editor for me.</p>
<p>The post <a href="https://johnbeales.com/micro/2026-01-28t215017-0500/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">42173</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2026-01-19t100738-0500/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Mon, 19 Jan 2026 15:09:27 +0000</pubDate>
				<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=42070</guid>

					<description><![CDATA[<p>Working on putting WordPress into a subdirectory of a Laravel application this morning. On one hand it seems like a bad idea with the potential for problems. On the other hand it seems pretty simple.</p>
<p>The post <a href="https://johnbeales.com/micro/2026-01-19t100738-0500/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Working on putting <a href="http://wordpress.org">WordPress</a> into a subdirectory of a <a href="http://laravel.com">Laravel</a> application this morning. <br /><br />On one hand it seems like a bad idea with the potential for problems. On the other hand it seems pretty simple.</p>
<p>The post <a href="https://johnbeales.com/micro/2026-01-19t100738-0500/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">42070</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2025-12-14t113655-0500/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sun, 14 Dec 2025 16:37:24 +0000</pubDate>
				<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=40302</guid>

					<description><![CDATA[<p>Nice waffle setup!</p>
<p>The post <a href="https://johnbeales.com/micro/2025-12-14t113655-0500/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Nice waffle setup!</p>
<p>The post <a href="https://johnbeales.com/micro/2025-12-14t113655-0500/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">40302</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2025-12-05t103541-0500/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Fri, 05 Dec 2025 15:36:14 +0000</pubDate>
				<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=40109</guid>

					<description><![CDATA[<p>@Manton &#8211; He talked about it on Mostly Technical just over a week ago. IIRC he&#8217;s coming from Feedly.</p>
<p>The post <a href="https://johnbeales.com/micro/2025-12-05t103541-0500/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><a href="https://www.manton.org/2025/12/05/ghost-founder-john-onolan-is.html">@Manton</a> &#8211; He <a href="https://mostlytechnical.com/episodes/sweet-hang-3-matching-tattoos-w-john-onolan">talked about it on Mostly Technical</a> just over a week ago. IIRC he&#8217;s coming from Feedly.</p>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://johnbeales.com/micro/2025-12-05t103541-0500/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">40109</post-id>	</item>
		<item>
		<title>Sunrise on the Reaping</title>
		<link>https://johnbeales.com/books/sunrise-on-the-reaping/</link>
					<comments>https://johnbeales.com/books/sunrise-on-the-reaping/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sun, 30 Nov 2025 02:00:11 +0000</pubDate>
				<category><![CDATA[dystopian]]></category>
		<category><![CDATA[fiction]]></category>
		<category><![CDATA[hunger games]]></category>
		<category><![CDATA[young adult]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=39963</guid>

					<description><![CDATA[<p>Some light reading after finishing the semester&#8217;s required reading. It&#8217;s amazing how fast it was to read! Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/sunrise-on-the-reaping/">Sunrise on the Reaping</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Some light reading after finishing the semester&#8217;s required reading. It&#8217;s amazing how fast it was to read!</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="335" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/11/book-39963-cover.jpg?fit=335%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/11/book-39963-cover.jpg?w=335&amp;ssl=1 335w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/11/book-39963-cover.jpg?resize=201%2C300&amp;ssl=1 201w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/11/book-39963-cover.jpg?resize=268%2C400&amp;ssl=1 268w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/11/book-39963-cover.jpg?resize=214%2C320&amp;ssl=1 214w" sizes="auto, (max-width: 335px) 100vw, 335px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>


<p class="dt_booklinks"><a href="http://www.amazon.com/dp/9781546171461/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/9781546171461/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/9781546171461/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div><p>The post <a href="https://johnbeales.com/books/sunrise-on-the-reaping/">Sunrise on the Reaping</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/sunrise-on-the-reaping/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">39963</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2025-11-27t212853-0500/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Fri, 28 Nov 2025 02:29:24 +0000</pubDate>
				<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=39904</guid>

					<description><![CDATA[<p>Just dumped a semester&#8217;s worth of reading on my Books I&#8217;ve Read page.</p>
<p>The post <a href="https://johnbeales.com/micro/2025-11-27t212853-0500/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Just dumped a semester&#8217;s worth of reading on my <a href="https://johnbeales.com/books/">Books I&#8217;ve Read page</a>.</p>
<p>The post <a href="https://johnbeales.com/micro/2025-11-27t212853-0500/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">39904</post-id>	</item>
		<item>
		<title>Poor Folk and Other Stories</title>
		<link>https://johnbeales.com/books/poor-folk-and-other-stories/</link>
					<comments>https://johnbeales.com/books/poor-folk-and-other-stories/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Fri, 28 Nov 2025 02:27:33 +0000</pubDate>
				<category><![CDATA[fiction]]></category>
		<category><![CDATA[imperial russia]]></category>
		<category><![CDATA[russian]]></category>
		<category><![CDATA[russian literature]]></category>
		<category><![CDATA[russian novel]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=39897</guid>

					<description><![CDATA[<p>I read &#8220;Poor Folk&#8221; from this. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/poor-folk-and-other-stories/">Poor Folk and Other Stories</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I read &#8220;Poor Folk&#8221; from this.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="315" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/11/book-39897-cover.jpg?fit=315%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/11/book-39897-cover.jpg?w=315&amp;ssl=1 315w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/11/book-39897-cover.jpg?resize=189%2C300&amp;ssl=1 189w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/11/book-39897-cover.jpg?resize=252%2C400&amp;ssl=1 252w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/11/book-39897-cover.jpg?resize=202%2C320&amp;ssl=1 202w" sizes="auto, (max-width: 315px) 100vw, 315px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>


<p class="dt_booklinks"><a href="http://www.amazon.com/dp/9780140445053/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/9780140445053/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/9780140445053/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div><p>The post <a href="https://johnbeales.com/books/poor-folk-and-other-stories/">Poor Folk and Other Stories</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/poor-folk-and-other-stories/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">39897</post-id>	</item>
		<item>
		<title>The Body of the Beasts</title>
		<link>https://johnbeales.com/books/the-body-of-the-beasts/</link>
					<comments>https://johnbeales.com/books/the-body-of-the-beasts/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Fri, 28 Nov 2025 02:23:35 +0000</pubDate>
				<category><![CDATA[fiction]]></category>
		<category><![CDATA[literary animals]]></category>
		<category><![CDATA[literary fiction]]></category>
		<category><![CDATA[quebecois]]></category>
		<category><![CDATA[translation]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=39886</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/the-body-of-the-beasts/">The Body of the Beasts</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="328" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/11/book-39886-cover.jpg?fit=328%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/11/book-39886-cover.jpg?w=328&amp;ssl=1 328w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/11/book-39886-cover.jpg?resize=197%2C300&amp;ssl=1 197w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/11/book-39886-cover.jpg?resize=262%2C400&amp;ssl=1 262w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/11/book-39886-cover.jpg?resize=210%2C320&amp;ssl=1 210w" sizes="auto, (max-width: 328px) 100vw, 328px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/9781487006105/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/9781487006105/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/9781487006105/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-body-of-the-beasts/">The Body of the Beasts</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-body-of-the-beasts/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">39886</post-id>	</item>
		<item>
		<title>A Double Life</title>
		<link>https://johnbeales.com/books/a-double-life/</link>
					<comments>https://johnbeales.com/books/a-double-life/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Fri, 28 Nov 2025 02:19:52 +0000</pubDate>
				<category><![CDATA[fiction]]></category>
		<category><![CDATA[imperial russia]]></category>
		<category><![CDATA[russian]]></category>
		<category><![CDATA[russian literature]]></category>
		<category><![CDATA[russian novel]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=39882</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/a-double-life/">A Double Life</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/9780231190794/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/9780231190794/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/9780231190794/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/a-double-life/">A Double Life</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/a-double-life/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">39882</post-id>	</item>
		<item>
		<title>The Diary of a Madman, The Government Inspector, and Selected Stories</title>
		<link>https://johnbeales.com/books/the-diary-of-a-madman-the-government-inspector-and-selected-stories/</link>
					<comments>https://johnbeales.com/books/the-diary-of-a-madman-the-government-inspector-and-selected-stories/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Fri, 28 Nov 2025 02:14:05 +0000</pubDate>
				<category><![CDATA[drama]]></category>
		<category><![CDATA[fiction]]></category>
		<category><![CDATA[imperial russia]]></category>
		<category><![CDATA[russian]]></category>
		<category><![CDATA[russian literature]]></category>
		<category><![CDATA[short stories]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=39876</guid>

					<description><![CDATA[<p>Read &#8220;The Government Inspector,&#8221; &#8220;The Overcoat,&#8221; &#8220;Nevsky Prospekt,&#8221; and &#8220;The Nose&#8221; from this book. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/the-diary-of-a-madman-the-government-inspector-and-selected-stories/">The Diary of a Madman, The Government Inspector, and Selected Stories</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Read &#8220;The Government Inspector,&#8221; &#8220;The Overcoat,&#8221; &#8220;Nevsky Prospekt,&#8221; and &#8220;The Nose&#8221; from this book.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>


<p class="dt_booklinks"><a href="" rel="nofollow">Amazon.com (USA)</a> <a href="" rel="nofollow">Amazon.ca (Canada)</a> <a href="" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div><p>The post <a href="https://johnbeales.com/books/the-diary-of-a-madman-the-government-inspector-and-selected-stories/">The Diary of a Madman, The Government Inspector, and Selected Stories</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-diary-of-a-madman-the-government-inspector-and-selected-stories/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">39876</post-id>	</item>
		<item>
		<title>A Hero of Our Time</title>
		<link>https://johnbeales.com/books/a-hero-of-our-time/</link>
					<comments>https://johnbeales.com/books/a-hero-of-our-time/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Fri, 28 Nov 2025 02:05:54 +0000</pubDate>
				<category><![CDATA[fiction]]></category>
		<category><![CDATA[imperial russia]]></category>
		<category><![CDATA[russian]]></category>
		<category><![CDATA[russian literature]]></category>
		<category><![CDATA[russian novel]]></category>
		<category><![CDATA[translation]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=39865</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/a-hero-of-our-time/">A Hero of Our Time</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="306" height="475" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/11/book-39865-cover.jpg?fit=306%2C475&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/11/book-39865-cover.jpg?w=306&amp;ssl=1 306w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/11/book-39865-cover.jpg?resize=193%2C300&amp;ssl=1 193w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/11/book-39865-cover.jpg?resize=258%2C400&amp;ssl=1 258w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/11/book-39865-cover.jpg?resize=206%2C320&amp;ssl=1 206w" sizes="auto, (max-width: 306px) 100vw, 306px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/9780140447958/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/9780140447958/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/9780140447958/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/a-hero-of-our-time/">A Hero of Our Time</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/a-hero-of-our-time/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">39865</post-id>	</item>
		<item>
		<title>The Wall</title>
		<link>https://johnbeales.com/books/the-wall/</link>
					<comments>https://johnbeales.com/books/the-wall/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Fri, 28 Nov 2025 01:59:02 +0000</pubDate>
				<category><![CDATA[fiction]]></category>
		<category><![CDATA[german]]></category>
		<category><![CDATA[literary animals]]></category>
		<category><![CDATA[literary fiction]]></category>
		<category><![CDATA[translation]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=39852</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/the-wall/">The Wall</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="" rel="nofollow">Amazon.com (USA)</a> <a href="" rel="nofollow">Amazon.ca (Canada)</a> <a href="" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-wall/">The Wall</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-wall/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">39852</post-id>	</item>
		<item>
		<title>Memoirs of a Porcupine</title>
		<link>https://johnbeales.com/books/memoirs-of-a-porcupine/</link>
					<comments>https://johnbeales.com/books/memoirs-of-a-porcupine/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Fri, 28 Nov 2025 01:56:18 +0000</pubDate>
				<category><![CDATA[african]]></category>
		<category><![CDATA[fiction]]></category>
		<category><![CDATA[literary animals]]></category>
		<category><![CDATA[literary fiction]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=39848</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/memoirs-of-a-porcupine/">Memoirs of a Porcupine</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="266" height="400" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/11/book-39848-cover.jpg?fit=266%2C400&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/11/book-39848-cover.jpg?w=266&amp;ssl=1 266w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/11/book-39848-cover.jpg?resize=200%2C300&amp;ssl=1 200w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/11/book-39848-cover.jpg?resize=213%2C320&amp;ssl=1 213w" sizes="auto, (max-width: 266px) 100vw, 266px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/9781593764364/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/9781593764364/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/9781593764364/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/memoirs-of-a-porcupine/">Memoirs of a Porcupine</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/memoirs-of-a-porcupine/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">39848</post-id>	</item>
		<item>
		<title>Eugene Onegin</title>
		<link>https://johnbeales.com/books/eugene-onegin/</link>
					<comments>https://johnbeales.com/books/eugene-onegin/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Fri, 28 Nov 2025 01:51:22 +0000</pubDate>
				<category><![CDATA[fiction]]></category>
		<category><![CDATA[imperial russia]]></category>
		<category><![CDATA[poetry]]></category>
		<category><![CDATA[russian]]></category>
		<category><![CDATA[russian literature]]></category>
		<category><![CDATA[russian novel]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=39843</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/eugene-onegin/">Eugene Onegin</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="" rel="nofollow">Amazon.com (USA)</a> <a href="" rel="nofollow">Amazon.ca (Canada)</a> <a href="" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/eugene-onegin/">Eugene Onegin</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/eugene-onegin/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">39843</post-id>	</item>
		<item>
		<title>Flush</title>
		<link>https://johnbeales.com/books/flush/</link>
					<comments>https://johnbeales.com/books/flush/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Fri, 28 Nov 2025 01:46:37 +0000</pubDate>
				<category><![CDATA[animalography]]></category>
		<category><![CDATA[biography]]></category>
		<category><![CDATA[fiction]]></category>
		<category><![CDATA[literary animals]]></category>
		<category><![CDATA[literary fiction]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=39839</guid>

					<description><![CDATA[<p>In some ways this reads like an Elizabeth Barrett Browning fanfic. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/flush/">Flush</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">In some ways this reads like an Elizabeth Barrett Browning fanfic.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>


<p class="dt_booklinks"><a href="" rel="nofollow">Amazon.com (USA)</a> <a href="" rel="nofollow">Amazon.ca (Canada)</a> <a href="" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div><p>The post <a href="https://johnbeales.com/books/flush/">Flush</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/flush/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">39839</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2025-09-30t204442-0400/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 01 Oct 2025 00:44:42 +0000</pubDate>
				<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=38901</guid>

					<description><![CDATA[<p>I hear a U-Haul being loaded under cover of darkness. ?</p>
<p>The post <a href="https://johnbeales.com/micro/2025-09-30t204442-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I hear a U-Haul being loaded under cover of darkness. ?</p>
<p>The post <a href="https://johnbeales.com/micro/2025-09-30t204442-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">38901</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2025-09-08t213935-0400/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Tue, 09 Sep 2025 01:41:01 +0000</pubDate>
				<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=38438</guid>

					<description><![CDATA[<p>Finally got into testing Claude Code tonight and so far I&#8217;m impressed. It got the most severe bug from Sentry, proposed, and implemented a solution, and changed course when I wanted to do things differently.</p>
<p>The post <a href="https://johnbeales.com/micro/2025-09-08t213935-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Finally got into testing Claude Code tonight and so far I&#8217;m impressed. It got the most severe bug from <a href="http://sentry.io">Sentry</a>, proposed, and implemented a solution, and changed course when I wanted to do things differently.</p>
<p>The post <a href="https://johnbeales.com/micro/2025-09-08t213935-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">38438</post-id>	</item>
		<item>
		<title>Playground</title>
		<link>https://johnbeales.com/books/playground/</link>
					<comments>https://johnbeales.com/books/playground/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Mon, 08 Sep 2025 14:08:37 +0000</pubDate>
				<category><![CDATA[artificial intelligence]]></category>
		<category><![CDATA[environment]]></category>
		<category><![CDATA[fiction]]></category>
		<category><![CDATA[ocean]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=38429</guid>

					<description><![CDATA[<p>After reading The Overstory a few years ago I was excited to hear Richard Powers had another book out. This one was pretty good too, but it wasn&#8217;t The Overstory. It draws on Other Minds which is interesting. Powers can&#8217;t seem to resist throwing a bit of supernatural in at the end of his books, [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/playground/">Playground</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">After reading <em><a href="https://johnbeales.com/books/the-overstory/">The </a></em><i><a href="https://johnbeales.com/books/the-overstory/">Overstory</a> </i>a few years ago I was excited to hear Richard Powers had another book out. This one was pretty good too, but it wasn&#8217;t <em>The Overstory</em>. It draws on <em><a href="https://johnbeales.com/books/other-minds/">Other Minds</a></em> which is interesting. Powers can&#8217;t seem to resist throwing a bit of supernatural in at the end of his books, and I don&#8217;t think <em>Playground</em> needed it, it was good enough without.</p>



<p class="wp-block-paragraph">Like <em>The Overstory</em> there&#8217;s a book-within-a-book in <em>Playground</em>, which I think I&#8217;ll try to find. If it is as good as <em><a href="https://johnbeales.com/books/the-hidden-life-of-trees/">The Hidden Life of Trees</a></em>, (the book-within-a-book from <em>The Overstory</em>), then it&#8217;ll be a good read.</p>



<p class="wp-block-paragraph"></p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>


<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-1039011557/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-1039011557/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-1039011557/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div><p>The post <a href="https://johnbeales.com/books/playground/">Playground</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/playground/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">38429</post-id>	</item>
		<item>
		<title>Woe from Wit</title>
		<link>https://johnbeales.com/books/woe-from-wit/</link>
					<comments>https://johnbeales.com/books/woe-from-wit/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Mon, 08 Sep 2025 13:59:57 +0000</pubDate>
				<category><![CDATA[drama]]></category>
		<category><![CDATA[fiction]]></category>
		<category><![CDATA[play]]></category>
		<category><![CDATA[russian]]></category>
		<category><![CDATA[verse]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=38425</guid>

					<description><![CDATA[<p>Read for the Russian Literature class I&#8217;m taking, it was pretty great! There&#8217;s lots to think about here, and I&#8217;m sure I&#8217;m going to have to for class. I read the Betsy Hulick translation. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/woe-from-wit/">Woe from Wit</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Read for the Russian Literature class I&#8217;m taking, it was pretty great! There&#8217;s lots to think about here, and I&#8217;m sure I&#8217;m going to have to for class. I read the Betsy Hulick translation.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>


<p class="dt_booklinks"><a href="http://www.amazon.com/dp/9780231189798/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/9780231189798/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/9780231189798/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div><p>The post <a href="https://johnbeales.com/books/woe-from-wit/">Woe from Wit</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/woe-from-wit/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">38425</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2025-09-05t172234-0400/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Fri, 05 Sep 2025 21:23:25 +0000</pubDate>
				<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=38377</guid>

					<description><![CDATA[<p>On the phone with PayPal customer support &#8211; they&#8217;re pretty helpful, but this is becoming a tech support ticket&#8230; Hopefully it gets resolved before a customer gets double-billed!</p>
<p>The post <a href="https://johnbeales.com/micro/2025-09-05t172234-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">On the phone with PayPal customer support &#8211; they&#8217;re pretty helpful, but this is becoming a tech support ticket&#8230; Hopefully it gets resolved before a customer gets double-billed!</p>
<p>The post <a href="https://johnbeales.com/micro/2025-09-05t172234-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">38377</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2025-08-22t140035-0400/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Fri, 22 Aug 2025 18:01:13 +0000</pubDate>
				<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=38147</guid>

					<description><![CDATA[<p>Noticed a referral to my site from copilot.microsoft.com just now. Nice to see some LLMs link back to sources.</p>
<p>The post <a href="https://johnbeales.com/micro/2025-08-22t140035-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Noticed a referral to my site from copilot.microsoft.com just now. Nice to see some LLMs link back to sources.</p>
<p>The post <a href="https://johnbeales.com/micro/2025-08-22t140035-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">38147</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2025-08-22t135830-0400/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Fri, 22 Aug 2025 17:59:25 +0000</pubDate>
				<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=38142</guid>

					<description><![CDATA[<p>Posting to legacy social media platforms when promoting something sure feels like throwing a speck of dust into the algorithmic wind and hoping something big happens.</p>
<p>The post <a href="https://johnbeales.com/micro/2025-08-22t135830-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Posting to legacy social media platforms when promoting something sure feels like throwing a speck of dust into the algorithmic wind and hoping something big happens.</p>
<p>The post <a href="https://johnbeales.com/micro/2025-08-22t135830-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">38142</post-id>	</item>
		<item>
		<title>Performant Video Hero Backgrounds</title>
		<link>https://johnbeales.com/2025/performant-video-hero-backgrounds/</link>
					<comments>https://johnbeales.com/2025/performant-video-hero-backgrounds/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sat, 16 Aug 2025 20:25:44 +0000</pubDate>
				<category><![CDATA[code]]></category>
		<category><![CDATA[Hints, Techniques & More]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[front-end]]></category>
		<category><![CDATA[front-end development]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[web performance]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?p=37993</guid>

					<description><![CDATA[<p>I just put a video in the background of the hero area of 4RoadService.com, and spent a bit of time making it so it performs well. Mostly, this post is a place for me to remember the ffmpeg incantations that I used. Video Size The consensus seems to be to use a 720p video to [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/2025/performant-video-hero-backgrounds/">Performant Video Hero Backgrounds</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I just put a video in the background of the hero area of 4RoadService.com, and spent a bit of time making it so it performs well. Mostly, this post is a place for me to remember the ffmpeg incantations that I used.</p>



<h3 class="wp-block-heading">Video Size</h3>



<p class="wp-block-paragraph">The consensus seems to be to <a href="https://designtlc.com/how-to-optimize-a-silent-background-video-for-your-websites-hero-area/">use a 720p video</a> to provide enough detail to look good but not to have too giant of a file size.</p>



<h3 class="wp-block-heading">Getting the File Size Down</h3>



<p class="wp-block-paragraph">Don&#8217;t just take the exported file from Premiere Pro! Run it through ffmpeg first! Using ffmpeg we can <a href="https://trac.ffmpeg.org/wiki/Encode/VP9#twopass">turn the video into a V9-encoded <code>.webm</code> file</a>, which should be pretty small. If you want to support older devices you can also use <code>.mp4</code>, but video is kind of heavy, so if a device isn&#8217;t new enough to handle a V9-encoded <code>.webm</code> file I&#8217;ll just let it see the placeholder image.</p>



<p class="wp-block-paragraph">Here&#8217;s how I made my <code>.webm</code> file, lifted pretty much straight from the ffmpeg docs.</p>



<pre class="wp-block-code"><code>ffmpeg -i Sequence_01_3.mp4 -c:v libvpx-vp9 -b:v 512K -pass 1 -an -f null /dev/null &amp;&amp; \
ffmpeg -i Sequence_01_3.mp4 -c:v libvpx-vp9 -b:v 512K -pass 2 -an output.webm</code></pre>



<h3 class="wp-block-heading">Use a Placeholder</h3>



<p class="wp-block-paragraph">For people on a slower connection, or for devices that can&#8217;t display your <code>.webm</code> file, use a placeholder image. Luckily, the <code>&lt;video></code> tag has a <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/video#poster"><code>poster</code> attribute</a> that does this for you.</p>



<h3 class="wp-block-heading">CSS Filter</h3>



<p class="wp-block-paragraph">If your video looks grainy you can add a CSS blur filter to it, if the site&#8217;s aesthetic will let you. This lets you use a lower-resolution video and still get a nice smooth look. This worked well for me:</p>



<pre class="wp-block-code lang-css"><code>.hero-video {
    filter: blur(1px);
}</code></pre>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://johnbeales.com/2025/performant-video-hero-backgrounds/">Performant Video Hero Backgrounds</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/2025/performant-video-hero-backgrounds/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">37993</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2025-08-16t145044-0400/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sat, 16 Aug 2025 18:50:44 +0000</pubDate>
				<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=37989</guid>

					<description><![CDATA[<p>Doing a rare bit of video editing and telling myself that it would justify a new computer.</p>
<p>The post <a href="https://johnbeales.com/micro/2025-08-16t145044-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Doing a rare bit of video editing and telling myself that it would justify a new computer.</p>
<p>The post <a href="https://johnbeales.com/micro/2025-08-16t145044-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">37989</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2025-08-14t184509-0400/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Thu, 14 Aug 2025 22:45:09 +0000</pubDate>
				<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=37952</guid>

					<description><![CDATA[<p>So I got #BlueSky cross posting working from my #WordPress #Microblog</p>
<p>The post <a href="https://johnbeales.com/micro/2025-08-14t184509-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>So I got <a rel="tag" class="hashtag u-tag u-category" href="https://johnbeales.com/tag/bluesky/">#BlueSky</a> cross posting working from my <a rel="tag" class="hashtag u-tag u-category" href="https://johnbeales.com/tag/wordpress/">#WordPress</a> #Microblog</p>
<p>The post <a href="https://johnbeales.com/micro/2025-08-14t184509-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">37952</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2025-08-14t184413-0400/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Thu, 14 Aug 2025 22:44:13 +0000</pubDate>
				<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=37949</guid>

					<description><![CDATA[<p>Made a change to a new thing I’m working on. One of the hardest things to do is to just let the change do its work and not stare at analytics all day.</p>
<p>The post <a href="https://johnbeales.com/micro/2025-08-14t184413-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Made a change to a new thing I’m working on.</p>
<p>One of the hardest things to do is to just let the change do its work and not stare at analytics all day.</p>
<p>The post <a href="https://johnbeales.com/micro/2025-08-14t184413-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">37949</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2025-08-14t154058-0400/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Thu, 14 Aug 2025 19:41:54 +0000</pubDate>
				<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=37895</guid>

					<description><![CDATA[<p>Added Bluesky cross-posting to this microblog, this post tests if it works with the micro posts or if I need to do some work for compatibility.</p>
<p>The post <a href="https://johnbeales.com/micro/2025-08-14t154058-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Added Bluesky cross-posting to this microblog, this post tests if it works with the micro posts or if I need to do some work for compatibility.</p>
<p>The post <a href="https://johnbeales.com/micro/2025-08-14t154058-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">37895</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2025-08-14t150421-0400/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Thu, 14 Aug 2025 19:05:55 +0000</pubDate>
				<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=37891</guid>

					<description><![CDATA[<p>Frustrated that Cloudflare puts real-time bot score info behind their Enterprise pricing. Bots are hammering at us and I would like to be able to send a 429 to the sneaky bots with some confidence.</p>
<p>The post <a href="https://johnbeales.com/micro/2025-08-14t150421-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Frustrated that <a href="http://cloudflare.com">Cloudflare</a> puts real-time bot score info behind their Enterprise pricing. Bots are hammering at us and I would like to be able to send a 429 to the sneaky bots with some confidence.</p>
<p>The post <a href="https://johnbeales.com/micro/2025-08-14t150421-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">37891</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2025-08-07t164354-0400/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Thu, 07 Aug 2025 20:43:54 +0000</pubDate>
				<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=37770</guid>

					<description><![CDATA[<p>Deleted more than I should have yesterday, so today I’m dealing with restoring backups, and wishing I had a faster computer.</p>
<p>The post <a href="https://johnbeales.com/micro/2025-08-07t164354-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Deleted more than I should have yesterday, so today I’m dealing with restoring backups, and wishing I had a faster computer.</p>
<p>The post <a href="https://johnbeales.com/micro/2025-08-07t164354-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">37770</post-id>	</item>
		<item>
		<title>2025 Garmin Forerunner Watch Printable</title>
		<link>https://johnbeales.com/2025/2025-garmin-forerunner-watch-printable/</link>
					<comments>https://johnbeales.com/2025/2025-garmin-forerunner-watch-printable/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Thu, 24 Jul 2025 01:45:00 +0000</pubDate>
				<category><![CDATA[A Side Project]]></category>
		<category><![CDATA[forerunner]]></category>
		<category><![CDATA[garmin]]></category>
		<category><![CDATA[printable]]></category>
		<category><![CDATA[running watch]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?p=37496</guid>

					<description><![CDATA[<p>A couple of years ago I made a printable to help me decide which Garmin running watch to buy. That is one of the more popular posts on the site, so I decided to make a new printable for the 2025 lineup of Garmin Forerunner watches. Printed without any scaling on US Letter sized paper&#160;this [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/2025/2025-garmin-forerunner-watch-printable/">2025 Garmin Forerunner Watch Printable</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">A couple of years ago I made <a href="https://johnbeales.com/2022/printable-template-to-choose-a-garmin-forerunner-size/">a printable</a> to help me decide which Garmin running watch to buy. That is one of the more popular posts on the site, so I decided to make a new printable for the 2025 lineup of Garmin Forerunner watches.</p>



<p class="wp-block-paragraph">Printed without any scaling on US Letter sized paper&nbsp;<a href="https://johnbeales.com/wp-content/uploads/2025/07/Forerunner-2025-Watches-Printable.pdf">this PDF</a>&nbsp;should give you an idea of how big the&nbsp;2025 Garmin Forerunner watches will be on your wrist. If you’re extra-crafty, the extra coloured strips are as wide as depth of each watch so you can make a 3D paper Forerunner to try on.</p>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<div class="wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-fe48e5de wp-block-buttons-is-layout-flex">
<div class="wp-block-button is-style-outline is-style-outline--1"><a class="wp-block-button__link has-vivid-cyan-blue-color has-text-color has-link-color wp-element-button" href="https://johnbeales.com/wp-content/uploads/2025/07/Forerunner-2025-Watches-Printable.pdf">Download PDF</a></div>
</div>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-large"><a href="https://johnbeales.com/wp-content/uploads/2025/07/Forerunner-2025-Watches-Printable.pdf"><img data-recalc-dims="1" loading="lazy" decoding="async" width="791" height="1024" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/07/Forerunner-2025-Watches-Printable-1.png?resize=791%2C1024&#038;ssl=1" alt="An image of the PDF printable for sizing Garmin's 2025 lineup of Forerunner watches." class="wp-image-37498" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/07/Forerunner-2025-Watches-Printable-1.png?resize=791%2C1024&amp;ssl=1 791w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/07/Forerunner-2025-Watches-Printable-1.png?resize=232%2C300&amp;ssl=1 232w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/07/Forerunner-2025-Watches-Printable-1.png?resize=768%2C994&amp;ssl=1 768w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/07/Forerunner-2025-Watches-Printable-1.png?resize=1187%2C1536&amp;ssl=1 1187w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/07/Forerunner-2025-Watches-Printable-1.png?resize=1583%2C2048&amp;ssl=1 1583w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/07/Forerunner-2025-Watches-Printable-1.png?resize=580%2C750&amp;ssl=1 580w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/07/Forerunner-2025-Watches-Printable-1.png?resize=495%2C640&amp;ssl=1 495w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/07/Forerunner-2025-Watches-Printable-1.png?resize=394%2C510&amp;ssl=1 394w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/07/Forerunner-2025-Watches-Printable-1.png?resize=309%2C400&amp;ssl=1 309w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/07/Forerunner-2025-Watches-Printable-1.png?resize=247%2C320&amp;ssl=1 247w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/07/Forerunner-2025-Watches-Printable-1.png?resize=742%2C960&amp;ssl=1 742w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/07/Forerunner-2025-Watches-Printable-1.png?resize=773%2C1000&amp;ssl=1 773w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/07/Forerunner-2025-Watches-Printable-1.png?w=1700&amp;ssl=1 1700w" sizes="auto, (max-width: 791px) 100vw, 791px" /></a></figure>
<p>The post <a href="https://johnbeales.com/2025/2025-garmin-forerunner-watch-printable/">2025 Garmin Forerunner Watch Printable</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/2025/2025-garmin-forerunner-watch-printable/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">37496</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2025-07-18t202732-0400/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sat, 19 Jul 2025 00:28:53 +0000</pubDate>
				<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=37394</guid>

					<description><![CDATA[<p>Spent the afternoon working on reducing N+1 queries on 4RoadService, and I managed to reduce a page from 150 queries to 29. I&#8217;m not sure if I should be proud or embarrassed!</p>
<p>The post <a href="https://johnbeales.com/micro/2025-07-18t202732-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Spent the afternoon working on reducing N+1 queries on 4RoadService, and I managed to reduce a page from 150 queries to 29. </p>



<p class="wp-block-paragraph">I&#8217;m not sure if I should be proud or embarrassed!</p>
<p>The post <a href="https://johnbeales.com/micro/2025-07-18t202732-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">37394</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2025-07-16t121557-0400/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 16 Jul 2025 16:15:57 +0000</pubDate>
				<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=37355</guid>

					<description><![CDATA[<p>Hi Manton! I’m posting this from the Micro.blog iOS app and it’s going to micro posts on my blog.</p>
<p>The post <a href="https://johnbeales.com/micro/2025-07-16t121557-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Hi <a href="https://www.manton.org">Manton</a>! I’m posting this from the Micro.blog iOS app and it’s going to micro posts on my blog.</p>
<p>The post <a href="https://johnbeales.com/micro/2025-07-16t121557-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">37355</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/37348/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 16 Jul 2025 14:13:16 +0000</pubDate>
				<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=37348</guid>

					<description><![CDATA[<p>Got creating micro posts working using the Micro.blog client. Now on to replies that make sense.</p>
<p>The post <a href="https://johnbeales.com/micro/37348/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Got creating micro posts working using the <a href="https://micro.blog">Micro.blog</a> client.</p>



<p class="wp-block-paragraph">Now on to replies that make sense.</p>
<p>The post <a href="https://johnbeales.com/micro/37348/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">37348</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2025-07-15t105720-0400/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Tue, 15 Jul 2025 14:58:32 +0000</pubDate>
				<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=37313</guid>

					<description><![CDATA[<p>Diving into Microformats 2 a bit this morning, both for these micro posts and some work I&#8217;m going to be doing on 4RoadService. I used to know Microformats really well, but haven&#8217;t kept up with the &#8220;new&#8221; version.</p>
<p>The post <a href="https://johnbeales.com/micro/2025-07-15t105720-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Diving into Microformats 2 a bit this morning, both for these micro posts and some work I&#8217;m going to be doing on 4RoadService. I used to know Microformats really well, but haven&#8217;t kept up with the &#8220;new&#8221; version.</p>
<p>The post <a href="https://johnbeales.com/micro/2025-07-15t105720-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">37313</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2025-07-14t221553-0400/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Tue, 15 Jul 2025 02:16:16 +0000</pubDate>
				<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=37309</guid>

					<description><![CDATA[<p>Mentioning my first micro post to see if web mentions work.</p>
<p>The post <a href="https://johnbeales.com/micro/2025-07-14t221553-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Mentioning <a href="https://johnbeales.com/micro/2025-07-14t220834-0400/">my first micro post</a> to see if web mentions work.</p>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://johnbeales.com/micro/2025-07-14t221553-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">37309</post-id>	</item>
		<item>
		<title></title>
		<link>https://johnbeales.com/micro/2025-07-14t220834-0400/</link>
					<comments>https://johnbeales.com/micro/2025-07-14t220834-0400/#comments</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Tue, 15 Jul 2025 02:09:37 +0000</pubDate>
				<guid isPermaLink="false">https://johnbeales.com/?post_type=micro&#038;p=37303</guid>

					<description><![CDATA[<p>Hello Micro-World! This is the first micro-post on johnbeales.com, where I plan to try microblogging for a while, in addition to &#8220;normal&#8221; blog posts.</p>
<p>The post <a href="https://johnbeales.com/micro/2025-07-14t220834-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Hello Micro-World!</p>



<p class="wp-block-paragraph">This is the first micro-post on johnbeales.com, where I plan to try microblogging for a while, in addition to  &#8220;normal&#8221; blog posts.</p>
<p>The post <a href="https://johnbeales.com/micro/2025-07-14t220834-0400/"></a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/micro/2025-07-14t220834-0400/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">37303</post-id>	</item>
		<item>
		<title>The Secret History</title>
		<link>https://johnbeales.com/books/the-secret-history/</link>
					<comments>https://johnbeales.com/books/the-secret-history/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 09 Jul 2025 00:55:08 +0000</pubDate>
				<category><![CDATA[campus novel]]></category>
		<category><![CDATA[dark academia]]></category>
		<category><![CDATA[fiction]]></category>
		<category><![CDATA[interpersonal conflict]]></category>
		<category><![CDATA[school story]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=37192</guid>

					<description><![CDATA[<p>After hearing that I enjoyed Death in the Spires my sister pretty much handed me The Secret History and said I needed to read it, as it was a very good book and is responsible for bringing dark academia into the public eye. And she wasn&#8217;t wrong, I really enjoyed The Secret History. Having come [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/the-secret-history/">The Secret History</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">After hearing that I enjoyed <em><a href="https://johnbeales.com/books/death-in-the-spires/">Death in the Spires</a></em> my sister pretty much handed me <em>The Secret History</em> and said I needed to read it, as it was a very good book and is responsible for bringing <a href="https://en.wikipedia.org/wiki/Dark_academia">dark academia</a> into the public eye. And she wasn&#8217;t wrong, I really enjoyed <em>The Secret History</em>.</p>



<p class="wp-block-paragraph">Having come of age in the age of Harry Potter I always love a good school story and by combining school and murder <em>The Secret History</em> does not disappoint, it has everything you want to make a good campus novel: a group of friends, plenty of interpersonal conflict, students pushing things too far, and lots of misplaced loyalty. Also, lots of references to other works that went over my head!</p>



<p class="wp-block-paragraph">I saw <em>The Secret History</em> referred to on Tiktok as an instance of an unreliable narrator, but I do not feel that Richard, the narrator, meets my threshold for unreliability. The book is told from Richard&#8217;s point of view, and which includes some filtering, but I don&#8217;t think we should consider this an unreliable narrator unless we also consider autobiographies to be unreliable.</p>



<p class="wp-block-paragraph"></p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="308" height="475" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/07/book-37192-cover.jpg?fit=308%2C475&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/07/book-37192-cover.jpg?w=308&amp;ssl=1 308w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/07/book-37192-cover.jpg?resize=195%2C300&amp;ssl=1 195w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/07/book-37192-cover.jpg?resize=259%2C400&amp;ssl=1 259w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/07/book-37192-cover.jpg?resize=207%2C320&amp;ssl=1 207w" sizes="auto, (max-width: 308px) 100vw, 308px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>


<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-1400031702/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-1400031702/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-1400031702/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div><p>The post <a href="https://johnbeales.com/books/the-secret-history/">The Secret History</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-secret-history/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">37192</post-id>	</item>
		<item>
		<title>Indie Microblogging</title>
		<link>https://johnbeales.com/books/indie-microblogging/</link>
					<comments>https://johnbeales.com/books/indie-microblogging/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sun, 06 Jul 2025 03:05:34 +0000</pubDate>
				<category><![CDATA[blogging]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[microblogging]]></category>
		<category><![CDATA[nonfiction]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=37110</guid>

					<description><![CDATA[<p>A long, long, time ago I backed a kickstarter&#8230; and I finally got around to reading Manton Reece&#8216;s Indie Microblogging, finishing shortly before my recent vacation. I have wanted to add microblogging to johnbeales.com for a while now but maybe finishing reading the book will remove an excuse I had in my mind for not [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/indie-microblogging/">Indie Microblogging</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">A long, long, time ago I backed a kickstarter&#8230; and I finally got around to reading <a href="http://manton.org">Manton Reece</a>&#8216;s <a href="https://book.micro.blog"><em>Indie Microblogging</em></a>, finishing shortly before my recent vacation. I have wanted to add microblogging to johnbeales.com for a while now but maybe finishing reading the book will remove an excuse I had in my mind for not doing it!</p>



<p class="wp-block-paragraph"></p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>


<p class="dt_booklinks"><a href="" rel="nofollow">Amazon.com (USA)</a> <a href="" rel="nofollow">Amazon.ca (Canada)</a> <a href="" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div><p>The post <a href="https://johnbeales.com/books/indie-microblogging/">Indie Microblogging</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/indie-microblogging/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">37110</post-id>	</item>
		<item>
		<title>A Mind for Numbers</title>
		<link>https://johnbeales.com/books/a-mind-for-numbers/</link>
					<comments>https://johnbeales.com/books/a-mind-for-numbers/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sun, 06 Jul 2025 02:35:21 +0000</pubDate>
				<category><![CDATA[learning]]></category>
		<category><![CDATA[nonfiction]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=37106</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/a-mind-for-numbers/">A Mind for Numbers</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="333" height="499" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/07/book-37106-cover.jpg?fit=333%2C499&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/07/book-37106-cover.jpg?w=333&amp;ssl=1 333w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/07/book-37106-cover.jpg?resize=200%2C300&amp;ssl=1 200w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/07/book-37106-cover.jpg?resize=267%2C400&amp;ssl=1 267w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/07/book-37106-cover.jpg?resize=214%2C320&amp;ssl=1 214w" sizes="auto, (max-width: 333px) 100vw, 333px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-0399165245/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-0399165245/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-0399165245/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/a-mind-for-numbers/">A Mind for Numbers</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/a-mind-for-numbers/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">37106</post-id>	</item>
		<item>
		<title>Better Parenting Time Exchanges with TRMNL</title>
		<link>https://johnbeales.com/2025/better-parenting-time-exchanges-with-trmnl/</link>
					<comments>https://johnbeales.com/2025/better-parenting-time-exchanges-with-trmnl/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 07 May 2025 19:11:59 +0000</pubDate>
				<category><![CDATA[code]]></category>
		<category><![CDATA[Cool]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[eink]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[liquid]]></category>
		<category><![CDATA[trmnl]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?p=36003</guid>

					<description><![CDATA[<p>A couple of weeks ago I received my TRMNL order, and TRMNL promptly held a perfectly-timed hackathon for calendar-based plugins, lighting the proverbial fire under my behind to get me to write a plugin to show my kids how long until they go to their other parent&#8217;s house, and to give me a countdown until [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/2025/better-parenting-time-exchanges-with-trmnl/">Better Parenting Time Exchanges with TRMNL</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">A couple of weeks ago I received my <a href="https://usetrmnl.com">TRMNL</a> order, and TRMNL promptly held a perfectly-timed hackathon for calendar-based plugins, lighting the proverbial fire under my behind to get me to write a plugin to show my kids how long until they go to their other parent&#8217;s house, and to give me a countdown until they&#8217;re back. While I didn&#8217;t win the hackathon, (<a href="https://usetrmnl.com/blog/introducing-data-mode">check out the winners</a>, they&#8217;re great), I continue to use and improve my little plugin with the goal of eventually turning it into a public recipe. I am certain there are plenty of parents out there in the same situation that I am, or who simply want to count down to other recurring calendar events.</p>



<figure class="wp-block-image size-full"><a href="https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/trmnl-full-screen.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="800" height="480" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/trmnl-full-screen.png?resize=800%2C480&#038;ssl=1" alt="A screenshot of the TRMNL device showing my private countdown plugin full screen." class="wp-image-36005" title="The full screen layout of my calendar countdown plugin." srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/trmnl-full-screen.png?w=800&amp;ssl=1 800w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/trmnl-full-screen.png?resize=300%2C180&amp;ssl=1 300w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/trmnl-full-screen.png?resize=768%2C461&amp;ssl=1 768w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/trmnl-full-screen.png?resize=750%2C450&amp;ssl=1 750w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/trmnl-full-screen.png?resize=640%2C384&amp;ssl=1 640w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/trmnl-full-screen.png?resize=510%2C306&amp;ssl=1 510w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/trmnl-full-screen.png?resize=400%2C240&amp;ssl=1 400w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/trmnl-full-screen.png?resize=320%2C192&amp;ssl=1 320w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a><figcaption class="wp-element-caption">This is what the full-screen version of my Calendar Countdown plugin looks like.</figcaption></figure>



<h3 class="wp-block-heading">Things to Know When Coding for TRMNL</h3>



<h4 class="wp-block-heading">Debug JavaScript Right In Your Browser</h4>



<p class="wp-block-paragraph">TRMNL&#8217;s web-based coding environment is a bit weird, but it runs Javascript in the browser, which means that <code>console.log</code> statements appear in your browser&#8217;s dev tools.</p>



<h4 class="wp-block-heading">Watch Out for the Time Zone!</h4>



<p class="wp-block-paragraph">When dealing with Date/Time in Javascript, the device&#8217;s timezone might not match your timezone. The user timezone data that supplied in the <code>trmnl.user</code> data should be used to set the appropriate timezone.</p>



<h4 class="wp-block-heading">Events Not in Chronological Order</h4>



<p class="wp-block-paragraph">Sometimes calendar events don&#8217;t appear in chronological order in the data feed. I rectify this by running an <code>Array.prototype.sort()</code> on my array of interesting events once I have identified them.</p>



<h3 class="wp-block-heading">Wishlist to make TRMNL Even Better</h3>



<h4 class="wp-block-heading">More Data Types for Settings</h4>



<p class="wp-block-paragraph">The ability to have a dictionary or object in settings, with a UI to set key-value pairs, would make it easier to have a list of events that are interesting to the plugin.</p>



<h4 class="wp-block-heading">Improved Story for Local Development</h4>



<p class="wp-block-paragraph">While the online development system works, I would like a more robust system for local development. There is <a href="https://github.com/usetrmnl/trmnlp">trmnlp</a>, which is supposed to give a local development environment, but I was never able to get it up and running. I suspect that using trmnlp would allow me to put my Javascript into its own file, not have to copy the same Javascript into the HTML of all four of the layouts for my plugin.</p>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://johnbeales.com/2025/better-parenting-time-exchanges-with-trmnl/">Better Parenting Time Exchanges with TRMNL</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/2025/better-parenting-time-exchanges-with-trmnl/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">36003</post-id>	</item>
		<item>
		<title>Death in the Spires</title>
		<link>https://johnbeales.com/books/death-in-the-spires/</link>
					<comments>https://johnbeales.com/books/death-in-the-spires/#comments</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 07 May 2025 16:33:24 +0000</pubDate>
				<category><![CDATA[fiction]]></category>
		<category><![CDATA[historical fiction]]></category>
		<category><![CDATA[mystery]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=35999</guid>

					<description><![CDATA[<p>A new style of mystery for me, and it was pretty great. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/death-in-the-spires/">Death in the Spires</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">A new style of mystery for me, and it was pretty great.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>


<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-1805082309/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-1805082309/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-1805082309/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div><p>The post <a href="https://johnbeales.com/books/death-in-the-spires/">Death in the Spires</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/death-in-the-spires/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">35999</post-id>	</item>
		<item>
		<title>The Little Ice Age</title>
		<link>https://johnbeales.com/books/the-little-ice-age/</link>
					<comments>https://johnbeales.com/books/the-little-ice-age/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 07 May 2025 16:29:21 +0000</pubDate>
				<category><![CDATA[climate change]]></category>
		<category><![CDATA[history]]></category>
		<category><![CDATA[ice age]]></category>
		<category><![CDATA[nonfiction]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=35997</guid>

					<description><![CDATA[<p>It&#8217;s amazing how so much our rose-coloured &#8220;olden days&#8221; ideas are shaped by a period when the world&#8217;s climate was much less predictable than it is now. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/the-little-ice-age/">The Little Ice Age</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">It&#8217;s amazing how so much our rose-coloured &#8220;olden days&#8221; ideas are shaped by a period when the world&#8217;s climate was much less predictable than it is now.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>


<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-1541618596/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-1541618596/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-1541618596/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div><p>The post <a href="https://johnbeales.com/books/the-little-ice-age/">The Little Ice Age</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-little-ice-age/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">35997</post-id>	</item>
		<item>
		<title>The 12 Week Year</title>
		<link>https://johnbeales.com/books/the-12-week-year/</link>
					<comments>https://johnbeales.com/books/the-12-week-year/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 07 May 2025 16:26:03 +0000</pubDate>
				<category><![CDATA[nonfiction]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[self-help]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=35993</guid>

					<description><![CDATA[<p>The basic concept of &#8220;light a fire under your ass by setting a deadline&#8221; is good. Parts of the book are pretty ableist and completely disregard the possibility of things like depression, though. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/the-12-week-year/">The 12 Week Year</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">The basic concept of &#8220;light a fire under your ass by setting a deadline&#8221; is good. Parts of the book are pretty ableist and completely disregard the possibility of things like depression, though.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="324" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/book-35993-cover.jpg?fit=324%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/book-35993-cover.jpg?w=324&amp;ssl=1 324w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/book-35993-cover.jpg?resize=194%2C300&amp;ssl=1 194w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/book-35993-cover.jpg?resize=259%2C400&amp;ssl=1 259w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/book-35993-cover.jpg?resize=207%2C320&amp;ssl=1 207w" sizes="auto, (max-width: 324px) 100vw, 324px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>


<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-1118509234/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-1118509234/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-1118509234/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div><p>The post <a href="https://johnbeales.com/books/the-12-week-year/">The 12 Week Year</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-12-week-year/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">35993</post-id>	</item>
		<item>
		<title>When Things Fall Apart</title>
		<link>https://johnbeales.com/books/when-things-fall-apart/</link>
					<comments>https://johnbeales.com/books/when-things-fall-apart/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 07 May 2025 16:23:23 +0000</pubDate>
				<category><![CDATA[buddhist]]></category>
		<category><![CDATA[meditation]]></category>
		<category><![CDATA[nonfiction]]></category>
		<category><![CDATA[self-help]]></category>
		<category><![CDATA[spiritual]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=35990</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/when-things-fall-apart/">When Things Fall Apart</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="302" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/book-35990-cover.jpg?fit=302%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/book-35990-cover.jpg?w=302&amp;ssl=1 302w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/book-35990-cover.jpg?resize=181%2C300&amp;ssl=1 181w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/book-35990-cover.jpg?resize=242%2C400&amp;ssl=1 242w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/book-35990-cover.jpg?resize=193%2C320&amp;ssl=1 193w" sizes="auto, (max-width: 302px) 100vw, 302px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-1611803433/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-1611803433/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-1611803433/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/when-things-fall-apart/">When Things Fall Apart</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/when-things-fall-apart/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">35990</post-id>	</item>
		<item>
		<title>The Curve of Time</title>
		<link>https://johnbeales.com/books/the-curve-of-time/</link>
					<comments>https://johnbeales.com/books/the-curve-of-time/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 07 May 2025 16:21:37 +0000</pubDate>
				<category><![CDATA[boating]]></category>
		<category><![CDATA[memoir]]></category>
		<category><![CDATA[nonfiction]]></category>
		<category><![CDATA[travel]]></category>
		<category><![CDATA[west coast]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=35988</guid>

					<description><![CDATA[<p>A voyage I would love to take, but that time has put out of reach, so I need to make my own voyage. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/the-curve-of-time/">The Curve of Time</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">A voyage I would love to take, but that time has put out of reach, so I need to make my own voyage.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>


<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-1990776786/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-1990776786/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-1990776786/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div><p>The post <a href="https://johnbeales.com/books/the-curve-of-time/">The Curve of Time</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-curve-of-time/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">35988</post-id>	</item>
		<item>
		<title>The Running Grave</title>
		<link>https://johnbeales.com/books/the-running-grave/</link>
					<comments>https://johnbeales.com/books/the-running-grave/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 07 May 2025 16:18:39 +0000</pubDate>
				<category><![CDATA[controversial author]]></category>
		<category><![CDATA[cult]]></category>
		<category><![CDATA[fiction]]></category>
		<category><![CDATA[thriller]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=35985</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/the-running-grave/">The Running Grave</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="320" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/book-35985-cover.jpg?fit=320%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/book-35985-cover.jpg?w=320&amp;ssl=1 320w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/book-35985-cover.jpg?resize=192%2C300&amp;ssl=1 192w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/book-35985-cover.jpg?resize=256%2C400&amp;ssl=1 256w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/book-35985-cover.jpg?resize=205%2C320&amp;ssl=1 205w" sizes="auto, (max-width: 320px) 100vw, 320px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-0316572101/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-0316572101/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-0316572101/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-running-grave/">The Running Grave</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-running-grave/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">35985</post-id>	</item>
		<item>
		<title>Birnam Wood</title>
		<link>https://johnbeales.com/books/birnam-wood/</link>
					<comments>https://johnbeales.com/books/birnam-wood/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 07 May 2025 16:16:28 +0000</pubDate>
				<category><![CDATA[ecology]]></category>
		<category><![CDATA[fiction]]></category>
		<category><![CDATA[literary fiction]]></category>
		<category><![CDATA[thriller]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=35982</guid>

					<description><![CDATA[<p>I got pretty into this Birnam Wood, but felt it ended suddenly. I get what she was trying to do, and maybe it&#8217;s my fault for not doing my research, but I felt like I was 3/4 of the way through the story when it suddenly ended. Want to read it yourself? Get from Amazon: [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/birnam-wood/">Birnam Wood</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I got pretty into this <em>Birnam Wood</em>, but felt it ended suddenly. I get what she was trying to do, and maybe it&#8217;s my fault for not doing my research, but I felt like I was 3/4 of the way through the story when it suddenly ended.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>


<p class="dt_booklinks"><a href="" rel="nofollow">Amazon.com (USA)</a> <a href="" rel="nofollow">Amazon.ca (Canada)</a> <a href="" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div><p>The post <a href="https://johnbeales.com/books/birnam-wood/">Birnam Wood</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/birnam-wood/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">35982</post-id>	</item>
		<item>
		<title>Compost City</title>
		<link>https://johnbeales.com/books/compost-city/</link>
					<comments>https://johnbeales.com/books/compost-city/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 07 May 2025 16:12:59 +0000</pubDate>
				<category><![CDATA[compost]]></category>
		<category><![CDATA[ecology]]></category>
		<category><![CDATA[environment]]></category>
		<category><![CDATA[nonfiction]]></category>
		<category><![CDATA[urbanism]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=35979</guid>

					<description><![CDATA[<p>People who know me, know I like compost, so when I saw this on the library shelf I had to pick it up. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/compost-city/">Compost City</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">People who know me, know I like compost, so when I saw this on the library shelf I had to pick it up.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>


<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-1611802207/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-1611802207/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-1611802207/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div><p>The post <a href="https://johnbeales.com/books/compost-city/">Compost City</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/compost-city/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">35979</post-id>	</item>
		<item>
		<title>The Tusks of Extinction</title>
		<link>https://johnbeales.com/books/the-tusks-of-extinction/</link>
					<comments>https://johnbeales.com/books/the-tusks-of-extinction/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 07 May 2025 16:10:46 +0000</pubDate>
				<category><![CDATA[fiction]]></category>
		<category><![CDATA[future]]></category>
		<category><![CDATA[novella]]></category>
		<category><![CDATA[science fiction]]></category>
		<category><![CDATA[scifi]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=35977</guid>

					<description><![CDATA[<p>An algorithm recommended this to me after reading The Mountain in the Sea. It&#8217;s a lot shorter. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/the-tusks-of-extinction/">The Tusks of Extinction</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">An algorithm recommended this to me after reading <em><a href="https://johnbeales.com/books/the-mountain-in-the-sea/">The Mountain in the Sea</a></em>. It&#8217;s a lot shorter.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>


<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-1250855527/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-1250855527/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-1250855527/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div><p>The post <a href="https://johnbeales.com/books/the-tusks-of-extinction/">The Tusks of Extinction</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-tusks-of-extinction/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">35977</post-id>	</item>
		<item>
		<title>Slow Horses</title>
		<link>https://johnbeales.com/books/slow-horses/</link>
					<comments>https://johnbeales.com/books/slow-horses/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 07 May 2025 16:06:30 +0000</pubDate>
				<category><![CDATA[fiction]]></category>
		<category><![CDATA[spy novel]]></category>
		<category><![CDATA[thriller]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=35974</guid>

					<description><![CDATA[<p>After watching the TV show I had to see if the book was any good. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/slow-horses/">Slow Horses</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">After watching <a href="https://tv.apple.com/ca/show/slow-horses/umc.cmc.2szz3fdt71tl1ulnbp8utgq5o">the TV show</a> I had to see if the book was any good.</p>



<p class="wp-block-paragraph"></p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="333" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/book-35974-cover.jpg?fit=333%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/book-35974-cover.jpg?w=333&amp;ssl=1 333w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/book-35974-cover.jpg?resize=200%2C300&amp;ssl=1 200w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/book-35974-cover.jpg?resize=266%2C400&amp;ssl=1 266w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/book-35974-cover.jpg?resize=213%2C320&amp;ssl=1 213w" sizes="auto, (max-width: 333px) 100vw, 333px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>


<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-1641292979/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-1641292979/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-1641292979/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div><p>The post <a href="https://johnbeales.com/books/slow-horses/">Slow Horses</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/slow-horses/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">35974</post-id>	</item>
		<item>
		<title>The Client</title>
		<link>https://johnbeales.com/books/the-client-2/</link>
					<comments>https://johnbeales.com/books/the-client-2/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 07 May 2025 16:03:32 +0000</pubDate>
				<category><![CDATA[fiction]]></category>
		<category><![CDATA[mystery]]></category>
		<category><![CDATA[thriller]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=35971</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/the-client-2/">The Client</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="271" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/book-35971-cover.jpg?fit=271%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/book-35971-cover.jpg?w=271&amp;ssl=1 271w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/book-35971-cover.jpg?resize=163%2C300&amp;ssl=1 163w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/book-35971-cover.jpg?resize=217%2C400&amp;ssl=1 217w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/book-35971-cover.jpg?resize=173%2C320&amp;ssl=1 173w" sizes="auto, (max-width: 271px) 100vw, 271px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-0345531926/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-0345531926/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-0345531926/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-client-2/">The Client</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-client-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">35971</post-id>	</item>
		<item>
		<title>The Ink Black Heart</title>
		<link>https://johnbeales.com/books/the-ink-black-heart/</link>
					<comments>https://johnbeales.com/books/the-ink-black-heart/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 07 May 2025 16:02:28 +0000</pubDate>
				<category><![CDATA[controversial-author]]></category>
		<category><![CDATA[detective novel]]></category>
		<category><![CDATA[fiction]]></category>
		<category><![CDATA[mystery]]></category>
		<category><![CDATA[thriller]]></category>
		<category><![CDATA[whodunnit]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=35969</guid>

					<description><![CDATA[<p>It&#8217;s interesting reading a book that features online mobs written by someone who has put herself on the receiving end of online mobs. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/the-ink-black-heart/">The Ink Black Heart</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">It&#8217;s interesting reading a book that features online mobs written by someone who has put herself on the receiving end of online mobs.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>


<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-0316413138/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-0316413138/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-0316413138/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div><p>The post <a href="https://johnbeales.com/books/the-ink-black-heart/">The Ink Black Heart</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-ink-black-heart/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">35969</post-id>	</item>
		<item>
		<title>The Racketeer</title>
		<link>https://johnbeales.com/books/the-racketeer/</link>
					<comments>https://johnbeales.com/books/the-racketeer/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 07 May 2025 15:59:56 +0000</pubDate>
				<category><![CDATA[fiction]]></category>
		<category><![CDATA[mystery]]></category>
		<category><![CDATA[thriller]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=35966</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/the-racketeer/">The Racketeer</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="329" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/book-35966-cover.jpg?fit=329%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/book-35966-cover.jpg?w=329&amp;ssl=1 329w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/book-35966-cover.jpg?resize=197%2C300&amp;ssl=1 197w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/book-35966-cover.jpg?resize=263%2C400&amp;ssl=1 263w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2025/05/book-35966-cover.jpg?resize=211%2C320&amp;ssl=1 211w" sizes="auto, (max-width: 329px) 100vw, 329px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-0385535144/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-0385535144/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-0385535144/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-racketeer/">The Racketeer</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-racketeer/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">35966</post-id>	</item>
		<item>
		<title>Gallery Captions for WooCommerce 1.10 &#8211; Maintenance &#038; Compatibility Release</title>
		<link>https://johnbeales.com/2025/gallery-captions-for-woocommerce-1-10-maintenance-compatibility-release/</link>
					<comments>https://johnbeales.com/2025/gallery-captions-for-woocommerce-1-10-maintenance-compatibility-release/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sat, 12 Apr 2025 17:31:06 +0000</pubDate>
				<category><![CDATA[code]]></category>
		<category><![CDATA[ecommerce]]></category>
		<category><![CDATA[gallery captions for woocommerce]]></category>
		<category><![CDATA[woocommerce]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?p=35477</guid>

					<description><![CDATA[<p>After a long pause in releasing, I just got Gallery Captions for WooCommerce version 1.10 up on WooCommerce.com. This update brings compatibility with YITH WooCommerce Product Gallery &#38; Image Zoom, changes the way compatibility code is loaded, and bumps the &#8220;tested up to&#8221; versions of WordPress and WooCommerce to the most recent versions. Because the [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/2025/gallery-captions-for-woocommerce-1-10-maintenance-compatibility-release/">Gallery Captions for WooCommerce 1.10 &#8211; Maintenance &amp; Compatibility Release</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">After a long pause in releasing, I just got <a href="https://woocommerce.com/products/gallery-captions-for-woocommerce/">Gallery Captions for WooCommerce</a> version 1.10 up on WooCommerce.com. This update brings compatibility with <a href="https://wordpress.org/plugins/yith-woocommerce-zoom-magnifier/">YITH WooCommerce Product Gallery &amp; Image Zoom</a>, changes the way compatibility code is loaded, and bumps the &#8220;tested up to&#8221; versions of WordPress and WooCommerce to the most recent versions.</p>



<p class="wp-block-paragraph">Because the last release was in late 2023, this release was my first time using WooCommerce&#8217;s <a href="https://qit.woo.com/">Quality Insight Tests</a>. My first impressions: they take longer than the old tests, but give more detailed feedback &#8211; I like them! </p>



<p class="wp-block-paragraph">If you want to have captions under the images in your WooCommerce store, and have somehow landed here before WooCommerce.com, head on over and install <a href="https://woocommerce.com/products/gallery-captions-for-woocommerce/">Gallery Captions for WooCommerce</a>. It has great reviews and I provide great support!</p>
<p>The post <a href="https://johnbeales.com/2025/gallery-captions-for-woocommerce-1-10-maintenance-compatibility-release/">Gallery Captions for WooCommerce 1.10 &#8211; Maintenance &amp; Compatibility Release</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/2025/gallery-captions-for-woocommerce-1-10-maintenance-compatibility-release/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">35477</post-id>	</item>
		<item>
		<title>The Cartographers</title>
		<link>https://johnbeales.com/books/the-cartographers/</link>
					<comments>https://johnbeales.com/books/the-cartographers/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Fri, 26 Jan 2024 03:33:12 +0000</pubDate>
				<category><![CDATA[cartography]]></category>
		<category><![CDATA[fiction]]></category>
		<category><![CDATA[suspense]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=23983</guid>

					<description><![CDATA[<p>I had some logistical questions for a while, but they eventually got answered. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/the-cartographers/">The Cartographers</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I had some logistical questions for a while, but they eventually got answered.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>


<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-0063230125/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-0063230125/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-0063230125/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div><p>The post <a href="https://johnbeales.com/books/the-cartographers/">The Cartographers</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-cartographers/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">23983</post-id>	</item>
		<item>
		<title>A Time for Mercy</title>
		<link>https://johnbeales.com/books/a-time-for-mercy/</link>
					<comments>https://johnbeales.com/books/a-time-for-mercy/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Thu, 25 Jan 2024 04:39:47 +0000</pubDate>
				<category><![CDATA[legal]]></category>
		<category><![CDATA[mystery]]></category>
		<category><![CDATA[thriller]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=23940</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/a-time-for-mercy/">A Time for Mercy</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="329" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2024/01/book-23940-cover.jpg?fit=329%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2024/01/book-23940-cover.jpg?w=329&amp;ssl=1 329w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2024/01/book-23940-cover.jpg?resize=197%2C300&amp;ssl=1 197w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2024/01/book-23940-cover.jpg?resize=263%2C400&amp;ssl=1 263w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2024/01/book-23940-cover.jpg?resize=211%2C320&amp;ssl=1 211w" sizes="auto, (max-width: 329px) 100vw, 329px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-0-385-54596-9/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-0-385-54596-9/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-0-385-54596-9/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/a-time-for-mercy/">A Time for Mercy</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/a-time-for-mercy/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">23940</post-id>	</item>
		<item>
		<title>The Mountain In the Sea</title>
		<link>https://johnbeales.com/books/the-mountain-in-the-sea/</link>
					<comments>https://johnbeales.com/books/the-mountain-in-the-sea/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Thu, 25 Jan 2024 04:36:11 +0000</pubDate>
				<category><![CDATA[dystopian]]></category>
		<category><![CDATA[fiction]]></category>
		<category><![CDATA[novel]]></category>
		<category><![CDATA[ocean]]></category>
		<category><![CDATA[octopus]]></category>
		<category><![CDATA[science-fiction]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=23936</guid>

					<description><![CDATA[<p>When I saw the cover of the ebook version of The Mountain In the Sea I knew I had to read it, it reminds me so much of Other Minds. It turned out that Other Minds was an important resource in the writing of The Mountain In the Sea, and it seems like the book [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/the-mountain-in-the-sea/">The Mountain In the Sea</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">When I saw the cover of the <a href="https://www.amazon.ca/Mountain-Sea-Novel-Ray-Nayler-ebook/dp/B09NTKMJ1K/ref=sr_1_1?keywords=9780374605964&amp;qid=1706157422&amp;sr=8-1">ebook version</a> of <em>The Mountain In the Sea</em> I knew I had to read it, it reminds me so much of <a href="https://johnbeales.com/books/other-minds/">Other Minds</a>. It turned out that <em>Other Minds</em> was an important resource in the writing of <em>The Mountain In the Sea</em>, and it seems like the book within the book published by Dr. Ha is <em>Other Minds</em>.</p>



<p class="wp-block-paragraph">The universe of <em>The Mountain In The Sea</em> has a lot of artificial intelligence, and shows a lot of very advanced AIs, but also understands the limits of AI, portraying them in an interesting, believable, way.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>


<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-0374605957/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-0374605957/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-0374605957/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div><p>The post <a href="https://johnbeales.com/books/the-mountain-in-the-sea/">The Mountain In the Sea</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-mountain-in-the-sea/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">23936</post-id>	</item>
		<item>
		<title>13 Things Mentally Strong Parents Don&#8217;t Do</title>
		<link>https://johnbeales.com/books/13-things-mentally-strong-parents-dont-do/</link>
					<comments>https://johnbeales.com/books/13-things-mentally-strong-parents-dont-do/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Thu, 25 Jan 2024 04:30:06 +0000</pubDate>
				<category><![CDATA[nonfiction]]></category>
		<category><![CDATA[parenting]]></category>
		<category><![CDATA[psychology]]></category>
		<category><![CDATA[self-help]]></category>
		<category><![CDATA[self-improvement]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=23917</guid>

					<description><![CDATA[<p>Despite the title, it&#8217;s a list of approaches to take to raise mentally strong children. The title seems to be the way it is to provide parallelism with the original book, 13 Things Mentally Strong People Don&#8217;t Do. A lot of the book boils down to doing the right amount of a behaviour, and modelling [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/13-things-mentally-strong-parents-dont-do/">13 Things Mentally Strong Parents Don&#8217;t Do</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Despite the title, it&#8217;s a list of approaches to take to raise mentally strong <em>children</em>. The title seems to be the way it is to provide parallelism with the original book, <em>13 Things Mentally Strong People Don&#8217;t Do</em>.</p>



<p class="wp-block-paragraph">A lot of the book boils down to doing the right amount of a behaviour, and modelling that balance for children. Especially the items related to fear, (don&#8217;t let fear dictate your choices), guilt, (don&#8217;t parent from guilt).</p>



<h2 class="wp-block-heading">The 13 Things</h2>



<p class="wp-block-paragraph">The 13 things are:</p>



<h3 class="wp-block-heading">They Don&#8217;t Condone the Victim Mentality</h3>



<p class="wp-block-paragraph">People who see themselves as victims can end up as actual victims. The victim mentality can be hard to break. As a parent, work to be a positive role model, not someone who complains or vents, and someone who stands up for yourself when appropriate. Focus on the good things each day, and help children focus on things they can control.</p>



<h3 class="wp-block-heading">They Don&#8217;t Parent out of Guilt</h3>



<p class="wp-block-paragraph">Handle guilt appropriately. Don&#8217;t be guilted into things, and don&#8217;t guilt others, especially children into doing things either.</p>



<p class="wp-block-paragraph">Feel guilt when you do things you should feel guilty for, and model appropriate behaviour like apologizing. Teach children that an apology, while needed, does not erase the hurt they cause.</p>



<h3 class="wp-block-heading">They Don&#8217;t make Their Child the Centre of Their Universe</h3>



<p class="wp-block-paragraph">When parents make their children the centre of their universe the children learn to expect that they are the centre of <em>the</em> universe. This is narcissism. Instead, teach children that they are more or less the same as everyone else, and teach empathy.</p>



<p class="wp-block-paragraph">When praising, praise the effort, not the result or natural traits that the child has. Don&#8217;t shield the child from criticism.</p>



<p class="wp-block-paragraph">Model behaviour like looking after yourself, being grateful, and working to improve yourself, (since you aren&#8217;t perfect either).</p>



<p class="wp-block-paragraph">Teach kids that they are probably not the sole cause of things. Even if it seems like something is because of them, there are likely other contributing factors, thus the universe doesn&#8217;t revolve around the child.</p>



<h3 class="wp-block-heading">They Don&#8217;t Allow Fear to Dictate Their Choices.</h3>



<p class="wp-block-paragraph">This section is about helicopter parenting. By letting fear dictate our choices we are teaching our children that the world is dangerous and that they should be fearful, which will cause them to become fearful, anxious, people.</p>



<p class="wp-block-paragraph">The world is not as dangerous as the world makes it seem. Try to evaluate real versus perceived danger. Instead of avoiding all danger, equip children to handle danger. For example, water can be dangerous, but it&#8217;s less dangerous if you know how to swim, so do swimming lessons, or teach kids how to talk to strangers, and where to draw the line.</p>



<p class="wp-block-paragraph">For kids, (or parents), who are having trouble facing a fear, a fear ladder can help. Fear is important, it helps keep us alive, but irrational or overblown fears are counterproductive.</p>



<h3 class="wp-block-heading">They Don&#8217;t Give Their Kids Power Over Them</h3>



<p class="wp-block-paragraph">This seems related to not making kids the centre of the universe, and has a link to not parenting from fear. Kids may use parents fears to gain power, by doing things like throwing tantrums. Children may also make explicit demands of parents, and they need to understand their place in the family hierarchy.</p>



<p class="wp-block-paragraph">Childrens&#8217; inappropriate power over parents may be a fairly permanent situation, (teens who refuse to listen, and parents get trapped dealing with the fallout), or temporary, (a parent is drawn into an argument with a kid, losing control of themselves and the situation). Permanent power shifts can happen gradually, as exceptions to household rules become the norm and are hard to rein back in.</p>



<h4 class="wp-block-heading">Kids Place in the Family</h4>



<p class="wp-block-paragraph">This section of the book is a good reminder about the role of children in the family hierarchy, and is more rigid than I feel the current trends in parenting are. It reminds us that adult conversations and decisions should be between and by adults, and children should only get privileges when they are earned. Part of this chapter feels very &#8220;put kids in their place,&#8221; to a degree that feels more extreme than needed, but it is not wrong.</p>



<h4 class="wp-block-heading">Some Ways Parents can Empower Themselves</h4>



<ul class="wp-block-list">
<li>Set the terms of interactions. For example, &#8220;you can have a cookie when you have done your chores.&#8221;</li>



<li>When using rewards, use them as rewards, not bribes. Rewards are given on parents&#8217; terms, (see previous item), and after something has been successfully completed. This is in contrast to bribes, which are given before the request, putting the power in the hands of the child.</li>



<li>Follow through.</li>



<li>Refuse to get into power struggles. This happens often with me, when I&#8217;ll ask a child to do something and get drawn into an argument about it. According to the book what I should be doing is making the request or demand, and if I get pushback set a consequence for non-compliance, and if I&#8217;m still getting pushback in 5-10 seconds, implement the consequence.</li>
</ul>



<h3 class="wp-block-heading">They Don&#8217;t Expect Perfection</h3>



<p class="wp-block-paragraph">Expecting perfection of children puts them under immense pressure by teaching them that perfection is the only acceptable outcome, and teaching them to expect perfection of themselves, which sucks as an adult. Excellence is enough! The pressure to appear perfect can cause problems to be hidden under a &#8220;perfect&#8221; veneer and never be properly resolved, leading to greater problems later.</p>



<p class="wp-block-paragraph">Often parents encourage children to fulfil dreams that they had for themselves and have given up, we used to joke about this at ballet school.</p>



<p class="wp-block-paragraph">Signs of putting too much pressure on kids include:</p>



<ul class="wp-block-list">
<li>giving more criticism than praise</li>



<li>comparing my child to others</li>



<li>treating every situation as life-altering</li>



<li>losing my temper</li>



<li>micro-managing children</li>
</ul>



<p class="wp-block-paragraph">We should send healthy messages about achievement and failure:</p>



<ul class="wp-block-list">
<li>It is okay to be wrong or fail sometimes.</li>



<li>It is okay to just have fun, without striving for perfection or even excellence!</li>



<li>Strive for excellence, not perfection.</li>
</ul>



<p class="wp-block-paragraph">Parents can help their children by using the &#8220;<a href="https://www.urbandictionary.com/define.php?term=Shit%20Sandwich">shit sandwich</a>&#8221; technique to give criticism, but be careful to also give pure praise, otherwise praise will start to feel like a disguise for criticism.</p>



<h3 class="wp-block-heading">They Don&#8217;t Let Their Child Avoid Responsibility</h3>



<p class="wp-block-paragraph">The TL;DR of this chapter is &#8220;teach your kid to adult.&#8221; So how?</p>



<p class="wp-block-paragraph">By starting giving age-appropriate responsibilities to children such as chores, with consequences for shirking the responsibilities, and modelling being responsible.</p>



<h3 class="wp-block-heading">They Don&#8217;t Shield Their Children from Pain</h3>



<p class="wp-block-paragraph">To a limit. Obviously try to avoid your child being in extreme physical pain, but some pain, like a bumped knee after doing something a little beyond their ability, is good. It teaches limits, and teaches that it&#8217;s possible to handle reasonable amounts of pain.</p>



<p class="wp-block-paragraph">&#8220;Pain&#8221; includes discomfort, and isn&#8217;t just physical, it can even be boredom! We should acknowledge and talk about pain, and come up with strategies to deal with it, not to avoid it completely.</p>



<h3 class="wp-block-heading">They Don&#8217;t Feel Responsible for Their Child&#8217;s Emotions</h3>



<p class="wp-block-paragraph">Kind of like pain, children should live emotions and learn to deal with them, and that they are able to deal with them. It may be appropriate to shield children from some extremes.</p>



<p class="wp-block-paragraph">Handling emotions is a vital life skill. Someone who is not able to deal with their own emotions turns into a quick-to-anger adult who tries to control emotions by controlling other people to only trigger emotions they can handle.</p>



<p class="wp-block-paragraph">Teach emotions by naming and observing them in everyday life, for example, &#8220;that was frustrating when we were stuck in traffic.&#8221; When children act out correct the behaviour, but not the emotion. Feeling angry is fine, slamming a door is not.</p>



<h3 class="wp-block-heading">They Don&#8217;t Prevent Their Child From Making Mistakes</h3>



<p class="wp-block-paragraph">Mistakes are learning opportunities, unless they are dangerous, let them happen and learn from them. Parents may try to prevent children from making mistakes so they are &#8220;successful&#8221; faster, but this is short term gain for long term pain, as making mistakes teaches us how to recover from and learn from mistakes.</p>



<p class="wp-block-paragraph">Preventing is another flavour of expecting perfection, it teaches children that mistakes are to be avoided at all cost, leaving the child paralyzed with fear when facing a choice, and more depressed in adulthood.</p>



<p class="wp-block-paragraph">Parents should let mistakes happen, then discuss what happened and why, and strategies to avoid them in the future. When a child has an event like a test, performance, or game, we can discuss what went well and what didn&#8217;t, and, if we want, strategize what could be done differently. We can even do this for things that went well, like games that the team won. We need to be careful not to tip over into appearing to expect perfection.</p>



<h3 class="wp-block-heading">They Don&#8217;t Confuse Discipline with Punishment</h3>



<p class="wp-block-paragraph">I found this an interesting distinction that I hadn&#8217;t thought about too much in the past. Punishment seeks to make a person feel bad for what they have done, but doesn&#8217;t include opportunities to learn why what they did was not acceptable and how to improve in the future. Discipline does include those learning opportunities.</p>



<p class="wp-block-paragraph">Punishment is bad for mental health and self-worth. People who are punished end up with lower IQ and more mental illness than those who are not punished. Harsh discipline teaches kids to lie rather than face the consequences of their actions.</p>



<p class="wp-block-paragraph">When discipline has to happen parents should use the most natural consequences possible, and be very clear about how something that was taken away can be earned back. Work with kids to teach them self-discipline and come up with strategies to avoid the problem in the future.</p>



<p class="wp-block-paragraph">When trying to change behaviours, a reward system provides positive framing, as opposed to a demerit system that would provide negative framing. When designing rewards make it so that the wait for a payoff is appropriate for the child&#8217;s age and development.</p>



<h3 class="wp-block-heading">They Don&#8217;t Take Shortcuts to Avoid Discomfort</h3>



<p class="wp-block-paragraph">This might be one of the hardest sections of the book. It is so easy to just plunk a kid in front of an iPad until bedtime, but most parenting shortcuts have long-term negative consequences &#8211; otherwise we would refer them as parenting techniques!</p>



<p class="wp-block-paragraph">Often parents, (like me), take shortcuts when they are exhausted. The shortcut may be too much TV, not following through with discipline, making an older child do something to appease a temperamental younger child, just doing things around the house or for the child instead of teaching them to do it themselves, or just letting kids stay up late because we don&#8217;t feel like dealing with bedtime. Taking shortcuts as a parent models the behaviour of taking shortcuts to the child, so if we don&#8217;t want to be teaching our children to take shortcuts we should stop doing it ourselves.</p>



<p class="wp-block-paragraph">To stop with the shortcuts: figure out where we are taking shortcuts, then come up with a plan to stop. Know that stopping may be difficult if the parents or the children are used to the shortcut happening. It is hard to avoid shortcuts if we are exhausted, so find ways to recharge.</p>



<p class="wp-block-paragraph">Finally, when talking about shortcuts with kids, be honest about the short-term payoff, as this builds trust that you&#8217;re also telling truth about the long-term pain.</p>



<h3 class="wp-block-heading">They Don&#8217;t Lose Sight of Their Values</h3>



<p class="wp-block-paragraph">It is easy to assume that children will learn our values, such as honesty, kindness, hard work, and integrity, simply by being around us. However, this is not the case, kids don&#8217;t learn by osmosis, we need to teach values. This brings up the uncomfortable question: what are my values? Do I want to win at all costs or do I want to take the moral high ground, even if it means I lose? Do I, (to take an example from the book), value sticking to commitments, or do I value taking an early exit if something isn&#8217;t what I expect or want it to be? The book suggests having a family mission statement like corporations do to guide us when faced with choices that have no clearly correct option, and discuss these dilemmas with children, especially adolescents, so they get practice on living up to their values.</p>



<h2 class="wp-block-heading">Parenting and Self-Discipline</h2>



<p class="wp-block-paragraph">There are a few things in <em>13 Things</em> that remind me of <a href="https://johnbeales.com/books/no-excuses-the-power-of-self-discipline/">No Excuses</a>. In the section on teaching responsibility I wrote &#8220;Being a responsible role model is just as important, so suck it up and be responsible.&#8221; The section on avoiding shortcuts largely boils down to making the more responsible choice, even if it sucks in the moment. This can take a lot of self-discipline, which we may be lacking if we are tired, so parents should find ways to recharge such as sleep, but also hobbies, exercise, and friends.</p>



<p class="wp-block-paragraph">Is the TL;DR of <em>13 Things Mentally Strong Parents Don&#8217;t Do</em> to model and teach fully engaging with life in healthy ways? It seems like it just might be.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="332" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2024/01/book-23917-cover.jpg?fit=332%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2024/01/book-23917-cover.jpg?w=332&amp;ssl=1 332w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2024/01/book-23917-cover.jpg?resize=199%2C300&amp;ssl=1 199w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2024/01/book-23917-cover.jpg?resize=266%2C400&amp;ssl=1 266w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2024/01/book-23917-cover.jpg?resize=212%2C320&amp;ssl=1 212w" sizes="auto, (max-width: 332px) 100vw, 332px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>


<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-0062565754/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-0062565754/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-0062565754/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div><p>The post <a href="https://johnbeales.com/books/13-things-mentally-strong-parents-dont-do/">13 Things Mentally Strong Parents Don&#8217;t Do</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/13-things-mentally-strong-parents-dont-do/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">23917</post-id>	</item>
		<item>
		<title>No Excuses!: The Power of Self-Discipline</title>
		<link>https://johnbeales.com/books/no-excuses-the-power-of-self-discipline/</link>
					<comments>https://johnbeales.com/books/no-excuses-the-power-of-self-discipline/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Thu, 18 Jan 2024 04:19:49 +0000</pubDate>
				<category><![CDATA[nonfiction]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[self-help]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=23648</guid>

					<description><![CDATA[<p>Yeah, there is a colon right after an exclamation point in the title, (at least according to Amazon). A Dated Self-Help Book, with a Bit of Useful Advice While there is advice in this book that I believe is useful, I had to filter through a lot of filler and outdated perceptions to get to [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/no-excuses-the-power-of-self-discipline/">No Excuses!: The Power of Self-Discipline</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Yeah, there is a colon right after an exclamation point in the title, (at least according to Amazon).</p>



<h2 class="wp-block-heading">A Dated Self-Help Book, with a Bit of Useful Advice</h2>



<p class="wp-block-paragraph">While there is advice in this book that I believe is useful, I had to filter through a lot of filler and outdated perceptions to get to it. After a few chapters I started I realized that Brian Tracy, or his ghost writer, loves his filler, and started writing a 1-2 sentence TL;DR of the chapter. There is a &#8220;Law of …&#8221; in almost every chapter, in the 21 chapters of the book the phrase &#8220;law of&#8221; appears 48 times, with the word &#8220;law&#8221; appearing an additional 23 times, (probably in the phrase &#8220;Great Law&#8221; which Tracy also seems to love).</p>



<p class="wp-block-paragraph">Despite being published less than fourteen years ago in 2010, <em>No Excuses!</em> contains some very dated attitudes attitudes and language. For example, people who are not deemed to be successful are referred to as &#8220;failures,&#8221; the author says that men and women who are not married to each other should not socialize one-on-one, and he tells the <a href="https://en.wikipedia.org/wiki/Two_Wolves">Two Wolves</a> metaphor, but says it&#8217;s an &#8220;Indian&#8221; story, which Wikipedia says it is not, in 2010 a Canadian should have known better than to refer to First Nations people as &#8220;Indians.&#8221; Finally, he seems to think the main way to get ahead is to grind.</p>



<p class="wp-block-paragraph">With that out of the way, let&#8217;s look at the positive.</p>



<h2 class="wp-block-heading">Self-Discipline</h2>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Self-discipline is the ability to do what you should do when you should do it, whether you feel like it or not.</p>



<ul class="wp-block-list">
<li>Elbert Hubbard (allegedly, I didn&#8217;t check the reference).</li>
</ul>
</blockquote>



<p class="wp-block-paragraph">I accept the idea that we can and should use self-discipline to do what needs doing, but I have trouble using my own self-discipline to do so. The main idea that sticks with me is that when I realize I&#8217;m not working, (or doing what I should be), to say &#8220;back to work&#8221; and get back to work, but this is not ground-breaking new thought technology.</p>



<h2 class="wp-block-heading">Decide What to Do, then Do It</h2>



<p class="wp-block-paragraph">For many situations Tracy gives advice that boils down to &#8220;decide what to do, then do it,&#8221; which is logical, but I like having it laid out. He gives this advice in for most situations: becoming more &#8220;successful,&#8221; education, even being faithful to your partner!</p>



<h3 class="wp-block-heading">Pre-Plan Days</h3>



<p class="wp-block-paragraph">A practical implementation of decide what to do, then do it, is pre-planning days. Tracy suggests writing a to-do list at the end of the day for the following day. He has a whole prioritization system where all things with the largest consequences, (good or bad), are done first, followed by medium consequences, and so on down the line, but it comes down to making a list the night before that, if complete, will make the day productive.</p>



<h2 class="wp-block-heading">Repetition is Practice</h2>



<p class="wp-block-paragraph">Each time you do something the right way, you are practicing doing it the right way. This is brought up in the section on improving one&#8217;s character, on education, and on work. Getting in the reps helps us improve.</p>



<h2 class="wp-block-heading">Invest In Yourself</h2>



<p class="wp-block-paragraph">Tracy spends a while extolling the virtues of self-improvement. He has a couple of &#8220;rules&#8221; for this:</p>



<ul class="wp-block-list">
<li>Spend an hour reading in your field every day.</li>



<li>Invest two hours per day in personal excellence.</li>



<li>Invest 3% of your income back into yourself.</li>
</ul>



<p class="wp-block-paragraph">For the last two he&#8217;s talking about things like skills training, books, &#8220;audio programmes,&#8221; (ok boomer), and so on. It&#8217;s unclear if he means 2 hours + 1 hour reading, (I think not), but I don&#8217;t think the actual numbers matter so much as the constant journey. By building the habit of somehow studying every day we practice studying, making it easier, and we get better at our job, or whatever we are trying to improve.</p>



<h2 class="wp-block-heading">Copy Successful People</h2>



<p class="wp-block-paragraph">Tracy says that we have already been shown how to be successful, it&#8217;s the same way currently-successful people got to where they are. So, if we want to be successful in a field copy what successful people did to get there. While I am sure there are enough exceptions that this advice should not be blindly followed, I think it&#8217;s a good starting point.</p>



<h2 class="wp-block-heading">Persistence &amp; Resilience</h2>



<p class="wp-block-paragraph">Part of &#8220;chose what to do and do it&#8221; is persistence: keep going until the thing is done. Persistence and self-discipline are very closely related. Related to persistence is resilience, which Tracy defines as how we respond to setbacks. Do we learn from them and come out even better? That is true resilience.</p>



<h2 class="wp-block-heading">Get Enough Rest</h2>



<p class="wp-block-paragraph">For a guy who says you should get to work an hour before everyone else, work through your lunch, and leave an hour after everyone else, Tracy comes out pretty strongly in favour of rest. He reminds us both that we need to get enough sleep, and that we need to take vacations and weekends.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="333" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2024/01/book-23648-cover.jpg?fit=333%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2024/01/book-23648-cover.jpg?w=333&amp;ssl=1 333w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2024/01/book-23648-cover.jpg?resize=200%2C300&amp;ssl=1 200w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2024/01/book-23648-cover.jpg?resize=266%2C400&amp;ssl=1 266w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2024/01/book-23648-cover.jpg?resize=213%2C320&amp;ssl=1 213w" sizes="auto, (max-width: 333px) 100vw, 333px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>


<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-1593156329/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-1593156329/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-1593156329/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div><p>The post <a href="https://johnbeales.com/books/no-excuses-the-power-of-self-discipline/">No Excuses!: The Power of Self-Discipline</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/no-excuses-the-power-of-self-discipline/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">23648</post-id>	</item>
		<item>
		<title>Dracula</title>
		<link>https://johnbeales.com/books/dracula/</link>
					<comments>https://johnbeales.com/books/dracula/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Thu, 30 Nov 2023 00:38:35 +0000</pubDate>
				<category><![CDATA[classic]]></category>
		<category><![CDATA[fiction]]></category>
		<category><![CDATA[horror]]></category>
		<category><![CDATA[literature]]></category>
		<category><![CDATA[old]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=22354</guid>

					<description><![CDATA[<p>Earlier this year I signed up for Dracula Daily, an email newsletter that sent Dracula to me, in parts, on the dates during the year that they happened in the book. I had not read Dracula prior to this, but apparently every part of the book is dated, which makes this type of exercise possible, [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/dracula/">Dracula</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Earlier this year I signed up for <a href="https://draculadaily.substack.com/">Dracula Daily</a>, an email newsletter that sent Dracula to me, in parts, on the dates during the year that they happened in the book. I had not read Dracula prior to this, but apparently every part of the book is dated, which makes this type of exercise possible, and fun.</p>



<p class="wp-block-paragraph">Some parts of the book, even in little bits, dragged on, awkwardly praising God, or Mina&#8217;s beauty and perfectness. But I like the story, and despite having watched the ballet version of Dracula and been exposed to the story and the concept for years it was interesting to read the actual text.</p>



<p class="wp-block-paragraph">The Dracula Daily version of Dracula is now available as a book, linked below.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="413" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/11/book-22354-cover.jpg?fit=413%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/11/book-22354-cover.jpg?w=413&amp;ssl=1 413w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/11/book-22354-cover.jpg?resize=248%2C300&amp;ssl=1 248w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/11/book-22354-cover.jpg?resize=330%2C400&amp;ssl=1 330w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/11/book-22354-cover.jpg?resize=264%2C320&amp;ssl=1 264w" sizes="auto, (max-width: 413px) 100vw, 413px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>


<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-1524884703/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-1524884703/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-1524884703/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div><p>The post <a href="https://johnbeales.com/books/dracula/">Dracula</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/dracula/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">22354</post-id>	</item>
		<item>
		<title>Disable Rocket in PhpStorm EAP</title>
		<link>https://johnbeales.com/2023/disable-rocket-in-phpstorm-eap/</link>
					<comments>https://johnbeales.com/2023/disable-rocket-in-phpstorm-eap/#comments</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 15 Nov 2023 17:04:37 +0000</pubDate>
				<category><![CDATA[Hints, Techniques & More]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[jetbrains]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpstorm]]></category>
		<category><![CDATA[rocket]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?p=22017</guid>

					<description><![CDATA[<p>Rocket gives me fast access to emoji on macOS, but the trigger I use, ::, is also common in PHP. I thought I had Rocket set to be disabled in PhpStorm, but it has been triggering when try do do things like Log::info('some statement'); After confirming that PhpStorm is on the list of Disabled Apps [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/2023/disable-rocket-in-phpstorm-eap/">Disable Rocket in PhpStorm EAP</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><a href="https://matthewpalmer.net/rocket/">Rocket</a> gives me fast access to emoji on macOS, but the trigger I use, ::, is also common in PHP. I thought I had Rocket set to be disabled in <a href="https://johnbeales.com/tag/phpstorm/">PhpStorm</a>, but it has been triggering when try do do things like <code>Log::info('some statement');</code> </p>



<p class="wp-block-paragraph">After confirming that PhpStorm is on the list of Disabled Apps in Rocket, but Rocket was still triggering, I Googled how to disable Rocket for PhpStorm and found <a href="https://matthewpalmer.net/rocket/help.html?ref=rocketinapp#intellij-idea">Rocket&#8217;s help instructions on IntelliJ IDEA</a>. The same logic works for PhpStorm: Once PhpStorm is added to the list of disabled applications, double-click it in the list, and change it to &#8220;PhpStorm-EAP&#8221; and <em>voila</em>, Rocket stops triggering in PhpStorm.</p>
<p>The post <a href="https://johnbeales.com/2023/disable-rocket-in-phpstorm-eap/">Disable Rocket in PhpStorm EAP</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/2023/disable-rocket-in-phpstorm-eap/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">22017</post-id>	</item>
		<item>
		<title>Make Your Bed</title>
		<link>https://johnbeales.com/books/make-your-bed/</link>
					<comments>https://johnbeales.com/books/make-your-bed/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Tue, 30 May 2023 02:35:50 +0000</pubDate>
				<category><![CDATA[military]]></category>
		<category><![CDATA[nonfiction]]></category>
		<category><![CDATA[self-help]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=18544</guid>

					<description><![CDATA[<p>A short self-help book, based on a commencement speech. A quick read, kind of bubblegum self-help. The speech it&#8217;s based on is at the end of the book, and I&#8217;m not sure reading the whole book gave me that much more than just reading the speech would have. My main takeaway was that I need [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/make-your-bed/">Make Your Bed</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">A short self-help book, based on a commencement speech. A quick read, kind of bubblegum self-help. The speech it&#8217;s based on is at the end of the book, and I&#8217;m not sure reading the whole book gave me that much more than just reading the speech would have.</p>



<p class="wp-block-paragraph">My main takeaway was that I need to build a team &amp; not try to do everything myself.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="353" height="499" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/05/book-18544-cover.jpg?fit=353%2C499&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/05/book-18544-cover.jpg?w=353&amp;ssl=1 353w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/05/book-18544-cover.jpg?resize=212%2C300&amp;ssl=1 212w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/05/book-18544-cover.jpg?resize=283%2C400&amp;ssl=1 283w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/05/book-18544-cover.jpg?resize=226%2C320&amp;ssl=1 226w" sizes="auto, (max-width: 353px) 100vw, 353px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>


<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-1455570249/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-1455570249/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-1455570249/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div><p>The post <a href="https://johnbeales.com/books/make-your-bed/">Make Your Bed</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/make-your-bed/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">18544</post-id>	</item>
		<item>
		<title>Anne of Green Gables</title>
		<link>https://johnbeales.com/books/anne-of-green-gables/</link>
					<comments>https://johnbeales.com/books/anne-of-green-gables/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Fri, 28 Apr 2023 02:27:59 +0000</pubDate>
				<category><![CDATA[canadian]]></category>
		<category><![CDATA[canlit]]></category>
		<category><![CDATA[fiction]]></category>
		<category><![CDATA[maritimes]]></category>
		<category><![CDATA[prince edward island]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=18027</guid>

					<description><![CDATA[<p>As a guy in my early 40s I&#8217;m not the target audience for Anne of Green Gables, it&#8217;s something most people read as an older child or young teen. As a Canadian I feel like it&#8217;s a bit weird to have never read it, I even went to Green Gables twice with people who love [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/anne-of-green-gables/">Anne of Green Gables</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">As a guy in my early 40s I&#8217;m not the target audience for Anne of Green Gables, it&#8217;s something most people read as an older child or young teen. As a Canadian I feel like it&#8217;s a bit weird to have never read it, I even went to Green Gables twice with people who love Anne! There have been copies of all of the Anne books in my home for years, I finally picked one up.</p>



<p class="wp-block-paragraph">I get it. I understand why Cavendish has been a draw for tourists around the world for a century, why people keep making Anne shows for TV, and why, when I went to the maritimes with Anne fans there was no question that we were going to visit Green Gables. </p>



<p class="wp-block-paragraph">There are a bunch more Anne books on my bookshelf. I am worried that they won&#8217;t hold up to the first, but I suspect I will read them.</p>



<figure class="wp-block-embed is-type-photo is-provider-flickr wp-block-embed-flickr"><div class="wp-block-embed__wrapper">
<a href="https://www.flickr.com/photos/johnbeales/1271610414"><img data-recalc-dims="1" loading="lazy" decoding="async" src="https://i0.wp.com/live.staticflickr.com/1211/1271610414_cee701eb5e_c.jpg?resize=800%2C600&#038;ssl=1" alt="Green Gables" width="800" height="600" /></a>
</div><figcaption class="wp-element-caption">Green Gables, from my first visit.</figcaption></figure>



<figure class="wp-block-embed is-type-photo is-provider-flickr wp-block-embed-flickr"><div class="wp-block-embed__wrapper">
<a href="https://www.flickr.com/photos/johnbeales/1271587160"><img data-recalc-dims="1" loading="lazy" decoding="async" src="https://i0.wp.com/live.staticflickr.com/1108/1271587160_17644b2629_c.jpg?resize=800%2C600&#038;ssl=1" alt="Potatoes &amp; the Sea" width="800" height="600" /></a>
</div><figcaption class="wp-element-caption">Potatoes growing in PEI&#8217;s red earth.</figcaption></figure>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="292" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/04/book-18027-cover.jpg?fit=292%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/04/book-18027-cover.jpg?w=292&amp;ssl=1 292w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/04/book-18027-cover.jpg?resize=175%2C300&amp;ssl=1 175w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/04/book-18027-cover.jpg?resize=234%2C400&amp;ssl=1 234w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/04/book-18027-cover.jpg?resize=187%2C320&amp;ssl=1 187w" sizes="auto, (max-width: 292px) 100vw, 292px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>


<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-0553213133/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-0553213133/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-0553213133/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div><p>The post <a href="https://johnbeales.com/books/anne-of-green-gables/">Anne of Green Gables</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/anne-of-green-gables/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">18027</post-id>	</item>
		<item>
		<title>Gallery Captions 1.6: Now with Custom HTML and Thumbnail Captions</title>
		<link>https://johnbeales.com/2023/gallery-captions-1-6-now-with-custom-html-and-thumbnail-captions/</link>
					<comments>https://johnbeales.com/2023/gallery-captions-1-6-now-with-custom-html-and-thumbnail-captions/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Thu, 06 Apr 2023 15:15:30 +0000</pubDate>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[captions]]></category>
		<category><![CDATA[gallery captions]]></category>
		<category><![CDATA[woocommerce]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?p=17585</guid>

					<description><![CDATA[<p>Version 1.6 of my WooCommerce extension, Gallery Captions for WooCommerce, is now live with two new features: HTML is allowed in captions and image thumbnails can now have captions, (if you really want them to). Basic HTML in Captions Some support requests have come in since the launch of Gallery Captions for WooCommerce asking how [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/2023/gallery-captions-1-6-now-with-custom-html-and-thumbnail-captions/">Gallery Captions 1.6: Now with Custom HTML and Thumbnail Captions</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Version 1.6 of my WooCommerce extension, <a href="https://woocommerce.com/products/gallery-captions-for-woocommerce/">Gallery Captions for WooCommerce</a>, is now live with two new features: HTML is allowed in captions and image thumbnails can now have captions, (if you really want them to).</p>



<h3 class="wp-block-heading">Basic HTML in Captions</h3>



<p class="wp-block-paragraph">Some support requests have come in since the <a href="https://johnbeales.com/2020/gallery-captions-woocommerce/">launch of Gallery Captions for WooCommerce</a> asking how to add links, and occasionally other formatting, to captions. Now people no longer have to ask, they can just add HTML. I&#8217;m using the built-in <a href="https://core.trac.wordpress.org/browser/tags/6.2/src/wp-includes/kses.php#L391"><code>$allowedtags</code></a> variable in WordPress to allow most formatting tags but not big structural tags that have the potential to break the product image gallery.</p>



<h3 class="wp-block-heading">Captions on Thumbnails</h3>



<p class="wp-block-paragraph">A while ago there was a support request asking to for a way to add captions to the thumbnails displayed below the full-size image in the product gallery, and instead of saying that&#8217;s not how the extension works I made it work and gave the customer a development version of Gallery Captions with captions on the thumbnails with the version number 1.6-dev. In order to release 1.6 without breaking that customer&#8217;s site when the extension updates I added thumbnail captions to the release version, but hid it behind a filter. Most of the time it doesn&#8217;t make sense to have captions on thumbnails, but when it does site owners can now filter <code>gcw_show_thumbnail_captions</code> to return true and they&#8217;ll get thumbnail captions, like this:</p>



<pre class="wp-block-code language-php"><code>add_filter( 'gcw_show_thumbnail_captions', '__return_true' );</code></pre>



<figure class="wp-block-image size-large is-resized"><img data-recalc-dims="1" loading="lazy" decoding="async" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/04/Screenshot-2023-04-05-at-2.42.10-PM.png?resize=713%2C768&#038;ssl=1" alt="A screenshot showing the a WooCommerce product page with captions under the thumbnails. The captions are used to describe the colours of tulips." class="wp-image-17586" width="713" height="768" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/04/Screenshot-2023-04-05-at-2.42.10-PM.png?resize=950%2C1024&amp;ssl=1 950w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/04/Screenshot-2023-04-05-at-2.42.10-PM.png?resize=278%2C300&amp;ssl=1 278w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/04/Screenshot-2023-04-05-at-2.42.10-PM.png?resize=768%2C828&amp;ssl=1 768w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/04/Screenshot-2023-04-05-at-2.42.10-PM.png?resize=1425%2C1536&amp;ssl=1 1425w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/04/Screenshot-2023-04-05-at-2.42.10-PM.png?resize=696%2C750&amp;ssl=1 696w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/04/Screenshot-2023-04-05-at-2.42.10-PM.png?resize=594%2C640&amp;ssl=1 594w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/04/Screenshot-2023-04-05-at-2.42.10-PM.png?resize=473%2C510&amp;ssl=1 473w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/04/Screenshot-2023-04-05-at-2.42.10-PM.png?resize=371%2C400&amp;ssl=1 371w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/04/Screenshot-2023-04-05-at-2.42.10-PM.png?resize=297%2C320&amp;ssl=1 297w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/04/Screenshot-2023-04-05-at-2.42.10-PM.png?resize=891%2C960&amp;ssl=1 891w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/04/Screenshot-2023-04-05-at-2.42.10-PM.png?resize=928%2C1000&amp;ssl=1 928w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/04/Screenshot-2023-04-05-at-2.42.10-PM.png?w=1494&amp;ssl=1 1494w" sizes="auto, (max-width: 713px) 100vw, 713px" /><figcaption class="wp-element-caption">Very short captions look pretty good under the thumbnails, but if the captions are long it looks pretty weird.</figcaption></figure>



<p class="wp-block-paragraph">Both of these changes have the potential to cause trouble by letting people break the image gallery in unexpected ways, so hopefully I&#8217;m not making a mistake. Putting thumbnail captions behind a filter that should restrict the use of thumbnail captions to people who really know what they&#8217;re doing, and limiting the amount of HTML allowed in captions should prevent the worst disasters, and I can always limit it more in the future if needed. </p>
<p>The post <a href="https://johnbeales.com/2023/gallery-captions-1-6-now-with-custom-html-and-thumbnail-captions/">Gallery Captions 1.6: Now with Custom HTML and Thumbnail Captions</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/2023/gallery-captions-1-6-now-with-custom-html-and-thumbnail-captions/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">17585</post-id>	</item>
		<item>
		<title>Jurassic Park</title>
		<link>https://johnbeales.com/books/jurassic-park/</link>
					<comments>https://johnbeales.com/books/jurassic-park/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Tue, 28 Feb 2023 02:16:32 +0000</pubDate>
				<category><![CDATA[sci-fi]]></category>
		<category><![CDATA[science-fiction]]></category>
		<category><![CDATA[thriller]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=16760</guid>

					<description><![CDATA[<p>I finally read Jurassic Park, and I should&#8217;t have waited so long. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/jurassic-park/">Jurassic Park</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I finally read Jurassic Park, and I should&#8217;t have waited so long. <br /></p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="280" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/02/book-16760-cover.jpg?fit=280%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/02/book-16760-cover.jpg?w=280&amp;ssl=1 280w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/02/book-16760-cover.jpg?resize=168%2C300&amp;ssl=1 168w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/02/book-16760-cover.jpg?resize=224%2C400&amp;ssl=1 224w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/02/book-16760-cover.jpg?resize=179%2C320&amp;ssl=1 179w" sizes="auto, (max-width: 280px) 100vw, 280px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>


<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-0345538987/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-0345538987/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-0345538987/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div><p>The post <a href="https://johnbeales.com/books/jurassic-park/">Jurassic Park</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/jurassic-park/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">16760</post-id>	</item>
		<item>
		<title>The Judge&#8217;s List</title>
		<link>https://johnbeales.com/books/the-judges-list/</link>
					<comments>https://johnbeales.com/books/the-judges-list/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Tue, 28 Feb 2023 02:12:49 +0000</pubDate>
				<category><![CDATA[mystery]]></category>
		<category><![CDATA[thriller]]></category>
		<category><![CDATA[whodunnit]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=16757</guid>

					<description><![CDATA[<p>By accident, I re-read The Whistler on a recent flight, so when I heard there was another book in the series I wanted to read it. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/the-judges-list/">The Judge&#8217;s List</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">By accident, I re-read <a href="https://johnbeales.com/books/the-whistler/">The Whistler</a> on a recent flight, so when I heard there was another book in the series I wanted to read it.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="328" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/02/book-16757-cover.jpg?fit=328%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/02/book-16757-cover.jpg?w=328&amp;ssl=1 328w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/02/book-16757-cover.jpg?resize=197%2C300&amp;ssl=1 197w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/02/book-16757-cover.jpg?resize=262%2C400&amp;ssl=1 262w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/02/book-16757-cover.jpg?resize=210%2C320&amp;ssl=1 210w" sizes="auto, (max-width: 328px) 100vw, 328px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>


<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-0385546027/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-0385546027/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-0385546027/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div><p>The post <a href="https://johnbeales.com/books/the-judges-list/">The Judge&#8217;s List</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-judges-list/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">16757</post-id>	</item>
		<item>
		<title>Make a Pi-Hole Work with a Bell Giga Hub</title>
		<link>https://johnbeales.com/2023/make-a-pi-hole-work-with-a-bell-giga-hub/</link>
					<comments>https://johnbeales.com/2023/make-a-pi-hole-work-with-a-bell-giga-hub/#comments</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 22 Feb 2023 03:30:03 +0000</pubDate>
				<category><![CDATA[How To]]></category>
		<category><![CDATA[ad blocking]]></category>
		<category><![CDATA[bell canada]]></category>
		<category><![CDATA[bell fibe]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[giga hub]]></category>
		<category><![CDATA[gigahub]]></category>
		<category><![CDATA[pi-hole]]></category>
		<category><![CDATA[pihole]]></category>
		<category><![CDATA[raspberry pi]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?p=16622</guid>

					<description><![CDATA[<p>Due to a recent 10-block move there were shenanigans and my previous ISP was incapable of transferring my service to our new address. As a result, I signed up for the much faster Bell Fibe, fibre-to-the-home service. Now I have a 1.5 Gigabit internet connection, and pay less than I did for the 25 megabit [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/2023/make-a-pi-hole-work-with-a-bell-giga-hub/">Make a Pi-Hole Work with a Bell Giga Hub</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Due to a recent 10-block move there were shenanigans and my previous ISP was incapable of transferring my service to our new address. As a result, I signed up for the much faster <a href="https://www.bell.ca/Bell_Internet/Internet_access">Bell Fibe</a>, fibre-to-the-home service. Now I have a 1.5 Gigabit internet connection, and pay less than I did for the 25 megabit connection. Sweet! I had some trouble getting my <a href="https://pi-hole.net">Pi-Hole</a> up &amp; running so I&#8217;m sharing what I did in case others have similar problems.</p>



<h3 class="wp-block-heading">The Previous Setup</h3>



<p class="wp-block-paragraph">My old setup consisted of a DSL modem in bridge mode and an <a href="https://amzn.to/3Z6Fpfk">TP-Link Archer C7 router</a> V2 that handled all networking tasks except for responding to DNS queries. The C7&#8217;s DHCP settings pointed to the Pi-Hole as the main DNS server for the network, and it worked great.</p>



<h3 class="wp-block-heading">The Plan: Giga Hub + Pi-Hole</h3>



<p class="wp-block-paragraph">Included with my new service is a Bell Giga Hub, which is a combination <abbr title="Optical Network Terminal">ONT</abbr> and router, (with a 10 gigabit ethernet port <em>and</em> wifi 6e!). Despite some complaints in <a href="https://www.reddit.com/r/bell/">/r/bell</a> it seems like a very capable device, so I planned to use it as the main network device, and try to use it to point all devices on the network to a Raspberry Pi running Pi-Hole.</p>



<h3 class="wp-block-heading">The Roadblock</h3>



<p class="wp-block-paragraph">Despite a place in the Giga Hub&#8217;s admin interface where it looks like I should be able to point the DNS at the Pi-Hole, I couldn&#8217;t get it to work. Every time I pointed DNS at the Pi-Hole the Pi-Hole couldn&#8217;t access the internet. It couldn&#8217;t even ping an IP address.</p>



<figure class="wp-block-image aligncenter is-resized"><img data-recalc-dims="1" loading="lazy" decoding="async" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/02/bell-gigahub-dns-settings.png?resize=596%2C384&#038;ssl=1" alt="A screenshot of the Bell Giga Hub's dns settings" width="596" height="384" title="bell-gigahub-dns-settings.png"/><figcaption class="wp-element-caption">It looks like I should be able to set a DNS server here&#8230; but it doesn&#8217;t work.</figcaption></figure>



<h4 class="wp-block-heading">Side Quest: Restoring Internet Access to the Pi-Hole</h4>



<p class="wp-block-paragraph">I ended up with a Raspberry Pi that couldn&#8217;t access the internet, which wasn&#8217;t ideal. The Pi was accessible on the local network, so I initially restored its internet access by changing it&#8217;s IP address. I later realized that turning setting the Giga Hub&#8217;s DNS back to &#8220;Obtain DNS information automatically&#8221; <em>and</em> changing or deleting the IP address in the &#8220;Manually specify DNS information&#8221; would restore the Pi&#8217;s internet access. It seemed that even though the router was using external, upstream, DNS, it was still doing something weird with the IP address in the inactive &#8220;Manually specify DNS information&#8221; screen.</p>



<h3 class="wp-block-heading">DHCP to the Rescue</h3>



<p class="wp-block-paragraph">The solution ended up being relatively simply. Pi-Hole has the option to use the Pi-Hole as a <abbr title="Dynamic Host Configuration Protocol">DHCP</abbr> server, and it is smart enough to tell connecting devices to also use the Pi-Hole for DNS. So I turned on the Pi-Hole&#8217;s DHCP server and configured it to allocate IP addresses in the same range as the Giga Hub, then turned off the DHCP server on the Giga Hub and everything worked. DHCP is a broadcast service so there is no configuration telling clients where to find the server. If there&#8217;s a DHCP server on the network the devices will find it.</p>



<p class="wp-block-paragraph">Some posts in /r/bell had me worried that I would have to either use my C7 or another, faster, router in <a href="https://www.techtarget.com/searchnetworking/definition/PPPoE"><abbr title="Point-to-Point Protocol over Ethernet">PPPoE</abbr> mode</a>, but switching to the Pi-Hole as the DHCP server was enough. That&#8217;s great because I didn&#8217;t want to buy another fast router, or use my older C7 when there&#8217;s a perfectly capable Wifi 6e router in the Giga Hub.</p>



<p class="wp-block-paragraph">When I set this all up my Giga Hub was on Firmware version 1.14.something. The firmware was recently updated to version 1.16 and is still working. It may be that Firmware 1.16 also fixes the problem I had setting the DNS server on the Giga Hub, but what I have is working, and if it ain&#8217;t broke don&#8217;t fix it.</p>



<figure class="wp-block-image aligncenter is-resized"><img data-recalc-dims="1" loading="lazy" decoding="async" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2023/02/my-pi-hole-admin-panel.png?resize=596%2C344&#038;ssl=1" alt="A screenshot of my pi hole admin panel showing that it is processing thousands of DNS queries." width="596" height="344" title="my-pi-hole-admin-panel.png"/><figcaption class="wp-element-caption">My Pi-Hole is processing thousands of DNS queries, (yes, I know blocking is off at the moment).</figcaption></figure>
<p>The post <a href="https://johnbeales.com/2023/make-a-pi-hole-work-with-a-bell-giga-hub/">Make a Pi-Hole Work with a Bell Giga Hub</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/2023/make-a-pi-hole-work-with-a-bell-giga-hub/feed/</wfw:commentRss>
			<slash:comments>19</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">16622</post-id>	</item>
		<item>
		<title>Fermentation Journeys</title>
		<link>https://johnbeales.com/books/fermentation-journeys/</link>
					<comments>https://johnbeales.com/books/fermentation-journeys/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 28 Sep 2022 16:21:30 +0000</pubDate>
				<category><![CDATA[fermentation]]></category>
		<category><![CDATA[food]]></category>
		<category><![CDATA[nonfiction]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=12480</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/fermentation-journeys/">Fermentation Journeys</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-jetpack-markdown"><p>Fermentation has traditionally been used to preserve a surplus, to make the inedible edible, or to transform a product into something more desirable. In modern times we don&#8217;t use it so much for preserving abundance, but it is used to create new flavours, or products, that are difficult or impossible to create in other ways.</p>
<p>Some techniques are very widespread, like lacto-fermenting vegetables with salt. Others are more regional, such as the use of mold on grains, which is mostly confined to Asia.</p>
<p>As the food supply has industrialized many traditional ferments are at risk of being lost. For example, a whole class of African ferments is being replaced by bullion cubes. Industrialization may also be affecting the way fermenting by-products are being used &#8211; or not. In community-scale fermenting it seems that the by-products are used, sometimes for animal feed, (whey), or to create other products, (kasuzuke).</p>
<h2>Groups of Fermentations</h2>
<p>Trying to categorize fermentations is easy and hard. Many are easy, pure, lacto-fermented pickles or a straight-up conversion of sugar to alcohol, but there is a lot of cross-over. Even turning grains to alcohol often uses an intermediate step such as mold.</p>
<ul>
<li>Carbs to alcohol, (and on to vinegar, if you&#8217;re not careful!)</li>
<li>Lacto-fermented vegetables, (and fruit!). Salt makes this happen.</li>
<li>Mold on grains, (koji, natto, tempeh)</li>
<li>Milk (cheese, yogourt)</li>
<li>Meat (ham, some sausage), and meat/carb mixes, (other sausages, ribs!)</li>
</ul>
<h2>Surprising Things I learned</h2>
<h3>Multi-Pronged Preservation</h3>
<p>Tofu can be fermented! I had always thought of tofu as an end product, but it doesn&#8217;t have to be. To be safe, tofu should have an initial fungal ferment using mold, then there can be subsequent ferments, (often lacto), to enhance flavour. Meat also needs a multi-pronged approach to preservation, and usually only one of those prongs is fermentation.</p>
<p>It possible to add a bunch of carbs to meat and get a lacto-ferment going in the carbs, and the acid from the lacto-ferment pickles the meat.</p>
<h3>Coffee Processes</h3>
<p>I finally learned what the processes mentioned on coffee bags mean: it&#8217;s how much of the fruit is left on the bean during the fermentation/drying process. Intentional fermentation seems pretty new in coffee. The processes are: Natural, where the whole fruit is fermented, Honey, where the skin is removed but the pulp remains, and Washed, where only the bean remains. Washed the way most coffee has been processed, and is supposed to give a &quot;cleaner&quot; flavour, and the more fruit is left on the more interesting flavours may develop.</p>
<h2>New Flavours</h2>
<p>The concept of a never-ending brine looks interesting to me and I&#8217;d like to try it. In fact, there are several ferments and recipes using ferments from the book that I&#8217;d like to try. It would be fun to get into koji, but I really don&#8217;t have the space.</p>
<p>I ate a peanut butter &amp; kimchi sandwich, it was pretty good. It might even be good with jam, (but I&#8217;m not sure. Maybe I&#8217;ll do some testing).</p>
<h2>Further Exploration</h2>
<p>Sandor filmed a series called the <a href="https://www.youtube.com/playlist?list=PLDfUp9XK6kA176NN76_4vxx983PEGK9q_">People&#8217;s Republic of Fermentation</a> in China. It&#8217;s available on YouTube and seems like it would be interesting.</p>
</div>
<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>


<p class="dt_booklinks"><a href="http://www.amazon.com/dp/9781645020349/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/9781645020349/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/9781645020349/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div><p>The post <a href="https://johnbeales.com/books/fermentation-journeys/">Fermentation Journeys</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/fermentation-journeys/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">12480</post-id>	</item>
		<item>
		<title>Cloudflare Workers for Fast, Inexpensive, Lightspeed X-Series Business Rules</title>
		<link>https://johnbeales.com/2022/cloudflare-workers-for-fast-inexpensive-lightspeed-x-series-business-rules/</link>
					<comments>https://johnbeales.com/2022/cloudflare-workers-for-fast-inexpensive-lightspeed-x-series-business-rules/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Thu, 04 Aug 2022 16:25:32 +0000</pubDate>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[business rules]]></category>
		<category><![CDATA[cloudflare]]></category>
		<category><![CDATA[cloudflare workers]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[lightspeed]]></category>
		<category><![CDATA[point-of-sale]]></category>
		<category><![CDATA[serverless]]></category>
		<category><![CDATA[vend]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?p=10894</guid>

					<description><![CDATA[<p>A client that operates in a highly-regulated field needed a Business Rule for their Vend / Lightspeed X-Series POS system, and we were able to implement the rule using a Cloudflare worker, making it blazing-fast and extremely reliable, while also reducing the initial cost by 90% and essentially eliminating ongoing costs. It felt great to [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/2022/cloudflare-workers-for-fast-inexpensive-lightspeed-x-series-business-rules/">Cloudflare Workers for Fast, Inexpensive, Lightspeed X-Series Business Rules</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">A client that operates in a highly-regulated field needed a Business Rule for their <a href="https://www.vendhq.com">Vend / Lightspeed X-Series</a> POS system, and we were able to implement the rule using a Cloudflare worker, making it blazing-fast and extremely reliable, while also reducing the initial cost by 90% and essentially eliminating ongoing costs. It felt great to help improve their business, and I still was paid well for my time, so this was a good outcome all around. I enjoyed it enough that I would like to do more, so if you need Lightspeed Retail X-Series Business Rules <a href="https://johnbeales.com/get-in-touch/">please contact me</a>!</p>



<p class="wp-block-paragraph"><em>A note on terminology: The <abbr title="Point of Sale">POS</abbr> system was created by Vend, which was recently bought by Lighspeed. Rebranding isn&#8217;t complete so the product is referred to as both &#8220;Vend&#8221; and &#8220;Lightspeed Retail POS (X-Series)&#8221; &#8211; which is quite a mouthful. I am used to saying &#8220;Vend&#8221; so that&#8217;s probably what I&#8217;ll use the most, but may also use &#8220;Lightspeed X-Series&#8221; for future <abbr title="Search Engine Optimization">SEO</abbr>.</em></p>



<h2 class="wp-block-heading">What are Lightspeed X-Series Business Rules?</h2>



<p class="wp-block-paragraph"><a href="https://docs.vendhq.com/docs/workflows_business_rules">Business Rules</a> are web hooks that the Vend platform sends when certain events take place. Depending on the response to the web hook Vend can take certain actions, such as showing a message to the cashier, preventing the sale, and more. Because the POS waits for the rule to finish before continuing rules need to send their response extremely fast, otherwise the Point of Sale system will feel super-slow and broken. Lightspeed X-Series will wait up to 2 seconds for a response from the URL configured, but every effort should be made to respond faster, especially if rules are going to be run when adding items to the purchase. Imagine if waiting two whole seconds between scanning items at the cash!</p>



<h2 class="wp-block-heading">Cloudflare Workers are the Tool for the Job</h2>



<p class="wp-block-paragraph">The rule we created was able to make all decisions based on the contents of the cart, so when considering how to respond super-fast to a web request containing all of the information needed we realized that <a href="https://workers.cloudflare.com">Cloudflare Workers</a> are perfect for the job: they&#8217;re fast, easy to deploy, and inexpensive. </p>



<p class="wp-block-paragraph">I also got to work with modern Javascript without worrying about browser compatibility, and that was a breath of fresh air.</p>



<h2 class="wp-block-heading">Cost Savings</h2>



<p class="wp-block-paragraph">The client had previously set up a similar business, but used a vendor based in the USA to create the business rule. My understanding was that the cost was around US$5,000 to create the rule, and there was an ongoing cost of around US$25 per month per store. With several stores that was an ongoing bill of a few hundred dollars per month. </p>



<p class="wp-block-paragraph">My work is part of a larger engagement, but it only took me a few hours to learn to build a Cloudflare Worker and program the logic, and both I and the client are in Canada, so my total bill for setting up the business rule was just over 500 Canadian Dollars, savings of over 90%. The worker is running in the client&#8217;s Cloudflare account and falls within the limits of the free Cloudflare worker plan, so the ongoing cost is zero. In the future if they grow and exceed the free limits Cloudflare&#8217;s worker pricing is essentially a rounding error in the scale of their business.</p>



<p class="wp-block-paragraph">My CA$500 bill doesn&#8217;t include future modifications, so the client may choose to spend more money in the future fine-tuning the rule, or changing the rule as their business needs change, but I don&#8217;t see how the total cost could possibly exceed the competing solution.</p>



<h2 class="wp-block-heading">Business Rule Wishlist</h2>



<p class="wp-block-paragraph">Vend/Lightspeed&#8217;s business rules provide an interesting way to extend the Point of Sale system in unique ways. In our situation, because of regulations, we need to limit the amount of certain products that can be purchased in a single transaction &#8211; something that I wouldn&#8217;t expect to find included by default in a POS system, but so much more is possible. That said, I have a wish list of improvements for business rules. Lightspeed, are you listening?</p>



<ul class="wp-block-list"><li>I have been told the POS has an offline mode for situations where internet isn&#8217;t available. I would like to see some sort of runtime available to run rules locally. This would let us enforce business rules even if the store&#8217;s internet is offline, (some of the client&#8217;s stores are fairly remote).</li><li>Run the &#8220;stop&#8221; command, or at least the &#8220;confirm&#8221; command, (which shows a message to the cashier), when adding line items. This would let us prevent an item from being added to the sale, (or let us remove it, then tell the cashier what happened), if the addition of the line item would go over the regulatory limit.</li></ul>



<h2 class="wp-block-heading">Could I build a business on this?</h2>



<p class="wp-block-paragraph">Building this business rule has me wondering if I could build a business on Lightspeed Retail POS (X-Series) business rules. I&#8217;m not sure exactly how it would work, but I could imagine providing access to a library of commonly-needed, pre-built rules for a reasonable flat fee, or maybe a usage-based fee. Maybe custom rules could be built for an hourly rate then run for that same usage fee. There&#8217;s some thinking to do! In the meantime I&#8217;m interested in building more of these, so if you need business rules, for Vend or any other system, <a href="https://johnbeales.com/get-in-touch/">get in touch</a>.</p>
<p>The post <a href="https://johnbeales.com/2022/cloudflare-workers-for-fast-inexpensive-lightspeed-x-series-business-rules/">Cloudflare Workers for Fast, Inexpensive, Lightspeed X-Series Business Rules</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/2022/cloudflare-workers-for-fast-inexpensive-lightspeed-x-series-business-rules/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">10894</post-id>	</item>
		<item>
		<title>Printable Template to Choose a Garmin Forerunner Size</title>
		<link>https://johnbeales.com/2022/printable-template-to-choose-a-garmin-forerunner-size/</link>
					<comments>https://johnbeales.com/2022/printable-template-to-choose-a-garmin-forerunner-size/#comments</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Thu, 04 Aug 2022 01:39:43 +0000</pubDate>
				<category><![CDATA[A Side Project]]></category>
		<category><![CDATA[255]]></category>
		<category><![CDATA[955]]></category>
		<category><![CDATA[activity tracking]]></category>
		<category><![CDATA[fitness]]></category>
		<category><![CDATA[forerunner]]></category>
		<category><![CDATA[garmin]]></category>
		<category><![CDATA[GPS Watch]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?p=10856</guid>

					<description><![CDATA[<p>This year&#8217;s releases of the Garmin Forerunner 255 and Garmin Forerunner 955 look like pretty great watches. I think they would be great replacements for my aging Vivosmart 3, and even the Edge 130 that I use for cycling. But the 255S (&#8220;S&#8221; for &#8220;Small&#8221;), 255, and the 955 are all different sizes, and with [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/2022/printable-template-to-choose-a-garmin-forerunner-size/">Printable Template to Choose a Garmin Forerunner Size</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">This year&#8217;s releases of the <a href="https://amzn.to/3Qf3cW7" rel="sponsored nofollow">Garmin Forerunner 255</a> and <a href="https://amzn.to/3QlKOLo" rel="sponsored nofollow">Garmin Forerunner 955</a> look like pretty great watches. I think they would be great replacements for my aging <a href="https://www.garmin.com/p/567813/">Vivosmart 3</a>, and even the <a href="https://amzn.to/3vDWzod" rel="sponsored nofollow">Edge 130</a> that <a href="https://www.instagram.com/johnbeales/">I use for cycling</a>. But the 255S (&#8220;S&#8221; for &#8220;Small&#8221;), 255, and the 955 are all different sizes, and with pretty small wrists I don&#8217;t want to look like I have a saucer strapped to my wrist. <a href="https://www.reddit.com/r/Garmin/comments/v5ussu/garmin_forerunner_955_on_a_petite_woman/">Some</a> <a href="https://www.reddit.com/r/Garmin/comments/wb3ogj/for_guys_that_are_wondering_if_the_forerunner/">Recent</a> <a href="https://www.reddit.com/r/Garmin/comments/v6anpd/forerunner_255s_skinny_dude_wrist_fit_pic/">posts</a> in <a href="https://www.reddit.com/r/Garmin/">/r/garmin</a> suggest that I&#8217;m not the only person with this question. Time to make a printable!</p>



<figure class="wp-block-image size-large"><a href="https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/08/paper-garmin-on-my-wrist.jpeg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="960" height="720" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/08/paper-garmin-on-my-wrist.jpeg?resize=960%2C720&#038;ssl=1" alt="" class="wp-image-10858" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/08/paper-garmin-on-my-wrist.jpeg?resize=1024%2C768&amp;ssl=1 1024w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/08/paper-garmin-on-my-wrist.jpeg?resize=300%2C225&amp;ssl=1 300w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/08/paper-garmin-on-my-wrist.jpeg?resize=768%2C576&amp;ssl=1 768w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/08/paper-garmin-on-my-wrist.jpeg?resize=750%2C563&amp;ssl=1 750w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/08/paper-garmin-on-my-wrist.jpeg?resize=640%2C480&amp;ssl=1 640w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/08/paper-garmin-on-my-wrist.jpeg?resize=510%2C383&amp;ssl=1 510w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/08/paper-garmin-on-my-wrist.jpeg?resize=400%2C300&amp;ssl=1 400w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/08/paper-garmin-on-my-wrist.jpeg?resize=320%2C240&amp;ssl=1 320w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/08/paper-garmin-on-my-wrist.jpeg?resize=960%2C720&amp;ssl=1 960w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/08/paper-garmin-on-my-wrist.jpeg?resize=1000%2C750&amp;ssl=1 1000w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/08/paper-garmin-on-my-wrist.jpeg?w=1280&amp;ssl=1 1280w" sizes="auto, (max-width: 960px) 100vw, 960px" /></a><figcaption>A paper Garmin Forerunner 255S on my hairy arm.</figcaption></figure>



<p class="wp-block-paragraph">Printed without any scaling on US Letter sized paper <a href="https://johnbeales.com/wp-content/uploads/2022/08/Garmin-Forerunner-Size-Comparison.pdf">this PDF</a> should give you an idea of how big the <a href="https://amzn.to/3PYixux" rel="sponsored nofollow">2022 Garmin Forerunner</a> watches will be on your wrist. If you&#8217;re extra-crafty, the extra coloured strips are as wide as depth of each watch so you can make a 3D paper Forerunner to try on. </p>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<div class="wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-fe48e5de wp-block-buttons-is-layout-flex">
<div class="wp-block-button is-style-outline is-style-outline--2"><a class="wp-block-button__link has-vivid-cyan-blue-color has-text-color" href="https://johnbeales.com/wp-content/uploads/2022/08/Garmin-Forerunner-Size-Comparison.pdf">Download PDF</a></div>
</div>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-large"><a href="https://johnbeales.com/wp-content/uploads/2022/08/Garmin-Forerunner-Size-Comparison.pdf"><img data-recalc-dims="1" loading="lazy" decoding="async" width="791" height="1024" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/08/Garmin-Forerunner-Size-Comparison.png?resize=791%2C1024&#038;ssl=1" alt="" class="wp-image-10859" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/08/Garmin-Forerunner-Size-Comparison.png?resize=791%2C1024&amp;ssl=1 791w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/08/Garmin-Forerunner-Size-Comparison.png?resize=232%2C300&amp;ssl=1 232w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/08/Garmin-Forerunner-Size-Comparison.png?resize=768%2C994&amp;ssl=1 768w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/08/Garmin-Forerunner-Size-Comparison.png?resize=1187%2C1536&amp;ssl=1 1187w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/08/Garmin-Forerunner-Size-Comparison.png?resize=1583%2C2048&amp;ssl=1 1583w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/08/Garmin-Forerunner-Size-Comparison.png?resize=580%2C750&amp;ssl=1 580w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/08/Garmin-Forerunner-Size-Comparison.png?resize=495%2C640&amp;ssl=1 495w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/08/Garmin-Forerunner-Size-Comparison.png?resize=394%2C510&amp;ssl=1 394w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/08/Garmin-Forerunner-Size-Comparison.png?resize=309%2C400&amp;ssl=1 309w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/08/Garmin-Forerunner-Size-Comparison.png?resize=247%2C320&amp;ssl=1 247w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/08/Garmin-Forerunner-Size-Comparison.png?resize=742%2C960&amp;ssl=1 742w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/08/Garmin-Forerunner-Size-Comparison.png?resize=773%2C1000&amp;ssl=1 773w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/08/Garmin-Forerunner-Size-Comparison.png?w=1700&amp;ssl=1 1700w" sizes="auto, (max-width: 791px) 100vw, 791px" /></a><figcaption>The printable looks like this, but it&#8217;s a PDF.</figcaption></figure>



<p class="has-small-font-size wp-block-paragraph"><em>Affiliate Links: Product links in this post may, (will probably!), be affiliate links, so I get a small cut of anything purchased using them but you don&#8217;t pay anything extra. If things go well, maybe I&#8217;ll be able to afford a new Garmin watch!</em></p>
<p>The post <a href="https://johnbeales.com/2022/printable-template-to-choose-a-garmin-forerunner-size/">Printable Template to Choose a Garmin Forerunner Size</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/2022/printable-template-to-choose-a-garmin-forerunner-size/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">10856</post-id>	</item>
		<item>
		<title>Other Minds</title>
		<link>https://johnbeales.com/books/other-minds/</link>
					<comments>https://johnbeales.com/books/other-minds/#comments</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sun, 31 Jul 2022 19:32:09 +0000</pubDate>
				<category><![CDATA[biology]]></category>
		<category><![CDATA[cuttlefish]]></category>
		<category><![CDATA[evolution]]></category>
		<category><![CDATA[nonfiction]]></category>
		<category><![CDATA[octopus]]></category>
		<category><![CDATA[philosophy]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=10699</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/other-minds/">Other Minds</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-jetpack-markdown"><h2>Cephalopods &amp; Evolution</h2>
<p>Octopus, Squid, and Cuttlefish of the cephalopod class of animals have well-developed intelligence, but branched evolutionarily from vertebrates before the development of intelligence. They are like alien intelligence on earth. All other intelligent animals developed from an already-intelligent ancestor.</p>
<p>When there were only single-celled organisms they sometimes lived in communities, (as they still do today). Groups of cells communicate chemically, and eventually some communities became one organism, perhaps through a failed cell division, and they continue to communicate. Near the end of the Ediacaran period an evolutionary split occurred, one branch went on to become molluscs, then cephalopods and the other to become vertebrates. The last common ancestor was a bilateral animal and would have had some basic nerves and maybe sense organs, but no organized intelligence or large nervous system.</p>
<p>As the Ediacaran period came to a close and the Cambrian period started, animals began to scavenge and predation started, creating the evolutionary pressure that fueled <a href="https://en.wikipedia.org/wiki/Cambrian_explosion">cambrian explosion</a>.</p>
<h3>Distributed Brains</h3>
<p>Cephalopod brains are extremely different from vertebrate brains. There is more &quot;brain&quot; outside of the brain than in the brain. Parts of the body, for example legs, appear to be self-governing and independent, but work together as a single animal.</p>
<h3>Personality</h3>
<p>Octopus are curious, mischievous creatures with personality, and Cuttlefish transform their colours in ways that appear very individualistic. When captured octopus will mess with their environment, and squirt people who come near their enclosure. Sometimes they squirt with certain people, not just people in general. Behavioural experiments with octopus are very difficult because they do things to the experiment itself, unlike rats or other animals often used in behavioural studies.</p>
<p>Octopus are not thought to be social, but they have been observed to give each other &quot;high-fives&quot; at the <a href="https://www.earthtouchnews.com/natural-world/animal-behaviour/welcome-to-octopolis-an-underwater-battleground-where-octopus-warfare-is-heating-up/">Octopolis</a> site near Australia. This and some other research, (mentioned in the Octopolis chapter near the end of the book), suggest maybe they are more social than originally thought.</p>
<h2>Consciousness, Experience, and Higher-Order Thought</h2>
<p>What is consciousness, exactly? What is it like to be something?</p>
<p>There are competing <em>latecomer</em> and <em>transformation</em> theories of consciousness. The latecomer view says that consciousness developed recently, after things like working memory, whereas the transformation theory says that consciousness pre-dates things like working memory and workspaces. If consciousness is not boolean, but is a scale, it seems like transformation makes more sense. The latecomer view that consciousness is a fairly high-level process logically opens the door to a level of lived experience that doesn&#8217;t qualify as consciousness. Multiple ways to experience the same thing, which feels linked to the idea of <a href="https://en.wikipedia.org/wiki/Subjective_constancy">perceptual constancy</a>, or the ability to recognize something despite viewing it from different angles, or experiencing it in different ways.</p>
<h3>Language is not needed for Higher-Order Thought</h3>
<p>There was a debate about if language was required for higher-order thought. In the 18th century philosopher <a href="https://en.wikipedia.org/wiki/David_Hume">David Hume</a> &quot;looked inside his mind&quot; and saw thoughts, but didn&#8217;t mention words. 200 years later <a href="https://en.wikipedia.org/wiki/John_Dewey">John Dewey</a> suggested that the &quot;thoughts&quot; that Hume saw were words, and in the 20th century <a href="https://en.wikipedia.org/wiki/Lev_Vygotsky">Lev Vygotsky</a> went so far as to suggest that as children learn speech they get conscious thought!</p>
<p>However, baboons, (Chapter 5), only make four sounds, but by hearing those four sounds made by many different individuals they understand the complex social structure of their group, and changes to that structure as it occurs. There is also evidence deaf people in pre-literate societies, (so they wouldn&#8217;t have had a way of having language), lived full lives, (Chapter 6). There&#8217;s even Brother John, a Québecois monk who <a href="https://web-archive.southampton.ac.uk/cogprints.org/612/1/CP-1.html">lost the concept of language for periods of time</a>, bit during those times he had thought and desires, and was able to communicate them to others.</p>
<p>With the evidence of baboons, Brother John, and some studies on birds it becomes clear that language, while very useful for organizing our thoughts, is not required for higher-order thought. Language, inner speech, and thinking about thinking are a way to engage in slow, deliberate Daniel Kahneman <em>System 2</em> thinking. This is where I was surprised to link Other Minds, a philosophy book about octopuses and consciousness, with <a href="https://www.relay.fm/cortex/119">Cortex</a>, a podcast about doing stuff!</p>
<p>At the end of Chapter 5, on colours, Peter Godfrey-Smith says that because cephalopods &quot;language&quot; appears to be colour and skin patterns, and they can&#8217;t see themselves, then they must not be capable of inner dialogue. Inner dialogue would be easier with language, but I suspect that it is possible without language, like higher-order thought.</p>
<h3>Consciousness as a Workspace</h3>
<p>The workspace theory of consciousness suggests that our consciousness is the workspace where we put thoughts that we are working on. Most tasks are handled unconsciously by our nervous system, but when we encounter something particularly novel we have to think about it, so it enters our consciousness. The workspace theory may also be thought of as broadcasting, like an event system in programming, when a new or difficult tasks arrives we say &quot;this is what we&#8217;re working on&quot; so we can think about what we think about, and understand that what we can influence ourselves by, for example, entering a to-do item in <a href="https://www.omnigroup.com/omnifocus/">Omnifocus</a>.</p>
<p>Only having novel experiences rise to the level of actually needing consciousness fits nicely into the theory that <a href="https://www.youtube.com/watch?v=bmr1-K4dfvg">life feels like it&#8217;s passing by quickly when we stick to our routines</a>.</p>
<h3>Change Experience by Interacting With It</h3>
<p>When we interact with the world we change it, and our experience of it, and by keeping an <a href="https://en.wikipedia.org/wiki/Efference_copy">efference copy</a> of our thoughts and interactions we understand that we have changed the world and our experience of it. This is another example of our mind thinking about thought. Some philosophers believe, (Chapter 4), that we don&#8217;t change our experience of the world, that we are simply &quot;rocks in a stream of consciousness,&quot; but this seems silly &#8211; surely we can influence the world, and if we can think about thinking, we must be able to change how we perceive it as well.</p>
<h2>Colour</h2>
<p>Cephalopods, especially cuttlefish, can do amazing things with their colour and texture on their bodies. The book describes in detail how colours are created, but the how, while fascinating, doesn&#8217;t seem as important as the why. Individuals have individual patterns, but there are some themes. Individual cuttlefish even seem to have their own <a href="https://en.wikipedia.org/wiki/Idle_animation">idle animations</a>, which may be an external expression of any random thoughts they have, (or maybe digestive discomfort, we don&#8217;t really know).</p>
<p>We don&#8217;t truly know why cephalopods have such an amazing ability to change colour. They use it for camouflage, but it seems like it is also used to communicate, especially to confuse or threaten other species.</p>
<p><div class="jetpack-video-wrapper"><iframe loading="lazy" class="youtube-player" width="960" height="540" src="https://www.youtube.com/embed/rbDzVzBsbGM?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=en-US&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe></div></p>
<p>Something particularly weird is that it doesn&#8217;t look like cephalopod eyes can see colour, so why do they make so much colour? On the other hand, cephalopods have light receptors in their skin all over their bodies, which could be used with the colour-forming systems in the body to understand colour in their environment.</p>
<h2>Short Lives &amp; Aging</h2>
<p>Cephalopods live remarkably short lives. Octopus only ever have one brood of babies, cuttlefish die after their first breeding season. This is strange among large-brained animals, and led to a fascinating discussion of aging and were it might come from.</p>
<h3>Why do we age?</h3>
<p>Individual cells come &amp; go, but a community of cells can, (and do), live indefinitely. Since animals are just large communities of cells, why do they age, when communities of single-celled organisms don&#8217;t?</p>
<p>It turns out that there&#8217;s a theory that makes a lot of sense for organisms that reproduce at a mostly constant rate throughout their lives, (like people, and many animals). The theory is that organisms started able to live forever, but that every year some number of the community are eaten or die in accidents. If this chance of death is relatively constant eventually math catches up with most individuals and they are killed. If there&#8217;s a relatively constant reproduction rate, more young are produced by younger members of the community, because younger members haven&#8217;t been killed yet, and any evolutionary mutations that negatively affect old individuals aren&#8217;t weeded out because individuals die from other reasons before those mutations cause problems, and by that time they&#8217;ve had lots of babies to pass the mutations on to. So aging is a collection of evolutionary mutations that affect old individuals.</p>
<h4>But Trees?</h4>
<p>Trees, and organisms that increase their reproductive power with age, may have the opposite evolutionary force at play.</p>
<h4>Short lives in Cephalopods</h4>
<p>If individuals need to live for quite a while to spread their young at a constant reproductive rate, then evolution would reward species with a large chance of accidental death if they reproduce as fast as possible. Since cephalopods have no shells, are soft, delicious, and have to wander around and hunt, they have a high chance of being killed early in life, so it seems that they have evolved to have an all-in approach to reproduction where they go so hard the first time that it kills them.</p>
<h2>Conclusion</h2>
<p>I&#8217;m pretty sure this is the first philosophy book that I read, and it is fascinating. The link between consciousness, higher-order thought, organized thought, and recognition is particularly interesting and I haven&#8217;t been able to explain, or fully comprehend, it like I would like to. The discussion of aging near the end of the book is a hidden gem that makes the silicon-valley billionaires who are trying to solve aging seem slightly less eccentric.</p>
<p>It took me a while to get through Other Minds, but I&#8217;m glad I did. There is a lot to think about, and I understand consciousness better, or at least understand some questions to ask.</p>
</div>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="333" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/07/book-10699-cover.jpg?fit=333%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/07/book-10699-cover.jpg?w=333&amp;ssl=1 333w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/07/book-10699-cover.jpg?resize=200%2C300&amp;ssl=1 200w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/07/book-10699-cover.jpg?resize=266%2C400&amp;ssl=1 266w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/07/book-10699-cover.jpg?resize=213%2C320&amp;ssl=1 213w" sizes="auto, (max-width: 333px) 100vw, 333px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>


<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-0-374-53719-7/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-0-374-53719-7/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-0-374-53719-7/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div><p>The post <a href="https://johnbeales.com/books/other-minds/">Other Minds</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/other-minds/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">10699</post-id>	</item>
		<item>
		<title>Troubled Blood</title>
		<link>https://johnbeales.com/books/troubled-blood/</link>
					<comments>https://johnbeales.com/books/troubled-blood/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Mon, 04 Apr 2022 00:54:17 +0000</pubDate>
				<category><![CDATA[cormoran strike]]></category>
		<category><![CDATA[mystery]]></category>
		<category><![CDATA[thriller]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=7759</guid>

					<description><![CDATA[<p>I feel conflicted and guilty because I enjoyed this book. I like Cormoran, Robin, and the offices on Denmark street, they feel comfortable, and after several books in the series somewhat like a home. Unfortunately [[J. K. Rowling]] has become poisonous and I don&#8217;t want to support her. I borrowed this as an ebook from [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/troubled-blood/">Troubled Blood</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I feel conflicted and guilty because I enjoyed this book. I like Cormoran, Robin, and the offices on Denmark street, they feel comfortable, and after several books in the series somewhat like a home. Unfortunately [[J. K. Rowling]] has become poisonous and I don&#8217;t want to support her. I borrowed this as an ebook from the library so she probably gets some portion of a penny or something. Part of me wishes there were no more books in the series, but alas it looks like another will be published in August, maybe I can get the actual hard copy from the library to avoid giving her any more money.</p>



<p class="wp-block-paragraph">I often felt this book was as much or more about Robin as Cormoran. IIRC the series didn&#8217;t start out that way.</p>



<h2 class="wp-block-heading">Transphobia</h2>



<p class="wp-block-paragraph">When <em>Troubled Blood</em> came out there was some outcry about it being transphobic, and after reading it I can see why. One of the main &#8220;bad guys&#8221; dresses up in drag to approach women before killing them, which feels like something that may only exist in a transphobic person&#8217;s mind and have never happened in the real world. It also fits nicely into the current transphobic narrative around sports, where some people are making a fuss about trans athletes competing in women&#8217;s sports as an &#8220;attack&#8221; on &#8220;real&#8221; women.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="307" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/04/book-7759-cover.jpg?fit=307%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/04/book-7759-cover.jpg?w=307&amp;ssl=1 307w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/04/book-7759-cover.jpg?resize=184%2C300&amp;ssl=1 184w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/04/book-7759-cover.jpg?resize=246%2C400&amp;ssl=1 246w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2022/04/book-7759-cover.jpg?resize=196%2C320&amp;ssl=1 196w" sizes="auto, (max-width: 307px) 100vw, 307px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>


<p class="dt_booklinks"><a href="http://www.amazon.com/dp/0751579939/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/0751579939/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/0751579939/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div><p>The post <a href="https://johnbeales.com/books/troubled-blood/">Troubled Blood</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/troubled-blood/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">7759</post-id>	</item>
		<item>
		<title>The Bomber Mafia</title>
		<link>https://johnbeales.com/books/the-bomber-mafia/</link>
					<comments>https://johnbeales.com/books/the-bomber-mafia/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sun, 19 Dec 2021 21:08:04 +0000</pubDate>
				<category><![CDATA[bombing]]></category>
		<category><![CDATA[history]]></category>
		<category><![CDATA[nonfiction]]></category>
		<category><![CDATA[world war two]]></category>
		<category><![CDATA[wwii]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=6859</guid>

					<description><![CDATA[<p>I didn&#8217;t really try to learn from it &#8211; more took it as a story. I was interested to see that Beirne Lay was mentioned in the section on the Schweinfurt/Regensburg raid. I have his book I&#8217;ve had it on my to-read list for a while now. My only knowledge of Schweinfurt before this was [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/the-bomber-mafia/">The Bomber Mafia</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>I didn&#8217;t really try to learn from it &#8211; more took it as a story. I was interested to see that <a href="https://en.wikipedia.org/wiki/Beirne_Lay_Jr.">Beirne Lay</a> was mentioned in the section on the Schweinfurt/Regensburg raid. I have his book <em>I&#8217;ve had it</em> on my to-read list for a while now. My only knowledge of Schweinfurt before this was as a city where I walked a long way to the youth hostel only to find it closed.</p>
<p>The conclusion wasn&#8217;t super satisfying. In the end, in WWII, practicality carried the day, and since the Norden bombsight didn&#8217;t live up to its promise, and relied on cloud-free skies, that meant flattening or burning whole cities. The idea that modern technology has made high-altitude precision bombing possible is discussed briefly, along with the question of even though you can do it, should you? But I feel like the discussion should have been expanded or removed completely.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="336" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/12/book-6859-cover.jpg?fit=336%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/12/book-6859-cover.jpg?w=336&amp;ssl=1 336w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/12/book-6859-cover.jpg?resize=202%2C300&amp;ssl=1 202w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/12/book-6859-cover.jpg?resize=269%2C400&amp;ssl=1 269w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/12/book-6859-cover.jpg?resize=215%2C320&amp;ssl=1 215w" sizes="auto, (max-width: 336px) 100vw, 336px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-0316296618/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-0316296618/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-0316296618/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-bomber-mafia/">The Bomber Mafia</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-bomber-mafia/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6859</post-id>	</item>
		<item>
		<title>Harry Potter and the Philosopher&#8217;s Stone</title>
		<link>https://johnbeales.com/books/harry-potter-and-the-philosophers-stone/</link>
					<comments>https://johnbeales.com/books/harry-potter-and-the-philosophers-stone/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sun, 19 Dec 2021 21:04:28 +0000</pubDate>
				<category><![CDATA[fantasy]]></category>
		<category><![CDATA[fiction]]></category>
		<category><![CDATA[harry potter]]></category>
		<category><![CDATA[novel]]></category>
		<category><![CDATA[young adult]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=6856</guid>

					<description><![CDATA[<p>I re-read the first Harry Potter book recently, and it&#8217;s pretty different reading it as an adult. Many people get upset that the school is so reckless letting children run around fighting some of the most powerful wizards in the world, but I can let that go because without it the story wouldn&#8217;t happen, and [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/harry-potter-and-the-philosophers-stone/">Harry Potter and the Philosopher&#8217;s Stone</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>I re-read the first Harry Potter book recently, and it&#8217;s pretty different reading it as an adult. Many people get upset that the school is so reckless letting children run around fighting some of the most powerful wizards in the world, but I can let that go because without it the story wouldn&#8217;t happen, and the target audience &#8211; people Harry&#8217;s age &#8211; identify with Harry and can dream of accomplishing the types of things that he does.</p>
<p>However, between reading Harry Potter as a teenager and young adult, and reading Harry Potter now, I have become more aware of things like climate change and animal welfare, and there are some real animal welfare, and by extension sustainability, problems in the wizarding world.</p>
<ul>
<li>A lot of animal parts are used in potions. I believe animal parts from rare animals are highly prized.</li>
<li>Many meals are extremely meat-heavy.</li>
<li>Most students have pets. The majority of these pets are wild animals.</li>
<li>Owls run the mail system, and don&#8217;t seem to be doing it of their own free will.</li>
<li>Live bats are used for decoration.</li>
<li>Christmas crackers have mice in them.</li>
<li>A giant three-headed dog is kept in an indoor corridor for months without ever going outside!</li>
</ul>
<p>&nbsp;</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="334" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/12/book-6856-cover.jpg?fit=334%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/12/book-6856-cover.jpg?w=334&amp;ssl=1 334w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/12/book-6856-cover.jpg?resize=200%2C300&amp;ssl=1 200w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/12/book-6856-cover.jpg?resize=267%2C400&amp;ssl=1 267w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/12/book-6856-cover.jpg?resize=214%2C320&amp;ssl=1 214w" sizes="auto, (max-width: 334px) 100vw, 334px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-1408855898/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-1408855898/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-1408855898/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/harry-potter-and-the-philosophers-stone/">Harry Potter and the Philosopher&#8217;s Stone</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/harry-potter-and-the-philosophers-stone/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6856</post-id>	</item>
		<item>
		<title>L&#8217;orangeraie</title>
		<link>https://johnbeales.com/books/lorangeraie/</link>
					<comments>https://johnbeales.com/books/lorangeraie/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Mon, 29 Nov 2021 15:37:46 +0000</pubDate>
				<category><![CDATA[fiction]]></category>
		<category><![CDATA[french]]></category>
		<category><![CDATA[novel]]></category>
		<category><![CDATA[short]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=6732</guid>

					<description><![CDATA[<p>Read on the recommendation of my French teacher, L&#8217;Orangeraie is a moving short novel about a boy who grows up in Afghanistan and is profoundly touched by the war there. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/lorangeraie/">L&#8217;orangeraie</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Read on the recommendation of my French teacher, L&#8217;Orangeraie is a moving short novel about a boy who grows up in Afghanistan and is profoundly touched by the war there.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="284" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/11/book-6732-cover.jpg?fit=284%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/11/book-6732-cover.jpg?w=284&amp;ssl=1 284w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/11/book-6732-cover.jpg?resize=170%2C300&amp;ssl=1 170w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/11/book-6732-cover.jpg?resize=227%2C400&amp;ssl=1 227w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/11/book-6732-cover.jpg?resize=182%2C320&amp;ssl=1 182w" sizes="auto, (max-width: 284px) 100vw, 284px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-2-89694-231-2/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-2-89694-231-2/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-2-89694-231-2/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/lorangeraie/">L&#8217;orangeraie</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/lorangeraie/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6732</post-id>	</item>
		<item>
		<title>The Four Tendencies</title>
		<link>https://johnbeales.com/books/the-four-tendencies/</link>
					<comments>https://johnbeales.com/books/the-four-tendencies/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Mon, 29 Nov 2021 15:29:01 +0000</pubDate>
				<category><![CDATA[nonfiction]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[self-help]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=6730</guid>

					<description><![CDATA[<p>According to The Four Tendencies I am a Rebel. Now the challenge is to not rebel against doing all the things! Challenge accepted. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/the-four-tendencies/">The Four Tendencies</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>According to <em>The Four Tendencies</em> I am a Rebel. Now the challenge is to not rebel against doing all the things! Challenge accepted.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-1524760915/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-1524760915/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-1524760915/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-four-tendencies/">The Four Tendencies</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-four-tendencies/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6730</post-id>	</item>
		<item>
		<title>Simplicity Parenting</title>
		<link>https://johnbeales.com/books/simplicity-parenting/</link>
					<comments>https://johnbeales.com/books/simplicity-parenting/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Mon, 29 Nov 2021 14:57:33 +0000</pubDate>
				<category><![CDATA[make it simple]]></category>
		<category><![CDATA[minimalism]]></category>
		<category><![CDATA[nonfiction]]></category>
		<category><![CDATA[parenting]]></category>
		<category><![CDATA[self-help]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=6728</guid>

					<description><![CDATA[<p>Author Kim John Payne makes the case we should stop jamming so much stuff in our kids lives, and enforce free time for them to explore and play freely. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/simplicity-parenting/">Simplicity Parenting</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Author Kim John Payne makes the case we should stop jamming so much stuff in our kids lives, and enforce free time for them to explore and play freely.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-0345507983/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-0345507983/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-0345507983/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/simplicity-parenting/">Simplicity Parenting</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/simplicity-parenting/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6728</post-id>	</item>
		<item>
		<title>The Brave Learner</title>
		<link>https://johnbeales.com/books/the-brave-learner/</link>
					<comments>https://johnbeales.com/books/the-brave-learner/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 24 Nov 2021 20:35:45 +0000</pubDate>
				<category><![CDATA[children]]></category>
		<category><![CDATA[covid-19]]></category>
		<category><![CDATA[homeschooling]]></category>
		<category><![CDATA[nonfiction]]></category>
		<category><![CDATA[pandemic]]></category>
		<category><![CDATA[parenting]]></category>
		<category><![CDATA[teaching]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=6701</guid>

					<description><![CDATA[<p>We have been homeschooling since the start of the first full pandemic school year in fall 2020. This past summer, when making decisions about future schooling plans, I read Julie Bogart&#8217;s The Brave Learner. Thanks to The Brave Learner I now think of homeschooling, at least on a high level, as something to look forward to and [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/the-brave-learner/">The Brave Learner</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>We have been homeschooling since the start of the first full pandemic school year in fall 2020. This past summer, when making decisions about future schooling plans, I read Julie Bogart&#8217;s <em>The Brave Learner</em>. Thanks to <em>The Brave Learner</em> I now think of homeschooling, at least on a high level, as something to look forward to and enjoy. This doesn&#8217;t mean I have started relishing preparing lesson plans, and I, by far, do the minority of the homeschool work in our household, but at least everything isn&#8217;t dread, and I know that homeschooling, despite rough moments, can be great.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="333" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/11/book-6701-cover.jpg?fit=333%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/11/book-6701-cover.jpg?w=333&amp;ssl=1 333w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/11/book-6701-cover.jpg?resize=200%2C300&amp;ssl=1 200w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/11/book-6701-cover.jpg?resize=266%2C400&amp;ssl=1 266w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/11/book-6701-cover.jpg?resize=213%2C320&amp;ssl=1 213w" sizes="auto, (max-width: 333px) 100vw, 333px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-0143133223/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-0143133223/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-0143133223/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-brave-learner/">The Brave Learner</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-brave-learner/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6701</post-id>	</item>
		<item>
		<title>Laravel Envoyer Notifications in Zoho Cliq</title>
		<link>https://johnbeales.com/2021/laravel-envoyer-notifications-in-zoho-cliq/</link>
					<comments>https://johnbeales.com/2021/laravel-envoyer-notifications-in-zoho-cliq/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 22 Sep 2021 13:19:10 +0000</pubDate>
				<category><![CDATA[code]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[bot]]></category>
		<category><![CDATA[chat]]></category>
		<category><![CDATA[chatbot]]></category>
		<category><![CDATA[envoyer]]></category>
		<category><![CDATA[integration]]></category>
		<category><![CDATA[laravel]]></category>
		<category><![CDATA[webhooks]]></category>
		<category><![CDATA[zoho]]></category>
		<category><![CDATA[zoho cliq]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?p=6368</guid>

					<description><![CDATA[<p>I recently switched a project from a home-grown deployment script to Laravel Envoyer. While the homegrown script could maybe have been adapted it would have taken time, and had to be maintained, and Envoyer offers some useful extras like Slack, Discord, and Microsoft Teams integration, and heartbeat monitoring. Except we don&#8217;t use Slack, Discord, or [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/2021/laravel-envoyer-notifications-in-zoho-cliq/">Laravel Envoyer Notifications in Zoho Cliq</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I recently switched a project from a home-grown deployment script to <a href="https://envoyer.io">Laravel Envoyer</a>. While the homegrown script could maybe have been adapted it would have taken time, and had to be maintained, and Envoyer offers some useful extras like Slack, Discord, and Microsoft Teams integration, and heartbeat monitoring.</p>



<p class="wp-block-paragraph">Except we don&#8217;t use Slack, Discord, or Teams, we use <a href="https://www.zoho.com">Zoho</a>&#8216;s Slack competitor, <a href="https://www.zoho.com/cliq/">Cliq</a>.</p>



<p class="wp-block-paragraph">Comparing Slack&#8217;s web hooks with Cliq we see that a bot is needed in Cliq, but making one is super-easy, on the order of four or five clicks.</p>



<p class="wp-block-paragraph">Once there is a bot it can <a href="https://www.zoho.com/cliq/help/platform/bot-incomingwebhookhandler.html">receive web hooks</a>. Figuring out the right way to provide an authentication token was weird, there is not clear documentation, but the reply from Eric Hirst in in the <a href="https://help.zoho.com/portal/en/community/topic/cliq-bots-get-notifications-about-any-action-on-an-application-with-the-incoming-webhook-handler">Zoho forum thread announcing Cliq bots</a> has a solution that works.</p>



<p class="wp-block-paragraph">Now we can receive web hooks, I tried putting the bot&#8217;s web hook URL in for both Slack notifications and Discord notifications in Envoyer, and I got notifications. Both systems expect a POSTed JSON object, so that&#8217;s what they get. The Discord one is simpler one of the properties is simply markdown text, which Cliq understands, so the Cliq incoming web hook handler needs to grab that markdown text and return it so the bot will post the message in Cliq.</p>



<pre class="wp-block-code language-javascript"><code>// Configure the bot's incoming webhook URL in any third-party service to trigger this handler.
response = Map();
message = body.toMap();
if(message.containKey('content'))
{
	response.put("text",message.get('content'));

	// If you want the bot to post to one of your channels, and want it to appear
	// as the bot posting, add the bot info like this. Otherwise it the message 
	// will be "from" the person who owns the auth token, with a small "bot" flag next to it.
	response.put('bot',{"name":"Envoyer","image":"https://envoyer.io/img/favicons/apple-touch-icon-120x120.png"});

	// If you want to post to a channel this is how. If you don't do this the bot
	// will simply post the message to any chats it has open.
	zoho.cliq.postToChannel('general',response);
}
return response;

</code></pre>



<p class="wp-block-paragraph">The beauty of simply dumping the markdown into the chat is that this simple code handles all notifications from Envoyer, including successful &amp; failed deployments and heartbeat notifications. You can look for specific text and alter your notification if you want, (I have a big headline for successful deployments), but it&#8217;s not needed.<br /><br />It would be easier to test this if there was a way to trigger a test notification in Envoyer, but Envoyer isn&#8217;t really something to tinker with, it&#8217;s supposed to just work. It would also be great if Envoyer could support Zoho Cliq directly, but I&#8217;m not sure many people in the Laravel community are using Zoho.</p>



<p class="wp-block-paragraph">So now we have Envoyer notifications in Zoho Cliq in our organization. If you&#8217;re one of the few Laravel / Zoho unicorns out there like me you can have them too.</p>
<p>The post <a href="https://johnbeales.com/2021/laravel-envoyer-notifications-in-zoho-cliq/">Laravel Envoyer Notifications in Zoho Cliq</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/2021/laravel-envoyer-notifications-in-zoho-cliq/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6368</post-id>	</item>
		<item>
		<title>Ru</title>
		<link>https://johnbeales.com/books/ru/</link>
					<comments>https://johnbeales.com/books/ru/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Fri, 25 Jun 2021 21:27:03 +0000</pubDate>
				<category><![CDATA[fiction]]></category>
		<category><![CDATA[french]]></category>
		<category><![CDATA[historical fiction]]></category>
		<category><![CDATA[history]]></category>
		<category><![CDATA[vietnam]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=6029</guid>

					<description><![CDATA[<p>I&#8217;m trying to improve my French comprehension and vocabulary. This was suggested as part of the book club for the course I signed up for. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/ru/">Ru</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>I&#8217;m trying to improve my French comprehension and vocabulary. This was suggested as part of the book club for the course I signed up for.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="279" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/06/book-6029-cover.jpg?fit=279%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/06/book-6029-cover.jpg?w=279&amp;ssl=1 279w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/06/book-6029-cover.jpg?resize=167%2C300&amp;ssl=1 167w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/06/book-6029-cover.jpg?resize=223%2C400&amp;ssl=1 223w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/06/book-6029-cover.jpg?resize=179%2C320&amp;ssl=1 179w" sizes="auto, (max-width: 279px) 100vw, 279px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-2764804636/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-2764804636/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-2764804636/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/ru/">Ru</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/ru/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6029</post-id>	</item>
		<item>
		<title>The Hidden Life of Trees</title>
		<link>https://johnbeales.com/books/the-hidden-life-of-trees/</link>
					<comments>https://johnbeales.com/books/the-hidden-life-of-trees/#comments</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Mon, 29 Mar 2021 00:16:09 +0000</pubDate>
				<category><![CDATA[environmentalism]]></category>
		<category><![CDATA[forests]]></category>
		<category><![CDATA[nature]]></category>
		<category><![CDATA[nonfiction]]></category>
		<category><![CDATA[trees]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=5423</guid>

					<description><![CDATA[<p>With a full title of The Hidden Life of Trees: What They Feel, How They Communicate &#8211; Discoveries from a Secret World this book is going to be amazing or terrible. We got lucky. Part of The Overstory is about a forest scientist who discovers how trees communicate and writes a book about it. I believe that The [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/the-hidden-life-of-trees/">The Hidden Life of Trees</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>With a full title of <em>The Hidden Life of Trees: What They Feel, How They Communicate &#8211; Discoveries from a Secret World</em> this book is going to be amazing or terrible. We got lucky. Part of <a href="https://johnbeales.com/books/the-overstory/"><em>The Overstory</em></a> is about a forest scientist who discovers how trees communicate and writes a book about it. I believe that <em>The Hidden Life of Trees</em> is the inspiration for that book-within-a-book from <em>The Overstory.</em></p>
<p><i>The Hidden Life of Trees</i> starts out with a bang describing several mechanisms that trees use to communicate with each other in forest settings. We go on to a deep dive into many fascinating aspects of trees and forests that I didn&#8217;t know, despite growing up around forests and foresters. The book wraps up with a passionate argument for managing forests in a more wholesome way than most forests are managed now.</p>
<p>In some cases the author Peter Wohlleben ascribes more intelligence and emotion to trees than I personally believe they actually have, but that doesn&#8217;t take away from the arguments showing that as a society we know much less than we think we do about trees and we should treat them, and forests, better.</p>
<p>As I was reading <i>The Hidden Life of Trees</i> I took a bike ride that went through Angrignon Park here in Montreal, where I was surprised to find a scene that remind me of my childhood: piles of cut logs. It turns out that Montreal is <a href="http://ville.montreal.qc.ca/pls/portal/docs/PAGE/M_CHANTIER_FR/MEDIA/DOCUMENTS/AVIS_ANGRIGNON_ABATTAGE_FR%CANES.PDF">cutting 4000 trees from the forested areas of Angrignon Park</a>. This is mostly to control <a href="https://en.wikipedia.org/wiki/Emerald_ash_borer">Emerald Ash Borer</a>, but also to remove &#8220;dangerous&#8221; trees. Some of the trees are being turned into lumber for use by the city, and others are being chipped and returned to the forested areas of the park. After reading <i>The Hidden Life of Trees</i> I wonder if this is the best approach, and have so many questions. For example, if the goal is to get rid of of Emerald Ash Borer then why are any cut trees being returned to the forest? If it is ok to return trees to the forest shouldn&#8217;t they all be returned? If trees are to be returned to the forest why use the fuel to chip them when nature will decompose the trees for us in a way that increases biodiversity?</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="365" height="499" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/03/book-5423-cover.jpg?fit=365%2C499&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/03/book-5423-cover.jpg?w=365&amp;ssl=1 365w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/03/book-5423-cover.jpg?resize=219%2C300&amp;ssl=1 219w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/03/book-5423-cover.jpg?resize=293%2C400&amp;ssl=1 293w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/03/book-5423-cover.jpg?resize=234%2C320&amp;ssl=1 234w" sizes="auto, (max-width: 365px) 100vw, 365px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/9781771642484/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/9781771642484/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/9781771642484/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-hidden-life-of-trees/">The Hidden Life of Trees</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-hidden-life-of-trees/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5423</post-id>	</item>
		<item>
		<title>The Overstory</title>
		<link>https://johnbeales.com/books/the-overstory/</link>
					<comments>https://johnbeales.com/books/the-overstory/#comments</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sun, 28 Mar 2021 23:04:43 +0000</pubDate>
				<category><![CDATA[environment]]></category>
		<category><![CDATA[environmentalism]]></category>
		<category><![CDATA[fiction]]></category>
		<category><![CDATA[forests]]></category>
		<category><![CDATA[novel]]></category>
		<category><![CDATA[trees]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=5420</guid>

					<description><![CDATA[<p>With a lot of great reviews The Overstory had a lot to live up to, and it mostly did. I was not engaged by the final part of the story as much as I was by the middle, but maybe that&#8217;s by design, and after reading some other post-read reviews I realize that there is a [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/the-overstory/">The Overstory</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>With a lot of great reviews <em>The Overstory</em> had a lot to live up to, and it mostly did. I was not engaged by the final part of the story as much as I was by the middle, but maybe that&#8217;s by design, and after reading some other post-read reviews I realize that there is a certain beauty to the final section that I had missed in my reading.</p>
<p>Thing I learned that shocked me most is that clearcuts are doused with herbicide after they&#8217;re cut to kill all plant life. This allows the forest managers to plant stands of single species of trees, which are easier to harvest in the future. As an <a href="https://johnbeales.com/category/garden/">avid</a> <a href="https://www.flickr.com/search/?sort=date-taken-desc&amp;safe_search=1&amp;tags=garden&amp;user_id=28501801%40N00&amp;view_all=1">gardener</a> this sounds suspiciously like the mono crop agriculture that has been sucking the life out of farmland for the last century. I hoped at first that using herbicides on forests was an invention for the novel, but sadly <a href="https://www.fs.fed.us/pnw/pubs/journals/pnw_2018_peter001.pdf">its not</a>, not <a href="https://www.cbc.ca/news/canada/sudbury/herbicide-spraying-glyphosate-roundup-northern-ontario-forests-1.5191978">even</a> in <a href="https://www.cbc.ca/news/canada/new-brunswick/tourism-businesses-in-northern-nb-say-they-re-struggling-because-of-forestry-operations-1.5260086">Canada</a>.</p>
<p><em>The Overstory</em> leaves me wanting to do something about how humans treat the natural world and forests especially. I don&#8217;t have concrete plans yet to do anything, but maybe there is some guerrilla tree planting in my future. I did get <em>The Secret Life of Trees</em> from the library read that next.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="333" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/03/book-5420-cover.jpg?fit=333%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/03/book-5420-cover.jpg?w=333&amp;ssl=1 333w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/03/book-5420-cover.jpg?resize=200%2C300&amp;ssl=1 200w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/03/book-5420-cover.jpg?resize=266%2C400&amp;ssl=1 266w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/03/book-5420-cover.jpg?resize=213%2C320&amp;ssl=1 213w" sizes="auto, (max-width: 333px) 100vw, 333px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-0-393-35668-7/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-0-393-35668-7/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-0-393-35668-7/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-overstory/">The Overstory</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-overstory/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5420</post-id>	</item>
		<item>
		<title>The Ballad of Songbirds and Snakes</title>
		<link>https://johnbeales.com/books/the-ballad-of-songbirds-and-snakes/</link>
					<comments>https://johnbeales.com/books/the-ballad-of-songbirds-and-snakes/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sun, 03 Jan 2021 14:55:26 +0000</pubDate>
				<category><![CDATA[dystopian]]></category>
		<category><![CDATA[fiction]]></category>
		<category><![CDATA[hunger games]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=5044</guid>

					<description><![CDATA[<p>Hunger games prequel. I hoped to like Snow, but well, he&#8217;s snow. It&#8217;s kind of long, but I found it tough to put down. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/the-ballad-of-songbirds-and-snakes/">The Ballad of Songbirds and Snakes</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Hunger games prequel. I hoped to like Snow, but well, he&#8217;s snow. It&#8217;s kind of long, but I found it tough to put down.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="324" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/01/book-5044-cover.jpg?fit=324%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/01/book-5044-cover.jpg?w=324&amp;ssl=1 324w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/01/book-5044-cover.jpg?resize=194%2C300&amp;ssl=1 194w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/01/book-5044-cover.jpg?resize=259%2C400&amp;ssl=1 259w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/01/book-5044-cover.jpg?resize=207%2C320&amp;ssl=1 207w" sizes="auto, (max-width: 324px) 100vw, 324px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/9780702300172/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/9780702300172/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/9780702300172/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-ballad-of-songbirds-and-snakes/">The Ballad of Songbirds and Snakes</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-ballad-of-songbirds-and-snakes/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5044</post-id>	</item>
		<item>
		<title>Warlight</title>
		<link>https://johnbeales.com/books/warlight/</link>
					<comments>https://johnbeales.com/books/warlight/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sun, 03 Jan 2021 14:17:10 +0000</pubDate>
				<category><![CDATA[fiction]]></category>
		<category><![CDATA[post-war]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=5037</guid>

					<description><![CDATA[<p>This book is written in 2, (or 3?), parts, and I fell in love with the first part. It&#8217;s a somewhat tragic but romantic story of a kid making his way in post-war London with a fascinating cast of characters. But the rest of the book is weird and disjointed. While the first part is [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/warlight/">Warlight</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>This book is written in 2, (or 3?), parts, and I fell in love with the first part. It&#8217;s a somewhat tragic but romantic story of a kid making his way in post-war London with a fascinating cast of characters.</p>
<p>But the rest of the book is weird and disjointed. While the first part is completely narrated by the kid, the second part is, I think, sometimes narrated by him but sometimes narrated by an omniscient voice that just appears to narrate sometimes. Or maybe the narrator is still the, (now grown up), kid but he somehow knows stuff that he probably shouldn&#8217;t know. I&#8217;m not sure if this was done on purpose or if Michael Ondaatje wasn&#8217;t sure how to put the rest of the story together. Maybe, because the kid&#8217;s life is disjointed and doesn&#8217;t turn out how we want it Mr. Ondaatje is doing the same thing with the way he tells the story. If that is the case it was not satisfying to me as the reader, but did disturb my perception of the story to mirror how the narrator&#8217;s life was shaken up.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="324" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/01/book-5037-cover.jpg?fit=324%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/01/book-5037-cover.jpg?w=324&amp;ssl=1 324w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/01/book-5037-cover.jpg?resize=194%2C300&amp;ssl=1 194w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/01/book-5037-cover.jpg?resize=259%2C400&amp;ssl=1 259w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2021/01/book-5037-cover.jpg?resize=207%2C320&amp;ssl=1 207w" sizes="auto, (max-width: 324px) 100vw, 324px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/9780525562962/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/9780525562962/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/9780525562962/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/warlight/">Warlight</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/warlight/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5037</post-id>	</item>
		<item>
		<title>Celtina: La terre des Promesses</title>
		<link>https://johnbeales.com/books/celtina-la-terre-des-promesses/</link>
					<comments>https://johnbeales.com/books/celtina-la-terre-des-promesses/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Tue, 15 Dec 2020 14:14:32 +0000</pubDate>
				<category><![CDATA[celtic]]></category>
		<category><![CDATA[druid]]></category>
		<category><![CDATA[fantasy]]></category>
		<category><![CDATA[young adult]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=4958</guid>

					<description><![CDATA[<p>The library is offering bundles of books pre-picked for certain groups of people, so I picked one up for the 8-year old. And it had this novel Celtina: La terre des Promesses which was beyond the reading level of the 8-year old. But my French reading level is higher, and this book is just a [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/celtina-la-terre-des-promesses/">Celtina: La terre des Promesses</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>The library is offering bundles of books pre-picked for certain groups of people, so I picked one up for the 8-year old. And it had this novel <em>Celtina: La terre des Promesses</em> which was beyond the reading level of the 8-year old. But my French reading level is higher, and this book is just a little bit beyond it, so perfect for improving my French comprehension. That&#8217;s how I ended up reading a somewhat-disjointed fantasy novel aimed at pre-teens that relies way too much on <em>deus ex machina</em>. Way too much <em>deus ex machina</em>, pretty much every chapter has some. I&#8217;m also not a fan of the way the protagonist is very often referred to as &#8220;<em>la jeune fille</em>&#8220;, (the young girl), or &#8220;<em>l&#8217;adolescent</em>&#8220;, (the teenager). It is a condescending way to refer to the person who is clearly the hero of the story.</p>
<p><em>La terre des Promesses</em> is the first of a series. I&#8217;m not going to seek out the rest of the series.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="271" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/12/book-4958-cover.jpg?fit=271%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/12/book-4958-cover.jpg?w=271&amp;ssl=1 271w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/12/book-4958-cover.jpg?resize=163%2C300&amp;ssl=1 163w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/12/book-4958-cover.jpg?resize=217%2C400&amp;ssl=1 217w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/12/book-4958-cover.jpg?resize=173%2C320&amp;ssl=1 173w" sizes="auto, (max-width: 271px) 100vw, 271px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/2895492298/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/2895492298/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/2895492298/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/celtina-la-terre-des-promesses/">Celtina: La terre des Promesses</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/celtina-la-terre-des-promesses/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4958</post-id>	</item>
		<item>
		<title>One-Click DevonThink Markdown Journal Entry</title>
		<link>https://johnbeales.com/2020/one-click-devonthink-markdown-journal-entry/</link>
					<comments>https://johnbeales.com/2020/one-click-devonthink-markdown-journal-entry/#comments</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Fri, 23 Oct 2020 14:01:17 +0000</pubDate>
				<category><![CDATA[code]]></category>
		<category><![CDATA[applescript]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[devonthink]]></category>
		<category><![CDATA[macos]]></category>
		<category><![CDATA[productivity]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?p=4521</guid>

					<description><![CDATA[<p>With COVID-19 running wild here in Quebec we are homeschooling this year. One of the ways that the government evaluates the progress of homeschool students is by asking parents to submit a portfolio. Since I&#8217;m primarily responsible for English classes I need to have records. I already use DevonThink as a data repository, so that&#8217;s [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/2020/one-click-devonthink-markdown-journal-entry/">One-Click DevonThink Markdown Journal Entry</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">With COVID-19 running wild here in Quebec we are homeschooling this year. One of the ways that the government evaluates the progress of homeschool students is by asking parents to submit a portfolio. Since I&#8217;m primarily responsible for English classes I need to have records. I already use DevonThink as a data repository, so that&#8217;s where the homeschooling records are going.</p>



<h2 class="wp-block-heading">English Journal</h2>



<p class="wp-block-paragraph">Every time we spend some time working on English I create a journal entry as a new Markdown in Devonthink. I thought about keeping one large document and continually appending to it but several small documents seems more searchable and gives me accurate timestamps and geolocations, (if we ever travel again). The journal entries are all kept in a Homeschool &gt; English Journal group.</p>



<p class="wp-block-paragraph">Since creating a new markdown document several times a week is kind of slow I made a template, and added a button to the menu bar in Devonthink to create a new English Journal entry with one click.</p>



<h2 class="wp-block-heading">Creating a Devonthink Template</h2>



<p class="wp-block-paragraph">As a fairly new Devonthink user this was my first foray into using templates. I assumed there would be some sort of template editor in Devonthink but there isn&#8217;t. You can create an existing document as a template or copy an existing template in Finder. There are also two kinds of templates: normal, and &#8220;smart&#8221; templates. Normal templates aren&#8217;t completely dumb &#8211; they have some placeholders that can be replaced by dynamic values, (things like Date, Time, or the user&#8217;s name). Smart templates are a bundle of files, including an AppleScript file. The AppleScript file is the main file in the template and controls everything. There can be other files in the bundle, (like a template.md file), and the AppleScript file can refer to those files. I ended up with a Smart template, with some minimal smarts.</p>



<p class="clear wp-block-paragraph"><img data-recalc-dims="1" loading="lazy" decoding="async" width="150" height="128" class="wp-image-4522 alignleft" style="width: 150px;" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/10/english-journal-template.png?resize=150%2C128&#038;ssl=1" alt="A screenshot of the directory structure of the English Journal Devonthink template." srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/10/english-journal-template.png?w=488&amp;ssl=1 488w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/10/english-journal-template.png?resize=300%2C256&amp;ssl=1 300w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/10/english-journal-template.png?resize=400%2C341&amp;ssl=1 400w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/10/english-journal-template.png?resize=320%2C273&amp;ssl=1 320w" sizes="auto, (max-width: 150px) 100vw, 150px" />The script in my template opens my &#8220;Home&#8221; database, makes sure the Homeschool &gt; English Journal group exists, then creates a new markdown document in the English Journal group based on the English Journal.md file. The script is relatively simple:</p>



<pre class="wp-block-code lang-applescript"><code>
-- Import helper library
tell application "Finder" to set pathToAdditions to ((path to application id "DNtp" as string) &amp; "Contents:Resources:Template Script Additions.scpt") as alias
set helperLibrary to load script pathToAdditions

-- Get the template file path.
set theTemplateFile to helperLibrary's pathToLocalizedResources() &amp; "English Journal.md"

tell application id "DNtp"
	
	
	-- Open the database.
	set theDatabase to open database "/Users/John/Databases/Home.dtBase2"
	-- Get a reference to the group I want.
	set theLocation to create location "/Homeschool/English Journal" in theDatabase
	
	-- Create the document based on the template file.
	set entry to import theTemplateFile to theLocation placeholders {}
	
	-- Open the new document.
	open tab for record entry
	
end tell</code></pre>



<p class="wp-block-paragraph">The markdown file is pretty simple too. <code>%time%</code> and <code>%longDate%</code> are Devonthink placeholders to put the date &amp; time into the journal entry.</p>



<pre class="wp-block-code language-markdown"><code># English Activity Record
## %time% %longDate%

### Activities
- Pages ### - ### in _Toute ma 3e année_.

### Parent Reading Aloud
</code></pre>



<p class="wp-block-paragraph">I may adjust it to prompt for a title for each entry, and to add my current location to the text of each entry.</p>



<h2 class="wp-block-heading">One-Click Template Use</h2>



<p class="wp-block-paragraph">With a working template bundle, (in ~/Library/Application Support/DEVONthink 3/Templates.noindex), it was time to put a button in the Devonthink menu bar:</p>



<h3 class="wp-block-heading">How to put a template in the Devonthink toolbar:</h3>



<ol class="wp-block-list"><li>Move the template bundle into ~/Library/Application Support/DEVONthink 3/Templates.noindex/Toolbar</li><li>Restart Devonthink</li><li>Go to View &gt; Customize Toolbar in Devonthink</li><li>Drag the &#8220;English&#8221; button to the Toolbar.</li></ol>



<p class="wp-block-paragraph">While View &gt; Customize Toolbar is open you can choose to show the Icon and Text in the toolbar if you want.</p>



<h3 class="wp-block-heading">Set an icon for the toolbar button:</h3>



<p class="wp-block-paragraph">It is possible to set a custom icon for the toolbar button, (by default it&#8217;s a gear). Devonthink has a weird way of setting the icon, (weird in a good way): set the icon of the template bundle in Finder. Devonthink takes whatever icon Finder thinks the template should have and puts it in the toolbar.</p>



<h4 class="wp-block-heading">How to customize a file&#8217;s icon on macOS:</h4>



<ol class="wp-block-list"><li>Open the image you want to use as a custom icon, (in Preview, or wherever).</li><li>Copy the image, (Command-C, or Edit &gt; Copy).</li><li>Option-click the file that will get the custom icon.</li><li>Select &#8220;Get Info&#8221; from the menu.</li><li>Click the file icon in the &#8220;Get Info&#8221; window so it&#8217;s highlighted.</li><li>Command-V to paste the image you copied in Step 2 as the custom icon.</li></ol>



<p class="wp-block-paragraph">If you ever want to remove the custom icon to back to the Get Info window and Command-X to remove it.</p>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="758" height="268" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/10/Screen-Shot-2020-10-22-at-7.32.18-PM.png?resize=758%2C268&#038;ssl=1" alt="" class="wp-image-4526" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/10/Screen-Shot-2020-10-22-at-7.32.18-PM.png?w=758&amp;ssl=1 758w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/10/Screen-Shot-2020-10-22-at-7.32.18-PM.png?resize=300%2C106&amp;ssl=1 300w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/10/Screen-Shot-2020-10-22-at-7.32.18-PM.png?resize=750%2C265&amp;ssl=1 750w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/10/Screen-Shot-2020-10-22-at-7.32.18-PM.png?resize=640%2C226&amp;ssl=1 640w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/10/Screen-Shot-2020-10-22-at-7.32.18-PM.png?resize=510%2C180&amp;ssl=1 510w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/10/Screen-Shot-2020-10-22-at-7.32.18-PM.png?resize=400%2C141&amp;ssl=1 400w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/10/Screen-Shot-2020-10-22-at-7.32.18-PM.png?resize=320%2C113&amp;ssl=1 320w" sizes="auto, (max-width: 758px) 100vw, 758px" /><figcaption>The new &#8220;English&#8221; button in my Devonthink.</figcaption></figure>



<h2 class="wp-block-heading">Mobile Entry?</h2>



<p class="wp-block-paragraph">This system only works on my computer. I&#8217;d like to have a mobile option but in this moment it&#8217;s not a pressing need.</p>
<p>The post <a href="https://johnbeales.com/2020/one-click-devonthink-markdown-journal-entry/">One-Click DevonThink Markdown Journal Entry</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/2020/one-click-devonthink-markdown-journal-entry/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4521</post-id>	</item>
		<item>
		<title>OmniFocus Progress Chart Part 1: Extract &#038; Save Data</title>
		<link>https://johnbeales.com/2020/omnifocus-progress-chart-extract-save-data/</link>
					<comments>https://johnbeales.com/2020/omnifocus-progress-chart-extract-save-data/#comments</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 14 Oct 2020 20:32:03 +0000</pubDate>
				<category><![CDATA[code]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[geektool]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[javascript for automation]]></category>
		<category><![CDATA[jxa]]></category>
		<category><![CDATA[omnifocus]]></category>
		<category><![CDATA[productivity]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?p=4424</guid>

					<description><![CDATA[<p>Measured progress motivates me. I want to see how many things are in my OmniFocus library and if it&#8217;s trending larger or smaller. My desktop has been home to a list of today&#8217;s completed OmniFocus tasks for a long time, and now it&#8217;s home to a pair of charts: remaining items over the last 30 [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/2020/omnifocus-progress-chart-extract-save-data/">OmniFocus Progress Chart Part 1: Extract &#038; Save Data</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Measured progress motivates me. I want to see how many things are in my <a href="https://www.omnigroup.com/omnifocus/">OmniFocus</a> library and if it&#8217;s trending larger or smaller. My desktop has been home to a list of <a href="https://johnbeales.com/2015/show-the-omnifocus-tasks-you-did-today-on-your-desktop/">today&#8217;s completed OmniFocus tasks</a> for a long time, and now it&#8217;s home to a pair of charts: remaining items over the last 30 days, and items completed per day for the last 30 days.</p>



<p class="wp-block-paragraph">The charts are created in 3 steps, and I am breaking these up into two posts:</p>



<ol class="wp-block-list"><li>Extract a snapshot of the status of the database every day, (this post).</li><li>Use that snapshot to create a text-based chart, (next post).</li><li>Show the chart on my desktop, (next post).</li></ol>



<p class="wp-block-paragraph">Steps 1 &amp; 2 are handled by a Javascript for Automation <a href="https://github.com/jbeales/omnifocus-stats">application</a> written in Script Editor. Step 3 is handled by <a href="https://www.tynsoe.org/v2/geektool/">GeekTool</a>. </p>



<h2 class="wp-block-heading">Extracting &amp; Saving the Database Status</h2>



<p class="wp-block-paragraph">There are a few ways to build a program that interacts with other programs on a Mac. For the completed task list I used Automator, but I don&#8217;t like editing Java- or Apple- script in the tiny Automator windows, so I tried out Script Editor. Script Editor lets us create an app bundle with somewhat modularized code, but isn&#8217;t the greatest IDE and crashes more than it should. Save your work often.</p>



<p class="wp-block-paragraph">Applescript is foreign to me so I opted for Javascript for Automation, aka JXA, Apple&#8217;s, (maybe abandoned?), attempt to get a Javascript version of Applescript running. It works ok, but documentation of how it actually works, and what parts of modern Javascript are supported, is hard to find.</p>



<p class="wp-block-paragraph">To extract the data we can use OmniFocus&#8217;s <code>flattenedTasks</code> list, which gets a flattened list of all tasks in the database, then we can filter that list of tasks by status, creation date, completion date, and so on:</p>



<pre class="wp-block-code lang-javascript"><code>// Get the "document" that we need to work with.
const ofdoc = Application('OmniFocus').defaultDocument;

// Get a list of all tasks in the DB.
const tasks = ofdoc.flattenedTasks;
// now tasks.length is the total number of tasks in the DB
// (this will change a lot when you archive old tasks)

// Filter using the .whose method.
const remainingTasks = tasks.whose({
      effectivelyCompleted: false,
      effectivelyDropped: false
});

// ... etc. for completed tasks, and tasks completed/added/dropped in the past day.</code></pre>



<p class="wp-block-paragraph">Filtering with whose is pretty slow so this can&#8217;t be run every few seconds, (it takes several seconds to run), but for now I&#8217;m only updating daily so it&#8217;s fine if it&#8217;s slow.<br /><br />I tried iterating over the tasks and checking the <code>effectivelyCompleted</code> property on each one, thinking it would be faster, but <code>effectivelyCompleted</code> has to send a message to OmniFocus to get a response, and doing that for my entire library is much slower than a single <code>.whose()</code> call.</p>



<p class="wp-block-paragraph">Once all the tasks are filtered the current stats put into a Javascript object, which is <code>.push()</code>&#8216;ed onto the end of a Javascript array of all the stats and stored on disk as a JSON file.</p>



<h2 class="wp-block-heading">Modularizing the code was a hurdle.</h2>



<p class="wp-block-paragraph">I tried using module exports &amp; imports but they don&#8217;t work. It seems like there is an import() function available but I can&#8217;t find what it does. It&#8217;s hard to see what Javascript/ECMAScript features are supported in JXA. Some documentation says that it uses the same Javascript engine as Safari, but if that was true when it was released it doesn&#8217;t appear to be true now. </p>



<p class="wp-block-paragraph">Even without exports &amp; imports the <a href="https://developer.apple.com/library/archive/releasenotes/InterapplicationCommunication/RN-JavaScriptForAutomation/Articles/OSX10-10.html#//apple_ref/doc/uid/TP40014508-CH109-SW1">Release Notes</a> say we can import libraries into our script like so:</p>



<pre class="wp-block-code lang-javascript"><code>// Imports from StatsProcessor.scpt - supposedly. Also, where is StatsProcessor.scpt?
const StatsProcessor = Library("StatsProcessor");</code></pre>



<p class="wp-block-paragraph">The <a href="https://developer.apple.com/library/archive/releasenotes/InterapplicationCommunication/RN-JavaScriptForAutomation/Articles/OSX10-11.html#//apple_ref/doc/uid/TP40014508-CH110-SW1">10.11 Release Notes</a> say that we can put our library scripts into the &#8216;Contents/Library/Script Libraries&#8217; directory of the App we&#8217;re making. I couldn&#8217;t find a way to do this, or even see the Script Libraries folder in Script Editor, but once I moved everything around with finder the library was recognized and the import worked. But this code crashed:</p>



<pre class="wp-block-code lang-javascript"><code>const StatsProcessor = Library("StatsProcessor");
StatsProcessor.anyPublicMethod();</code></pre>



<p class="wp-block-paragraph">Not only did it crash, but it made Script Editor crash as well. Calling any method on an imported library caused a crash. Apparently <a href="https://macscripter.net/viewtopic.php?id=47229&amp;action=new">we need to use a &#8220;compiled&#8221; script</a> &#8211; a .scptd file &#8211; for libraries. This isn&#8217;t documented anywhere that I can find, and there seems to be no way to change between a .scpt and .scptd file, at least not using a GUI. </p>



<p class="wp-block-paragraph">There&#8217;s also no documentation for that a Library actually is and what&#8217;s available when it&#8217;s imported. From what I can see any global function declared in the imported file is available as a method on the imported object.</p>



<p class="wp-block-paragraph">Once the modularization was working it was relatively straightforward to figure out where to store the data, (answer: In ~/Library/Application Support/OmniFocusStats), and save it as desired.<br /><br />Next up: Using the data to make &amp; display a chart.</p>
<p>The post <a href="https://johnbeales.com/2020/omnifocus-progress-chart-extract-save-data/">OmniFocus Progress Chart Part 1: Extract &#038; Save Data</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/2020/omnifocus-progress-chart-extract-save-data/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4424</post-id>	</item>
		<item>
		<title>Paste!</title>
		<link>https://johnbeales.com/2020/paste/</link>
					<comments>https://johnbeales.com/2020/paste/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Tue, 13 Oct 2020 18:47:14 +0000</pubDate>
				<category><![CDATA[code]]></category>
		<category><![CDATA[dom scripting]]></category>
		<category><![CDATA[event phase]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[paste]]></category>
		<category><![CDATA[usability]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?p=4408</guid>

					<description><![CDATA[<p>Once in a while I run into websites that block pasting in password, (or confirm password), fields. Like most bad ideas it doesn&#8217;t happen often but it happens just enough that I no longer want to manually type out the javascript to re-enable pasting. So I made a bookmarklet. Here it is: Paste! Drag it [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/2020/paste/">Paste!</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Once in a while I run into websites that block pasting in password, (or confirm password), fields. Like most <a href="https://www.troyhunt.com/the-cobra-effect-that-is-disabling/">bad ideas</a> it doesn&#8217;t happen often but it happens just enough that I no longer want to manually type out the javascript to re-enable pasting.</p>



<p class="wp-block-paragraph">So I made a bookmarklet. Here it is:</p>



<p class="wp-block-paragraph"><a href="javascript:(function(){var ap=function(e){e.stopImmediatePropagation();return true;};document.addEventListener('paste', ap, true);}());">Paste!</a></p>



<p class="wp-block-paragraph">Drag it to your bookmark toolbar to install it in your browser. When you find a page blocks paste click the bookmark and paste should be restored.</p>



<h2 class="wp-block-heading">How it works</h2>



<p class="wp-block-paragraph">When clicked a bit of Javascript executes that adds an event listener to the <a href="https://developer.mozilla.org/en-US/docs/Web/API/Event/eventPhase">capturing phase</a> of the paste event and stops any further propagation of the event. Because we usually react to the bubble phase of DOM events, and the capture phase comes first, the bookmarklet&#8217;s event listener captures the event, lets the default action happen, and prevents all other JS from listening to it, preventing the web page from blocking your carefully-pasted text. The actual code is a shortened version of the function at <a href="https://www.howtogeek.com/251807/how-to-enable-pasting-text-on-sites-that-block-it/">How to Enable Pasting Text on Sites that Block It</a>.</p>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://johnbeales.com/2020/paste/">Paste!</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/2020/paste/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4408</post-id>	</item>
		<item>
		<title>Morning Star</title>
		<link>https://johnbeales.com/books/morning-star/</link>
					<comments>https://johnbeales.com/books/morning-star/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Fri, 09 Oct 2020 01:06:42 +0000</pubDate>
				<category><![CDATA[fiction]]></category>
		<category><![CDATA[sci-fi]]></category>
		<category><![CDATA[science-fiction]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=4375</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/morning-star/">Morning Star</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-0345539847/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-0345539847/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-0345539847/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/morning-star/">Morning Star</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/morning-star/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4375</post-id>	</item>
		<item>
		<title>Golden Son</title>
		<link>https://johnbeales.com/books/golden-son/</link>
					<comments>https://johnbeales.com/books/golden-son/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Fri, 09 Oct 2020 01:05:45 +0000</pubDate>
				<category><![CDATA[fiction]]></category>
		<category><![CDATA[sci-fi]]></category>
		<category><![CDATA[science-fiction]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=4372</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/golden-son/">Golden Son</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="315" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/10/book-4372-cover.jpg?fit=315%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/10/book-4372-cover.jpg?w=315&amp;ssl=1 315w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/10/book-4372-cover.jpg?resize=189%2C300&amp;ssl=1 189w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/10/book-4372-cover.jpg?resize=252%2C400&amp;ssl=1 252w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/10/book-4372-cover.jpg?resize=202%2C320&amp;ssl=1 202w" sizes="auto, (max-width: 315px) 100vw, 315px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-0345539816/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-0345539816/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-0345539816/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/golden-son/">Golden Son</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/golden-son/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4372</post-id>	</item>
		<item>
		<title>Atomic Habits</title>
		<link>https://johnbeales.com/books/atomic-habits/</link>
					<comments>https://johnbeales.com/books/atomic-habits/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sun, 04 Oct 2020 21:35:00 +0000</pubDate>
				<category><![CDATA[productivity]]></category>
		<category><![CDATA[self-help]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=4363</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/atomic-habits/">Atomic Habits</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="331" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/10/book-4363-cover.jpg?fit=331%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/10/book-4363-cover.jpg?w=331&amp;ssl=1 331w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/10/book-4363-cover.jpg?resize=199%2C300&amp;ssl=1 199w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/10/book-4363-cover.jpg?resize=265%2C400&amp;ssl=1 265w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/10/book-4363-cover.jpg?resize=212%2C320&amp;ssl=1 212w" sizes="auto, (max-width: 331px) 100vw, 331px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-0735211292/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-0735211292/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-0735211292/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/atomic-habits/">Atomic Habits</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/atomic-habits/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4363</post-id>	</item>
		<item>
		<title>Red Rising</title>
		<link>https://johnbeales.com/books/red-rising/</link>
					<comments>https://johnbeales.com/books/red-rising/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Tue, 15 Sep 2020 18:39:01 +0000</pubDate>
				<category><![CDATA[fantasy]]></category>
		<category><![CDATA[fiction]]></category>
		<category><![CDATA[sci-fi]]></category>
		<category><![CDATA[world-building]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=4274</guid>

					<description><![CDATA[<p>I need to work on my ability to put down a book and get some sleep. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/red-rising/">Red Rising</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>I need to work on my ability to put down a book and get some sleep.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="329" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/09/book-4274-cover.jpg?fit=329%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/09/book-4274-cover.jpg?w=329&amp;ssl=1 329w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/09/book-4274-cover.jpg?resize=197%2C300&amp;ssl=1 197w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/09/book-4274-cover.jpg?resize=263%2C400&amp;ssl=1 263w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/09/book-4274-cover.jpg?resize=211%2C320&amp;ssl=1 211w" sizes="auto, (max-width: 329px) 100vw, 329px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/0345539788/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/0345539788/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/0345539788/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/red-rising/">Red Rising</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/red-rising/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4274</post-id>	</item>
		<item>
		<title>The Devil in the White City</title>
		<link>https://johnbeales.com/books/the-devil-in-the-white-city/</link>
					<comments>https://johnbeales.com/books/the-devil-in-the-white-city/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Mon, 27 Jul 2020 20:56:56 +0000</pubDate>
				<category><![CDATA[chicago]]></category>
		<category><![CDATA[chicago fair]]></category>
		<category><![CDATA[columbian world expedition]]></category>
		<category><![CDATA[history]]></category>
		<category><![CDATA[nonfiction]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=4127</guid>

					<description><![CDATA[<p>I was kind of hoping for more about Holmes, but it sounds like there aren&#8217;t a ton of records to go on. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/the-devil-in-the-white-city/">The Devil in the White City</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>I was kind of hoping for more about Holmes, but it sounds like there aren&#8217;t a ton of records to go on.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="319" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/07/book-4127-cover.jpg?fit=319%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/07/book-4127-cover.jpg?w=319&amp;ssl=1 319w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/07/book-4127-cover.jpg?resize=191%2C300&amp;ssl=1 191w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/07/book-4127-cover.jpg?resize=255%2C400&amp;ssl=1 255w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/07/book-4127-cover.jpg?resize=204%2C320&amp;ssl=1 204w" sizes="auto, (max-width: 319px) 100vw, 319px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/0609608444/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/0609608444/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/0609608444/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-devil-in-the-white-city/">The Devil in the White City</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-devil-in-the-white-city/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4127</post-id>	</item>
		<item>
		<title>Severance</title>
		<link>https://johnbeales.com/books/severance/</link>
					<comments>https://johnbeales.com/books/severance/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Mon, 27 Jul 2020 20:55:08 +0000</pubDate>
				<category><![CDATA[apocopalypse]]></category>
		<category><![CDATA[commentary]]></category>
		<category><![CDATA[fiction]]></category>
		<category><![CDATA[pandemic]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=4112</guid>

					<description><![CDATA[<p>Candace is kind of funny. I was hoping for one more act when the book ended. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/severance/">Severance</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Candace is kind of funny. I was hoping for one more act when the book ended.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/0374261598/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/0374261598/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/0374261598/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/severance/">Severance</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/severance/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4112</post-id>	</item>
		<item>
		<title>Gallery Captions for WooCommerce</title>
		<link>https://johnbeales.com/2020/gallery-captions-woocommerce/</link>
					<comments>https://johnbeales.com/2020/gallery-captions-woocommerce/#comments</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 01 Jul 2020 14:11:20 +0000</pubDate>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[image caption]]></category>
		<category><![CDATA[woocommerce extensions]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?p=3375</guid>

					<description><![CDATA[<p>Gallery Captions for WooCommerce is a WooCommerce Extension that adds captions to the product images on WooCommerce&#8217;s Single-Product page. It is my first commercial WooCommerce extension, and I&#8217;m happy to say it&#8217;s available for purchase on WooCommerce.com. Why Captions? On the surface this seems like a question with an obvious answer: To tell potential customers [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/2020/gallery-captions-woocommerce/">Gallery Captions for WooCommerce</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><a href="https://woocommerce.com/products/gallery-captions-for-woocommerce/">Gallery Captions for WooCommerce</a> is a WooCommerce Extension that adds captions to the product images on WooCommerce&#8217;s Single-Product page. It is my first commercial WooCommerce extension, and I&#8217;m happy to say it&#8217;s <a href="https://woocommerce.com/products/gallery-captions-for-woocommerce/">available for purchase</a> on WooCommerce.com.</p>



<h3 class="wp-block-heading">Why Captions?</h3>



<p class="wp-block-paragraph">On the surface this seems like a question with an obvious answer: To tell potential customers what they&#8217;re seeing in an image.</p>



<p class="wp-block-paragraph">But when researching I found even more compelling reasons: Captions may be the most-read text on a page, (even more than the page title!). If a caption isn&#8217;t the most-read text it&#8217;s still very well-read, and the combination of an image and caption can help <a href="https://www.practicalecommerce.com/photo-captions-greatly-help-ecommerce-sites">customers understand</a> what they&#8217;re looking at and make a well-informed buying decision.</p>



<h3 class="wp-block-heading">Super Simple</h3>



<p class="wp-block-paragraph">Gallery Captions is super simple to use. <a href="https://docs.woocommerce.com/document/gallery-captions-for-woocommerce/">There is documentation</a>, (of course), but it&#8217;s barely needed. There are no settings, just install &amp; activate the plugin and it will pull the information set as the Title and Caption in your <a href="https://wordpress.org/support/article/media-library-screen/">Media Library</a>. I may add options in the future to choose to show the title, caption, or description, but for now it&#8217;s super-simple.</p>



<h3 class="wp-block-heading">Add Captions to Your Store</h3>



<p class="wp-block-paragraph">If you want to add captions to your WooCommerce product galleries, (and you should want to), then go ahead and use <a href="https://woocommerce.com/products/gallery-captions-for-woocommerce/">Gallery Captions for WooCommerce</a>.</p>
<p>The post <a href="https://johnbeales.com/2020/gallery-captions-woocommerce/">Gallery Captions for WooCommerce</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/2020/gallery-captions-woocommerce/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3375</post-id>	</item>
		<item>
		<title>Bug Bounties in a Small Company</title>
		<link>https://johnbeales.com/2020/bug-bounties-in-a-small-company/</link>
					<comments>https://johnbeales.com/2020/bug-bounties-in-a-small-company/#comments</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Fri, 19 Jun 2020 16:59:27 +0000</pubDate>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[bootstrapping]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[web development]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?p=3932</guid>

					<description><![CDATA[<p>The E-mail arrived quietly in our support mailbox. Pretty good English, but clearly not the writer&#8217;s first language, and : BUG : Password Reset Link Not Expire After Mail Change. Hey! I found a token miss configuration flaw in&#8230; Ok. Not the biggest deal of all time, but something that should be fixed. The submitter [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/2020/bug-bounties-in-a-small-company/">Bug Bounties in a Small Company</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>The E-mail arrived quietly in our support mailbox. Pretty good English, but clearly not the writer&#8217;s first language, and :</p>
<blockquote><p>BUG : Password Reset Link Not Expire After Mail Change.</p>
<p>Hey!<br />
I found a token miss configuration flaw in&#8230;</p></blockquote>
<p>Ok. Not the biggest deal of all time, but something that should be fixed. The submitter provided really great instructions on how to reproduce the bug and why we should care. I replied thanking the submitter and got this back:</p>
<blockquote><p>Hi There<br />
Is there any way to give me a bounty ?</p>
<p>Thanks</p></blockquote>
<p>Baboom. This sounds like the exact situation that Justin Jackson &amp; Jon Buda <a href="https://overcast.fm/+MBmVWzCaM/38:52">asked about</a> on <a href="https://saas.transistor.fm/episodes/building-software-for-2030">this episode</a> of <a href="https://saas.transistor.fm">Build your SaaS</a>. We&#8217;re a small company. We don&#8217;t have a formal <a href="https://en.wikipedia.org/wiki/Bug_bounty_program">bug bounty</a> or <a href="https://www.bugcrowd.com/blog/whats-a-vulnerability-disclosure-program/">vulnerability disclosure program</a>, but I find security fascinating, (at least from the outside), and know bug bounties are a thing. It would be nice to pay a bounty, but how much? What happens next? What if we refuse?</p>
<p>This is what we did, and how it played out.</p>
<h3>It&#8217;s our first time</h3>
<p>My business partner had seen the initial E-mail in the support system so he knew something was up. After a quick discussion about how bug bounties work and asking if he ok with paying something we made the decision to pay small bounties in the neighbourhood of $20 &#8211; $50 US per bug, depending on severity, available funds, and how many more reports came in.</p>
<p>I went back to the submitter and said that we could pay but as a very small company with an extremely limited budget he should not expect Apple-style bounties. They were happy with that arrangement, so I fixed the bug.</p>
<p>Then they submitted another but and I fixed that. And another. In all this person submitted 5 &#8220;bugs&#8221; of varying severity. Some we could barely class as problems but we looked at them all and patched any that needed patching. Some others made us re-think some of the user interface, especially around changing contact or login information, and make plans to change it later.</p>
<p>The reports were both submitted and fixed close together so we lumped everything into one payment. We paid about $100 US for the lot. The submitter asked for payment to go to a random PayPal address that was nothing like the name of the person we were dealing with, then send a screenshot of the completed payment. Pretty sketchy, but they were satisfied.</p>
<h3>Writing a Disclosure Policy</h3>
<p>I have looked at the bug bounty programs on <a href="https://www.hackerone.com">HackerOne</a> and <a href="https://www.bugcrowd.com">Bugcrowd</a>, and decided to make a page to point people to when they ask about bug bounties, and to lay down some ground rules, (like don&#8217;t <abbr title="Distributed Denial of Service">DDoS</abbr> us!). We used <a href="https://www.mozilla.org/en-US/security/bug-bounty/">Mozilla&#8217;s Bug Bounty program</a> and some others from respected companies as inspiration. We included a requirement for detailed reproduction steps, why the bug is actually a problem. This makes it relatively easy to triage any reports we get.</p>
<p>Good thing we wrote a disclosure policy, because as we were finishing up with the researcher another E-mailed us with some bugs, and asking if we have a bug bounty program, and we were was able to respond with a link to the new disclosure page.</p>
<h3>Bounty Hunter #2</h3>
<p>On <em>Build your SaaS</em> Jon asked if you paid, would you end up on a list of companies that pay, then be flooded with submissions. The answer seems to be at least sort of yes. As we were finishing up with the first submitter another showed up. Submitter #2 had better English than Submitter #1, and was much more thorough. I suspect these two were somehow connected, whether they both post to the same forum or both work for the same person I don&#8217;t know, but it felt like we went from a Level 1 pen-tester to Level 2. Submitter #2&#8217;s bugs were more creative and more serious than Submitter #1&#8217;s. Since #2 showed up just as we were finishing with #1 we were short on cash for bounties, but were honest about it and paid what we could. This seemed well received. I believe we paid about $200 US to Submitter #2.</p>
<p>After once we were mostly wrapped up with Submitter #2 things were quiet for a while, then he submitted one more issue about a week later which we fixed, and since we hadn&#8217;t sent the payment yet added to the payment for all of his bugs. Payment was the same sketchy unrelated PayPal + screenshot of the payment method.</p>
<h3>Was it worth it?</h3>
<p>Short term answer: Yes. At least one of the bugs that Submitter #2 found was serious enough that it warranted immediate attention, so on that level it was worth having someone report it instead of exploit it.</p>
<p>Overall answer: Still yes. For the cost of about $300 US and about a week of my mornings we got outside feedback that made us reconsider some UI decisions from a security standpoint and learned about Content Security Policies and other security headers. Also, the submitted bugs and our knowledge of our systems led us to other related bugs that we fixed as well, so it was a bit like a 2-for-one sale on bug-fixes. And now we have tests written that should prevent these bugs from re-appearing.</p>
<p>Of course I would prefer that we found problems internally before they were deployed, and problems would be discovered at convenient times, but that&#8217;s not the real world and I&#8217;m happy the problems were found and fixed, and we improved our systems and knowledge as a result.</p>
<p>This all happened back in February and March, and we haven&#8217;t had any reports since.</p>
<h3>Further Steps</h3>
<p>I hear there&#8217;s an <a href="https://www.iso.org/home.html">ISO</a> standard for security disclosure best practices, (apparently ISO 29147 and ISO 30111). I plan on looking them up and do what we can to follow them while balancing that with continuing to improve our product. With a small team it&#8217;s always a question of balance, so we&#8217;ll keep doing our best!</p>
<h3>Has this happened to you?</h3>
<p>If I had to bet, I would bet that a lot of small businesses are approached by security researchers this way, but none of us have dealt with them before, we don&#8217;t know what to do, and are worried it will be a scam or that we&#8217;ll end up on a list and end up spending all our time dealing with bug reports. This feels like something we should talk about.</p>
<p>The post <a href="https://johnbeales.com/2020/bug-bounties-in-a-small-company/">Bug Bounties in a Small Company</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/2020/bug-bounties-in-a-small-company/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3932</post-id>	</item>
		<item>
		<title>The Camera</title>
		<link>https://johnbeales.com/books/the-camera/</link>
					<comments>https://johnbeales.com/books/the-camera/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 13 May 2020 23:35:07 +0000</pubDate>
				<category><![CDATA[ansel adams series]]></category>
		<category><![CDATA[nonfiction]]></category>
		<category><![CDATA[photography]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=3668</guid>

					<description><![CDATA[<p>This book makes me want a view camera. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/the-camera/">The Camera</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>This book makes me want a view camera.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-0821221846/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-0821221846/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-0821221846/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-camera/">The Camera</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-camera/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3668</post-id>	</item>
		<item>
		<title>The Citizen&#8217;s Guide to Climate Success: Overcoming Myths that Hinder Progress</title>
		<link>https://johnbeales.com/books/the-citizens-guide-to-climate-success-overcoming-myths-that-hinder-progress/</link>
					<comments>https://johnbeales.com/books/the-citizens-guide-to-climate-success-overcoming-myths-that-hinder-progress/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Fri, 08 May 2020 02:14:37 +0000</pubDate>
				<category><![CDATA[climate]]></category>
		<category><![CDATA[climate change]]></category>
		<category><![CDATA[environment]]></category>
		<category><![CDATA[environmentalism]]></category>
		<category><![CDATA[government]]></category>
		<category><![CDATA[non-fiction]]></category>
		<category><![CDATA[nonfiction]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=3620</guid>

					<description><![CDATA[<p>Mark did a great job of explaining why all the things that are supposed to &#8220;save&#8221; the planet won&#8217;t, but what an actual path to meaningful action on climate change can look like, and show&#8217;s that it is affordable. Unfortunately, the conclusion is that we have to get out and engage with our leaders and [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/the-citizens-guide-to-climate-success-overcoming-myths-that-hinder-progress/">The Citizen&#8217;s Guide to Climate Success: Overcoming Myths that Hinder Progress</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Mark did a great job of explaining why all the things that are supposed to &#8220;save&#8221; the planet won&#8217;t, but what an actual path to meaningful action on climate change can look like, and show&#8217;s that it is affordable.</p>
<p>Unfortunately, the conclusion is that we have to get out and engage with our leaders and involve in the political process. Which is true, but I find it frustrating that we need to do that.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/9781108742665/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/9781108742665/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/9781108742665/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-citizens-guide-to-climate-success-overcoming-myths-that-hinder-progress/">The Citizen&#8217;s Guide to Climate Success: Overcoming Myths that Hinder Progress</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-citizens-guide-to-climate-success-overcoming-myths-that-hinder-progress/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3620</post-id>	</item>
		<item>
		<title>The Accident</title>
		<link>https://johnbeales.com/books/the-accident/</link>
					<comments>https://johnbeales.com/books/the-accident/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sat, 11 Apr 2020 20:13:59 +0000</pubDate>
				<category><![CDATA[spy novel]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=3444</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/the-accident/">The Accident</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/9780385348478/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/9780385348478/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/9780385348478/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-accident/">The Accident</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-accident/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3444</post-id>	</item>
		<item>
		<title>Local Commerce</title>
		<link>https://johnbeales.com/2020/local-commerce/</link>
					<comments>https://johnbeales.com/2020/local-commerce/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Mon, 30 Mar 2020 21:37:30 +0000</pubDate>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[ecommerce]]></category>
		<category><![CDATA[local commerce]]></category>
		<category><![CDATA[shopping]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?p=3372</guid>

					<description><![CDATA[<p>Justin Jackson lays out the case for turning all of our favourite local stores into a viable Amazon competitor in his post Fight Amazon. It got me thinking about the problems I’ve had trying to buy things from local stores over the past year, and maybe some solutions. Local Commerce Problems I try to support [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/2020/local-commerce/">Local Commerce</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Justin Jackson lays out the case for turning all of our favourite local stores into a viable Amazon competitor in his post <a href="https://justinjackson.ca/fight-amazon">Fight Amazon</a>. It got me thinking about the problems I’ve had trying to buy things from local stores over the past year, and maybe some solutions.</p>



<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<div class="jetpack-video-wrapper"><iframe loading="lazy" class="youtube-player" width="960" height="540" src="https://www.youtube.com/embed/CYWR0_wYQ1w?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=en-US&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe></div>
</div><figcaption>Justin musing about how local stores can compete with Amazon.</figcaption></figure>
</div></div>



<h3 class="wp-block-heading">Local Commerce Problems</h3>



<p class="wp-block-paragraph">I try to support local stores when I can. I don’t usually buy clothes, (somehow I’m still clothed), so I can’t speak knowledgeably about clothing shopping, but there have been some instances over the past year when I’ve been incredibly frustrated with local shopping.</p>



<p class="wp-block-paragraph">It’s the bike shoes that the bike shop had to order twice and took a month to get, late in the season, or the bike brake levers that the bike shop ordered the model for the wrong kind of brake, or the indoor soccer shoes that, even after checking the Sport Chek website were not in stock, or when our portable washing machine broke down an there was no way to buy one locally without actually visiting or calling all the appliance stores to check their stock. Don’t even get me started on trying to buy several yards of cloth when someone in the family is making costumes for a dance recital.</p>



<p class="wp-block-paragraph">In all of these cases a service that could tell me where products are in stock locally would have solved my problem. Actual purchasing and delivery would make things even better for some products.</p>



<h3 class="wp-block-heading">The Inventory Problem</h3>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Where do I go to buy this?</p></blockquote>



<p class="wp-block-paragraph">For stores that already have E-Commerce systems in place it’s probably not too hard to answer this question. The problem is making sure that the E-Commerce systems exist, <em>and</em> have accurate inventory numbers. I haven’t worked in retail for a long time, and when I did we weren’t using anything computerized to record inventory. These days I think some, (but not all!), stores to have computerized inventory but making the systems used in stores talk to E-Commerce systems may be difficult.</p>



<p class="wp-block-paragraph">For stores that already have reliable stock levels in their E-Commerce systems it should be relatively simple to know their inventory numbers using something like a <a href="https://support.google.com/merchants/answer/7052112?hl=en">Google Product Feed</a>. That could be used either by other local stores who are willing to refer customers to competitors with products in stock, or by an aggregator that provides a local shopping experience.</p>



<h3 class="wp-block-heading">Shipping</h3>



<p class="wp-block-paragraph">I should also mention shipping: It’s expensive, and it’ll be tough to compete against Amazon, but there’s probably a way to make it happen, and it’s not my area of expertise so I don’t know if any of my ideas are realistic.</p>



<h3 class="wp-block-heading">The Business Problem</h3>



<p class="wp-block-paragraph">If the technical side works, and we have a bunch of local stores that can take orders online, ship easily and inexpensively, and find alternative sources for items they don&#8217;t have, and we have an aggregator where people can go to shop instead of Amazon, we still have a business problem, or two:</p>



<ol class="wp-block-list"><li>Why would a store recommend that a customer go buy from their competitor now instead of trying to take the order themselves and order in the product?<ul><li>Justin mentions commissions in his video. Why would a store pay a commission to its competitor instead of trying to get the sale itself some other way?</li></ul></li><li>How does the aggregator make money without becoming a pay-to-play advertising service?<ul><li>Maybe commissions here too, but is it possible to get enough store owners on board with paying the commission instead of taking their chances with Adwords?</li></ul></li></ol>



<h3 class="wp-block-heading">Next?</h3>



<p class="wp-block-paragraph"> I doubt that I’ll be the person to try to solve these problems, but someone should.</p>



<p class="wp-block-paragraph">To get to the level of a real, local-everywhere Amazon alternative let’s start with some technical questions.</p>



<h4 class="wp-block-heading">Technical Questions:</h4>



<ul class="wp-block-list"><li>Do stores even use computers to track stock?<ul><li>Does that change if they sell online?</li></ul></li><li>How hard is it to make in-store stock-tracking software talk to E-Commerce software?<ul><li>What is even being used to track stock in stores?</li><li>Does it have APIs? Can it send notifications to other systems when stock levels change, or receive notifications to change its internal level when an E-Commerce order is received?</li><li>Do we have a good way of identifying the same product across multiple stores? I know that GTINs exist, but suspect they’re less than perfect.</li></ul></li></ul>



<p class="wp-block-paragraph">If you know the answers to these, or have more questions, post in the comments like it’s 2005, or we can talk about it on Twitter.</p>



<h4 class="wp-block-heading">Slashlocal: Someone is already trying</h4>



<p class="wp-block-paragraph">A parent I know from my kids school runs <a href="https://slashlocal.com">Slashlocal</a>, which is trying to solve some of the local problems. I downloaded it today and will see if it helps me solve their problems. I’m worried their pricing model will discourage stores from putting their entire inventory online, but I believe the product is young they’re working hard to help on-board customers at no cost during the current crisis, so maybe changes are coming.<br /><br /><em>Update October 2020:</em> I see Slashlocal now has a &#8220;Stripe fees + 1%&#8221; pricing option with a high limit on the number of items stores can put online. This sounds like a good deal.</p>



<h4 class="wp-block-heading">Maybe I&#8217;ll build a WooCommerce extension?</h4>



<p class="wp-block-paragraph">If you’re interested in a WooCommerce extension to show other places to buy an item when your store is out of stock or you don’t carry what the customer is looking for let me know. If there’s enough interest I’ll build it.</p>
<p>The post <a href="https://johnbeales.com/2020/local-commerce/">Local Commerce</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/2020/local-commerce/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3372</post-id>	</item>
		<item>
		<title>The Paris Diversion</title>
		<link>https://johnbeales.com/books/the-paris-diversion/</link>
					<comments>https://johnbeales.com/books/the-paris-diversion/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Fri, 20 Mar 2020 21:30:37 +0000</pubDate>
				<category><![CDATA[fiction]]></category>
		<category><![CDATA[kate moore]]></category>
		<category><![CDATA[spy novel]]></category>
		<category><![CDATA[thriller]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=3279</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/the-paris-diversion/">The Paris Diversion</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/9781524761516/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/9781524761516/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/9781524761516/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-paris-diversion/">The Paris Diversion</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-paris-diversion/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3279</post-id>	</item>
		<item>
		<title>Outer Order, Inner Calm</title>
		<link>https://johnbeales.com/books/outer-order-inner-calm/</link>
					<comments>https://johnbeales.com/books/outer-order-inner-calm/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Tue, 10 Mar 2020 20:31:48 +0000</pubDate>
				<category><![CDATA[cleaning]]></category>
		<category><![CDATA[organization]]></category>
		<category><![CDATA[self-help]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=3193</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/outer-order-inner-calm/">Outer Order, Inner Calm</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="362" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/03/book-3193-cover.jpg?fit=362%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/03/book-3193-cover.jpg?w=362&amp;ssl=1 362w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/03/book-3193-cover.jpg?resize=217%2C300&amp;ssl=1 217w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/03/book-3193-cover.jpg?resize=290%2C400&amp;ssl=1 290w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/03/book-3193-cover.jpg?resize=232%2C320&amp;ssl=1 232w" sizes="auto, (max-width: 362px) 100vw, 362px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/978-1984822802/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/978-1984822802/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/978-1984822802/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/outer-order-inner-calm/">Outer Order, Inner Calm</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/outer-order-inner-calm/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3193</post-id>	</item>
		<item>
		<title>SPQR</title>
		<link>https://johnbeales.com/books/spqr/</link>
					<comments>https://johnbeales.com/books/spqr/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 04 Mar 2020 21:44:51 +0000</pubDate>
				<category><![CDATA[history]]></category>
		<category><![CDATA[nonfiction]]></category>
		<category><![CDATA[rome]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=3131</guid>

					<description><![CDATA[<p>It&#8217;s been a long time since the bit of Roman history that I learned in high school, so I didn&#8217;t really know much about Rome. I knew that there were emperors, and a senate, and Julius Caesar, (was he a general? an emperor? something else?), was killed, maybe in the senate, maybe by senators? There [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/spqr/">SPQR</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>It&#8217;s been a long time since the bit of Roman history that I learned in high school, so I didn&#8217;t really know much about Rome. I knew that there were emperors, and a senate, and Julius Caesar, (was he a general? an emperor? something else?), was killed, maybe in the senate, maybe by senators? There seemed to be a period where Rome was a republic, but also a period where it was run by emperors, and it would make sense that the republic was after the emperors, (boy, was I wrong!). Also, there&#8217;s a coliseum.</p>
<p>Turns out that the republic was before the emperors. Julius Caesar was a general, and pretty much the first emperor &#8211; for a moment &#8211; but he was killed by people who, just maybe, wanted to keep a republic. Or they wanted power for themselves.</p>
<p>It also turns out that Rome, the empire, had a surprisingly small government workforce, and tons of things were done by private companies for profit. Even things like collecting taxes. There are surprising parallels between the modern major power where politicians promote &#8220;small government&#8221; while spending a lot on the military and propping up a wealth gap between the very rich and very poor.</p>
<p>&nbsp;</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/1631492225/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/1631492225/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/1631492225/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/spqr/">SPQR</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/spqr/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3131</post-id>	</item>
		<item>
		<title>DeadTrees 1.1: More Cover Sources</title>
		<link>https://johnbeales.com/2020/deadtrees-1-1-more-cover-sources/</link>
					<comments>https://johnbeales.com/2020/deadtrees-1-1-more-cover-sources/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Mon, 27 Jan 2020 22:02:35 +0000</pubDate>
				<category><![CDATA[code]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[dead-trees]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[publishing]]></category>
		<category><![CDATA[reading]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wordpress.org]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?p=2713</guid>

					<description><![CDATA[<p>An update to DeadTrees, my WordPress plugin for sharing the books I read, is now live in the WordPress Plugin Repository. This update does one major thing: diversifies the sources of cover images. What happened was Amazon introduced a quota on the API that the original DeadTrees was using to fetch cover art. The API [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/2020/deadtrees-1-1-more-cover-sources/">DeadTrees 1.1: More Cover Sources</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">An update to <a href="https://johnbeales.com/2012/announcing-deadtrees/">DeadTrees, my WordPress plugin for sharing the books I read</a>, is now <a href="https://wordpress.org/plugins/dead-trees/">live in the WordPress Plugin Repository</a>. This update does one major thing: diversifies the sources of cover images. </p>



<p class="wp-block-paragraph">What happened was Amazon introduced a <a href="https://docs.aws.amazon.com/AWSECommerceService/latest/DG/TroubleshootingApplications.html#efficiency-guidelines">quota on the API</a> that the original DeadTrees was using to fetch cover art. The API quota is based on how many sales a user has, and I&#8217;m famous enough to have many sales, so my API access was eventually cut off. When I started posting my backlog of books I really wanted cover art, so I polished off the (very) dusty code and got to work.</p>



<p class="wp-block-paragraph">Version 1.1 of DeadTrees maintains support for Amazon cover art and adds support for fetching cover art from <a href="https://openlibrary.org/">OpenLibrary.org</a> and <a href="https://www.librarything.com">LibraryThing</a>. There&#8217;s a setting to try Amazon first or last, and the plugin tries to be smart about when to try OpenLibrary.org or LibraryThing, (it prefers OpenLibrary.org, as they seem to provide larger images, and don&#8217;t require an API key).</p>



<p class="wp-block-paragraph">If you want to see DeadTrees in action take a look at the list of <a href="https://johnbeales.com/books/">books I have read</a>, which is powered by DeadTrees. For support <a href="https://wordpress.org/support/plugin/dead-trees/">post in the WordPress.org forum</a>, and for bugs &amp; feature requests post in the same forum or create a <a href="https://github.com/jbeales/deadtrees/issues">Github issue</a>.</p>



<p class="wp-block-paragraph">Happy Reading!</p>
<p>The post <a href="https://johnbeales.com/2020/deadtrees-1-1-more-cover-sources/">DeadTrees 1.1: More Cover Sources</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/2020/deadtrees-1-1-more-cover-sources/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2713</post-id>	</item>
		<item>
		<title>Anna Karenina</title>
		<link>https://johnbeales.com/books/anna-karenina/</link>
					<comments>https://johnbeales.com/books/anna-karenina/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Mon, 27 Jan 2020 21:37:40 +0000</pubDate>
				<category><![CDATA[classic]]></category>
		<category><![CDATA[fiction]]></category>
		<category><![CDATA[imperial russia]]></category>
		<category><![CDATA[russia]]></category>
		<category><![CDATA[russian literature]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=2710</guid>

					<description><![CDATA[<p>This is the second time I&#8217;ve read Anna Karenina. I barely remember the last time, but I feel like I really got to know a lot of the characters this time. That said, the part after the climactic encounter with a train was kind of unneeded. I was happy to say goodbye when I got [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/anna-karenina/">Anna Karenina</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>This is the second time I&#8217;ve read Anna Karenina. I barely remember the last time, but I feel like I really got to know a lot of the characters this time.</p>
<p>That said, the part after the climactic encounter with a train was kind of unneeded. I was happy to say goodbye when I got to the end.</p>
<p>This was the Maude translation.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="319" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/01/book-2710-cover.jpg?fit=319%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/01/book-2710-cover.jpg?w=319&amp;ssl=1 319w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/01/book-2710-cover.jpg?resize=191%2C300&amp;ssl=1 191w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/01/book-2710-cover.jpg?resize=255%2C400&amp;ssl=1 255w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/01/book-2710-cover.jpg?resize=204%2C320&amp;ssl=1 204w" sizes="auto, (max-width: 319px) 100vw, 319px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/0486437965/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/0486437965/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/0486437965/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/anna-karenina/">Anna Karenina</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/anna-karenina/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2710</post-id>	</item>
		<item>
		<title>Educated</title>
		<link>https://johnbeales.com/books/educated/</link>
					<comments>https://johnbeales.com/books/educated/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Mon, 27 Jan 2020 21:31:25 +0000</pubDate>
				<category><![CDATA[autobiography]]></category>
		<category><![CDATA[biography]]></category>
		<category><![CDATA[education]]></category>
		<category><![CDATA[fundamentalists]]></category>
		<category><![CDATA[off-grid]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=2707</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/educated/">Educated</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="329" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/01/book-2707-cover.jpg?fit=329%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/01/book-2707-cover.jpg?w=329&amp;ssl=1 329w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/01/book-2707-cover.jpg?resize=197%2C300&amp;ssl=1 197w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/01/book-2707-cover.jpg?resize=263%2C400&amp;ssl=1 263w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2020/01/book-2707-cover.jpg?resize=211%2C320&amp;ssl=1 211w" sizes="auto, (max-width: 329px) 100vw, 329px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/0399590501/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/0399590501/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/0399590501/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/educated/">Educated</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/educated/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2707</post-id>	</item>
		<item>
		<title>Lethal White</title>
		<link>https://johnbeales.com/books/lethal-white/</link>
					<comments>https://johnbeales.com/books/lethal-white/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Mon, 28 Oct 2019 19:25:03 +0000</pubDate>
				<category><![CDATA[british]]></category>
		<category><![CDATA[detective novel]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=2182</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/lethal-white/">Lethal White</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/0316422770/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/0316422770/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/0316422770/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/lethal-white/">Lethal White</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/lethal-white/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2182</post-id>	</item>
		<item>
		<title>The Noma Guide to Fermentation</title>
		<link>https://johnbeales.com/books/the-noma-guide-to-fermentation/</link>
					<comments>https://johnbeales.com/books/the-noma-guide-to-fermentation/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Mon, 28 Oct 2019 19:23:22 +0000</pubDate>
				<category><![CDATA[diy]]></category>
		<category><![CDATA[fermentation]]></category>
		<category><![CDATA[food]]></category>
		<category><![CDATA[food system]]></category>
		<category><![CDATA[homemade]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=2180</guid>

					<description><![CDATA[<p>Everything in this book looks delicious, even if it looks gross. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/the-noma-guide-to-fermentation/">The Noma Guide to Fermentation</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Everything in this book looks delicious, even if it looks gross.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/1579657184/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/1579657184/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/1579657184/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-noma-guide-to-fermentation/">The Noma Guide to Fermentation</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-noma-guide-to-fermentation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2180</post-id>	</item>
		<item>
		<title>The Expats</title>
		<link>https://johnbeales.com/books/the-expats/</link>
					<comments>https://johnbeales.com/books/the-expats/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Mon, 28 Oct 2019 19:09:39 +0000</pubDate>
				<category><![CDATA[bumbling]]></category>
		<category><![CDATA[foreign life]]></category>
		<category><![CDATA[plot twist]]></category>
		<category><![CDATA[spy thriller]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=2176</guid>

					<description><![CDATA[<p>After reading The Travelers I went hunting for more by Chris Pavone, and The Expats, which I believe is the book that started his career, was pretty darn good. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/the-expats/">The Expats</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>After reading <a href="https://johnbeales.com/books/the-travelers/">The Travelers</a> I went hunting for more by Chris Pavone, and <em>The Expats</em>, which I believe is the book that started his career, was pretty darn good.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="251" height="400" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2019/10/book-2176-cover.jpg?fit=251%2C400&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2019/10/book-2176-cover.jpg?w=251&amp;ssl=1 251w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2019/10/book-2176-cover.jpg?resize=188%2C300&amp;ssl=1 188w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2019/10/book-2176-cover.jpg?resize=201%2C320&amp;ssl=1 201w" sizes="auto, (max-width: 251px) 100vw, 251px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/0307956350/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/0307956350/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/0307956350/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-expats/">The Expats</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-expats/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2176</post-id>	</item>
		<item>
		<title>The Kremlin&#8217;s Canditate</title>
		<link>https://johnbeales.com/books/the-kremlins-canditate/</link>
					<comments>https://johnbeales.com/books/the-kremlins-canditate/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Mon, 28 Oct 2019 19:06:49 +0000</pubDate>
				<category><![CDATA[cia]]></category>
		<category><![CDATA[male gaze]]></category>
		<category><![CDATA[russia]]></category>
		<category><![CDATA[spy thriller]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=2173</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/the-kremlins-canditate/">The Kremlin&#8217;s Canditate</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/1501140086/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/1501140086/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/1501140086/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-kremlins-canditate/">The Kremlin&#8217;s Canditate</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-kremlins-canditate/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2173</post-id>	</item>
		<item>
		<title>Palace of Treason</title>
		<link>https://johnbeales.com/books/palace-of-treason/</link>
					<comments>https://johnbeales.com/books/palace-of-treason/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Mon, 28 Oct 2019 19:00:31 +0000</pubDate>
				<category><![CDATA[cia]]></category>
		<category><![CDATA[male gaze]]></category>
		<category><![CDATA[red sparrow]]></category>
		<category><![CDATA[russia]]></category>
		<category><![CDATA[spy thriller]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=2169</guid>

					<description><![CDATA[<p>Second novel of the Red Sparrow trilogy. Still super male gaze-y. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/palace-of-treason/">Palace of Treason</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Second novel of the Red Sparrow trilogy. Still super male gaze-y.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/1476793743/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/1476793743/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/1476793743/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/palace-of-treason/">Palace of Treason</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/palace-of-treason/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2169</post-id>	</item>
		<item>
		<title>Adding Google Ads and Microsoft Advertising Conversion Tags to WooCommerce</title>
		<link>https://johnbeales.com/2019/adding-google-ads-and-microsoft-advertising-conversion-tags-to-woocommerce/</link>
					<comments>https://johnbeales.com/2019/adding-google-ads-and-microsoft-advertising-conversion-tags-to-woocommerce/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Tue, 17 Sep 2019 20:54:56 +0000</pubDate>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[adwords]]></category>
		<category><![CDATA[analytics]]></category>
		<category><![CDATA[bing advertising]]></category>
		<category><![CDATA[conversion tracking]]></category>
		<category><![CDATA[ecommerce]]></category>
		<category><![CDATA[google ads]]></category>
		<category><![CDATA[microsoft advertising]]></category>
		<category><![CDATA[tracking tag]]></category>
		<category><![CDATA[woocommerce]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?p=2124</guid>

					<description><![CDATA[<p>Adding Google Ads and Microsoft Advertising conversion tracking tags to WooCommerce powered E-commerce shops can seem confusing at first: WooCommerce templates are like a huge Russian nesting doll and it&#8217;s unclear where to put the tags. On top of that Google wants their tags as close to the top of the document as possible, but [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/2019/adding-google-ads-and-microsoft-advertising-conversion-tags-to-woocommerce/">Adding Google Ads and Microsoft Advertising Conversion Tags to WooCommerce</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Adding Google Ads and Microsoft Advertising conversion tracking tags to WooCommerce powered E-commerce shops can seem confusing at first: WooCommerce templates are like a huge Russian nesting doll and it&#8217;s unclear where to put the tags. On top of that Google wants their tags as <a href="https://support.google.com/google-ads/answer/6331314">close to the top of the document as possible</a>, but many tutorials <a href="https://calebburks.com/add-analytics-tracking-to-the-woocommerce-thank-you-page/">suggest</a> using the <code class="language-php">woocommerce_thankyou</code> hook, which dumps its output right in the middle of the <code class="language-html">body</code>.</p>



<h2 class="wp-block-heading">Use Any WordPress Hook</h2>



<p class="wp-block-paragraph">Luckily we can just use WordPress hooks to insert conversion tags where we need them, so long as we make sure we&#8217;re on the &#8220;Thanks for your order&#8221; page, and check that the order is a status that we want to count as a conversion. Here&#8217;s how we can do that:</p>



<pre class="wp-block-code language-php"><code>/**
 * This function can be hooked onto any normal WordPress hook. Maybe wp_head,
 * or wp_footer, or even a sidebar if you really want.
 * @return [type] [description]
 */
function jb_do_stuff_on_order_complete_page() {
	// is_order_received_page() is part of WooCommerce
	// if there's a possibility that the page is loaded without WooCommerce
	// you could check to make sure it exists:
	if(!function_exists('is_order_received_page')) return;

	if(is_order_received_page()) {
		global $wp;
		$order = wc_get_order($wp->query_vars['order-received']);
		if($order &amp;&amp; !$order->has_status( 'failed' )) {
			// Do what we need here.
		}
	}	
}
</code></pre>



<h2 class="wp-block-heading">Set Up Conversion Tracking</h2>



<p class="wp-block-paragraph">Both Google and Microsoft have two parts to their tracking tag: a global tag that goes on every page of the website, (Microsoft calls this a UET tag, for &#8220;<a href="https://about.ads.microsoft.com/en-ca/solutions/audience-targeting/universal-event-tracking">Universal Event Tracking</a>&#8220;), and a conversion snippet. Both companies ask that that the global tag appears first in the document&#8217;s source. For Google this is because the <code class="language-javascript">gtag()</code> function used by the conversion snippet is defined by the global tag.</p>



<h3 class="wp-block-heading">Google Ads</h3>



<p class="wp-block-paragraph">Google really likes their global tag to be as high in the page&#8217;s source as possible &#8211; right after the opening <code class="language-html">&lt;head&gt;</code> tag if possible. Because of this I often put the global tag right into <code>header.php</code>. A more portable solution is to use the <code class="language-php">wp_head</code> hook so we&#8217;ll do that here:</p>



<pre class="wp-block-code language-php"><code>
function jb_set_up_google_tags() {

	// Start with the global tag.
?>
&lt;script async src="https://www.googletagmanager.com/gtag/js?id=UA-XXXXXXX-1">&lt;/script>
&lt;script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());
  gtag('config', 'UA-XXXXXXX-1');	// sets up Google Analytics - Google will give you the exact value
  gtag('config', 'AW-XXXXXXX');		// added for the conversion - Google will give you the exact value

  if (window.performance) {
    var timeSincePageLoad = Math.round(performance.now());
    gtag('event', 'timing_complete', {
      'name': 'load',
      'value': timeSincePageLoad,
      'event_category': 'JS Dependencies'
    });
  }
&lt;/script>
&lt;?php

	// Add the conversion tag IF this is an Order Complete page.
	if(is_order_received_page()) {
		global $wp;
		$order = wc_get_order($wp->query_vars['order-received']);
		if($order &amp;&amp; !$order->has_status( 'failed' )) {
?>		
&lt;!-- Event snippet for Sales conversion page -->
&lt;script>
  gtag('event', 'conversion', {
      'send_to': 'AW-XXXXXXX/XXXXXXXXX__XXXXX',		// Google will provide this value.
      'value': &lt;?php echo $order->get_subtotal(); ?>,
      'currency': 'USD',							// Change you deal with a different currency. Or set it dynamically.
      'transaction_id': '&lt;?php echo $order->get_order_number(); ?>'
  }); 
&lt;/script>
&lt;?php
		}
	}
}

// Set priority 1 to appear as soon as possible in the wp_head.
add_action( 'wp_head', 'jb_set_up_google_tags', 1 );</code></pre>



<p class="wp-block-paragraph">Boom! That&#8217;s it for Google.</p>



<h3 class="wp-block-heading">Microsoft Advertising</h3>



<p class="wp-block-paragraph">Microsoft advertising is very similar, except they <a href="https://help.ads.microsoft.com/#apex/3/en/56687/2">seem to suggest</a> that they want the conversion snippet before the closing <code class="language-html">&lt;/body></code> tag, and don&#8217;t seem to mind about the UET tag, so let&#8217;s just put them both in the <code class="language-php">wp_footer</code>:</p>



<pre class="wp-block-code language-php"><code>function jb_add_microsoft_advertising_tags() {

	// Start with the UET tag that goes on every page.
?>
&lt;script>(function(w,d,t,r,u){var f,n,i;w[u]=w[u]||[],f=function(){var o={ti:"XXXXXXX"};o.q=w[u],w[u]=new UET(o),w[u].push("pageLoad")},n=d.createElement(t),n.src=r,n.async=1,n.onload=n.onreadystatechange=function(){var s=this.readyState;s&amp;&amp;s!=="loaded"&amp;&amp;s!=="complete"||(f(),n.onload=n.onreadystatechange=null)},i=d.getElementsByTagName(t)[0],i.parentNode.insertBefore(n,i)})(window,document,"script","//bat.bing.com/bat.js","uetq");&lt;/script>
&lt;?php

	// Then add the conversion tag IF this is an Order Complete page.
	if(is_order_received_page()) {
		global $wp;
		$order = wc_get_order($wp->query_vars['order-received']);
		if($order &amp;&amp; !$order->has_status( 'failed' )) {

			$order_info = [
				'revenue_value' => $order->get_subtotal(),
				'currency' => 'USD'
			];
?>
&lt;script>
   window.uetq = window.uetq || [];
   window.uetq.push('event', '', &lt;?php echo json_encode($order_info); ?>);  
&lt;/script>
&lt;?php
		}
	} // end if this is an order received page.		

}
add_action( 'wp_footer', 'jb_add_microsoft_advertising_tags', 90 ); // Priority 90 to appear near the end.</code></pre>



<p class="wp-block-paragraph">Microsoft&#8217;s documentation on adding the conversion snippet is somewhat confusing. It talks about adding extra Javascript functions to supply the conversion value and doesn&#8217;t say what data type the conversion value should be, (let me know if you know). A Javascript function to extract the conversion value from the DOM might be a good idea when there&#8217;s no server-side access to the purchase data, but if you&#8217;re developing a WooCommerce theme or plugin you have the access you need to just print the conversion value in the tag with PHP, (as we did above).</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">That&#8217;s it. I heard that some people have trouble getting Bing working, (probably because of the extra-confusing directions from Microsoft), and I had trouble finding resources on adding conversion tags to the header for Google Ads. Hopefully this helps people with one, (or both), of the same questions.</p>
<p>The post <a href="https://johnbeales.com/2019/adding-google-ads-and-microsoft-advertising-conversion-tags-to-woocommerce/">Adding Google Ads and Microsoft Advertising Conversion Tags to WooCommerce</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/2019/adding-google-ads-and-microsoft-advertising-conversion-tags-to-woocommerce/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2124</post-id>	</item>
		<item>
		<title>Remove a model’s Global Scopes in Laravel Nova</title>
		<link>https://johnbeales.com/2019/remove-model-global-scopes-laravel-nova/</link>
					<comments>https://johnbeales.com/2019/remove-model-global-scopes-laravel-nova/#comments</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sun, 19 May 2019 17:04:12 +0000</pubDate>
				<category><![CDATA[code]]></category>
		<category><![CDATA[How To]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?p=2025</guid>

					<description><![CDATA[<p>I am working on a Laravel project that has moderated reviews. Most of the time we only deal with reviews that have been approved, so the Review model has an ApprovedScope Global Scope to only show approved review, but staff members need to see un-approved reviews in our Nova admin so that we can approve, [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/2019/remove-model-global-scopes-laravel-nova/">Remove a model’s Global Scopes in Laravel Nova</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I am working on a <a href="https://laravel.com/">Laravel</a> project that has moderated reviews. Most of the time we only deal with reviews that have been approved, so the <code>Review</code> model has an <code>ApprovedScope</code> <a href="https://laravel.com/docs/5.8/eloquent#global-scopes">Global Scope</a> to only show approved review, but staff members need to see un-approved reviews in our <a href="https://nova.laravel.com/">Nova</a> admin so that we can approve, (or reject), reviews. Removing a Global Scope from a model for all of Nova is trickier than it appears at first glance, but there’s at least one way to do it, and maybe more.</p>



<h2 class="wp-block-heading">Things that do not work</h2>



<h3 class="wp-block-heading">Call <code>withoutGlobalScopes()</code> in the <code>Nova::serving()</code> callback</h3>



<p class="wp-block-paragraph">Googling “remove global scope nova” turns up a post on Medium called <a href="https://medium.com/laravel-nova/apply-global-scopes-in-nova-only-b9a3563a657f">Add or remove global scopes in Nova</a>. Sounds promising! It claims we can remove global scopes by adding this to the boot method of the `<code>NovaServiceProvider</code>:</p>



<pre class="wp-block-code language-php"><code>class NovaServiceProvider extends NovaApplicationServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        Nova::serving(function () {
            \App\Rating::withoutGlobalScopes();
        });
    }
}</code></pre>



<p class="wp-block-paragraph">Cool! But it doesn’t work. When adding a global scope to a model using the model’s boot method like the <a href="https://laravel.com/docs/5.8/eloquent#global-scopes">Laravel documentation shows</a>, the model’s <code>boot</code> method is called <em>after</em> the <code>Nova::serving()</code> callback. So in this situation we remove nothing from the <code>Rating</code>, then add a global scope later when the model is booted.</p>



<h3 class="wp-block-heading">Call <code>withoutGlobalScopes()</code> in the model’s booted event</h3>



<p class="wp-block-paragraph">If a model has a global scope added during its boot then we should be able to remove it during the ‘booted’ event &#8211; or at least that’s what I thought, so I tried this in <code>NovaServiceProvider::boot</code> :</p>



<pre class="wp-block-code language-php"><code>Nova::serving(function() {
    Event::listen('eloquent.booted: App\Rating', function($rating) {
        Rating::withoutGlobalScopes();
    });
}); </code></pre>



<p class="wp-block-paragraph">No dice. I&#8217;m not certain why this doesn’t work, but some XDebug spelunking shows me that:</p>



<ol class="wp-block-list"><li>There’s no <code>withoutGlobalScopes()</code> method on Laravel models, but when the model gets a method call that it doesn’t recognize it passes it to the model’s Builder instance.</li><li>The <code>Builder</code> does have a <code>withoutGlobalScopes</code> method, so we don’t get an <code>InvalidMethodException</code>. In the Builder’s <code>withoutGlobalScopes</code> call the <code>ApprovedScope</code> <em>is</em> removed from the <code>Builder</code>’s list of global scopes.</li><li>But the Global Scope <strong>is still applied</strong> to the query. My best guess is that a different query builder is used to actually generate results, <em>or</em> that later, when the models are about to be retrieved from the DB, the model re-passes the list of Global Scopes to the builder &#8211; and since we haven’t removed the Global Scope from the model it gets re-added to the Query Builder. If anyone knows what’s actually going on here I would love to know in the comments or <a href="https://twitter.com/johnbeales">on Twitter</a>.</li></ol>



<h2 class="wp-block-heading">Something that does work</h2>



<p class="wp-block-paragraph">We need to remove the Global Scope <em>after</em> the model has booted and prevent it from being passed or re-passed to the Query Builder. How about a <code>Model::withoutGlobalScopes</code> method? The model’s <code>addGlobalScope</code> method comes from the <code>Illuminate\Database\Eloquent\Concerns\HasGlobalScopes</code> trait, and stores the global scopes in a <code>static::$globalScopes[static::class]</code> array. Creating our own <code>HasRemovableGlobalScopes</code> trait, with <code>withoutGlobalScope</code> and <code>withoutGlobalScopes</code> methods that mirror the signature of the <code>Illuminate\Database\Eloquent\Builder</code> <code>withoutGlobalScope</code> and <code>withoutGlobalScopes</code> methods can solve the problem, (also <a href="https://gist.github.com/jbeales/c6e21e621def6c2dd630ec9d15a23891">available as a Gist</a>):</p>



<pre class="wp-block-code language-php"><code>&lt;?php

namespace App\Concerns;

use Closure;
use Illuminate\Database\Eloquent\Scope;
use Illuminate\Support\Arr;

trait HasRemovableGlobalScopes {

	/**
	 * @param  \Illuminate\Database\Eloquent\Scope|string  $scope
	 */
	public static function withoutGlobalScope( $scope )
	{
		if (is_string($scope) &amp;&amp; is_array(static::$globalScopes[static::class])) {
			Arr::forget(static::$globalScopes[static::class], $scope);
		} elseif ($scope instanceof Closure) {
			Arr::forget(static::$globalScopes[static::class], spl_object_hash($scope));
		} elseif ($scope instanceof Scope) {
			Arr::forget(static::$globalScopes[static::class], get_class($scope));
		}
	}

	/**
	 * @param \Illuminate\Database\Eloquent\Scope[]|string[] $scopes
	 */
	public static function withoutGlobalScopes( array $scopes = [])
	{
		if(empty($scopes)) {
			static::$globalScopes = [];
		} else {
			foreach($scopes as $scope) {
				static::withoutGlobalScope($scope);
			}
		}
	}
}</code></pre>



<p class="wp-block-paragraph">The <code>withoutGlobalScope</code> method mirrors the <code>HasGlobalScopes::addGlobalScope</code> method to remove a single global scope, and the <code>withoutGlobalScopes</code> method can accept an array of global scopes to remove or be called with no parameters to remove all global scopes, (the same as <code>Builder::withoutGlobalScopes</code>).</p>



<h3 class="wp-block-heading">A drawback?</h3>



<p class="wp-block-paragraph">The fact that we have to do this to remove global scopes for Nova seems to be an oversight. I’m hopeful that <code>withoutGlobalScope</code>/<code>withoutGlobalScopes</code> methods will be added to future versions of Laravel. If that happens there will be a method name collision between the <code>HasRemovableGlobalScopes</code> trait’s methods and the first-party ones, so read the release notes if you’re going to use this method.</p>



<h2 class="wp-block-heading">Something else that might work</h2>



<p class="wp-block-paragraph">After writing the <code>HasRemovableGlobalScopes</code> trait I realized it should be possible to create an additional global scope that undoes my original global scope. In this case something like this might work:</p>



<pre class="wp-block-code language-php"><code>Nova::serving(function() {
    Event::listen('eloquent.booted: App\Rating', function($rating) {
        Rating::addGlobalScope(new AllRatingsScope);
    });
}); </code></pre>



<p class="wp-block-paragraph">Where <code>AllRatingsScope</code> says to include all ratings. I haven’t tried this so don’t know what happens when there are two global scopes that specify opposite conditions. You might get no results, or the scope that’s applied last might win. Assuming that the scope applied last wins it’s still important to use the eloquent.booted event to make sure the “undo” scope is added after the original scope.</p>



<h2 class="wp-block-heading">All together now</h2>



<p class="wp-block-paragraph">I&#8217;m sticking with the <code>HasRemovableGlobalScopes</code> trait. I feel like actually removing the Global Scope is more logical than adding another scope to undo what the first one does. Using the <code>HasRemovableGlobalScopes</code> trait, this is what my whole system looks like:</p>



<p class="wp-block-paragraph">Apply the original global scope to the <code>Rating</code>, (or wherever you need a global scope), and use the <code>HasRemovableGlobalScopes</code> trait:</p>



<pre class="wp-block-code language-php"><code>class Rating extends Model
{
	use HasRemovableGlobalScopes;

	// ... 

	protected static function boot()
	{
		parent::boot();
		static::addGlobalScope(new ApprovedScope);
	}

	// ...
}</code></pre>



<p class="wp-block-paragraph">Set the event listener in the <code>NovaServiceProvider</code>’s boot method to remove the global scope for Nova:</p>



<pre class="wp-block-code language-php"><code>class NovaServiceProvider extends NovaApplicationServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
	    Nova::serving(function() {

		    Event::listen('eloquent.booted: App\Rating', function($rating) {
			    Log::info('rating booted ' . request()->url());
		    	Rating::withoutGlobalScopes();
	        });
	    });

	    parent::boot();
    }
}</code></pre>



<p class="wp-block-paragraph">It works well for me. A possible enhancement would be to have my own <code>App\Model</code> class that extends Laravel&#8217;s <code>Model</code> and uses <code>HasRemovableGlobalScopes</code>, then extend my other models from that. At the moment I don&#8217;t have my own <code>App\Model</code>, and don&#8217;t have a lot of places where I need to share between all my models, but if I find I&#8217;m sprinkling too many <code>use HasRemovableGlobalScopes</code> lines around my code base I&#8217;ll make the change.</p>
<p>The post <a href="https://johnbeales.com/2019/remove-model-global-scopes-laravel-nova/">Remove a model’s Global Scopes in Laravel Nova</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/2019/remove-model-global-scopes-laravel-nova/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2025</post-id>	</item>
		<item>
		<title>Red Sparrow</title>
		<link>https://johnbeales.com/books/red-sparrow/</link>
					<comments>https://johnbeales.com/books/red-sparrow/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sun, 17 Mar 2019 23:04:49 +0000</pubDate>
				<category><![CDATA[cia]]></category>
		<category><![CDATA[russia]]></category>
		<category><![CDATA[spy]]></category>
		<category><![CDATA[spy novel]]></category>
		<category><![CDATA[thriller]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1968</guid>

					<description><![CDATA[<p>Sleep is important, so I have been trying to avoid reading late, but Red Sparrow kept me reading long after my bedtime, (not that that&#8217;s hard). If the ads are to be believed, (and maybe they&#8217;re not), Red Sparrow was made into a very sexy, very violent, movie starting Jennifer Lawrence. There is a lot [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/red-sparrow/">Red Sparrow</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Sleep is important, so I have been trying to avoid reading late, but <em>Red Sparrow</em> kept me reading long after my bedtime, (not that that&#8217;s hard). If <a href="https://www.youtube.com/watch?v=PmUL6wMpMWw">the ads</a> are to be believed, (and <a href="https://halifaxbloggers.ca/flawintheiris/2018/03/red-sparrow-review-jennifer-lawrence-is-much-better-than-the-film-shes-in/">maybe they&#8217;re not</a>), <em>Red Sparrow</em> was made into a very sexy, very violent, movie starting Jennifer Lawrence. There is a lot of sex in the book to draw on: It&#8217;s pretty clear that Dominika is the sexiest woman ever to walk the earth, and she&#8217;s described through a very male gaze. It sounds like Nate&#8217;s not to shabby either, but author Jason Matthews doesn&#8217;t spend time talking about his attractiveness.</p>
<p>With that out of the way, <em>Red Sparrow</em> is a great spy novel set in the modern era with Putin in charge of Russia. While there are holes, (why would Nate, a young agent just out of CIA school, be handling the CIA&#8217;s most important informer in Russia?), the time in the streets and developed complex relationships, (and at least some personalities), make the book hard to put down. It&#8217;s clear that the relationship between Nate and Dominika will be important in the trilogy, (yes, this is the start of a trilogy! I hope the next two books are as great as the first). Although maybe the author should kill Nate &#8211; that would be a heartbreaking move that would let Dominika&#8217;s character become dominant.</p>
<p>Like many Russian spy novels there are a lot of random words and phrases in Russian sprinkled in the text. In <em>Red Sparrow</em> it&#8217;s a technique used when two bilingual characters are talking, so <a href="https://en.wikipedia.org/wiki/Code-switching">code switching</a> is natural. Unfortunately for me I don&#8217;t understand Russian so I feel like I&#8217;m missing a little bit of information. Mr. Mathews tries, (it seems, but I since I don&#8217;t understand Russian I&#8217;m not 100% sure), to try to provide a phrase to explain what was expressed in Russian when it&#8217;s not too awkward, so that helps, but if possible I will add an English-Russian dictionary to my Kobo.</p>
<p>The sense of place is very strong in <em>Red Sparrow</em>; the all of the places in the story feel extremely real. Looking back at other books I have realized that this is something I really love in books, for example it&#8217;s why I liked <em><a href="https://johnbeales.com/books/the-night-circus/">The Night Circus</a></em> so much even though the last part of the plot is somewhat weak.</p>
<p>The atmosphere is especially compelling in the final scene of the book, which itself is a combination of an amazing cliffhanger and a great place to end the story. This makes it a great place to end the first book of a trilogy, but even if there weren&#8217;t two more books coming it would be a good place to end the story. I would be grumpy about some unresolved parts of the story, but not every book has to tie up every plot point perfectly, in fact, I often like it better when they don&#8217;t. Since I know that there are two more books, though, I might get my story tied up nicely in a bow, so long as Jason Matthews doesn&#8217;t wreck it in the next two books.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/9781501171574/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/9781501171574/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/9781501171574/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/red-sparrow/">Red Sparrow</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/red-sparrow/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1968</post-id>	</item>
		<item>
		<title>The Man in High Castle</title>
		<link>https://johnbeales.com/books/the-man-in-high-castle/</link>
					<comments>https://johnbeales.com/books/the-man-in-high-castle/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sun, 17 Mar 2019 23:04:05 +0000</pubDate>
				<category><![CDATA[alternate reality]]></category>
		<category><![CDATA[historical fiction]]></category>
		<category><![CDATA[sci-fi]]></category>
		<category><![CDATA[science-fiction]]></category>
		<category><![CDATA[supernatural]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1966</guid>

					<description><![CDATA[<p>I learned that The Man in High Castle exists after my sister mentioned seeing imperial Japanese vehicles that said something like &#8220;Imperial Japanese Government of San Francisco&#8221; on them in her neighbourhood, so the TV series The Man in High Castle must be filming close by. An alternate reality novel where the allies lost the [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/the-man-in-high-castle/">The Man in High Castle</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>I learned that The Man in High Castle exists after my sister mentioned seeing imperial Japanese vehicles that said something like &#8220;Imperial Japanese Government of San Francisco&#8221; on them in her neighbourhood, so the TV series The Man in High Castle must be filming close by. An alternate reality novel where the allies lost the second world war sounded interesting, and since the TV series is pretty successful it&#8217;s easy to borrow the e-book from my library.</p>
<p>In a story where the Nazis and Imperial Japanese won the second world war race is important, and treated very differently from the how it is in the real world. Reading a 1962 novel in 2019 is slightly weird with regards to race. Philip K Dick does not seem to be racist, (from some internet reading it seems like wasn&#8217;t, and dreamed of true racial equality, which we are far from achieving), but word choices made in the early sixties would not be made today, and someone who hasn&#8217;t read much from the mid 20-th century recently it&#8217;s slightly jarring.</p>
<p>It also took me a while to get used to the way Tagomi&#8217;s dialogue, (both inner and outer), is written. It feels like sentences are structured the way that native Japanese-speakers speak English when they&#8217;re functional English speakers but yet to achieve mastery. I don&#8217;t know what Philip K Dick is trying to show, maybe he&#8217;s trying to portray an accent, (but other Japanese characters seem to speak more fluently than Tagomi thinks), maybe he&#8217;s trying to show that Tagomi thinks differently from many other people, or maybe something else altogether.</p>
<p>I felt like sometimes we spent way too long inside characters heads, especially Tagomi. This isn&#8217;t my favourite thing to read in any book, and would have preferred less, but it&#8217;s also important to the character of The Man in High Castle. In my first reading I missed Tagomi stepping into an alternate timeline where the <a href="https://www.sfchronicle.com/chronicle_vault/article/An-ode-to-the-Embarcadero-Freeway-the-blight-by-11543621.php">Embarcadro Expressway</a> exists. Going back and re-reading that section I can see it, but it&#8217;s not so clear that someone not familiar with the 60s, and not familiar with San Francisco, would notice it.</p>
<p>It wasn&#8217;t until after I had finished reading the book that I found Philip K Dick is also the author of famous books like Total Recall, Minority Report, A Scanner Darkly, and Do Androids Dream of Electric Sheep. Because I went in blind I did not expect any science-fiction, so when the sci-fi touches appeared I either missed them entirely, (Tagomi), or was surprised and entertained. I will be reading more Philip K Dick, and paying better attention when I do.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/0547572484/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/0547572484/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/0547572484/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-man-in-high-castle/">The Man in High Castle</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-man-in-high-castle/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1966</post-id>	</item>
		<item>
		<title>The Travelers</title>
		<link>https://johnbeales.com/books/the-travelers/</link>
					<comments>https://johnbeales.com/books/the-travelers/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sat, 02 Mar 2019 23:32:47 +0000</pubDate>
				<category><![CDATA[spy novel]]></category>
		<category><![CDATA[thriller]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1959</guid>

					<description><![CDATA[<p>Lots of characters, but not so many that they&#8217;re confusing Ludlum-style, and lots of tension, make for a great, and unconventional, (the spy is a magazine writer! In modern times!), spy novel. I hear Chris Pavone has written a couple of other novels &#8211; I&#8217;m going to have to seek them out. Want to read [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/the-travelers/">The Travelers</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Lots of characters, but not so many that they&#8217;re confusing <a href="https://johnbeales.com/writer/robert-ludlum/">Ludlum</a>-style, and lots of tension, make for a great, and unconventional, (the spy is a magazine writer! In modern times!), spy novel. I hear <a href="https://johnbeales.com/writer/chris-pavone/">Chris Pavone</a> has written a couple of other novels &#8211; I&#8217;m going to have to seek them out.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/0385348487/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/0385348487/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/0385348487/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-travelers/">The Travelers</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-travelers/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1959</post-id>	</item>
		<item>
		<title>The Whistler</title>
		<link>https://johnbeales.com/books/the-whistler/</link>
					<comments>https://johnbeales.com/books/the-whistler/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sun, 24 Feb 2019 20:38:29 +0000</pubDate>
				<category><![CDATA[lawyers]]></category>
		<category><![CDATA[mystery]]></category>
		<category><![CDATA[thriller]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1952</guid>

					<description><![CDATA[<p>Time for an escape. The Whistler was enjoyable, maybe not as much as something like Sycamore Row, but I have yet to read a truly bad John Grisham novel. But, I looked at some of the discussion questions at the end of the book and they started to poke some holes in the way some [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/the-whistler/">The Whistler</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Time for an escape. <em>The Whistler</em> was enjoyable, maybe not as much as something like <em><a href="https://johnbeales.com/books/sycamore-row/">Sycamore Row</a></em>, but I have yet to read a truly bad <a href="https://johnbeales.com/writer/john-grisham/">John Grisham</a> novel.</p>
<p>But, I looked at some of the discussion questions at the end of the book and they started to poke some holes in the way some relationships developed over the course of the book. It would be a good exercise to start writing out answers to any discussion points provided by the publisher. It might make me a more critical reader.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/0399565205/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/0399565205/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/0399565205/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-whistler/">The Whistler</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-whistler/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1952</post-id>	</item>
		<item>
		<title>10% Happier</title>
		<link>https://johnbeales.com/books/10-percent-happier/</link>
					<comments>https://johnbeales.com/books/10-percent-happier/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sun, 24 Feb 2019 20:30:26 +0000</pubDate>
				<category><![CDATA[happiness]]></category>
		<category><![CDATA[meditation]]></category>
		<category><![CDATA[mindfulness]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[self-help]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1950</guid>

					<description><![CDATA[<p>Funny lights you see behind your eyes when they&#8217;re closed real tight. I was worried that I was the only person that sees those. They help me fall asleep. Apparently Dan Harris sees them too. The idea of exercising my mind is interesting, and meditation seems is a common thread among many successful people. 10% [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/10-percent-happier/">10% Happier</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<blockquote><p>Funny lights you see behind your eyes when they&#8217;re closed real tight.</p></blockquote>
<p>I was worried that I was the only person that sees those. They help me fall asleep. Apparently Dan Harris sees them too.</p>
<p>The idea of exercising my mind is interesting, and meditation seems is a common thread among many successful people. <em>10% Happier</em> seems tis a good introduction to the concept of mindfulness meditation that has its roots in Buddhism. I&#8217;ve tried meditation in the past using the Headspace app and <em>10% Happier</em> got me interested again. Interestingly, even though Dan Harris starts out agnostic, and <em>10% Happier</em> made me more interested in the &#8220;woo-woo&#8221; side of meditation. I&#8217;ll have to do some more reading.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/0062265431/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/0062265431/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/0062265431/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/10-percent-happier/">10% Happier</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/10-percent-happier/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1950</post-id>	</item>
		<item>
		<title>The Martian</title>
		<link>https://johnbeales.com/books/the-martian/</link>
					<comments>https://johnbeales.com/books/the-martian/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sat, 16 Feb 2019 19:22:17 +0000</pubDate>
				<category><![CDATA[astronaut]]></category>
		<category><![CDATA[mars]]></category>
		<category><![CDATA[nasa]]></category>
		<category><![CDATA[science-fiction]]></category>
		<category><![CDATA[scifi]]></category>
		<category><![CDATA[space]]></category>
		<category><![CDATA[space travel]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1938</guid>

					<description><![CDATA[<p>After some history books it was time for the future. Since the future is unwritten, it was time for fiction. The Martian was pretty great. I like Mark, and he was able to surprise me throughout the book. Other than being left behind on Mars he was pretty lucky. At one point, when he thinks [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/the-martian/">The Martian</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>After some <a href="https://johnbeales.com/books/dead-wake/">history</a> <a href="https://johnbeales.com/books/unbroken/">books</a> it was time for the future. Since the future is unwritten, it was time for fiction. The Martian was pretty great. I like Mark, and he was able to surprise me throughout the book. Other than being left behind on Mars he was pretty lucky. At one point, when he thinks he&#8217;s really going to be able to go home, he talks about how it&#8217;ll be strange to heave his home, and I thought, &#8220;oh no, here comes <a href="https://johnbeales.com/books/unbroken/">the PTSD</a>.&#8221;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/0553418025/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/0553418025/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/0553418025/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-martian/">The Martian</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-martian/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1938</post-id>	</item>
		<item>
		<title>Unbroken</title>
		<link>https://johnbeales.com/books/unbroken/</link>
					<comments>https://johnbeales.com/books/unbroken/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sat, 16 Feb 2019 17:55:45 +0000</pubDate>
				<category><![CDATA[alcoholism]]></category>
		<category><![CDATA[pacific]]></category>
		<category><![CDATA[pow]]></category>
		<category><![CDATA[prisoner of war]]></category>
		<category><![CDATA[survival]]></category>
		<category><![CDATA[world war two]]></category>
		<category><![CDATA[wwii]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1936</guid>

					<description><![CDATA[<p>Every time I read a story of survival I&#8217;m amazed at what people can put up with and still come out the other side. Unbroken is both a biography and a story of survival. Louis Zamperini&#8217;s pre-war life is amazing enough: he was an uncontrollable kid born to an immigrant family, the town troublemaker turned [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/unbroken/">Unbroken</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Every time I read a story of survival I&#8217;m amazed at what people can put up with and still come out the other side. Unbroken is both a biography and a story of survival. Louis Zamperini&#8217;s pre-war life is amazing enough: he was an uncontrollable kid born to an immigrant family, the town troublemaker turned star olympic athlete, and even thief of a flag from Hitler&#8217;s house, (a little bit of the troublemaker stuck around).</p>
<p>During the war Zamperini&#8217;s bomber had to ditch into the Pacific, but he survived the crash then he and his pilot set a record for time alive in a rubber raft before ending up in the Japanese POW system. Louis seemed to be able to adapt to whatever environment he was in: School, the Army Air Force, a raft, POW camps, and eventually home, (which might have been the toughest). During the war, at least, he made sure to prepare himself for any possible situation, especially the possibility of having to survive at sea, by learning as much as possible.</p>
<p><em>Unbroken</em> was published in 2010. It may be one of the last great biographies of the greatest generation, and the last war stories that relies on first-hand accounts. In writing <em>Unbroken</em> Laura Hillenbrand was able to interview many of the people featured in the book. By the time the book was published most of those survivors were gone, today I believe they all are.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/9781400064168/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/9781400064168/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/9781400064168/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/unbroken/">Unbroken</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/unbroken/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1936</post-id>	</item>
		<item>
		<title>Give a Sh*t</title>
		<link>https://johnbeales.com/books/give-a-sht/</link>
					<comments>https://johnbeales.com/books/give-a-sht/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Fri, 15 Feb 2019 22:37:34 +0000</pubDate>
				<category><![CDATA[environment]]></category>
		<category><![CDATA[environmentalism]]></category>
		<category><![CDATA[green]]></category>
		<category><![CDATA[low impact]]></category>
		<category><![CDATA[vegan]]></category>
		<category><![CDATA[vegetarian]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1934</guid>

					<description><![CDATA[<p>This isn&#8217;t the first environmental book I have read, so there wasn&#8217;t a ton of material that I hadn&#8217;t already read or heard somewhere, but Give a Sh*t is an easy read, and it&#8217;s been a while since I read many of those other books so this was a good reminder how little some of [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/give-a-sht/">Give a Sh*t</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>This isn&#8217;t the first<a href="https://johnbeales.com/books/the-omnivores-dilemma/"> environmental</a> <a href="https://johnbeales.com/books/eating-animals/">book</a> <a href="https://johnbeales.com/books/no-impact-man/">I have</a> <a href="https://johnbeales.com/books/food-matters/">read</a>, so there wasn&#8217;t a ton of material that I hadn&#8217;t already read or heard somewhere, but <em>Give a Sh*t</em> is an easy read, and it&#8217;s been a while since I read many of those other books so this was a good reminder how little some of what we do makes sense.</p>
<p>Ms. Piper is a strong believer in veganism yet maintains an encouraging attitude of &#8220;do as much as you can&#8221; throughout the book without coming across as judgemental as many proponents of veganism do. I had forgotten just how much of a climate change impact animal production has on the world, and while I enjoy a <a href="https://www.instagram.com/p/BYWLaimAmV5/">good</a> <a href="https://www.instagram.com/p/BZwRJRkgPrv/">BLT</a> it should be a luxury, not my staple diet. <em>Give a Sh*t</em> got me thinking more about the food we eat, and the way animal-based food production has changed over the past century makes me angry. Yes, we get more food output per food input than we did a hundred years ago, but we have externalized so much of food production that it&#8217;s not a true comparison. At one point animals were a part of a full system on a farm: they are able to dispose of by-products of grain and vegetable production, provide nutritious food, (especially at times of the year when we might be running out of plant-based food), and make fertilizer that helps grow grains and vegetables. The modern food production system has turned this on its head: we use synthetic fertilizers to grow grains to feed animals, then have to dispose of their &#8220;by-products&#8221; somehow. By prioritizing meat and dairy society has taken what should be a self-reinforcing system of production and turned it into something with many inputs and externalities. The concept of &#8220;oil needed to produce a pound of beef&#8221; seems wrong, yet it is something measurable.</p>
<p>From an animal welfare side we have mucked up the system as well. Eating meat means killing animals, and eating dairy means taking milk that should probably be going to a baby animal, and we can choose how we feel about eating those products. But eggs are a by-product of a hen&#8217;s life. Hens don&#8217;t need roosters to produce eggs, and eating an egg doesn&#8217;t have to mean we&#8217;re snuffing out a potential life. On the 100-years-ago farm chickens would eat bugs &amp; leftovers around the farm, and we would get tasty eggs as a by-product. Today egg-laying hens are caged indoors for their entire lives in horrible little boxes, so a formerly a guilt-free delicious food has become something that causes animal abuse.</p>
<p>Back to the book: Ms. Piper goes through great ways to live well without having a huge impact on the world, and her lists of brands that offer <a href="http://www.ashleepiper.com/lbb/"><em>Give a Sh*t</em> compatible products</a> seem like a great resource.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/0762464488/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/0762464488/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/0762464488/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/give-a-sht/">Give a Sh*t</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/give-a-sht/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1934</post-id>	</item>
		<item>
		<title>FormRequest object Validation for Laravel Nova Resources</title>
		<link>https://johnbeales.com/2019/formrequest-object-validation-for-laravel-nova-resources/</link>
					<comments>https://johnbeales.com/2019/formrequest-object-validation-for-laravel-nova-resources/#comments</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Fri, 15 Feb 2019 21:21:49 +0000</pubDate>
				<category><![CDATA[code]]></category>
		<category><![CDATA[Hints, Techniques & More]]></category>
		<category><![CDATA[form values]]></category>
		<category><![CDATA[formrequest]]></category>
		<category><![CDATA[laravel]]></category>
		<category><![CDATA[laravel nova]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[validation]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?p=1919</guid>

					<description><![CDATA[<p>Laravel Nova gives us developers a relatively easy way to set up an administration panel for a website or app, but it&#8217;s been publicly available for less than a year and is only at version 1.3.1, so there are a few rough edges, like the inability to use FormRequest objects for validation when updating models, [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/2019/formrequest-object-validation-for-laravel-nova-resources/">FormRequest object Validation for Laravel Nova Resources</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><a href="https://nova.laravel.com">Laravel Nova</a> gives us developers a relatively easy way to set up an administration panel for a website or app, but it&#8217;s been <a href="https://laravel-news.com/laravel-nova-release">publicly available</a> for less than a year and is only at version 1.3.1, so there are a few rough edges, like the inability to use <a href="https://laravel.com/docs/5.7/validation#form-request-validation"><code class="language-php">FormRequest</code></a> objects for validation when updating models, (called &#8220;<a href="https://nova.laravel.com/docs/1.0/resources/#defining-resources">Resources</a>&#8221; in Nova parlance). </p>



<p class="wp-block-paragraph"><code class="language-php">FormRequest</code> objects are a way to detach form validation from specific controllers or routes so that the validation logic can be re-used, for example by using the same <code class="language-php">FormRequest</code> object to validate updates made on a website or through an API. But they&#8217;re not supported by Nova so validation code needs to be re-written for Nova resources, or does it?</p>



<h2 class="wp-block-heading">Comparing Laravel to Nova Validation</h2>



<p class="wp-block-paragraph">Validation rules in Nova are the same as the rest of Laravel, with the at least one tiny change in syntax, but instead of being passed around as one big list, each field has validation attached directly to it when defining the field. Here is the difference between rules in a <code class="language-php">FormRequest</code>, (it&#8217;s the same whether using a <code class="language-php">FormRequest</code>, <code class="language-php">Validator</code> object, or in a controller), and rules for Nova fields:</p>



<h3 class="wp-block-heading">Rules using a FormRequest</h3>



<pre class="wp-block-code language-php"><code>namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;

class StorePostRequest extends FormRequest
{
     // ....
	
     /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        // note all rules are returned as an array
    	return [
	        'title' => 'required|unique:posts|max:255',
	        'body' => 'required',
	    ];
    }

    // ....
}</code></pre>



<h3 class="wp-block-heading">Rules using Laravel Nova</h3>



<pre class="wp-block-code language-php"><code>namespace App\Nova;

use Laravel\Nova\Fields\ID;
use Illuminate\Http\Request;
use Laravel\Nova\Fields\Text;
use Laravel\Nova\Fields\Textarea;


class Post extends Resource
{

    // ...
	
    /**
     * Get the fields displayed by the resource.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function fields(Request $request)
    {

    	return [

    		// ...
    		
                // In Nova the rules are attached to fields, which themselves are an array.
    		Text::make('Title')->rules('required', 'unique:posts', 'max:255'),
    		Textarea::make('Body')->rules('required')

    		// ...

    	];
    }

    // ...
}</code></pre>



<p class="wp-block-paragraph">The &#8220;Laravel Way&#8221; to use a <code class="language-php">FormRequest</code> for validation would be to type hint the <code class="language-php">$request</code> passed to the <code class="language-php">fields</code> method like this, (but it doesn&#8217;t work, apparently ):</p>



<pre class="wp-block-code language-php"><code>namespace App\Nova;

use Illuminate\Http\Request;
use App\Http\Requests\StorePostRequest;


class Post extends Resource
{
    // ...

    // This type-hint produces a fatal error
    public function fields(StorePostRequest $request)
    {
    	return [
    		// ...
    	];
    }

    // ...
}</code></pre>



<p class="wp-block-paragraph">I&#8217;m actually not sure why the error is produced. The error I get says that <code class="language-php">Post@fields</code> expects an instance of <code class="language-php">Illuminate\Http\Request</code>, and that <code class="language-php">StorePostRequest</code> isn&#8217;t one, but I am pretty sure it <em>is</em> an instance of <code class="language-php">Illuminate\Http\Request</code>. Either way it doesn&#8217;t work, and <a href="https://github.com/laravel/nova-issues/issues/106#issuecomment-433490167">that&#8217;s the expected behaviour</a>, so a workaround is needed.</p>



<h2 class="wp-block-heading">A Workaround</h2>



<p class="wp-block-paragraph">One way to only write validation rules once is to move them into a static method on the <code class="language-php">FormRequest</code> object that has an optional <code class="language-php">$rule</code> parameter to fetch one rule at a time if needed. Since Nova allows separate <code class="language-php">creationRules</code> and <code class="language-php">updateRules</code> for each field there should be three corresponding static methods on the <code class="language-php">FormRequest</code>, and the non-static <code class="language-php">rules</code> method can merge the rules for the rest of Laravel if needed. </p>



<p class="wp-block-paragraph">Here&#8217;s the <code class="language-php">FormRequest</code> class I&#8217;m using to provide validation rules for adding and editing users in an application I&#8217;m working on:</p>



<pre class="wp-block-code language-php"><code>
namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
use App\Rules\Postalcode;


class StoreUserRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
	    // Users authorized to make the request are:
	    // - users updating themselves.
	    // - staff
	    // - guests creating a new user.


        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {

    	$rules = self::ruleGetter($this);


	    if(empty($this->user())) {
		    $rules = array_merge_recursive($rules, self::creationRuleGetter($this));
	    } else {
		    $rules = array_merge_recursive($rules, self::updateRuleGetter($this));
	    }

	    return $rules;
    }

    public static function ruleGetter( $request, $rule = null ) {

	    $rules = [
		    'email' => [
			    'required',
			    'string',
			    'email',
			    'max:255'
		    ],
		    'nickname' => [
			    'required',
			    'max:255'
		    ],
		    'job_title' => [
		    	'sometimes',
		        'max:255'
		    ],
		    'organization' => [
			    'sometimes',
			    'max:255'

		    ],
		    'state' => [
		    	'sometimes',
			    'nullable',
			    'in:AL,IS,TO,FS,TA,TE,S'
			],
		    'postalcode' => [
			    'sometimes',
			    new Postalcode
		    ],

		    'phone' => [
		    	'max:255'
		    ]
	    ];

	    if(!empty($rule)) {
	    	if(isset($rules[$rule])) {
			    return $rules[$rule];
		    }
	    	return '';
	    }
	    return $rules;
    }

    public static function creationRuleGetter( $request, $rule = null ) {
	    $rules = [
	    	'email' => [
	    		'unique:users,email'
		    ],

	        'nickname' => [
	        	'required',
		        'unique:users,nickname'
	        ],

		    'password' => [
			    'sometimes',
			    'required',
			    'string',
			    'min:8',
			    'confirmed'
		    ],
	    ];


	    if(!empty($rule)) {
		    if(isset($rules[$rule])) {
			    return $rules[$rule];
		    }
		    return '';
	    }
	    return $rules;

    }

    public static function updateRuleGetter( $request, $rule = null ) {


    	$rules = [
    		'email' =>  [
		        Rule::unique('users', 'email')->ignore($request->user()->id)
		    ],

		    'nickname' => [
			    Rule::unique('users', 'nickname')->ignore($request->user()->id)
		    ],

		    'password' => [
			    'sometimes',
			    'nullable',
			    'string',
			    'min:8',
			    'confirmed'
		    ],
	    ];

	    if(!empty($rule)) {
		    if(isset($rules[$rule])) {
			    return $rules[$rule];
		    }
		    return '';
	    }
	    return $rules;
    }

}</code></pre>



<p class="wp-block-paragraph">Then, in the Nova resource the rules can be attached to individual fields like this:</p>



<pre class="wp-block-code language-php"><code>&lt;?php

namespace App\Nova;

use Laravel\Nova\Fields\ID;
use Illuminate\Http\Request;
use Laravel\Nova\Fields\Text;
use Laravel\Nova\Fields\Boolean;
use Laravel\Nova\Fields\Gravatar;
use Laravel\Nova\Fields\Select;
use Laravel\Nova\Fields\Password;
use Laravel\Nova\Panel;
use Laravel\Nova\Fields\DateTime;
use Laravel\Nova\Fields\Textarea;
use Laravel\Nova\Fields\Place;
use Laravel\Nova\Http\Requests\NovaRequest;


use App\Http\Requests\StoreUserRequest;

class User extends Resource
{

    /**
     * The model the resource corresponds to.
     *
     * @var string
     */
    public static $model = 'App\\User';


    // ....


   /**
     * Get the fields displayed by the resource.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function fields(Request $request)
    {

        return [
            ID::make()->sortable(),

            Gravatar::make(),

	        Text::make('Email')
		        ->sortable()
			    ->withMeta( [
			    	'extraAttributes' => [
			    		'type' => 'email'
				    ]
			    ])
		        ->rules(StoreUserRequest::ruleGetter($request, 'email'))
		        ->creationRules(StoreUserRequest::creationRuleGetter($request, 'email'))
		        ->updateRules('unique:users,email,{{resourceId}}'),

		    Password::make('Password')
		            ->onlyOnForms()
		            ->rules(StoreUserRequest::ruleGetter($request, 'password')),

		    Text::make('Name', 'name')
		        ->sortable()
		        ->rules(StoreUserRequest::ruleGetter($request, 'name')),

		    Text::make('Preferred Name')
		        ->rules(StoreUserRequest::ruleGetter($request, 'preferred_name'))
		        ->hideFromIndex(),

		    Text::make('Nickname')
		        ->rules(StoreUserRequest::ruleGetter($request, 'nickname'))
		        ->creationRules(StoreUserRequest::creationRuleGetter($request, 'nickname'))
		        ->updateRules('unique:users,nickname,{{resourceId}}')
		        ->hideFromIndex(),

		    Text::make('Job Title')
		        ->rules(StoreUserRequest::ruleGetter($request, 'job_title'))
		        ->hideFromIndex(),

		    Text::make('Company Name', 'organization')
		        ->rules(StoreUserRequest::ruleGetter($request, 'organization'))
		        ->hideFromIndex(),

		    Place::make('Address')
		        ->rules(StoreUserRequest::ruleGetter($request, 'address'))
			    ->countries(['US', 'CA'])
			    ->secondAddressLine('address2')
			    ->city('city')
			    ->state(['stateprov'])
			    ->postalCode('postalcode')
		        ->hideFromIndex(),

		    Text::make('Address Line 2', 'address2')
		        ->rules(StoreUserRequest::ruleGetter($request, 'address2'))
			    ->hideFromIndex(),

		    Text::make('City')
		        ->rules(StoreUserRequest::ruleGetter($request, 'city'))
		        ->hideFromIndex(),

		    Select::make('State or Province', 'stateprov')
			    ->options(get_stateprovs())
			    ->rules(StoreUserRequest::ruleGetter($request, 'stateprov'))
			    ->hideFromIndex(),

		    Text::make('ZIP or Postal Code', 'postalcode')
		        ->rules(StoreUserRequest::ruleGetter($request, 'postalcode'))
			    ->hideFromIndex(),

		    Text::make('Phone')
		        ->rules(StoreUserRequest::ruleGetter($request, 'phone'))
			    ->withMeta(['extraAttributes' => [
			    	'type' => 'tel'
			    ]])
		        ->hideFromIndex(),

        ];
    }

    // ....

}</code></pre>



<p class="wp-block-paragraph">Instead of writing out actual strings of rules for the Nova resource, the <code class="language-php">StoreUserRequest::ruleGetter</code> method supplies the rule, allowing one canonical repository of rules for use with Users.</p>



<h3 class="wp-block-heading">An Exception</h3>



<p class="wp-block-paragraph">There is an exception to the beauty: Enforcing unique values in a table, but ignoring a certain user ID, (for example when updating a user profile the user should not see a &#8220;This E-mail is already in use&#8221; error if the E-mail isn&#8217;t changed). Nova handles it like this:</p>



<pre class="wp-block-code language-php"><code>// Simple and elegant 
Text::make('Email')
->rules('unique:users,email,{{resourceId}}')</code></pre>



<p class="wp-block-paragraph">Non-Nova Laravel handles it like this:</p>



<pre class="wp-block-code language-php"><code>Rule::unique('users')->ignore($user->id, 'user_id')</code></pre>



<p class="wp-block-paragraph">But when declaring Nova fields a <code class="language-php">$user object</code>, or the ID of the model that is being updated, is not available so this does not work. I have worked around the problem by writing out these few cases in the <code class="language-php">updateRules()</code> method of the Nova field, as in this excerpt from above:</p>



<pre class="wp-block-code language-php"><code>// Excerpt from full Nova Resource definition.
// Most Rules use one of the ruleGetter methods on StoreUserRequest
// but updateRules are just typed out to take advantage of Nova syntax.
Text::make('Email')
->rules(StoreUserRequest::ruleGetter($request, 'email'))
->creationRules(StoreUserRequest::creationRuleGetter($request, 'email'))
->updateRules('unique:users,email,{{resourceId}}'),</code></pre>



<h3 class="wp-block-heading">Other Possibilities</h3>



<p class="wp-block-paragraph">Ideally it would be possible to have the <code class="language-php">FormRequest</code> object do the validation itself, without having to pass individual rules to Nova fields. Another possibility is to turn the <code class="language-php">Request</code> that&#8217;s passed to a Resource&#8217;s fields method into a <code class="language-php">FormRequest</code>, or to instantiate a completely new <code class="language-php">FormRequest</code> object, and let the <code class="language-php">FormRequest</code> object handle validation. Unfortunately I don&#8217;t know where we would do this, (the fields method doesn&#8217;t seem right), and I don&#8217;t know if the redirects and error messages generated by <code class="language-php">FormRequest</code> validation would work properly with Nova. I would love to hear if someone can make this work.</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">I sincerely hope that Nova will soon allow automatic validation with <code class="language-php">FormRequest</code> objects, but until that happens it is possible to keep code almost DRY and feed individual rules to Nova fields with <code class="language-php">ruleGetter</code> methods on our <code class="language-php">FormRequests</code>.</p>
<p>The post <a href="https://johnbeales.com/2019/formrequest-object-validation-for-laravel-nova-resources/">FormRequest object Validation for Laravel Nova Resources</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/2019/formrequest-object-validation-for-laravel-nova-resources/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1919</post-id>	</item>
		<item>
		<title>Dead Wake</title>
		<link>https://johnbeales.com/books/dead-wake/</link>
					<comments>https://johnbeales.com/books/dead-wake/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sun, 27 Jan 2019 22:07:54 +0000</pubDate>
				<category><![CDATA[great war]]></category>
		<category><![CDATA[lusitania]]></category>
		<category><![CDATA[maritime tragedy]]></category>
		<category><![CDATA[nonfiction]]></category>
		<category><![CDATA[shipwreck]]></category>
		<category><![CDATA[world war one]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1911</guid>

					<description><![CDATA[<p>As for submarines, I have no fear of them whatever. Charles Sumner, New York agent for Cunard lines, May 1 1915 It wasn&#8217;t heralded as an unsinkable ship like the Titanic three years before, but the Lusitania was marketed as so fast that submarines couldn&#8217;t catch it, and even if they could, it was believed [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/dead-wake/">Dead Wake</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<blockquote><p>As for submarines, I have no fear of them whatever.<br />
<cite>Charles Sumner, New York agent for Cunard lines, May 1 1915</cite></p></blockquote>
<p>It wasn&#8217;t heralded as an unsinkable ship like the Titanic three years before, but the Lusitania was marketed as so fast that submarines couldn&#8217;t catch it, and even if they could, it was believed that it was so strong that submarines couldn&#8217;t sink it. The note I made when reading this quote was &#8220;Titanic all over again&#8221; and again, over a thousand people would die in part because of the hubris of a shipping company and crew. The position of the German government couldn&#8217;t be more clear &#8211; the embassy <a href="https://en.wikipedia.org/wiki/RMS_Lusitania#/media/File:Lusitania_warning.jpg">took out an ad in the New York Times</a> &#8211; travelling by ship, especially by British ship, into the war zone around Great Britain, was risky, yet 1,266 passengers and 696 crew, as well as Cunard Lines and the British Admiralty, (which was in charge of civilian shipping because of the war), decided it was worth the risk.</p>
<p>Or maybe the Admiralty wanted something to happen. With the years that have passed formerly secret information has revealed that they knew that U-20 was in the area, had an alternate, safer, route available, and had destroyers in nearby harbours that could available to escort the Lusitania to port, yet they didn&#8217;t tell the captain that the alternate route was available, left the escorts in port, and provided very little, and often contradictory, information to captain of the ship about U-boat activity in the area, despite two ships being sunk the day before in the same area. There is correspondence, (read the book for details!), suggesting some of the people in power in Britain felt that some sort of incident to prompt the USA to join the first world war would be a good thing. There&#8217;s nothing showing clear intent to leave the Lusitania exposed with the hope that she would be sunk, but the leap isn&#8217;t hard to make.</p>
<p>Some other tidbits that I learned:</p>
<ul>
<li>Captain <a href="https://en.wikipedia.org/wiki/Georg_von_Trapp">Georg von Trapp</a> of the <em>Sound of Music</em> fame was a U-boat captain in the first world war.</li>
<li>There&#8217;s a <a href="https://www.criticalpast.com/video/65675040085_SS-Lusitania_passengers-arrive-at-the-dock_passengers-aboard-SS-Lusitania_author-Elbert-Hubert">video of the final departure from New York</a>. We can see Captain Turner on the bridge.</li>
<li>Cunard tickets did not identify babies by name, &#8220;possibly out of quiet resentment that they traveled free&#8221; &#8211; just like Air Canada!</li>
<li>It&#8217;s fascinating how people from all over North America were on the ship. There was a medical student at <a href="https://mcgill.ca/">McGill University</a>, and a reverend from <a href="https://www.rossland.ca/">Rossland, BC</a>, among others.</li>
</ul>
<p>One thing that I expected, and hoped for, was more detailed coverage and analysis of the inquests and attempted blame-shifting that happened after the sinking. I actually expected another whole part of the book to take a deep dive into the inquests and reasons why the Admiralty acted as they did, but that didn&#8217;t happen. We learn the inquests happened, the positions of several participants, and the general outcome, but the depth I expected never materialized.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="329" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2019/01/book-1911-cover.jpg?fit=329%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2019/01/book-1911-cover.jpg?w=329&amp;ssl=1 329w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2019/01/book-1911-cover.jpg?resize=197%2C300&amp;ssl=1 197w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2019/01/book-1911-cover.jpg?resize=263%2C400&amp;ssl=1 263w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2019/01/book-1911-cover.jpg?resize=211%2C320&amp;ssl=1 211w" sizes="auto, (max-width: 329px) 100vw, 329px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/0307408868/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/0307408868/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/0307408868/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/dead-wake/">Dead Wake</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/dead-wake/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1911</post-id>	</item>
		<item>
		<title>Career of Evil</title>
		<link>https://johnbeales.com/books/career-of-evil/</link>
					<comments>https://johnbeales.com/books/career-of-evil/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Tue, 22 Jan 2019 22:28:11 +0000</pubDate>
				<category><![CDATA[british mystery]]></category>
		<category><![CDATA[detective novel]]></category>
		<category><![CDATA[london]]></category>
		<category><![CDATA[mystery]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1906</guid>

					<description><![CDATA[<p>The third Cormoran Strike novel is more gruesome than the first two, closer to Tess Gerritsen than the first two novels, and a lot of the quaintness is gone. The story is still good, and the mystery works well and I didn&#8217;t feel like I had figured it out too far ahead of time. Interestingly, Strike [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/career-of-evil/">Career of Evil</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>The third Cormoran Strike novel is more gruesome than the first two, closer to Tess Gerritsen than the first two novels, and a lot of the quaintness is gone. The story is still good, and the mystery works well and I didn&#8217;t feel like I had figured it out too far ahead of time.</p>
<p>Interestingly, Strike has an epiphany and connects some very remotely related facts, ultimately solving the mystery, while he&#8217;s extremely sleep-deprived, which <a href="https://johnbeales.com/books/why-we-sleep/">I recently learned</a> is an undesirable condition in for someone who wants to make connections across wide arrays of facts.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="334" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2019/01/book-1906-cover.jpg?fit=334%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2019/01/book-1906-cover.jpg?w=334&amp;ssl=1 334w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2019/01/book-1906-cover.jpg?resize=200%2C300&amp;ssl=1 200w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2019/01/book-1906-cover.jpg?resize=267%2C400&amp;ssl=1 267w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2019/01/book-1906-cover.jpg?resize=214%2C320&amp;ssl=1 214w" sizes="auto, (max-width: 334px) 100vw, 334px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/0316349933/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/0316349933/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/0316349933/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/career-of-evil/">Career of Evil</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/career-of-evil/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1906</post-id>	</item>
		<item>
		<title>The Girl on The Train</title>
		<link>https://johnbeales.com/books/the-girl-on-the-train/</link>
					<comments>https://johnbeales.com/books/the-girl-on-the-train/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Mon, 21 Jan 2019 00:30:02 +0000</pubDate>
				<category><![CDATA[british]]></category>
		<category><![CDATA[thriller]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1903</guid>

					<description><![CDATA[<p>After reading Gone Girl I had to read The Girl on the Train, because they both have &#8220;girl&#8221; in the title, right? Maybe that&#8217;s not the best reason, but it works. I also had seen enough media frenzy to know that it was probably worth the time. Plus, it was available on Overdrive, so I got to [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/the-girl-on-the-train/">The Girl on The Train</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>After reading <a href="https://johnbeales.com/books/gone-girl/"><em>Gone Girl</em></a> I had to read <em>The Girl on the Train</em>, because they both have <a href="https://www.writersdigest.com/online-editor/word-girl-many-modern-book-titles">&#8220;girl&#8221; in the title</a>, right? Maybe that&#8217;s not the best reason, but it works. I also had seen enough media frenzy to know that it was probably worth the time. Plus, it was available on <a href="https://www.overdrive.com">Overdrive</a>, so I got to play with the library functionality on my new <a href="https://www.kobo.com">Kobo</a>.</p>
<p>It was a pretty fun, and quick, read. The device of having one of the main characters black out worked especially well to build atmosphere, and I seem to enjoy the journal entry style of writing, (see also: <em><a href="https://johnbeales.com/books/gone-girl/">Gone</a><a href="https://johnbeales.com/books/gone-girl/"> Girl</a></em>). The only problem was that I couldn&#8217;t put it down, so I didn&#8217;t get much <a href="https://johnbeales.com/books/why-we-sleep/">sleep</a> on the night I read it.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="320" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2019/01/book-1903-cover.jpg?fit=320%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2019/01/book-1903-cover.jpg?w=320&amp;ssl=1 320w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2019/01/book-1903-cover.jpg?resize=192%2C300&amp;ssl=1 192w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2019/01/book-1903-cover.jpg?resize=256%2C400&amp;ssl=1 256w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2019/01/book-1903-cover.jpg?resize=205%2C320&amp;ssl=1 205w" sizes="auto, (max-width: 320px) 100vw, 320px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/1594634025/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/1594634025/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/1594634025/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-girl-on-the-train/">The Girl on The Train</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-girl-on-the-train/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1903</post-id>	</item>
		<item>
		<title>Why We Sleep</title>
		<link>https://johnbeales.com/books/why-we-sleep/</link>
					<comments>https://johnbeales.com/books/why-we-sleep/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Mon, 21 Jan 2019 00:19:06 +0000</pubDate>
				<category><![CDATA[productivity]]></category>
		<category><![CDATA[science]]></category>
		<category><![CDATA[self-help]]></category>
		<category><![CDATA[sleep]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1900</guid>

					<description><![CDATA[<p>We all know sleep is important, don&#8217;t we? I do, and have for years, but I did not realize how small a reduction in sleep we need to be severely cognitively impaired and on the road to mental and physical illness. Dr. Walker makes a very strong case for sleeping as much as your body [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/why-we-sleep/">Why We Sleep</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>We all know sleep is important, don&#8217;t we? I do, and have for years, but I did not realize how small a reduction in sleep we need to be severely cognitively impaired and on the road to mental and physical illness. Dr. Walker makes a very strong case for sleeping as much as your body needs, on the schedule it needs it, with a bare minimum of seven hours a night, (and most people need more).</p>
<p>But we live in a world full of electric light, (and increasingly full-spectrum, or even blue &#8211; more &#8220;daylight&#8221; than daylight &#8211; light), endless distractions and electronics, and a society where staying up half the night has become the norm. Most of <em>Why We Sleep</em> deals with why we should sleep more, but a portion is dedicated to how we can improve sleep, both with technology and non-medical therapy. I have suffered from a lingering cold over the past few weeks as I worked my way through <em>Why We Sleep</em>, and a cold is the perfect excuse to sleep more. According to my Vivosmart 3 I have slept 9.5 hours a night this month, up from 8 in December and even less before that, (and the Vivosmart 3 isn&#8217;t very good at distinguishing between time in bed and time asleep). Now that the cold is finally coming to an end it&#8217;s time to figure out how much sleep I need on an ongoing basis, and when I should get that sleep according to my non-negotiable, (according to the book), circadian rhythm. This is something that isn&#8217;t covered in <em>Why We Sleep</em>, (or if it is I forgot about it). I have years of experience Doing It Wrong<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" />, how do I really know if I&#8217;m getting enough sleep now? The same question goes for circadian rhythm: I&#8217;ve been a &#8220;night owl&#8221; since high school, but is that because I&#8217;m really a night owl, or is it because I have been distracted by books and technology and am a master sleep procrastinator? These the questions I hope to answer soon.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="331" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2019/01/book-1900-cover.jpg?fit=331%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2019/01/book-1900-cover.jpg?w=331&amp;ssl=1 331w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2019/01/book-1900-cover.jpg?resize=199%2C300&amp;ssl=1 199w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2019/01/book-1900-cover.jpg?resize=265%2C400&amp;ssl=1 265w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2019/01/book-1900-cover.jpg?resize=212%2C320&amp;ssl=1 212w" sizes="auto, (max-width: 331px) 100vw, 331px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/1501144316/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/1501144316/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/1501144316/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/why-we-sleep/">Why We Sleep</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/why-we-sleep/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1900</post-id>	</item>
		<item>
		<title>Gone Girl</title>
		<link>https://johnbeales.com/books/gone-girl/</link>
					<comments>https://johnbeales.com/books/gone-girl/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Fri, 11 Jan 2019 19:28:14 +0000</pubDate>
				<category><![CDATA[thriller]]></category>
		<category><![CDATA[unreliable narrator]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1891</guid>

					<description><![CDATA[<p>I made a goal to write a bit more about each book, but with Gone Girl it&#8217;s a little hard to do without spoilers. There&#8217;s a strong unreliable narrator component here that comes as a surprise, and marks the start of a manipulative story. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/gone-girl/">Gone Girl</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>I made a goal to write a bit more about each book, but with Gone Girl it&#8217;s a little hard to do without spoilers. There&#8217;s a strong unreliable narrator component here that comes as a surprise, and marks the start of a manipulative story.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="279" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2019/01/book-1891-cover.jpg?fit=279%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2019/01/book-1891-cover.jpg?w=279&amp;ssl=1 279w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2019/01/book-1891-cover.jpg?resize=167%2C300&amp;ssl=1 167w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2019/01/book-1891-cover.jpg?resize=223%2C400&amp;ssl=1 223w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2019/01/book-1891-cover.jpg?resize=179%2C320&amp;ssl=1 179w" sizes="auto, (max-width: 279px) 100vw, 279px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/1524763675/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/1524763675/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/1524763675/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/gone-girl/">Gone Girl</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/gone-girl/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1891</post-id>	</item>
		<item>
		<title>Don&#8217;t Let Go</title>
		<link>https://johnbeales.com/books/dont-let-go/</link>
					<comments>https://johnbeales.com/books/dont-let-go/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Mon, 17 Dec 2018 21:01:50 +0000</pubDate>
				<category><![CDATA[detective]]></category>
		<category><![CDATA[mystery]]></category>
		<category><![CDATA[police novel]]></category>
		<category><![CDATA[whodunnit]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1868</guid>

					<description><![CDATA[<p>Very fast to read. I should probably have seen the twist coming, but I didn&#8217;t. Nap&#8217;s an interesting guy. It&#8217;s cool that he&#8217;s French/American, that&#8217;s not a combo I&#8217;ve seen in USA-based novels. I&#8217;m older than the main characters, that feels weird. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/dont-let-go/">Don&#8217;t Let Go</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Very fast to read. I should probably have seen the twist coming, but I didn&#8217;t. Nap&#8217;s an interesting guy. It&#8217;s cool that he&#8217;s French/American, that&#8217;s not a combo I&#8217;ve seen in USA-based novels. I&#8217;m older than the main characters, that feels weird.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="283" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/12/book-1868-cover.jpg?fit=283%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/12/book-1868-cover.jpg?w=283&amp;ssl=1 283w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/12/book-1868-cover.jpg?resize=170%2C300&amp;ssl=1 170w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/12/book-1868-cover.jpg?resize=226%2C400&amp;ssl=1 226w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/12/book-1868-cover.jpg?resize=181%2C320&amp;ssl=1 181w" sizes="auto, (max-width: 283px) 100vw, 283px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/1101984279/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/1101984279/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/1101984279/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/dont-let-go/">Don&#8217;t Let Go</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/dont-let-go/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1868</post-id>	</item>
		<item>
		<title>WP e-Commerce to WooCommerce</title>
		<link>https://johnbeales.com/2018/wp-e-commerce-to-woocommerce/</link>
					<comments>https://johnbeales.com/2018/wp-e-commerce-to-woocommerce/#comments</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sun, 18 Nov 2018 21:36:21 +0000</pubDate>
				<category><![CDATA[code]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[e-commerce]]></category>
		<category><![CDATA[migration]]></category>
		<category><![CDATA[woocommerce]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wp e-commerce]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?p=1846</guid>

					<description><![CDATA[<p>There&#8217;s a pair of websites that I have looked after for a long time. They belong to a company that sells a few products, and have had quite a few sales over the years. This fall we&#8217;re doing some major renovations, and one of the things being changed is the underlying E-Commerce plugin for WordPress; [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/2018/wp-e-commerce-to-woocommerce/">WP e-Commerce to WooCommerce</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>There&#8217;s a pair of websites that I have looked after for a long time. They belong to a company that sells a few products, and have had quite a few sales over the years. This fall we&#8217;re doing some major renovations, and one of the things being changed is the underlying E-Commerce plugin for WordPress; we are changing from WP e-Commerce to WooCommerce. I expected that after installing WooCommerce it would offer to convert my WPeC store into a WooCommerce store. I was wrong. There was an official converter plugin but it was <a href="https://github.com/woocommerce/woocommerce-wpec-converter">abandoned long ago</a>.</p>
<h3>Options to change a site from WP e-Commerce to WooCommerce</h3>
<p>It looks like there are three ways to change a site from WP e-Commerce to WooCommerce:</p>
<ol>
<li>Use a commercial service like <a href="https://www.shopping-cart-migration.com">Cart2Cart</a>. Cart2Cart looks great, but is made to move a store from one site to another, and I need an in-place conversion. They also charge per-migration, so if I want to migrate my localhost, modify the theme for WooCommerce, then migrate the live site, I&#8217;ll have to pay 1.5 times, (they give a 50% discount for re-migrating a site). With two sites my bill would have been around US$450, high enough for me to look at other, more complicated options.</li>
<li>Create or update something like the old WooCommerce migration plugin.</li>
<li>Manual Migration: This would involve a <em>lot</em> of SQL.</li>
</ol>
<p>Cart2Cart looks ill-suited for my use-case, and expensive. Manual migration looks difficult, highly prone to errors, and not easily repeatable. This leaves creating or updating a migration utility. <a href="https://github.com/codekipple/wp-e-commerce-to-woocommerce-converter">This migration script</a> by Carl Hughes is bit newer than the WooCommerce one, promises to do more out of the box, and quick read-through doesn&#8217;t show anything too mysterious. It was my starting point.</p>
<h3>Updating and Testing</h3>
<p>It took three times as long as expected to update &amp; test the migration plugin. Here&#8217;s what I learned, for anyone else that might be considering the same type of process:</p>
<ul>
<li>This should go without saying, but <strong>this migration is destructive</strong>. If it fails the database will be in a strange state between WPeC and WooCommerce. Have a backup.</li>
<li>Since migrating from WPeC to WooCommerce changes the database, but only the database, (no media files are touched), a backup of the WordPress database is required. A lot of time will be spent reloading from the backup, so put it somewhere easy to get. Mine was on my desktop. Bonus points: a short bash script to reload the DB from the backup will save development time.</li>
<li>Make the backup be the exact state that the migration should run from. It is not efficient to disable a plugin in the WP Admin every time the database is reloaded.</li>
<li>Some plugins really slow down the migration. The most obvious ones are WP e-Commerce itself, and any Varnish caching plugin. If they are disabled the migration will run faster.</li>
<li>Each payment gateway, (plugin for a payment processor, in WPeC terminology), stores transaction data a little differently. I added the ability to port data from Authorize.Net credit card transactions, but separate routines need to be written for other processors.</li>
</ul>
<h3>Updated Migration Plugin</h3>
<p>My fork of the <a href="https://github.com/jbeales/wp-e-commerce-to-woocommerce-converter">migration plugin is up on Github</a>, and a I sent a pull request to the original author so he can include my work if he wants. If you need to migrate from WP e-Commerce to WooCommerce hopefully this can help a bit. <strong>Read the readme</strong>. Migrating is harder than it should be, but it is possible.</p>
<p>The post <a href="https://johnbeales.com/2018/wp-e-commerce-to-woocommerce/">WP e-Commerce to WooCommerce</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/2018/wp-e-commerce-to-woocommerce/feed/</wfw:commentRss>
			<slash:comments>12</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1846</post-id>	</item>
		<item>
		<title>Changing the Name and Path of the Active WordPress Theme Without Breaking Theme Settings</title>
		<link>https://johnbeales.com/2018/changing-the-name-and-path-of-the-active-wordpress-theme-without-breaking-theme-settings/</link>
					<comments>https://johnbeales.com/2018/changing-the-name-and-path-of-the-active-wordpress-theme-without-breaking-theme-settings/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Fri, 19 Oct 2018 16:01:57 +0000</pubDate>
				<category><![CDATA[code]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[rebrand]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wordpress themes]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?p=1828</guid>

					<description><![CDATA[<p>After changing a brand name, but little else, on a WordPress site we can end up with a WordPress theme called &#8220;oldbrand&#8221; on a site called &#8220;New Brand.&#8221; This leads to weird things like the brand&#8217;s logo being at the URL newbrand.com/wp-content/themes/oldbrand/img/newbrand-logo.png. Oops. SEOs must cry a little when they see something like that. This [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/2018/changing-the-name-and-path-of-the-active-wordpress-theme-without-breaking-theme-settings/">Changing the Name and Path of the Active WordPress Theme Without Breaking Theme Settings</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>After changing a brand name, but little else, on a WordPress site we can end up with a WordPress theme called &#8220;oldbrand&#8221; on a site called &#8220;New Brand.&#8221; This leads to weird things like the brand&#8217;s logo being at the URL <code>newbrand.com/wp-content/themes/oldbrand/img/newbrand-logo.png</code>. Oops. SEOs must cry a little when they see something like that. This is a situation one of my clients ended up in after a name change, but it ends now.</p>
<p>We can&#8217;t simply change the theme directory from <code>themes/oldbrand</code> to <code>themes/newbrand</code> and update the active theme in the Appearance section of the <code>wp-admin</code> because theme-related settings are tied to the theme directory in the database. This includes things like widget placement; a different theme probably has very different widget areas so widget placement should be stored per-theme. The same goes for any theme settings &amp; customizations. To get around this we need to update the database so WordPress thinks that the new theme name is the theme name we&#8217;ve always been using.</p>
<p><strong>A word of caution:</strong> back up your database before trying this. We&#8217;re going to run raw queries. If something breaks you may end up in an in-between limbo, and restoring from backup is the quickest way out.</p>
<p>After diving through the database of a few sites this morning these queries make it possible to rename the theme directory, and optionally rename the theme in <code>style.css</code>:</p>
<pre><code class="lang-sql"># Update the main theme options
UPDATE wp_options SET option_value='new-theme-directory' WHERE option_name='template';
UPDATE wp_options SET option_value='new-theme-directory' WHERE option_name='stylesheet';
UPDATE wp_options SET option_name='theme_mods_new-theme-directory' WHERE option_name='theme_mods_old-theme-directory';

# If also updating the Theme Name in the theme's style.css
UPDATE wp_options SET option_value='New Theme Name' WHERE option_name='current_theme';  

# If any posts reference assets in the theme such as images or logos.
UPDATE wp_posts SET post_content=REPLACE(post_content, 'themes/old-theme-directory', 'themes/new-theme-directory' );
UPDATE wp_postmeta SET meta_value=REPLACE(meta_value, 'themes/old-theme-directory', 'themes/new-theme-directory');

# If WordFence is used
UPDATE wp_wfConfig SET val=REPLACE(val, 'themes/old-theme-directory', 'themes/new-theme-directory');

# Delete a couple of transients that store references to the old theme directory.
DELETE FROM wp_options WHERE option_value='_site_transient_theme_roots';
DELETE FROM wp_options WHERE option_value='_site_transient_update_themes';
</code>
</pre>
<h4>Protips:</h4>
<ul>
<li>Try to run these queries at nearly the same time as the theme directory is renamed. Bonus points for making a script that does it all nearly instantly.</li>
<li>If an installation stores transients somewhere other than the DB, then clearing them in the DB won&#8217;t work, (clearing the transients may not be strictly required).</li>
<li>The sample code uses the default <code>wp_</code> table prefix. When working on a site with a different prefix, use that.</li>
</ul>
<p>Hopefully this helps someone finish their Googling session and get on with a rename!</p>
<p>The post <a href="https://johnbeales.com/2018/changing-the-name-and-path-of-the-active-wordpress-theme-without-breaking-theme-settings/">Changing the Name and Path of the Active WordPress Theme Without Breaking Theme Settings</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/2018/changing-the-name-and-path-of-the-active-wordpress-theme-without-breaking-theme-settings/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1828</post-id>	</item>
		<item>
		<title>Preview Laravel Password Reset and Verification E-mails in a Browser</title>
		<link>https://johnbeales.com/2018/browser-preview-laravel-password-reset-and-verification-emails/</link>
					<comments>https://johnbeales.com/2018/browser-preview-laravel-password-reset-and-verification-emails/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Thu, 18 Oct 2018 20:32:14 +0000</pubDate>
				<category><![CDATA[code]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[laravel]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[preview]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?p=1823</guid>

					<description><![CDATA[<p>I&#8217;m building something on Laravel, using the built-in Auth with 5.7&#8217;s new E-mail Verification feature. Today&#8217;s task was to tweak the design of E-mail notifications a bit, so I wanted to preview them in a browser. I thought it would be easy, but the built-in E-mails use the Notification system, bypassing Mailable objects. Some Googling [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/2018/browser-preview-laravel-password-reset-and-verification-emails/">Preview Laravel Password Reset and Verification E-mails in a Browser</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>I&#8217;m building something on <a href="https://laravel.com/">Laravel</a>, using the <a href="https://laravel.com/docs/5.7/authentication">built-in Auth</a> with 5.7&#8217;s new <a href="https://laravel.com/docs/5.7/verification">E-mail Verification feature</a>. Today&#8217;s task was to tweak the design of E-mail notifications a bit, so I wanted to preview them in a browser. I thought it would <a href="https://laravel.com/docs/5.7/mail#previewing-mailables-in-the-browser">be easy</a>, but the built-in E-mails use the Notification system, bypassing <code>Mailable</code> objects. Some Googling didn&#8217;t help much, but combining the <a href="https://laravel.com/docs/5.7/notifications">Notifications documentation</a> and <a href="https://laracasts.com/discuss/channels/laravel/preview-markdown-emails/replies/334407">this forum post</a> got let me preview the messages. Hopefully this post can help someone else preview their messages much more quickly than I did today.</p>
<p>The concept is similar to the &#8220;Previewing Mailables&#8221; documentation: define a route to view your preview on, and return something that will render the message. The trick is that the <code>MailMessage</code> objects that the Notifications&#8217; <code>toMail()</code> methods return don&#8217;t have a <code>render()</code> method like <code>Mailable</code> class does, so we need to find something else. Since the built-in Auth uses Markdown mail we can use the <code>Markdown</code> class. A <code>Notifiable</code> object, (the User object for the user who will get the notification), and a <code>Notification</code> are also needed.</p>
<p>For this to work you need to have the right Notifications published to your <code>resources/views/vendor</code> directory. This is done with the Artisan command <code>php artisan vendor:publish --tag=laravel-notifications</code>.</p>
<p>And set up the preview routes:</p>
<pre><code class="lang-php">
Route::get('/reset-notification', function () {

    // Get a user for demo purposes
    $user = App\User::find(1);

    // Make a Reset Notification object, (subclass of `Notification`)
    $resetNotification = new \Illuminate\Auth\Notifications\ResetPassword( 'some-random-string-this-will-be-much-longer-in-real-life' );

    // get the `MailMessage` object
    $mailMessage = $resetNotification->toMail($user);

    // get the `Markdown` object
    $markdown = new Illuminate\Mail\Markdown(view(), config('mail.markdown'));

    // Render the vendor.notifications.email view with data from the `MailMessage` object
    return $markdown->render('vendor.notifications.email', $mailMessage->toArray());
});


Route::get( '/verify-notification', function () {

    // Get a user for demo purposes
    $user = App\User::find(1);

    // Make a Verify Notification object, (subclass of `Notification`)
    $verifyNotification = new Illuminate\Auth\Notifications\VerifyEmail();

    // get the `MailMessage` object
    $mailMessage = $verifyNotification->toMail($user);

    // get the `Markdown` object
    $markdown = new Illuminate\Mail\Markdown(view(), config('mail.markdown'));

    // Render the vendor.notifications.email view with data from the `MailMessage` object
    return $markdown->render('vendor.notifications.email', $mailMessage->toArray());
});

</code></pre>
<p>Once the Notification is published and the routes created it is possible to preview the Password Reset and E-mail Verification E-mails in the browser.</p>
<p>The post <a href="https://johnbeales.com/2018/browser-preview-laravel-password-reset-and-verification-emails/">Preview Laravel Password Reset and Verification E-mails in a Browser</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/2018/browser-preview-laravel-password-reset-and-verification-emails/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1823</post-id>	</item>
		<item>
		<title>Automating the Fracturing of a Git Repository</title>
		<link>https://johnbeales.com/2018/fracture-git-repository-script/</link>
					<comments>https://johnbeales.com/2018/fracture-git-repository-script/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 17 Oct 2018 21:11:25 +0000</pubDate>
				<category><![CDATA[code]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[bash scripting]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[source control]]></category>
		<category><![CDATA[tools]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?p=1814</guid>

					<description><![CDATA[<p>I have a git repo that&#8217;s become a monster. It&#8217;s got at least two WordPress themes, a handful of custom WordPress plugins, some .htaccess files, an artwork directory, and more. Back in the dark times, when it was a Subversion repository this sort of made sense, in that I didn&#8217;t have to set up a [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/2018/fracture-git-repository-script/">Automating the Fracturing of a Git Repository</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>I have a git repo that&#8217;s become a monster. It&#8217;s got at least two WordPress themes, a handful of custom WordPress plugins, some .htaccess files, an artwork directory, and more. Back in the dark times, when it was a Subversion repository this sort of made sense, in that I didn&#8217;t have to set up a new repo on the server for each component in the project. But I haven&#8217;t touched SVN in a long time, and making new repositories in Git is easy. We&#8217;re doing some major work on this client&#8217;s sites this fall, so it&#8217;s time to break up the giant repository into several smaller ones.</p>
<p>The monolith repository is being split into <em>seventeen</em> smaller components. One of these components is an &#8220;artwork&#8221; directory, the ~600MB history of which will bloat the git history of all sixteen other repositories if we don&#8217;t purge it properly. The goals of this script are:</p>
<ol>
<li>Avoid typing the same set of commands seventeen times.</li>
<li>Keep the appropriate git history for each of the seventeen components.</li>
<li>Purge any unrelated git history so each component only has its own history in its .git directory.</li>
</ol>
<p>Github has a help page on splitting a <a href="https://help.github.com/articles/splitting-a-subfolder-out-into-a-new-repository/">subfolder into its own repository</a>, and another on <a href="https://help.github.com/articles/removing-sensitive-data-from-a-repository/">removing files from a repository&#8217;s history</a>, (it&#8217;s meant for sensitive data, but works for all data). In theory we only really need the first link, but in testing the entire history of the monolith remained when only following the instructions in the first link, but with the purge and garbage collection commands from the second link the git history is down to an appropriate size.</p>
<p>The script is relatively simple, but relies a bit on directory structure. It should be in the same directory as the monolith repo, (the script doesn&#8217;t go <em>into</em> the monolith, it goes in the same containing folder). There are two places to change the script:</p>
<ol>
<li>Put the directories for extraction into the <code>repos</code> array, (starting on line 5). These paths are relative to the root of the repository.</li>
<li>Put the path of a copy of the monolith repo for use as a source in the <code>master</code> variable, (line 16).</li>
</ol>
<p>Once that&#8217;s done, running <code>./export-directory-repos.sh</code> should export the repositories.</p>
<p>Here&#8217;s the gist:</p>
<style>.gist table { margin-bottom: 0; }</style>
<div style="tab-size: 8" id="gist92515045" class="gist">
<div class="gist-file" translate="no" data-color-mode="light" data-light-theme="light">
<div class="gist-data">
<div class="js-gist-file-update-container js-task-list-container">
<div id="file-export-directory-repos-sh" class="file my-2">
<div itemprop="text"
      class="Box-body p-0 blob-wrapper data type-shell  "
      style="overflow: auto" tabindex="0" role="region"
      aria-label="export-directory-repos.sh content, created by jbeales on 07:22PM on October 17, 2018."
    ></p>
<div class="js-check-hidden-unicode js-blob-code-container blob-code-content">
<p>  <template class="js-file-alert-template"></p>
<div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center">
  <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
    <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
</svg><br />
    <span><br />
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.<br />
      <a class="Link--inTextBlock" href="https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a><br />
    </span></p>
<div data-view-component="true" class="flash-action">        <a href="{{ revealButtonHref }}" data-view-component="true" class="btn-sm btn">    Show hidden characters<br />
</a>
</div>
</div>
<p></template><br />
<template class="js-line-alert-template"><br />
  <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"><br />
    <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
    <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
</svg><br />
</span></template></p>
<table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="export-directory-repos.sh">
<tr>
<td id="file-export-directory-repos-sh-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td>
<td id="file-export-directory-repos-sh-LC1" class="blob-code blob-code-inner js-file-line">#!/bin/bash</td>
</tr>
<tr>
<td id="file-export-directory-repos-sh-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td>
<td id="file-export-directory-repos-sh-LC2" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="file-export-directory-repos-sh-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td>
<td id="file-export-directory-repos-sh-LC3" class="blob-code blob-code-inner js-file-line"># Enter the paths in the main repo to the subdirectories you want to extract</td>
</tr>
<tr>
<td id="file-export-directory-repos-sh-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td>
<td id="file-export-directory-repos-sh-LC4" class="blob-code blob-code-inner js-file-line"># Separate paths with spaces or newlines</td>
</tr>
<tr>
<td id="file-export-directory-repos-sh-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td>
<td id="file-export-directory-repos-sh-LC5" class="blob-code blob-code-inner js-file-line">repos=(</td>
</tr>
<tr>
<td id="file-export-directory-repos-sh-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td>
<td id="file-export-directory-repos-sh-LC6" class="blob-code blob-code-inner js-file-line">artwork</td>
</tr>
<tr>
<td id="file-export-directory-repos-sh-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td>
<td id="file-export-directory-repos-sh-LC7" class="blob-code blob-code-inner js-file-line">checklists</td>
</tr>
<tr>
<td id="file-export-directory-repos-sh-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td>
<td id="file-export-directory-repos-sh-LC8" class="blob-code blob-code-inner js-file-line">code/comingsoon</td>
</tr>
<tr>
<td id="file-export-directory-repos-sh-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td>
<td id="file-export-directory-repos-sh-LC9" class="blob-code blob-code-inner js-file-line">code/utility</td>
</tr>
<tr>
<td id="file-export-directory-repos-sh-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td>
<td id="file-export-directory-repos-sh-LC10" class="blob-code blob-code-inner js-file-line">)</td>
</tr>
<tr>
<td id="file-export-directory-repos-sh-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td>
<td id="file-export-directory-repos-sh-LC11" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="file-export-directory-repos-sh-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td>
<td id="file-export-directory-repos-sh-LC12" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="file-export-directory-repos-sh-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td>
<td id="file-export-directory-repos-sh-LC13" class="blob-code blob-code-inner js-file-line">echo &quot;Total repos to export : ${#repos[*]}&quot;</td>
</tr>
<tr>
<td id="file-export-directory-repos-sh-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td>
<td id="file-export-directory-repos-sh-LC14" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="file-export-directory-repos-sh-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td>
<td id="file-export-directory-repos-sh-LC15" class="blob-code blob-code-inner js-file-line"># Put the directory of the main repo here. </td>
</tr>
<tr>
<td id="file-export-directory-repos-sh-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td>
<td id="file-export-directory-repos-sh-LC16" class="blob-code blob-code-inner js-file-line">master=monolith-repo-master</td>
</tr>
<tr>
<td id="file-export-directory-repos-sh-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td>
<td id="file-export-directory-repos-sh-LC17" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="file-export-directory-repos-sh-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td>
<td id="file-export-directory-repos-sh-LC18" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="file-export-directory-repos-sh-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td>
<td id="file-export-directory-repos-sh-LC19" class="blob-code blob-code-inner js-file-line">for repo in &quot;${repos[@]}&quot;</td>
</tr>
<tr>
<td id="file-export-directory-repos-sh-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td>
<td id="file-export-directory-repos-sh-LC20" class="blob-code blob-code-inner js-file-line">do</td>
</tr>
<tr>
<td id="file-export-directory-repos-sh-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td>
<td id="file-export-directory-repos-sh-LC21" class="blob-code blob-code-inner js-file-line">  </td>
</tr>
<tr>
<td id="file-export-directory-repos-sh-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td>
<td id="file-export-directory-repos-sh-LC22" class="blob-code blob-code-inner js-file-line">  </td>
</tr>
<tr>
<td id="file-export-directory-repos-sh-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td>
<td id="file-export-directory-repos-sh-LC23" class="blob-code blob-code-inner js-file-line">  subdir=$(basename $repo)</td>
</tr>
<tr>
<td id="file-export-directory-repos-sh-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td>
<td id="file-export-directory-repos-sh-LC24" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="file-export-directory-repos-sh-L25" class="blob-num js-line-number js-blob-rnum" data-line-number="25"></td>
<td id="file-export-directory-repos-sh-LC25" class="blob-code blob-code-inner js-file-line">  echo &quot;${repo} =&gt; ${subdir}&quot;</td>
</tr>
<tr>
<td id="file-export-directory-repos-sh-L26" class="blob-num js-line-number js-blob-rnum" data-line-number="26"></td>
<td id="file-export-directory-repos-sh-LC26" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="file-export-directory-repos-sh-L27" class="blob-num js-line-number js-blob-rnum" data-line-number="27"></td>
<td id="file-export-directory-repos-sh-LC27" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="file-export-directory-repos-sh-L28" class="blob-num js-line-number js-blob-rnum" data-line-number="28"></td>
<td id="file-export-directory-repos-sh-LC28" class="blob-code blob-code-inner js-file-line">  cp -R $master $subdir</td>
</tr>
<tr>
<td id="file-export-directory-repos-sh-L29" class="blob-num js-line-number js-blob-rnum" data-line-number="29"></td>
<td id="file-export-directory-repos-sh-LC29" class="blob-code blob-code-inner js-file-line">  cd $subdir</td>
</tr>
<tr>
<td id="file-export-directory-repos-sh-L30" class="blob-num js-line-number js-blob-rnum" data-line-number="30"></td>
<td id="file-export-directory-repos-sh-LC30" class="blob-code blob-code-inner js-file-line">  git filter-branch &#8211;prune-empty &#8211;subdirectory-filter $repo master</td>
</tr>
<tr>
<td id="file-export-directory-repos-sh-L31" class="blob-num js-line-number js-blob-rnum" data-line-number="31"></td>
<td id="file-export-directory-repos-sh-LC31" class="blob-code blob-code-inner js-file-line">  git for-each-ref &#8211;format=&#39;delete %(refname)&#39; refs/original | git update-ref &#8211;stdin</td>
</tr>
<tr>
<td id="file-export-directory-repos-sh-L32" class="blob-num js-line-number js-blob-rnum" data-line-number="32"></td>
<td id="file-export-directory-repos-sh-LC32" class="blob-code blob-code-inner js-file-line">  git reflog expire &#8211;expire=now &#8211;all</td>
</tr>
<tr>
<td id="file-export-directory-repos-sh-L33" class="blob-num js-line-number js-blob-rnum" data-line-number="33"></td>
<td id="file-export-directory-repos-sh-LC33" class="blob-code blob-code-inner js-file-line">  git gc &#8211;prune=now</td>
</tr>
<tr>
<td id="file-export-directory-repos-sh-L34" class="blob-num js-line-number js-blob-rnum" data-line-number="34"></td>
<td id="file-export-directory-repos-sh-LC34" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="file-export-directory-repos-sh-L35" class="blob-num js-line-number js-blob-rnum" data-line-number="35"></td>
<td id="file-export-directory-repos-sh-LC35" class="blob-code blob-code-inner js-file-line">  cd ../</td>
</tr>
<tr>
<td id="file-export-directory-repos-sh-L36" class="blob-num js-line-number js-blob-rnum" data-line-number="36"></td>
<td id="file-export-directory-repos-sh-LC36" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="file-export-directory-repos-sh-L37" class="blob-num js-line-number js-blob-rnum" data-line-number="37"></td>
<td id="file-export-directory-repos-sh-LC37" class="blob-code blob-code-inner js-file-line">done</td>
</tr>
</table>
</div></div>
</p></div>
</div></div>
<div class="gist-meta">
        <a href="https://gist.github.com/jbeales/bb54bf1e91b78b837cd3f49657ca4d41/raw/8aa498d3e286e636f22456dfd4d955cf98d0d80f/export-directory-repos.sh" style="float:right" class="Link--inTextBlock">view raw</a><br />
        <a href="https://gist.github.com/jbeales/bb54bf1e91b78b837cd3f49657ca4d41#file-export-directory-repos-sh" class="Link--inTextBlock"><br />
          export-directory-repos.sh<br />
        </a><br />
        hosted with &#10084; by <a class="Link--inTextBlock" href="https://github.com">GitHub</a>
      </div>
</p></div>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>The post <a href="https://johnbeales.com/2018/fracture-git-repository-script/">Automating the Fracturing of a Git Repository</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/2018/fracture-git-repository-script/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1814</post-id>	</item>
		<item>
		<title>Le Petit Prince</title>
		<link>https://johnbeales.com/books/le-petit-prince/</link>
					<comments>https://johnbeales.com/books/le-petit-prince/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Fri, 21 Sep 2018 11:10:08 +0000</pubDate>
				<category><![CDATA[french]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1792</guid>

					<description><![CDATA[<p>It&#8217;s the first time I read a novel, (even though it&#8217;s a short one), in another language. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/le-petit-prince/">Le Petit Prince</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>It&#8217;s the first time I read a novel, (even though it&#8217;s a short one), in another language.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="304" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/book-1792-cover.jpg?fit=304%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/book-1792-cover.jpg?w=304&amp;ssl=1 304w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/book-1792-cover.jpg?resize=182%2C300&amp;ssl=1 182w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/book-1792-cover.jpg?resize=243%2C400&amp;ssl=1 243w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/book-1792-cover.jpg?resize=195%2C320&amp;ssl=1 195w" sizes="auto, (max-width: 304px) 100vw, 304px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/2070408507/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/2070408507/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/2070408507/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/le-petit-prince/">Le Petit Prince</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/le-petit-prince/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1792</post-id>	</item>
		<item>
		<title>A Great Inactivity Reminder</title>
		<link>https://johnbeales.com/2018/great-inactivity-reminder/</link>
					<comments>https://johnbeales.com/2018/great-inactivity-reminder/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 12 Sep 2018 19:17:50 +0000</pubDate>
				<category><![CDATA[Cool]]></category>
		<category><![CDATA[My Inbox]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[rescuetime]]></category>
		<category><![CDATA[vacation]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?p=1775</guid>

					<description><![CDATA[<p>I was lucky enough to spend a good part of my summer vacation with my computer shut off, and my only internet connection on my phone, on Do Not Distrub mode. When I got back I had this E-mail from Rescuetime waiting for me. I love this part: Hopefully, you were away from the computer [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/2018/great-inactivity-reminder/">A Great Inactivity Reminder</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>I was lucky enough to spend a good part of my summer vacation with my computer shut off, and my only internet connection on my phone, on Do Not Distrub mode. When I got back I had this E-mail from Rescuetime waiting for me.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-large wp-image-1776" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/Screen-Shot-2018-09-12-at-3.05.11-PM.png?resize=940%2C1024&#038;ssl=1" alt="A screenshot of the E-mail Rescuetime sent me when I was on vacation." width="940" height="1024" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/Screen-Shot-2018-09-12-at-3.05.11-PM.png?resize=940%2C1024&amp;ssl=1 940w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/Screen-Shot-2018-09-12-at-3.05.11-PM.png?resize=275%2C300&amp;ssl=1 275w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/Screen-Shot-2018-09-12-at-3.05.11-PM.png?resize=768%2C836&amp;ssl=1 768w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/Screen-Shot-2018-09-12-at-3.05.11-PM.png?resize=689%2C750&amp;ssl=1 689w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/Screen-Shot-2018-09-12-at-3.05.11-PM.png?resize=588%2C640&amp;ssl=1 588w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/Screen-Shot-2018-09-12-at-3.05.11-PM.png?resize=468%2C510&amp;ssl=1 468w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/Screen-Shot-2018-09-12-at-3.05.11-PM.png?resize=367%2C400&amp;ssl=1 367w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/Screen-Shot-2018-09-12-at-3.05.11-PM.png?resize=294%2C320&amp;ssl=1 294w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/Screen-Shot-2018-09-12-at-3.05.11-PM.png?resize=882%2C960&amp;ssl=1 882w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/Screen-Shot-2018-09-12-at-3.05.11-PM.png?resize=918%2C1000&amp;ssl=1 918w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/Screen-Shot-2018-09-12-at-3.05.11-PM.png?w=1460&amp;ssl=1 1460w" sizes="auto, (max-width: 940px) 100vw, 940px" /></p>
<p>I love this part:</p>
<blockquote><p>Hopefully, you were away from the computer having fantastic adventures! If not, then something might have gone wrong.</p></blockquote>
<p>They didn&#8217;t immediately assume a problem, but left me a way to check on what&#8217;s going on in case I wasn&#8217;t &#8220;away from the computer having fantastic adventures.&#8221; It made me happy about my vacation, even after I was back and triaging E-mails.</p>
<p><figure id="attachment_1779" aria-describedby="caption-attachment-1779" style="width: 179px" class="wp-caption aligncenter"><img data-recalc-dims="1" loading="lazy" decoding="async" class="wp-image-1779" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/IMG_1197.jpg?resize=179%2C179&#038;ssl=1" alt="The Apple App Store icon on my phone showing 71 updates available after my vacation." width="179" height="179" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/IMG_1197.jpg?w=179&amp;ssl=1 179w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/IMG_1197.jpg?resize=150%2C150&amp;ssl=1 150w" sizes="auto, (max-width: 179px) 100vw, 179px" /><figcaption id="caption-attachment-1779" class="wp-caption-text">Yes, seventy-one. There were more the next day.</figcaption></figure></p>
<p>Of course as soon as I got back on wi-fi this happened:, (do I have too many apps installed?):</p>
<p>Of course, there was also a lot of this:<br />
<img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-large wp-image-1780" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/08162018170844.jpg?resize=960%2C540&#038;ssl=1" alt="A photo of a slightly smoky sunset over the ocean." width="960" height="540" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/08162018170844.jpg?resize=1024%2C576&amp;ssl=1 1024w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/08162018170844.jpg?resize=300%2C169&amp;ssl=1 300w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/08162018170844.jpg?resize=768%2C432&amp;ssl=1 768w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/08162018170844.jpg?resize=750%2C422&amp;ssl=1 750w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/08162018170844.jpg?resize=640%2C360&amp;ssl=1 640w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/08162018170844.jpg?resize=510%2C287&amp;ssl=1 510w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/08162018170844.jpg?resize=400%2C225&amp;ssl=1 400w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/08162018170844.jpg?resize=320%2C180&amp;ssl=1 320w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/08162018170844.jpg?resize=960%2C540&amp;ssl=1 960w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/08162018170844.jpg?resize=1000%2C563&amp;ssl=1 1000w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/08162018170844.jpg?w=3948&amp;ssl=1 3948w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/08162018170844.jpg?w=1920&amp;ssl=1 1920w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/08162018170844.jpg?w=2880&amp;ssl=1 2880w" sizes="auto, (max-width: 960px) 100vw, 960px" /></p>
<p>The post <a href="https://johnbeales.com/2018/great-inactivity-reminder/">A Great Inactivity Reminder</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/2018/great-inactivity-reminder/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1775</post-id>	</item>
		<item>
		<title>The Rooster Bar</title>
		<link>https://johnbeales.com/books/the-rooster-bar/</link>
					<comments>https://johnbeales.com/books/the-rooster-bar/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 12 Sep 2018 19:00:47 +0000</pubDate>
				<category><![CDATA[lawyer]]></category>
		<category><![CDATA[legal drama]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1772</guid>

					<description><![CDATA[<p>This Grisham book is a little strange. I felt like it was going to end badly. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/the-rooster-bar/">The Rooster Bar</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>This Grisham book is a little strange. I felt like it was going to end badly.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="329" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/book-1772-cover.jpg?fit=329%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/book-1772-cover.jpg?w=329&amp;ssl=1 329w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/book-1772-cover.jpg?resize=197%2C300&amp;ssl=1 197w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/book-1772-cover.jpg?resize=263%2C400&amp;ssl=1 263w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/09/book-1772-cover.jpg?resize=211%2C320&amp;ssl=1 211w" sizes="auto, (max-width: 329px) 100vw, 329px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/0385541171/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/0385541171/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/0385541171/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-rooster-bar/">The Rooster Bar</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-rooster-bar/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1772</post-id>	</item>
		<item>
		<title>House of Spies</title>
		<link>https://johnbeales.com/books/house-of-spies/</link>
					<comments>https://johnbeales.com/books/house-of-spies/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sun, 26 Aug 2018 21:50:43 +0000</pubDate>
				<category><![CDATA[israeli spies']]></category>
		<category><![CDATA[spy novel]]></category>
		<category><![CDATA[spy thriller]]></category>
		<category><![CDATA[thriller]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1764</guid>

					<description><![CDATA[<p>I like this non-American perspective in a spy novel. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/house-of-spies/">House of Spies</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>I like this non-American perspective in a spy novel.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="279" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/08/book-1764-cover.jpg?fit=279%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/08/book-1764-cover.jpg?w=279&amp;ssl=1 279w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/08/book-1764-cover.jpg?resize=167%2C300&amp;ssl=1 167w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/08/book-1764-cover.jpg?resize=223%2C400&amp;ssl=1 223w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/08/book-1764-cover.jpg?resize=179%2C320&amp;ssl=1 179w" sizes="auto, (max-width: 279px) 100vw, 279px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/1443437670/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/1443437670/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/1443437670/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/house-of-spies/">House of Spies</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/house-of-spies/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1764</post-id>	</item>
		<item>
		<title>The Gentle Art of Swedish Death Cleaning</title>
		<link>https://johnbeales.com/books/the-gentle-art-of-swedish-death-cleaning/</link>
					<comments>https://johnbeales.com/books/the-gentle-art-of-swedish-death-cleaning/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 22 Aug 2018 19:01:12 +0000</pubDate>
				<category><![CDATA[cleaning]]></category>
		<category><![CDATA[self-help]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1759</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/the-gentle-art-of-swedish-death-cleaning/">The Gentle Art of Swedish Death Cleaning</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="304" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/08/book-1759-cover.jpg?fit=304%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/08/book-1759-cover.jpg?w=304&amp;ssl=1 304w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/08/book-1759-cover.jpg?resize=182%2C300&amp;ssl=1 182w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/08/book-1759-cover.jpg?resize=243%2C400&amp;ssl=1 243w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/08/book-1759-cover.jpg?resize=195%2C320&amp;ssl=1 195w" sizes="auto, (max-width: 304px) 100vw, 304px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/1501173243/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/1501173243/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/1501173243/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-gentle-art-of-swedish-death-cleaning/">The Gentle Art of Swedish Death Cleaning</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-gentle-art-of-swedish-death-cleaning/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1759</post-id>	</item>
		<item>
		<title>The Danish Way of Parenting</title>
		<link>https://johnbeales.com/books/the-danish-way-of-parenting/</link>
					<comments>https://johnbeales.com/books/the-danish-way-of-parenting/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 22 Aug 2018 18:55:01 +0000</pubDate>
				<category><![CDATA[denmark]]></category>
		<category><![CDATA[parenting]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1756</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/the-danish-way-of-parenting/">The Danish Way of Parenting</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="334" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/08/book-1756-cover.jpg?fit=334%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/08/book-1756-cover.jpg?w=334&amp;ssl=1 334w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/08/book-1756-cover.jpg?resize=200%2C300&amp;ssl=1 200w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/08/book-1756-cover.jpg?resize=267%2C400&amp;ssl=1 267w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/08/book-1756-cover.jpg?resize=214%2C320&amp;ssl=1 214w" sizes="auto, (max-width: 334px) 100vw, 334px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/014311171X/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/014311171X/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/014311171X/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-danish-way-of-parenting/">The Danish Way of Parenting</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-danish-way-of-parenting/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1756</post-id>	</item>
		<item>
		<title>Cougar Annie&#8217;s Garden</title>
		<link>https://johnbeales.com/books/cougar-annies-garden/</link>
					<comments>https://johnbeales.com/books/cougar-annies-garden/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 22 Aug 2018 18:51:53 +0000</pubDate>
				<category><![CDATA[ada-annie rae-arthur]]></category>
		<category><![CDATA[boat basin]]></category>
		<category><![CDATA[clayquot sound]]></category>
		<category><![CDATA[cougar annie]]></category>
		<category><![CDATA[hesquiat]]></category>
		<category><![CDATA[homestead]]></category>
		<category><![CDATA[west coast]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1753</guid>

					<description><![CDATA[<p>Alternative title: homesteading against all odds. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/cougar-annies-garden/">Cougar Annie&#8217;s Garden</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Alternative title: homesteading against all odds. </p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="336" height="475" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/08/book-1753-cover.jpg?fit=336%2C475&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/08/book-1753-cover.jpg?w=336&amp;ssl=1 336w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/08/book-1753-cover.jpg?resize=212%2C300&amp;ssl=1 212w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/08/book-1753-cover.jpg?resize=283%2C400&amp;ssl=1 283w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/08/book-1753-cover.jpg?resize=226%2C320&amp;ssl=1 226w" sizes="auto, (max-width: 336px) 100vw, 336px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/0969700814/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/0969700814/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/0969700814/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/cougar-annies-garden/">Cougar Annie&#8217;s Garden</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/cougar-annies-garden/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1753</post-id>	</item>
		<item>
		<title>Sapiens: A Brief History of Humankind</title>
		<link>https://johnbeales.com/books/sapiens-a-brief-history-of-humankind/</link>
					<comments>https://johnbeales.com/books/sapiens-a-brief-history-of-humankind/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 22 Aug 2018 18:36:53 +0000</pubDate>
				<category><![CDATA[anthropology]]></category>
		<category><![CDATA[bestseller]]></category>
		<category><![CDATA[history]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1745</guid>

					<description><![CDATA[<p>The portrayal of &#8220;imaginary&#8221; things, (like religions, countries, and corporations), that we sapiens use to organize ourselves made me smile every time it came up. Some words I learned: perdition: eternal damnation indolent: lazy polity: an organized society, State, (OED&#8217;s 2nd definition). As money brings down the dams of community, religion and state, the world [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/sapiens-a-brief-history-of-humankind/">Sapiens: A Brief History of Humankind</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>The portrayal of &#8220;imaginary&#8221; things, (like religions, countries, and corporations), that we sapiens use to organize ourselves made me smile every time it came up.</p>
<p>Some words I learned:</p>
<p>perdition: eternal damnation<br />
indolent: lazy<br />
polity: an organized society, State, (OED&#8217;s 2nd definition).</p>
<blockquote><p>As money brings down the dams of community, religion and state, the world is in danger of becoming one big and rather heartless marketplace.</p></blockquote>
<p><cite>from the chapter &#8220;The Scent of Money&#8221;</cite></p>
<p>No Oxford comma. Hmmm.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="333" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/08/book-1745-cover.jpg?fit=333%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/08/book-1745-cover.jpg?w=333&amp;ssl=1 333w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/08/book-1745-cover.jpg?resize=200%2C300&amp;ssl=1 200w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/08/book-1745-cover.jpg?resize=266%2C400&amp;ssl=1 266w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/08/book-1745-cover.jpg?resize=213%2C320&amp;ssl=1 213w" sizes="auto, (max-width: 333px) 100vw, 333px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/0062316117/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/0062316117/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/0062316117/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/sapiens-a-brief-history-of-humankind/">Sapiens: A Brief History of Humankind</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/sapiens-a-brief-history-of-humankind/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1745</post-id>	</item>
		<item>
		<title>The Market Gardener</title>
		<link>https://johnbeales.com/books/the-market-gardener/</link>
					<comments>https://johnbeales.com/books/the-market-gardener/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sun, 24 Jun 2018 18:26:25 +0000</pubDate>
				<category><![CDATA[agriculture]]></category>
		<category><![CDATA[farming]]></category>
		<category><![CDATA[food]]></category>
		<category><![CDATA[food system]]></category>
		<category><![CDATA[gardening]]></category>
		<category><![CDATA[market gardening]]></category>
		<category><![CDATA[organic farming]]></category>
		<category><![CDATA[vegetables]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1717</guid>

					<description><![CDATA[<p>I heard about this back when it first came out in French, and now there&#8217;s an English translation. Even though I have no immediate plans to become an organic vegetable farmer, I&#8217;m inspired to improve the practices in my garden. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/the-market-gardener/">The Market Gardener</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>I heard about this back when it first came out in French, and now there&#8217;s an English translation. Even though I have no immediate plans to become an organic vegetable farmer, I&#8217;m inspired to improve the practices in my garden.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="500" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/06/book-1717-cover.jpg?fit=500%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/06/book-1717-cover.jpg?w=500&amp;ssl=1 500w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/06/book-1717-cover.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/06/book-1717-cover.jpg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/06/book-1717-cover.jpg?resize=400%2C400&amp;ssl=1 400w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/06/book-1717-cover.jpg?resize=320%2C320&amp;ssl=1 320w" sizes="auto, (max-width: 500px) 100vw, 500px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/0865717656/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/0865717656/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/0865717656/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-market-gardener/">The Market Gardener</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-market-gardener/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1717</post-id>	</item>
		<item>
		<title>Origin</title>
		<link>https://johnbeales.com/books/origin/</link>
					<comments>https://johnbeales.com/books/origin/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sun, 24 Jun 2018 13:11:09 +0000</pubDate>
				<category><![CDATA[conspiracy]]></category>
		<category><![CDATA[thriller]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1714</guid>

					<description><![CDATA[<p>Pretty good. Too bad I called it way before the big reveal at the end. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/origin/">Origin</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Pretty good. Too bad I called it way before the big reveal at the end.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="330" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/06/book-1714-cover.jpg?fit=330%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/06/book-1714-cover.jpg?w=330&amp;ssl=1 330w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/06/book-1714-cover.jpg?resize=198%2C300&amp;ssl=1 198w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/06/book-1714-cover.jpg?resize=264%2C400&amp;ssl=1 264w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/06/book-1714-cover.jpg?resize=211%2C320&amp;ssl=1 211w" sizes="auto, (max-width: 330px) 100vw, 330px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/0385514239/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/0385514239/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/0385514239/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/origin/">Origin</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/origin/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1714</post-id>	</item>
		<item>
		<title>The 5 Second Rule: Transform your Life, Work, and Confidence with Everyday Courage</title>
		<link>https://johnbeales.com/books/the-5-second-rule-transform-your-life-work-and-confidence-with-everyday-courage/</link>
					<comments>https://johnbeales.com/books/the-5-second-rule-transform-your-life-work-and-confidence-with-everyday-courage/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sun, 24 Jun 2018 13:09:34 +0000</pubDate>
				<category><![CDATA[motivation]]></category>
		<category><![CDATA[self-help]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1711</guid>

					<description><![CDATA[<p>This book could be much more condensed, but the core theory seems surprisingly effective. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/the-5-second-rule-transform-your-life-work-and-confidence-with-everyday-courage/">The 5 Second Rule: Transform your Life, Work, and Confidence with Everyday Courage</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>This book could be much more condensed, but the core theory seems surprisingly effective.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="353" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/06/book-1711-cover.jpg?fit=353%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/06/book-1711-cover.jpg?w=353&amp;ssl=1 353w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/06/book-1711-cover.jpg?resize=212%2C300&amp;ssl=1 212w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/06/book-1711-cover.jpg?resize=282%2C400&amp;ssl=1 282w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/06/book-1711-cover.jpg?resize=226%2C320&amp;ssl=1 226w" sizes="auto, (max-width: 353px) 100vw, 353px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/1682612384/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/1682612384/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/1682612384/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-5-second-rule-transform-your-life-work-and-confidence-with-everyday-courage/">The 5 Second Rule: Transform your Life, Work, and Confidence with Everyday Courage</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-5-second-rule-transform-your-life-work-and-confidence-with-everyday-courage/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1711</post-id>	</item>
		<item>
		<title>Changing the Auto-Suggest Behaviour in WooCommerce</title>
		<link>https://johnbeales.com/2018/changing-the-auto-suggest-behaviour-in-woocommerce/</link>
					<comments>https://johnbeales.com/2018/changing-the-auto-suggest-behaviour-in-woocommerce/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sat, 17 Mar 2018 16:47:56 +0000</pubDate>
				<category><![CDATA[code]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[checkout]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[select2]]></category>
		<category><![CDATA[selectwoo]]></category>
		<category><![CDATA[woocommerce]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?p=1663</guid>

					<description><![CDATA[<p>A request came in this week from a client with a WooCommerce store: I just placed an order through our website and had an issue with the state. The customer lives in Oregon, so I typed &#8220;O&#8221; hoping Oregon would auto populate, but it didn&#8217;t. I was stuck having to scroll through all 50 states [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/2018/changing-the-auto-suggest-behaviour-in-woocommerce/">Changing the Auto-Suggest Behaviour in WooCommerce</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>A request came in this week from a client with a WooCommerce store:</p>
<blockquote><p>I just placed an order through our website and had an issue with the state. The customer lives in Oregon, so I typed &#8220;O&#8221; hoping Oregon would auto populate, but it didn&#8217;t. I was stuck having to scroll through all 50 states to find Oregon.</p></blockquote>
<p><figure id="attachment_1666" aria-describedby="caption-attachment-1666" style="width: 480px" class="wp-caption aligncenter"><img data-recalc-dims="1" loading="lazy" decoding="async" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/03/autosuggest-confusing.gif?resize=480%2C334&#038;ssl=1" alt="An animated Gif showing WooCommerce&#039;s default autosuggest behaviour on select boxes." width="480" height="334" class="size-full wp-image-1666" /><figcaption id="caption-attachment-1666" class="wp-caption-text">Confusing for most people.</figcaption></figure></p>
<p>I tried it, and it&#8217;s true. Typing &#8220;o&#8221; doesn&#8217;t narrow the list down much, and the way it does narrow it down doesn&#8217;t make much sense in this context: The autosuggest on the State field matches the search phrase <em>anywhere in one of the options</em>, so typing &#8220;o&#8221; gets you a list of all states with the letter &#8220;o&#8221; in the state name, ordered alphabetically by state name. Go ahead and try it out in a <a href="https://demo.woothemes.com/storefront/">WooCommerce demo shop</a>.</p>
<p>Out of the box WooCommerce uses <a href="https://github.com/woocommerce/selectWoo">SelectWoo</a>, which is essentially <a href="https://select2.org/">Select2</a> with more accessibility. Select2&#8217;s default behaviour of matching the typed text to any part of an option makes sense in many places, especially when searching a store or for categories, but for selecting states, (and countries, although slightly less), it&#8217;s confusing.</p>
<h3>Nothing&#8217;s filterable, but we can set a default</h3>
<p>Select2 lets us <a href="https://select2.org/searching#customizing-how-results-are-matched">set the callback function</a> used for matching, so we can customize the matching behaviour, but there&#8217;s a problem, the settings for SelectWoo are set in WooCommerce&#8217;s <a href="https://github.com/woocommerce/woocommerce/blob/3.3.3/assets/js/frontend/country-select.js#L58-L63">country-select.js</a> file, and there&#8217;s no way to filter them, so we can&#8217;t change the matching behaviour on initialization. It turns out that once a Select2/SelectWoo instance is initialized there&#8217;s <a href="https://github.com/select2/select2/issues/2830">no way to change the settings</a> either.</p>
<p>When I got to here I thought we were out of luck &#8211; either I&#8217;d be creating a child theme and re-implementing the checkout, or we were going to live with SelectWoo&#8217;s default filtering behaviour. Luckily, I found one way to change the matching callback: It&#8217;s possible to <a href="https://woocommerce.github.io/selectWoo/options.html#setting-default-options">set the default SelectWoo options</a> callback before any instances are initialized. So that&#8217;s what we&#8217;re going to do.</p>
<h3>Server-Side</h3>
<p>First we need to add a bit of Javascript to our checkout page, so we enqueue a small script that&#8217;s dependent on the selectWoo script.</p>
<pre><code class="language-php">
namespace JB\WooAutosuggest;



function enqueue_frontend_scripts() {
    
    if( function_exists('is_checkout') && is_checkout() ) {

        wp_enqueue_script( 'jb-was-checkout-autosuggest', plugins_url( '../assets/checkout-autosuggest.js', __FILE__), array('selectWoo') );

    }
}

add_action( 'wp_enqueue_scripts', __NAMESPACE__ . '\enqueue_frontend_scripts', 20 );
</code></pre>
<p>And that&#8217;s all the PHP we need! Because our solution changes the default matching behaviour we are careful to only enqueue this script on the Checkout page using WooCommerce&#8217;s <code>is_checkout()</code> function.</p>
<h3>Client-Side</h3>
<p>The enqueued Javascript file is pretty simple as well:</p>
<pre><code class="language-javascript">(function($) {
    // Based on custom matcher here: https://select2.org/searching#customizing-how-results-are-matched
    function start_matcher(params, data ) {
        
        // If there are no search terms, return all of the data
        if ($.trim(params.term) === '') {
          return data;
        }

        // Do not display the item if there is no 'text' property
        if (typeof data.text === 'undefined') {
          return null;
        }

        // `params.term` should be the term that is used for searching
        // `data.text` is the text that is displayed for the data object
        // Make sure to compare in the same case! 
        if ( data.text.toLowerCase().indexOf(params.term.toLowerCase() ) === 0 ) {
            return data;
        }
        // Return `null` if the term should not be displayed
        return null;
    }
    $.fn.select2.defaults.set('matcher', start_matcher );
})(jQuery);
</code></pre>
<p>There&#8217;s a closure so we don&#8217;t pollute the global namespace, then we define a new matcher function that matches the beginning of the phrase, and set it as the default matcher. This code runs as soon as it&#8217;s ready &#8211; it doesn&#8217;t wait for a <code>DOMReady</code> event, because by the time <code>DOMReady</code> fires the SelectWoo boxes have probably been initialized already.</p>
<h3>Conclusion</h3>
<p>I wish we didn&#8217;t have to set the defaults for the whole page, but that&#8217;s what we&#8217;re stuck with at the moment. We could apply different matching patterns to different pages by adding a few more conditions to the PHP block, and a bit more Javascript. This works to make the checkout page work as expected, though.</p>
<p>All the code is <a href="https://github.com/jbeales/woo-customize-select-autosuggest">up on Github</a> as a WordPress plugin. If it&#8217;s useful let me know!</p>
<p><figure id="attachment_1667" aria-describedby="caption-attachment-1667" style="width: 478px" class="wp-caption aligncenter"><img data-recalc-dims="1" loading="lazy" decoding="async" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/03/autosuggest-fixed.gif?resize=478%2C376&#038;ssl=1" alt="An animated Gif showing WooCommerce&#039;s autosuggest matching the beginning of each option." width="478" height="376" class="size-full wp-image-1667" /><figcaption id="caption-attachment-1667" class="wp-caption-text">This makes more sense!</figcaption></figure></p>
<p>The post <a href="https://johnbeales.com/2018/changing-the-auto-suggest-behaviour-in-woocommerce/">Changing the Auto-Suggest Behaviour in WooCommerce</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/2018/changing-the-auto-suggest-behaviour-in-woocommerce/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1663</post-id>	</item>
		<item>
		<title>Adding Custom Fields to WooCommerce Products in 2018</title>
		<link>https://johnbeales.com/2018/add-custom-field-woocommerce-product/</link>
					<comments>https://johnbeales.com/2018/add-custom-field-woocommerce-product/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Fri, 09 Mar 2018 16:23:58 +0000</pubDate>
				<category><![CDATA[code]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[custom field]]></category>
		<category><![CDATA[customization]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[woocommerce]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?p=1648</guid>

					<description><![CDATA[<p>This week a client asked to add estimated ship times to the single-product pages in WooCommerce. Ship times are sometimes different for different products, so adding it as a custom field to each product made sense. As a bonus, there&#8217;s a &#8220;Shipping&#8221; tab in the Product Data metabox that the field can go in. Some [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/2018/add-custom-field-woocommerce-product/">Adding Custom Fields to WooCommerce Products in 2018</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><figure id="attachment_1652" aria-describedby="caption-attachment-1652" style="width: 301px" class="wp-caption alignright"><img data-recalc-dims="1" loading="lazy" decoding="async" class="wp-image-1652 size-full" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/03/Screen-Shot-2018-03-08-at-4.19.05-PM.png?resize=301%2C359&#038;ssl=1" alt="Screenshot showing the Shipping section of WooCommerce's Product Data box." width="301" height="359" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/03/Screen-Shot-2018-03-08-at-4.19.05-PM.png?w=301&amp;ssl=1 301w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/03/Screen-Shot-2018-03-08-at-4.19.05-PM.png?resize=252%2C300&amp;ssl=1 252w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/03/Screen-Shot-2018-03-08-at-4.19.05-PM.png?resize=268%2C320&amp;ssl=1 268w" sizes="auto, (max-width: 301px) 100vw, 301px" /><figcaption id="caption-attachment-1652" class="wp-caption-text">Look, there&#8217;s a Shipping section!</figcaption></figure></p>
<p>This week a client asked to add estimated ship times to the single-product pages in <a href="https://woocommerce.com/">WooCommerce</a>. Ship times are sometimes different for different products, so adding it as a custom field to each product made sense. As a bonus, there&#8217;s a &#8220;Shipping&#8221; tab in the Product Data metabox that the field can go in. Some Googling led me to <a href="https://tommcfarlin.com/">Tom McFarlin</a>&#8216;s &#8220;<a href="https://code.tutsplus.com/tutorials/adding-custom-fields-to-simple-products-with-woocommerce--cms-27904">Adding Custom Fields to Simple Products with WooCommerce</a>&#8221; tutorial on tuts+, which is pretty thorough, but out of date &#8211; the actions he&#8217;s are no longer in WooCommerce, so it&#8217;s time for a new version of that tutorial, my-style. There are three main tasks to accomplish: Add the field to the WordPress back-end, save whatever is in the field, and output the data on the Single Product page. We&#8217;ll look at each task separately. The completed plugin is <a href="https://github.com/jbeales/woo-ships-in-field">up on GitHub</a> if you want to follow along.</p>
<h3>Add the Custom Field to WooCommerce in the WordPress Back-End</h3>
<p>WooCommerce provides an <a href="https://docs.woocommerce.com/wc-apidocs/hook-docs.html">incredible number of hooks and filters</a>. We&#8217;re going to us <code>woocommerce_product_options_shipping</code> hook, because it runs in the shipping block, but is an equivalent hook for each Product Data tab. Look at the files in the <code>woocommerce/includes/admin/meta-boxes/views</code> directory to understand how the Product Data, (and all the WooCommerce <a href="https://developer.wordpress.org/reference/functions/add_meta_box/">Metaboxes</a>), are created, and what hooks are available.</p>
<p>Now we know what hook we need, it&#8217;s time for some code:</p>
<pre><code class="language-php">
function print_admin_field() {
    /**
     * @var \WC_Product
     * @see https://docs.woocommerce.com/wc-apidocs/source-class-WC_Meta_Box_Product_Data.html#42
     */
    global $product_object;

    if( $product_object-&gt;get_type() == 'simple' ) {
        $field = [
            'id'            =&gt; 'sif_ships_in',
            'label'         =&gt; __('Ships In', 'jb-sif'),
            'placeholder'   =&gt; __('example: 1-2 days', 'jb-sif'),
            'value'         =&gt; get_post_meta( $product_object-&gt;get_id(), '_sif_ships_in', true ), // Pre-fill any values that have already been saved.
            'description'   =&gt; __( 'Add a "Ships in X" message below the Product Meta on the single-product page.', 'jb-sif'),
            'desc_tip'      =&gt; true
        ];

        \woocommerce_wp_text_input( $field );
    }
}

add_action( 'woocommerce_product_options_shipping', 'JB\SIF\print_admin_field');
</code></pre>
<p>We make sure we have the <code>$product_object</code> variable available, (it&#8217;s set in the <code>WC_Meta_Box_Product_Data</code> class, linked with the <code>@see</code> directive), then we make sure we&#8217;re adding the field to a &#8220;Simple&#8221; product type. Then, instead of writing a bunch of HTML, we set some info in an array, and pass it to the <code>woocommerce_wp_text_input()</code> function, (with a backslash, because the plugin is <a href="http://php.net/manual/en/language.namespaces.php">namespaced</a>). WooCommerce <a href="https://docs.woocommerce.com/wc-apidocs/package-WooCommerce.Admin.Functions.html">has several of these helper fields</a> available that create a form fields and their associated markup so they fit nicely with the rest of the WooCommerce admin.</p>
<p>Notice we&#8217;re already getting a value with <code>get_post_meta()</code>. That&#8217;s because the same code gets used every time the field is displayed &#8211; so if there&#8217;s a value in the database we want to display it. This is all we need to properly display a field in the Shipping section of the Product Data. We could add a <code>name</code> attribute to the <code>$field</code> variable, but it defaults to the value of <code>id</code>, so I left it out. Setting <code>desc_tip</code> to true puts the description in the tooltip that appears when someone hovers the circle with the question mark beside the field.</p>
<p>The last line of the code block above hooks our function into the <code>woocommerce_product_options_shipping</code> action. Because the plugin has its own namespace we need to include the full name of the function in the <code>add_action()</code> call.</p>
<p><figure id="attachment_1655" aria-describedby="caption-attachment-1655" style="width: 895px" class="wp-caption aligncenter"><img data-recalc-dims="1" loading="lazy" decoding="async" class="wp-image-1655 size-full" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/03/Screen-Shot-2018-03-06-at-4.49.42-PM.png?resize=895%2C321&#038;ssl=1" alt="A screenshot of the new &quot;Ships In&quot; field in the WooCommerce admin." width="895" height="321" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/03/Screen-Shot-2018-03-06-at-4.49.42-PM.png?w=895&amp;ssl=1 895w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/03/Screen-Shot-2018-03-06-at-4.49.42-PM.png?resize=300%2C108&amp;ssl=1 300w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/03/Screen-Shot-2018-03-06-at-4.49.42-PM.png?resize=768%2C275&amp;ssl=1 768w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/03/Screen-Shot-2018-03-06-at-4.49.42-PM.png?resize=750%2C269&amp;ssl=1 750w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/03/Screen-Shot-2018-03-06-at-4.49.42-PM.png?resize=640%2C230&amp;ssl=1 640w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/03/Screen-Shot-2018-03-06-at-4.49.42-PM.png?resize=510%2C183&amp;ssl=1 510w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/03/Screen-Shot-2018-03-06-at-4.49.42-PM.png?resize=400%2C143&amp;ssl=1 400w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/03/Screen-Shot-2018-03-06-at-4.49.42-PM.png?resize=320%2C115&amp;ssl=1 320w" sizes="auto, (max-width: 895px) 100vw, 895px" /><figcaption id="caption-attachment-1655" class="wp-caption-text">Our new &#8220;Ships In&#8221; field, looking great.</figcaption></figure></p>
<h3>Save Whatever is Entered in the Field</h3>
<p>Again, a game of hooks figuring out how to save the data. Tom&#8217;s tutorial from last year used a <code>woocommerce_process_product_meta</code> hook which no longer exists. It looks like it&#8217;s been replaced by a <code>woocommerce_process_product_meta_*</code> hook for each product type. Since we&#8217;re only using a Simple product, we&#8217;ll use the <code>woocommerce_process_product_meta_simple</code> hook. Now we know which hook to use, some code:</p>
<pre><code class="language-php">
function save( $post_id ) {

    // check nonce
    if( ! ( isset( $_POST['woocommerce_meta_nonce'], $_POST['sif_ships_in'] ) || wp_verify_nonce( sanitize_key( $_POST['woocommerce_meta_nonce'] ), 'woocommerce_save_data' ) ) ) {
        return false;
    }

    update_post_meta( $post_id, '_sif_ships_in', sanitize_text_field( $_POST['sif_ships_in'] ) );

}
add_action( 'woocommerce_process_product_meta_simple', 'JB\SIF\save' );
</code></pre>
<p>In the <code>save()</code> function, (which we can name &#8220;save&#8221; without collisions because we&#8217;re using namespaces), we check the field is part of the <code>$_POST</code> array, check the <a href="https://codex.wordpress.org/WordPress_Nonces">nonce</a> set by WooCommerce, and save the contents of the field, without forgetting to <a href="https://codex.wordpress.org/Validating_Sanitizing_and_Escaping_User_Data">sanitize the data</a> first.</p>
<p>WooCommerce may already checks the nonce for us, but I am not 100% sure, so I added an extra check.</p>
<h3>Output the Data on the Single Product Page</h3>
<p>WooCommerce&#8217;s plethora of hooks make placing the output relatively simple. I chose to put it right below the &#8220;Add to Cart&#8221; button on the Single Product page, but if you look through WooCommerce&#8217;s <code>templates/content-single-product.php</code> file and the files in the <code>templates/single-product</code> directory you&#8217;ll find lots hooks to use &#8211; and of course you&#8217;re not restricted to the single-product page. If you want to add your output to each product in a list of products take a look in the <code>templates/content-product.php</code> file.</p>
<pre><code class="language-php">
function print_output() {

    global $product;
    $ships_in = get_post_meta( $product->get_id(), '_sif_ships_in', true );


    if( !empty( $ships_in )): ?>
        <div class="product_meta">< ?php echo sprintf( __( 'Ships in %s.', 'jb-sif' ), $ships_in ); ?></div>

    < ?php endif;

}
add_action( 'woocommerce_single_product_summary', 'JB\SIF\print_output', 45 );
</code></code></pre>
<p>Our <code>print_output()</code> function is pretty simple: Grab the post_meta, check it&#8217;s not empty, and output it mixed in with a &#8220;Ships In&#8221; string. It&#8217;s hooked into the <code>woocommerce_single_product_summary</code> action with a priority of 45, which means it appear after the Add to Cart button and after the Product Meta. WooCommerce&#8217;s template files are really good at explaining what functions are hooked to actions, and the priority they&#8217;re hooked at, which makes it easy to place things on a page without having to copy templates over to your theme.</p>
<p><figure id="attachment_1658" aria-describedby="caption-attachment-1658" style="width: 492px" class="wp-caption aligncenter"><a href="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/03/Screen-Shot-2018-03-08-at-6.02.21-PM.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/03/Screen-Shot-2018-03-08-at-6.02.21-PM.png?resize=492%2C198&#038;ssl=1" alt="A screenshot showing the output of the &quot;Ships In&quot; field on the single-product page." width="492" height="198" class="size-full wp-image-1658" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/03/Screen-Shot-2018-03-08-at-6.02.21-PM.png?w=492&amp;ssl=1 492w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/03/Screen-Shot-2018-03-08-at-6.02.21-PM.png?resize=300%2C121&amp;ssl=1 300w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/03/Screen-Shot-2018-03-08-at-6.02.21-PM.png?resize=400%2C161&amp;ssl=1 400w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/03/Screen-Shot-2018-03-08-at-6.02.21-PM.png?resize=320%2C129&amp;ssl=1 320w" sizes="auto, (max-width: 492px) 100vw, 492px" /></a><figcaption id="caption-attachment-1658" class="wp-caption-text">Here you can see the output of the new &#8220;Ships In&#8221; field on the single-product page. The product meta was moved elsewhere.</figcaption></figure></p>
<h3>Conclusion</h3>
<p>Adding fields to the WooCommerce part of a WordPress admin area is much easier than adding a whole metabox. You can grab the <a href="https://github.com/jbeales/woo-ships-in-field">completed plugin on Github</a>. You&#8217;ll see there&#8217;s a bit more to the plugin: requirements are checked using <a href="https://markjaquith.wordpress.com/2018/02/19/handling-old-wordpress-and-php-versions-in-your-plugin/">Mark Jaquith&#8217;s method</a> before embarking on a namespaced plugin with shorthand array syntax.</p>
<p>If this is useful let me know, and feel free to open tickets and send pull requests on Github.</p>
<p>The post <a href="https://johnbeales.com/2018/add-custom-field-woocommerce-product/">Adding Custom Fields to WooCommerce Products in 2018</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/2018/add-custom-field-woocommerce-product/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1648</post-id>	</item>
		<item>
		<title>Invisible</title>
		<link>https://johnbeales.com/books/invisible/</link>
					<comments>https://johnbeales.com/books/invisible/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sun, 21 Jan 2018 17:12:31 +0000</pubDate>
				<category><![CDATA[detective novel]]></category>
		<category><![CDATA[mystery]]></category>
		<category><![CDATA[thriller]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1635</guid>

					<description><![CDATA[<p>This appears to be the first James Patterson book I&#8217;ve read, and I see why his bio in the back of the book is so over the top, starting with &#8220;James Patterson has created more enduring fictional characters than any other novelist writing today.&#8221; If Invisible is representative of all his books, he&#8217;s really good!  The [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/invisible/">Invisible</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>This appears to be the first James Patterson book I&#8217;ve read, and I see why his bio in the back of the book is so over the top, starting with &#8220;James Patterson has created more enduring fictional characters than any other novelist writing today.&#8221; If <em>Invisible</em> is representative of all his books, he&#8217;s really good!  The twist was really well done.</p>
<p>Looking through today&#8217;s lens of not having achieved the promised equality between men and women, this jumped out at me:</p>
<blockquote><p>You could be the most generous and loving father, the most charitable of men, but if your buddies knew about those photographs of barely legal Asian girls you&#8217;ve downloaded to your computer, they&#8217;d remember that above all else—you&#8217;d be the pervert, first and foremost—so you keep it a secret. You could be a faithful wife who would never cheat on your husband, but if he know that you touched yourself in the shower while thinking of the grade-school principal or some movie star, his opinion of you would change, so you hide it.<cite>Pages 149–150 of my copy</cite></p></blockquote>
<p>Men have to look at child porn for people to turn on them, but women just have to masturbate? That passage comes from one of the killer&#8217;s journal entries, so I really hope that it&#8217;s chosen intentionally to shock, and not Mr. Patterson&#8217;s opinion.</p>
<p>Speaking of the killer&#8217;s journal, the journal entries are interspersed among the normal chapters and set in a sans-serif font, which I find really jarring in a cheap paperback. It might work on nice smooth white paper, but on rough, yellowish, paperback paper it&#8217;s weird to me.</p>
<p>These are minor complaints for the moment. I will likely read more James Patterson. The plot kept me hooked and the reveal was superbly executed.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="279" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/01/book-1635-cover.jpg?fit=279%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/01/book-1635-cover.jpg?w=279&amp;ssl=1 279w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/01/book-1635-cover.jpg?resize=167%2C300&amp;ssl=1 167w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/01/book-1635-cover.jpg?resize=223%2C400&amp;ssl=1 223w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/01/book-1635-cover.jpg?resize=179%2C320&amp;ssl=1 179w" sizes="auto, (max-width: 279px) 100vw, 279px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/1455585025/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/1455585025/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/1455585025/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/invisible/">Invisible</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/invisible/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1635</post-id>	</item>
		<item>
		<title>Flush Opcache with Varnish: a WordPress Plugin Announcement</title>
		<link>https://johnbeales.com/2018/flush-opcache-varnish-wordpress-plugin-announcement/</link>
					<comments>https://johnbeales.com/2018/flush-opcache-varnish-wordpress-plugin-announcement/#comments</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sat, 13 Jan 2018 23:09:25 +0000</pubDate>
				<category><![CDATA[A Side Project]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[opcache]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[site speed]]></category>
		<category><![CDATA[varnish]]></category>
		<category><![CDATA[web performance]]></category>
		<category><![CDATA[webperf]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wordpress performance]]></category>
		<category><![CDATA[wordpress plugin]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?p=1632</guid>

					<description><![CDATA[<p>Flush Opcache with Varnish is here to rescue you from the constant annoyance of flushing yet another cache! If, like me, you use PHP&#8217;s Opcache to speed up a site, and you have a Varnish cache, and maybe some other server-side caches, you probably want to flush the opcache, Varnish cache, and any other server-side [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/2018/flush-opcache-varnish-wordpress-plugin-announcement/">Flush Opcache with Varnish: a WordPress Plugin Announcement</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="https://wordpress.org/plugins/flush-opcache-with-varnish/">Flush Opcache with Varnish</a> is here to rescue you from the constant annoyance of flushing <em>yet another cache</em>!</p>
<p>If, like me, you use <a href="https://www.sitepoint.com/understanding-opcache/">PHP&#8217;s Opcache</a> to speed up a site, and you have a Varnish cache, and maybe some other server-side caches, you probably want to flush the opcache, Varnish cache, and any other server-side caches <em>at the same time</em> after changing the PHP files on your server, (like, when you update WordPress, plugins, or themes). I don&#8217;t want to click a button for each cache type, or worse, have to log in to the command-line for a <code>sudo service restart varnish</code> after doing updates, especially if I&#8217;m doing repeated updates. <em>Flush Opcache with Varnish</em> hooks into Mika Epstein&#8217;s excellent <a href="https://wordpress.org/plugins/varnish-http-purge/">Varnish HTTP Cache</a> plugin and flushes the PHP Opcache and the <a href="https://en-ca.wordpress.org/plugins/wp-super-cache/">WP Super Cache</a> cache, (if you use <em>WP Super Cache</em>), every time you manually flush the Varnish cache, turning the <em>Varnish HTTP Cache</em> &#8220;Clear Cache&#8221; buttons into a three-for-one deal.</p>
<p>If you also use the plugin <a href="https://wordpress.org/plugins/flush-opcache/">WP Opcache</a> to manage your opcache then <em>WP Opcache</em> will be called to do the actual Opcache flushing so you can take advantage of its automatic rebuilding of the opcache.</p>
<p>I&#8217;m already using Flush Opcache with Varnish in production and it&#8217;s saving me time every time I update a theme or plugin. You can get it in the <a href="https://wordpress.org/plugins/flush-opcache-with-varnish/">WordPress.org plugin directory</a>.</p>
<p>The post <a href="https://johnbeales.com/2018/flush-opcache-varnish-wordpress-plugin-announcement/">Flush Opcache with Varnish: a WordPress Plugin Announcement</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/2018/flush-opcache-varnish-wordpress-plugin-announcement/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1632</post-id>	</item>
		<item>
		<title>Net Force: Night Moves</title>
		<link>https://johnbeales.com/books/net-force-night-moves/</link>
					<comments>https://johnbeales.com/books/net-force-night-moves/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Fri, 12 Jan 2018 03:30:29 +0000</pubDate>
				<category><![CDATA[hackers]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[mystery]]></category>
		<category><![CDATA[spy novel]]></category>
		<category><![CDATA[thriller]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1629</guid>

					<description><![CDATA[<p>Did Tom Clancy actually write this? I&#8217;m not sure, but I can&#8217;t find any other author listed. Night Moves is the only book I have read from the Net Force series. The book was written in 1999, and is set in 2011 &#8211; the &#8220;future&#8221; where computers, and especially Virtual Reality, are way more advanced than [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/net-force-night-moves/">Net Force: Night Moves</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Did Tom Clancy actually write this? I&#8217;m not sure, but I can&#8217;t find any other author listed. <em>Night Moves</em> is the only book I have read from the Net Force series. The book was written in 1999, and is set in 2011 &#8211; the &#8220;future&#8221; where computers, and especially Virtual Reality, are way more advanced than they are today in 2018, and people use really cringe-y computer slang to go with their cringe-y VR worlds and &#8220;hacking&#8221; by doing things like walking through a VR jungle.</p>
<p>The storylines of Alex Michaels and John Howard&#8217;s son, (I don&#8217;t remember, and didn&#8217;t write down, his name), could be completely cut from the book. Michaels, the alleged leader of the Net Force team, spends the entire book struggling with his romantic entanglements, (which even the book, written before the turn of the millennium, admits would make heads spin in PR &#8211; never mind the current environment around sexual harassment in the workplace). He doesn&#8217;t do anything to move the core story forward. As for Howard Jr, a high school student and <em>competitive boomerang thrower</em>, he throws boomerangs with names that were probably cool in 1999 and tries to figure out which girl he should go for &#8211; that&#8217;s not the Clancy I came for!</p>
<p>There&#8217;s the core of a decent story here, between hunting down a former Russian operative in the Nevada desert, to tracking down a bad actor with a supercomputer, and a billionaire English lord who likes black powder, but it hasn&#8217;t aged well, and has more storylines than desired.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="300" height="300" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/01/book-1629-cover.jpg?fit=300%2C300&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/01/book-1629-cover.jpg?w=300&amp;ssl=1 300w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2018/01/book-1629-cover.jpg?resize=150%2C150&amp;ssl=1 150w" sizes="auto, (max-width: 300px) 100vw, 300px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/0425174778/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/0425174778/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/0425174778/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/net-force-night-moves/">Net Force: Night Moves</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/net-force-night-moves/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1629</post-id>	</item>
		<item>
		<title>Unf*ck Your Habitat</title>
		<link>https://johnbeales.com/books/unfck-your-habitat/</link>
					<comments>https://johnbeales.com/books/unfck-your-habitat/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sat, 02 Dec 2017 13:57:36 +0000</pubDate>
				<category><![CDATA[cleaning]]></category>
		<category><![CDATA[humour]]></category>
		<category><![CDATA[self-help]]></category>
		<category><![CDATA[self-improvement]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1622</guid>

					<description><![CDATA[<p>There&#8217;s a nugget of wisdom near the end that applies to anything needing self-motivation, which is a lot for us self-employed remote workers: Make yourself work a little bit every day, if for no other reason than to stay in the habit of working. As someone who easily drops out of work mode, sometimes entirely, [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/unfck-your-habitat/">Unf*ck Your Habitat</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>There&#8217;s a nugget of wisdom near the end that applies to anything needing self-motivation, which is a lot for us self-employed remote workers:</p>
<blockquote><p>Make yourself work a little bit every day, if for no other reason than to stay in the habit of working.</p></blockquote>
<p>As someone who easily drops out of work mode, sometimes entirely, and sometimes for certain projects, so this is something I will apply everywhere, not just to cleaning.</p>
<p>&nbsp;</p>
<p>I started UFYH before reading <a href="https://johnbeales.com/books/life-changing-magic-tidying/">Marie Kondo&#8217;s book</a>, and despite having dramatically different opinions about a few things, (MK: &#8220;You must do everything at once!&#8221;, RH: &#8220;Doing a little bit is better than nothing at all!&#8221;), the core advice about the central problem of &#8220;I have too much stuff and it&#8217;s everywhere&#8221; is the same: get rid of as much as possible. While Marie Kondo goes deeper into a method of letting go of evaluating what you need to keep Rachel Hoffman very strongly suggests that the right answer to stuff everywhere is less stuff, not better storage, and spends more time on dealing with other people in the space and the cleaning part that becomes more possible and easier after purging.</p>
<p>&nbsp;</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="333" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/12/book-1622-cover.jpg?fit=333%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/12/book-1622-cover.jpg?w=333&amp;ssl=1 333w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/12/book-1622-cover.jpg?resize=200%2C300&amp;ssl=1 200w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/12/book-1622-cover.jpg?resize=266%2C400&amp;ssl=1 266w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/12/book-1622-cover.jpg?resize=213%2C320&amp;ssl=1 213w" sizes="auto, (max-width: 333px) 100vw, 333px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/1250102952/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/1250102952/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/1250102952/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/unfck-your-habitat/">Unf*ck Your Habitat</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/unfck-your-habitat/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1622</post-id>	</item>
		<item>
		<title>Black Beauty</title>
		<link>https://johnbeales.com/books/black-beauty/</link>
					<comments>https://johnbeales.com/books/black-beauty/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Mon, 20 Nov 2017 18:52:17 +0000</pubDate>
				<category><![CDATA[animal welfare]]></category>
		<category><![CDATA[children's novel]]></category>
		<category><![CDATA[classic]]></category>
		<category><![CDATA[english novel]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1617</guid>

					<description><![CDATA[<p>Having read Black Beauty as a child, for some reason I thought Beauty was going to die and was ready to cry, so I was pleasantly surprised, although it felt like the story should have continued to his death. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/black-beauty/">Black Beauty</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Having read <em>Black Beauty</em> as a child, for some reason I thought Beauty was going to die and was ready to cry, so I was pleasantly surprised, although it felt like the story should have continued to his death.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="324" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/11/book-1617-cover.jpg?fit=324%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/11/book-1617-cover.jpg?w=324&amp;ssl=1 324w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/11/book-1617-cover.jpg?resize=194%2C300&amp;ssl=1 194w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/11/book-1617-cover.jpg?resize=259%2C400&amp;ssl=1 259w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/11/book-1617-cover.jpg?resize=207%2C320&amp;ssl=1 207w" sizes="auto, (max-width: 324px) 100vw, 324px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/1420952684/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/1420952684/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/1420952684/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/black-beauty/">Black Beauty</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/black-beauty/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1617</post-id>	</item>
		<item>
		<title>Why X Theme and Pro sometimes cause PHP warnings on WPEngine</title>
		<link>https://johnbeales.com/2017/x-theme-pro-sometimes-cause-php-warnings-wpengine/</link>
					<comments>https://johnbeales.com/2017/x-theme-pro-sometimes-cause-php-warnings-wpengine/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Thu, 26 Oct 2017 04:13:24 +0000</pubDate>
				<category><![CDATA[code]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[pro]]></category>
		<category><![CDATA[responsive images]]></category>
		<category><![CDATA[themeco]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wordpress filters]]></category>
		<category><![CDATA[wp_calculate_image_srcset]]></category>
		<category><![CDATA[wpengine]]></category>
		<category><![CDATA[x theme]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?p=1608</guid>

					<description><![CDATA[<p>The Problem Earlier this fall I was working on an e-commerce site that&#8217;s hosted on WPEngine that used Themeco&#8217;s Pro as its parent theme most pages hadn&#8217;t seen any customization yet, most of the code was stock, and this appeared on the Products page: PHP Warning: Invalid argument supplied for foreach() in wp-content/mu-plugins/wpengine-common/plugin.php Hmm. Who [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/2017/x-theme-pro-sometimes-cause-php-warnings-wpengine/">Why X Theme and Pro sometimes cause PHP warnings on WPEngine</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h3>The Problem</h3>
<p>Earlier this fall I was working on an e-commerce site that&#8217;s hosted on WPEngine that used Themeco&#8217;s <a href="https://theme.co/pro/">Pro</a> as its parent theme most pages hadn&#8217;t seen any customization yet, most of the code was stock, and this appeared on the Products page:</p>
<pre>PHP Warning:  Invalid argument supplied for foreach() in wp-content/mu-plugins/wpengine-common/plugin.php
</pre>
<p>Hmm. Who is passing what to a <code>foreach</code>?</p>
<p>It turns out that both <a href="https://theme.co/x/">X Theme</a> and it&#8217;s progeny Pro do this turn off WordPress&#8217;s <a href="https://make.wordpress.org/core/2015/11/10/responsive-images-in-wordpress-4-4/">automatic responsive images</a>:</p>
<pre><code class="language-php">// Disable WordPress 4.4 Responsive Images
// =============================================================================

if ( ! function_exists( 'x_disable_wp_image_srcset' ) ) :
  function x_disable_wp_image_srcset( $source ) {
    return false;
  }
  add_filter( 'wp_calculate_image_srcset', 'x_disable_wp_image_srcset' );
endif;
</code></pre>
<p>They&#8217;re hooking into the <a href="https://developer.wordpress.org/reference/hooks/wp_calculate_image_srcset/"><code>wp_calculate_image_srcset</code> filter</a> and returning false, which stops WordPress from adding a srcset attribute to an image, (more on why in a moment). The problem here is that the value being passed to the filter, <code>$sources</code>, is an array, but <code>x_disable_wp_image_srcset()</code> turns that array into a boolean false, so then anything else hooking into <code>wp_calculate_image_srcset</code>, for example, WPEngine&#8217;s CDN system, tries to iterate over the <code>$sources</code> array, but it&#8217;s not an array, hence the error. By filtering <code>$sources</code> to a boolean false Themeco is breaking the expected, and documented, behaviour of the <code>wp_calculate_image_srcset</code> filter.</p>
<h3>Solutions</h3>
<p>Luckily, there are two easy fixes for this problem. The first is to make sure you&#8217;re using the latest version of WPEngine&#8217;s must-use plugin. They&#8217;ve caught on to the problem and check to make sure <code>$sources</code> is actually an array:</p>
<pre><code class="language-php">if ( is_array( $sources ) ) {
    foreach ( $sources as $source ) {
        // do the stuff
    }
}</code></pre>
<p>If you can&#8217;t do that, at least Themeco made the function pluggable, so you can add your own version of <code>x_disable_wp_image_srcset()</code> to your theme&#8217;s functions.php or a plugin that returns an empty array and plays nicely with other plugins:</p>
<pre><code class="language-php">// This is a pluggable function. If we don't define it here then Pro does in 
// pro/framework/functions/global/admin/thumbnails/setup.php
function x_disable_wp_image_srcset( $sources, $size_array, $image_src, $image_meta, $attachment_id ) {
    return [];
}
</code></pre>
<p>Or, you could <a href="https://alistapart.com/article/responsive-images-in-practice">use responsive images</a>.</p>
<h3>Confusion, (aka, why this happens in the first place)</h3>
<p>When I first discovered this problem I E-mailed Themeco to tell them about the problem, however they pointed me at the <a href="https://developer.wordpress.org/reference/functions/wp_calculate_image_srcset/">documentation for the <code>wp_calculate_image_srcset()</code> <em>function</em></a>, which states the function can return false, and sent me on my way:</p>
<blockquote>
<pre>Hey John,

Thanks for writing in. In looking over WordPress' official documentation for that function/hook, I believe that boolean false should be the correct value to return:

<a href="https://developer.wordpress.org/reference/functions/wp_calculate_image_srcset/">https://developer.wordpress.org/reference/functions/wp_calculate_image_srcset/</a>

In the "Return" section you'll see that it is supposed to return a string or a boolean false if there is an "error or only one source exists." It seems as though WPEngine should need to revise their function to account for these instances anyway even if not for X or Pro (and at least work to catch any fatal errors like this).

Hopefully that helps, cheers.


Best Regards,
Your Themeco Team
</pre>
</blockquote>
<p>This confusion occurs because the convention in WordPress is that if a filter and a function have the same name, the filter filters the output of the function. However, in this case the convention is broken &#8211; when I raised the issue in the Advanced WordPress Facebook group a very experienced WP developer made the exact same mistake and assumed that allowable return types for the function should be fine to return from the filter. After we cleared up the confusion I filed a <a href="https://core.trac.wordpress.org/ticket/41895">bug about the confusing names</a>, go star it so it gets some attention!</p>
<h3>A Fluke of PHP</h3>
<p>So why does returning false in the <code>wp_calculate_image_srcset</code> filter stop WordPress from using responsive images? Here&#8217;s the relevant <a href="https://core.trac.wordpress.org/browser/tags/4.8.1/src/wp-includes/media.php#L1203">code from media.php</a>:</p>
<pre><code class="language-php">$sources = apply_filters( 'wp_calculate_image_srcset', $sources, $size_array, $image_src, $image_meta, $attachment_id );

// Only return a 'srcset' value if there is more than one source.
if ( ! $src_matched || count( $sources ) &lt; 2 ) {
    return false;
}
</code></pre>
<p>To follow along, if <code>$sources</code> is turned into a boolean false at the <code>apply_filters()</code> call, then a <code>count( false )</code> happens in the condition on the next non-comment line. Instead of an error like I expected, running <code>count()</code> on any non-array value returns 1, so <code>count( false ) == 1</code>, also <code>count( 0 ) == 1</code></p>
<h3>Conclusion</h3>
<p>First, be a good citizen of the WordPress ecosystem and don&#8217;t change the type of a filtered value to something other than the documented types for that value. Second, if you have any non-core themes or plugins installed you can&#8217;t trust that a value coming into a filter will be the type that the docs say, so check! When WPEngine realized there was a problem an <code>is_array()</code> fixed the problem. Third, read support E-mails thoroughly and make sure you understand them, it hurts when I go to the effort to document a problem and come up with a solution, and I&#8217;m told it&#8217;s not a problem. Finally, go +1 <a href="https://core.trac.wordpress.org/ticket/41895">my ticket</a> so maybe others won&#8217;t get bitten.</p>
<p>The post <a href="https://johnbeales.com/2017/x-theme-pro-sometimes-cause-php-warnings-wpengine/">Why X Theme and Pro sometimes cause PHP warnings on WPEngine</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/2017/x-theme-pro-sometimes-cause-php-warnings-wpengine/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1608</post-id>	</item>
		<item>
		<title>The Matarese Circle</title>
		<link>https://johnbeales.com/books/the-matarese-circle/</link>
					<comments>https://johnbeales.com/books/the-matarese-circle/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Mon, 23 Oct 2017 16:28:22 +0000</pubDate>
				<category><![CDATA[cold war]]></category>
		<category><![CDATA[spy novel]]></category>
		<category><![CDATA[thriller]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1604</guid>

					<description><![CDATA[<p>Like The Sigma Protocol, which I re-read recently after forgetting I had already read it, the Matarese Circle, (spoiler alert), deals with corporations reaching beyond their intended level of political power. It&#8217;s kind of tiring, (maybe because it&#8217;s not so far-fetched anymore). Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/the-matarese-circle/">The Matarese Circle</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Like <a href="https://johnbeales.com/books/the-sigma-protocol/">The Sigma Protocol</a>, which I re-read recently after forgetting I had already read it, the Matarese Circle, (spoiler alert), deals with corporations reaching beyond their intended level of political power. It&#8217;s kind of tiring, (maybe because it&#8217;s not so far-fetched anymore).</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="279" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/10/book-1604-cover.jpg?fit=279%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/10/book-1604-cover.jpg?w=279&amp;ssl=1 279w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/10/book-1604-cover.jpg?resize=167%2C300&amp;ssl=1 167w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/10/book-1604-cover.jpg?resize=223%2C400&amp;ssl=1 223w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/10/book-1604-cover.jpg?resize=179%2C320&amp;ssl=1 179w" sizes="auto, (max-width: 279px) 100vw, 279px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/0345539249/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/0345539249/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/0345539249/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-matarese-circle/">The Matarese Circle</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-matarese-circle/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1604</post-id>	</item>
		<item>
		<title>The Perfect Storm</title>
		<link>https://johnbeales.com/books/the-perfect-storm/</link>
					<comments>https://johnbeales.com/books/the-perfect-storm/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 18 Oct 2017 23:21:50 +0000</pubDate>
				<category><![CDATA[disaster]]></category>
		<category><![CDATA[fishing]]></category>
		<category><![CDATA[nonfiction]]></category>
		<category><![CDATA[ocean]]></category>
		<category><![CDATA[sea]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1572</guid>

					<description><![CDATA[<p>I started The Perfect Storm several years ago but never got into it, but when I re-tried last week I was hooked. Even technical things like weather forecasting or measuring and predicting wave height become interesting in the context of life or death. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/the-perfect-storm/">The Perfect Storm</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>I started The Perfect Storm several years ago but never got into it, but when I re-tried last week I was hooked. Even technical things like weather forecasting or measuring and predicting wave height become interesting in the context of life or death.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="331" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/10/book-1572-cover.jpg?fit=331%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/10/book-1572-cover.jpg?w=331&amp;ssl=1 331w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/10/book-1572-cover.jpg?resize=199%2C300&amp;ssl=1 199w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/10/book-1572-cover.jpg?resize=265%2C400&amp;ssl=1 265w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/10/book-1572-cover.jpg?resize=212%2C320&amp;ssl=1 212w" sizes="auto, (max-width: 331px) 100vw, 331px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/0393337014/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/0393337014/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/0393337014/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-perfect-storm/">The Perfect Storm</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-perfect-storm/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1572</post-id>	</item>
		<item>
		<title>Designing Great Web APIs</title>
		<link>https://johnbeales.com/books/designing-great-web-apis/</link>
					<comments>https://johnbeales.com/books/designing-great-web-apis/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 18 Oct 2017 23:16:31 +0000</pubDate>
				<category><![CDATA[api]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[web]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1569</guid>

					<description><![CDATA[<p>Free from O&#8217;Reilly, and a very short read. Rather than technical guide I expected Designing Great Web APIs goes through the design process and tries to guide us to create an API that will be easy for developers to use and help them accomplish something they wouldn&#8217;t be able to otherwise. Want to read it [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/designing-great-web-apis/">Designing Great Web APIs</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="http://www.oreilly.com/web-platform/free/designing-great-web-apis.csp">Free from O&#8217;Reilly</a>, and a very short read. Rather than technical guide I expected Designing Great Web APIs goes through the design process and tries to guide us to create an API that will be easy for developers to use and help them accomplish something they wouldn&#8217;t be able to otherwise.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="" rel="nofollow">Amazon.com (USA)</a> <a href="" rel="nofollow">Amazon.ca (Canada)</a> <a href="" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/designing-great-web-apis/">Designing Great Web APIs</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/designing-great-web-apis/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1569</post-id>	</item>
		<item>
		<title>The Life-Changing Magic of Tidying Up</title>
		<link>https://johnbeales.com/books/life-changing-magic-tidying/</link>
					<comments>https://johnbeales.com/books/life-changing-magic-tidying/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sun, 08 Oct 2017 12:10:52 +0000</pubDate>
				<category><![CDATA[cleaning]]></category>
		<category><![CDATA[organizing]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1558</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/life-changing-magic-tidying/">The Life-Changing Magic of Tidying Up</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="356" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/10/book-1558-cover.jpg?fit=356%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/10/book-1558-cover.jpg?w=356&amp;ssl=1 356w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/10/book-1558-cover.jpg?resize=214%2C300&amp;ssl=1 214w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/10/book-1558-cover.jpg?resize=285%2C400&amp;ssl=1 285w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/10/book-1558-cover.jpg?resize=228%2C320&amp;ssl=1 228w" sizes="auto, (max-width: 356px) 100vw, 356px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/1607747308/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/1607747308/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/1607747308/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/life-changing-magic-tidying/">The Life-Changing Magic of Tidying Up</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/life-changing-magic-tidying/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1558</post-id>	</item>
		<item>
		<title>The Sky is Falling</title>
		<link>https://johnbeales.com/books/the-sky-is-falling/</link>
					<comments>https://johnbeales.com/books/the-sky-is-falling/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sun, 08 Oct 2017 12:07:50 +0000</pubDate>
				<category><![CDATA[mystery]]></category>
		<category><![CDATA[thriller]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1555</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/the-sky-is-falling/">The Sky is Falling</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="311" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/10/book-1555-cover.jpg?fit=311%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/10/book-1555-cover.jpg?w=311&amp;ssl=1 311w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/10/book-1555-cover.jpg?resize=187%2C300&amp;ssl=1 187w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/10/book-1555-cover.jpg?resize=249%2C400&amp;ssl=1 249w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/10/book-1555-cover.jpg?resize=199%2C320&amp;ssl=1 199w" sizes="auto, (max-width: 311px) 100vw, 311px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/0446610178/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/0446610178/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/0446610178/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-sky-is-falling/">The Sky is Falling</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-sky-is-falling/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1555</post-id>	</item>
		<item>
		<title>Doctor Zhivago</title>
		<link>https://johnbeales.com/books/doctor-zhivago/</link>
					<comments>https://johnbeales.com/books/doctor-zhivago/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sun, 08 Oct 2017 12:05:00 +0000</pubDate>
				<category><![CDATA[now a major hollywood motion picture]]></category>
		<category><![CDATA[revolution]]></category>
		<category><![CDATA[russia]]></category>
		<category><![CDATA[russian novel]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1552</guid>

					<description><![CDATA[<p>Yuri&#8217;s an idiot. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/doctor-zhivago/">Doctor Zhivago</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Yuri&#8217;s an idiot.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="324" height="500" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/10/book-1552-cover.jpg?fit=324%2C500&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/10/book-1552-cover.jpg?w=324&amp;ssl=1 324w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/10/book-1552-cover.jpg?resize=194%2C300&amp;ssl=1 194w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/10/book-1552-cover.jpg?resize=259%2C400&amp;ssl=1 259w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/10/book-1552-cover.jpg?resize=207%2C320&amp;ssl=1 207w" sizes="auto, (max-width: 324px) 100vw, 324px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/0307390950/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/0307390950/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/0307390950/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/doctor-zhivago/">Doctor Zhivago</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/doctor-zhivago/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1552</post-id>	</item>
		<item>
		<title>The Silkworm</title>
		<link>https://johnbeales.com/books/the-silkworm/</link>
					<comments>https://johnbeales.com/books/the-silkworm/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 05 Jul 2017 20:08:07 +0000</pubDate>
				<category><![CDATA[british mystery]]></category>
		<category><![CDATA[detective novel]]></category>
		<category><![CDATA[mystery]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1496</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/the-silkworm/">The Silkworm</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="50" height="75" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/07/book-1496-cover.jpg?fit=50%2C75&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/07/book-1496-cover.jpg?w=333&amp;ssl=1 333w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/07/book-1496-cover.jpg?resize=200%2C300&amp;ssl=1 200w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/07/book-1496-cover.jpg?resize=266%2C400&amp;ssl=1 266w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/07/book-1496-cover.jpg?resize=213%2C320&amp;ssl=1 213w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2017/07/book-1496-cover.jpg?resize=50%2C75&amp;ssl=1 50w" sizes="auto, (max-width: 50px) 100vw, 50px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/031620689X/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/031620689X/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/031620689X/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-silkworm/">The Silkworm</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-silkworm/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1496</post-id>	</item>
		<item>
		<title>Indigo Slam</title>
		<link>https://johnbeales.com/books/indigo-slam/</link>
					<comments>https://johnbeales.com/books/indigo-slam/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 28 Dec 2016 04:06:58 +0000</pubDate>
				<category><![CDATA[detective novel]]></category>
		<category><![CDATA[mystery]]></category>
		<category><![CDATA[whodunnit]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1489</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/indigo-slam/">Indigo Slam</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="50" height="75" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/12/book-1489-cover.jpg?fit=50%2C75&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/12/book-1489-cover.jpg?w=333&amp;ssl=1 333w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/12/book-1489-cover.jpg?resize=200%2C300&amp;ssl=1 200w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/12/book-1489-cover.jpg?resize=266%2C400&amp;ssl=1 266w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/12/book-1489-cover.jpg?resize=213%2C320&amp;ssl=1 213w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/12/book-1489-cover.jpg?resize=50%2C75&amp;ssl=1 50w" sizes="auto, (max-width: 50px) 100vw, 50px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/0316376353/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/0316376353/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/0316376353/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/indigo-slam/">Indigo Slam</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/indigo-slam/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1489</post-id>	</item>
		<item>
		<title>The Night Circus</title>
		<link>https://johnbeales.com/books/the-night-circus/</link>
					<comments>https://johnbeales.com/books/the-night-circus/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Tue, 05 Apr 2016 04:09:43 +0000</pubDate>
				<category><![CDATA[atmosphere]]></category>
		<category><![CDATA[circus]]></category>
		<category><![CDATA[magic]]></category>
		<category><![CDATA[romance]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1479</guid>

					<description><![CDATA[<p>Magical. Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/the-night-circus/">The Night Circus</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Magical.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="49" height="75" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/04/book-1479-cover.jpg?fit=49%2C75&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/04/book-1479-cover.jpg?w=324&amp;ssl=1 324w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/04/book-1479-cover.jpg?resize=194%2C300&amp;ssl=1 194w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/04/book-1479-cover.jpg?resize=259%2C400&amp;ssl=1 259w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/04/book-1479-cover.jpg?resize=207%2C320&amp;ssl=1 207w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/04/book-1479-cover.jpg?resize=49%2C75&amp;ssl=1 49w" sizes="auto, (max-width: 49px) 100vw, 49px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/0307744434/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/0307744434/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/0307744434/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-night-circus/">The Night Circus</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-night-circus/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1479</post-id>	</item>
		<item>
		<title>Treachery at Sharpnose Point</title>
		<link>https://johnbeales.com/books/treachery-at-sharpnose-point/</link>
					<comments>https://johnbeales.com/books/treachery-at-sharpnose-point/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Thu, 17 Mar 2016 01:40:40 +0000</pubDate>
				<category><![CDATA[cornwall]]></category>
		<category><![CDATA[fiction and nonfiction together]]></category>
		<category><![CDATA[historical]]></category>
		<category><![CDATA[shipwreck]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1475</guid>

					<description><![CDATA[<p>I read some of the reviews on Amazon, and Goodreads, when posting this. Some people really hate the book! It&#8217;s pretty good if you can get past the boring second chapter of walking down the coast. Make sure you read to the end, though, to get a conclusion &#8211; I think some of the Amazon [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/books/treachery-at-sharpnose-point/">Treachery at Sharpnose Point</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>I read some of the reviews on Amazon, and Goodreads, when posting this. Some people really hate the book! It&#8217;s pretty good if you can get past the boring second chapter of walking down the coast. Make sure you read to the end, though, to get a conclusion &#8211; I think some of the Amazon reviewers forgot to do that.</p>
<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="49" height="75" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/03/book-1475-cover.jpg?fit=49%2C75&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/03/book-1475-cover.jpg?w=329&amp;ssl=1 329w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/03/book-1475-cover.jpg?resize=197%2C300&amp;ssl=1 197w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/03/book-1475-cover.jpg?resize=263%2C400&amp;ssl=1 263w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/03/book-1475-cover.jpg?resize=211%2C320&amp;ssl=1 211w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/03/book-1475-cover.jpg?resize=49%2C75&amp;ssl=1 49w" sizes="auto, (max-width: 49px) 100vw, 49px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/0156027054/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/0156027054/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/0156027054/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/treachery-at-sharpnose-point/">Treachery at Sharpnose Point</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/treachery-at-sharpnose-point/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1475</post-id>	</item>
		<item>
		<title>A Time to Kill</title>
		<link>https://johnbeales.com/books/a-time-to-kill/</link>
					<comments>https://johnbeales.com/books/a-time-to-kill/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sat, 27 Feb 2016 19:54:46 +0000</pubDate>
				<category><![CDATA[courtroom]]></category>
		<category><![CDATA[grisham]]></category>
		<category><![CDATA[lawyers]]></category>
		<category><![CDATA[thriller]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1471</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/a-time-to-kill/">A Time to Kill</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="42" height="75" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/02/book-1471-cover.jpg?fit=42%2C75&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/02/book-1471-cover.jpg?w=279&amp;ssl=1 279w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/02/book-1471-cover.jpg?resize=167%2C300&amp;ssl=1 167w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/02/book-1471-cover.jpg?resize=223%2C400&amp;ssl=1 223w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/02/book-1471-cover.jpg?resize=179%2C320&amp;ssl=1 179w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/02/book-1471-cover.jpg?resize=42%2C75&amp;ssl=1 42w" sizes="auto, (max-width: 42px) 100vw, 42px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/B003B02O0A/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/B003B02O0A/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/B003B02O0A/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/a-time-to-kill/">A Time to Kill</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/a-time-to-kill/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1471</post-id>	</item>
		<item>
		<title>Darkly Dreaming Dexter</title>
		<link>https://johnbeales.com/books/darkly-dreaming-dexter/</link>
					<comments>https://johnbeales.com/books/darkly-dreaming-dexter/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sat, 27 Feb 2016 19:46:15 +0000</pubDate>
				<category><![CDATA[comedy]]></category>
		<category><![CDATA[serial killer]]></category>
		<category><![CDATA[thriller]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1468</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/darkly-dreaming-dexter/">Darkly Dreaming Dexter</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="45" height="75" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/02/book-1468-cover.jpg?fit=45%2C75&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/02/book-1468-cover.jpg?w=301&amp;ssl=1 301w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/02/book-1468-cover.jpg?resize=181%2C300&amp;ssl=1 181w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/02/book-1468-cover.jpg?resize=241%2C400&amp;ssl=1 241w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/02/book-1468-cover.jpg?resize=193%2C320&amp;ssl=1 193w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/02/book-1468-cover.jpg?resize=45%2C75&amp;ssl=1 45w" sizes="auto, (max-width: 45px) 100vw, 45px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/B000FCK8ZK/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/B000FCK8ZK/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/B000FCK8ZK/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/darkly-dreaming-dexter/">Darkly Dreaming Dexter</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/darkly-dreaming-dexter/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1468</post-id>	</item>
		<item>
		<title>The Cuckoo&#8217;s Calling</title>
		<link>https://johnbeales.com/books/the-cuckoos-calling/</link>
					<comments>https://johnbeales.com/books/the-cuckoos-calling/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sun, 14 Feb 2016 00:35:15 +0000</pubDate>
				<category><![CDATA[detective novel]]></category>
		<category><![CDATA[london]]></category>
		<category><![CDATA[mystery]]></category>
		<category><![CDATA[private eye]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1464</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/the-cuckoos-calling/">The Cuckoo&#8217;s Calling</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="50" height="75" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/02/book-1464-cover.jpg?fit=50%2C75&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/02/book-1464-cover.jpg?w=333&amp;ssl=1 333w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/02/book-1464-cover.jpg?resize=200%2C300&amp;ssl=1 200w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/02/book-1464-cover.jpg?resize=266%2C400&amp;ssl=1 266w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/02/book-1464-cover.jpg?resize=213%2C320&amp;ssl=1 213w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/02/book-1464-cover.jpg?resize=50%2C75&amp;ssl=1 50w" sizes="auto, (max-width: 50px) 100vw, 50px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/B00AA20E5Y/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/B00AA20E5Y/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/B00AA20E5Y/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-cuckoos-calling/">The Cuckoo&#8217;s Calling</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-cuckoos-calling/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1464</post-id>	</item>
		<item>
		<title>David and Goliath: Underdogs, Misfits, and the Art of Battling Giants</title>
		<link>https://johnbeales.com/books/david-and-goliath-underdogs-misfits-and-the-art-of-battling-giants/</link>
					<comments>https://johnbeales.com/books/david-and-goliath-underdogs-misfits-and-the-art-of-battling-giants/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sun, 14 Feb 2016 00:33:10 +0000</pubDate>
				<category><![CDATA[learning]]></category>
		<category><![CDATA[self-help]]></category>
		<category><![CDATA[self-improvement]]></category>
		<category><![CDATA[underdog]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1461</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/david-and-goliath-underdogs-misfits-and-the-art-of-battling-giants/">David and Goliath: Underdogs, Misfits, and the Art of Battling Giants</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="50" height="75" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/02/book-1461-cover.jpg?fit=50%2C75&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/02/book-1461-cover.jpg?w=333&amp;ssl=1 333w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/02/book-1461-cover.jpg?resize=200%2C300&amp;ssl=1 200w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/02/book-1461-cover.jpg?resize=266%2C400&amp;ssl=1 266w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/02/book-1461-cover.jpg?resize=213%2C320&amp;ssl=1 213w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/02/book-1461-cover.jpg?resize=50%2C75&amp;ssl=1 50w" sizes="auto, (max-width: 50px) 100vw, 50px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/B00BAXFAOW/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/B00BAXFAOW/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/B00BAXFAOW/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/david-and-goliath-underdogs-misfits-and-the-art-of-battling-giants/">David and Goliath: Underdogs, Misfits, and the Art of Battling Giants</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/david-and-goliath-underdogs-misfits-and-the-art-of-battling-giants/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1461</post-id>	</item>
		<item>
		<title>Never Die Alone</title>
		<link>https://johnbeales.com/books/never-die-alone/</link>
					<comments>https://johnbeales.com/books/never-die-alone/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Mon, 25 Jan 2016 16:29:28 +0000</pubDate>
				<category><![CDATA[mystery]]></category>
		<category><![CDATA[new orleans]]></category>
		<category><![CDATA[reuben montoya]]></category>
		<category><![CDATA[rick bentz]]></category>
		<category><![CDATA[thriller]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1457</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/never-die-alone/">Never Die Alone</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="41" height="75" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/book-1457-cover.jpg?fit=41%2C75&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/book-1457-cover.jpg?w=275&amp;ssl=1 275w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/book-1457-cover.jpg?resize=165%2C300&amp;ssl=1 165w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/book-1457-cover.jpg?resize=220%2C400&amp;ssl=1 220w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/book-1457-cover.jpg?resize=176%2C320&amp;ssl=1 176w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/book-1457-cover.jpg?resize=41%2C75&amp;ssl=1 41w" sizes="auto, (max-width: 41px) 100vw, 41px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/B00P53BXPI/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/B00P53BXPI/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/B00P53BXPI/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/never-die-alone/">Never Die Alone</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/never-die-alone/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1457</post-id>	</item>
		<item>
		<title>Vinyl Cafe Turns the Page</title>
		<link>https://johnbeales.com/books/vinyl-cafe-turns-the-page/</link>
					<comments>https://johnbeales.com/books/vinyl-cafe-turns-the-page/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Mon, 25 Jan 2016 16:26:59 +0000</pubDate>
				<category><![CDATA[canada]]></category>
		<category><![CDATA[short stories]]></category>
		<category><![CDATA[vinyl cafe]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1454</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/vinyl-cafe-turns-the-page/">Vinyl Cafe Turns the Page</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="49" height="75" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/book-1454-cover.jpg?fit=49%2C75&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/book-1454-cover.jpg?w=325&amp;ssl=1 325w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/book-1454-cover.jpg?resize=195%2C300&amp;ssl=1 195w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/book-1454-cover.jpg?resize=260%2C400&amp;ssl=1 260w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/book-1454-cover.jpg?resize=208%2C320&amp;ssl=1 208w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/book-1454-cover.jpg?resize=49%2C75&amp;ssl=1 49w" sizes="auto, (max-width: 49px) 100vw, 49px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/0670069434/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/0670069434/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/0670069434/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/vinyl-cafe-turns-the-page/">Vinyl Cafe Turns the Page</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/vinyl-cafe-turns-the-page/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1454</post-id>	</item>
		<item>
		<title>A PHP Version Switcher for the AMP stack on OS X</title>
		<link>https://johnbeales.com/2016/php-version-switcher-for-apache-osx/</link>
					<comments>https://johnbeales.com/2016/php-version-switcher-for-apache-osx/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sat, 23 Jan 2016 22:38:28 +0000</pubDate>
				<category><![CDATA[How To]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[php 7]]></category>
		<category><![CDATA[setup]]></category>
		<category><![CDATA[shell scripting]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?p=1342</guid>

					<description><![CDATA[<p>A friend is thinking about buying MAMP Pro so he can test on different versions of PHP. Since I just set up version-switching myself, for free, here&#8217;s how I did it. Hopefully it&#8217;ll save someone a bit of money or frustration. This is happening on a Mac, with the latest version of OS X, (Currently 10.11.3 [&#8230;]</p>
<p>The post <a href="https://johnbeales.com/2016/php-version-switcher-for-apache-osx/">A PHP Version Switcher for the AMP stack on OS X</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>A friend is thinking about buying MAMP Pro so he can test on different versions of PHP. Since I just set up version-switching myself, for free, here&#8217;s how I did it. Hopefully it&#8217;ll save someone a bit of money or frustration.</p>
<p>This is happening on a Mac, with the latest version of OS X, (Currently 10.11.3 <em>El Capitan</em>), using the pre-installed version of Apache, and <a href="http://brew.sh">Homebrew</a> as a package manager.</p>
<h3>Step 1: Install more than one version of PHP on your system</h3>
<p>Using Homebrew you can install a version of PHP, then &#8220;unlink&#8221; it so it&#8217;s not currently being used:</p>
<pre><code class="language-bash">brew install php7
brew unlink php7</code></pre>
<p>If you want to be able to switch PHP versions on the command-line there&#8217;s a tool called <a href="https://github.com/wilmoore/php-version">PHP Version</a> that does the heavy lifting for you, and with Homebrew it&#8217;s <a href="https://github.com/wilmoore/php-version#install">easy to install</a>.</p>
<h3>Step 2: Make it easy to change the PHP version Apache is using</h3>
<p>First, stop the main Apache config, (<code>/etc/apache2/httpd.conf</code>), file from loading PHP. Find any line that mentions PHP modules and comment it out, (put a <code>#</code> at the beginning of the line). For example:</p>
<pre><code class="language-apacheconf">#LoadModule php5_module libexec/apache2/libphp5.so
#LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so</code></pre>
<p>Now we need an Apache config file for each PHP version that you want to run. I&#8217;ve put these files in <code>/etc/apache2/other/</code> and used the file extension &#8220;<code>.conffile</code>&#8221; to prevent Apache from auto-loading them:</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" class="alignnone size-full wp-image-1378" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/Screen-Shot-2016-01-23-at-5.02.52-PM.png?resize=960%2C430&#038;ssl=1" alt="A screenshot of /etc/apache2/conf/other" width="960" height="430" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/Screen-Shot-2016-01-23-at-5.02.52-PM.png?w=1224&amp;ssl=1 1224w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/Screen-Shot-2016-01-23-at-5.02.52-PM.png?resize=300%2C134&amp;ssl=1 300w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/Screen-Shot-2016-01-23-at-5.02.52-PM.png?resize=768%2C344&amp;ssl=1 768w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/Screen-Shot-2016-01-23-at-5.02.52-PM.png?resize=1024%2C458&amp;ssl=1 1024w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/Screen-Shot-2016-01-23-at-5.02.52-PM.png?resize=750%2C336&amp;ssl=1 750w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/Screen-Shot-2016-01-23-at-5.02.52-PM.png?resize=640%2C287&amp;ssl=1 640w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/Screen-Shot-2016-01-23-at-5.02.52-PM.png?resize=510%2C228&amp;ssl=1 510w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/Screen-Shot-2016-01-23-at-5.02.52-PM.png?resize=400%2C179&amp;ssl=1 400w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/Screen-Shot-2016-01-23-at-5.02.52-PM.png?resize=320%2C143&amp;ssl=1 320w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/Screen-Shot-2016-01-23-at-5.02.52-PM.png?resize=960%2C430&amp;ssl=1 960w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/Screen-Shot-2016-01-23-at-5.02.52-PM.png?resize=75%2C34&amp;ssl=1 75w" sizes="auto, (max-width: 960px) 100vw, 960px" /></p>
<p>Each of your <code>.conffile</code> files needs to have the location of the PHP library, and any extra PHP info. This is the contents of my <code>php-7.conffile</code>:</p>
<pre><code class="language-apacheconf">LoadModule php7_module /usr/local/opt/php70/libexec/apache2/libphp7.so
&lt;IfModule php7_module&gt;
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps
&lt;/IfModule&gt;
&lt;IfModule dir_module&gt;
    DirectoryIndex index.html index.php
&lt;/IfModule&gt;
</code></pre>
<p><code>php-5.conffile</code> is very similar, but has the path of the PHP 5 <code>.so</code> file and the <code>IfModule</code> conditional checks for <code>php5_module</code>.</p>
<p>If you have any existing <code>php*.conf</code> files in <code>/etc/apache2/other/</code> they can be blank.</p>
<p>Next we need to make an easy way to tell Apache to use one of the <code>.conffile</code>s, which I&#8217;ve  done by creating a symbolic link to the one I want to use. Since I don&#8217;t like typing out ln commands I&#8217;ve created a script, which I call <code>php-v.sh</code>.</p>
<pre><code class="language-bash">#!/bin/bash
if [ $1 = 7 ]; then
PHP_VERSION=7
else
PHP_VERSION=5
fi
`sudo ln -Fs /etc/apache2/other/php-$PHP_VERSION.conffile /etc/apache2/other/php.conf`
`sudo apachectl graceful`
echo "PHP version switched to $PHP_VERSION"
</code></pre>
<p>This script symlinks <code>/etc/apache2/other/php.conf</code> to the <code>.conffile</code> that I want to use, (using the <code>-F</code> switch to overwrite the old symlink), and restarts Apache. It needs sudo so it&#8217;ll ask for your password.</p>
<p>Finally, it&#8217;s nice to have <code>php-v.sh</code> available from everywhere, so I&#8217;ve created a symlink from <code>~/bin/php-v</code>, which is in my <code>PATH</code>, to the actual script:</p>
<pre><code class="language-bash">
ln -s /Users/John/Developer/Scripts/php-v.sh /Users/John/bin/php-v
</code></pre>
<p>And now I can switch PHP versions at will:<img data-recalc-dims="1" loading="lazy" decoding="async" class="alignnone size-full wp-image-1415" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/Screen-Shot-2016-01-23-at-5.20.09-PM.png?resize=960%2C433&#038;ssl=1" alt="A screenshot of my terminal, having just switched PHP versions quickly &amp; easily!" width="960" height="433" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/Screen-Shot-2016-01-23-at-5.20.09-PM.png?w=1140&amp;ssl=1 1140w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/Screen-Shot-2016-01-23-at-5.20.09-PM.png?resize=300%2C135&amp;ssl=1 300w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/Screen-Shot-2016-01-23-at-5.20.09-PM.png?resize=768%2C346&amp;ssl=1 768w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/Screen-Shot-2016-01-23-at-5.20.09-PM.png?resize=1024%2C462&amp;ssl=1 1024w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/Screen-Shot-2016-01-23-at-5.20.09-PM.png?resize=750%2C338&amp;ssl=1 750w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/Screen-Shot-2016-01-23-at-5.20.09-PM.png?resize=640%2C289&amp;ssl=1 640w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/Screen-Shot-2016-01-23-at-5.20.09-PM.png?resize=510%2C230&amp;ssl=1 510w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/Screen-Shot-2016-01-23-at-5.20.09-PM.png?resize=400%2C180&amp;ssl=1 400w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/Screen-Shot-2016-01-23-at-5.20.09-PM.png?resize=320%2C144&amp;ssl=1 320w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/Screen-Shot-2016-01-23-at-5.20.09-PM.png?resize=960%2C433&amp;ssl=1 960w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/Screen-Shot-2016-01-23-at-5.20.09-PM.png?resize=75%2C34&amp;ssl=1 75w" sizes="auto, (max-width: 960px) 100vw, 960px" /></p>
<p>The post <a href="https://johnbeales.com/2016/php-version-switcher-for-apache-osx/">A PHP Version Switcher for the AMP stack on OS X</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/2016/php-version-switcher-for-apache-osx/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1342</post-id>	</item>
		<item>
		<title>The Cardinal of the Kremlin</title>
		<link>https://johnbeales.com/books/the-cardinal-of-the-kremlin/</link>
					<comments>https://johnbeales.com/books/the-cardinal-of-the-kremlin/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sat, 09 Jan 2016 17:42:39 +0000</pubDate>
				<category><![CDATA[political thriller]]></category>
		<category><![CDATA[spy novel]]></category>
		<category><![CDATA[thriller]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1338</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/the-cardinal-of-the-kremlin/">The Cardinal of the Kremlin</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="43" height="75" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/book-1338-cover.jpg?fit=43%2C75&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/book-1338-cover.jpg?w=284&amp;ssl=1 284w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/book-1338-cover.jpg?resize=170%2C300&amp;ssl=1 170w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/book-1338-cover.jpg?resize=227%2C400&amp;ssl=1 227w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/book-1338-cover.jpg?resize=182%2C320&amp;ssl=1 182w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/book-1338-cover.jpg?resize=43%2C75&amp;ssl=1 43w" sizes="auto, (max-width: 43px) 100vw, 43px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/0425269396/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/0425269396/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/0425269396/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/the-cardinal-of-the-kremlin/">The Cardinal of the Kremlin</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/the-cardinal-of-the-kremlin/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1338</post-id>	</item>
		<item>
		<title>Bones of the Lost</title>
		<link>https://johnbeales.com/books/bones-of-the-lost/</link>
					<comments>https://johnbeales.com/books/bones-of-the-lost/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sat, 09 Jan 2016 17:40:56 +0000</pubDate>
				<category><![CDATA[mystery]]></category>
		<category><![CDATA[whodunnit]]></category>
		<guid isPermaLink="false">https://johnbeales.com/?post_type=dt_book&#038;p=1335</guid>

					<description><![CDATA[<p>Want to read it yourself? Get from Amazon: Amazon.com (USA) Amazon.ca (Canada) Amazon.co.uk (UK)</p>
<p>The post <a href="https://johnbeales.com/books/bones-of-the-lost/">Bones of the Lost</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="dt_bookbox">
<div class="dt_bookbox-image"><img loading="lazy" decoding="async" width="50" height="75" src="https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/book-1335-cover.jpg?fit=50%2C75&amp;ssl=1" class="attachment-dt_book_cover_thumb size-dt_book_cover_thumb" alt="" srcset="https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/book-1335-cover.jpg?w=330&amp;ssl=1 330w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/book-1335-cover.jpg?resize=198%2C300&amp;ssl=1 198w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/book-1335-cover.jpg?resize=264%2C400&amp;ssl=1 264w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/book-1335-cover.jpg?resize=211%2C320&amp;ssl=1 211w, https://i0.wp.com/johnbeales.com/wp-content/uploads/2016/01/book-1335-cover.jpg?resize=50%2C75&amp;ssl=1 50w" sizes="auto, (max-width: 50px) 100vw, 50px" /></div>
<h6>Want to read it yourself? Get from Amazon:</h6>
<p class="dt_booklinks"><a href="http://www.amazon.com/dp/B00A285AE6/?tag=johnbeales-20" rel="nofollow">Amazon.com (USA)</a> <a href="http://www.amazon.ca/dp/B00A285AE6/?tag=johbea03-20" rel="nofollow">Amazon.ca (Canada)</a> <a href="http://www.amazon.co.uk/dp/B00A285AE6/?tag=johbea-21" rel="nofollow">Amazon.co.uk (UK)</a></p>
</div>
<p>The post <a href="https://johnbeales.com/books/bones-of-the-lost/">Bones of the Lost</a> appeared first on <a href="https://johnbeales.com">John Beales</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://johnbeales.com/books/bones-of-the-lost/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1335</post-id>	</item>
	</channel>
</rss>
