Published:

Jarle Aase

Second attempt: stbl - getting it right!

bookmark 4 min read

Back to Static content

It occurred to me years ago that the way to go with simple corporate and personal web-sites, like blogs, is not dynamic content, but static pages. Why? Because it's simpler. Things should not be more complex then they need to be. The current trend of publishing content in One Page web applications is insane! Unless you make an application, like an interactive chat, or a game, the only thing a "One Page" web application shows is that you are a fool, not knowing or caring about your visitors safety and comfort. It certainly does not make you look cool.

Javascript is poison. It's the modern web's regression into something even dirtier than Adobe flash. It slows down the speed when your page loads. It burns energy (CPU cycles) for no reason, contributing to global warming. Besides, for a web page with focus on content, like this one, the only things that require javascript is tracking you, delivering intrusive ads, exploiting you (like mining somebody else's crypto-currency at your expense) or serving maleware or viruses. That's what javascript is good at. It's actually the only thing it does better than any other tool. Javascript is not required to create really great looking websites on modern web browsers.

So, there I said it.

A site does not need javascript to serve static content like blog posts and articles. However, you may argue that it is needed to support comments, ratings and other extra stuff. And I do see your point, especially if the site is served as static web pages by a web server alone. So, in order to add a comment section for example, javascript could be a valid option. Not a good option, but still a valid one. However, that would be an optional bonus for your visitor. He could choose to disable javascript and just view the content, or use javascript and get to the comments as well. I do respect websites that give me that choice. Those who don't either end up in a dedicated virtual machine (like slashdot), or they don't exists for what I care.

Content Management Systems, be it Wordpress, Drupal, something squeezed out of Tomcat, or even my own trusted work-horse, WarCms, are all too complex to keep patched up and safe for simple use. They also burn energy, doing work that are mostly not needed. (It hurts me to admit this, after spending thousands of hours in the past, building and maintaining WarCms).

Anyway, I long ago decided to go back to static pages, without javascript, for my blog. I looked for some easy to use content generator, and eventually ended up with jekyll. It met most of my requirements, but I never actually liked it. So I kept a sheet of paper in my drawer where I added notes about what I want.

How does a developer make a blog?

This month I looked at my notes, and really, really wanted that application. Fortunately, I had some spare time, so I spent about 5 days implementing stbl - an acronym for "Static Blog".

Then I spent my spare time over the next two weeks reading up on css - which I find about as interesting as German Grammer. Finally I spent two days hammering out a responsive web design for this site.

(After two days with "web design" work, using css3 and html5 - I really understand why most Front End developers I know never speak about their work. They can go on for hours describing their work-place, or job politics, or stupid managers - but the part where they describe what they do, is usually over in two seconds the first time we speak - like it hurts to even think about that. C++ developers on the other hand can spend hours discussing new standards, tools, cool code they read, or wrote, funny code comments and C++ books - not to mention C++ people like Scott Meyers (the guy with the funny hair on Youtube) or Bjarne).

So, how do Real Developers(tm) make a blog? Obviously, we make a program to do that. No, I'm kidding. 1 week's development time (40 hours) is not something you spend just to feel cool. In my case I simply did not find anything out there that I liked. And in that case, development time is justified. Writing text; be it blog-posts, articles, essays or howtos, is quite time consuming - having a tool that takes away any friction and just Do It Right (tm) is invaluable. I will probably spend 5% of the time dedicated to blogging over the next 12 months, extending and perfecting my tool - and that is just great! Blogging will be more fun, and I get to spend some quality time with code that matters to me.

There are still some missing features in stbl, but it's already sufficiently mature to publish what I have in mind for the next month or so, and in a effortless manner I may add. That alone makes me happy.

This is all it takes to generate and publish my blog:

$ stbl --open-in-firefox --console-log debug --source-dir ~/ownCloud/blogs/lastviking.eu/ --publish-to "lastviking.eu:/var/www/html/"
[2017-10-18 12:31:33.900424] [0x00007f45ef4a6740] [info]    Ready to process '/home/jgaa/ownCloud/blogs/lastviking.eu/' --> '/home/jgaa/.stbl-site'
[2017-10-18 12:31:33.900945] [0x00007f45ef4a6740] [debug]   Adding article: git_cheatsheet.md
[2017-10-18 12:31:33.901048] [0x00007f45ef4a6740] [debug]   Building series: modern_blogging
[2017-10-18 12:31:33.901121] [0x00007f45ef4a6740] [debug]   Adding article: jekyll.md
[2017-10-18 12:31:33.901162] [0x00007f45ef4a6740] [debug]   Adding article: stbl.md
[2017-10-18 12:31:33.902115] [0x00007f45ef4a6740] [debug]   Done with series: modern_blogging
[2017-10-18 12:31:33.902170] [0x00007f45ef4a6740] [debug]   Adding article: about.md
[2017-10-18 12:31:33.902213] [0x00007f45ef4a6740] [debug]   Building series: Jenkins
[2017-10-18 12:31:33.902319] [0x00007f45ef4a6740] [debug]   Done with series: Jenkins
[2017-10-18 12:31:33.902916] [0x00007f45ef4a6740] [debug]   Listing nodes after scan:
[2017-10-18 12:31:33.902986] [0x00007f45ef4a6740] [debug]     "Modern blogging" (SERIES)
[2017-10-18 12:31:33.903017] [0x00007f45ef4a6740] [debug]       ---> "First attempt: Jekyll" (ARTICLE)
[2017-10-18 12:31:33.903035] [0x00007f45ef4a6740] [debug]       ---> "Second attempt: stbl - getting it right!" (ARTICLE)
[2017-10-18 12:31:33.903060] [0x00007f45ef4a6740] [debug]     "Jenkins" (SERIES)
[2017-10-18 12:31:33.903079] [0x00007f45ef4a6740] [debug]     "Git Cheat-Sheet" (ARTICLE)
[2017-10-18 12:31:33.903098] [0x00007f45ef4a6740] [debug]     "About" (ARTICLE)
[2017-10-18 12:31:33.903667] [0x00007f45ef4a6740] [info]    "Second attempt: stbl - getting it right!" (ARTICLE) is held back because it is due to be published at 2017-10-18 17:00
[2017-10-18 12:31:33.903840] [0x00007f45ef4a6740] [info]    "Jenkins" (SERIES) is held back because it has no published articles
[2017-10-18 12:31:33.930034] [0x00007f45ef4a6740] [debug]   Generating "First attempt: Jekyll" (ARTICLE) --> "/tmp/30c3-ab67-b846-feda/modern_blogging/jekyll.html"
[2017-10-18 12:31:33.958566] [0x00007f45ef4a6740] [debug]   Generating "Git Cheat-Sheet" (ARTICLE) --> "/tmp/30c3-ab67-b846-feda/git_cheatsheet.html"
[2017-10-18 12:31:33.968364] [0x00007f45ef4a6740] [debug]   Generating "About" (ARTICLE) --> "/tmp/30c3-ab67-b846-feda/about.html"
[2017-10-18 12:31:34.008415] [0x00007f45ef4a6740] [debug]   Creating directory: "/tmp/30c3-ab67-b846-feda/_tags"
[2017-10-18 12:31:34.043925] [0x00007f45ef4a6740] [info]    Executing shell command: "rsync -a --delete /home/jgaa/.stbl-site/ lastviking.eu:/var/www/html/"
[2017-10-18 12:31:38.167902] [0x00007f45ef4a6740] [debug]   Removing temporary directory "/tmp/30c3-ab67-b846-feda"```