This Website

Hobbies

Summary

  While I've traditionally used Wordpress to build my websites in the past, I finally decided to make a custom one after developing the skills to do so at SpaceX. I still wouldn't call myself a web developer by trade, but I take great pride in being able to create things on my own, and have also felt that Wordpress was overkill for a simple portfolio website. It also gave me a chance to put my DevOps skills to use at home, which I've been wanting to do for a while.
  The core framework of my website is Astro, chosen for its focus on static site generation and de-duplication of code via re-usable components. This seemed like the perfect middle-ground of providing enough structure and quality-of-life features to reduce the overall effort of building the site, without being overly bloated or opinionated. So far I've been incredibly happy with this decision, and would recommend it to others looking to build static websites. To add some helpful styling utilities, and basic web components, tailwindcss and flowbite were also added. Like my decision to use Astro, these both provided good starting points for creating a website that felt like my own, without struggling for too long at the start.
  From the DevOps perspective, I created a Makefile within the repo for local development targets to build, run, and test both in a pure context, and within a Docker container. After pushing updates on a branch to my local Gitea instance, and opening a pull request, an actions runner performs spelling checks, runs unit tests, and integration tests. Once these pass, the website is built into a Docker container and uploaded to the registry in my Gitea instance. The image is then deployed to staging on my VPS, allowing for manual validation of the changes. In order to merge, the build, test, and deploy actions must pass, and I empirically validate the deployment. Post-merge, a similar action builds, tests, and deploys the main branch in the same way as before, but to production, and is what you see here!

Relevant Skills

Software & Environments

  • DevOps
    • Github Actions
    • dev/staging/production environments
    • automatic build/test/deploy
  • Git
  • Docker
    • Custom Builds
    • Registry & Asset Management
  • Programming
    • HTML
    • CSS
    • Typescript
    • Bash
    • Makefile
  • Web Frameworks
    • Astro
    • tailwindcss
    • flowbite
  • Operating Systems
    • Linux
      • NixOS
      • Alpine Linux