Writing by Bruce R. Lewis (brlewis)

How this repo came about

In 2026 I noticed how things I had written were scattered over a number of sites, some of which could disappear. I wanted a home for both short-form and long-form writing, basically a blog. I also wanted it to be comfortable for me to do new writing.

I'm most comfortable writing in emacs, in markdown format. A static site generator (SSG) that supported markdown seemed like the way to go.

I also wanted to go many years without chasing new technology, so something standards-based like deno would be a good base for the static site generator. I looked into ones that would go well with deno.

The two main candidates I looked at were the Fresh framework and lume.

Lume was the more prominent SSG associated with deno. They even had simple themes I liked for getting started quickly. However, the theme that caught my eye included a CMS, and I didn't really want a CMS included; emacs and git are the way I'm most comfortable creating content, so the CMS would just be extra baggage.

Fresh was a tech I had recently worked with in relation to HowTruthful. They were just starting to support SSG. Fresh was in the midst of more changes than lume was, but I'd have to deal with those changes anyway while developing HowTruthful. I really like Fresh's use of preact. React has become an established standard, but its synthetic events system is historical baggage that makes it less standards-based. Browsers handle events fairly consistently today. I see preact as an improvement over React. I also see its signals as having the potential to be less bug-prone state management than React hooks.

The idea of being able to write about preact and include working examples in my writing seemed appealing. But I couldn't find any documentation on SSG with Fresh; I think I saw it mentioned somewhere as something they were working on, but lume won out because SSG is its bread and butter.

Implementation

  1. Install https://lume.land/theme/simple-blog/ with --no-cms
  2. Check in the vanilla install (including deno.lock) to easily find diffs later. Include in the commit message the exact install command used.
  3. Remove CMS from the vanilla install; check that in
  4. Set CI up to build gitlab pages on push.