Blair's Book Blog

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

The Bitter Twins: The Winnowing Flame #2

Author: Jen Williams

Rating: 3-star

Publisher: Headline / Hachette UK

Find a copy at a local library

Williams’ second book in the Winnowing Flame trilogy starts to bog down a little. She splits the protagonists for the majority of the book, something I understand as she’s trying to demonstrate the various actors in play, but that I also feel weakens the story in this case.

Coupled with psychological drama and introspection, the action moves from moving about a large and dangerous world, to navigating several set pieces that focus on how each group of characters is dealing with change or how new discoveries shake their fundamental beliefs.

All that said, I enjoyed the book, even with the slower pace. And it leaves room for book 3 to maneuver the protagonists into action against larger groups that Williams has built through the first two books.

I’m looking forward to seeing how Williams ties everything together.

read more

No Ivy League

Author: Hazel Newlevant

Rating: 3-star

Publisher: Lion Forge Comics / Oni Press

Find a copy at a local library

Newlevant recounts a summer clearing ivy from Portland’s Forest Park. She is homeschooled, which she later learns because her mom didn’t want her in contact with Black people. Grappling with the discovery, she further learns about racism in Oregon’s schools. While working her job, she witnesses racism at work and experiences sexism in her job.

The story is awkward at times, as Newlevant captures teen-aged desires fairly well. I’m left feeling that Newlevant begins to have her eyes opened to a darker past in Oregon’s history, but I’m not sure if she effectively grapples with it. As a memoir, I understand that coming to terms may not be the point; perhaps just starting to realize the darker world is itself the message?

It’s an interesting book. I enjoyed it as en example of using comics for memoir.

read more

My Boyfriend is a Bear

Author: Pamela Ribon

Artist: Cat Farris

Rating: 4-star

Publisher: Oni Press

Find a copy at a local library

Nora had a string of bad boyfriends, until she meets Bear. Bear seems to meet all over her emotional needs, but has issues that are unique to him being a bear.

An interesting critique on relationships.

read more