Monday, November 01, 2010

The Roundedcube Blog is now on www.roundedcube.com

We have launched a new http://www.roundedcube.com/ where you can find all future blog posts and all of the published content from this site as well.


Please take a quick moment to adjust your favorites to direct you to http://blog.roundedcube.com/ to read more from the team at Roundedcube.

Tuesday, October 26, 2010

Windows Live Space Moving to WordPress?

You may have heard this already, especially if you’re a Windows Live blogger, Windows Live is “upgrading” it’s blog service using WordPress. How convenient? According to Dharmesia Mehta, a Microsoft blogger, “Rather than having Windows Live invest in a competing blogging service, we decided the best thing we could do for our customers was to give them a great blogging solution through WordPress.com.”

Wednesday, September 22, 2010

Sitecore for President (well for Government Sites)

Roundedcube will be featuring Sitecore at the National Association of Government Webmasters (NAGW) to be held in St. Louis, MO from Sept. 22 – 24. We’re definitely excited for being part of the show because I think we definitely got something to show. One of the highlights will be our work for the City of Ogden, UT which was released last year (a Sitecore case study is also available if you want a copy).

One of our goals in the NAGW show is to feature how Sitecore’s capabilities match up with government sites’ needs and processes. This is not just in the technical point of view but also with its user-experience, deployment scenarios, maintenance, and multi-site/multi-language capabilities. I think these are some of the most important factors that government entities look for. So, let’s take a look at them one by on in summary form. This is by no means the complete list but I’m highlighting what government sites may be looking for.

Technical Capabilities

I can’t tell you everything about Sitecore here so go to sitecore.net to get more details but here’s a quick synopsis. It’s built on .NET (primarily ASP.NET). If you know .NET, then you should know that Sitecore takes advantage of .NET capabilities and enhance upon them such as provider model, reflection, XML/XSLT, and others. Programmatically, if you’re a C# or VB.NET shop, you’re good to go. Sitecore has a rich set of API from content creation, workflow invocation, security, to just about anything else you can do with .NET. It supports .NET 3.5 and up, so if you like lambda expressions, LINQ, entity framework, and other enhancements, go for it. One of the most complex systems we built with Sitecore was integrating JD Edwards on AS/400 through a SOA-based middle-tier using Web services as Sitecore integration points to expose customer-based pricing, product configuration, and others. In government sites, you could be talking about several disparate custom/off-the-shelf systems. Having a common platform to integrate them and manage them can be a key factor in realizing your ROI. So, in short, Sitecore is so open that you can do whatever you need to do in .NET. I consider it a development platform not just a CMS.

Multi-site/Multi-language Capabilities

If you’re looking into Sitecore to fire up your city site, then you might also consider using it for other sites. Sometimes, it’s hard to justify having a commercial product when open-source options are available. But, if you start thinking that you can have several sites on one instance of Sitecore, you can start lowering the cost/site. Even if you only have an Intranet, that’s using Sitecore twice. In Sitecore, you can create different security domains similar to Windows. That means, you can set up different domains and security access per site. There’s also the UI, Sitecore uses the Windows Explorer paradigm for traversing your Website. That means that you can make your Website root nodes be like your C and D drives. Of course, everything else in Sitecore can be multi-site aware and group content, workflow, media files, users/roles, and others together. You can also share them between each site if you need to. If you really need more advanced multi-site capabilities, consider looking into Sitecore Foundry which is built on top of Sitecore CMS.

Some government sites have multi-language needs. Sitecore’s architecture accommodates basically any languages. You can either have a per-content translation if all your site requirement is that the site have a language translation. Or, you can combine Sitecore multi-site and multi-language capabilities to have a very flexible content-managed site. For instance, you have an English-based site but also want a Spanish translated version of the site but not the entire site. So, you can create another site and have Spanish be its default language. Remember that a content’s language can be versioned as well. This means that your English version can be in version 5 while your Spanish version can still be in version 3. Not the same version has to be published at the same time.

User-Experience

I quickly mentioned earlier that Sitecore uses Windows Explorer paradigm. That’s just for the Content Editor (which is a built-in Sitecore app). Sitecore has several user interfaces (UI) but its main one mimics your Window desktop. This means that a Sitecore app runs inside a Sitecore window. Can you say multi-tasking?

The coolest feature is obviously the Page Editor which allows you to update your site within the site’s design. It’s old news of course, but just remember that a Sitecore solution should have content reusability. This means that if you update content such as a news item’s title on the news listing page, then it better be updated in the related news areas or even on the news details page without anymore than saving and publishing the content. Other CMS systems unfortunately do not have the level of content/design separation that Sitecore has so even if they have the in-page editing capability, it doesn’t necessarily mean that it’s easy to update content.

Sitecore also has UIs for designers, developers, and administrators in addition to typical author/reviewer/publisher UIs. This makes the Windows paradigm much more effective. If it’s worth it, imagine creating your own Sitecore apps to manage external systems or data. This gives everyone a single point of site administration…all browser-based.

Deployment Scenarios

City/town/county sites are normally on a one-server deployment scenario. That’s why hosted CMS solutions are one of the more popular commodities out there for government. But there are those that would like to consolidate systems together and when you do that, you sometimes need in-house servers. And if you have in-house servers, security and performance become factors to consider. Sitecore can accommodate separate function-specific servers such as an authoring, publishing, and delivery server. You can cluster these servers when needed. Since Sitecore uses your database (SQL Server or Oracle), it’ll run on whatever clustering you have on those. Sitecore can even run on Azure (cloud-processing/computing available from Microsoft) but I’m sure it can maybe even run on your own cloud if you have one. Obviously, clusters and separation of roles contribute to the overall performance of the system. It also contributes to the solution’s security since now each layer (or environment) can be protected in different levels. You can put your delivery servers outside your firewall while keep the authoring server internally.

For disaster recovery (DR), you can have your load-balancer control that if you like. You can have Sitecore publish to a DR server at the same time the delivery servers are updated. So, when the regular servers go down, the DR server can kick in immediately. Or, you can use the DR server in a load-balanced environment to help performance. Yes, it sounds easy because it is.

If you have only one server, then you can still separate the server roles if desired because remember, Sitecore is built on top of ASP.NET which makes it just another ASP.NET application. So, you can have multiple instances of it in one server (or virtualized if you like). Just make sure to talk to your Sitecore rep on what this entails in terms of licensing.

Anyway, Sitecore’s deployment capabilities is one of the factors that I consider it as an enterprise-ready CMS but flexible enough in a one-server environment.

Maintenance

Government sites normally means a limited IT staff, even less when it comes to the Web site. So, having a CMS that make administration easy should be on top of the requirement needs. With Sitecore’s UIs, all the day-to-day site operations are readily available such as security.

There was a question on LinkedIn regarding Sitecore maintenance on the type of staff member that should be an administrator. Basically, I recommended a technical person who has experience with security, audits, applications, and other technical stuff. I added that separating Webmaster roles from site admin can sometimes be crucial but if that’s not possible, then you need to have both the marketing and technical skills to administer Sitecore. The CMS addresses both the marketing and IT responsibilities when it comes to Web sites.

In terms of the Sitecore’s performance and availability, remember that since this is built on ASP.NET, it’s just an ASP.NET application. There are no additional server components that are installed on the server(s). This means that you should plan the same way you would with another ASP.NET application.

Bottom line though, the administrator should attend a Sitecore Administration training and see how easy it is.

Summary

Government sites pose a different level of challenges for Sitecore such as budget, staff, and processes. At first glance, Sitecore can be extravagant if you consider open-source or hosted alternatives, but if you consider the above factors, you may be able to determine how to maximize your ROI. I know our clients have.

*EDIT October 28, 2010. We have moved our blog to http://blog.roundedcube.com and you can now comment on this specific post at http://www.roundedcube.com/WhatsNew/Blog/sitecore-for-president

Tuesday, September 21, 2010

Customize the Sitecore System Tray

The Sitecore Desktop is just like Windows, it’s customizable. Not a lot have utilized it because there’s not much about on how to do so except for typical user-specifics such as wallpaper, desktop shortcuts, etc. Here is one thing you can do to the system tray.

