Recent Blog Posts

Replacing the foam speaker surround on my JBL speakers

About ten years ago, I bought a pair of used JBL J520m bookshelf speakers. They have nice, wood cabinets, a great-sounding woofer and tweeter, and a classic look (they don't really look dated, like 90% of 80s and 90s-era speakers).

JBL J520m speaker wall mounted with grill cover next to TV
Doesn't it look stately?

Whenever you buy used speakers, you should check the woofer cone and foam surround, as these are usually the first parts to deteriorate and cause terrible distortion in certain situations. In my case, the speakers had been stored in someone's garage for a few years, so I knew the foam wouldn't last long. When purchased, the foam flexed okay, but this year I noticed both speakers started making funny noises during explosions or low bass notes during movie and music playback.

Using Ansible through Windows 10's Subsystem for Linux

Ever since I heard about the new 'Beta' Windows Subsystem for Linux, which basically installs an Ubuntu LTS release inside of Windows 10 (currently 14.04), I've been meaning to give it a spin, and see if it can be a worthy replacement for Cygwin, Git shell, Cmder, etc. And what I was most interested in was whether I could finally point people to a more stable and friendly way of using Ansible on a Windows workstation.

In the past, there was the option of running Ansible inside Cygwin (and this is still the best way to try getting Ansible working in an older Windows environment), but this always felt kludgy to me, and I hated having to recommend either that or forcing Windows users to do a full Linux VM installation just to run Ansible commands. I finally updated my PC laptop to the latest Windows 10 Anniversary Update, and installed the Windows Subsystem for Linux, and lo and behold, Ansible works!

How I test Ansible configuration on 7 different OSes with Docker

The following post is an excerpt from chapter 11 in my book Ansible for DevOps. The example used is an Ansible role that installs Java—since the role is supposed to work across CentOS 6 and 7, Fedora 24, Ubuntu 12.04, 14.04, and 16.04, and Debian 8, I use Docker to run an end-to-end functional test on each of those Linux distributions. See an example test run in Travis CI, and the Travis file that describes the build.

Ansible Java role - Travis CI Docker-based test results

Migrating 20,000 images, audio clips, and video clips into Drupal 8

tl;dr: If you want to skip the 'how-to' part and explanation, check out the pix_migrate example Drupal 8 migration module on GitHub.

For a couple years, I wanted to work on my first personal site migration into Drupal 8, for the last Drupal 6 site I had running on my servers. I've run a family photo/audio/video sharing website since 2009, and through the years it has accumulated hundreds of galleries, and over 20,000 media items.

Family Photos and Events website display - desktop and mobile
The home page of the Drupal 8 photo sharing website.

Review: Elecrow HDMI 5" 800x480 TFT Display with XPT2046 Touch Controller

Elecrow 5 inch HDMI display with Raspbian Pixel on Raspberry Pi 3 model B

I recently found a discount code through SlickDeals for $10 off the Elecrow 5" HDMI Touchscreen display for the Raspberry Pi. Since the Raspberry Pi was introduced, I've wanted to try out one of these mini screens (touchscreen or no), but they've always been prohibitively expensive (usually $60+).

This screen hit the right price (even regular price is $40, which is near my 'okay for experimentation' range), and I picked it up, not knowing what to expect. I've had mixed experiences with Pi accessories from Amazon, and had never tried a product from Elecrow.

Drupal VM supports MySQL, MariaDB, and PostgreSQL

PostgreSQL elephant transparent PNG
The PostgreSQL logo. Same family as PHP's mascot!

For the past few years, I've been intending to kick the tires of PostgreSQL, an open source RDBMS (Relational DataBase Management System) that's often used in place of MySQL, MariaDB, Oracle, MS SQL, or other SQL-compliant servers. Drupal 7 worked with PostgreSQL, but official support was a bit lacking. For Drupal 8, daily automated test builds are finally being run on MySQL, SQLite, and PostgreSQL, so many of the more annoying bugs that caused non-MySQL database engines to fail have finally been fixed!


Subscribe to Jeff Geerling's Blog