About Me

Hi there! My name is Andrew Chao, a programmer, mathematician, and an avid reader. I build little curiosities and mess around with Linux in my free time. While you’re here, you can browse through some of the projects I’ve written about, or check out my GitHub page.

How Did We Get Here?

This website began as an idea in December of 2022, when I had too much free time and a spare computer. This website primarily came into existence as a way to bridge the gap between my theoretical knowledge of computing and back-end development with the real world – sure, I could “center a div” but a <div> doesn’t mean anything without something to exist on.

The focus of this particular project was no longer making small self-contained projects as it was to build an overarching understanding of how computing and the web fundamentally functioned. Consequently, the decision to self-host as opposed to simply building an image onto a Digital Ocean VPS is because I do not treat this site as a production build – but rather as a testing ground for experiments.

Edit: After working with managing infra for some time, I can safely say that I know way too much about the management of servers and the respective maintenance costs. Time, electricity and the constant need to update packages and manage vulnerabilities means that managing this is akin to a part-time job. Sure, it works well enough and you get your money back in terms of costs, but that is only true because I was still learning the ins and outs of server management. Now that this is no longer a testing ground, I am less inclined to constantly mess with something that could possibly break when I need it. I’ve migrated to a VPS, though I still manage most things myself.

Implementation Details?

  1. Remote Ubuntu server under hypervisor, managed over SSH
  2. WordPress and MySQL running Docker
  3. Nginx for reverse-proxy, Let’s Encrypt for SSL/TLS
  4. Cloudflare as a DNS registrar & proxy

Depending on traffic, I could replace self-hosted Nginx with Caddy in a dedicated VPS – which is faster and simplifies some processes, and allows concurrent visitors to reach thousands without issue. I may have to learn Kubernetes simply to cross ‘”high-availability” off of my buzzword list.

Edit: 10/25/23: While Ghost can run in Kubernetes, it is not advised – and my server is under 2% consistent load, so this is probably not going to happen.

Edit: 4/10/24: I migrated to WordPress on a VPS simply because of auto updates and easier maintenance. Uptime is (much) better and speeds have been upgraded from 10Mb to 500Mb. The site should load noticeably faster regardless of optimizations.