WARNING: Make sure to be cautious when making these changes as these updates the Core database.

  1. Click on the Database Selector and select Core.
  2. Under the Core database, open the Content Editor.
  3. Go to sitecore/content/Applications/Desktop/Tray. You’ll see the Database item there which defines the Database Selector you see to the left of the time in the system tray.
  4. Let’s add a new Toolbutton and name it OpenWebsite.
  5. In the OpenWebsite item, the key fields under Data are:
  • Click: defines the system command that is called when the item is clicked on the tray (for our example use “system:openwebsite”)
  • Icon: the icon used on the tray (for our example use “Network/16x16/earth.png”
Play with the other fields there and see how it changes the tray.

*EDIT October 28, 2010. We have moved our blog to http://blog.roundedcube.com and you can now comment on this specific post at http://www.roundedcube.com/WhatsNew/Blog/customize-the-sitecore-system-tray

Friday, September 17, 2010

Dynamic Sitecore Desktop

I was playing around with Sitecore and I saw John West’s way of randomizing the desktop wallpaper. He uses a logging in pipeline processor that essentially updates the Wallpaper property of the user. It’s pretty cool….so I get to thinking…let me try to make it more dynamic.

I’ve always liked how the new HTC or Droid phones’ “desktop”. They show the nice nifty time/date plus the weather. It’s pretty cool to see something quick like that. In fact, there’s an HTC Home port to Windows on CodePlex that does just that. So, why not in Sitecore? Well, watch the video and tell me what you think? It’s not exactly like the Droid or HTC but you get the idea.




I basically updated the Shell application (Shell.xml) to include some nifty jQuery stuff. Sitecore does support jQuery (the noconflict version) and allows us to do some cool jQuery. In fact, you’ll see the library included with the install:

/sitecore/shell/controls/lib/jQuery/jquery.noconflict.js

Anyway, I created a UI widget library that essentially generate the time and weather on a layer on top of the desktop layer. This exercise had no C# code involved but I do want to warn you that this could bring Sitecore down. So just be careful.

I thought that this was pretty nifty and could open a new set of apps, interactions, and UI for Sitecore. If there’s enough interest, I might continue this line of widget apps and maybe make a library of it. What kind of things do you think would be useful to content editors, developers, etc? Or maybe a game like Minesweeper?

*EDIT October 28, 2010. We have moved our blog to http://blog.roundedcube.com and you can now comment on this specific post at http://www.roundedcube.com/WhatsNew/Blog/dynamic-sitecore-desktop

Tuesday, September 14, 2010

Sitecore to Support MVC...What Do You Think?

When I first saw that Sitecore is going to support the MVC architecture in a future release, I wasn’t sure exactly what that means. I have some experience with MVC. I know about ASP.NET’s implementation and also the S#arp Architecture that improves upon Microsoft’s version. To me, MVC architecture is great with applications. It allows me to separate (decouple) the various layers and actually make coding them a lot easier and focused. So I ask, is this a way for Sitecore to tell us to start building apps with the Sitecore framework as well?

I would really like to know up to what level the MVC support will be. Will there be technology preview? I would like to get a hand on an alpha release and see how it compares with the other architectures. I’d like to be able to play with it using ASP.NET MVC Web controls or other commercial libraries. Maybe Sitecore will just support it to allow those parts of a Website that requires more complex logic, that may be easier to implement with MVC, that are more code-heavy to implement. I don’t see it being used on a Website which is what a CMS is for. But, I do see it being used for an Intranet or even Sitecore applications.

I’ve seen some forum posts and inquiries about MVC within Sitecore. I’m not sure exactly what they are doing so I can’t speak for them. However, if you’re reading this and have done it, comment back or post a link to your blog that talks about it. I think there are tons of people wondering about how one decides on using MVC or just typical ASP.NET form-based approach.

If you have your own take on this….let us know.

*EDIT October 28, 2010. We have moved our blog to http://blog.roundedcube.com and you can now comment on this specific post at http://www.roundedcube.com/WhatsNew/Blog/sitecore-to-support-mvc-what-do-you-think

Wednesday, August 25, 2010

Geo-location Provides Badges and Tests User Privacy

A Conversation Between Two Social Media Nerds

Shane and I have been randomly discussing geo-location during meetings and while eating our lunch for months now. We gently argue back and forth about how fun it is, how silly it is and how safe it is. Shane is adamant about becoming the mayor of a local Mexican food joint. I on the other hand know that no one is interested in where I eat lunch or get my coffee. When I caught wind last Wednesday that Facebook would be launching Facebook Places later that evening, I thought it was a perfect opportunity to put our rants out there for everyone to "enjoy."

Q1: What is your preferred geo-location based app? Why?

Shane: When it comes right down to it I haven’t found any hugely beneficial qualities to location based apps so trying to answer why I chose the one I have now is a hard question to answer. Prior to reading the recent press about Facebook Places I had never even considered there were options other than Foursquare. Initially, the only reason I started playing with Foursquare was that it was new, it was generating a little buzz and being in the technology business I think it’s my duty to at least give some of these things a go…not dissimilar to why I started using Friendster back in 1997. Then, as I started travelling more, it only made sense to check-in on Foursquare because they would automatically update Twitter and Twitter would update Facebook. Therefore I was able to passive-aggressively brag to all my friends that I was now going to a Cubs game while they were stuck in the office. On top of that I do enjoy having a history of what I was doing and where I was at. Call it a lazy man’s journal which now happens to include corresponding pictures thanks to Flickr. I only have one mayorship (which is a slightly compelling reason for me to continue using Foursquare) and I do have a few friends that use it so I see no reason to switch platforms at the moment.

Alisa: I have never used any of the various geo-location applications. I also disabled the Facebook Places check-in options last week as soon as I learned how to opt out of them. It's not that I do not see the value in geo-location in terms of analyzing social behavior, it's simply that I deeply value my privacy and I don't see the purpose of checking in to my local sandwich shop or favorite watering hole. Even if I was offered an incentive to do so, my privacy is worth more to me than $1 off my mocha or 10% of my dining bill.
On the privacy note, some people have asked me, "Why participate in the social media world if you are so protective of your privacy?" And my answer is simple, "I participate in social media to communicate with my friends and family who I know and trust. The rest of the world doesn't need to know what I am doing or how I live my life ... not that the rest of the world would care to begin with. Information on the internet tends to 'live forever' and in 100 years no one needs to know that I have cute puppies or enjoy a certain neighborhood cafe."

Q2: How are both small businesses and large corporations taking advantage of geo-location and what value does geo-location provide to businesses?

Shane: At this point, and having used Foursquare for about a year now, the only place I can remember offering me a discount based on my Foursquare check-in was Hash House A Go Go in Vegas. Interestingly enough I would have never remembered what the name of that place was had I not been able to go back through my Foursquare history. Showing the server my check-in, I was offered a discount on a drink. Nothing earth shattering but enough to make me check-in. Would my decision to check-in be different were I offered a free pair of Spock ears at this year’s Official Star Trek convention…undoubtedly so.
At the moment I don’t see any huge beneficiary of location based services. On the other hand I could see that changing though in favor of the SMB market. Granted, the Starbucks of the world can implement a rewards program for thousands of franchises all over the country but how many Fortune 500 companies are going to go to the effort. In the grand scheme of things there are a lot more mom & pop, Tex’s Cafés out there than there are McDonalds and Applebees so it seems like the success of the technology may depend more on the 99.7% of small businesses rather than the .3% of large corporations. The problem with that…the owners of Tex’s Café aren’t the type of folks using Foursquare. Google sent 100,000 ‘Favorite Places’ stickers to local business all across the country. I don’t know what the cost of that was but I would suggest Foursquare start focusing some marketing dollars on building up vendor awareness rather than user awareness.

Alisa: I know Starbucks and Ann Taylor are two national retailers that have run Foursquare promotions. The funny (or sad) thing is when I tried to get the details of each promotion, I was directed to articles on Mashable and was not able to easily locate a link to the promotion on either company's official website. Believe me, I understand that both establishments were running social media campaign promotions, therefore they may have only promoted said offers through social media channels. I just find it interesting that they are targeting people who already know about geo-location technology, which I believe the most recent registration data is that Foursquare is approaching three million users.

In terms of value, Mosaic, a downtown Saint Louis restaurant and lounge, heavily promoted their Foursquare promotion this past May and from everything I've heard and read, it was wildly successful. I agree with Shane that geo-location promotion success may skew towards the small business community.

Q3: How are geo-location based applications profitable?

Shane: Today I don’t think businesses are investing thought into the process to make it profitable. In fact, most places could put a sign on the door that says “10% off for Foursquare Mayors” and I’d likely give it a try. Not necessarily because their product is superior to their next door neighbor but more because I know they’re catering to me. Unfortunately most businesses right now aren’t making a big enough deal out of it. If you have the clientele that is A) tech savvy and B) competitive then offering a significant prize to a mayor may be enough to keep me coming back. If nothing else put a sign on the cash register that says “Have you checked in yet?” If I’m not a current customer and see my friends checking in there’s a little brand awareness you didn’t have before. And best of all, it’s FREE! In some respects this is just another extension of the same old social media/ROI question. We all know social media has value but in a lot of cases that’s very difficult to prove. I would say location based services are very similar at the moment. Not enough people are spending the time and creativity necessary to put together location based campaigns. Once that starts happening more data will become available that should help to prove out the model.

