A lot of people often want to start something new that they could share with the world. Be it their knowledge, be it their passion, their collection of things or they simply want something to share with the world. Blogging is the easiest and most accessible solution to this sharing problem.
Starting a blog involves a lot of decisions, including but not limited to:
-
choosing a name for the blog
-
finding a suitable domain name
-
choosing a hosting provider
-
selecting blogging platform
-
selecting theme for the blog
-
adding extra functionalities
-
choosing a good naming scheme for posts1
-
search engine optimization, monetizing, promotion, regularly updating etc.
But a lot of people often skip some of the parts and just start with writing blogs (and later regret their decision). I also struggled with the same decisions while starting my blog. Because I already had domain name and a hosting for my other domains, I was left with lesser decisions to make.
The most difficult for me was choosing the platform for my blog. There are a lot of platforms available now to choose from, a quick google would show you available options. For example, you can choose WordPress, Drupal, Joomla, Medium, Blogger, Tumblr, Hugo, drag-and-drop blogs2 or even make static HTML pages.
Each of these have their own upsides and shortcomings. As it can be seen that platforms like WordPress, Drupal, Joomla and others have host of options which can be configured as per user's choice by installing plugins readily available in the blogs' admin sections. But the problem with these is that they have rich text editors for blog posts, which in the long run can cause problems. A text formatted to look a particular way in one theme may possibly break in another theme. Also, these HTML editors push several unrequired elements into the post like span
and div
tags. In case of Medium, you have to use their editor which will allow a better looking content, but then you have lesser control over how it displays. Platforms like Tumblr are both a blogging and social platform. It might have features that are helpful for a lot of people, but it was a no-go for me. Drag-and-drop websites have one very big problem: if you need to get a new look, you have to change every post for that. Same is the case with static HTML sites.
Then comes Hugo. I like a lot about Hugo. It allows you to write using markdown (thus avoiding unnecessary tags in you post) and then generate a static website ready for deployment. You can also use power of Hugo short-codes to supercharge markdown that may make you website more flexible and robust. It also avoids on-the-fly building (common with platforms like WordPress and likes3) making the blog more robust. There are also a plenty of themes available to choose from, and you can build your own pretty easily too.
The only downside for Hugo is, that you have to build and publish to your website manually or using plugins. And there is no build option using server side technologies (mainly PHP) and publish directly to the server. So, one option could be to use the strategy Hugo uses but with modifications, basically creating a custom CMS. I know a lot of people would disagree with this approach as they would not like to reinvent the wheel. But it will have its own benefits. A warrior who wields his own sword doubles his faith on it4.
A custom CMS offers a lot of benefits over a pre-built CMS. Since, every person has different needs and persona, not all available options may fit his apatite. But a custom CMS can be built and modified to one's likes to any extent as required. Also they tend to be faster due to lesser hooks attached while building a single page. Plus the speed offered is way better and can be increased by further optimizations at a lesser cost. Added benefit of a custom CMS can be security if properly implemented, not security by obscurity. For example, keep the actual CMS script that builds your blog somewhere secret (or at your local computer), and publish your blog using static files with no server-side code at all. Well known CMS often have great security mechanisms which are rigorously tested leaving no place for hackers to get in. But due to their popularity, they often are target of these attacks, and once attack is known it is hard to escape, unless the developer fixes the holes and releases an update. The updates sometimes break existing plugins and this might cause some people to not update at all, thus making the blog vulnerable.
So, to build a custom CMS all you need is knowledge of PHP, a good working markdown converter library and a theme. The parser will convert your data from markdown to HTML, and you can attach the theme's headers and footers as per requirement. You can keep additional attributes like title, tags, categories, etc. inside the markdown file just like Hugo or in a separate file. The posts can be saved in separate directories - one for each post - inside a single directory, from where the script would list and convert them into ready-to-serve HTML along with images and other assets. The script can either be on same host and update the files right from there, or it could be on another server and can push using FTP or any other suitable mechanism.
The CMS can be extended to have an admin interface from where build can be done with push of a button and also provide an interface to edit posts using a suitable markdown editor. The CMS can be built to have functionality of short-codes just like Hugo by adding post-processors before publishing a page. As for monetization and analytics, the JavaScript codes can be easily added to the HTML page.
Though there are plenty of benefits of ready-made CMS as well, but a custom CMS is more suited for small websites and companies. But with so many benefits of a custom CMS, it seems hard to ignore a custom CMS. And because, there is no one-size fits all solution, the decision rests with the creator only!
And as for hosting of this content, you will have plenty of options including free hosts as well as paid hosting.
One example of free PHP hosting would be Heroku, but it has a downside in its free plan: It resets to its initial build state after sleep (and in free plan you only have limited dyno hours). However, it would be great to host static content and route it through CDNs like Cloudflare for free.
Also, you can have your static output hosted on GitHub Pages, GitLab Pages, Netlify, Google App Engins, Amazon S3, Surge and even on your Google Drive! With each having its own set of pros and cons, you'll have to see what seems best fit for your purpose.
Happy blogging!
-
This doesn't matter while you are doing the starting steps, but matters in long run for a better search engine ranking and a better human experience ↩
-
provided by several hosting platforms and many other websites ↩
-
Acceleration can be achieved by caching plugins, but why go the pain, when you have alternates? ↩
-
A quote from Tanhaji: The Unsung Warrior ↩