There are a ton of good static site generators out there. My blog[0] runs on Jekyll[1]. Hugo[2] is a popular option. I've fiddled with Gatsby[3] and heard good things. Eleventy[4] looks as close to Jekyll-but-in-JavaScript as I've seen.
Since you want to be able to customize it, I'd probably take the static site generator's language into account. Do you like...
Ruby? -> Jekyll[1]
Go? -> Hugo[2]
JavaScript? -> Gatsby[3] or Eleventy[4]
Some other language? -> google "[language] static site generator" and see how many GitHub stars it has.
Once you've figured that out, most of the hosts support custom domains. Netlify[5] is free, and works very well. It's what I use currently. I used to host my site on DigitalOcean[6], but Netlify is definitely more painless, especially from a devops/patching standpoint. Plus it has a CDN so your site would be faster.
that said i'm not sure how it fares wrt to plugins, i think it's pretty vanilla in terms of user-facing features (though plenty of very straightforward theme tweaking is possible).
Rarely have I seen interesting discussion happen in the comments of a personal blog. All great discussion is held in aggregators like HN.
Similarly search is best left to specialized platforms such as a search engine. Blogging software may have decent search by why recreate a search engine when duckduckgo.com will far exceed capabilities with site: and filetype:?
For me a personal site and blog are mostly single visit kind of stops. I end up on a blog via a link but almost never do I feel the need to read the top 5 best posts of some blog. I got some interesting information from the current article but then I’m of to the next link that shows up in my feed.
In my opinion a website needs readability[0] and an ATOM/RSS feed. All the rest is part ego ("my content is so great people just have to see what else I wrote") and part feature creep.
[0] https://www.sinax.be/blog/general/guidelines-for-spartan-web...
>Rarely have I seen interesting discussion happen in the comments of a personal blog.
I disagree with this and even more so if we are talking about programming blogs. A lot of interesting discussions and rebuttals happen in the comment sections.
Regarding outsourcing search to a dedicated search engine, its a mixed bag. 99% of the users don't even know about the `site:` and `filetype:` stuff. You also have the option of embedding Google site search but the first four results are ads which isn't very ideal. Wordpress search is decent out of the box but if you want something advanced, it has some nice plugins that allow advanced searching with fuzzy matches.
What I've found to work well for commenting is to put an e-mail address on the page where people can send their comments. When there is a good comment, I put an update in the article.
The main advantage of this approach is that it weeds out garbage responses. By making it ever so slightly harder for people to post a comment, they are forced to take an extra few seconds to consider if they really have something meaningful to add.
I had once thought about a different approach - Creating a Google form (for each blog post) and then embedding it on the blog post. Then whenever anyone submits a comment via the form, it would get saved to a Google spreadsheet(this needs to be made publicly readable). The unwanted comments can just be deleted from the spreadsheet. The contents of this spreadsheet can then be obtained in a JSON format and displayed on the blog post using Javascript.
A difference could be that, with a 1st party commenting service, your whole blog might get banned, instead of only the comments. (Depending on how banning gets implemented.)
Also, Ghost doesn't even have a commenting service of their own and one would need to rely on Disqus to add comments on a Ghost powered blog :)
Anyone can ban you, even your hosting company. In practice banning is pretty rare.
> I might as well just use Disqus or Facebook comments that I can embed on the site
And you will contribute to unethical tracking practices even if your users are not logged in to Facebook or Disqus[1].
[1] https://replyable.com/2017/03/disqus-is-your-data-worth-trad...
>And you will contribute to unethical tracking practices even if your users are not logged in to Facebook or Disqus[1].
I don't care much about that because one way or the other one of the tech giants is going to track us anyway. I would much rather install Google analytics and get a great overview of my visitors. I don't think anyone who is an active user of the tracking behemothos Facebook or Google(which represents most of the internet users) should be concerned about tracking.
But coming to main point, I am actually against Disqus or facebook comments. I prefer plain old self hosted comments(wordpress) for other reasons and this solves your concern as well.
If you moderate a subreddit it's extremely unlikely a ban would happen since you have control over the content.
But hey, I get it, you like Wordpress.
> saved to a Google spreadsheet(this needs to be made publicly readable)
Hmm, then, people's email addresses cannot be remembered, meaning, no reply notifications?
In most cases this means tapping on the link and typing the response. Mobile OSes make it pretty seamless.
I wouldn't go with Wordpress or any other CMS unless I absolutely needed permissions for multiple authors and such or if the author couldn't handle writing markdown and using a terminal command.
>if the author couldn't handle writing markdown and using a terminal command.
I would say this represents more than 99% of the bloggers. Even I prefer a WYSIWYG interface to markdown any day even though I consider myself somewhat tech-savvy. I find markdown to be very hacky when its a bit more than just headings and paragraphs(eg. nested lists with ordered list inside unordered list are so hard to do in markdown)
Searching should be left to Google. I'm skeptical blog users actually search on a site though I admit I've never seen any metrics about that.
If you insist on having comments on your site and force users to sign-in etc this can be easily implemented with an API and some client-side code.
> I would say this represents more than 99% of the bloggers.
This thread is about HN users, not the general population.
> I find markdown to be very hacky when its a bit more than just headings and paragraphs(eg. nested lists with ordered list inside unordered list are so hard to do in markdown)
Well, no wonder you prefer Wordpress.
They do, please be assured of that. There is a reason companies like Algolia exist to provide better on-site search.
>If you insist on having comments on your site and force users to sign-in etc this can be easily implemented with an API and some client-side code.
Yes or without signing up and just commenting as guest. Welcome to Wordpress :) (And if I have to build another API just for comments, doesn't it defeat the simplicity of using a static generator like Hugo?)
>This thread is about HN users, not the general population.
I am not sure where you got that from? The author never said he was going to create a blog targeted for the HN crowd or anything like that. Maybe I am missing something?
>Well, no wonder you prefer Wordpress.
At least you acknowledge markdown's inferiority in this case.
There's still few every year https://wordpress.org/news/category/security/
And that's just the core WordPress. Plugins and themes carry their own issues. Reputable or not.
Also static generators aren't as convenient as WordPress is. I'm OK working with markdown or hacking the code, but it's too difficult for my wife, for example. So, she's running a WordPress blog.
Commenting is also better on WordPress. She used to use Discuss for commenting and people are more to reluctant leave Discuss comments than to leave WordPress comments. I believe that's because you don't have to register to leave a comment in WordPress - just type your email and you're ready to go.
None of them do anything novel, or particularly better than all the others. They just have some quirk that makes people choose them. "This one is a static binary!" "This one uses a specific programming language!" "This one uses a unique templating language!"
Would having a dedicated, generic standard for templating even be possible? Something with extra standards for specific uses, so you could just learn the extensions that are useful for your particular application? Maybe that would eliminate the need for 1,000 identical-but-incompatible solutions.
After a while, what you actually want is a CMS, but the good ones usually are not free.
In my case [0] because I wanted to generate the site from a single Markdown file. I wrote a Perl program to accomplish this. Then I got bored and wrote a Python version as well. And it works, I have kept up posting to my blog [1] for 150+ days since it went live.
Did you consider pandoc?
It's been running like a charm for ~1 year.
If you go with the managed hosting route, most companies handle security and updates for you, so you can focus on writing and leave everything technical to someone else.
I am working on one myself — and have a private beta running, if you are interested [2], —, but of the top of my head, some companies that will go above and beyond as far as WordPress is concerned, include Kinsta [3], Pantheon [4] and Presslabs [5]. The last one is based in Romania and open sourced a bunch of their stack, worth checking out.
[2] Just email me at help@madpony.co for information
I will never, ever, ever advocate for running Wordpress for much of anything, but I would also argue that any nontrivial piece of software has a fair number of security issues and that Wordpress vulnerabilities are particularly visible because of how widely used it is and the public-facing nature of the software.
If after a week of coding you arrive to the weekend and think "I want to do a bunch more coding" then you go with a static site generator. Then you don't finish over the weekend and have to screw with it the following weekend as well. Then you finally publish the thing with "good enough but not quite what you wanted" functionality and let it sit there for weeks. Then you come back to it and scratch your head trying to remember how to publish / build / deploy it (or you cycle through your shell history hoping the commands are still in there.) One day you decide that you want to add that functionality you left out the first time and find that you have to relearn everything you had to learn to build the thing in the first place. Sure, you vaguely remember the easy stuff, but you have to refresh on the easy stuff to get back to the harder stuff which you never had time to figure out from the beginning.
Anyone been there? ;) In this case, I'm thinking of Hugo, but I imagine it's much the same for all the others.
With Wordpress you get enough balance of customization and ease of use that you can just get on with it. If you need a bit of help, then get on Fiverr or similar and have someone throw you pointers (or just do it for you) to save you time in getting past tricky parts.
There's a reason loads of sites on the internet are using WP. People use it to GTD and move on to something else.
Cost is essentially free since it piggy backs on a VPS that would otherwise be running anyway.
I have WP sites. I have static sites. i HATE the WP sites despite how much easier they are to use, because i'm constantly dealing with spam and BS hacking attempts (sometimes successful).
Add your content to the `content` directory. Then run `python3 makesite.py` to generate the static blog. It writes the generated blog to the `_site` directory. Finally copy this directory to wherever you want to serve your blog from, e.g., GitHub repo with GitHub pages enabled, virtual private server, cloud storage, etc.
It works pretty well out of the box and it is highly customizable too because doing so involves just modifying the existing Python code or writing your own Python code.
Disclaimer: This project has been written by my wife. I use it myself to render my static blog at https://susam.in/.
Aww... That's so sweet.
Self-hosted Ghost is a pain in the ass to maintain.
Disclaimer: the above is my own experience, and not necessarily that of others.
I ran into several problems writing Ansible automation to spin up and configure a Ghost server. Eventually I gave up and used a different blog engine that was more amenable to automation.
Granted, this may just be a low motivation on my part to use Ghost, in favor of just getting something up and running.
Easy to set up and try and you can customize it as well. With lots of plugins for everything.
You can go with the paid WordPress.com and they will handle all the updates for you.
Static sites are good but when it is time for SEO and customisation you will realize that it can get really painful in a static site generator.
My experience has been quite the contrary. I've found it super easy to get good SEO with Jekyll sites.
What have you found to be painful?
care to explain? because that makes _no_ sense to me. SEO is primarily about content these days. The little "add this tag for SEO WIN" type things stopped being useful years ago. Have a good title, have good content, link your stuff well, update regularly: success!
I recommend [1] hexo, for it's simplicity. You can write in markdown files and generate a static blog for static hosting.
But [2] Gatsby is another similar framework, but it uses React.
[1] https://hexo.io/
It is freeing. Anything is possible, and nothing is in your way. It really doesn't take that much time.
https://github.com/pauldotknopf/pauldotknopf.github.io/blob/...
Solution: build on WordPress, use wget to pull a mirror, serve that as a static site. This is way more common than you may initially guess.
Posts are written in Markdown with simple formatting, templates are HTML/CSS with Jinja2 templating, and it includes support for things like automatic table-of-contents generation for posts, blog index pagination, tags, related posts (manually tagged, for now), comments (using utteranc.es and GitHub issues), and automatic image compression/scaling/caching (between builds). Eventually, I intend to add things automated 'related posts' list generation, but haven't gotten around to it yet.
[0]: https://github.com/ggoss/sitegen
There are literally tens of thousands of themes - open source and commercial - that you can try out in a matter of minutes instead of wasting days or weeks designing your own theme.
You rarely have to code stuff by yourself because there is a plugin for any functionality you can imagine.
Latest version of WordPress comes with the new Gutenberg editor which I'm personally not a huge fan of as it obfuscates too much of WordPress' inner workings. You might, therefore, want to use the Classic Editor plugin as a solution.
If you haven't already bought a domain name, I recommend Porkbun. Moved several domains to them in the past months and have found them to be cheap and yet reliable straight shooters.
[0] My list of must-have plugins: Yoast (for SEO), Autoptimize (caching/performance), Wordfence Security (multi-layer security).
I publish my blog as a static site served by nginx on a $5 / node (which also hosts a dozen other things—I don’t get much traffic). Every once in a while I ssh in and run an apt upgrade but no updates to manage beyond that. I use https://getstatik.com/ to generate the site from markdown files. I’m surprised it hasn’t caught on more given how flexible it lets you be with defining how your site should work. The whole thing is stored on git and I can deploy with a push to my server remote.
That said if you want to focus on writing I would start with something as simple as ghost of medium to see if you’re actually as into writing as you think.
After around 10 blog posts, I just wrote my own static site generator: https://smalldata.tech/blog/2018/08/16/building-a-simple-sta...
Most importantly, what works for me is just writing in HTML. It is more expressive than markdown and the browser preview _just works_ (including displaying images and/or running inlined js if certain posts require it)!
I use WordPress for personal blog, which consist mostly of links, highlights from books, photography, and stream of concise writing.
And I use Hugo for my professional website with a few blog posts but it is mostly focused on resume.
WordPress makes it super easy to share content via its app or bookmarklet on computer. Writing experience on WordPress editor is okay. I get average of 100 visitors per month but don't get any comments. I leave comments turned on because if I want to add a note when using someone else's machine, I can. Otherwise, I would turn off commenting and reduce one risk vector.
For Hugo, I use dedicated writing app, iaWriter[0]. It is definitely better experience of writing. My Hugo blog also has a private area where I write my fiction projects or write private notes. Of course, Hugo has no comments or search. Not really important for me. You can easily modify Hugo template to your liking but stuff like scheduled posts, automatic sharing on social networks, related posts, etc is not easily doable.
Based on the fact that you want to focus on writing, I would suggest Hugo with a good writing app. Of course, you can write blog posts in any editor and copy paste into WordPress or wherever.
I am now planning to instead build a new wordpress site and self host somewhere cheaper. WP is a PITA from a security point of view, but the alternatives are IMO uniformly terrible. WordPress just works and has a good ecosystem of plugins and themes.
I was really disappointed with the static site generators. I’d love to write one that works as I’d expect - a simple way to turn markdown into a site with a single config file and python command, no complex setup, no using git as a package manager etc. with a ready set of auto-generated based on themes for other packages - but this will be a future project.
It would look something like:
/pages - contains markdown pages /posts - markdown posts /themes - one subdir per theme /output - generated html
To generation html “ssg” in the root dir.
The themes would be anything you like, with very few template tags. The markdown would be translated to simple html and inserted in the files.
pip install ssg
create a page in /posts with a title and body
ssg
open output/index.htmlI find Gatsby and Hugo very powerful; but miss the simplicity of Jykell. Even if you don't think nextjs is great for blogging, it's still worth checking out! Their docs + getting started guide are some of the best.
For example; writing up a small MVP site to test out a business idea (https://www.hiredsomehelp.com/), it's in progress, but even still, only took about 15 minutes to push up via netlify.
That being said, I feel like all these new static site generators are terrific; a real sweet spot in web development in my opinion :)
Stay the hell away from Wordpress. It. Will. Get. You. When you least expect it ️
I wrote 5 articles that I thought were interesting. Then I bought a domain name, wrote a php script to serve them. (If url1 do x, if url2 do y) nothing fancy.
Only when I saw that I could sustain writing regularly I started worrying about the platform. And there is no best platform, only the one you are familiar with.
A Hugo static website on Github.
Netlify hosting that Github repo.
It's really turnkey and zero maintenance, and free.
https://sergio.dev/posts/genserver-webcrawling-in-pure-elixi...
Can use it with your custom domain, pretty customisable, and since its a static site, relatively secure.
Downsides: all the code is on github but it’s not technically open source. I forget what the license is but it’s not MIT or anything like that.
It also technically costs money. The maintainers let you download a working basic site and never nag you about paying. It’s an honor system.
This is assuming you are willing to pay for at least your own server. Their hosted option is also great and highly recommended if you want to just start writing before thinking of customizations.
I find static site generators to be awesome but generally a hindrance to the flow of wanting to start writing spontaneously. More often than not, more time goes into figuring out the perfect workflow for the blog system rather than writing. Caveats, YMMV etc apply :)
If you look at the various options being suggested in the comments here you'll see many of them don't come with comments out of the box. Jekyll, Gatsby, Hugo, 11ty all require you to use a third party service or roll your own.
Yes none of those static site generators support commenting, making them not very suitable for blogging(they dont even support searches). That is why I am not a proponent of static generators as a blogging platform.
Like the GP, I was also under the impression that Ghost doesn't support commenting by design but you are suggesting otherwise. I find it hard to believe that adding commenting system(something that all major CMSs have had since forever) would be that technically challenging that it hasn't been added even six years after its first release.
when i just want something i can setup with minimal hassle, i have always loved GetSimple (http://get-simple.info/) although i imagine mentioning a flat-file platform will probably elicit some reactions - flat-file meaning it doesn't use a database to store content, but instead simply stores the data, encrypted, in actual textfiles on your webserver. when i was using godaddy as a host, their mysql db's were always a bit laggy, and something like wordpress would always have that extra, noticeable pause during loading that bugged me to no end. getsimple with the blogging plugin was always faster, configuring it was easy, and i didn't have to stray too far outside my limited knowledge of html/css/php to play with the styling and theming.
Sure, you could use something more custom, but you'll just spend more time coding rather than writing on your blog.
I'd actually recommend writing in plain html+css at first, and then moving over to a static site generator once you have ~10 posts. You'll have a much better idea about what makes a good system at that point.
(I wrote my own static site generator after ~100 posts, which is longer than I'd recommend going!)
If you don't care as much about customization or plugins, then WriteFreely is quite nice.
If you're willing to put in a fair amount of coding and design effort, you could use a static site generator, backed by Netlify as the host.
It puts the content in the git repo so that your SSG can read from that. Then your CI can trigger a build and deploy after each push to the repo.
Simple, clean, fast. Updates and viruses are a non-issue.
Depends what plugins you're talking about, but if you're a non-programmer/dev type, then you're probably better off using Wordpress as a blogging platform if some serious customisation is wanted.
Trying to build anything beyond a super generic blog is a huge chore. Hugo has a much, much better community IMO
I'm amazed that they got funding for it...
That said, I am happy to hear I'm not the only one with this sentiment.
https://github.com/getzola/zola,
and, looking at the readme, a bit more features than Hugo, e.g. built in search (how does that work?).
In such case, html+css might be a good choice for you. Using static site generator could make it easier to maintain your blog. I personally like Hugo due to its speed.
But Blogspot as a blogging platform is still a viable choice.
tl;dr: I ended up using eleventy with tailwindcss.
It depends what you are comfortable with...
There are a few blogging sites (their names escape me at the moment but are similar to https://write.as) that seemed interesting. Again, I did a quick search but couldn't find the one I had in mind.
My preference is python, so naturally I looked there first. I can't remember what happened to pelican, why I didn't go for it. Nikola seemed nice until I started reading the documentation. I also looked at some that were further down static gens list. But something was missing.
Jekyll has great documentation, but there are a lot of moving pieces. You can make it into a full fledge website that has a blog, or make it into a blog - quite easily. It seems that whoever states that Jekyll is geared towards creating a blog..... who knows why?!
Played around with Hugo last year and meh...
Now, I don't know how much looking into different ssg influenced the ease it was to pick up eleventy, but it just made sense. It's a bare bones static site generator that - just works. There are several blog posts that will get you up and running quickly. There are several skeleton GitHub repos, some use tailwindCSS, some have netlify Cms already configured, some are plain. Or you can just build your own.
Another I picked it, which is on a personal level. Since it's such a well structured, bare-bone project, its helping me learn/practice JavaScript and it's ecosystem. npm scripts is all you need.
All the other tools, gatsby, etc - are great if you already understand react. And even if you don't but are interested - I got the impression (gatsby at least) that it's documentation was good and you could learn a great deal about react going through it. Maybe, I don't know.
Finally... I feel that some projects could do with an overhaul, at least with their documentation. Some parts felt like an afterthought instead of one cohesive, linear explanation. Not an easy task in the least, but what is?
But more importantly, pick one thing and stick to it (unless it proves to be hindering productivity).
Keep your text in md files and host them for free.