Were it not for Nick Bradbury’s HomeSite, I probably couldn’t have written this

Perhaps like many starting out with HTML, myriad aspects of the syntax were confusing, or downright overwhelming. For me, tables were one example of the latter. Despite their prevalence at the time (1995), their structure was something I struggled to understand.

Fortunately, one of the many amazing features of HomeSite was its table editor. The visual interface made it easy to create tables and set various attributes. Toying with that GUI helped me correlate what I saw there with the markup it produced.

That ability to experiment and connect changes to their output was essential for me to become familiar with HTML. With no formal training, meager search engines (Google didn’t yet exist), and documentation beyond my understanding, I had no way to learn but to change things and test those effects.

Thanks to the experimentation that HomeSite afforded me, I learned HTML, began hosting my own sites, and in 1999, encountered PHP. Had I abandoned web development out of frustration with learning the early syntax, there’s no chance I could’ve returned to programming as a career when the recession hit in 2009.

Who knows, maybe I’d still be an accountant?

Automatically renewing a lot of Let’s Encrypt certificates

I’ve been experimenting lately with Let’s Encrypt for SSL certificates, contemplating whether it can replace my StartSSL Class 2 wildcards.

For those unfamiliar with Let’s Encrypt, it’s a free certificate authority1 aimed at simplifying the process of making a site available via a secure connection. If you’re reading this on ethitter.com, your browser’s address bar will display a lock icon, the text https, or some other indicator that the connection is secure.

Secure URL

Until Let’s Encrypt launched its public beta in December 2015, acquiring a certificate involved many steps; at times, considerable cost; and terminology many find confusing. Let’s Encrypt intends to address these issues, and effectively does so in at least one way.

Continue reading Automatically renewing a lot of Let’s Encrypt certificates

  1. An organization that provides the trusted verification that makes secure certificates secure.

Blocking sender IPs in Postfix

Despite all I’ve done to filter junk mail, I recently noticed one consistent spammer who was bypassing all of my safeguards. Notably, this source has a host who’s tolerant enough that the spammer went so far as to set SPF headers, to give their messages some “credibility.”

Continue reading Blocking sender IPs in Postfix

Open-source as my path to data ownership

I find myself in an interesting position these days. One the one hand, there are excellent, often free, services to provide nearly anything I need in my digital life. On the other hand, being at the mercy of a business’s whims and Terms of Service is disconcerting. A few years ago, despite the excellent quality of many hosted services, I began transitioning to open-source solutions that I can host myself.

My interest in open-source alternatives is, unsurprisingly, related to my career and current employer. WordPress was my introduction to the concept of open-source software, and the flexibility I’ve had in using it to run this website certainly endeared me to its ideals. It is from this experience that I’ve resolved to find my own solutions to the web services that I use most often.

Continue reading Open-source as my path to data ownership

Why I host my own email

What started as a test of whether or not I could do something became, over time, an obsession. Gaining complete control over my email was a motivator for sure, but curiosity was an equal impetus. Anyone who read my post about hosting ethitter.com‘s nameservers will recognize a pattern.

Managing flow

Creating multiple accounts with a single provider as a means to organize emails doesn’t provide much flexibility. Using one address or another works until one loses track, or the wrong address is shared in the wrong place. At that point, one has no ability to divert incoming messages to other destinations before they land in the inbox. Gmail and others do offer a way to forward messages after they’re received, but a reactionary approach wasn’t to my liking.

Continue reading Why I host my own email

Tracking discrete server configurations

As I’ve written about previously, I currently maintain four servers that together support the many pieces of my online presence. There’s relatively little configuration overlap between each instance, so I wasn’t particularly interested in a solution like Capistrano, Chef, or Puppet. My need was for tracking iterations, not repeating setups, so I leveraged Git.


In the root of each server, I initialize a Git repository and create a README.md. The readme contains pertinent details like the server’s IPs, provider, and hardware specifications. I also note the services running thereon and any TCP ports they’re bound to.

Continue reading Tracking discrete server configurations