About Me

I go by stcheng.

And I like fruits in the family Sapindaceae.

I need to check out the fruit Langsat!

About the Website


  • [P0] Reorganize folder structures
  • [P0] Add favicon
  • [P1] Move variables outside the module and into the configuration file
  • [P2] Automation
    • One-click deploy
      • Create a cloud service triggered by a git push
      • Automatically generate the latest website
      • Automate upload to S3
    • Test infrastructure
  • [P2] Separate blog architecture with blog content
  • [P2] Separate theme with patches
  • [P2] Do not upload .DS_Store files
  • [P2] Add Terraform files for setting up the infrastructure
  • [P2] Write a feature page about this website


  • [P0] Refill all historical posts (year 2011)
  • [P0] Create a 404 page and redirect all non-existing pages to this 404 page
    In CloudFront error pages configuration, one shall create a custom error response for 403 instead of 404 since S3 will return 403 when accessing non-existent entries. Send a customized error response with page 404.html and code 404 will make it work.


  • Bug
    • [P0] Use MIME type to determine the file type and set the correct Content-Type
  • Feature
    • [P0] Embed AWS credentials to the docker container
    • [P1] Support RSS
    • [P1] Return error and exit for hexo deploy when AWS credentials are not set
    • Automate S3 bucket upload with hexo deploy command
    • Selective upload (only update changed files)
  • Automation
    • Create AWS IAM user and IAM role
    • Add a hexo deployer plugin to upload public files to S3
      • Patch s3-sync-client module to set the correct Content-Type
      • Add AWS credentials as environment variables to the container
      • Now it is able to run hexo deploy
  • Feature
    • Add Atom feed


  • Bug
    • [P1] Fix Next Page arrow
  • [P0] Migrate from Azure and set up AWS