Alisa: I've never asked a local business that offers geo-location applications check-ins and/or promotions if they have analyzed their customer user data to identify any trends or success stories. Obviously, I mentioned the Mosaic campaign above, but I don't have first hand knowledge of their success. In fact I've only heard of one other Foursquare mayor promotion other than the three I referred to above. Perhaps because I do not use the applications, I am simply not looking to check-in therefore I am not aware which places I frequent that offer discounts or special badges to their customers. With that said though, my particular consumer behavior would not change if I was offered $1 off my mocha or 10% off my dining bill by checking in and achieving some virtual political status. But that's just me.

Q4: Is there a niche for B2B geo-location services?

Shane: Up to this point I think when we talk about geo-location services, the check-in based applications have gotten most of the media attention. Looking specifically at that model I don’t see many tremendous B2B opportunities as of yet. The one-to-many, and personal, relationship of check-in based services doesn’t lend itself well to the B2B world. At some point it would be nice if my check-in at the airport could be tied to some corporate perks or an expedited check-in line but I’m not sure the juice is worth the squeeze. On the other hand there are so many other B2B geo based services already in place that we don’t even know about. Most of these types of things are happening behind the scenes and if we’re not careful they’re easy to overlook. Comparing real estate prices on zillow.com, mapping of delivery trucks, traffic congestion, location relevant searching and recommendations all make my life a little easier…I just forget how it is they’re happening. While I may be the consumer viewing the data (real estate prices in my area) that service is being provided by a vendor (zillow.com) and those geo-tags or location based assets are being tracked by yet another business (google.com). Therefore, just like any good entrepreneur, be on the lookout for the pain point in any business model that could be lessened by placing data on a map or knowing that a certain activity is happening with x miles of where you’re standing. When this is all said and done I should be able to search for “gas station” on Google, find the area that has the fewest number of markers and know with confidence that if I build my next franchise in that spot I will have a higher than average chance of success. All without paying a dime to some pay economic development or management firm and their over-priced research.

Alisa: I say this with utter humility, I have no idea how geo-location would benefit B2B. Or maybe I do and I just don't want to share it with the world yet because no else can think of a way to make it successful and my thought leader self is going to make millions ...

What do you think about geo-location? Have you received discounts or benefits from checking in somewhere? Are you concerned about your privacy?

*EDIT October 28, 2010. We have moved our blog to http://blog.roundedcube.com and you can now comment on this specific post at http://www.roundedcube.com/WhatsNew/Blog/geo-location-provides-badges-and-tests-user-privacy

Thursday, August 12, 2010

Tackling Fallback Fields and Values in Sitecore

I recently had the opportunity to fight with …. Err … learn about globalization within Sitecore. If you don’t know what Globalization is within Sitecore, then you are reading the right article, because your knowledge on the subject is the same as mine was when I first started working with it. I almost viewed it as the scary monster under my bed, about to tear my feet off the moment the light goes out. But, trudging forward and facing my fears, I pressed on and the outcome was quite surprising. I actually had a lot of fun once I got around some of the major obstacles in my way, the largest and most pronounced being my very own lack of knowledge on this specific subject. So, after beating my head against the wall, sweating profusely for days at a time, and finally consulting an oracle (he looked kind of like a homeless person to me, but I took his word for it) here is what I have found out about Globalization within Sitecore.

Before I begin, let me preface this with the following statement: this post is not an end-all be-all for globalization, just information I happen to remember and care to relate from my experiences. It also only deals with globalization within the context of Sitecore. Good, now that we got that out of the way, we can continue….

As you may or may not know, globalization is just a fancy pants way to say multi-lingual, which is an even more fancy way to say multiple languages. So, if you want multiple languages to display on your site, then you are going to have to use some form of globalization. For the purposes of this post, let us assume that we are dealing with English as your main language and Bangladeshi (just because I like the way it sounds….. Bangladeshi  ) as your secondary language.

In order to create a user-friendly website that caters to both of your demographic groups, we need some form of language switching on the site. Putting a dropdown at the top of your site is easy enough. In this example, we are setting our language embedding to “always”, so the URL of the current page also defines the language context being used. We do this with the following line in the web.config:

<linkManager defaultProvider="sitecore">
<providers>
<clear />
<add name="sitecore" type="Sitecore.Links.LinkProvider, Sitecore.Kernel" addAspxExtension="true" alwaysIncludeServerUrl="false" encodeNames="true" languageEmbedding="always" languageLocation="filePath" shortenUrls="true" useDisplayName="false" />
</providers>
</linkManager>

Now when you navigate to a page within Sitecore, you should see something like this: http://www.yoursite.com/en/ItemName.aspx for the English version or http://www.yoursite.com/bgd/ItemName.aspx for the Bangladeshi version.

Create a Bangladeshi versions of “ItemName”, fill it with content, publish, and BLAMO, Bangladeshi content for all to see. Easy enough, right? Yay for out of the box functionality! And for most websites this is all that will ever be required. But let’s get our knees dirty and dig in a bit deeper.

Say we want to fall back to the English version of the page if the Bangladeshi version doesn’t exist. All we do is write a custom pipeline process that will determine if the item exists in the current language, and if it doesn’t, send the user to the /en/ version of the page. This is pretty basic stuff. Here is a quick overview on how to do that if you are interested:

Update web.config with your custom pipeline process. Make sure it’s in the correct location…

<processor type="Sitecore.Pipelines.HttpRequest.ItemResolver, Sitecore.Kernel" />
<processor type="YourAssemblyHere.Pipelines.HttpRequest.FallbackLanguageProcessor, YourAssemblyHere " />
<processor type="Sitecore.Pipelines.HttpRequest.LayoutResolver, Sitecore.Kernel" />

And add the corresponding class to your project…

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace YourAssemblyHere.Pipelines.HttpRequest
{
public class FallbackLanguageProcessor
{
public void Process(Sitecore.Pipelines.HttpRequest.HttpRequestArgs args)
{
Sitecore.Data.Items.Item contextItem = Sitecore.Context.Item;
if (contextItem == null || contextItem.Versions.Count > 0)
return;


Sitecore.Globalization.Language language = Sitecore.Context.Language;
if (Sitecore.Context.Language.Name != "en")
language = Sitecore.Globalization.Language.Parse("en");
Sitecore.Data.Database contextDatabase = Sitecore.Context.Database;
Sitecore.Context.Item = contextDatabase.GetItem(Sitecore.Context.Item.ID, language);
}
}
}

As you can see, all this does is determine if the current item does NOT have a version (so you are trying to view a Bangladeshi page but it doesn’t exist), get the English version of this page, reset the context, and you are on your merry way. Weeeeeeeeee, isn’t this fun!?!

By this time in the project, I was feeling pretty good about my accomplishments and up to this point wasn’t getting tripped up too much. But alas, a new requirement came down from above: let’s make each FIELD fall back to English if there is no value within the Bangladeshi version. This means that if I go to the About Us page, and I’m in the Bangladeshi context, and there is no About Us page within Sitecore for the Bangladeshi item then I need to display the English version of that page without changing the context of the site! I know, I get a migraine just thinking about it.

Before I continue, I must give you fellow Globalization newbie’s a bit of advice… If you can help it, NEVER display multiple languages to the user on the same page. Not only does this create confusion for the user, it is rather pointless. If the user doesn’t understand English, then why would they ever care to see it on your website? Once you start mixing and matching languages on the same page the context of the site gets confusing for the user. They see content that is in their native language, but the navigation links (some or all of them) are in some foreign language (English in this case). But what the heck right? Let’s see just how extensible Sitecore really is (I love trying to break stuff!).

