The Surprisingly High Table Stakes of Modern Blogs

Bottom Line Up Front: You are probably underestimating how much goes into blogging technology these days.

note: i have rolled up most of these opinions into my own swyxkit starter template.

Reader Experience

And everything should look great on mobile devices and (at least not horrible on) ultrawide monitors.

Web performance is of course a huge part of the reading experience but I’ve put it in the section below for even spacing reasons.

Author Experience

  • WYSIWYG writing (with keyboard shortcuts) - use a CMS? Roll your own? Markdown vs Blocks?
  • If writing in static markdown files, the ability to colocate static files (eg pdfs) next to the file (instead of dumped in a big fat “files” folder with no clue which post it belongs to), and to easily write relative links to them in the markdown that will be transformed to the write path
  • Customizable metadata (with good inference when not supplied)
    • slug
    • publish date
    • edited at date
    • canonical url
    • description
    • og:image
    • layout
  • Shortcodes/Unfurls
  • Image uploads - best workflow is to paste the image from clipboard right into the textbox and have it upload, as Github Issues does.
  • Static data entry
  • Analytics
    • Server side analytics (Netlify Analytics)
    • Google Analytics
    • Privacy preserving clientside analytics (eg Fathom)
  • Mobile authoring/editing experience

Distribution/Reach

Developer Experience

  • Plugin systems for adding every feature above in <10 lines of code (example)
  • Build times should be <1 minute
  • Type safety for data schemas
  • Fast content preview (preferably without having to run a local server)
  • Monitoring/alerting - when your site goes down or a single popular page disappears for whatever reason, who finds out first? your readers or you?

This is often tied with the debate about whether or not the blog should be Jamstack - mostly statically generated and hosted on a CDN, or traditionally mostly generated on request and cached for some amount of time.

Misc

Context

It is often said that one of the best ways of learning a new language, from Ruby to Rust, is to implement a static site generator (fun fact - it was actually my take-home interview for Netlify!). Depending on the requirements, it forces you to learn everything from filesystem access, making network requests, parallelizing code, parsing configs, using libraries, creating plugin systems, injecting javascript, writing a CLI, and deployment.

Because there are accordingly so many static site generators, most people tend to devalue them, in the “I could build this in a weekend” sort of way, and end up building their own blogging platforms every few years as a way to “stay sharp”. But that’s a very 90’s view of blogging technology - and the requirements of a modern Blog has diverged a lot from the basics of static site generation in the past 30 years. In the end, your readers have a poorer experience and your blog may not get the reach it might deserve.

I of course am no exception to this, being maintainer of my own small blog template for the Svelte ecosystem. I am intimately familiar with the modern dev blogging platforms like Dev.to and Hashnode, and these days spend plenty of time reading the many Data Engineering Substacks, and only appreciated how much they do for us that you should not handroll (or should consider building if DIY, because it is genuinely such a good feature).

This is an appreciation I only arrived at after ~5 years of constant blogging, so I figured I should write down what I see as “table stakes”, for you to appreciate when considering your next great blogging platform, without trying to sell you any particular solution.

For what its worth, I do think most people, even developers, should not handroll their own blogs and should try to use Devto/Hashnode/Substack (Wordpress is of course an option) accordingly, because most people get so caught up in being PM + Dev for their handrolled blogging software that they never get to the writing. Try to do, say, 20 straight weeks of regular blogging, to prove that you are actually going to be a blogger, before you spend a bunch of time coding up blog software you end up not using.

The most important feature of a blog is its content - if you write good content, people will overcome almost any hurdle to come and read it. Don’t forget that.

Tagged in: #advice #writing

Reactions: 👍 4 🎉 1
Loading comments...
Webmentions
❤️ 0 💬 31
  • avatar of Alex Kotliarskyi 🇺🇦
    Alex Kotliarskyi 🇺🇦 mentioned this on 2022-08-22

    Captured some ideas about more opportunities here

  • avatar of swyx 🌴
    swyx 🌴 mentioned this on 2022-08-22

    we used truncation marker at temporal but tbh i feel it is kind of brittle. you are relying on the user to remember to add it. much rather design good heuristics into the software such that paginated indexes always look good. (say 100-200 words, with appropriately size image)

  • avatar of Luke Tubinis
    Luke Tubinis mentioned this on 2022-08-22

    Blogs are hard!!!!

  • avatar of Sebastien Lorber • ⚛️ ThisWeekInReact.com 📨
    Sebastien Lorber • ⚛️ ThisWeekInReact.com 📨 mentioned this on 2022-08-22

    Also docusaurus has a truncation marker so that list views only display an excerpt instead of full post. More flexible than only displaying Meta description/frontmatter string

  • avatar of Sai Hari
    Sai Hari mentioned this on 2022-08-22

    I did the same thing! Realized I was spending more time building the blog than I was writing content for the blog. It was an easy switch after that.

  • avatar of swyx 🌴
    swyx 🌴 mentioned this on 2022-08-22

    i added most of your stuff but could you elaborate on what to look for in "list/details, archive"? i suspect i dont understand that as well as you

  • avatar of Sebastien Lorber • ⚛️ ThisWeekInReact.com 📨
    Sebastien Lorber • ⚛️ ThisWeekInReact.com 📨 mentioned this on 2022-08-22

    Also paginated tag blog list 😅 blog.johnnyreilly.com/tags/react

  • avatar of Sebastien Lorber • ⚛️ ThisWeekInReact.com 📨
    Sebastien Lorber • ⚛️ ThisWeekInReact.com 📨 mentioned this on 2022-08-22

    Blog of @johnny_reilly is a good example Homepage is list blog.johnnyreilly.com Blog post is details Archive (un paginated) blog.johnnyreilly.com/archive</

  • avatar of swyx 🌴
    swyx 🌴 mentioned this on 2022-08-22

    will add! but some of these are scale-only problems

  • avatar of Sebastien Lorber • ⚛️ ThisWeekInReact.com 📨
    Sebastien Lorber • ⚛️ ThisWeekInReact.com 📨 mentioned this on 2022-08-22

    I can also see a change in the algo in the last 3 months. And apparently others too As I do weekly curation Twitter threads, they all look the same from one week to another, so an algo change is easier to notice for me.

  • avatar of Sebastien Lorber • ⚛️ ThisWeekInReact.com 📨
    Sebastien Lorber • ⚛️ ThisWeekInReact.com 📨 mentioned this on 2022-08-22

    Some other things worth mentioning: - pagination, list/details, archive - multiple authors - next read reco - static embeds (perf) - content partials, import/transclusion - i18n - avoid dark-mode FOUC

  • avatar of Max Lynch
    Max Lynch mentioned this on 2022-08-22

    Engagement on non-hot takes or politics has gone off a cliff Definitely thankful for a large and healthy mailing list

  • avatar of Sebastien Lorber • ⚛️ ThisWeekInReact.com 📨
    Sebastien Lorber • ⚛️ ThisWeekInReact.com 📨 mentioned this on 2022-08-22

    also Twitter seem to have changed a bit recently, not in a good way

  • avatar of Neville Medhora
    Neville Medhora mentioned this on 2022-08-22

    That stat is likely bc Tweet is promotional in nature and has a URL in it?

Subscribe to the newsletter

Join >10,000 subscribers getting occasional updates on new posts and projects!

I also write an AI newsletter and a DevRel/DevTools newsletter.

Latest Posts

Search and see all content