Minimum viable blog

In the product development world there's a term called MVP that stands for minimum viable product. An MVP is the most bare-bones version of a product that you can realistically put out in the world for people to use. I love blogs. Both as a source of content to consume as well as tech objects themselves. Coding and designing blogs is fun. If I could spend my days coding blogs for people I'd die a happy person. And you know what else is fun? Coming up with what I will jokingly refer to as the MVB, the minimum viable blog. Before I start with this project, let's first get a baseline definition of what a blog is according to Wikipedia:

A blog is an informational website published on the World Wide Web consisting of discrete, often informal diary-style text entries (posts). Posts are typically displayed in reverse chronological order so that the most recent post appears first, at the top of the web page.

Pretty straightforward. Has to be available on the WWW which means you have to be able to access it through a browser somehow. Has to contain text entries and those text entries are usually displayed in chronological order. So, let's figure out how simple a blog can get.

The basics

I'm gonna make a few assumptions here and I’m absolutely sure that some of you out there with a lot more tech skills than me will yell at the screen saying that you can absolutely code a blog without what I'm about to mention, and you're probably right to. But you have to remember something: I am, fundamentally, an idiot and not some super tech guru and so my knowledge only goes as far. But if you can improve on my idea, be my guest. So, the assumptions:

Without those two things it's kinda hard to have a website. The domain is the boring part and there's not much to be said here. It's a domain. You buy it, you make it point to your server and that's about it. But since the goal is to make an MVB let's figure out how minimal we can make that domain. According to this document there are currently 1480 TLDs. Shortest we can go is two letters and out of all the two letters TLDs, the absolute shortest ones are, visually and graphically, .li and .il both of which have to be discarded. .il mandates an attached second level such as while .li doesn't allow for single letter domain name and minimum length is three. So both those options are out. We want a TLD that is short and allows for a single letter domain name. This is obviously just a thought exercise because all the one letter domains are either in use or parked but, if I had to pick a winner I'd vote for Four total characters. As for the actual domain configuration, I believe the only thing you really need is a single A record pointing towards a server.

Speaking about the server, we could discuss the simplest possible web server out there. We could, but we won't. Why? Because I know shit about web servers. Maybe something like Caddy is a good candidate but again, I'm sure some of you tech wizards out there can create a web server with just a single config file of some sort. So, we have a server, we have our fancy domain name and it's now time to make a "website".

The website, .txt edition

Before we can figure out the simplest possible blog, since a blog is a website, we need to have a definition of what a website is. Since I can't be a blogger in 2023 without using ChatGPT at least once, I'm gonna ask it for a definition. Hey cGPT, what is a website?

A website is a collection of interconnected web pages or documents that are typically accessed through a browser. These web pages are typically written in HTML (HyperText Markup Language) and may contain text, images, videos, and other multimedia elements. Websites are hosted on servers and can be accessed by anyone with an internet connection.

So, in order to make a blog, which is a type of website, we need pages. Not a page but pages. This rules out my first idea of just dumping some text inside an index file in the root of our server and call it a day.

Clearly we need something extra. What if, instead of dumping all content inside a single text file, we make separate text files and we let the server do the rest?

Is this a blog? I mean, it's multiple pages. There are links. And it’s available on the web. You can browse them. I'd say yes. If what you care about is just serving text and nothing more, this might be a solution. And some people are doing exactly this which is awesome! A blog like this could run forever with close to no maintenance. When you want to push a new post live you just connect to the server via sftp, upload your new txt file and you're done.

We need some media in here

You mean you want to upload images? I guess that's a reasonable request in 2023. Is there a way to have images in a plain text file? Unless you want to convert everything into ASCII art I think the answer is no. An option could be to convert our blog posts into folders, store images and text together and then simply reference the images inside the text. This could technically work but it looks like a terrible system.

I guess we need HTML

I think it's unavoidable at this point. We have to deal with some basic HTML. If we don't care about semantics, proper validation and all that we could get away with just <a> and <img> but once we switch from .txt to .html for our files we also lose text formatting and everything is one long line of text. Is this an acceptable trade-off? You decide. Maybe there is a way to preserve formatting without using <pre> tags that I'm not aware of. If there is, let me know.

So we need HTML but writing it by hand is a pain in the ass. Easiest solution is to use your text editor to do it for you. Majority of writing apps have a "save as HTML" or "export as HTML" somewhere. For example, I'm using iA Writer to write this post and in here I can do File -> Export -> Export To: HTML and what I get is a lovely, basic HTML file ready for me to upload on my server.

Is this the MVB I'm looking for? Maybe. Or maybe not. Still, with something like this, a person with close to no technical knowledge could maintain a blog without ever needing to update anything probably ever. A setup this simple will hardly be targeted by hackers and requires very little maintenance. Would this be the most visually beautiful blog? Probably not. The most functional and feature rich? Definitely no. But it is a blog and it can be used to share content with the world and that's more than enough in my view.