I go by stcheng.

I like fruits in the family Sapindaceae.

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


Website Task Board


  • [P0] Reorganize folder structures
  • [P0] Add favicon
  • [P1] Add a sitemap.xml file
  • [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
  • [P2] Write a plugin asset_video to support video
    Original asset_img plugin is located in hexo/lib/plugins/tag/asset_img.js
  • [P2] Add crampon story to 04-15 post



  • Add the subscription functionality


  • 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!