Recent Blog Posts

My Favorite Aunt

You don’t choose your family. They are God’s gift to you, as you are to them. (Desmond Tutu)

This past week, while I was in the middle of recovering from surgery, and the day after my family celebrated my daughter's 2nd birthday, I learned of the death of my Aunt Mary, the eldest of my Mom's sisters.

Maryanne Newman / Hafner

Aunt Mary and her family have hosted almost every Easter, Thanksgiving, and Christmas family gathering at their house, and were always gracious and loving hosts. Through these parties I grew in my bond with the rest of my extended family. But our bonds are deeper than most; starting with Grandpa Charlie and his beautiful wife (who's still with us!), then passed on through their wonderful daughters, the connection and love that my extended family shares is extraordinary.

Self-Publish, don't write for a Publisher

I'm not a writer. I'm a software developer who communicates well. Because I'm a developer and software architect, I spend time evaluating solutions to find the best one. There are often multiple good options, but I try to pick the best among them.

When I chose to write a book two years ago, I evaluated whether to self-publish or seek out a publisher. I spent a lot of time evaluating my options, and chose the self-publishing route.

Because I'm asked about this a lot, I decided to summarize my reasons in a blog post, both to posit why self-publishing is almost always the right option for a beginning author, and to challenge publishers to convince me I'm wrong.

The Joy of Crohn's

According to the Crohn's and Colitis Foundation of America, there are 1.6 million Americans with IBD (Inflammatory Bowel Disease). While that means less than 1% of Americans have either Crohn's or Colitis, that's a pretty big number—and chances are you know someone with IBD, maybe even a close relative!

But due to the fact that Crohn's is usually an invisible illness, many people don't know some of the myriad joys of a typical Crohn's patient's life. This blog post aims to clear that up.

Phobias

Most people I know have one or more of the following phobias:

AnsibleFest 2016 Review and Ansible Roles for Fun and Profit video online!

It's been a few weeks since AnsibleFest San Francisco, and Ansible just posted the video recordings of all the sessions from AnsibleFest SF 2016! I was honored to be able to speak about Ansible Roles at this year's west coast AnsibleFest, and I also arrived a little early so I could participate in the Ansible Contributor Conference on July 27.

Ansible Roles - Jeff Geerling presenting at AnsibleFest SF 2016
Picture from my session courtesy of The Appnel Group.

Remove a single Certbot (LetsEncrypt) certificate from a server

I've been using Certbot to generate and renew Let's Encrypt certificates for most of my smaller sites and services, and recently I needed to move a site from one server to another. It was easy enough to build the new server, then generate the certificate on the new server and use it in Apache or Nginx's configuration.

However, on the old server I no longer wanted to have the old certificate get renewed every week/month/etc. during the certbot-auto cron runs, so I looked to see if there was a way to simply have Certbot delete a certificate. It turns out there's not, but there is an issue—adding -delete option to remove the cert files—to add this functionality.

Increase the Guzzle HTTP Client request timeout in Drupal 8

During some migration operations on a Drupal 8 site, I needed to make an HTTP request that took > 30 seconds to return all the data... and when I ran the migration, I'd end up with exceptions like:

Migration failed with source plugin exception: Error message: cURL error 28: Operation timed out after 29992 milliseconds with 2031262 out of 2262702 bytes received (see http://curl.haxx.se/libcurl/c/libcurl-errors.html).

The solution, it turns out, is pretty simple! Drupal's \Drupal\Core\Http\ClientFactory is the default way that plugins like Migrate's HTTP fetching plugin get a Guzzle client to make HTTP requests (though you could swap things out if you want via services.yml), and in the code for that factory, there's a line after the defaults (where the 'timeout' => 30 is defined) like:

Pages

Subscribe to Jeff Geerling's Blog