Recently in Commentary Category

Apple's iPhone 3Gs has had a bit of a muted--dare I say disappointing--reception. Unlike with the 3G launch, very few of the new OS 3.0 features depend on the 3Gs model, and for most iPhone users (for me at least), there aren't compelling reasons to upgrade.

None of that matters, though. Apple's going to make far more money for another reason: they didn't discontinue sales of the regular iPhone 3G. Through AT&T subsidies, you can now get an iPhone 3G for $99. That puts the iPhone in the same price category as an iPod Shuffle!!!

While Palm, Microsoft and the phone manufacturers try to figure out how to build a better (more feature-filled, expensive) iPhone, Apple snatched the floor out from under the market. There's very little distinction now between "regular" phones and "smart" phones in terms of price now, and Apple is making the best smart phone at the cheapest price. I wouldn't be surprised to see iPhones completely dominating the entire phone market soon, forget about dominance in the smartphone category.

Update: I've since realized that the iPhone 3Gs might be what Dan Ariely calls a "decoy choice". The expensive, top-of-the-line 3Gs causes the iPhone 3G to appear as a middle-of-the-road, value-conscious choice, by virtue of its straightforward comparison with the more expensive model. Ariely's book Predictably Irrational, describes Williams Sonoma's successful use of this technique to sell the first bread machines.

Ruby on Rails is an excellent framework for building web applications. Perhaps the best. But it's not currently very well suited to what I call web sites.

The difference is simple. In a web site, the unique business value comes from the content creators (authors, bloggers, photographers, etc). In a web application, the business value comes directly from the programmers. Twitter, Google, Basecamp and eBay are web applications. CBSSports.com, KentuckyDerby.com, corporate brand sites and original news sources are all web sites.

For these projects where it's the content that matters, there's no reason to spend time hand-coding models, controllers, views and test code for things called Pages, Articles, BlogPosts, CalendarEntries, and all the other unique types of content. You're just re-inventing the wheel if you do, because there are numerous existing commercial and open source CMS tools that can do the job cheaper and better than you.

Unfortunately, I find that one of the most common scenarios is a hybrid web site that needs an attached web application. A corporate web site that needs an attached scheduling tool. A news site that needs an interactive, custom-searchable database. A sports site which aggregates content from an old NNTP-based data source.

Depending on the specifics, you usually have 3 different approaches to this problem:

  1. Two side-by-side applications. - Pair an off-the-shelf CMS with a custom built application. Copy/paste the visual elements, and loosely wire the two together with a subdomain or some kind of web proxy to share the URL structure
  2. Extend the CMS - Build a proprietary plugin or extension for the CMS to implement the application features.
  3. Soup-to-nuts custom application. Build a complete CMS as part of the project.

If scenario #1 is truly possible, it's the best approach. Unfortunately, it's often the case that the two systems need to share user accounts, group permissions (or worse, business logic) and data. Once you link the code and data of the two applications, you actually have a particularly "smelly" case of scenario #2.

And scenario #2 is usually a bad idea, unless you are really committed to the CMS you've chosen. This approach tightly couples your value-adding intellectual property directly to a CMS that generally has nothing to do with your business. If your CMS vendor is out of business in 5 years, you'll probably need to completely rewrite that custom extension to work in some new system. Unfortunately, this seems to be the most commonly-used approach. Radiant's extensions have this problem, and so does the Block/Portlet system in BrowserCMS.

Finally, scenario #3 is just plain wasteful. If your CMS needs are anything but trivial, you're going to spend a lot of time and money building CMS features that have nothing to do with your business enterprise. Unless you accidentally build an exceptionally good CMS tool that you then sell to others, all that money is wasted.

The reason for this problem is that Ruby on Rails is a framework for applications, not systems. The error in all of the reasoning above is that the described CMS project is not a single application, but a system of two (or more) applications.

I've seen some very attractive developments that will help to address this issue in future Rails applications. First, the inclusion of Rails Engines in 2.3 is going to lower the level of coupling for cases where the CMS can be an "engine" within the application. There's some hope that an even more flexible solution may be forthcoming. These solutions help to flip scenario #2 on its head. Unfortunately, this still leaves your application largely dependent on the CMS vendor. You may have trouble customizing the CMS' features without hacking the engine (or "mounted app") code directly.

Over the past few months, I've been working to find better solutions to the issues I've raised here. I'm in the process of building an experimental engines-based CMS plugin, through which I hope to gain some active insight into what makes this problem so difficult. I'll be posting my analysis as it crystalizes. If the CMS turns out to be effective for my uses, I'll be releasing it to GitHub.

