I am Finley. James Finley, specifically— though the specificity of that is low too as “James” is the most common name amongst Finleys. James Finley, specifically. I am a Christian, a father of four, a software engineer, an amateur instrument builder and woodworker, and a bard.

Featured Articles

God's Hand

Sometimes it can be really hard to see God’s hand. Sometimes it is clear as day. The last couple months has been the later. I shared a song a few days ago from Needtobreathe called Temporary Tears. By God, this song means a ton to me. I wrote:

My last two years have been full of temporary tears and hidden hallelujahs. I have learned to soak in the blessings, to not be embittered by the valleys, to setup camp in the desert and the gardens, and worship there.

What I didn’t say was that as I wrote those words I was holding a newborn baby boy in a maternity ward after a rough pregnancy.

What I didn’t write months ago, while we had a falling out with our church of eight years, was that my wife had to be taken to the ER with major complications in the pregnancy of our fourth child. I didn’t write about the frantic prayers that God save this boy. Hours in an ER, just waiting for a doctor to do an ultrasound and see if our son was okay, delayed until the last minute because we were before the point of viability. Way too many parents know this feeling, the dread.

I didn’t write about God’s grace and provisions, His protection over my little Lion.

I didn’t write about God’s guiding hand on us landing at a beautiful, new church that instantly surrounded us in grace and love that we not only needed, but that we largely lacked for years at our previous church.

If you know, you know that in these last two years we have seen trials, one after another. I said somewhere the other day that I feel like Mario facing Donkey Kong: the barrels aren’t even phasing me anymore, my legs are so trained for jumping.

I didn’t write about losing my job a week before I was supposed to take paternity leave this month, either. Because within a week I already had a new job lined up.

I literally received a call from a recruiter while telling my wife that I was laid off. I had an interview on Monday and accepted an offer before the weekend. My wife and I both had peace like a river. We’d seen God’s hand so much that we knew this was just another adjustment in His plan. He had a better role for me.

So now it’s mid-February and I am enjoying some down time with my family, a family that has increased by one this week. And in a few weeks I’ll be starting the next chapter of my career. God’s got this. He is sovereign. I’d rather Him be on the throne than me.

The tears, they’re temporary. Find the hidden hallelujahs and get in close to the fire. Soak. Trust in the Creator of all and worship there.

Can I :has?

Firefox finally shipped :has in December, which means we can start shipping it in our code. Obviously depending on your users and you probably should consider backwards compatibility and such. But we are going to look at :has optimistically this morning.

So below is a navigation bar like what I use in Selah. You have a selected button and hover states. But the complex part is that the sharps (#) visually select their corresponding whole note button. In the past, this would be complex. You’d need to set a selected state in either a data attribute (e.g. data-selected) or a class as well as the aria-selected on both buttons. Not hard for JS, but more work.

And that brings us to :has. This is a pseudoclass that allows you to match elements on other elements. For instance, if I wanted to select an element with a focused input, I could do this:

.fieldset:has(input:focus) {
    border: 1px solid red;

We can look ahead, to pull a term from regular expressions. Onto our navigation bar, we want to show the selected state on a whole-note that is followed by a selected half-note.

.whole-note:has(+ .half-note[aria-selected="true"]) button {}

And we can also do this with :hover selectors, meaning we can say on hover of our half-note, we can show the hover state on the corresponding whole-note.

.whole-note:has(+ li.half-note button:hover) button {}

This is saying:

  1. Get the .whole-note.
  2. Check that it is followed by hovered half-note (:has(+ li.half-note button:hover)).
  3. And get the button for this match.

This changes everything. That’s only a slight exaggeration. Your code is more readable and more concise. You are shipping less code too.

Go, dabble and learn, y’all.

This morning I added the first half of 2023’s reading to the new Shelf page. All these books were solid.

The Return of the Dragon by Lewis Ungit

This was definitely an odd book. It covers the spiritual experiences of those that take psychedelic drugs and the history of the Church with cultures that practiced such things. Spoilers: they ended the practice everywhere they went. Haunted Cosmos just posted an episode about this book a couple weeks ago. Solid read for any Christian.

Irreversible Damage by Abigail Shrier

For any parent of daughters, this book shows the social contagion of transgenderism among young girls and the danger and damage that has come from this. Parents, you need to read this.

The God of the Garden and Adorning the Dark by Andrew Peterson

These are books that I will be going back to repeatedly. Andrew is just a comfy writer, with creativity and imagery abounding. Thoughts on creativity, writing, poetry, songwriting, and gardening.

The Rise and Triumph of the Modern Self and Strange New World by Carl R. Trueman

If you want to understand a lot of what is going on in philosophy today, these books are really good. Rise and Triumph is better, but a lot of words. If you want a shorter read that still communicates the point, Strange New World is a quick read.

More coming

I am going to finish another book today and maybe get back to some fiction reading. Got the next two Ransom trilogy books lined up as well as others. I think I will be beating last year’s ten books this year.

More Featured Articles »


More Ramblin’ »