Technical Stack

NB: “Technical Stack II” is a newer post on this topic. The post below is outdated.

At a friend’s request, here is an overview of this blog’s technical stack.

This blog is hosted on GitHub Pages. Jekyll transforms Markdown files into a static website. An AWS CloudFront distribution provides HTTPS support as, unaffected by DNS record edits1, GitHub Pages will not serve content over HTTPS2.

As I edit Markdown files in Ulysses, Dropbox notifies an AWS API Gateway. A chain of AWS Lambda functions syncs updates from Dropbox to the GitHub Pages repository3. The required resources are described by an AWS CloudFormation template, in spite of limitations4.


  1. [return]
  2. [return]
  3. [return]
  4. For example: * External Swagger files don’t support stage variables or pseudo parameters: awslabs/serverless-application-model#345 * S3-Lambda permissions and policies that reference S3 bucket names are mutually-exclusive, unable-validate-circular-dependency-cloudformation notwithstanding * Neither Fn::GetAtt nor Ref return ARNs for all resources

    [return]