The process is similar to what we did earlier. We need to add a process to the “renderField” pipeline section of the web.config like this…

<processor type="Sitecore.Pipelines.RenderField.GetDateFieldValue, Sitecore.Kernel" />
<processor type="YourAssemblyHere.Pipelines.FieldRender.FallbackLanguageProcessor, YourAssemblyHere" />

<processor type="Sitecore.Pipelines.RenderField.AddBeforeAndAfterValues, Sitecore.Kernel" />

And add another class that handles this process like so…

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Sitecore.Pipelines.RenderField;


namespace YourAssemblyHere.Pipelines.FieldRender
{
public class FallbackLanguageProcessor
{
public void Process(RenderFieldArgs args)
{
//only perform this logic if this is not the default language
if (Sitecore.Context.Language.Name != "en")
{
if (args.Item != null)
{
//Get the current Item passed in by the arguments
Sitecore.Data.Items.Item currentItem = args.Item;
if (currentItem != null)
{
if (currentItem.Fields[args.FieldName] != null)
{
//if the current item has no valid value
if (currentItem.Fields[args.FieldName].Value.Equals("$name") ||
(currentItem.Fields[args.FieldName].Value.Equals(string.Empty)))
{
//Determine the fallback language for this item. in this case, we are forcing english.
Sitecore.Globalization.Language language = Sitecore.Globalization.Language.Parse("en");
//get the item in the default language
Sitecore.Data.Items.Item newItem = Sitecore.Context.Database.GetItem(currentItem.ID, language);


if (newItem != null)
{
//only make the update if the english field has a value
if (newItem.Fields[args.FieldName] != null)
if (!string.IsNullOrEmpty(newItem.Fields[args.FieldName].Value))
args.Result.FirstPart = newItem.Fields[args.FieldName].Value;
//disable web edit for this field, since it’s a fallback field editors should not be able to edit
args.DisableWebEditContentEditing = true;
}
}
}
}
}
}
}
}
}

Seems easy enough! Now, like before, our process will tick off and check to see if the FIELD that is trying to be displayed exist in Bangladeshi, and if not, go get the English value for that field and display that instead. Quick note: if you are accustomed to using sc:fld(‘Title’,.) in your xslt renderings, then those values don’t go through the fieldRender pipeline. You must use sc:field(‘Title’,.) in order for our custom process to have any effect. This specific issue causes grey hair apparently, so take heed! Just make sure your outputting your xslt value-of’s with sc:field. If you are using <sc:text, etc, then it should work fine.

Now, we have our FIELDS displaying English if the Bangladeshi field doesn’t have a value (this is mostly due to lazy or “too-busy-to-get-to-it” content editors ). So, here is where we currently are at. We are on the Bangladeshi site, looking at the About Us page. The top navigation is displaying either English or Bangladeshi links, depending on if that value exists in Sitecore, and all is good in the world.

“What about non-“fieldRender” pipeline values that are grabbed programmatically?” you say. Alright, let’s explore that. One example of why it is important to be able to get a fallback for a specific field programmatically is when you are setting the text property of a label to a field of an item.

So, pretend that on the Page_Load method we set a <asp: Label’s “Text” property to the Title field of the current item. We have to check to see if the item exists in Bangladeshi first, and if it doesn’t, then get the English version of the item and then display the title. Here is how to do that.

public static bool HasContextLanguage(Item item)
{
Item latestVersion = item.Versions.GetLatestVersion();
return ((latestVersion != null) && (latestVersion.Versions.Count > 0));
}

As you can see, pass it the item you want to check and it will return a “true” if the item exist within Bangladeshi (assuming you are within the Bangladeshi context), and “false” if it does not. You will use this method to see if you need to perform some additional logic, like grabbing an English version of the item and displaying the Title. Your Page_Load method might look a little something like this….

protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Item currentItem = Sitecore.Context.CurrentItem;
if (!HasContextLanguage(currentItem))
currentItem = currentItem.Versions.GetLatestVersion(Sitecore.Globalization.Language.Parse("en"));
lblTitle.Text = currentItem.Fields["Title"].Value;
}
}

The last thing I want to go over is quite a bit more complex that what has been covered so far, so I apologize in advance for the mass confusion you are about to read and my general lack of ability to convey something in a more precise manner. It has to do with a fallback field on a fallback item that is a referenced target item of the current item. All that alludes to is how we handle globalization on referenced items within Sitecore (lookup fields, reference fields, multi-select fields, etc).

For example, imagine you have a “Page” Template with a lookup field called “Contact”. This “Contact” field will reference an item based on a “Contact” template that has the following fields: Name, Title, Company, Phone Number, and Address. Assume that the page and the contact are already created within Sitecore, but only in English. Along comes the Bangladeshi content editor and they add a Bangladeshi version to the page. While entering in content for the page, they select the English-only contact (we will call him “Bob” for now) and publish the item. We have to take a few things into consideration when trying to output Bob’s information.

When someone goes to the page and is in the Bangladeshi context, how do we display Bob correctly? Normally you get the TargetItem of the Contact field and display the name. In this case, it’s not so simple. You have to remember that Bob doesn’t exist within the Bangladeshi context. So first we have to get the Target item, and then do our check to see if it (Bob) exists in the current context and if not, get the English version of Bob to display. Here is how we would go about that:

Sitecore.Data.Fields.LookupField lookupField = item.Fields["Contact"];
if (lookupField != null && lookupField.TargetItem != null)
{
Item targetItem = lookupField.TargetItem;
if (!HasContextLanguage(targetItem))
targetItem = targetItem.Versions.GetLatestVersion(Sitecore.Globalization.Language.Parse("en"));
//Do Stuff with Bob here....
}

This logic is getting the “Contact” lookup field, getting its “TargetItem”(Bob), checking to see if the TargetItem exist within the current context, and if not, re-getting the target item as the English version, and then displaying the information as necessary.

I hope this all makes sense, I know I babble on and on and on and on a ….err, heh. Oh, and even after typing it 18,976 times, I still like the word “Bangladeshi”. Congratulations, you are at the end of my ranting and can go on with your lives. I hope you have learned something of value. Happy globalization!

Thanks – Caleb Miller.

*EDIT October 28, 2010. We have moved our blog to http://blog.roundedcube.com and you can now comment on this specific post at http://www.roundedcube.com/WhatsNew/Blog/tackling-fallback-fields-and-values-in-sitecore

Tuesday, August 03, 2010

What does Sitecore v6.3 Really Mean?

So it used to be called the TwinPeaks release if you follow the Sitecore Roadmap but exactly what does it bring to the table? There are some blogs already out regarding the release. Alex Shyba showed how easy it is to cluster the CMS client (in fact he did 6 virtual servers in less than hour – follow him on Twitter to get more updates). Oh yes, that’s what v6.3 really allows you to do (plus some other stuff that you should read on the release notes). But as a business person, you might ask, so what?

Well, we know that enterprises (that’s the keyword) always need performance as one of the top requirements to be fast and efficient. The Sitecore delivery engine (i.e. content delivery – CD servers) had always been keen to being clustered and allows you to load-balance them to achieve a pretty good performance. And that’s important because Sitecore itself may use up to 30% of CPU utilization (that’s what I’ve heard a while back in v5). So making sure that the site visitors are experiencing beautiful user interactions while delivering them promptly can be a tough achievement if you don’t load-balance your delivery servers. Almost all implementations nowadays have this requirement and should now be something that you should be aware of.

Sitecore v6.3 brings a new level performance except it’s not on the delivery side of things but more on the authoring side. With v6.3, IT can now load-balance the CMS client allowing for better responsiveness. It introduces the Event Queue which Adam Conn of Sitecore blogged about (it even has a nice video). Essentially, it is like a recipe whereby if you want to replicate your mom’s cooking again and again, you follow the recipe. In a way, v6.3 CMS client servers look at the queue to see what else need to be done and thus become “in synch” with the other servers.

As a business person, should I care about this? I say yes because now there’s more freedom on how Sitecore is deployed geographically. For international companies, this makes maintaining Web site more effective. Also, this becomes an ammunition to having a more globalized management of Web sites. Sitecore had been an eye-candy for managing globalized content because of translations, languages, publishing capabilities; but, there’s always that feeling that it’s really hard to distribute authorship because of geographical distances. With v6.3, this fear or concern is minimized because performance (and reliability) becomes less of an issue.

