Making a Blog
tags: #astro, #webdev, #cloudflare
Christ is risen! Christos anesti! Christus resurrexit! Christos voskrese!
What a fitting day and time to publish and complete my first blog post on this new site! For context, my last day at Greenway where I’ve worked full time as a software engineer on the release engineering team doing DevOps for over three years was Wednesday, April 16th, 2025.
I left the organization with nothing lined up to focus on completing my master’s in philosophy and gain the freedom needed to travel both to visit family and friends I haven’t seen in a long time and to take concrete steps towards discerning religious life that would have been prohibitively difficult while working full time. I’m blessed to live with my parents and thus have very few expenses that would deplete my savings that I’ve accumulated since before starting at Greenway, although I do have to watch what I spend.
I threw most of this site together quickly using my MacBook Pro in bed Holy Saturday morning (April 19, 2025). Long story short, my dog is sick and woke me up at 2 AM. Instead of immediately going back to sleep, the idea came to me to brainstorm what it would take to make a new updated site for both a blog and portfolio—the former to facilitate and log ideas, become a place where I can consciously practice writing and thinking, and hopefully become a more core part of my life and career in the future; the latter to replace my aging Hugo resume site.
Tech Stack
Cloudflare Workers
At first I was thinking about using GitHub Pages which is what my current and few past sites run on. Eventually, I remembered a friend of mine extoling the benefits of Cloudflare Pages. I ended up going with Cloudflare Workers instead, though. It took all of 30 seconds to press a button, allow it to link to my GitHub account, and it did everything needed to spin up a self-deploying private repository with the official Astro blog theme. The only things I did after was update dependencies and fix vulnerabilities in the slightly outdated packages by running npm audit fix --force
before working on the content and tweaking some of the layout of the theme files.
Note, there’s a difference between Cloudflare Workers and Pages. Workers allow serving dynamic content and are more like AWS Lambdas than GitHub Pages. Cloudflare Pages, as the name suggests, is more of a one-to-one replacement for GH Pages. Both have free pricing models, and Workers can do pretty much the same thing as Pages just as well. Workers is also receiving the bulk of Cloudflare’s new development efforts, so I see no reason to use Pages at this point unless I start getting more than 100,000 requests a day, the pricing models change, or my site starts containing files or resources that require more than the free tier Worker limits. Compare Workers Limits and Pages Limits. Anyway, there’s not much more to say there. It really was that easy to set up!
Note, you can use C3 and Wrangler to set everything up from the CLI instead. I’ll probably be digging into the docs a bit more in the coming days to get a better understanding of what my site is running on so I can more effectively maintain and enhance it.
Astro
As for the actual site framework, I settled on Astro. My friend uses Zola, which I’ve used in the past. I’ve also dabbled with Jekyll and Hugo. I didn’t go with Zola because it’s too niche and back then there were a few limitations that made it difficult to get what I wanted, Jekyll because it’s too clunky and Ruby is annoying to deal with, and Hugo because it’s both too flexible, has a steep learning curve, and Go templating is painful. My current site uses Hugo and is unmaintainable due to widespread fundamental breaking changes in the theme I was using.
On the other hand, Astro is both incredibly simple and very popular, so it was a natural choice. Using JavaScript is also definitely a plus over Rust, Ruby, or Go considering the current tech landscape, although a part of me wishes for there to be something as polished in Rust or Go.
Astro has what are called Integrations, and one of the categories is SSR Adapters. Since I’m hosting my site using Cloudflare Workers, I need the Cloudflare adapter. Creating my project using the Cloudflare UI actually automatically set up everything I needed for that, so I didn’t need to worry about it. When I fixed the vulnerabilities and updated everything though, it started outputting info on builds about being “sure to define a KV binding named ‘SESSION’.”
Naturally, I had no idea what that meant. It turns out Cloudflare Workers has a feature called Workers KV. Using Wrangler, I created a KV namespace named SESSION
and added the ID into my Wrangler configuration (wrangler.json
) following Astro’s integrations guide for Cloudflare. It won’t really be useful until I start using the dynamic serverless features of Cloudflare Workers, but it’s good to have it configured up front!
For the Future
Here’s a list of stuff I want to dig deeper into eventually:
- Web development:
- Node.js:
- Astro:
- Go through the Astro Blog Tutorial
- Implement tags, searching, an archive, draft posts, dark mode, comments
- Dig through the normal docs
- Go through the Astro Blog Tutorial
Conclusion
Either later today or some time in the next few days, I’ll be fleshing out more posts on the other various areas I’m focusing on right now. As a foretaste, they involve my degree, improving at writing, autodidacticism (philosophy, theology, Latin, Zettelkasten), spirituality (Liturgy of the Hours, Byzantine Catholicism), and various leisure pursuits (reading, gaming, and digital media). I’m definitely going to need to find a balance between doing, reflecting, and writing!