Overview#
No one cares about how pretty your blog looks.
There will always the exceptions. However, I suspect people are more interested to learn about the journey than just the result. Due to this, we should focus on the content. The faster we can go live, the sooner we can start publishing.
This post will detail my journey and the technologies I chose to use.
tl;dr:
- Get setup within hours - Static site generation with Hugo with hosting on Netlify;
- Get setup within seconds - Substack ( https://substack.com/)
(I opted for the former)
The “What” - Frameworks, Libraries, Tools, etc.#
You do not need React.
I understand that you want to use React. I also wanted to use React. But it’s not necessary and will only serve as a distraction. This is a simple blog, which could pragmatically be static pages - keeping in mind that static pages are cheaper (potentially free) to host.
However, we need to be careful not to overcorrect from React: “If we’re planning on hosting static pages, then why do we need a framework? I’ll just manually write some HTML post and dump the pages somewhere.”
While that is an option, I personally don’t want to be writing HTML for each blog post. This could lead us to create some type of template system so that we don’t have to keep repeating our layout. However, we should recognize that this is a solved problem and resist the urge to create our own solution - just use a static site generator.
Two popular choices are Hugo and 11ty. I spent a lot of time unnecessarily going back-and-forth between these choices. Although both are static site generator, I’ve found that Hugo is easier and faster for creating a blog. Hugo is more opinionated, has more out-of-the-box functionality, and supports themes. 11ty is capable of doing the same, but from my experiences requires significant more setup.
Use Hugo.
The “Where” - Hosting#
I’ve always thought that I should be using unmanaged hosting from a cloud provider. With unmanaged hosting, you typically get a server with an operating system and SSH access. You have to perform all configuration and maintenance yourself.
The Big Three (AWS, Azure, Google Cloud) tend to have lots of other offerings available, their UI/UX can be overwhelming, and some platforms (AWS) have unnecessarily confusing product names. Smaller providers (Digital Ocean, Vultr) have much fewer offerings, a simple UI/UX, and I’ve found it much easier to spin up a server. However, regardless of which provider you chose, using an unmanaged server will cause you to fall into the same trap of building everything yourself - a lot of which isn’t necessary for a simple blog.
I’ve recently learned to appreciate managed solutions, such as Netlify and Vercel. They have 1-click integration with Github, push-to-deploy, pipelines with rollbacks, and generous free tiers.
I had previously used Vercel for some NextJS project. Given that worked well, I tried to Vercel for this project. However, Vercel is tightly coupled with NextJS and I had a hard time fighting it to work with anything else. So, I decided to try Netlify, and realized it’s just as easy.
Use Netlify.
Other Considerations#
Domain Registrar#
This is likely the only expense you will incur. I’ve always used Namecheap and haven’t had a desire to look elsewhere. Their UI is a bit dated, but you’re not going to be spending a whole lot of time in there. The only challenge you will encounter is committing to a domain name.
When configuring your DNS, ensure the site is hosted on www
and that you redirect @
to www
.
Use Namecheap.
Community Engagement#
My motivation for building a blog is to create a community and self-branding. It’s difficult to achieve this without a mechanism to engage with readers. The next steps would be determine a mechanism for community engagement; whether that be through blog comments, Discord, or a community site such as Discourse.
For now, the main focus is still on the content. So this can be evaluated at a later stage.