In this article I will tell you about the tools and services that I am using to run this website.
There are two cornerstone tools that I use; Pelican, and AWS. Pelican is an awesome static website generator built on Python, and AWS is a platform of tools primarily targeted at building web apps. I really like AWS due to its sheer volume of tools, its free tier, and scalable pricing model. Currently I am just using it to host my static website, but eventually it will run my backend services.
Pelican is similar to Github’s Jekyll, but is based on Python rather than Ruby. It works by loading your articles and pages, written in Markdown, and converts then to HTML. Being a Python dev in the past it made sense for me to use Pelican; the theme I mostly built from scratch. Static websites are great for my purpose as I require no server side logic and they are far faster and cheaper to run then dynamic web apps.
For version control I am using Bitbucket; Bitbucket offers unlimited private repositories for free, which is awesome. An alternative of course is Github; which I would consider using if I wanted to host my website on Github, or wanted to use Github’s issue tracker, but I don’t. I may consider using AWS’ version control service in the future.
I purchased my domain name through Namecheap, which I like it since it does just one thing: domain management. I have tried tools such as Godaddy in the past but their software is crammed with so much stuff; the complexity of it distracts from its usefulness.
To host my website I am using S3. S3 is great as it is cheap and fast, and Pelican comes with some scripts to publish directly to S3 which is terrific for my workflow.
To make my website even faster I am using CloudFront. CloudFront can take all of my files hosted in S3 and cache them at edge nodes all around the world, making the website super fast wherever you are. It also lowers the cost of S3 by reducing the number of requests that S3 needs to handle.
I don’t use Namecheap to directly manage my domain, rather I tell Namecheap to let AWS Route53 handle record management via a hosted zone. This just limits the number of tools that I need to use, so I guess I could really use any domain name service.
For event tracking I am using Amplitude. It’s a lot more powerful than Google Analytics, the defacto choice, and it has a friendly pricing model. I am using it to figure out which of the articles I write are the most popular so that I can focus on improving them.
For managing my email subscriptions I am using MailChimp, which is hooked up to the subscribe function that you see around this site. This way when I release a new article I can notify my subscribers. It is very easy to use and takes care of normal email subscription stuff such as unsubscribe and so forth without me having to think about it.
I don’t use Amplitude or MailChimp directly rather I am using Segment. Segment has a really nice debugger so I can easily test the changes I am making to the website, it can also forward events to any analytics service without me having to make changes to my website.
Thanks for reading. I hope this can help you to set up your own website in the future. This setup works great for my purposes. If you have any other suggestions then I’d love to hear them in the comments below. Otherwise you can subscribe for future articles.