52 Verses, 52 Books, 52 Weeks (Week 41: 1 Chronicles)
This week, I turn one book back from last week to 1 Chronicles to think about our failures, the call to repentance and the promise of God’s forgiveness.
Optimizing Little Hills, FaithTree and Open for Business
I’ve been deploying a lot of server optimization tricks to improve the performance of Little Hills, FaithTree and Open for Business these past months. They had all grown slow with the kludge of adding additional features and my once snappy homegrown content management system (also used here), SAFARI, was no longer snappy. That all threatened user frustration and, for that matter, lower rankings on Google, which pays attention to the performance of sites it refers people to.
I’ll blog about some of the other optimizations a different day, but one I’m rather pleased with is support for WebP. I’ll admit to ignoring it in no small part because Apple didn’t support it. I use primarily Apple Safari to browse the web, including pages served by my SAFARI (which I called that before Apple’s Safari was launched, so I’m being stubborn and keeping the name). However, WebP arrived on Safari with iOS 14 and MacOS Big Sur, so I revisited the format and found it could offer substantial savings in download size on many images. With support in every modern browser, I figured I’d implement support in SAFARI.
By support, I mean my goal was to be able to upload an image to the site and the software takes care of turning it into a WebP. SAFARI now does that, taking images of known types and running several layers of optimization. First, it tries to make a more efficient JPEG using ImageMagick’s PerlMagick module; once that is complete, it attempts to make a WebP version. It only keeps the optimized JPEG version if it is at least 20% smaller than the original. Likewise, it only keeps the WebP if it is that much smaller than the optimized JPEG. Since not everything older supports WebP, there’s no reason to mess with it, if a JPEG will do.
This is similar to what I later read described here. I want to implement more of Bernat’s optimizations in the future.
That’s great, I thought, but then I realized the next issue (which is described with a solution in Bernat’s piece, but I hadn’t found it yet at the time): if not every browser supports WebP, I have to be prepared to serve the JPEG still. The HTML5 <picture>
element supports giving different image options and letting the browser installed, but my goal was not to require me (or anyone else someday posting to Little Hills’ site) to manually think through the process of describing alternatives. It also does nothing to take advantage of the automatically generated alternatives I previously created when it comes to existing pages.
The solution was complicated by another optimization I made. My long worn solution would be to come up with a series of mod_rewrite
rules for my Apache server to analyze if the browser could handle WebP and then replaced the JPEG with a WebP if possible. However, I recently implemented an NGINX caching server to get its advantages over Apache, so I needed to figure out the NGINX way to do it. That turned out to be a bit confusing to me at first, but simple in practice.
Here’s the final bit of NGINX configuration magic used to reroute requests to WebP (or the optimized JPEG), as best suited. It finds any folder location under an images
directory and then looks for an .optimized
subdirectory. If it finds one, It looks for the WebP version if applicable and the optimized JPEG if the WebP version is unavailable or the browser does not support it.
location ~ ^(?<extra>.*?)(?<prefix>/images/(?:.*/)?)(?<rxfilename>.*)$ {
expires 365d;
add_header Pragma "public";
add_header Cache-Control "public, no-transform";
add_header Vary Accept;
try_files $extra$prefix.optimized/$rxfilename.$webp_suffix $extra$prefix.optimized/$rxfilename.jpg $uri =404;
}
This has been working great for a couple of months now — I started writing this post back on July 7 and then got sidetracked — so if you’re looking to optimize your NGINX configuration, I definitely commend it to you.
Continuing on the Journey of the Business of Life
It's Our Twentieth Anniversary of Exploring Ideas, Culture and Technology
Times certainly do change, whether time feels like it is going quickly or slowly. Twenty years ago today, Open for Business went live. It feels like yesterday and a lifetime ago. It’s been an interesting and wonderful journey.
OFB at 20 years old. I can’t get my head quite around it. Read on for some reminiscence about the magazine and its various longtime contributors.
The Family Photo Album (October 4, 2021)
As the Temple built to worship God was dedicated, King Solomon stopped and prayed to the Lord. In the king’s prayer, we are pointed to truths about God is, what He does for us and how we can come before Him today.
52 Verses, 52 Books, 52 Weeks (Week 40: 2 Chronicles)
This week, I turn to 2 Chronicles to think about what we learn from Kings David and Solomon on where we should put our confidence.
Epomaker GK68XS
Minimalism, Sturdiness Make for an Intriguing Keyboard
I’m doing a series of keyboard reviews for OFB. Here’s the second one, on the Epomaker GK68XS, which I like quite a bit:
Like Keychron, Epomaker has emerged in no small part due to its successive and successful crowdfunding of boards that eschew the gaudy B-movie sci-fi appearance of many gamer keyboards. Both companies also make a lot of different models, several of which have gotten a lot of attention for gee-whiz new features during those hugely successful crowdfunding campaigns.
Situated somewhere in the middle of Epomaker’s lineup is the unassuming GK68XS, which lacks all that hoopla, but like the K2 ticks off the sorts of boxes a person looking for a keyboard of similar layout to one’s laptop might want.
It isn’t a perfect keyboard, but if you’re looking for the same sort of keyboard I have been, it’s worth your consideration.
If Only I Had (Blank) (September 27, 2021)
Can we experience God’s peace even in the midst of discouragement? David contemplates this in the last part of Psalm 4, as I wrap up the series “Peace.”
52 Verses, 52 Books, 52 Weeks (Week 39: Micah)
Melanie turns us to Micah this week to think about how God has a plan for our salvation throughout all time. There’s even a hint of Christmas in what she shares!
Keychron K2
So Close, I Wish It Were Perfect
I’ve been on the quest for the perfect keyboard for a while and I kick off a review series exploring different options with the very nice Keychron K2:
What I want is relatively simple, if hard to find: a mechanical keyboard that is oriented towards writing, not gaming. My match would be reasonably compact and friendly towards Macs, too. Keychron, as much as anyone, has arisen as one of the few companies interested in ticking those boxes.
What do I like about it?
The K2’s size is just about perfect for anyone who finds the size of an average laptop keyboard — including MacBooks — agreeable. It dumps the numpad to free up more of my desk, but doesn’t overdo the downsizing like so-called 60% boards do. They often drop keys I depend on for writing and editing, such as the arrow keys.
Many smaller options also end up with at least a few keys in non-traditional locations, slowing my touch typing. The K2 is perfect on this count, making it easy to go from my MacBook Pro’s keyboard to it and back again without having to recondition where my fingers go to do things. Mac friendly multimedia keys are also where you’d expect, which is nice and not necessarily a given on mechanical boards. I am not sure how I lived without volume and mute keys on my keyboard for so many years, but those years are a distant memory.
Calling Balls and Strikes (September 20, 2021)
We’re called to feel peace and yet anger can boil up so easily in the midst of the turmoils of life. What do we do with that as we seek to follow Jesus?