I have been building websites for clients for around 5 years now. When I first started, I was creating each page of the site with an individual HTML file, so if a link the navigation would change, I’d have to open every page in the site to update it. I quickly learned the value of a content management system (CMS), and how a little time spent mastering one of these would save countless hours of repetitive markup updates, as well as open up a new level of power when it comes to building websites. The first CMS that I set out to master was ExpressionEngine.
Call it luck, divine guidance, or fate, but learning ExpressionEngine (EE) quickly set me up for success as a freelance web developer. I spent a week in Holland, MI, where I spent each day learning ExpressionEngine via Mike Boyink’s Train-ee course. After that I was hooked. I used EE for every project, large or small. Even a simple 5-pager would go into ExpressionEngine, just so I could use Freeform to set up a quick contact form, and harness EE’s template engine for quick embedding of partial code that repeated from page-to-page, like the header and footer. My clients were happy, I loved using it, but there was one minor drawback to using ExpressionEngine for personal projects, a license currently costs $299. Also, something “simple” like setting up a blog involved coding up all of the parts that were necessary to create a blog:
- Post summary
- RSS feed
- Post detail page
- Category list for the sidebar
- Category display page
- Tag listing in the post
- Tag results page
- Search results page
- Author bio
- Author listing page
- Comment form
- Comment listing
Okay, some of those are optional, and some are even provided with a quick template for dumping into your ExpressionEngine template, but they still need to be considered when it comes to EE. After owning the domain ryanbattles.com for several years, and it only being a one-page brochure for what I do, I wanted to create a blog for it. Initially I was going to use ExpressionEngine, but after I thought about the time needed to design, markup, integrate EE, let alone the cost of a software license, I decided to give a free install of Wordpress a whirl (EE does also offer a free version, but some useful parts are disabled).
What I really wanted was to spend around $30 on a template from themeforest, and within an hour, have a fully-built, ready-to-publish, themed blog. Even though I build websites for clients by trade, I knew that custom-building one for myself would require too much time and energy when what I really wanted was to remove the barriers of building it and start publishing right away. That is Wordpress’s specialty. As I had hoped, I was up and running within an hour with my new Wordpress blog. A few folks in the ExpressionEngine community teased me a bit for using Wordpress, and one developer even told me to “wash my hands” after I tweeted that I had my new blog on Wordpress. What I liked about Wordpress:
- Quick to get up and running
- Vast array of pre-configured themes built specifically for a blog
- Vast array of “click-and-go” addons
- Touted as being “SEO Friendly” out of the box.
What I didn’t like about Wordpress:
- My control panel was slow as molasses
- My website was slow as molases when I was logged in
- Beyond installing addons, I didn’t know how to customize my blog very well
These items that I didn’t like may have been due to the particular addons I was using instead of Wordpress itself, but nevertheless it was a poor experience when it came to updating the site’s content due to the sluggishness of the system. Also, I admit that the last one of the negatives is strictly due to my own lack of Wordpress knowledge, but it also may speak to the fact that it isn’t an intuitive system to customize without investing a significant amount of time in learning the nuts and bolts of its inner workings. The speed issue was what finally made me decide to switch away from Wordpress. That, and I was ready to dive into another CMS, as two peers of mine were making waves with their own CMS’s, Brandon Kelly with Craft, and Jack McDade with Statamic. I knew that Craft was going to be beautiful and great to work with because it seems like everything Brandon Kelly touches turns to gold (works well, easy to use, well designed), but I was also drawn to Statamic because it is a CMS entirely based upon files (no database), which makes tracking changes (via version control systems) much easier. Because Statamic was temporarily on sale for $19, I gave it a whirl (I will try out Craft soon on another project).
I was hooked on Statamic after watching the two videos on their website, which made me believe that I would be a master of the CMS in a matter of 30 minutes. That turned out to be more like 2 hours, and I’m still just scratching the surface of what this system can do, but I have a good enough idea to get the blog up and running, and even wrote my first addon for the system within that time too! So in short, out of ExpressionEngine, Wordpress, and Statamic, I had more control over the system in the shortest amount of time with Statamic. To be fair, at this point I have years of CMS and PHP development experience under my belt by the time I cracked open Statamic, so that did accelerate my learning a bit. I also work on a software development team for a Rails application (Crushpath), so the paradigms I use in that system also worked as a catalyst to my grasping of Statamic. That being said, I was impressed with the documentation and ease of setup. The biggest draw for me to Statamic was that I could save my blog entries as files on the system. This allowed me to use Git to version control the content of the blog. For those of you who aren’t familiar with Git workflows, or wonder why a solo developer would be interested in version control, what it basically allows me to do is this:
- I can write the blog on my computer and preview the way it will look on the site, even without an internet connection. I have a complete copy of my website running on my laptop.
- I can then push the new post to my server with the click of my mouse (using Tower).
- At any time, I can roll back a specific change (or slew of changes) that I have made to my blog. Again, with simple clicks of my mouse.
- I always have a few copies of my website for backup.
- If my site is ever corrupted or hacked, I can replace it with a fresh copy with—you guessed it—a few clicks of my mouse.
Now, this great system isn’t without its drawbacks. As a primarily front-end developer, I have to admit that if I had sat down to learn Statamic with the skills that I had 5 years ago, I’d probably be pretty confused. To use Statamic you are exposed to using views, templates, routes, YAML-structured custom theme files, and a few other concepts that take a little concentration to wrap your mind around. Granted, many developers may already have these concepts mastered with their existing skillset. However, I will say that wrapping my mind around these concepts has forced me to use best practices when build this dynamic website from static files (Statamic = static + dynamic). At the end of the day, it took me around 5 hours to learn about Statamic, design, and build this blog. I manually copied over my previous blog entries (every one before this one), so that took about another hour. I say that not to speak to my development skills, but more-so to how well the Statamic documentation is written, and how intuitive the system is to use once you have the system framework down, and understand how a page is built when a URL is called.
After building sites with ExpressionEngine, Wordpress, and Statamic, I’m very excited to keep this blog on Statamic for the foreseeable future. There really is no comparison when it comes to speed of the system when editing posts (everything is done on my laptop and not over the Internet until I’m ready to publish) and the security of versioning every part of the site and its content. It’s pretty much a tie between the three CMS’s when it comes to ability to customize your site (with varying levels of difficulty), as each one is flexible if you take the time to learn how to customize it, and all three allow addons to be built and hooked into the system. A developer friend of mine once claimed to be “tool agnostic”, meaning he doesn’t have a passion for any one tool, just whatever is right for the job. I must admit that I’ve spent the past few years using ExpressionEngine exclusively for every project, whether it was the best fit or not. Now I have another tool in my arsenal, and I can truly say that the short time that I spent using it was well-spent, and it ended up being the perfect tool for this single author blog. Note: I still love ExpressionEngine as a general-purpose CMS, and for many projects, it’s the no-brainer go-to.