From cdecb8191a791b8db66effe61de16cb3e3904238 Mon Sep 17 00:00:00 2001 From: "Brandon C. Irizarry" Date: Sun, 8 Mar 2026 19:16:04 -0400 Subject: Reorder posts according to new publishing algorithm --- drafts/projects/buildablog.md | 109 ------------------------------------------ 1 file changed, 109 deletions(-) delete mode 100644 drafts/projects/buildablog.md (limited to 'drafts/projects') diff --git a/drafts/projects/buildablog.md b/drafts/projects/buildablog.md deleted file mode 100644 index f8d534a..0000000 --- a/drafts/projects/buildablog.md +++ /dev/null @@ -1,109 +0,0 @@ -+++ -name = "buildablog" -title = "Building My Own SSG" -host_url = "https://github.com/BrandonIrizarry/buildablog" -synopsis = "The SSG used to build this site." -stack = ["Go", "HTML", "CSS"] -thumbnail = "assets/github-white.svg" -date = 2026-03-01 -+++ - -# Motivation - -While looking for options to host my blog, and having tried Hugo and -Eleventy, I decided to write my own SSG. - -I had completed the [Build a Static Site Generator in Python](https://www.boot.dev/courses/build-static-site-generator-python) -course on boot.dev, and so already had some inkling of what's involved -here. That course requires the learner to manually parse Markdown into -HTML; in my project (which uses Go for the backend), Markdown parsing -is forwarded over to the [frontmatter](https://github.com/adrg/frontmatter) and [goldmark](https://github.com/yuin/goldmark) libraries -(with help from the [goldmark-highlighting](https://github.com/yuin/goldmark-highlighting/v2) extension library for -prettifying code listings.) - -Basically, writing my own SSG from scratch felt like it was going to -be at most not that much harder than learning the ins and outs of -configuring an existing SSG like Hugo or Eleventy. It would also in -the end allow me to configure my site at the atomic level, so to -speak - I write and maintain the server endpoints, the HTML Go -templates, the CSS styling, you get the idea. - -Using Go templates can be daunting at first, but Section 4.6 of of -*The Go Programming Language* — Text and HTML Templates — helps. Jon -Calhoun has a good [mini course](https://www.calhoun.io/intro-to-templates/) on templates, which I had already -completed in its entirety when I needed knowledge of templates for a -previous project I completed, called [Juices](https://github.com/BrandonIrizarry/Juices). Another thing I -learned while working on my SSG is that template parsing should not be -done when serving an endpoint, since this creates a significant -performance bottleneck. - -Generics also came in handy when I wanted to reuse the exact same code -for differing frontmatter layouts (e.g., project posts like this one, -versus ordinary blog posts.) - -# RSS - -Setting up RSS for my site (once you know the tricks) turns out to be -surprisingly straightforward, especially with Go's ability to marshal -all things structured (XML, TOML, JSON, etc.) to and from itself. At -one point I was torn between using either Atom or RSS for my feed, -since the former is [touted](https://nullprogram.com/blog/2013/09/23/) as strictly superior to the latter; in -the end I decided that RSS is good enough to get things started for -now. - -I did face a last-minute curveball when I realized I had to integrate -the *projects* listing to the RSS feed. To this end, I needed a -reliable way to sort RSS item fields by date, which necessitated some -beefing up of the rss package itself. - -Two notable resources for learning about interfacing RSS with Go code -are: - -1. [Create an RSS Feed (WikiHow)](https://www.wikihow.com/Create-an-RSS-Feed) - Super helpful for getting the details of the layout right. - -2. [Build Your Own RSS Feed Generator in Go (YouTube)](https://www.youtube.com/watch?v=b2E1JpC38Pg ) - Helpful for understanding the gory details of what the acutal - marshalling logic looks like. - -With regard to RSS, I feel *all* blogs should have an RSS/Atom -feed. There are some fantastic ones out there that don't! - -When setting up RSS, I finally grokked something while reading a [blog -post](https://pluralistic.net/2024/10/16/keep-it-really-simple-stupid/) by Cory Doctorow where he advocates for RSS: - -I realized that **RSS is a genre of social media.** - -# Sources of Inspiration - -I took (and continue to take) inspiration from blogs I've seen in the -wild, such as: - -1. - - I ripped off a lot of CSS (and general design decisions) from this - site. 😁 The great thing about this site is that it proves that you - can be both a highly intelligent and original thinker without being - a techie conformist or all-around hipster with regard to things - like site aesthetic, opinions, and so on. Such concerns create - performance anxiety which get in the way of you actually making - something *good*. - - As a shout out, the author even gives some quick lessons on setting - up a blog and writing the HTML and CSS for a simple website (which - I also took pointers from! This guy probably did a better job of - explaining what `width: 100%;` means than a lot of resources I've - seen online.) - -2. - - For pointers on how to establish a convention for blog post - slugs. This author uses the date-based scheme, which I adopted in - the end. - -3. - - For general compactness of aesthetic. While I don't plan on going - that route, the nod to S-expression syntax is nice. - - -- cgit v1.2.3