Here’s that part 2 I promised. The what, the why, the where, the how.
It’s the fun part. The tech choices.
One of the fun parts. It’s all fun, right?
My requirements are based around functionality and learning goals.
And fun.
Technologies
Gatsby
https://www.gatsbyjs.com
Why a static site? My blog is not going to be a central hub for the internet. While it is undoubtedly important to me, and infinitely interesting, it’s not going to serve as a keystone for million’s of users. It’s functionality is limited - it needs to serve writing up quickly, and needs to be flexible enough for me to change it up when the desire arises.
Why, then, Gatsby? There are lots of choices for static site frameworks.
It’s React-based
https://reactjs.org
One of my goals is to learn React, so: Gatsby.
It’s Built Around GraphQL
https://graphql.org
GraphQL is cool. Used in the past, this will be interesting to explore it more.
Loads of Plug-ins
Lots of great plugins are out there for Gatsby. The image plug-ins are great, in particular.
Boilerplate Reduction
Gatsby is opinionated, which can rub people the wrong way, but like every technology, it’s a tool.
For my use case, it reduces boilerplate and lets me focus on what I want to learn, and what I want to do.
TypeScript
https://www.typescriptlang.org
TypeScript is a superset of JavaScript that adds static typing.
TypeScript helps to prevent dumb mistakes around typing. It helps to document intent. The support in IDEs like Visual Studio Code mean you get nice IntelliSense features like real-time type checking and mouse-hover information.
GitHub
https://github.com
Reliable Repository Hosting
Yeah, not a revolutionary repository hosting choice here. It’s free for private and public repos. It’s reliable, and a known quantity.
Actions
https://github.com/features/actions
I plan to leverage the GitHub Actions to build, test, and deploy the blog. GitHub offers enough agent time to do what I need to do, and I hope the GitHub actions are flexible enough to do what I need to do.
GitHub Projects
https://docs.github.com/en/issues/trying-out-the-new-projects-experience/about-projects
I plan to use GitHub Projects to manage my tasks and work. I need a good task board to plan and progress work, and it’s worth a look. If it disagrees with me, I can always flip to an app like Trello or a task list in a note taker like OneNote.
Azure Static WebApp
https://azure.microsoft.com/en-us/services/app-service/static/
I could rig up deployment to GitHub Pages, which is how this blog is currently being hosted, or use Netlify, but again, I’m considering this from the learning opportunities from a personal perspective.
I use Azure daily, and setting up an Azure Static WebApp and any infrastructure around it will be an interesting exercise. I might shift out of hosting on Azure, I’ll have to see how it goes.
Terraform
https://www.terraform.io
I know. Overkill for a personal blog project, right? Again: learning my friends.
I use Terraform in my day job, quite a lot. Not sure a lot covers it, in fact. As it goes, if you need infrastructure, then you should infrastructure-as-code it. Set it up so you can tear it down and put it back up without worry. Of course, if you have infratructure, you should have infrastrucutre testing, so I’d like to fiddle with setting something up, however simple, from the ground up, and fool around with infrastructure testing and see how I can apply that to the day job.
I considered Pulumi which looks super cool, but again, learning that would benefit my daily job is taking precedence.
I might write the simple infrastructure as code in Pulumi once I have it working in Terraform as an exercise.
We shall see.
A blog post in the making.
Testing
Gotta test. It’s a personal blog, meaning this is overkill, yet: learning.
I have a lot of Jasmine, Karma, Jest, and other JS testing frameworks in my past, but this is an opportunity to explore other testing frameworks in addition to Jest.
Likely there won’t be loads of tests; the end-to-end testing in particular will be limited. This will be focused on learning and setup, the satellite view of a complete project.
Jest
https://jestjs.io
Incredibly popular (the most popular?) React testing framework. When in doubt, go with the industry standard to start with.
Playwright
https://playwright.dev
End-to-end testing. Being adopted where I work. It’s cool. It’s easy. It’s good. I considered Cypress, and I’ve used it in the past, but given the work usage, Playwright wins/
Wrapup
That’s it for this one!
Next one, I think I’ll write about about my work tools.