So, I decided I needed a second blog. Probably not needed, but definitely wanted. I have We Learn Code which is where I write mostly long-form content on programming and careers in software engineering geared towards beginner developers. Which is a niche near and dear to my heart. That being said, I myself am not really a member of that demographic. So, I wanted a more low-pressure place to write more one-off and less comprehensive musings on all sorts of topics. Which is now this site.
To build this second site, I needed to pick a tech stack to create it on. My criteria was:
- It needed to generate a static site. I didn't want to deal with a database, and I wanted to use AWS Amplify (my employer) to host it. Jamstack is so much fun to work with.
- As simple as possible. I don't want to spend my life updating the site, and I wanted something up and running fast.
- Not React. I feel like I live my life in React, and I wanted to do something different.
I asked Twitter what they would use, and I did some independent research. I narrowed down my choices to a final three: Gridsome, Eleventy, and Sapper. Before I spoil what I ended up using (I mean you could just view the page source but whatever), I'm going to go through some pros and cons of different static site generators I considered or have used in the past.
I have used Gatsby super extensively over the last few years. I have built several blog sites, including We Learn Code, with it in addition to a couple client sites. It's great for building a really professional blog with all the bells and whistles if you know React. There are plugins for nearly everything, and their docs get an A+ from me.
I chose to go in a different direction for this project because Gatsby felt like more than I needed and I wanted to try something new. I've also had some tricky issues with Gatsby cacheing and versioning. In addition, they've had some community and employee issues surface recently. Plus, I had the hard rule of no React based framework.
Next.js is also awesome. I haven't gotten past the "just playing around" phase of it, but it's super powerful and has some great performance features.
I haven't gotten far enough to find it's cons, but I went in a different direction because, again, I just really didn't want to use React for one of my projects.
Let me just start by saying, Eleventy's community loves it. Which is always a great sign. It's cool that it's so customizable, simple, and performant. There are also a ton of great themes to get started with. It feels kind of like Jekyll, which I have such a soft spot for -- I built my first ever portfolio with it. Plus, you can use whatever templating language you want.
Maybe it just doesn't work for me, but I just wish the Getting Started page got you past the most basic of "Hello, world"'s. Gatsby's getting started tutorial fits my learning style super well -- step by step instructions to build something useable. And then recipes for doing the other common tasks you'd do on a site. And that's what I'm missing in Eleventy's documentation. I think this has more to do with my learning style than anything -- I like to have a linear introduction to something before relying on starters or diving into more complex examples.
I am fascinated by Svelte. I've run through a couple tutorials, and I think it's awesome. Sapper seems like the way to go if you're looking to build a blog with Svelte, and it came pretty highly recommended.
The only reason I didn't go with Sapper is that I decided I wanted to minimize development time, and since I'm new to Svelte it would have taken me longer to get up to speed.
Gridsome is kind of like Gatsby but written in Vue instead of React. It has a bunch of awesome starters and plugins. It has a bunch of bells and whistles, is fast, and has a great development workflow. Plus, I used to be a Vue developer fulltime, so it's an ecosystem I'm comfortable with.
I ended up choosing Gridsome, and honestly I'm mindblown at how simple and fast it was to get up and running. I used the Bleda starter for TailwindCSS and some nice initial styling. So far, I love it. I'm really excited to be using Vue for a project, and I was able to get a blog custom styled and deployed in about an hour. Deployment literally just took clicking next a couple times on the Amplify Console and then adding my subdomain.
I used to tell my students that there wasn't a wrong or right answer for many engineering problems, there are just tradeoffs. And this decision was definitely one of those problems. There are so many great tools out there, and any of the above choices would have been awesome. But I'm really happy with Gridsome, and I'm excited to dive deeper into it.