Finally, I started to create my personal website and blog. I found it worthwhile to commit myself to blogging and embrace the habit of being persistent during the trajectory. Meanwhile, contents of the posts could also serve as long-term memory so that I don’t have to reinvent the wheels in the future if I forgot, which is a waste of time. Posts with specific target problems might also be of help to an interested audience if any :)

Trade-offs and decisions during the website creation can be highly personalized. For me, the construction boils down to several aspects.

  • Server host: GitHub Pages could be a good option for static websites which does most back-end configurations for you under the hood. However, one is not able to set up its own backend databases to support, e.g., the comment functionality.
  • Domain name: One could register a custom domain name via DNS providers such as GoDaddy. CNAME at the git repo must store the custom domain name. A and CNAME record at the DNS provider should point to one of the GitHub’s server IPs and corresponding .github.io domain name respectively. dig command could be leveraged to confirm that the linking is taking effect (after variant DNS caching delay) as shown below. Note 192.30.252.153 could also work but will not enable HTTPS for the custom domain.
$ dig +noall +answer liangcheng-yu.github.io
liangcheng-yu.github.io. 3553	IN	A	185.199.108.153
liangcheng-yu.github.io. 3553	IN	A	185.199.111.153
liangcheng-yu.github.io. 3553	IN	A	185.199.110.153
liangcheng-yu.github.io. 3553	IN	A	185.199.109.153
$ dig +noall +answer liangchengyu.com
liangchengyu.com.	567	IN	A	185.199.108.153
  • SNAPSHOT version: As a beginner, mature front-end frameworks such as Bootstrap are helpful to set up a scratch theme. I personally prefer using a modular & simplistic (no meaningless icons, blocks, scrolls) jekyll theme since it will allow me to write in markdown (also compatible with html) and edit efficiently in Vim. Besides, I found the jekyll’s support for Liquid templating language to be extremely handy and save repetitive labour work.
  • Front-end customization: I found it useful to reverse engineer the favorable web components during web surfing via inspecting the source code fetched by the browser client.

Tips I found the book Design for Hackers: Reverse Engineering Beauty to be informative for ameteur web designers on topics of typography, geometric proportions, hierarchy of information, color theory, and most importantly, the mindset of reverse engineering the artifacts you see every day.

  • Optimization: Due to geographical reasons, access from China might suffer from severe delay. Registration at a local CDN provider could mitigate the issue. One could also perform SEO to the website, e.g., simply via Jekyll SEO tag plugin.
  • Security: One could easily enable HTTPS with Settings at GitHub repo and make sure the DNS record points to one of the HTTPS-active GitHub server IPs. One could also authenticate the website ownership via asymmetric key mechanism provided by Keybase.