I've been scrawling all over the World Wide Web for over a decade now. And I've used quite a few blogging and content management systems. And I finally decided to write my own because there was just one or more aspects of existing systems that didn't quite fit my needs. Here is my critique of a couple of these kinds of systems.
CMSs Are OverkillWordPress and other content management systems are great if you're wanting to compose lengthy articles with gorgeous photos, and it's what I use for my cycling blog. It's a rather large and complex software system that requires frequent security updates, most likely because it's just so big. Lots of room for hidden bugs. To this day I still believe there is something inherently wrong with writing web sites that are actually a series of programs that must run every single time someone clicks something. Seriously, is having the convenience of a header, footer, and dynamic content really worth all that? Ok, sometimes it is, but many times it is not. There is another way.
My Social Network Ate My Article
Facebook and other social web sites are great for reaching a targeted audience, but you have limited control over the appearance of your articles, which ones float to the top, which ones get lost in the mayhem, and so forth. Social networks do have nice features such as great commenting and interactive features, however you can always post an article you've composed to the social networks after you have posted it elsewhere. This gives centralization and permanency to your content.
Gimme The Basics
And here are some of the things I did want for a simple, jot-some-crap-down blog:
- Static HTML. There are no security or performance problems inherent with static HTML pages. :-)
- A simple article entry system. I want to just edit some simple pseudo-XML (or other easy mark-up language) in vim and throw in a few bits of HTML. You don't need anything more than that just to sit down and rip out a short rant about how much you hate reality TV or something. I believe the very best way to share content with your family, friends, etc. is to type it out or take some photos or whatever, and place it on an web server for everyone to download. This can get very messy over time as you plop down more files, so linking it all together into a web site is a good thing to do at some point. It also makes it easier to find content you produced years ago and reminisce. :-)
- I wanted my blog to be HTML5 / CSS3 compatible. Web technology is getting better and better and I just want to keep abreast of it and gain a good, working knowledge of it. I also wanted my blog to be lightweight, quick to load in a browser, and easy to read and maintain. HTML5 and CSS3 is inherently good at this if you don't try to get to crazy with it.
- When your content is out on the wild, untamed Web that is accessible by any person or program to read, the pages are going to get downloaded many, many times. I'm a big fan of run-once-read-many systems (i.e. use a program to produce the web site, upload it, and let everyone read the static HTML pages), which is just the opposite of how most people create web sites nowadays (i.e. write the web site as a computer program, and each reader has to run one or more programs to get the content). Also, it isn't much more difficult to write a script that turns an XML file into a set of HTML pages; in fact, it is quite identical to a web application designed to be ran by an http client that spews the HTML content from the XML file or database system. Why would you want to run that more than once unless absolutely necessary?
There is only one downside to this this method: whenever you make a change to layout or add an article or anything, you must re-run the site creation script which regenerates the whole site. Which means you must then upload all the files to your web site (or just the ones that changed). But, really, it only takes me about a minute to tar it up, upload it, untar it, and overwrite the old site. Not a big deal. I willingly sacrifice a bit of developer convenience in the interest of producing a better, simpler experience for my readers. :-)