Blair's Book Blog

Bookshop Cinderella

Author: Laura Lee Guhrke

Rating: 3-star

Publisher: Forever / Hachette

Find a copy at a local library

Evie Harlow runs a bookstore, is nearing spinsterhood, and pines after a man that has no real interest in her. The Duke of Westborne, on the other hand, gets caught up in fervor betting that he can position her in a way to have a full dance card during the season, and thereby have folks recognize her for her beauty.

It plays to the rags-to-riches by duke trope fairly well. Seems like it lost a few details, but overall an enjoyable book.

read more

Mythos

Author: Stephen Fry

Narator: Stephen Fry

Rating: 4-star

Publisher: Chronicle / Hachette

Find a copy at a local library

Stephen Fry shares his version of Greek myths, reworking a few to create a sensible timeline&mash;which he acknowledges. And I’m glad that he did acknowledge his changes, because I wouldn’t know any better!

I felt that it’s a solid introduction to Greek myths for folks who missed out, or want a refresher with a touch of Stephen Fry in the mix. A fun book to listen to.

read more

The Poison Song: The Winnowing Flame #3

Author: Jen Williams

Rating: 2-star

Publisher: Headline / Hachette UK

Find a copy at a local library

The first half to two-thirds of the book felt like a slog to me, because Williams chose to split her main characters again. I think I can deal with splitting the main characters as a plot device when it’s used sparingly. However, when used in every book in a trilogy, I find it exhausting. The characters don’t have much of a chance to develop together, and therefore few chances to repair relationships or grow to work together meaningfully.

To make it somewhat more dreadful, Tor spends most of the book believing that Noon is dead. And then tries repeatedly to die (he fails at it).

Noon, on the other hand, is whisked away by a powerful-seeming entity, setting up a reason for us to learn what happened to Noon’s tribe and the full extent of her power. I felt that the encounter raised more questions than it answered. It felt over-contrived.

The ending felt flat for me. The resolution was not satisfactory. And after reading it, I was convinced that book 2 served no real purpose to the story.

Underwhelming and disappointing. I do not recommend this series.

read more

The Body Keeps the Score

Author: Bessel van der Kolk, MD

Rating: 1-star

Publisher: Penguin Books / Penguin Random House

Find a copy at a local library

I’ll make this short. Van der Kolk shares some of his theories on trauma, however he shares traumas of his clients that can triggering without any warning. I was recommended this book by a therapist, and I don’t think laypeople are the right audience.

I don’t recommend this book. The trauma stories were too much.

read more

Chivalry

Author: Neil Gaiman

Artist: Colleen Doran

Rating: 4-star

Publisher: Dark Horse Books

Find a copy at a local library

Chivalry depicts Mrs. Whitaker, a widower that unknowingly finds the Holy Grail in a charity shop. After cleaning, polishing, and displaying it, she sets it on the her mantle to enjoy.

Sir Galad arrives shortly after, seeking the Grail. When he sees it, he’s overcome because his quest is over. But only if he can convince Mrs. Whitaker to trade for it.

Part comic, illuminated manuscript, the story highlights how an artist can play with the comic format.

A fun read.

read more

Book Reviewing: A guide to writing book reviews for newspapers, magazines, radio, and television

Editor: Sylvia E. Kamerman
Rating: 4-star
Publisher: The Writer, Inc
Published: 1978
Pages: 216
Find a copy at a local library

Are you interested in writing book reviews? Do you want to turn that into a paying job? You could do worse than reading this book for advice. 21 essays, edited by Kamerman, provide guidance for breaking into and writing reviews for print, radio, and television. While you won’t find advice for posting reviews online, much of the advice still applies. Be brief. Be consistent. Be bold. Be honest.

I’m struck that several of the essays touched on reading books. As in, you must actually read the book, sometimes twice, to provide a honest review. I thought this seemed evident, however a recent article in Writers Digesti suggested that reading the first 30 and last 40 pages of a book is sufficient in a pinch. And I seriously hope folks don’t take that to heart.

In any case, if you’re serious about improving as a writer covering books, I recommend that you find a copy of Book Reviewing. I think it is well worth your time.

read more

The Secret Service of Tea and Treason

Author: India Holton

Rating: 4-star

Publisher: Berkley Romance Penguin Random House

Find a copy at a local library

