> My Static Blog Publishing Setup and an Apology to RSS Subscribers

// 1046 words // 5 minute read

My Static Blog Publishing Setup and an Apology to RSS Subscribers

In case you missed it, this website is now generated with pure HTML & CSS. Well, I guess generated isn't the proper way to describe it anymore. More like written.

No more Markdown files. No more build scripts. No more Jekyll. Just clean, simple, static HTML & CSS. But more on that in a moment. First, I must apologize.

I'm Sorry Dear RSS Subscribers

RSS feeds are tricky things for me personally. I always seem to botch them somehow with a site redesign or a restructure of my previous posts. Those of you subscribed via RSS were most likely bombarded with post spam when I rebuilt this website. Sorry about that - I know how annoying that can be.

Fortunately, that all stops today. Moving forward my RSS feed (Atom) will be edited manually with every new post I write. Each entry will only feature the post title, post url, and post date. No summaries or full-inline content will be included (since that would involve a great amount of extra overhead). RSS subs will need to follow the link directly if they are interested in the article itself. Hopefully this doesn't anger too many readers...

Again - sorry everyone.

So, What is this New Blog "System"

This publishing flow certainly isn't for everyone and probably seems less flexible than pre-existing static site generators (referred to as SSGs moving forward). For me though, it works really well. I also find it more flexible than most SSGs.

There are a couple articles that explain the reasoning behind this system better than I could (plus, why would I just repeat the same points?):

So, what does my blog-posting system look like?

Simple Explanation

  1. Copy an existing article's HTML file
  2. Change file name, edit the page title, heading, post date and comment link
  3. Write the new article content
  4. Make manual new entry in RSS feed
  5. Save changes, push to git repo
  6. Sync new file(s) / changes to remote server

Pretty simple, eh? Let's break things down into greater detail though...

Enjoying the content? Consider supporting my site by contributing to hosting costs!

My goal is to keep this blog advertisement and tracker free - forever. So, if you're feeling generous, please consider donating to help pay for hosting via NearlyFreeSpeech.NET.

Donate (code: tdarb) // View Contributor List

Now back to the article...

Detailed Explanation

Text Editor

I code and write everything pretty much exclusively in Sublime Text on my MacBook Air. I know - it's not a fully open source editor, but I just love how incredibly fast and intuitive it is. I used VSCode in the past but ended up requiring far too many plugins to get things setup just the way I like it. Sublime Text works best for me even right out of the box. (I still need Emmet and some theming changes, of course).

I perform the following for a new article:

Once the article is complete, I add a static entry in my feed.xml and run a crude rsync script - more on that below.


Normally I would just pull, commit and push directly in my Terminal - but lately I've really been enjoying my time using Sublime Merge. I'm a sucker for visually appealing GUI applications and Merge is the perfect balance of simplicity and beauty. I highly recommend it.


This blog is now hosted through NearlyFreeSpeech. I could easily opt for a free service like Netlify or DigitalOcean Apps but I feel it's important to help support communities that align with some of my own core beliefs. From their about page:

NearlyFreeSpeech.NET is about three things: fairness, innovation, and free speech.

Hard to argue with those principles. Also, if you're feeling generous, I'd greatly appreciate anyone who considers contributing to offset this website's hosting costs through NearlyFreeSpeech (code: tdarb). No money is directly handed to me - it simply pays NFS directly for hosting fees. Only do so if you feel like this humble blog of mine has helped you in any way :) - no pressure!

NFS gives me server access via SSH (and even SFTP if I so desire) which makes things fairly simple to sync my local files with production code. This is handled via rsync with a very basic script:

rsync -vrzc --exclude '' --exclude '.git' --delete ./ username@my.remote.nfs.server:

The included parameters ensure only files with a conflicting checksum are updated on the server, instead of re-syncing all the files every time the script runs. That would be overkill.

Closing Thoughts

I love this new setup. It's portable, lightweight, has zero dependencies, and gives me the opportunity to write directly in HTML. Some may find this workflow idiotic or cumbersome - but I couldn't disagree more. Site wide changes can be made with simple Find/Replace actions or even whipping up a very basic script. Things only need to be as complex as you wish to make them!

At the end of the day, whatever helps you be more efficient and gets you producing more content is a winning strategy to in my book. Who knows, maybe I'll even inspire one random reader out there to do the same :)

Leave a comment

To make a comment, please send an e-mail using the button below. Your e-mail address won't be shared and will be deleted from my records after the comment is published. If you don't want your real name to be credited alongside your comment, please specify the name you would like to use. If you would like your name to link to a specific URL, please share that as well. Thank you.

Comment via email

Comments (8)
  1. Luke Harris
    Hi Brad. Yes, this broke the RSS feed for your blog, but my RSS reader comes with a parser that will pull the text from the webpage and render it inside of my RSS reader, so no worries there! I've had to use it for many of the feeds I'm subscribed to because they only give the summary or description..

    I'm glad to see a fellow Sublime Text and Merge fan.

    I'm looking forward to reading more about your blog setup in the future. I've seen blogs using static files before, but the problem I've noticed is that the design or structure can quickly get out of sync.

  2. m31271n
    I'm an RSS Subscriber. That's fine. Everyone makes mistakes. Have a good day!

  3. John
    So much can be achieved with just pure HTML & CSS, personally I love it, adding a search function is the only problem I have encountered. (or maybe I just don't know how to do it!)

    • Simone Silvestroni
      @John I implemented both a JS solution in my Jekyll-based site and a no-script one using DuckDuckGo. It's simple and effective

      Also, back to the article and a comment by Luke Harris: I too am a happy Sublime Text user. Always glad to find out other devs using it :)

      • John
        Hi @Simone Silvestroni, that looks like it would work great for my needs, thanks!

  4. Simone Silvestroni
    Hey Brad, I've been reading posts similar to yours for a while over the last few months, which makes me utterly happy and hopeful for the web's future. Since I've started coding and designing for the web in the late 1990s I've seen this industry slipping into something completely different and not funny anymore.

    I hope it never stops. Having our own independent websites, connected in a Fediverse as seemlessly as possible — that's what I hope it would become a unstoppable wave.

  5. Matthew Graybosch
    Hi, Bradley. I know you've gone all in on hand-written HTML, but if you ever want to incorporate templates again without using server-side includes or a static site generator, the W3C has a suite of Unix tools called HTML-XML-Utils. They're documented at The tool for includes is called hxincl, and works in similar fashion to BBEdit's includes.

    • Bradley Taunt
      @Matthew Graybosch, that looks pretty interesting TBH. Currently I might be working on rebuilding my blog with Markdown and pandoc... More on that later ;)