thinkingincode.ninja [Dark]

Details on how the site is hosted

I'll get right to it. I bought the domain thinkingincode.ninja using NameCheap. The server is currently hosted on the smallest server DigitalOcean offers, with 1GB of RAM and 1vCPU, and is running CentOS7. The web server used is nginx, and pages are statically generated.

Domain

I chose NameCheap over GoDaddy as the price was a few dollars difference, and reading some reviews, NameCheap had slightly better offerings for whois protection, and also a nicer interface to manage domains with. I'm not really concerned about the price of the domain in the long term, but having a nicer interface is important to me.

I also am using NameCheap for DNS; I purchased their PremiumDNS offering as well, in the hopes that DNS queries will resolve faster for people trying to get to my site.

Hosting

I looked at Linode and DigitalOcean, as well as what AWS offers, and explored several different options before going with DigitalOcean. AWS works out to be about the same price a year as DigitalOcean or Linode, if you're only using the smallest server. However, feature-wise, per dollar, AWS is lacking. Also, as I've discovered in my day job, AWS is not always as straightforward as you'd like, and there are some significant drawbacks and limitations to how AWS EC2 handles disk IO.

Choosing DigitalOcean over Linode came down to the extra features offered for free, mainly the monitoring. In my day job, I am a systems administrator, and I manage my company's monitoring system; I was thus disappointed with the 12-hour view of metrics that Linode offers for free, and was pleased with the 30 day period that DigitalOcean offers. While Linode offers an unlimited data retention plan, it costs $20 a month, which far exceeds the cost of the server itself. I don't need more than 30 days of retention for system metrics for this site, but being able to look and see if there were any spikes in CPU over the weekend sure is nice. (Side note: If you decide you also want to host a server with DigitalOcean, use my referral link for $10 in credit!)

As far as how the server itself is set up, I went with the smallest server. I have plans (some of which I've already carried out) that will ensure I can make the most out of such a small server. I chose CentOS7 as I work heavily with RHEL at my day job, so I am comfortable with the OS.

Web server

I decided early on that I wanted to make this site be fast. Why have a PHP script that's constantly generating and regenerating the same pages over and over again? The only time the site will change is when I put out a new post, or make updates to the template/CSS/etc. So, why not just statically regenerate the HTML pages every time I make a change, and call it a day? That's what I ended up doing (and am still in the process of working on).

Since I decided that I wouldn't use PHP scripts or anything except as a last resort, that gave me more options for what web server to use. The two most popular web servers are Apache and nginx, so I researched those to see which would be better for my purposes. I'm familiar with Apache (use it at work), so I knew that it's very flexible and capable. Turns out, though, that's also its weakness; Apache can have overrides in the form of .htaccess files, which means that serving static content with Apache can be slower than nginx, unless Apache is reconfigured and tuned. Also, nginx has superior memory usage compared to Apache, at least when serving static content. Since that's my primary use case, nginx clearly won out. Also, I haven't used nginx much before, so I figured it'd be good to get the experience.

I'll have future posts that go into extensive detail on how I statically generate this site (way cooler than it may sound). In the meantime, thanks for reading!