India Holton’s third entry in her Dangerous Damsels series continues to deliver silly house-escapades led by lady pirates and witches, but this installment focuses on the spies that watch the pirates and witches.

Alice Dearlove and Daniel Bixby are rival agents for A.U.N.T., a secret organization that’s infiltrated the likes of the Wisteria Society of Lady Scoundrels and The League of Gentlewomen Witches. An unusual assignment forces the pair to work together as a married couple to recover a potentially powerful weapon at an upcoming gathering for the Wisteria Society. An assignment that both rivals would rather do alone.

However, persist as a pair they do, for love and for country. Alice and Daniel seem clueless that their cover is blown nearly the moment they enter, in large part because the Wisteria Society humors them at nearly every step of the way. Devious or not, the pirate society provides plenty of room for love to blossom between Alice and Daniel.

The book is chock full of literary nudges and winks to the reader, and all sorts of double entendres filling in alongside the action.

The book works well as a comedic romance, and I felt that the literary references were a love letter to books on Holton’s part. The innuendo was kind-hearted to the heroes, often portraying them as delightfully clueless or innocent, depending on how you wish to approach matters.

I recommend it.

read more

Crying in H Mart

Author: Michelle Zauner

Rating: 4-star

Publisher: Vintage / Penguin Random House

Find a copy at a local library

Zauner’s memoir reflects on her childhood and her relationship with her mother through the lens of caring for her mother as she dies. Zauner looks back at how her mother connected through food and Zauner’s desire to fit in as a multiracial person in the United States.

She has a complicated relationship with her mother. Expectations for school, beauty, and connection to her Korean heritage constantly seem at battle with expectations for growing up as an American. Zauner unpacks a lot in this book.

I think Zauner handles it all deftly and with care, demonstrating her complicated relationship with her mother and how much that relationship matters to her.

It’s a well-written book, even as I didn’t particularly enjoy it. Death is a hard topic to navigate. I can’t fault Zauner for that, and she did it splendidly. That said, this remains a book that I respect.

read more

I goofed / use git to build and upload a Jekyll site

While moving my blog to NearlyFreeSpeech.net, I figured it would be handy if I could automate building and uploading. Euan Torano has a promising looking guide for Deploying Hugo on NearlyFreeSpeech.NET with Git, and Jesse Squires has Building a site with Jekyll on NearlyFreeSpeech.

While following these guides, I ran into issues with the site.git directory containing the actual git content under site.git/site; I’m not by any means a git expert (I’m learning as I go along with this site, picking it up in the last couple of months), so I have no idea why my setup is off.

The next thing I wanted to solve was avoiding placing the actual remote git repo on NearlyFreeSpeech.net, instead using my diminutive print server at home, so that I could avoid duplicating the content on the server.

Finally, I wanted my Git hooks to build and then upload the blog content my web directory on NearlyFreeSpeech.net. While doing that I discovered that missing a / uploaded my content into a subdirectory on the server.

So, here’s a slight remix of what I got working. In the following, my workstation is running Debian 11, my print server is running Ubuntu 22.04, and my web host is running FreeBSD 12.4-RELEASE.

Before you begin

Ensure that install Ruby and other prerequisites for Jekyll.

If you haven’t, place existing Jekyll content under Git version control.

Create a bare Git repository

Create a bare Git repository. Later you’ll use this as your remote to push blog changes from your workstation.

Run the following commands to create a bare Git repository. I ran the commands on my print server, the other tutorials suggest doing this on the NearlyFreeSpeech server.

# If you're using this on NearlyFreeSpeech.net, uncomment the following line
# cd $HOME
# If you're using this on NearlyFreeSpeech.net, comment the following line
cd $HOME/private
mkdir site.git
cd site.git
git init --bare

Create a checkout directory

This contains a checkout of the repository that Jekyll works on. What I gather happens is that a Git hook that you’ll create uses this directory to checkout the Jekyll content on the remote and then use that copy to build your site.

Run the following commands to create a checkout directory. Again, I ran the commands on my print server.

# If you're using this on NearlyFreeSpeech.net, uncomment the following line
# cd $HOME
# If you're using this on NearlyFreeSpeech.net, comment the following line
cd $HOME/private
mkdir site_checkout
cd site_checkout
# If you're using this on NearlyFreeSpeech.net, uncomment the following line
#git clone $HOME/site.git
# If you're using this on NearlyFreeSpeech.net, comment the following line
git clone /home/private/site.git/