I’m hoping that corporations will now feel comfortable bringing in your international sites into one platform, that is Sitecore. The only thing that I think that you need to be cautious is how those other systems going to integrate with your Web site and allow them to be “load-balanceable” as well. I’ll leave you with this but one hint is to consider Sitecore not just a CMS but also as a foundational technical platform for other capabilities.

*EDIT October 28, 2010. We have moved our blog to http://blog.roundedcube.com and you can now comment on this specific post at http://www.roundedcube.com/WhatsNew/Blog/what-does-sitecore-v63-really-mean

Monday, August 02, 2010

Sorting Sitecore Items in .NET

Have you ever asked yourself what’s the fastest (or easiest) way to sort a list of item that you retrieve using SelectItems or something similar? It’s been answered before and there’s even been sample code provided before. Here are some of the ones I’ve seen:

  • using IComparer
  • brute-force approach
  • using the “sortorder” provided by Sitecore

I think the last two is self-explanatory but the first one is something that I’ve seen before on SDN and works really well. You can see a sample code on:

http://sdn.sitecore.net/Articles/API/Get%20Items%20Children%20Sorted.aspx

This solution is a definite .NET way of doing it. I would actually say old-school but effective. It uses the Sort method and passing it a custom IComparer. Just a simple Title sort would at least be 3-5 lines of code.

Although with the new C# 2.0 syntax, you can reduce the # of lines by using anonymous methods such as:

numbers.Sort((x,y) => Int32.Parse(x).CompareTo(Int32.Parse(y)));

Now comes C# 3.0’s support for LINQ, you can now use that technique to do a one-line code…yes ONE LINE!!!

The code is:

var sortedList = (from entry in unsortedItems orderby entry.Fields[“Title”].Value ascending select entry);

where unsortedItems is an array of Items (i.e. Item[]) or an ItemList or any type of collection for that matter.

So how does it work? If you’ve done LINQ (or even SQL statements) before, this should be familiar but if not, it’s quite easy. The code above grabs an Item from the unsortedItems into a variable called entry. Using the entry’s Fields property and the proper field name, I sort it using either “ascending” or “descending” keyword. The “select entry” essentially completes the statement to store that same entry into the resulting variable "sortedList”.

I’ve used this technique with other field types as well and works very well. Of course, you may need to revert back to using IComparer if you have more complex comparison rules.

CAUTION

FYI for algorithm folks, there has been mention that the LINQ’s OrderBy sort is O(n*log(n)) compared to IEnumerable’s O(n*n) which according to some is about 5 times slower with a large sample. Here’s a link you can get a more detailed analysis of OrderBy and Sort.

*EDIT October 28, 2010. We have moved our blog to http://blog.roundedcube.com and you can now comment on this specific post at http://www.roundedcube.com/WhatsNew/Blog/sorting-sitecore-items-in-net

Tuesday, July 20, 2010

US Airways Held a Trivia Contest on Twitter

US Airways ran a trivia contest on Twitter yesterday to celebrate their #1 ranking in May for on-time performance, baggage handling and customer satisfaction. Personally, I was excited to participate because they were giving away three $300 US Airways gift cards and well, I like to travel.

I missed the first question but participated in the second trivia question. I responded swiftly but realized I was the fourth person to tweet the correct answer and they were awarding the prize to the first correct answer. Oh well, I tried. But then it got interesting.

US Airways took almost an hour to announce the winner for the second question. I then checked out the Twitter page of the person who responded first and realized why there was a delay. In my opinion his tweets were inappropriate. He was making fun of people who were questioning his answer to the trivia question. He was making fun of US Airways and what he would do with his gift card. Then his tweets turned sexually graphic. I understand our right of freedom of speech and believe people should invoke that right. However, what does a company like US Airways do when something like this happens?

I was very curious how US Airways was going to act or respond. They did so quietly. Announcing the winner but not linking directly to his Twitter feed (like they did for the other two winners).

US Airways used Twitter yesterday to engage with their followers, elicit excitement for their brand and promote their recent successes. Considering the amount of people who participated by tweeting answers to their trivia questions and the amount of new followers they picked up yesterday, I can only imagine they deemed the Twitter contest a success. US Airways also uses Twitter as a customer relations tool and I think they are utilizing Twitter in the best way they can.

It's a very real possibility that you weren't even aware of the contest I am referring to. However, as social media has proved time and time again, this particular contest has people thinking about using social media as a marketing and public relations tool and the challenges many people and companies face when taking their messages and brands to such a public and uncontrollable environment.

How would you have handled the situation US Airways faced yesterday? Do you think US Airways handled it well? What would you have done differently?

*EDIT October 28, 2010. We have moved our blog to http://blog.roundedcube.com and you can now comment on this specific post at http://www.roundedcube.com/WhatsNew/Blog/us-airways-held-a-trivia-contest-on-twitter

Tuesday, July 13, 2010

The World Cup's Affect on Social Media

Breaking news has always been a part of social media. The Egyptian arrest of American James Karl Buck in April of 2008 was the story that introduced me to Twitter. I learned of George Steinbrenner's passing this very morning from a friend's status update on Facebook.

