Reducing the friction of publishing online?
I'm looking for ways to make it easier to publish on my personal blog. I've had WordPress blogs in the past, and I find that they set up a constant grind of upgrading — upgrading core, upgrading plugins, reconfiguring the upgraded components, fixing the things the upgrades break...
It was stealing too much of the little time I have to devote to my blog. So, when I built my current blog, I built in on a static site generator (11ty). It took longer to set up than just writing HTML and CSS, but it does make it a bit quicker to get something up since it will build pages from markdown, and it doesn't require a ton of upgrading every time I want to sit down and write something. Sure, I could upgrade a library or two each time I sit down with it, but it's just spitting out HTML so I don't really need to.
That said, it's still more friction than I want. I'm currently obsessed with mmm.page. I love the playful UI. I love the design language it encourages. I love how it makes the tech get out of the way and puts you closer to getting your content out. That said, there are several things I don't love:
- It's not accessible. I can't pick which elements to use. I can't write alt text for images.
- It's not open source. This means a lot of things. It means when the developer loses interest, it will die. It means we can't evaluate it. It means we can't self-host it. Speaking of these...
- Development seems to be slow. There's one item on the roadmap. It was suggested in April. I have a feeling it's not making the money the developer had hoped and they've lost enthusiasm for it.
- We can't self-host it. Now, this means I'm stuck paying $10 a month. Tomorrow, that could go up to $20, and there's nothing I can do about it.
- There's no easily apparent escape hatch. I guess I could just download the pages it wrote and host them elsewhere, but that's probably not ideal. If the developer does decide to close up shop or double the price, I want an easy way to take my site and go somewhere else.
- As far as I can tell, it doesn't support RSS. I am a staunch believer in RSS, and I believe the web sucks without it. I won't want to run a site that doesn't offer it.
All these problems leave me with a web site that provides too much friction and a solution to that problem that leaves many others in its wake. Does anyone know of an alternative that's similar that could address some or most of these issues? I'm a developer and I still would like to be able to publish online without doing developer-y stuff, so it's easy to see how social media has been able to bottle up so much content on the web. I'd love to think there's something that could bring us out of this dystopia... or at least make it easier for me to share a list of the games I've been playing recently. 😅
What I’ve found to have the lowest friction possible without compromise is a static site generator, GitHub, and Netlify.
I write my blog posts, make a commit, then push to GitHub which triggers a Netlify webhook which then generates the site. The whole process takes a couple of seconds and is pretty smooth once it’s set up. As a bonus, my blog benefits from Netlify’s CDN which makes it that extra little bit more responsive for readers.
I do my writing in Obsidian, which is not just a mind dump/org tool but a great markdown editor.
Some dev-y stuff still required, but it’s minimal and anything less dev-y I’ve seen comes with tradeoffs like you’ve listed.
I just use a simple rsync command in a Makefile to upload the site generated by Hugo to my server, that way I don't even have to go through the hassle of GitHub actions or anything.
I've been using Hugo for almost a year now, and it's the best SSG experience I've had. The initial setup is quite daunting because you can't really start making a theme before having contents and vice versa, but once you're out of the chicken and egg problem it's great.
I started with Hugo but migrated to Zola because I couldn’t figure out how to set up custom syntax color schemes with Hugo. In Zola you just drop a .tmTheme file like is used by TextMate and Sublime Text in a folder and point to it in a config file.
That rsync method does seem pretty simple, but with Netlify there’s no need to set up GitHub actions. You just connect your repo in the Netlify dashboard and tell it what SSG you’re using and the rest is automatic.
I had the same kind of issue with syntax color schemes: the DNS highlighter didn't work as expected (domain names were highlighted in red, indicating an error), but a contribution to Chroma, which Hugo is based on, solved everything.
Would you mind elaborating a bit RE the steps between Obsidian->GitHub->Netlify? Do you end up storing the MD files in GitHub, or is it the generated static site that gets committed?
Obsidian “vaults” are just folders of markdown files with a hidden config folder, and so I opened the Zola folder that is my blog in it to make it a vault. From there I create and edit markdown files to make posts and pages.
The Zola/blog folder is also a git repo. When I’m happy with a set of changes I make a commit and push it to GitHub.
In Netlify, I have that GitHub repo registered which triggers a webhook when a new commit is pushed to master. This kicks off the generation step on the Netlify server, after which the generated site is automatically deployed.
So the generation happens with Netlify, not on my machine. Netlify knows the command to run because you specify your SSG when setting up the webhook (if your SSG isn’t listed, you can specify the command in its configuration).
Thanks for the detailed reply! I was able to get through the basic Zola tutorial and it produces a very basic looking site. Do you use a Zola theme with your site, or do you roll your own templates?
I use a customized version of a pre-existing theme, but for the sake of anonymity I’d rather not link to it.
No worries, was just curious. I think I found one that I like anyway. I appreciate the help, thanks!
I don’t have any experience self-hosting it, but I’ve used the WriteFreely platform through write.as and think it’s splendid. Very minimalistic, but also has neat features (like RSS and .epub export).
I too have been frustrated with not being able to find the Goldilocks blogging tool. I don’t want a million features and complexity. But I also don’t want something that I duct tape together. I was really excited to come across this on hackernews a few days ago. I haven’t used it yet, but it really looks like exactly what I have wanted for a long time to reduce publishing friction. It appears to be be lovingly supported by a very active dev and I like the look of the example sites using it. Curious what you think of it!
https://blot.im/examples
https://blot.im
This thread is interesting. I made a minimalist blog system once just to learn something. I was tempted to polish it up and offer it as a paid product... but then I was like "Nah, people would never pay for that, there are too many free options". I guess this is just another case of me being proven wrong.
Both paid platforms mentioned by @gravitycat and @kfwyre look really nice, thanks.
Over the years I attempted to start a site many times. Most of the time I failed because I set expectations too high for the features I wanted in the site and I really ended up creating a tech project for myself rather than a content creation project.
To be fair, for a few of those sites the difference between the content and the tools was slight, and this was years ago before so much of what we use now was baked into sites so easily.
The most successful run I had was when I just went with Ghost, used the docker image, slapped it into ECS on AWS and started crashing out content. Need to upgrade? Docker pull, docker push, restart task. That worked great and eventually I wrapped up the project as a success.
If that is too much, they offer paid hosting starting at $10/month. Ghost supports RSS.
So my suggestion here is make sure you really want to make a content stream. If you do, then get whatever simple solution in place works and start cranking out articles. Or just start writing them in a word editor now while you get the site going. Because what I realized during my false starts was that I liked the idea of the site more than spending the time making the high quality content. What I really enjoyed was dinking around with the tech.
The most successful site I ran I spent almost no time on the tech, but hours and hours on the content.
Yeah, I get that. I'm kinda caught between these two sides right now. I don't really want to just tinker with the tech, but I do want some of the features only that approach offers. The reason I'm here posting is that it doesn't seem like it has to be this way… but maybe it just is, for now, at least.
Still hopeful someone will come along and say, "Oh, you just need to install ______."
I'll throw my vote to giving Ghost a quick try. It looks like there is a live demo site.
https://play-with-ghost.com/
I really liked the simplicity that Ghost has when writing content. You can easily add content blocks and select for each one the type of format, like markdown, etc. I set it up in AWS using AWS native services and automated the cert renewal with let's encrypt. But I think you will have some setup for anything you self host. If you want to avoid all of that, but want the rich features, then a $10/month hosting is probably about the ballpark you'd get for most services.
I use bear blog and chose it (instead of SSG/netlify/anything else) specifically as a way of reducing fiction. I use it for garden161 - blog posts here
To be fair, it specifically fits the way I look at the web, and the types of posts I wish to write, in that I do not need many features, and strongly prefer the extremely lightweight approach. There's not a ton of customization, though you can do a few things. But that was the point- instead of chasing all sorts of options this allowed me to be done with that, and just create and write.
FWIW, despite it being so minimal, it does have RSS. You get a few extra features going from free -> $5/mo
Mataroa is a similarly-opinionated competitor. Its pro version is $9/mo
These both look great, thanks for sharing!
I've been using GitHub Pages for a good 10 years now. It's needed very little work, has been very stable, and is completely free.
Jekyll isn't anything amazing, but it's reliable and pretty well documented at this point, and it's very easy to find nice themes for. I think now GitHub Pages prefers the use of GitHub Actions it's pretty easy to swap it out for any other static site generator, but really I quite liked the original limitations since they kept me from spending more time fiddling with the site than writing.
Don't take this suggestion too seriously, but in the end I found just writing my own blogging software worked the best. In the end, blogging is just about the simplest type of webserver, and you can get something that takes in markdown stored in a sqlite table, renders it, and sticks it in a html template with not much effort - I often found myself spending more time reading arcane docs about whatever particular static site generator I chose when I wanted to do anything off the beaten path than I would've spend just writing my own, and knowing everything about it.
Another major frustration I always had with SSGs is just the UI of adding new content. If I have to make a git commit and push, or SFTP a markdown file, or any of that to write a page, I'm just going end up not. I want to be able to write and edit from my phone, tablet, work computer, library computer, whatever. A non-static site can have one of the many already made JS markdown editors plugged in no time, and then you can write effortlessly.
I write an article, run Hugo to generate the site, and push it to Cloudflare.
Maybe a dumb question, but is there a way to do an incremental push? That is - when I update my site with Hugo, it regenerates the entire site, and I have to push the entire site up to the server, even I've just made an edit on a single page. Is there some way for Hugo to output only those files that have been changed?
Cloudflare has a command line tool called wrangler that pushes only the files that changed. When I change something, I just run
I feel you - I looked at Eleventy and tried working with Hugo, but it felt rather complicated for a simple portfolio site I wanted to create, and while themes are great, working and customizing them felt like an entire other layer of technology to learn.
So, I just ended up going with Pandoc for the simplest and easiest approach.
I write my site in Markdown, using VS Code. I use a build script to use Pandoc to turn the Markdown files into HTML while referencing a CSS file. Currently, the build script is just:
(Now that I think about it, I should upgrade this script to use the html files in the directory rather than handcoding the paths, but that's not particularly important at the moment.) I then use reflex to run the build command whenever any markdown or CSS files change. Finally, I run the Live Server VS Code plugin so it hosts a live preview of my webpage - whenever the HTML files are built, it will auto-refresh the browser preview.
From there, I just upload it to my web hosting service when I'm ready.
That's basically it, and does basically everything I need, giving me a nice, auto-refreshing preview of my website. It allows me to focus on writing the content and making easy-to-see tweaks to styling, and re-use common elements across sections or pages.