Hello World

Finding myself with some time on my hands during lockdown and thinking a website revamp was long overdue, I began my new project…

As I’d been pondering a better personal website for a while, I already had a good idea of what I was looking to ultimately achieve - improving my personal brand - the question was how.

The old site was a single static holding page with a couple of links and a background that looked like it was straight out of 2008 (mainly because it was). It was hosted on a EC2 instance that was massively overkill and costing me money.

Considerations for the new site:

  • Dirt cheap hosting
  • Low-friction article posting
  • Really simple design but not based on a theme/template
  • Contact form for potential freelance clients

For hosting you can’t get much cheaper and simpler than S3, plus there’s a ton of static site generator options around. But generating and deploying a site every time I want to publish an article seems like a lot of work, plus no contact form ability…

Fortunately I’d already researched using a Lambda function to process a form submission and send an email. So that’s the contact form requirement sorted but what about low-friction article posting?

If I’m using a static site generator I’ll be storing everything in a Git repo, which means GitHub (for me). So I just needed a way to take a repo from GitHub, build a static site and deploy it to S3. Oh and wouldn’t it be awesome if I could automatically trigger that process every time I made a commit!?

After a fair bit of Googling around S3 static site deployments and Lamdbas, I settled on this as a plan:

  • Design and build a basic site using Hugo and Bulma
  • Provision AWS resources via Terraform
  • Deploy site manually to S3
  • Create Lambda function to handle building and deployment
  • Use GitHub Actions to trigger the Lambda when new content is committed

That should cover all my main considerations and also give me a change to try out some cool new things.

In future posts I’ll cover each of those steps in a bit more detail…