I’ve been thinking of writing about my interests and daily learning activities for a while. Plus, I want to close my FaceBook account, I, therefore, need web space for my friends to stay in touch with me. So, I spent a half-day on setting up my first blog, and I want to write about how I built it.

I use Jekyll as the content generator. If you are new to Jekyll, Mike’s introductory tutorials can be helpful to you.

I use S3 as the content server, and I use CloudFront to allow a custom SSL certificate for HTTPS. Alexej Gossmann has a good tutorial for plumbing these components together.

CircleCI is my choice of continuous integration & delivery tool. I am a big loyal fan of CircleCI! Jekyll’s official site has an excellent introductory tutorial for configuring testing and deployment processes.

When I merge a new blog to the master branch, CircleCI will test the validity of newly built HTML files, and it uploads them to an S3 bucket if the test gets passed.

Unlike a web server, S3 is not able to determine the Content-Type if an incoming URL doesn’t include .html extension. So, Jekyll’s Pretty URLs will cause 404s. Marcelo Canina has a good article explaining this issue and its solution with great details.

I also containerised Jekyll to speed up local development. Davy has a guide for containerising Jekyll.

Once you read through the recommended tutorials and articles, you find it straightforward to put a blog up running. Give it a try.