Things I have Learned while Setting Up this Blog (a Non-Exhaustive List)
No small part of building this blog from the ground up has been an exercise for myself. As cliche as the old job interview challenge “tell me what happens when I type google.com into my browser” is, there’s something to be said for understanding some of the nuts and bolts that make a web page appear on your screen. In retrospect, I should have started this document as step 0 of the process - at this point, the blog is online and I’m stepping back through my memory (aided by my shell and browser history) to come up with a list of the things I’ve learned a little bit more about while putting a website on the internet.
-
It’s Always DNS
They say it because it’s true. I knew I’d have to set up an
Arecord, and from previous experience I knew I’d need someMXandTXTrecords to get email working correctly with my email provider. However, I wasn’t expecting to have to figure out aCNAMErecord, but apparently when asking some browsers to navigate to varietyofprojects.com they decide they know better and try to find www.varietyofprojects.com. At least, that’s what appears to have been happening? All I know is that adding a record forwwwmade things start working in Edge on Windows 11, which is a pretty low priority for me to support but figured I might as well make an effort to do things right. Additionally, I definitely messed up the record on the first try, setting the host to@and the value towww.varietyofprojects.com., then realizing my mistake and changing the host towwwand value tovarietyofprojects.com.. -
Certbot is slightly easier than I expected
Honestly, while I’ve had some annoying experiences dealing with Python dependencies in the past, getting certbot installed with the magic of a Python venv and playing nice with Nginx was remarkably painless. I will say, I’m slightly annoyed with Namecheap as a domain registrar, because apparently they make it difficult for certbot to get me wildcard certs from LetsEncrypt - spent a little bit confused and annoyed by this, and then ended up just getting a cert for varietyofprojects.com and www.varietyofprojects.com. If I ever decide to add more subdomains, I guess I’ll just rerun
sudo certbot -d varietyofprojects.com -d www.varietyofprojects.com --nginx -vand add the new subdomains as additional arguments. -
Nginx config files make more sense than I expected
Look, I’ve never been a web developer, I thought it was gonna be profoundly scary getting a server to actually listen for incoming connections and serve content to them, redirecting them if necessary. It really does just come down to a couple of config files with
server{}blocks containing instructions tolistenon certain ports, serve content found at therootdirectory of the site, and pointing to anssl_certificatewhen necessary. To be honest, certbot automatically configured a number of options here, but I had to go manually add the instruction to redirect requests for www.varietyofprojects.com to varietyofprojects.com. Now, things seem to just work? Requests for the www subdomain redirect to the base domain. All requests sent over http are automatically rerouted over https. It’s not like I’m going to have people submitting credit cards over this website, but having browsers whining about insecure connections is no fun. -
Git hooks are pretty neat
I have approximately 0 experience with software build pipelines, so once I deicded I liked the idea of using git to transfer blog posts and pages from my laptop and desktop to my VPS, I started my learning with some internet searches for “git copy files after push” (there was a very brief moment before searching that I thought I’d have to have my webroot directory be the git repo I pushed to but realized quickly that was foolish). Anyway, git hooks: pretty neat! Literally all I needed was a one-line shell script called
post-receivein the git repo’shooksdirectory:git --work-tree=/var/www/html --git-dir=/srv/git/blog.git checkout -fMaybe that only really counts as a one line file. Regardless, I was happy to learn how easy it is to set up the basic pipeline for building a static site from the master branch of a git repository.
-
Miscellaneous HTML and CSS bits and bobs
BashBlog is a very neat little script for generating sequential blog posts, updating a main page plus RSS feed, and other little basic tasks of maintaining a small blog. However, it doesn’t have any real support for non-post pages (for example, the “About” page linked at the top in the navigation bar. And while we’re on the subject, it doesn’t have real support for a navigation bar at all!) Anyway, I’ve been learning a little bit about CSS stylings and refreshing my knowledge of HTML tags, editing the Bashblog script to include my custom navigation bar on all of my pages and adding that “about” page outside of the post feed. Honestly, it would probably be a good little project for me to try and add support for this kind of thing to the Bashblog script and submit it as a pull request. One more thing for the to-do list. Actually, now that I say it, keeping a running “to-do list” page on here with all of the various things I want to do/learn/etc. I guess we can add “make a to-do list” to the top of the to-do list. (UPDATE: as of 23 October 2025, this page now exists.)
Anyway, those five things are what’s really coming to mind as the cool things I’ve been learning about in the process of getting this page in front of your eyeballs. I get the feeling there’s going to be a lot more in the near future of this little endeavor.
Bonus lesson I’m learning: maybe BashBlog isn’t the way to go. It’s been choking on some of the short code snippets included on this page and is starting to annoy me a little bit. Strongly considering moving over to another project, like Blag.
Update: as of 23 October 2025 you can see that I have in fact pivoted to Blag and I’m liking it quite a bit so far.