SSL Certificate Expiration Checker

IT Operations teams frequently have the responsibility to ensure that SSL certificates for various websites are valid and renewed on a regular basis. While SSL certificate vendors often provide reminders and warnings when the certificates are about to expire, this is not always effective–especially when a variety of different SSL vendors have been used, or different parties are responsible for purchasing and maintaining the certificate.

To prevent SSL certificate expirations from going unnoticed, I wrote an application that checks the certificates from a variety of sites and ensures that they will remain valid for a certain number of days in the future.
Read more on SSL Certificate Expiration Checker…

Linux Utilities for Diagnostics

I spend a fair amount of time troubleshooting issues on Linux and other Unix and Unix-like systems. While there are dozens of utilities I use for diagnosing and resolving issues, I consistently employ a small set of tools to do quick, high-level checks of system health. These checks are in the categories of disk utilization, memory and CPU utilization, and networking and connectivity. Triaging the health of the system in each of these categories allows me to quickly hone in on where a problem may exist.
Read more on Linux Utilities for Diagnostics…

Recovering from Corrupt Revisions in an SVN Repository

Recently, I worked to recover a client’s corrupted SVN repository. While the best protection against repository corruption is good backups, these are not always up-to-date or intact. Unless there are backups, repository corruption will almost certainly result in some data loss.

However, by working around corrupt revisions, it may be possible to restore the repository to functionality with minor data loss, and potentially detect what data loss has occurred–if an up-to-date and intact working copy is available. Read more on Recovering from Corrupt Revisions in an SVN Repository…

Configuring Per-Locale Font Selection with FontConfig

As I gain experience programming, I find myself becoming more and more mindful about implicit assumptions I might be making while solving problems. Spending hours debugging timezone issues or unexpectedly time-sensitive date calculations has revealed that everything I thought I knew about time (and many other subjects) is wrong. Such experiences have led me to take more cautious approaches to new problems. Read more on Configuring Per-Locale Font Selection with FontConfig…

DNS Record History – A Tool for Restoring DNS Records

People who work in IT Operations know that “Everything is a DNS Problem.” Recently, a client experienced an issue where the MX records for their domain were inadvertently changed, which resulted in e-mail not being delivered. Unfortunately there was no DNS history—no record existed of what the MX records had been. The DNS entries had been set up years ago, and no one knew exactly how the system had been configured. This necessitated an investigation and analysis to determine what the records should be.

Read more on DNS Record History – A Tool for Restoring DNS Records…

Commandline Craft: Creating a Craft Console Plugin

I recently worked on automating a deployment step for a website built with Craft. Specifically, I wanted to clear some caches during a deploy. Previously this had been a manual step done through the admin interface, but it was easy to forget. Furthermore, invalidating the CloudFront cache without first invalidating the Craft cache meant that sometimes CloudFront would re-cache old pages and images.

Read more on Commandline Craft: Creating a Craft Console Plugin…

How to Archive a Website

We recently launched a new website, replacing the venerable old website of 9 years. So as not to completely lose the content of our old website, we decided to archive it to disk so that we would be able to resurrect it at a moment’s notice, both for historical purposes and to ensure that we would be able to retrieve any content or files we had not migrated to our new website.

Read more on How to Archive a Website…

Remote Troubleshooting Tools

A fair amount of my work involves solving problems and troubleshooting issues beyond systems I have direct access to or insight for. Most often, this involves communicating with someone a world away (or at least several time zones away) who is experiencing a problem with an application I’m responsible for maintaining or supporting. Read more on Remote Troubleshooting Tools…