Recent Blog Posts

Install kubectl in your Docker image, the easy way

Most of the time, when I install software on my Docker images, I add a rather hairy RUN command which does something like:

  1. Install some dependencies for key management.
  2. Add a GPG key for a new software repository.
  3. Install software from that new software repository.
  4. Clean up apt/yum/dnf caches to save a little space.

This is all well and good; and this is the most recommended way to install kubectl in most situations, but it's not without it's drawbacks:

Review: Night soccer with the Nikon 300mm f/2.8 VR II

There are a few events every year which I'm privileged to be asked to photograph, and one of them is the annual Souls and Goals soccer cup, a soccer match between priests and seminarians in the Archdiocese of St. Louis.

This soccer match is held on a (usually very cold) night in November, at a stadium with less-than-stellar lighting. For last year's game, I rented a Nikon D500 (D500 review here, and used it with my Nikon 70-200mm f/2.8 VR lens (roughly 300mm equivalent on the D500 body). It was very nice, and the focus system on the D500 (borrowed from the penultimate sports DSLR, the D5) is second-to-none.

But I wasn't thrilled with the low-light performance on the D500. And I wanted to try something new this year. So I rented monster lens—the Nikon 300mm f/2.8 VR II:

Drupal startup time and opcache - faster scaling for PHP in containerized environments

Lately I've been spending a lot of time working with Drupal in Kubernetes and other containerized environments; one problem that's bothered me lately is the fact that when autoscaling Drupal, it always takes at least a few seconds to get a new Drupal instance running. Not installing Drupal, configuring the database, building caches; none of that. I'm just talking about having a Drupal site that's already operational, and scaling by adding an additional Drupal instance or container.

One of the principles of the 12 Factor App is:

IX. Disposability

Maximize robustness with fast startup and graceful shutdown.

Disposability is important because it enables things like easy, fast code deployments, easy, fast autoscaling, and high availability. It also forces you to make your code stateless and efficient, so it starts up fast even with a cold cache. Read more about the disposability factor on the 12factor site.

Using BLT with Config Split outside Acquia Cloud or Pantheon Hosting

I am currently building a Drupal 8 application which is running outside Acquia Cloud, and I noticed there are a few 'magic' settings I'm used to working on Acquia Cloud which don't work if you aren't inside an Acquia or Pantheon environment; most notably, the automatic Configuration Split settings choice (for environments like local, dev, and prod) don't work if you're in a custom hosting environment.

You have to basically reset the settings BLT provides, and tell Drupal which config split should be active based on your own logic. In my case, I have a site which only has a local, ci, and prod environment. To override the settings defined in BLT's included config.settings.php file, I created a config.settings.php file in my site in the path docroot/sites/settings/config.settings.php, and I put in the following contents:

Fall Leaves in St. Louis (2018)

This is one of those weekends where it's hard to put down my camera—there are so many beautiful trees in the neighborhood, and today's probably the last great day for leaves on the trees, as we're having 40+ mph wind gusts all day, knocking off all the weaker leaves!

Fall leaves in the Geerling backyard - 2018

Nikon D750, 85mm 1.8G @ f/2.8, ISO 100, 1/640

I posted a set of more fall pictures from around my neighborhood on Flickr.

Interestingly, an Apple tree we planted earlier this year decided it was time to start flowering... in the fall? Ah well. Hopefully I'll get some apples in a year or two!

Jeff Geerling.com now supports Dark Mode in macOS 10.14

Over the years my site has evolved quite a bit; I started this site (well, one form of it at least) around 2004, when table based web design was still a thing. I've evolved the design from table-based to CSS, to semantic CSS, to CSS + RDF, then to mobile-first... and now that macOS 10.14 Mojave is here, with a snazzy (and way easier on my eyes) dark mode, I have made the design work well in both normal (light) and dark mode on macOS.

It's using a new feature in the Webkit nightly builds (er, now called Safari Technology Preview), a media query named (at least, for now) prefers-color-scheme.

And here's how the site looks when you're using Safari Technology Preview 68+ in macOS Mojave with Dark Mode:

Jeff Geerling.com in dark mode on macOS Mojave

Pages

Subscribe to Jeff Geerling's Blog