Create a post-receive Git hook

The following script runs each time you run git push to the remote repo. In the site.git directory (the bare git repo), there is a hooks/ directory with sample scripts that you can look at for ideas of other things you can do with hooks.

In this case, create a new file in /home/private/site.git/hooks/post-recieve and add the following content:

#!/bin/bash

set -ex

# I set $HOME explicitly on my print server
export GEM_HOME=$HOME/.gems
export PATH="$HOME/.gems/bin:$PATH"

# If you're using this on NearlyFreeSpeech.net, uncomment the following line
# SITE_CHECKOUT=$HOME/site_checkout/site
# If you're using this on NearlyFreeSpeech.net, comment the following line
SITE_CHECKOUT=$HOME/private/site_checkout/site
GIT_DIR=$SITE_CHECKOUT/.git
BUILD_WWW=$HOME/www
# The following is the WWW directory on your actual web server
PUBLIC_WWW=/home/public/

cd $SITE_CHECKOUT

git --git-dir=$GIT_DIR status
git --git-dir=$GIT_DIR pull -f
git --git-dir=$GIT_DIR status

# Uncomment the following line to update your Ruby gems every time that you run
# git push
#bundle install
bundle exec jekyll build --destination $BUILD_WWW

# The following fix any permissions on directories and files before upload
find $BUILD_WWW -type d -exec chmod 755 {} \;
find $BUILD_WWW -type f -exec chmod 644 {} \;

# For the following rsync commands, change the following:
# username: your username
# web_server_ssh_address: the ssh address to connect to your web server

# Use the following rsync command to test that rsync uploads the files that
# you expect and to the locations that you expect:
rsync -v -rz --checksum --delete --dry-run $BUILD_WWW/ username@web_server_ssh_address:$PUBLIC_WWW
# After verifying that the test command works as expected, comment it out and
# uncomment the following line:
#rsync -v -rz --checksum --delete $BUILD_WWW/ username@web_server_ssh_address:$PUBLIC_WWW

exit

Run the following command to set the execute bit on the script:

chmod ug+x /home/private/site.git/hooks/post-receive

Create a remote repo on your workstation

Run the following command:

git remote add local_remote trunk ssh://username@local_server/home/private/site.git

Change the following:

Edit, commit, build and upload

Create a blog entry with your desired editor. Then, run the following commands to commit your changes:

git add file_name
git commit

Replace file_name with file name(s) that you edited. When you run git commit, an editor is displayed; enter a commit message and save.

Then, push your changes to your remote:

git push local_remote

Pushing your content causes the post-receive script to run, which builds the site and uploads necessary changes to the web server (saving you space and network transit fees).

read more

Moving, moving, moving

I started this blog in 2022 to play with cloud infrastructure while recording short book reviews. I started on Google Cloud with Wordpress. I migrated from Wordpress to Jekyll so that I could write my entries with Neovim in Markdown. Migrating from Wordpress also meant that I could build and test my blog locally, and reduce my reliance on a database and PHP.

I saw folks at work recommend Linode for cheap VMs, so gave that a go. I spent less than $8 a month hosting my site on the smallest VM that Linode offers. Their getting started documentation is pretty good, but once you start branching out from that I noticed some edges were frayed. Not bad. Google Cloud tends to focus on enterprise developers, and Linode (at the time I started using it) tended to focus on smaller non-enterprise developers. I’m not sure that’ll remain the case, as Akamai purchased Linode and is slowly retiring the Linode name. I won’t be surprised if targeting Enterprise customers is next.

Google and Squarespace announced last week that Google is selling Google Domains to Squarespace. I already have ill-feelings with Reddit’s handling of things as of late, and I don’t want to wait around and find out what happens with Squarespace. So I moved domain registrars this weekend to namecheap, closed my Google Workspace account (for reasons), and moved to Zoho Mail. And because I’m up for a challenge, I took the advice for cheap hosts by moving my blog to NearlyFreeSpeech.net.

I’m less than thrilled with Zoho’s belief that they need to spam my inbox with their advertisement crap. Namecheap seems alright. NearlyFreeSpeech.net is dead honest about their spartan support; on the other hand, I don’t mind that I’m not paying for a full VM that I’m mostly not using.

Time will tell how I feel for all of these for sure.

read more