Welcome To The Blog
Welcome to my new blog on software architecture, development, technology, and sometimes game development. The first few posts of this blog will be a bit meta, as they will be about the process in which I started up the blog. Hopefully it will provide some useful technical information on starting your own blog, but at the very least, it should give you some insight into my though processes.
Blog Requirements
When starting up a new blog, I had a few requirements in mind.
- Simplicity
- Cost Effectiveness
- Reliability
Simplicity
As this is a personal blog, I wanted technologies that were going to be simple to use. The more time I spend fighting technology, the less time I spend writing, and the less time I spend with the family.
Cost Effectiveness
As this is not a money producing project, the goal is to keep the costs as low as possible. This means looking at open source technologies, as well as elastic, pay-as-you-go hosting solutions.
Reliability
Reliability is an import aspect of every project that I work on, be it personal or professional. I do not enjoy being woken up in the middle of the night, nor do most of us. Additionally, I like to have confidence that when I share the link to my site, it will be available.
Technology Decisions
With the above requirements in mind, I landed on the following technology choices.
- Jekyll
- Github Pages
- AWS Cloudfront
Jekyll
Jekyll is an open source static site generator created by Tom Preston-Werner (GitHub co-founder) whose philosophy is that it “gets out of your way and allows you to concentrate on what truly matters: your content”. Jekyll is blog-aware (meaning posts are first-class citizens), does not rely on external databases, and is easily extensible. It fits the bill for simplicity (what is simpler than writing Markdown files), and is an active project with a lot of users.
Another solution I examined in my search for a blog technology was Ghost. For a site that had more complicated CMS needs than a blog, I would consider this solution. Unfortunately, for the requirements that I have, it does not fit in as well as Jekyll for simplicity or cost effectiveness (given that it has an external database, and cannot be deployed as cheaply).
Github Pages
While I typically would land on using AWS S3 for hosting static sites (as it is cheap, reliable, and ties in nicely with my CDN of choice), in this case, the use of GitHub Pages seems to make more sense. GitHub Pages ties in nicely with Jekyll, and as I am hosting this repository on GitHub, there is one less component to worry about (the build)..
AWS CloudFront
AWS CloudFront is a content delivery network (CDN) with a pay-as-you-go model that can tie directly into AWS S3. It is very affordable ($0.75 per million requests plus $0.085 per GB transferred at the time of this writing). If you sign up for a new AWS account and are eligible for the free tier (for 12 months), it is free for the first 50 GB of data transfer and 2 million requests. In addition to its cost effectiveness and reliability (files are served from multiple edge locations), it is again a technology that I have used for numerous other projects.
Ancillary Technologies
This project has numerous other ancillary technologies used for various DevOps activities. I won’t go into depth with these (at least in this post), but as an overview they include.
- Docker - Containerize development and builds enables devs to get up and running quickly.
- Make - Tool that is used to generate files, which I also like to use as an abstraction layer for various commands.
- Serverless - Abstraction on AWS CloudFormation and other cloud deployments.
- Ruby - Incidental technology, as Jekyll is built on Ruby.