As of early 2025, I have worked at AWS for one year and nine months after graduating from college. My experience had grown a lot, and while I seek to catch up with the latest trends, I am starting to lose track of the different tech stacks that are renewing at ever increasing rate.

I have been in search for a way to document my experiences. One engineering skill that I definitely learned is that writing, specifically technical writing and documentation, are highly valuable. Hence, I am starting this blog to:

  • Document experiences, learnings, and ideas. Better yet, I had always preferred writing, as there’s an idiom “the palest ink is better than the best memory” and explaining makes for a better learning.

  • Keep tabs on and share my side projects, each of which should try to be reproducible examples so I can pick them back up in future

  • Use as a personal website

Below are the steps I took to create this website

Creating this website

  1. First, decide the high-level stack. Whether you want Static Site Generator, like Hugo, or a React-based JavaScript frameworks, like Next.js. Prompt to ChatGPT o3-mini-high below:
Your goal is to help me build such a personal website. For context, I am a backend software engineer working at AWS with technical and coding background. However, I have not built a website by myself. Now I want to invest in hosting my own server and develop a personal blog and portfolio website. The website needs to allow me to write blogs to document technical ideas or experiences from work, share portfolios, should be good to put on my resume, and the frontend should not be overly complex as I am not a frontend engineer. 

Give technical details, code pieces, and steps to achieve this. Explain what are the most popular tech stacks to achieve similar goals and why they are chosen. Also explain the following questions: Do personal blogging website built by software engineers typically require backend? What tech stack do they use? What javascript framework is needed, if any? If you choose a tech stack to build this website, does it require hosting? 
  1. I chose SSG for its simplicity, fit for usecase, and low cost due to less infrastructure to maintain it.

    • Specifically, I chose the Hugo framework which is one of the more popular SSG frameworks. I had experience with building personal websites using SSG like Jekyll before https://ryansun117.github.io/. You can choose a theme from https://jamstackthemes.dev/ and decide the framework, this will serve as a template for the website. I chose Hugo’s PaperMod theme as its layout seems suitable for writing blogs.
  2. Install Hugo on Windows

winget install Hugo.Hugo.Extended
  1. In Git Bash, go to your desired project directory and create a new site
hugo new site xuxiangsun-website --format yaml
cd xuxiangsun-website
  1. Add the PaperMod theme
git init
git submodule add https://github.com/adityatelange/hugo-PaperMod.git themes/hugo-PaperMod
  1. With Hugo, hugo.yaml is used to set the front page and global configs. Prompt to ChatGPT o3-mini-high below:
Your goal is to help me build a personal website using Hugo PaperMod theme with YAML. Give technical details, detailed full functional code pieces, and steps to achieve this goal. The site should mimic the PaperMod demo site available at https://adityatelange.github.io/hugo-PaperMod/. Specifically, the requirements for the website are: The home page should let me provide my personal introduction, links to social media platforms, and link to blogs. The top bar should be similar to the demo site and have Archive, Search, Tags, and Wiki tabs. Also suggest helpful additions if you find necessary. 

For context, my name is Xuxiang. I am a backend software engineer working at AWS with technical and coding background. However, I have not built a website by myself. Now I want to invest in hosting my own server and develop a personal blog/portfolio website. The website needs to be good to put on my resume, needs to allow me to write blogs to document technical ideas or experiences from work, share portfolios, and the frontend should not be overly complex as I am not a frontend engineer. 
  • Optionally, create content files like content/archive.md

  • Create individual blog posts as markdown files under content/posts

  • Code for this website is available at https://github.com/ryansun117. Note that this is a separate new repo, we are just using the Hugo-PaperMode them as a submodule in this repo, which gives us separation of concern and still allows it to be updated

  1. Build the website with
hugo 
* This creates a `public/` folder with html files and more under your website directory
  1. Deploy to AWS S3 bucket following https://docs.aws.amazon.com/AmazonS3/latest/userguide/website-hosting-custom-domain-walkthrough.html

    • In short, create a new bucket called sunxuxiang.com for hosting the website and a new bucket called www.sunxuxiang.com for redirecting subdomain traffic
    • Configure the buckets to allow public access, add policies for accessing, and enable static site hosting.
    • Upload the files in public/ directory into the sunxuxiang.com bucket.
    • The website should be available at http://sunxuxiang.com.s3-website-us-west-2.amazonaws.com/
  2. Register a domain, e.g. sunxuxiang.com and configure DNS using Route53. Unfortunately, I did not renew xuxiangsun.com after 2023 and it seems to have been taken as of now.

    • Create a public hosted zone in Route53, create two new records for sunxuxiang.com and www.sunxuxiang.com, each with routing type as Alias to S3 website endpoint and route to the respective bucket’s bucket endpoints created in the previous step.
  3. The website should be available at http://sunxuxiang.com