And how did we get here?
In the beginning was HTML. And HTML was the web and the web was HTML. In 2001 I became curious about how web sites were created. So I bought a book: "The Complete Idiots Guide to Creating Web Sites". It was a book about HTML and CSS. But that's how web sites were made back then. So I read the book and set forth to create a web site. It was a simple site. But, it grew, and grew. Pretty soon it got out of control. You see, I was directly editing the HTML for each post and page. As you can imagine, it was a difficult task that just got harder. It wasn't long before I was ignoring the site and not making regular updates.
Looking for alternatives
By now I was looking for a way to make site updates easier. At first I tried to come up with a way of separating content from the HTML. The idea was to write content as runoff files and use a C program to merge it with an HTML page skeleton. Although that worked, kinda, sorta, it was a bit rough and was really particular about how the input files were formatted. Then I started looking at PHP and MySQL. That could have worked, but seemed like too much trouble. I also looked at using the C preprocessor, and even mailmerge.
At this point I began seriously looking at Joomla, Wordpress, and some other content management systems. The big problem that I had with them was that everything tended to be up on a server. I had no cohesive version of my web site on my home system. Further, many of the CMS or the CMS hosts limited the ability to personalize the HTML and CSS files.
About this time I learned Python. And I found out about Python web frameworks. For a while I explored the idea of creating a Django or Flask based web site. I was able to create a couple of Django web sites. But using a framework meant doing a lot of upfront programming. It was like telling a shopkeeper that he had to build his shop before he could start his business. When it came down to it, Python web frameworks are not that easy to deploy or create.
Then I found out that other people were thinking like me. I first got an inkling of this when I found the Static Pages plugin for Flask. This looked promising. Bypass MySQL and upload content as tagged text files. Use the markdown module to render the content as HTML. Then the view controller would merge with a template and render the final output. But it would still require some programming from me. And there was still the task of deploying a python framework that I was still struggling with.
Then I heard about Jekyll. But I didn't like it. However it did lead me to staticgen.com. And there I found the Pelican static site generator. It was written in Python, my newest favorite programming language, and used the Jinja2 template system used by Django. It was dead simple. Put your content into a content folder as tagged text files (IE: markdown). Style sheets and HTML templates go into another folder. Then run a command and everything goes into the 'Blend-o-Matic' and out comes a stack of static web pages ready for upload.
And so here we are. Version 3 of my web site. Welcome to my World!