Starting my Blog
Over the years, I've toyed with the idea of starting a blog. My biggest impediment was the concern that making my thoughts publicly available could have negative impacts on my personal and professional relationships. Recently I finally decided to let that concern go for a couple reasons. A) I have no idea if I will even keep up with writing regularly, and B) if I'm writing about things that truly interest me, what better way can I connect with other people who share the same interests?
I've admired the work that Jon Gruber does at Daring Fireball for years now. I appreciate the aesthetics of his website and podcast, The Talk Show. Most ad-supported websites these days seem cluttered with ads and try to cram content in seemingly every available space. Most Podcasts have distracting intro/outro music or other production qualities that take away from the content itself. Jon successfully jettisons all but the essential qualities of a blog and podcast. It's a big part of why I continue to read and listen to his content. Not to mention, he created Markdown, which I'm using right now to write this post.
His work has inspired my own goals of have having a simple website or blog, free of the frills and distractions of modern websites and web frameworks. I considered popular frameworks like Wordpress knowing that if most people use them, they will be supported for years to come. However, I felt compelled to start with only the essentials. The thought of building my own blog from scratch sounded like an intriguing challenge, but as a software engineer, I know how easy it is to underestimate the complexity of new projects. And my interested in web development has diminished over the years, in favor of native app development. I struggled to find something open-source and also extremely lightweight. Something without a database or any other dependencies other than a simple web server, like Apache.
My search didn't turn up what I was looking for. The more I searched, the more I questioned why a blog framework couldn't be dead-simple, yet flexible enough to extend with some simple programming. I decided to make something simple using Node and Express since I've used them in the past and found them both painless to get running, and ubiquitous enough that there are plenty of tools and resources available.
In just a few hours I came up with something I'm moderately happy with that gets me started. It certainly won't scale well the way it's implemented, but I know that absolutely no one will be reading this anytime soon. If one day I'm lucky enough to find success in my writing, I will sort out the scaling problems or make the decision to switch to another framework in the future. For now, I not only appreciate the simplicity of how my blog is implemented, I also take a little pride in understanding how it works and knowing I can relatively easily customize it further as I go.
I registered my domain through hover and I'm hosting on AWS Lightsail using an instance preconfigured with Node.js. I used sftp to copy my content to the appropriate directory, ran npm install, configured the Apache configuration files, configured DNS records via the Lightsail console, and had a site up and running within about 2 hours. All that's left is to create an SSL certificate so I can server over https.
Edit: Adding an SSL certificate turned out to be incredibly easy with Bitnami's built-in tool that was included with the Lightsail instance I created. They have a guide here.