What I am trying to say is nothing earth shattering but my simple point is this: social media has given us a new way to receive the news we want to receive, communicate about it (among other thoughts and things) and connect with people and businesses (some we don't even know in real life) in ways that continue to evolve. Social media is redefining relationships as we know them.

Over the last month, the World Cup became one of the hottest topics in social media. I remember saying to myself on Friday, June 11th, "Is Twitter broken?" The first game of the World Cup had started and Twitter was over capacity. Twitter addressed the issue on it's blog and then throughout the rest of the World Cup we witnessed the affect the World Cup was having on Twitter. Tweets-per-second were at an all time high and Twitter records were broken weekly.

But World Cup followers weren't only in love with Twitter. My Facebook news feed was flooded with World Cup score updates, comments on blown calls, and pride for various nation's teams. I have a disclaimer though, I played Division I collegiate soccer (many many years ago) so my Facebook friend list skews "Soccer Lovers," however I do have non-soccer loving friends who were commenting on the World Cup as well ... and get this, they were enjoying the soccer conversations.

It was a week or two before the World Cup that I saw Nike's "Write the Future" video online:



That video gave me goose bumps for many reasons. First, I am a fan of the sport and the video ignited World Cup fever throughout my body. Secondly, Nike's execution of that video is simply brilliant. I was amazed by the comprehensive thought process that went into its creation. Thirdly, I instantly knew people would be talking about that video. To date, nearly 20 million people agree and have watched it. Nike knows viral. The "Write the Future" video summarized Nike knows exactly what they are doing and they know they are doing it right.

And then came Wednesday, June 23rd. The USA vs. Algeria game. The final match in group play and the outcome of the game would decide whether or not the US team advanced. The anticipation and chatter about the game was intense. Landon Donovan's goal in the 91st minute sent a shock wave through the soccer community. It also produced this video by college senior:



Another World Cup inspired video that captivated soccer fans ... and went viral.

Interestingly enough, the World Cup and its affect on social media got my brain spinning more than when I was glued to Twitter during the 2008 Presidential Election and more than while I was (shamelessly) watching LeBron James' decision last week and reading about the aftermath on different social media outlets. In my mind, there were no winners or losers in the World Cup social media discussions. It united fans, nations, and the world for one month. And I look forward to seeing how its social media success affects us in the future.

*EDIT October 28, 2010. We have moved our blog to http://blog.roundedcube.com and you can now comment on this specific post at http://www.roundedcube.com/WhatsNew/Blog/the-world-cups-affect-on-social-media

Thursday, July 01, 2010

The Return of One of the Original Five

It's funny how your life can go full circle at times. After a four year career detour, I'm happy to return to Roundedcube as the new programmer on the block. As one of the Original Five employees at Roundedcube, it's good to be back and to work with friends from the start of my programming career. The company has grown a lot while I was gone. We're up to 16 employees now with many new clients while still maintaining relationships with many of the clients I have worked with in the past.

I think the coolest change I've seen (besides the new building of course) is that all of our teams consist of more than one person now! There are dedicated project managers, designers, sales-ers (?), and a large programmer pool. It's nice to be able to know what your team is working on and have a defined role in the process and definitely improves performance and the final product.

As a developer, the opportunities to learn new technologies and business practices are great. Much of the business now is directed towards Content Management Systems, specifically Sitecore. While I'm sure there's a learning curve to CMS development, the solutions we can provide to our clients make for interesting projects so I'm looking forward to working on my first CMS-based project.

One of the challenges in returning to a place you've worked before is figuring out what you need to remember from your previous time there and what you have to forget. In many ways it's harder than starting at a new company because you find yourself slipping into familiar habits of the ways things used to be done instead of thinking about how to do them now. I think it's better to do something, even if it's wrong, then to sit around and wait for someone to hold your hand. Well, that's assuming that it doesn't take too long to clean it up later.

*EDIT October 28, 2010. We have moved our blog to http://blog.roundedcube.com and you can now comment on this specific post at http://www.roundedcube.com/WhatsNew/Blog/the-return-of-one-of-the-original-five

Thursday, June 24, 2010

Developing with Sitecore Foundry 3.0 - Tips for Success

Let me preface this post by saying that Roundedcube has a lot of Sitecore CMS implementations under our belt (we've actually lost count I think), but in the last year and a half we've been involved with a couple Sitecore Foundry implementations. We quickly realized that while the two products share a common foundation, developing a solution with Sitecore Foundry is a different beast than with Sitecore CMS. My hope is to share some of the most significant differences we've encountered to help you overcome the same issues in your solution development.

In case you don't already know, the Sitecore Foundry Solution is built for organizations having hundreds or even thousands of affiliated websites (i.e. franchises). Foundry allows these organizations to create and manage all of these websites with nearly the same effort as one while distributing the content editing to these affiliates and maintaining a centralized control of brand and strategy.

If you've worked with Sitecore Foundry in the past, it's important to first note there is a significant difference between Foundry 2.0 and Foundry 3.0. What we're discussing is 3.0, which is built on Sitecore 6 as opposed to 2.0, which was built on Sitecore 5.3.1. If you're familiar with Sitecore CMS, then you know that alone implies some significant differences and improvements.

Upgrading Website from Foundry Version 2 to Version 3

Let's first start with the prospect of upgrading an existing Foundry Solution from 2.0 to 3.0. For those of you who are familiar with the upgrade process for a Sitecore 5.3.1 instance to a Sitecore 6.x instance, the Foundry process is basically the same. The Sitecore Foundry upgrade process relies on the Sitecore CMS upgrade process but with a couple of extra steps. We recently used this process to upgrade an existing Foundry instance and encountered a few hurdles as lessons learned. One such lesson we learned is realizing that even though all of the security entities (users and roles) are upgraded, the new security domain for each site may not be configured correctly after an upgrade and will require some manual configuration. This issue prevented our content contributors from being able to log into the management area of the site to modify content. After properly setting up the required security roles and accounts manually for a Sitecore domain, our content contributors were able to login and manage their content again.

Page Editor vs. Content Editor

Since Foundry presents a totally different content management user experience - affiliate editors typically do not see the traditional Sitecore login page with Content Editor and Desktop options; rather they have a new login page that takes them directly to Page Editor mode. This presents a new perspective as it forces us as developers to make the Page Editor experience 100% user-friendly as you can't rely on the Content Editor UI. And overall, that's a good thing! The Page Editor is a valuable asset to the system overall. But it is something you must account for in effort, timeline and expectations. Depending on the intricacy of the website design, making everything editable via a rendering or UI control can be tricky. Several times we ran into JavaScript conflicts that only appeared once the HTML prototype provided by the design team was implemented into Sitecore. Significant pieces of code had to be re-worked to display correctly in edit mode.

Speaking of the editing experience, we found in several instances that we wanted to customize the Page Editor ribbon to optimize the editing experience. Fortunately, it was easier to add buttons (or "commands") and chunks to the Page Editor ribbon than it is to the Content Editor ribbon. Sitecore Foundry provides a nice option to add commands via a toolbar administration tree as opposed to adding directly to the Core database as you would with the CMS edition of the product. This also came in handy in terms of workflow since Foundry doesn't come with workflow enabled out-of-the-box. We were able to easily add workflow commands to the Page Editor ribbon as well as our new custom commands.

Security and Account Management

Sitecore's security changed drastically from Sitecore 5.3.1 to 6.1 by using the ASP.NET Membership Provider. In Foundry 2, which is based on Sitecore 5.3.1, users and roles were identified by the following convention "sitename.user" or "sitename.role." In version 3, it uses a new convention where each user/role actually has its own Sitecore domain to better separate security by site. This makes it easier to keep security confined to a domain architecturally and provide more separation...better organization.

We found these three areas (upgrading, use of page editor, security) to be the most noteworthy when getting acclimated to Sitecore Foundry. Sitecore Foundry is a very powerful solution, though still somewhat untapped in the marketplace so I hope this will be of help for those considering it as a solution for your organization. Recently, Roundedcube architected and developed a Foundry CMS solution for Feeding America and its network of over 200 food banks across the country. Since then, we've upgraded them to Foundry 3.0 and made some great enhancements to their solution. These new Sitecore Foundry 3 food bank websites are rolling our one-by-one throughout the year.

I'd love to hear about your experiences with Foundry as well - if there's an issue you solved another way or if you have any questions about anything I've mentioned here.

*EDIT October 28, 2010. We have moved our blog to http://blog.roundedcube.com and you can now comment on this specific post at http://www.roundedcube.com/WhatsNew/Blog/developing-with-sitecore-foundry-30-tips-for-success

Tuesday, June 15, 2010

Should video be your next "big thing?"

I've had the opportunity to attend three separate conferences this year, all with supposed industry experts ranging in skills from user experience, online marketing, web content management, social media and many more. It never fails that one of the experts at every conference at some point mentions, "Oh, you better get started with video ... it's the next big thing."

It was at that very moment that the presenter loses a great deal of credibility with me. Granted this happens with every new technology as indicated by Gartner's Hype Cycle but I think it's time to at least scratch the surface of this video conundrum. Not dissimilar to social media, I have a lot of people telling me, "We need video on our website" much the same way they were saying, "I need a Twitter account" twelve months ago. Before you jump in and buy yourself a thousand dollar camera, Final Cut Pro and a $5,000 MacBook Pro with 10 GB of RAM, let's discuss this a little bit.

Let's take this video for example:



Let me start by saying this is one of my favorite videos on the Net. Maybe because it reminds me of my younger years and the 93 games I owned for Atari, but this video has very little, if any, value to the average, everyday business user. Would you agree?

Next let's take a look at this video:



Toni Bowers from TechRepublic happens to be one of my favorite bloggers and helped me out a great deal when I was looking for my new job. Just read a couple posts from her blog and you'll see what I mean.

So I would ask, dear readers, which video holds more value? Now get past the point of the subject matter and focus just on the nature of content contained in the video. Here are your choices:

A) The one that has no intrinsic useful content but shows amazing video editing skills and creativity

or

B) The one that actually has real content

Discuss ...

My vote for the video that holds more value, independent of subject matter, is A. Why? They are using video for the right reason. They are taking content that cannot be expressed any other way, using the medium in which it was intended for and providing amazing content to boot. Video B is taking content that is much more suited for written blog post form and stuffing it into brightly colored wrapping paper in an effort to make sure they're following the trend of the next big thing.

I wonder how much money they spent producing that video? How much for the camera, the graphics, the green screen effects, not to mention the time it took to actually shoot the video with multiple takes. On top of that, then they have to have someone transcribe the video to make sure the search engines are able to suck up all of that content. Frankly, when I go to a page like this, I pause the video and read the transcript anyway.

Getting back to the heart of the matter ... do you need video on your site? That's a very good question but I would suggest coming up with your answer based on business value rather than desire. You see, I have a lot of "wants" and "needs" in my life and in many cases your website is the same way. So ask yourself this, "Do you want videos on your website or do your users want videos on your website?" If it's you - go get a second opinion. If it's your users - start calculating the business case.

What? You say you don't know if your users want video? Solve that problem and your video question may answer itself.

Let me know what you think. When is video the right answer? When is it unnecessary or overkill? If you're struggling with coming up with the answer, give me a call. I'd be happy to walk you through the process. If you've already made the decision to put video on your site, let's talk anyway. There are a number of factors to keep in mind when getting into the video arena. Everything from quality to production to SEO to content management and a hundred more variables you may not be considering today. I'll give you an hour of my time, for free, just to make sure you're headed in the right direction.

