Deciding on a Platform. Winner: Craft CMS.January 29, 2014
It was difficult for me to determine which platform to use for the latest version of this site. Decisions about whether or not to have a database, and how I would be writing content had me flipping back and forth between different content management systems. I ended up with Craft CMS. Here's why.
So far, 2014 has been a year for me to try different things, or re-visit old ones. I started a regular exercise regimen again. We launched a self-funded SaaS product called Lamplighter. I completely changed my diet and am in the process of altering my sleep schedule.
As part of this "lifestyle overhaul" I decided to spend time writing again, however sporadically. I'm a regular Twitter user ( @masuga) but sometimes 140 characters isn't enough to share a complete idea.
First Rule: Keep It Simple
My personal site has been two static pages for at least two years. Maintenance and deployments don't get any easier than that. If I was going to start writing a blog again, how would I go about doing it? What system would I use? I wanted to keep things simple so I could concentrate on adding content now and again, without being too distracted or overwhelmed with bells and whistles. In my mind, this meant a flat-file system, where each post is a file in the filesystem. No database.
My first thought was to avoid a database altogether. There were a couple options that immediately sprung to mind:
I gave both of these a fair shake in local dev environments. I had a site 90% of the way there in Statamic, which I felt pretty sure I was going to use. Kirby was interesting and definitely lightweight, but it didn't suit me. Something didn't feel right for me when using either of them. I wasn't enjoying the flat file setup. It felt like something was missing. What was missing, for me, was a database.
Turns out, I'm a database guy. I like them. I like being able to query them if I need to. I don't like having one file for each post, and having to order them or include them in navigation based on how I name the file. That's not how I work.
OK, Database Me
I was back to selecting a system that uses a database. My blog used to be on WordPress back in the early 'aughts, and I basically haven't touched that system since, so I knew that was one I was going to avoid. It's not a system I have any interest in using personally. I didn't want to take forever to make a decision, and there are a million and a half content management systems out there, so I limited it to a couple that I have recent experience with:
I've developed many sites in ExpressionEngine over the past 7 years. It's a system that I'm extremely familiar with. I was thinking I could get EE set up quickly and just start writing. I began setting up a local development site and was moving everything into place so that system was above webroot, and moving this here and renaming that there and...I stopped. Already this was feeling like too much. I just wanted to start blogging again. This wasn't some complex client site (for which we would normally use ExpressionEngine at Masuga Design). For my purposes, I wouldn't even need half of what EE offers, feature-wise. So my decision was made for me. I should try Craft.
I wasn't sold on Craft at this point. It was the last thing to try. We'd only ever used it on one very small client site as a test. If this didn't work out, I'd have to re-evaluate again, and who knows, maybe I would have caved and installed WP.
It was time to give Craft a fair shake. I spent 7 hours with it one Sunday and came out the other side of that marathon session with a much better understanding of this CMS. By the end of that session I knew I would be sticking with it. Why? A few reasons:
- Feel. I spent hours clicking around in the control panel, editing fake entries, re-saving them, previewing, deleting, adding globals, adding and removing assets, etc. The control panel felt good. The Live Preview just worked. The control panel looks good and makes visual sense. I enjoy using the system.
- Error Reporting. This is something that has always bothered me in ExpressionEngine - the lack of useful error messages when developing a site. Having detailed error messages down to the line number was very useful in fixing my template code efficiently.
- Consistent Development. One look at the Craft Updates page and it's obvious the folks behind it are serious about bug fixes and general updates.
- People. I've known Brandon Kelly of Pixel & Tonic for years, ever since I emailed him years ago asking him to fix something on an ExpressionEngine add-on he had developed and released for free. I think he was shocked anyone was actually using it. It was called Playa and went on to be one of the top selling third-party ExpressionEngine add-ons ever. I trust in Brandon's ability to make decisions and to execute. (I trust Brad Bell, too, but don't let him know I said that.) Sometimes it comes down to the people. I want to see them succeed.
If there was any downside, it was the tough time I had learning the template language. I've used ExpressionEngine for so long that I "think" in EE when I approach a site build. It's no joke that you can't teach an old dog new tricks. Craft uses Twig as its template engine and I simply had to do the time by reading the f***ing manual and making the necessary mistakes.
Once I started getting Twig and template inheritance, it became apparent that it was going to be relatively easy to put together a site without repeating anything.
For this phase of masuga.com's life, Craft is the right tool for the job. I now have a very lean and super-flexible site that will be a breeze to maintain. Almost everything in the templates is dynamic and either pulling content from the entries or the globals I've set up as defaults.
I should mention that the way this site is set up, using Craft didn't cost me anything. I have a couple static pages and one section, with one user. I'm almost looking for an excuse to give Pixel & Tonic money for this install.
I'm glad I put in the time to figure out the templating syntax and refining a build, as I'm sure I'll be using Craft again in the future.
Ryan Masuga (@masuga) owns Masuga Design, a web development studio based in Grand Rapids, MI. Our latest project is lamplighter.io, a service for centralized CMS monitoring. Other projects include devot:ee and placeIMG.