I love Markdown! it is such a wonderful format to write content in.

My last blog was hosted on WordPress, but I stopped blogging a few years ago. Why?

Because I had to be online in order to be able to write. Actually I am writing this article using Vim on Termux on Android. Offline.

In this article I want to explain my authoring workflow.

Collecting ideas

While outside ideas tend to come. I started to jot them down in an to-do app, which focus on simplicity and GTD.

They usually contain some keywords to remind me on what I want to do or write about.

Preparing an article

Since I am using Jekyll for blogging, I've created a _drafts directory. In that I create files which first are empty and maps to a title.

Later on I start writing headlines (one <h1>, the rest lower) to have an outline. the <h1> should match the title and contain key words you want to be found with on search engines.

The other headlines should be written in a way that you get an idea about what the article is about by reading them.

A good idea is to explain first, what the reader can take away after the reading, than laying out prerequisites (with links to other posts explaining them in more detail).

Start filling the gaps between the headlines without worrying about typos. You can fix those later. Same with checking for understandably. Don't care for now. You want to get the content out of your head. Things like looking, whether you write from I or you perspective can be adjusted later.

After you have written down, think about keywords. There are some people out there suggesting to have keywords in the title, in the only <h1> of the article, as <strong> and in alt attributes of images.

In my opinion you should look after the article would satisfy your query when you would have stumbled upon it on the Internet looking for a solution to a problem. After all you are writing for humans, not machines ;-)

One thing which is admittedly cool is semantic markup. Say you are writing down your experience of a conference or meetup you participated in lately. Wouldn't it be cool if you could make a machine understand, that it is about an event?

In fact you can do this today!

There are mechanics like schema.org or microformats to assist you. schema.org (or microdata) has the backing of large Internet, while microformats is defined by the crowd. The latter requires markup, while the former allows you to use a <script> plus a defined JSON scheme (use yandex validator, since Google is doing a bad job here). This way you can write a Jekyll plugin and define information about the article in the front matter. The plugin will generate the <script> for you.

Publishing an article

So you are satisfied. What now?

Get it out of _drafts!

Therefore create a new directory _pages, if you have a page, or _posts, if it is a blog article.

Then move the article from _drafts to _posts and rename it to YYYY-MM-DD-<my-target-url>.md. This way it gets sorted for you.

Personally I tweaked my _config.yml to omit date and categories from URL and output the title:

permalink: /:title/

does that for me. I want to have a short URL and don't need to have date or category information in the URL. I can create filtered pages for that.

Publishing pages

Add a directory _pages where you put markdown files in. Specify page as layout. You need to add a permalink as well. The last thing is to add include: ['_pages'] to your _config.yml.

Updating the blog

That is merely a job of executing JEKYLL_ENV=production bundle exec jekyll build -s from -d to, where from is the path to the project root and to is the path to the directory, where the HTML should land. I had to pass in the environment for some plugins to run. bundle is used because I encountered issues with sass (found in two places).

Keep on blogging!