/ misc

gsmblog.net revamped

You might have noticed recently, that gsmblog suddenly got a new fresh modern design. But this isn't a simple re-design. This is a complete revamp, and a total re-write from scratch. And it didn't happen over night. The future of the blog is bright.

Before I continue, I want to make one, rather bold, statement. The blog has basically been dead for a long time now. That was due to a couple of things. First of all, life happened. I've been busy with a new job, a new apartment, lots of personal projects, and generally lots of stuff going on. Secondly, even though the blog was in its fourth third iteration, I was far from happy with the tech. It started on Joomla, moved on to Drupal, and finally Wordpress. But none of them were good. They were large, heavy, slow (hence needed varnish to function properly), and based on php (so based on a nasty language with fairly sloppy code, and full of security issues). Now, in its fourth iteration, I think I finally have found the ultimate permanent solution. More on this soon.

Article continues after ad

Currently the whole blog has been converted. The only thing missing is comments. I've moved to using an external comment system to make life easier, and it seems that importing the old comments will require some manual work, but I will move the few relevant comments over at some point.

Introducing Ghost

Without further ado, let me present Ghost. I came across Ghost when looking for a simple blog software for work. We needed something simple. Something that a bunch of nerdy tech heads could use without annoyance, without lots of bells an whistles. And, since we also wanted to use it as a first steppingstone to start moving services to the cloud, we wanted it to be docker friendly. After testing and evaluating a bunch of different alternatives, I came across Ghost. And I was really impressed, even if it wasn't even a full release version yet. So, why so great?

Modern technology. API

First off, Ghost is based on modern Javascript technology. Now, I'm not always a huge fan of modern Javascript "hipster" technology, but when done right, I like it. And Ghost did it right. Not only is it modern, but their choice of technology makes it lightning fast out of the box. No need for varnish any more. And their markup (HTML and CSS) is modern as well.

Ghost is also fully API based, with both a public and a private API. So no vendor lock in, data is available, and simple to export or use within other applications. My personal opinion is that any data that isn't available through an API is useless, and nobody should publish such data. Also, all of the data is stored in a very simple, available format, easy to extract even without the API.

KISS, markdown and anti-WYSIWYG

Possibly even more important is the wonderful editor, their KISS (Keep it stupid simple) philosophy and anti-WYSIWYG stance. The editor is based on markdown, and as a nerdy guy who writes code, any software that allows me to use some sort of markup language, like markdown is great. It's easy, flexible, simple and available, and doesn't require me to use that pesky mouse. Finally, they have done something, that I really wish more products did, and made the markup first citizen and downplayed WYSIWYG. I loathe WYSIWYG editors, and avoid them at all costs, and Ghost has provided a few buttons for those who absolutely have to have some sort of GUI, and preview mode. In other words, a perfect balance. Finally full HTML can be inserted anywhere, which is great.

Fast and flexible

Ghost is also very simple and easy to deploy and configure. A few simple commands are needed, and a couple of settings in a config file are needed, and you are set to go. Or, if you use docker all you have to do is to pull and run the docker container, no configuration needed. Once you are done testing or creating your installation, preparing for production is even simpler. All you need to do is change a single parameter in the configuration file, or if you use docker, add an environment variable to your docker command.

Article continues after ad

Creating a theme for your blog (if you don't want to purchase a theme in the marketplace, or stick with the default theme) is simple, understandable and, for a developer, trivial. The easiest way is to start with the default theme and adapt it to your needs. This couldn't be easier. You simply clone the git repository containing the default theme. Run npm install and away you go. Naturally you have automatic compilation on changes. Once you are done, you run a single build command, and upload the resulting zip to your blog. The css and templates are clean, easily understood, and the documentation is good.

I don't have any experience (yet) extending or adapting Ghost, but from the looks of it, this should also be fairly easy as long as you know a bit about modern Javascript development.

Are there any downsides?

Not many. But note that if you are the kind of person who wants writing your blog to be similar to writing a document in Microsoft word, or you feel the need for tons of glorious bloating extensions, Ghost is not for you.

There are a couple of things I really would like though. I would appreciate a way to change and add keyboard shortcuts in the editor. The fact that I try to avoid the mouse as much as possible, and use a browser, and browser plug-ins geared to always using the keyboard, the editor comes up short when it comes to keyboard interaction.

Also, the editor doesn't play nice with browser plug-ins that allow you to use external editors to edit in-browser text, and has issues with in-browser spell-checking. Somehow the editor seems to not be identified as an input, which causes issues.

The tag-editor unfortunately lacks a couple of important features. The tags need to be ordered in alphabetical order, and allow ordering by frequency and order of creation. As of now, the only way to find tags is by searching, which is a pain.

Finally, a feature for custom snippets would be highly appreciated. Nothing fancy is needed, but a simple key->html addition would make life a lot easier. Optionally, one could allow the user to create markdown extensions.

The future of the blog

Hopefully this means that posts on this blog will be much more frequent in the future. There no longer is any kind of technical or WYSIWYG-annoyance hindering frequent posting. In addition, my new job provides me more spare time, and a much better possibility of investigating and learning new technology pro-actively on the job, rather than always just last minute learning based on whatever is needed for the next project. The list of posts I want to write has been steadily growing, so I'll most definitely never run out of topics to cover.

A small tech update

About a year and a half ago, I spent some time upgrading all of my sites, and all of my services to run on docker and got rid of my host running on tilaa and moved everything back to my original linode server. I might use tilaa for some things yet in the future, if nothing else for prototyping, but when linode dropped their prices tilaa no longer offered any big benefits compared to linode, and after experiencing some random kernel panics on their custom debian without them being able to determine why, I opted out for now.

Anyhow, the migration was a long ongoing process as I not only moved everything over to docker, but changed a bunch of technology stacks. One of the major changes was re-creating all of my static sites using spring boot. But a lot of other technology was modernized and replaced as well. I had planned a long series of posts about the process, but as mentioned, life happened. Some of the planned posts should appear in the near future though.

As mentioned, everything now runs on docker (basically my whole life is in docker now) which is a huge time saver, and makes life much easier and much more fun. I cannot recommend docker enough.

Future plans

Over time I'm hoping to continue to modernize my technology stack, and also complete some of the many side projects I've been planning for ages. At some point I would like to move things from bare bone hosting into kubernetes, however, at the moment google cloud (which I've been starting to investigate at work) is way to expensive compared to linode, and even self hosting kubernetes would be much more expensive than the bare bone hosting I currently do.

Photo by Thought Catalog / Unsplash