Our nation is running towards revival or civil war.

The hatred is crackling, the energy is raising, and everything is on edge. Either lightning strikes, the fire ignites, and people start killing each other or God drops us to our knees and a massive revival resets us. Very little can calm down the animosity that we are seeing.

Very little can reunite us.

I pray that God plans the prior.

I found out less than a week before heading to DelFest that I would be traveling for a project kickoff in Denver. So while prepping to leave for Maryland, we were also prepping for me to leave for Denver. And just like our trip to Maryland, my trip to Denver was quiet outside a small group. Because of this, I stopped posting here the last week too. I have another few DelFest posts coming— lots of photos and music— and a ton of photos from Denver.

Be back shortly with that.

Yesterday I posted the first gallery from DelFest. This is a new type of post, allowing me to specify a list of photos in the frontmatter of my posts and the Article component builds a gallery. Easy. But I skimped on optimizations yesterday and that meant that the megabytes worth of images were loaded 100% and then scaled/cropped with CSS. So the homepage ballooned to ~39mb. Yikes.

So I installed @astrojs/image this morning and used the Image component to make thumbnails on the fly. First, wow that was easy. Second, the homepage is now under 6mb and that post is around 500kb vs 35mb. More photos are incoming.

Write. Delete. Write. Delete. That writer’s block is back and is banging me over the head. Hey, ol’ friend, go away. I wrote for a few hours on Friday, ready to publish. Woke and edited. Then… it wasn’t… ready? Some permutation of it, at some point, but not it.

Learn from the past. Write through it. Get off social media, grab a book, turn up the music and get back to writing.

I added the ability to have descriptions for tags. Over time, I will be adding descriptions to my more used tags, like #music. For me, not sure about anyone reading, the tags are the main way to find musings and writings on this site. Within the next couple weeks I will likely cross 500 posts, so the Archive is really only helpful when you know exactly what you are looking for or when it was posted. Because the tags on are hierarchical, drilling down through tags pages to find something is much better. Starting at #music, clicking into #genres, and then landing in #worship will give you lots of good recommendations to listen to. Hopefully fleshing out some additional context around these tags helps that experience.

The Bible is without error. Do not hide, slink away, say only the safe things. That is what they want. That is what the culture wants. They want their ideologies to have supreme visibility and anyone that disagrees with it to capitulate and celebrate it. In the words of Democratic Rep. Jared Moskowitz, we are focusing on “[banning] books touching on gender issues” but “dead kids can’t read.”

Celebrate it and don’t get in between us and your kids or your kids will keep dying.

We see you, we hear you.

But, Christian, dare to respond with biblical truth as the Word of God is perfect, authoritative, and without error. Boldly share and don’t let their threats of death scare you.

The latest updates to the site include:

  • Logo mark
  • Popular tags for each month in the Archive
  • Dark mode
  • Expand button in lists for longer posts
  • Buy Me a Coffee buttons

Small changes here and there on the worry stone. This site feels better than any previous version.

“Do we have time for a y-o-r-t-s?” my wife asks to avoid the kids understanding us.
“Yorts?” I respond.
“Stroy,” I respond.
“I suck at this.”

And this brings us to “stroy,” which is the opposite of “destroy,” right? So if destroy means to break, stroy has to mean to build. Etymology time!

Middle English, from Anglo-French destroy-, destrui-, stem of destrure, from Vulgar Latin *destrugere, alteration of Latin destruere, from de- + struere to build


So there you go. Go forth and stroy!

Nothing too big, but I tweaked the “Other Posts You May Enjoy” section to sort by number of matches, not just date. Before it found all posts with one or more of the current post’s tags, but didn’t change the default order of reverse chronological. Now it sorts by number of similar tags, then date. So a post with 3 matches from last year will rank higher than a post with 2 from last week. Nothing ground breaking, but hopefully will help surface more relevant posts.

export async function getSimilarPosts (post: CollectionEntry<'posts'>): Promise<CollectionEntry<'posts'>[]> {
	const excludedTags = ['notes', 'links', 'featured', 'videos', 'quotes']
	const similarTags = => !excludedTags.includes(tag))

	return (
		(await getPosts(filteredPost => (
			filteredPost.slug !== post.slug && => similarTags.includes(tag)).length > 0
		))).map(post => ({,
			similarTagCount: => similarTags.includes(tag)).length
		})).sort((a, b) => {
			if (a.similarTagCount > b.similarTagCount) return -1
			if (b.similarTagCount > a.similarTagCount) return 1

			if ( > return -1
			if ( < return 1

			return 0

Amazing to see the React crowd come around to realize that SSRs and Island Architecture leads to faster applications and better UX. Y’all just reinvented PHP with a bit of jQuery sprinkled in.

That’s fine, but while you are recognizing this, please stop using terms like monolith and calling React “modern” while also calling PHP + progressive enhancement not.