Blogging Simplified

I’ve just finished migrating UsabilityPost to another blogging engine. Before, the blog was powered by the usual suspect: WordPress. The new engine is called Toto which was recently launched by Alexis Sellier, the creator of LESS. Unfortunately Feedburner has re-published all the articles to RSS again, so apologies to all the RSS subscribers for the confusion.

Ok, so what’s Toto? Yet another blog engine? Not quite. Toto’s features are so compelling that I just couldn’t resist switching over.

First of all, Toto doesn’t run on a database. The whole blog is essentially a set of template files and a collection of articles in text format. Yep, plain old text files. Each article file contains a bit of metadata at the top, like the title and date (and whatever else you want), followed by the article itself, which is formatted either with HTML or Markdown. This fits in a lot better with my workflow since I don’t normally write the posts in the WordPress edit window when I begin, I write them in an external text editor. Once I’m happy I paste my work into WordPress, format it, and add the images. Toto cuts out the extra step – the text files you work with are the posts.

The new "database" of articles

Toto uses a popular distributed version control system called git to manage deployment and keep a history of every change and update you make. Toto itself is a Ruby gem that’s been designed to run on a popular Ruby cloud host Heroku, although you can run it on your own server just as well (Heroku is very fast though and offers the automated git deployment). All this basically means is this: whenever you add articles or make changes to the site’s design, you check in the changes to git, and then push them to Heroku. Two commands and the changes are live. You use a command line for this but the process is very fast and simple to those familiar with version control systems.

The site itself is generated from the text articles and layout files. This static nature of the site offers two big advantages. The first one is that it runs very fast. Once a page is loaded it is instantly cached, and the next visitor to load the page accesses the cached page itself, which uses minimal computing power. Toto will easily handle very heavy traffic which comes in useful if you ever get on the front page of social news sites like Digg. WordPress has a plugin called Super Cache, but I’ve experienced problems under heavy traffic even with Super Cache running on full.

The second advantage is that the site is very secure. Nobody can hack into your admin panel because there’s no admin panel.

The static nature of the site poses a problem: how do you deliver something dynamic like comments? Disqus to the rescue. Disqus is an outsourced commenting engine that you can easily integrate into any blog. Comments are pulled from the Disqus server using JavaScript and are pasted right into your pages. I’m not 100% sold on how Disqus works (there’s way too many popups and extras that come by default – I’ve turned most of them off to keep things simple), but for now this seems like a good solution. I’ve also imported all of the old WordPress comments, so the transition should be seamless. As a bonus, there’s some new features like subscribing to the post by email and threaded replies.

Ultimately, what I love about Toto is that there’s no layer between you and the blog, as is the case with WordPress. With WordPress everything you do goes through an admin panel. This may work for some people, but I find all the options just too much. Additionally, it adds extra work: you have to format all the posts inside WordPress. Now I’ll just write the posts as I would normally using text files, and publish directly using git.

A blog is essentially a set of documents, it shouldn’t need a large content management system to support it, just a light templating system and a way to manage your posts. I think over the years all of the popular blogging systems have set off on the wrong path. They’ve got advanced control panels, widgets and full GUI text editors that try to replicate your desktop publishing tools, which all ends up being too much. I think systems like Toto hit the perfect middle ground between database driven dynamic sites and static sites. They let you use the best tool for the job, for example you can use your favorite text editor to edit your posts, and git to manage version control.

If you’re not afraid of the command line and are looking for something simpler than WordPress I highly recommend you give Toto a try. It’s still in early versions but I’m already seeing a lot of potential. Leave a comment below to let me know what you think.