I go by stcheng.

I like fruits in the family Sapindaceae.

I was born in Hangzhou, lived in Shanghai, and Philadelphia.

I live in Seattle now.

Website Eng Task Board


  • [P0] Reorganize folder structures
  • [P1] Move variables outside the module and into the configuration file
  • [P1] ไธญๆ–‡/EN Multi-language Support
  • [P2] Make gallery page to display thumbnails of photos
  • [P2] Automation
    • Create a GitHub Action to โ€˜generateโ€™ and โ€˜deployโ€™
  • [P2] Separate blog architecture with blog content
  • [P2] Separate theme with patches
  • [P2] Do not upload .DS_Store files
  • [backlog] Add Terraform files for setting up the infrastructure
  • [backlog] Write a feature page about this website
  • [backlog] Write a plugin asset_video to support video
    Original asset_img plugin is located in hexo/lib/plugins/tag/asset_img.js
    One html5 video plugin is https://github.com/stephenmkbrady/hexo-tag-html5



  • Add Favicon


  • Add the subscription functionality
  • Add the sitemap.xml


  • Add a banner background image


  • Rename to S T C H E N G
  • Set up full iPad dev env via
    • iSH
    • vscode.dev/tunnel


  • reate 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
    • Use MIME type to determine the file type and set the correct Content-Type
  • Feature
    • Embed AWS credentials to the docker container
    • Support RSS
    • 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


  • Migrate from Azure and set up AWS

I need to check out the fruit Langsat!