For now, I'll simply leave it at this: I believe the solution lies in finding a common "language" for an application to communicate with its plugins, and for those plugins to communicate with one another. In the case of authentication and authorization, this means a plugin needs to know how to ask about the identity and rights of the active user.

Django and Drupal, have made the framework itself answer that question (both Django and Drupal have admin interfaces and user management features somewhat baked in). I'm not convinced that's the best approach, but it seems worthwhile to consider that approach for Rails.

My CMS plugin is opting instead to look for API functions at the controller level to answer these questions (i.e. the plugin assumes you have a current_user() method in ApplicationController, but allows you to customize the name and behavior of that).

Update: Thank you for all the encouraging comments. There are sure some good people out there in the Rails community. I wanted to draw some attention to ferrisoxide's blog post: "Rails is a CMS". This thought is very much along the lines of the experimental development I'm doing. The goal for my approach is to leverage as much of the flexibility of Rails itself for it's feature set.... in that way I'm planning more of a CMS-enabler plugin than an actual out-of-the box CMS.

Update 2: I wanted to also draw attention to Aaron Bedra's comments about CAS, specifically Castronaut as an implementation pattern for scenario #1. It didn't even cross my mind when I was writing this post... and CAS seems to be one of the most under-hyped technologies out there. More on that later.

Just heard this great Clem Snide song, called Find Love on NPR's All Songs Considered:

Don't let hurricanes hold you back
Raging rivers or shark attacks
Find love, and give it all away
Find love, and give it all away
Wrestle bears bring them to their knees
Steal the honey from killer bees
Find love, and give it all away
Find love, and give it all away
Don't be scared to connect the dots
And dig for gold in the parking lot
Find love, and then give it all away
Find love, then give it all away
Find love, then give it all away

Alan Kohler has some commentary over at Business Spectator that suggests a stunning ending for the global financial crisis; one that actually involves a massive windfall for the banks themselves.

It is now getting very interesting. The three Icelandic banks have defaulted, as has Countrywide, Lehman and Bear Stearns. AIG has been taken over by the US Government, which is counted as a part-default, and Freddie Mac and Fannie Mae are in “conservatorship”...

Ambac, MBIA, PMI, General Motors, Ford and a lot of US home builders are teetering.

If the list of defaults – full and partial – gets to nine, then a mass transfer of money will take place from unsuspecting investors around the world into the banking system. How much? Nobody knows, but it’s many trillions.

...

The distress among those who lose their money will be immense. It will be a real loss, not a theoretical paper loss. Cash will be transferred from their own bank accounts into the issuing bank, via these Cayman Islands special purpose vehicles.

The repercussions on the losers and the economies in which they live, will be unpredictable but definitely huge...

There will also be a tsunami of litigation, as dumbfounded investors try to get their money back, claiming to have been deceived by the sales people who sold them the products...

But for the banks, it’s happy days. Suddenly, when the ninth reference entity tips over, they will be flooded with capital. It’s possible they will have so much new capital, they won’t know what to do with it.

Brad Feld's got some well-put advice for our new president on his blog. My favorite:
When asked what advice she'd give Obama, [Madeleine Albright] said two things. First - "listen". Second - "be confident, but not certain." She described Bush as a president who has been too "certain" - he's "certain that he is correct on all issues and then never listens." In contrast, she wants a president who is "confident" yet willing to listen, learn, and adjust his point of view based on the data presented.
That's good advice for anyone... not just politicians.
Norman Wolfe on Why the Executive Compensation Debate is Fundamentally Flawed:
Yet in the current discussion on CEO pay we take as a given that CEOs are in it for the money and we have to pay them to get them and keep them. Yet these very same people would not take this position with their own organizations. Or if they do is this the kind of culture or tone at the top you want for your company.
From this perspective, the argument for high-CEO pay runs counter to a lot of wisdom about avoiding hiring people who are driven only by the salary. Unfortunately, the entire elite executive culture probably needs to change first before we start seeing reasonable executive salaries.

Who's this guy?

Aaron Longwell is Chief Web Craftsman at New Media Logic Corporation in Coeur d' Alene, Idaho. As a professional software developer for 12 years and a student of public policy, he occasionally has interesting things to say about software, technology, culture and politics.

Subscribe to feed Subscribe to my RSS Feed

  • View Aaron Longwell's profile on LinkedIn
  • Recommend Me