*EDIT October 28, 2010. We have moved our blog to http://blog.roundedcube.com and you can now comment on this specific post at http://www.roundedcube.com/WhatsNew/Blog/should-video-be-your-next-big-thing

Thursday, May 27, 2010

Key Features to Evaluate When Selecting a Web Content Management System

In the last 8+ years of designing and developing WCM (or CMS, choose your favorite acronym) -based websites, we at Roundedcube have seen an evolving theme of key features to evaluate to make the best choice for your organization. I want to point out some of these features and explain the various options you may encounter when comparing WCM software. Hopefully, you'll find this as a helpful starting point if you are in the early stages of considering a new WCM for your organization.

Content Structure and Presentation Separation
Just starting with the basics, you'll find a wide-range of capabilities and approaches to achieving the ability to "manage content". Keeping in mind the underlying objective of choosing a WCM is to share control of the website with business users, a key component is how does the WCM structure the content and separate it from the presentation (or design code) of the website. You'll discover that some systems at one end of the spectrum just provide a nice user interface to creating and editing content on a page-by-page basis. Beware of these types of solutions as you'll find that your editors will have to re-create the same content over and over per page leading to inconsistencies; and they'll also still have to maintain the proper design and layout of the content. As a result, what you have is a nice editing tool, but not necessarily a WCM.

On the other end of the spectrum you'll find systems that "structure" the content into refined components and allow editors to deal strictly with the content and also avoid having to modify and worry about design consistency. In addition, the same content components are in turn re-used over and over without having to duplicate content. This scenario is truly "managing the content". Depending on the size and needs of your organization, you can choose the WCM that provides the appropriate level of control.

Publishing
Another factor that can vary from one WCM to the next is the concept of publishing. Again, taking two extremes, with one WCM there may be no publishing process - meaning what you edit and save, is what the rest of the world visiting your website will see. However, a typical organization requires some level of control in determining when content is "in-progress" and when it is "live". In terms of publishing, look for a WCM that offers the ability to preview how your site will actually look "if" published and also gives you the ability to schedule publishing by specifying ahead of time when a piece of content should go live and when it should be retired.

Workflow/Approvals/Quality Control
Whichever term makes most sense to you, essentially we're talking about the capability to tailor the WCM publishing process to the process and structure of your organization. A WCM should facilitate your ability to have content reviewed and rejected or approved. A typical organization can get by with a simple "submit for approval" and "approve/reject" option. However, larger, more complex organizations that also incorporate partners and even translation providers may need more complex workflow. Look for a WCM that can provide the level of flexibility you will require - keeping in mind the foreseen growth of your website.

Web and WCM User Security
This is a broad topic. It includes simply being able to restrict pages to anonymous versus authenticated users. It also includes users and roles amongst the WCM users, which permeates the entire system such as securing who can see, edit, approve, publish various pieces of content. Each WCM has a varying degree of granularity and flexibility in terms of security - some much more powerful than others. In terms of security, consider how restrictive your organization needs to be. Will you need to limit the capabilities of your WCM users to specific functions or content areas? Or will it be pretty much wide open and trust that users will use the system as you intended? And in terms of your audience, do you have registered users? What system are they stored in and should they be stored in the WCM.

Search
This is a very commone feature to any website of course. Some systems have a built-in search mechanism and some prefer to rely on 3rd party search tools and simply provide the hooks necessary for integration. Explore what each WCM has available to determine that their search solutions match up with the requirements and importance of search to your website.

Bonus Features!
Now keep in mind that the 5 features above is not a comprehensive list. And they're meant to really represent "core" WCM features. This is a solid start to your evaluation process. In addition, aside from core WCM features many systems now incorporate web marketing aspects - e-newsletters, analytics, personalization, campaign management, forms, etc. Managing your website entirely includes more than content management so if you find a WCM that does a good job of handling these other requirements, that is very valuable. Anytime you can reduce complexity in terms of the shear number of disparate systems you have to deal with, that is definitely a plus. If the system doesn't natively handle these marketing-centric requirements, make sure that they are open to integration via a solid API.

Where to Go Now?
As you know, choosing the right WCM is a crucial decision. I hope this helps get you started in the right direction, but I know its not the end-all be-all for sure. So what's next? I recommend you check out the whitepaper from Sitecore titled "Choosing the Best Web CMS". It goes beyond the 5 features I mention above and digs into issues concerning IT, business users, developers, marketing - everyone involved in the process. Also, CMS Watch is a great source for the latest research and vendor evaluations. I'd like to know your findings as well if you've already gone through this process of choosing a web content management system.

*EDIT October 28, 2010. We have moved our blog to http://blog.roundedcube.com and you can now comment on this specific post at http://www.roundedcube.com/WhatsNew/Blog/key-features-to-evaluate-when-selecting-a-web-content-management-system

Monday, May 03, 2010

Are you digitally intimate with your customers?

Sitecore LogoWhen Sitecore CEO, Michael Seiffert made his way up to the podium at the beginning of Dreamcore 2010 he set the tone of the entire engagement by focusing conferences-goers attention on the concept of “digital intimacy.” The term had a great ring to it and I began wondering if this was a Sitecore original or something they had picked up elsewhere. Doing a quick Google search on my phone I quickly realized that the adult industry had, not surprisingly, already began using this terminology in a much different way that Michael Seiffert was but after a little more digging I also found that Clive Thompson from the New York Times was using it as far back as September 2008 in his article, “Brave New World of Digital Intimacy.” Here is one one of my favorites paragraphs in the article:
“Young people at college are the ones to experience this most viscerally, because, with more than 90 percent of their peers using Facebook, it is especially difficult for them to opt out. Zeynep Tufekci, a sociologist at the University of Maryland, Baltimore County, who has closely studied how college-age users are reacting to the world of awareness, told me that athletes used to sneak off to parties illicitly, breaking the no-drinking rule for team members. But then camera phones and Facebook came along, with students posting photos of the drunken carousing during the party; savvy coaches could see which athletes were breaking the rules. First the athletes tried to fight back by waking up early the morning after the party in a hungover daze to detag photos of themselves so they wouldn’t be searchable. But that didn’t work, because the coaches sometimes viewed the pictures live, as they went online at 2 a.m. So parties simply began banning all camera phones in a last-ditch attempt to preserve privacy.”

Now for these imbibing college athletes (customers) this notion of “always on” digital intimacy was becoming a problem. They were trying to conceal something that would damage their relationship with their coach (supplier). The coach (salesman) on the other hand was using technology to keep track of his players (customers) to build a better team and make sure the best players were showing up on game day.

Dodge ChargerNow let’s completely change the setting and look at a car salesman. When you walk on the lot on Saturday looking for a new Dodge Charger (I so frickin’ want one of these cars!) the salesman is going to start asking some questions about what you’re looking for in a car, how much you’re wanting to spend, what type of driving you do, and so on. If this salesman is any good they’re going to sell you on the whole package rather than the traditional snake-oil car salesman we think of from the days of yore. In the end you answer all his questions, do some looking around and say you’ll stop by after you’ve done your due diligence.

Now, seven days later you come back to that same dealership and the same salesperson sees you pull in. You get out of your beat up ’04 Olds Alero (it could be worse but if you’re buyin’ I’m sellin’), the salesman walks up to you and begins asking the exact same set of introductory questions he asked you a week ago. If you’re anything like me you get a little impatient, frustrated that you have to go through this whole process again and quickly decide that this is not the guy you want to spend 2 hours filling out complicated, detailed paperwork with. End of sale, he loses and you walk off the lot in search of a salesperson that can remember what it is you’re looking for.

When you think about it isn’t your website acting exactly like this salesperson? No matter how many times your customer comes back to your site aren’t they getting the same user experience? What if you could change that? What if you could change the contents of your website to match the preferences of each individual user? Let me offer up a scenario:

  1. You’re a car dealership in St. Louis and I, Shane Freeman, visit your site looking for a new Dodge Charger.

  2. Seeing that you are a Dodge dealer I spend some time checking out various pages on your site. Some of those pages may be about the Charger itself, some of them may be about your company.

  3. Then I see a banner ad to download a case study on why the Dodge Charger is the best car since sliced bread. I click the link and am presented with a short form to fill in my name, e-mail address and phone number with the promise upon clicking submit Lou Fusz and his team will send me the goods to my email address.

  4. I fill in the form, click submit and in sheer anticipation of this case study leave the dealer’s website and check my email.


