This summer I have decided to build a very simple blog (hopefully the one you are currently reading). I wanted to set up a simple static website and to host it on a baremetal web server. I like to do thing on my own as I think it's an effective way of learning thing. For context I am more used to embedded development, and my only previous knowledge on web devlepment is some scarces memories of HTML5/CSS3 tutorials that I had tried when I was a teenager. So I basically knew nothing on web developement before starting this project. The only thing I knew is that I wanted to set up a very basic website, a minimalist layout, without too many features.
I usually like to plan a little bit my projects before starting to work on them. But this time I decided to dive in headfirst and to improvise on the way. I figured it would be a nice way to quickly come up with a small website, even if shitty it would be better than another never-ending project in a box.
As I don't know a lot of things in web developement I decided it would be a nice way to learn more about it by doing this blog 'by hand' even if it would have been way easier and quicker to use a tool such as worpress or github pages. I guess that I love a little bit of challenge!
So one evening, I bought this domain name and I rented a small web-hosting server. I quicly wrote my fist HTML index only using my few memories of HTML. I also set up a cron tasks that was regularly pullign the website from a git repository. I figured out it would be nice for automation.
Hello world!
//TODO: finish website
this is a test
The first page of Left As TODO
Once the server was set up, I needed to find a way to build a simple website. As I hate high-level abstractions and over-complicated frameworks I started to look for HTML templates. I found some funny ones, and really liked the concept of minimalist and light-weight (but good-enough-looking) websites like theses two ones:
They both managed to get minimalist yet modern looks. Sadly when inspecting the HTML sources I realized that it would be a pain to write each article directly with an HTML formatting (it would kill my motivation to write any article and hence make this website project another thing left as TODO). I quickly realized that I needed a tool that would allow me to automatically format my articles, and that would also glue all of them together to build a beautiful blog with menus, pages, indexes etc.
At this point I figured that such tool would be plenty fun to build from scratch with python or something similar. But I din't wanted to unfocus from the initial goal: share my projects on a blog, not build a static website generator. I hence decided to look for already existing tools that would allow to do what I wanted (and hopefully do it better than what I would have achived by myslef). So I satrted looking for a static website generator. After a quick google search I found out these three tools:
I gave a try to the three of them, I'll discuss my experience using these tools on the following paragraphs. Maybe writing down my experience using them will allow to make a tradeof to pick the right tool.
I started by using hugo, I really liked how quick it was to get in hand, install themes, etc. But I quickly realized that it was lacking documenataion (documentation is quite difficult to navigate), and that each theme has it's quirks and tips to learn.
Jekyll seems to be the more popular tool (it is the tool used for github pages). It provides a lot of features and a lot of predefinded themes. Sadly the themes are shared using RubyGems, and I really don't like to deal with another packet manager (I hate them, it's yet another tool to learn just to reach the goal). But overall jekyll seems to work quite well. I might give it another try.
I first really liked Pelican as it is only a python module so easy to install and to use (at least
with my competences). Once installed it worked well and I managed to easyly get my first project
running using pelican-quickstart. It even generates a top Makefile to build, test locally and
deploy (I really LOVE Makefiles).
Like the other tools the pages can be generated from a Mardown file, and it also seems to provide
a lot of plugins.
Sadly, I struggled to find any template that really suited my needs. And the few I found were lacking documentation; I really didn't wanted to learn all the internal working of the python backend.
I haven't really been convinced by any of these tools. I feel like they all require a learning curve, and most of them have a lot of dependancies that I don't want to handle and that might be deprecated in the long run. My goal is not to build a stand-of-the-art website, but only to DIY' something that good enough (I have high standards I know) and a little bit old-school.
If I have to spend time working on a website, I prefer to spend it having fun building a custom tool rather than learning how to configure an existing tool. After all, my blog will not be that complex, such a tool should not be that complicated (time will tell).
I'll try to build something in the following weeks (I haven't worked on a new python project in a while so it can be fun). But I might also give another try to one of the above tools (I think Jekyll can be worth to learn more about, the documenation looks very nice).
Hopefully you'll see another post here. Otherwise it will mean that this blog website joined the long list of my projects left as TODO.
