Getting back into blogging with a new blog engine

This weekend I decided that I wanted to get back into blogging. The last time I tried blogging I used one of the pre-packaged blogging platforms and it didn't really sit well with me. I chose a theme, set up the prepackaged database, and seemingly, was up and running in no time. After that, I hit a bit of a road bump.

Workflow is important.

The problems I had with prepackaged blogging software were numerous.

  • Most blogging software depends upon a database.
    Databases require effort to manage properly and need to have a backup plan.
  • WYSIWYG widgets are great for the layman and terrible for the developer who knows what they're doing.
    They often times will break valid HTML and you'll waste time fiddling with them to get a result that should have been straight forward and simple.
  • Programming examples are difficult to integrate into non-custom blogging software.
    I write a lot of javascript these days and showing off examples of the frameworks I've built requires a high level of flexibility in the blogging software I use.
  • Previewing posts is often times insufficient and is no replacement for a staging environment.
    I often found myself scrambling to fix a mistake I had made because I couldn't see the full effect of a post on the front-page of my blog.
  • Since most blogging software depends upon a database they often don't perform very well. As a software developer I believe it reflects poorly on me if the tools I choose to use don't meet users expectations.
  • Once you've picked a blogging platform you will have limited choices on where to host it, as you must host both a database, and whatever web framework the blogging software was created with. This will typically double your overhead.

Lessons Learned

Having learned from my last attempt at blogging I've decided to roll my own blogging software. My new blogging software must:

  • Have no database and should be backed up automatically with each update.
  • It should have each post stored in a single plain text file for ease of maintenance and zero friction development.
  • It should be brain dead simple to upload programming examples.
    This often includes images, javascript files, and custom css.
  • The site should be easy to test locally and push remotely.
  • All content served should be static files. This greatly increases the performance of the site and allows caching servers around the world help save you money on bandwidth costs.
  • Be hostable on free or cheap hosting platforms.

Since this blog is up and running I've obviously already solved a number of these issues. In my next post I'll go into details on how I tackled these and tell you about a few frameworks that were helpful in getting me here.