Regarding The Switch to ExpressionEngine

I wrote my very first computer program in the 1970’s when I visited Temple University’s computer lab. I used punch cards to instruct a large computer there to print a picture of Snoopy on a dot-matrix printer using ASCII characters.

I wrote my first traditional program using BASIC on an Apple II circa 1982. The program printed my name on the screen. At the time, it was the coolest thing I’d ever seen.

And you know, as I think back over the years and reduce things down to their simplest form, I’ve realized that’s actually what I’ve spent most of my time doing: writing code to display stuff on a screen.

Many of the projects I’ve worked on required the creation of custom software, primarily because — at the time — there weren’t systems capable of doing what my clients needed to do in the way that they needed to do it. So we’d start from scratch and create something new, something that would work exactly the way the customer wanted.

Over the years I’d built up a nice, reusable toolkit, mainly in PHP, some in Java, that allowed me to create customized, feature-packed systems in a reasonable amount of time. I’d spend my spare time tinkering and improving the code, using Hivelogic as a coding playground of sorts.

Each site redesign was actually just an excuse to roll out a new set of features or in many cases, an entirely new publishing platform. Sure the design was changing, but behind the scenes, I was moving from systems written in Perl to ColdFusion, or one version of PHP to the next, or trying out an entirely new platform, like Rails.

It was fun.

Taking Stock

I finally realized that I was spending more time tweaking code than I was writing. This would be justifiable if I had been either open-sourcing or selling the software, as others would benefit as well, but as a little hobby, I couldn’t justify the time. Sure, there was a time when I really enjoyed spending evenings and weekends in front of a machine pressing buttons, but these days, I’d rather spend my free time with my wife and our little boy.

At the same time, I needed new features and I didn’t have time to implement them. I wanted to use MarsEdit to create content. I wanted reliable spam filtering for comments. I wanted an improved workflow, easier methods to manage different kinds of content, versioning, bookmarklets, member management, newsletter integration, more! And while I knew that I could create all of these features, I’d rather spend my time creating something that would be useful to people other than just me. I’d rather just write.

It was time for a change.


I had a long list of requirements, but I quickly discovered that I could use some of the same techniques I’ve used with clients to distill things down to their most basic elements. This process revealed a simple, straight-forward list of needs that translated into a nice working set of requirements that I could use to shop for a new publishing system.

Update: I have written an article entitled ExpressionEngine: the Details, which lists the requirements I mention above, as well as my ExpressionEngine configuration and all of the modules, plugins, and extensions I’m using.

Many people reading this article know me as a “Rails guy.” After all, I’ve written a lot of tutorials relating to Rails. Many of the more well-known systems I’ve built or collaborated on (like ALA and Cork’d) were created in Rails. I’d spoken twice at Railsconf. Hivelogic was powered by a Rails app.

To be sure, Rails is my favorite web application framework, and I think it’s a great platform with a great community behind it. But Rails is also just one of the application frameworks I like using. And although it’s my favorite, Ruby is just one of the languages I’m familiar with.

Back in my day — let me get my cane, top hat, and horse-drawn carriage — you wouldn’t dare list only one programming language on your resume. You were expected to know (if have mastery of) several languages and frameworks.

So the idea of using a PHP-based system was just fine by me — not because I’ve been a PHP developer since 1997 — but because I wanted the best tool for the job, and because I wasn’t planning to crawl around under the hood.

I just wanted something that works the way I’d like it to, that has the same “values” that I have for prioritizing and managing content. I wanted a system that gets out of my way. My days of tinkering with my publishing system are over.

It’s time to work.

Decision Time

I considered fully hosted systems. I looked at self-hosted software, open and closed source. I kicked tires. I talked with friends. I researched. I tried online demos. I downloaded, installed, configured, imported, and benchmarked. I lurked secretly in support forums and development communities, like a newbie. I debated wearing Converse All-Stars and popping my collar, but didn’t.

Movable Type. Radiant. Typo. Tumblr. Mephisto. ExpressionEngine. Typepad. Textpattern. Drupal. Squarespace. Excellent options, all. Each with their own pros and cons, communities, and quirks. I probably would have been happy with any of those systems.

But in the end, at long last, there was a winner: ExpressionEngine, a flexible, feature-rich publishing tool with my kind of sensibilities and content-focused priorities. It worked the way I wanted it to work, and I found it very easy to customize. It’s a commercial application, which I see as a plus these days. And there are great resources available for getting started. I used Ryan Irelan’s ExpressionEngine screencasts, an invaluable resource, to help me to integrate the new design with relative ease. I found answers to my implementation questions quickly and easily in the EE forums (questions there are frequently answered by the developers themselves). Hivelogic has been running on ExpressionEngine for about a month so far, and I’ve been very happy with it.

Running this site on “somebody else’s software” was a big step for me after so many years of using my own home-grown system — Hivelogic turned 9 in 2009, and with one very brief exception, has always been powered by my own software. I learned a lot in the process, and I’ll be sharing some of the EE templates I’ve created along the way in the hope that they may be useful to other people making the transition as well.

If you have specific questions or requests, let me know what you’d like to hear about in the comments.

More articles in the Archive →