Last month I renewed my domain on Namecheap, and I opted for the PremiumDNS feature as well. I wasn’t really sure what it was, but it sounded useful. That was the beginning of my downfall.

How it started

It was the Sunday before Labor Day.

I’m pretty sure this is how it played out: I was working on the Notes section↗️ of the old version of my site, and I was getting tired of typing out my full name every time I wanted to check things in prod. Seeing other people’s cute .dev domains made me jealous (I especially like Nikema’s↗️), so I went to Namecheap to check how much it would be to get one for myself.

While I was there, I clicked around my dashboard and noticed that the PremiumDNS service I paid for is switched off:

screengrab of Namecheap domain management setting with PremiumDNS switched off

So obviously I switched it on. Who wouldn’t? I already paid for premium features, I should use them.

This, by my understanding, re-enabled the Advanced DNS records I had set up previously to point to the GitHub Pages version of my site, which no longer exists. Which means that the SSL cert doesn’t exist either. Hence, errors.

I do think that when I originally switched from GitHub Pages to Netlify in June? July? I did actually set up the nameservers correctly in Namecheap:

Namecheap nameserver configuration using Custom DNS and pointing to four nameserver addresses

I remember being impressed by how easy it was. But in re-activating my Advanced DNS records, I messed everything up.

Turning on PremiumDNS so casually meant that I didn’t have the context spooled up to properly debug the problem. (Btw: this is one of the arguments for configuration as code and I’m solidly behind it.)

Wow, now that I’m writing this blog post I’m realizing that Koenraad gave me basically the entire answer like, weeks ago when I first broke things:

My understanding at the time was that Koenraad’s approach would support neither Namecheap PremiumDNS nor the subdomains I’d just set up for my notes and speaking site.

Since I’d just set up those subdomains in Namecheap, I was not ready to sacrifice them. Plus I wanted to get my $4.88 worth of PremiumDNS for the year!

Have I mentioned that this is the most I’d ever thought about DNS up until that point? At least I got to enjoy how bad things would look to someone visiting my site:

I doubt I could get away with arguing that it was intentional, lol.

Yeah, not a good look.

Testing in prod

DNS is one of those things that you can really only test in prod. Most teams get it right early on and then never make changes (sometimes copying existing configs), so if you’re joining a team with an established domain setup then there aren’t many opportunities to play with it. That’s the excuse I’m making for myself, anyway.

I fixed it eventually, that must count for something, right? I only made about 50 random changes along the way 😓 (no, I’m not proud of that).

The night before that tweet, I had gotten my site to load on mobile, and a couple other people were able to confirm that it loads. I think it was indeed a caching issue at some point. But more than anything, I broke the config.

By the way, Namecheap support was amazing through all of this. They proactively reached out to me multiple times on Twitter.

The support person I messaged the next day had to put up with me being randomly unresponsive because I was trying to talk to them and make changes while also attending meetings on Zoom. They still managed to teach me things! A few different people were managing the Twitter account and all of them were great, but I want to especially appreciate this person:

That made my day.

Learning curve

I’m slow to make sense of things until I understand how all the parts interact as a system.

The Namecheap support person I chatted with on Thursday helped me confirm my understanding of where things needed to happen:

I think before I was basically like, “Well why would I need to do any configuration in Netlify? That’s what Namecheap is for.”

But behind the scenes, these are just web services. There’s some database or something that keeps track of what domains map to what. There’s nothing special about Namecheap that means they get to handle domain stuff and Netlify can’t (or if there is, it’s not related to any of what I was trying to do).

With the support person’s encouragement, I finally went into Netlify to try to set up the CNAME records for my notes. and speaking. subdomains there. Results were near-instantaneous.

I’ve converted the rest of that thread into a blockquote here (with minor edits):

So if I’m understanding correctly, domain registration is a separate thing from DNS resolution. Namecheap handles the former and Netlify handles the latter.

This whole time I thought the resolution happened on the Namecheap side. I looked at Netlify’s DNS settings page and thought, oh I don’t need this lol. I’m trying to map this to the things I’ve touched in Route53, but there I’m usually just copying the settings from existing stuff. I remember poring over docs about DNS record types like, years ago, and none of it stuck.

And that’s kind of the thing, these lessons don’t click for me until I’m really focused and invested. Meanwhile, I have to work extra hard to make sure my knowledge gaps don’t trigger my imposter syndrome.

(Yes, I’m forever taking credit for that.)

That’s all, folks!

So that’s the story of my recent lessons in some super elementary “wtf do these services even do?” DNS.

Remember: nameservers are special. And it’s always DNS.