At this point in the story Lou Fusz and his team have been pretty good to me. They’ve given me a little free info and are starting to build up some brand equity. I appreciate the thought leadership and if I decide that the Charger is still right for me I may drop by their lot. But then again, if I drive by another Dodge lot on my way to work that has the same Charger I may not.

Back to the story…since Lou now had my name, email address and phone number a few things can now start to happen.

  1. A lead record is created in the dealership CRM system that has an activity associated with it. This activity is going to remind an inside sales rep to give me a call in two days to see what I thought about the case study.

  2. A session history record is created in the dealership CRM system that shows every single page I looked at on the dealership’s website.

  3. After I read the case study that afternoon I decide to go back to Lou’s website and check their prices against some of the other local competitors.

  4. This time when I come back to the site, I see an ad on the right-hand side of the page that is stating LOW, LOW, LOW prices for pre-owned Dodge Charges (well, how convenient is that!)

  5. I click on the ad and without having to type in any search terms or click on any makes or models a whole list of pre-owned Chargers are presented to me.

  6. After browsing around that page I see a small flicker in the top, right-hand corning of the page that says, “Want to know more about the Charger, chat LIVE with one of our specialists.”

  7. I click the button, get connected to Click or Clack one of the Tappet brothers, have a conversation about gas mileage and financing options and tell him thank you and I’ll definitely give them a shot when I’m ready to buy.

  8. A new session history record has been created in CRM storing all the pages of my second visit to the website.

  9. Another new chat history record has been created with my entire conversation with the Tappet brother.

  10. After 24 hours I receive an automated e-mail from Lou and the gang thanking me for downloading the case study and encouraging me to give them a call if I have any questions.

  11. Two days later the other Tappet brother see a reminder pop up on his Outlook calendar to call Shane Freeman. Clack logs into CRM to get my phone number and notices that I’ve downloaded a case study, looks at all the pages I’ve been on the website, knows that his brother talked to me about pricing and financing and give me a call.

  12. A bit surprised by the strange number I answer the phone and am surprised that this guy whom I’ve never spoke to in my life knows a whole lot about what I’ve done, where I’ve been and who I’ve been talking to. He invites me down to their weekly reoccurring Friday afternoon club and says he’d be happy to accompany me on a test drive (prior to imbibing of course).

  13. I tell him it’s a date, show up on Friday, go for a spin and because these guys have taken care of my every need I sign the paperwork, trade in the Alero and I’m on my way in my new 2010 Charger.


In the tech support industry we refer to this type of engagement as closed loop ticketing. Any message sent between the customer and support services is all contained in the service ticket. This allows any support tech to pick up where the last one left off with great notes and a history of my previous interactions.

It seems that Sitecore is calling this digital intimacy. The next morning after his keynote, I had an opportunity to have breakfast with Michael Seiffert. When I explained a similar experience I had after downloading a whitepaper from Sitecore’s website I told him it was a bit creepy. He responded with an half smile and said, “CREEPY COOL.” That folks is definitely a Sitecore original and I would completely agree.

You may think the story I’ve outlined above is fake, a pipe dream or too complicated for your business. I would tell you that it’s not. It’s being done TODAY by smart forward thinking companies across the country. The amazing thing is that with Sitecore’s Online Marketing Suite, new Email Campaign Manager and all the other features Sitecore brings to the table we can start planning your implementation today.

If you want to engage your customers like never before and sell the right product to the right customer at the right time send me an email at shane.freeman@roundedcube.com or give me a call at (314) 692-2823. I’d love to work with you to figure out how we can best utilize technology to meet your business needs. If you’re a technology professional and have an idea that’s not in my 17 steps above please comment and share some expertise. I’d love to get even more insight to the power of digital intimacy.

*EDIT October 28, 2010. We have moved our blog to http://blog.roundedcube.com and you can now comment on this specific post at http://www.roundedcube.com/WhatsNew/Blog/are-you-digitally-intimate-with-your-customers

Tuesday, April 27, 2010

WCM, CMS, OMS – How Do You Categorize Sitecore Now?

Well, it’s Tuesday morning and I’ve had the weekend to let all of the great information and ideas from Dreamcore 2010, held in Boston, soak in. Marco Tana (President and CEO), Benjamin Vidal (VP, Technology), Shane Freeman (Manager of Client/Partner Engagements) and I (VP, Operations/Marketing) saw some great new products and features that are now available or will soon be.

One thing that really struck me was not only the maturity of the product, but the expansion of the product. The terms CMS (content management system) or WCM (web content management) or even that of the OMS (online marketing suite), just don’t do Sitecore justice in trying to explain to potential customers what it is exactly.

From Sitecore CMS to Sitecore Intranet Portal to Sitecore Foundry and from version to version, Sitecore always was a true CMS and then some. With the extensibility and open-nature of Sitecore, the product could be best described as a “framework” for your website or websites in the case of organizations with multiple websites. Sitecore serves as a hub on which other web apps could be built upon and other apps integrated with. But now, after seeing the latest products and features on the horizon, I think the scope of what Sitecore provides is even closer to encompassing all web operations.

The Online Marketing Suite, released last year, was a leap into the marketing space. Now, that is being followed by the all-new Email Marketing Manager and an enhanced Web Forms for Marketers module. So, while I don’t have an acronym for it like WCM, CMS, OMS… its quite clear that Sitecore is solidifying its place as an e-business solution that encompasses content management, applications framework, marketing analytics, campaign management, email marketing management, lead generation, system integration and so on.

And with the release of these new marketing-centric tools, it will be exciting to see how this functionality is integrated with Sitecore Intranet Portal for use internally within organizations… or with Foundry for use across individual affiliate websites and rolled up across such an enterprise. There is some amazing potential there!

In the meantime, we plan to wrap our minds around these new tools as quickly as possible by implementing for our own “e-business” needs, assist clients with similar implementations, and host training sessions in our headquarters offices for any of you out there that want to get the most out of Sitecore as well.

I’d love to hear your thoughts too on how OMS and its related marketing-centric products are shaping Sitecore’s position in the industry.

*EDIT October 28, 2010. We have moved our blog to http://blog.roundedcube.com and you can now comment on this specific post at http://www.roundedcube.com/WhatsNew/Blog/wcm-cms-oms-how-do-you-categorize-sitecore-now

Monday, April 26, 2010

Quick Dreamcore Shout Out

I’d like to quickly thank everyone from Sitecore for putting up a great inaugural annual event, Dreamcore. You can ask Sitecore and they’ll tell you that I’ve been waiting for this. Even though it was only a couple of days, it was enough to get excited again about the prospect of Sitecore and the world of CMS.

Besides learning about the new stuff that Sitecore has in the pipeline, it was great to know where Michael, Bjarne and the rest of Sitecore gang think the market will be, the so-called “Digital Intimacy.” I don’t think we’ll be competing against match.com or eharmony.com anytime soon, but the idea of committing to your audience’s needs is key to engaging them. You can see this commitment from Sitecore initially with their release of OMS. Analytics nowadays seems to be just a buzzword, but in Sitecore world, it’s more than just giving you reports but it’s about tying things together from the multi-variant test results to actual contextual content delivery that matters to the visitor. It’s basically like eharmony’s “form of a thousand personality questions” and match you with "the right” person…sort of.

I’m amazed at the products presented in the conference. One would think that since this is a Sitecore show, it would just be about the CMS. Besides the improvements in the CMS (such as the OMS and other modules), there are renewed commitments to the Intranet and Foundry. There’s also the Ecommerce module that allows for simple online shopping; also, the Email Campaign Manager seemingly replaces the Newsletter module for more robust online campaigns. I think these are great products on top of Sitecore because they are turnkey solutions that would allow us to penetrate other markets.

Again, thanks Sitecore for the great show. I can’t wait for next years. By the way, thanks for the interview as well. You truly value your partners (we’ve been doing it for 5 years now) and customers.

*EDIT October 28, 2010. We have moved our blog to http://blog.roundedcube.com and you can now comment on this specific post at http://www.roundedcube.com/WhatsNew/Blog/quick-dreamcore-shout-out