2011-12-01

Blog Tools

Using vim for writing my blog and Jekyll for "hosting" it.

I wrote the following back in January of 2011:

This blog will be built upon Unix principles.

This is the Unix philosophy: Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface.

-Doug McIlroy

To that I would add: modularity, reusability, and elegance. Also, the blog shall obey the principle of least astonishment, prefer the command line, and be as simple as possible but no simpler.

I'm leaning toward Markdown, Ruby on Rails, SQLite.

I'm also going to explore github, as all the cool kids seem to be doing it. It's still unclear to me why github would rock in this context.

Now its December of 2011, and this plan, like all good plans, has fallen apart completely, only to be replaced by a much better plan.

I've fallen in love with vim for text editing. With a little modification of the config file, it works as well for writing English as it does for writing code.

After living in Unix-land for so long, trying to go back to the bloatware that so defines most people's everyday experience of computing is more than annoying. It is infuriating. Especially for one prone to righteous (and/or sanctimonious) fury.

While editing the raw text of HTML files directly is appealing in many ways, it does bring annoyances of its own. First and most importantly, HTML is an awkward language for a human being to write directly. Second, the whole point behind the separation of presentation and context in HTML is to reduce the need for human repetition when one is adding a new way for existing content to be accessed (e.g., the smartphone). There needs to be an automated process for creating cascades of diverse presentation around static content.

For the first problem, the solution is Markdown. Markdown essentially takes the most common HTML tags and creates a series of aliases that are easy for humans to write. Then a computer handles the task of converting those aliases to actual HTML. It is a simple idea, but a powerful one. Writing Markdown is a joy, far more enjoyable than using a traditional GUI word processor. And the resulting document--pure, strict XHTML--is far more useful than the obscure, idiosyncratic files produced by normal word processors. Pure XHTML is instantly ready for display on a webpage or conversion to an ebook. Post-conversion proofreading and error-fixing is essentially eliminated.

The rise of the separation between presentation and content is an interesting subset of a larger change in human's relationship to information. On a broad level, there is a much, much better understanding of the incredible potential when information is kept in a form that computers can parse. The constant scanning of printed paper into PDFs in business contexts is the first step for most people along this road.

Likewise, information stored in an open, robust, interchangable format like XHTML has a far, far greater potential than the same information stored in a proprietary word processor format.

The second tool to address the limitations of vim as a website creation tool is Jekyll. Quite frankly, I'm not entirely sure how this thing works. There are a lot of fancy words describing what it does on its homepage. Here's what I know it does so far:

In a word, Jekyll is elegant.

So those are my tools for now. I'm not really sure why I wanted a database back in January. Probably just because all the main blogging platforms use databases. Maybe it makes sense when running some colossal commercial blog with dozens of contributors. But for my purposes, I can see no real advantage to putting all my post content into a database. And there is a definite performance penalty.

I'll probably toss up the source for this site on github later once I've got it all into something I like. I've got some ideas for the front page that I think are pretty cool.