The next iteration: ExpressionEngine vs. Craft CMS vs. Ghost CMS

For the past few years, I've primarily been posting about stuff on my personal blog. That content has been routine recaps on my comings and goings with both my work and my personal life.

I think I want to split that up a bit and move the work-related stuff over here to my Updrift site. Turn it more into a work blog, keeping my personal site to stuff I do outside of work.


This site has used ExpressionEngine as the underlying software for almost the entire duration of the site's existence. I say almost because it originally started with TextPattern. Textpattern is still around, but still mostly looks and acts like a site from the 2000s. Far from modern.

In regards to ExpressionEngine, I've been really happy. During its v2-v3 period (currently v6), I used it to develop a number of sites for a handful of clients. Some still running today. It was great to develop for and there were lots of add-ons that could extend it to do just about anything you'd like.

Then ExpressionEngine started running into trouble.

It was always a bit of a pain to transition from development to production. Add-ons helped, but the process wasn't as smooth as it could have been. Other CMSs, Wordpress included, had one-click upgrade processes which ExpressionEngine did not have. Part of the problem was that the add-ons that made it so great were also a weakness in that they made sites much more difficult to upgrade. This is an issue I've run into myself. This is why I have client sites that are still on EE v3 and not v6.

A number of years back, some of its premiere third-party developers, became more and more unhappy with the state of the software and the slow response they were getting from the owners of the software. So unhappy, they ended up creating their own, competing product, CraftCMS.

CraftCMS ended up being what those developers wished ExpressionEngine would have become. As a result, a great number of ExpressionEngine developers switched. This left ExpressionEngine add-on development in a ghost-town state. The software stagnated a bit until it was sold to a new owner. Thus far, they've done a great job with it, but now it's playing catch-up to CraftCMS, and I'm not sure it will ever be able to catch up.

Updrift's site is simple enough that I have been able to upgrade to the latest version of ExpressionEngine. It still has the feel ExpressionEngine's always had, but they are clearly in the dust left from where CraftCMS has already been. I did want to try it out before making any decisions about whether it's time to try something new. I do like it. But in some aspects, it feels like it's more of a new coat of paint than a new, better experience.


Knowing a bit about how CraftCMS came around, I've always followed its progress. But since I moved firmly into Ruby on Rails application development, away from client website work, I didn't really have much opportunity to really dig into it.

Remember those now-stale ExpressionEngine client sites I mentioned? Well, I knew at some point I'd need to upgrade them. It would be painful. So painful that I figured it was worth investing in some time to see if it could be just as easy to switch them over to CraftCMS. So I watched some screencasts and developed a small example site to kick the tires.

Having done that, I think the effort would be about equivalent to upgrade an ExpressionEngine v3 site to v6 as it would be to redo it as a CraftCMS site.

However, CraftCMS has some additional benefits. The developer experience is much better. The administrative interface is much nicer and more intuitive to use. And, most of all, their active community. Sure ExpressionEngine's community is still around, but it's mostly a shadow of its former self.

My experience with it thus far has me interested in the next iteration of Updrift being built on CraftCMS.

But there's one main thing giving me pause, and that's that CraftCMS feels like it's overkill. The main benefit it'd give me is the experience of building and using my own site in the event I end up developing a future client website down the road.


That's where Ghost comes in.

I've used Ghost for my personal blog since I started it. It's been really good. The editing experience is really great. Typing this post in ExpressionEngine, I'm missing that experience.

Ghost is more for a standard, simple blog. It has membership-based features. Subscriber-only vs. public content. But it's all about writing posts and that's it. You're not going to extend it to provide an e-commerce shop, scheduling events, or a product catalog.

If there's a downside to Ghost it's that I've had occasional issues upgrading to new versions. I host my own instance rather than paying for them to host it. They make some awesome tools to make it as painless as possible, but I've been caught a few times with needing to upgrade my version of npm or node which has turned into a bit of a struggle at times.

Overall, however, that is only a very slight tarnish on my favorable opinion of Ghost.

So, what's next?

A new iteration of Updrift will be upcoming. When? I'm not exactly sure. I want to see if there are any other fresh CMSs out there I should check out. Right now, though, I'm kind of leaning towards Ghost but CraftCMS isn't out of the picture. After a long journey with ExpressionEngine, I think it's sunset day for me has arrived. I will still have a couple of sites with it to support, but I don't anticipate using it for future projects.

Exciting work at a Boring-Sounding Place

New post up over at my personal blog: [url=][/url]

Together, we create

I’m going to be writing more posts over at [url=][/url].

First up is [url=][/url]

While I’ll do some quick posts here to direct people I’ll eventually just have this site likely redirect over there at some point.

Power Home Remodeling Group in Fortune Magazine

Since the end of 2007, I've done most of my work for Power Home Remodeling Group. Creating the application that runs just about their entire business, Nitro. Fortune Magazine just named them the #1 Best Workplace for Millennials. Our core development team is just a few people. We want more. If you want to be challenged. Are a UX/UI person, Ruby on Rails developer, Front-End developer, even interested in technical support, let me know. [url=][/url]

RethinkDB is production ready

​I’ve been following the development of RethinkDB since I first heard about it a few years ago. My excitement over it has only grown over time. RethinkDB is an open source database that fits somewhere between a relational database like MySQL or PostgreSQL and newer schema-less databases like MongoDB. However, it’s got a few things I don’t think any other database has.

RethinkDB pushes results to your app in real time

Typically, you’d need a separate Publish-Subscribe system in place to do this. With RethinkDB, you can start a query and request to get changes. Your app will automatically receive any changed data related to your query after that. If you want something that’s closer to current Publish-Subscribe methods, RethinkDB has you covered there, too, with their repubsub library.

It’s insanely easy to cluster

This is right from their docs.
First, start RethinkDB on the first machine:
$ rethinkdb --bind all
Then start RethinkDB on the second machine:
$ rethinkdb --join IP_OF_FIRST_MACHINE:29015 --bind all
You now have a RethinkDB cluster!
That’s it.

RethinkDB’s web-based console is beautiful

RethinkDB comes with web-based console that most IT departments will want to display on the wall.
Read the official announcement at Rethink’s blog.

Ben Klang to speak at RailsConf 2015 on WebRTC

I've spent a lot of this year talking about Adhearsion and, at a functional level, how Power Home Remodeling Group integrates it into their workflow. MojoLingo is our partner in regards to all things Adhearsion. And part of that is creating a custom chat client that does things no other chat client can do. And that's offer things specific to our business that wouldn't apply to just anyone. It's about context. RailsConf 2015 is in Atlanta, GA. Ben Klang, from MojoLingo, will be presenting about using WebRTC to put real-time voice, video and text into your Rails application.

Adhearsion: Call Recordings

Previously, I mentioned that Power Home Remodeling Group makes around 48,000 calls per day. While a lot of those are no answers or answering machines we still make contact with a lot of people every day. We record those calls. If we don’t reach someone, we simply record whether or not we left a message on their machine, or if it was truly a no-answer. When we do reach someone and talk to them, Adhearsion records it. We do inform the person that we are recoding the call. When a call hangs up, our Talkbox Adhearsion application sends an API call to our main Nitro application. The path of the audio recording and the home it’s linked to are included so Nitro can put them together into that home’s overall communication history.