
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.
Options
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.








Morgante Pell
21 April 2009 at 11:42 am
Did you give Habari a try?
EE is certainly a good platform, just wanted to see if people are even hearing about Habari at this point.
Dan Benjamin
21 April 2009 at 11:47 am
@Morgante - I hadn’t heard about Habari. It looks like an interesting open source alternative.
Bryan Hoffman
21 April 2009 at 12:16 pm
I both love and loath Expression Engine for various reasons.
As a ‘designer’ rather than a ‘developer’ I love how it allows me to quickly and easily build a site within an extremely flexible content management system. It really is the only choice for me when it comes to complex sites.
On the other hand, I still haven’t been able to hand an EE site over to a client without an _extensive_ training session. A little html has to be taught as well because there isn’t a built in wysiwyg editor (TinyMCE always breaks the image uploader for me). The admin area feels overly complicated.
I know Ellis is coming out with version 2.0 soon, but that hype has been going on for nearly a year now… and still no v2.
The fact that you’re using EE now Dan reinforces my decision to stick with it. I just hope the next version fixes some of my core issues.
Ben Kimball
21 April 2009 at 12:23 pm
Very interesting. I’m actually considering going the other way, from EE to my own Rails app, after using EE for a few years. I found myself writing a lot of EE and PHP code to make EE behave, and it finally got too painful. I suspect you’ll have better luck, though, because it’s more suited to what you do than what I needed.
Bill
21 April 2009 at 1:01 pm
@Bryan I use EE for my school - everything - I agree there is training, but it’s not extensive :-) For example, it took me about 45 minutes to write up a HOWTO on adding a news story for the social studies department. Now they can add / edit / delete their department page. I’ve also coded up a full front-end control panel that is idiot-proof ;-)
@Ben for real? Like, what are you trying to do that EE cant? is it member stuff or CP stuff?
Kel
21 April 2009 at 1:22 pm
You’d mentioned a “long list of requirements” which then translated into a working list… is this something you can share?
Lately there’s so much comparison of blogging systems vs. cms’s, all of which are ultimately “publishing systems”, so I’d like to see what your goals were and ultimately why EE won.
Thanks!
KJ
21 April 2009 at 2:02 pm
I think EE is a great choice. I’ve been using EE for years and it’s my “go to” CMS for most of my projects. Our entire site over at http://www.ariasystems.com/ is built on EE. It is by far the most flexible CMS I’ve used. It’s also documented very well and has an awesome community surrounding it.
Erik
21 April 2009 at 2:02 pm
I’d like to echo Kel’s query. It would be really intriguing to be able to read your needs survey.
Ed Fladung
21 April 2009 at 2:04 pm
just curious as to why WordPress never got a tire kicking.
Cameron Westland
21 April 2009 at 2:11 pm
We opened up our Expression Engine code for other developers to look at. http://github.com/camwest/bigbangtechnology.com. Coincidentally we’re Rails developers as well. Expression Engine just works.
vik407
21 April 2009 at 2:35 pm
I used too, and after try many of the know options (wp, drupal, textpattern…) i realize that custom fields on the core of the cms is one of the more valuable features of a adaptable and extensible system.
Nathan Pitman
21 April 2009 at 2:58 pm
Hi Dan, it would be great to learn more about your exact requirements, where EE worked perfectly for you and where you had to make compromises.
It would also be very interesting to hear what (if any) extensions, plug-ins and modules you are using?
That last line really does make me sound like a true ExpressionEngine geek! ;)
Bryan Hoffman
21 April 2009 at 8:19 pm
@Bill If you’re setting up a blog for someone who doesn’t know html, how do you go about building an entry form that allows for subheads and images to be placed without having to teach ‘class=‘alignright’ or the difference between <h3> and <h4>?
Most of my clients end up breaking things. It’s a good thing most sign some sort of maintenance contract.
@Dan - How are you combatting comment spam?
Terjin
21 April 2009 at 9:41 pm
Hi Dan!
You tweeted a while back if anyone would be interested in seeing the EE code you used for the latest version of Hivelogic. I replied but guessing that you didnt get it since you dont follow me. No biggie.
If you find the time, perhaps how you tackled the “interesting” or confusing parts of the EE re build would be great.
Terjin
21 April 2009 at 9:43 pm
@Bryan Hoffman there is a great extension called Akismet that you can use to combat spam. Its based on the Akismet service provided by Wordpress.com
Martin Rio
21 April 2009 at 11:11 pm
Very curious about any specific reason for choosing EE over Drupal, if there are any.
Cheers!
Martin
Michael
22 April 2009 at 12:04 pm
One article since April 7th. If I am going to be making Hivelogic a daily read I am gonna need more content. I enjoy reading your articles, but there are times when i won’t visit your website for months because of the lack of new content.
I love reading daringfireball because of the constant amount of quality content. I know you are not trying to duplicate John Gruber’s site, but what makes his site successful is the quality of his content and the quantity. I have a reason to go to his site everyday. If I don’t I feel like I probably missed out on something.
I would love to frequent this site with the same feeling of anticipation. To almost need to visit everyday to be satisfied.
Kirk Franklin
22 April 2009 at 2:28 pm
I know Ellis is coming out with version 2.0 soon, but that hype has been going on for nearly a year now… and still no v2.
Over a year, actually. They announced 2.0 at SXSW 2008.
Dan Benjamin
22 April 2009 at 5:31 pm
These are great comments, thank you.
Those of you asking for specific details about my requirements, the install, plugins and modules, etc. I’ll be sure to answer them in my next post.
@Michael - I certainly understand your point of view, and posting more frequently is part of the new plan here.
Those of you writing about EE 2, from what I’ve heard, it will be worth the wait.
John
22 April 2009 at 6:44 pm
I adopted the use of ExpressionEngine several years ago to manage our school district’s website. With Dan’s endorsement, I feel I chose well.
I too used Ryan Irelan’s Pragmatic Screencasts this past summer and they forced me to extend what I was already doing with EE. I like EE for its flexibility. Our sites don’t have to look like “blogs” despite the backend does blogs well.
Incidentally, when we wanted to host teacher blogs, we chose WP-mu over EE—but our main site runs EE and has about 15 different contributors. Thanks, Dan, for your sharing your experience.
Nadeem Bitar
23 April 2009 at 9:53 am
I am switching away from EE. I already switched one site and need to switch another.
I hated the broken concepts, slow development, and the templating language.
Expression Engine is conceptually broken since it treats everything like a blog which is so confusing. Also when we bought EE, EE2 was supposed to be released “very soon”; that was two years ago.
I would stay away from expression engine; especially since it’s closed sourced and have an amazingly slow development cycle.
Eddie Wilson
24 April 2009 at 3:29 pm
I think everyone would be interested in an article on how you fine tuned EE for your own purposes. Also where are you hosted, and did you notice a change in performance from your previous site? From personal experience I find the vast number of queries used for the templating system (even with massive caching) to be a little daunting. That and the extreme db abstraction.
BTW, congrats on the switch. I myself have been running EE for a few months and I think the benefits outweigh the drawbacks.
Richard
28 April 2009 at 11:57 am
@Nadeem Bitar: what do use instead? Wordpress or something self made?
Donovan
03 June 2009 at 9:12 pm
I’ve been wanting to test the expression engine for awhile now, seeing Dan bless the app the way he does in this article just made me decide to use it on my next personal project.
Tef Toircalltraith
12 September 2009 at 12:08 am
capitulation in the stock market.
Fresh examples of cherry picking are all outstanding the street stockmaekt cmoemjtary.. Investors develop strapping institutions and investors like Warren Buffett, who is known looking for calibre trades sgcok mraket preidctoin 2008. . Cherry picking is really following the trades of a profitable salesperson or installation that has a long history of trading success. On the cherry picker, trading systematize is based circa the proven techniques and strategies of other investors. Cherry picking provides easy profits in both cheer and bull markets india stoco market price. . Professional traders are far-sighted to aficionado of the par