Monday, November 8, 2010

Roundedcube.com Launched

We just recently launched our new Website and, of course, it’s managed using Sitecore CMS, what else.  It’s actually something that I had a hand on so that I can get back to doing some actual Sitecore work.  Although I may know the concepts, getting back to it took a bit of time especially when I started it was on v6.2 and now it’s on v6.3.  I think I was going to upgrade to v6.4 but didn’t have enough time.  It would’ve been great to see the new enhancements on v6.4 such as cloning, page editor updates, etc.  Maybe in a couple of months.

Anyway, check our site out and let us know what you think.  We put a lot of effort in making the site mobile-friendly (notice no Flash).  It works so well on iPhone/iPad, webOS, and Droid phones.  However, we are still developing the mobile-version of the site and should be out in the next month.  It will re-use the Sitecore instance we have and its content.  I’m making sure that marketing can maintain/enhance the site easily for any media.  So stay tuned for that.

Also, you may have seen some tweets or posts regarding an Easter egg on the site.  Let me just get the cat out of the bag and just double-click on the main feature on the homepage.  Have a great time with it.

Visit our site (http://www.roundedcube.com) and let us know what you think.

Sunday, October 17, 2010

Sitecore 6.4 Cloning – What does it Mean?

If you want to know “what it is”, then check John West’s Blog.  John gives you a quick preview of this new powerful feature, what it does, how it compares with other Sitecore assets, etc.  The concept is not far-fetch and you may have already required or implemented it before.  It essentially allows an item to use another item’s field values.  Let’s say you have a Location page (content item) that has days/hours of operation, amenities, location name, map, address, etc.  Also, let’s say that all locations have the same hours of operation and amenities.  What cloning allows you to do is to “clone” the location content item for another location and just update the address, name, and map.  Upon rendering, you’ll see a complete page with the re-used (or shared depending on how you look at it) content values of hours of operations and amenities together with the specific values for address, name, and map.  This is all without developing any logic specific to this except for rendering the fields.  Cool, huh?

Thursday, October 7, 2010

Proud to be a Sitecore Blogger

Yup.  Besides this blog and our corporate blog, I’m now also a Sitecore blogger:

http://www.sitecore.net/Community/Best-Practice-Blogs/Marco-Tana/Posts/2010/09/Marketers-Top-Sitecore-Priorities.aspx

This may sound self-glorifying but I’m actually proud where my writing skills has taken me.  I still have the occasional grammatical errors but I consider that to be part of my personality (nice excuse, huh?).  Anyway, Sitecore is bringing together a group of Sitecore veterans to give you their (our) experiences with the product, modules, and associated technologies and practices.  It’s called the Best Practice Blogs and was recently released.  You’ll find advice and expertise on marketing, implementation, e-commerce, SEO, usability, and analytics.  There’ll be more topics too come as Sitecore gets more articles. 

I’ve read most of the posts already and very interesting ideas.  I definitely learned a thing or two.  I’m sure you will too.  I say you check it out and I’ll definitely write another one.  By the way, if you happen to read mine, leave me a message and let me know what topic you’d like me to tackle in the future (or at least rate my post).  You can suggest anything from design, technology, project management, processes, etc.  If I have some ideas to share, I’ll definitely evangelize it on my posts either here in my blog, at Roundedcube’s blog, or Sitecore’s.

Thanks again for reading.

Monday, September 20, 2010

ASP.NET Vulnerability Allows Downloading of Server Files (and Decrypt Viewstate)

ANOTHER UPDATE: Sitecore released a fix last Friday on SDN.

UPDATE: A FAQ that details more about the workaround and the vulnerability was released on Sep 20.

Yes.  You read that right.  Essentially, by doing some queries on the server that has an ASP.NET-based Website/app, a hacker can eventually figure out how to download restricted files like web.config and even be able to determine the server’s cipher text and decrypt your site’s Viewstate or other encrypted data you may have. 
I’m posting this here because Sitecore is obviously ASP.NET-based.  So, here’s the post form Scott Guthrie on the workaround and more information about the vulnerability.  Spread it around and let’s make sure our community is safe and keep Sitecore’s integrity intact (even though this is not even about Sitecore).  You know how that works : ).
http://weblogs.asp.net/scottgu/archive/2010/09/18/important-asp-net-security-vulnerability.aspx

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.

Friday, September 10, 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.

Wednesday, September 8, 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 loggingin 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. 

Thursday, September 2, 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.

Wednesday, September 1, 2010

Taking Advantage of Sitecore Dictionary and Tokens

The Sitecore Dictionary is one of the newer features that may have gotten under a developer’s radar.  I’m sure there has been chances when a page design element just doesn’t fit any of the data template fields that’s been defined. Designers or content developers always surprise Sitecore developers with “minor” requirements that have been left out in the specs just because it’s so trivial.  In the CMS world, nothing is trivial because of the fact that site owners want as much control on the site as possible (without going back to a developer – this has been the issue forever).

Friday, August 13, 2010

Learn about Language Fallback from Caleb

One of my brilliant Sitecore guys, Caleb Miller, just wrote a much needed globalization post particularly on language fallbacks.  Essentially, a language fallback is when “something” is not translated to the current language context…then the solution reverts to a fallback language that should have that translation.  I’m  sure this is not old news to those who’ve built global sites, but I’m sure you’ll get some nice insights on this post.

Here’s a quick look at what’s in the post:

  • difference between sc:fld and sc:field in XSLT Renderings
  • item and field level pipeline processors
  • checking for languages and versions

Check it out and let him know what you think.

Simple (but needed) Sitecore UI Improvements on Core Apps

Sitecore has greatly improved its UI since I first looked at it (v4).  It definitely gone from traditional to innovative.  Sitecore has come up with so many new UIs in the past few releases  that it I want to make sure that the UI experts don’t forget about some of the original apps’ usability as well.  Just to give you an idea of how things have progressed in the current UI paradigm:

  1. typical tree-lists, collapsible panels, pop-ups, customizable buttons, ribbons, page editor, and other Windows innovations
  2. Media Library’s improvements on uploads, alt text entry, drag & drop, and thumbnail generation
  3. OMS revealed a new set of UI elements such as its graphical reports, Word-like reports and toolbars, and report designer
  4. Email Campaign Manager has the Preview mode that actually grabs data not from the current item but as a collection of everything underneath it

I haven’t checked other apps that are coming out but I’m sure some other UIs might be forthcoming.  There’s even the custom field types on the Shared Source that you can use such as the carousel.  These are all great improvements, but let’s not forget to improve some of the older Sitecore apps out there. 

The list below are just some of the things I’ve noticed that could help a Sitecore user.  These are simple (not sure about the implementation) improvements that can help make the UIs more usable.  I’m not saying that I can’t currently do what I’m trying to accomplish (i.e. refresh in the User Manager can be done by closing the app and firing it up again), but these improvements will cut down some of the “brute force” user experience we currently have.

Disclaimer: These are not all-inclusive…I’m sure I’ll notice more (or retract some) but if you have anything to add, just comment below and let the Sitecore community know.

User Manager

  • Refresh button to update the list of users
  • Enable the “Drag a column to this area to group by it” or maybe a similar filtering; very useful for sites with extranets and ECM subscribers
  • Column sort
  • Context pop-up menu instead of “select user” then use the button on the toolbar

Security Editor/Access Viewer

  • Combine Security Editor and Access Viewer to see the effects of security changes
  • Refresh button on Access Viewer

Content Editor

  • Jump to content section not just a field
  • If My Toolbar is defined, make it the first ribbon
  • Pre-defined set of My Toolbar customizations based on user’s roles (and can be part of user’s profile)
  • Remove Media Library and Workbox by default to make the Content Editor quicker (I think most people use those as separate apps – and normally you have separate roles who might using those)

Page Editor

  • Keep Ribbon and Page Editor buttons always visible (no scrolling)
  • Context pop-up menu since sometimes sometimes the content can be too long and scrolling is needed
  • Enable My Toolbar with appropriate buttons auto-disabled/enabled

Media Library

  • Multi-select to do typical “Windows Explorer-like” functions such as delete and move

Well, that’s it for now.  This post is not meant to list a set of future features that I’d like to see; otherwise, it’ll be a very long post.  Anyway, if you have more to add, comment below.

Tuesday, August 3, 2010

Sitecore on Firefox…next version…how about Chrome?

Did you know that Sitecore’s future release would actually support Firefox fully in the “Halo” release?  This means that you will now be able to use Sitecore CMS in Firefox with all the various user interfaces and not just Content Editor, etc.  I’m excited about because of the following reasons:

  • Firefox has an active community of add-on developers that helps to make “things” available such as generating Lorem Ipsum fillers, web development tools, color identifier, and more.
  • Firefox is generally accepted as more secure (but more recent studies have shown that IE is becoming as secure but it’s ubiquity remains a reason for it being a primary target).
  • Firefox keeps getting faster and faster especially when it comes to Javascript; as we all know, Sitecore is heavy on Javascript particularly AJAX so this could only help.

I know the reasons above are not deal breakers but what this new full-browser support brings is “OPTION”.  This brings Sitecore to a different level of acceptability with companies that have very tight security policies.  Not sure if Firefox is more secure as I’m not a security expert, but based on many blog reviews and researches it seems to be so.

So, in brief, I’m excited to see the new version when it comes out. But, why did I mention Google Chrome above?

The main reason I’m writing this post is only because I found out about a very cool browser add-on for both Firefox and Chrome called IE Tab.  It’s available at:

http://www.ietab.net/

I downloaded it for both browser and voila! I have the full Sitecore CMS client on both browsers with all its glory.  And I’m not talking about the client being “dumbed” down, it’s what you would expect as if you’re in IE. 

Well, the reason for that is because the add-on essentially uses the Internet Explorer Web control as the rendering engine (i.e. creates an <object> tag that displays the URL into the IE engine).  This means that any other add-ons you might have in either browser will not work on the content of the site.  So, if this is the case, why even bother?

Well, here are some good things to consider:

  • In Chrome, I get to see less Window framing…which means I get to see more of the Sitecore CM client.
  • I could use some of the browser add-ons that doesn’t work with the site’s content such as Lorem Ipsum generators without going to another browser or site.
  • It gives you another option to test the Web site on IE without firing up IE.
  • Most of the Sitecore CMS functionalities work such as the keyboard shortcuts, etc. (upload in the media library doesn’t seem to work).
  • You don’t get to see the IE logo all the time : )

Anyway, I thought I share this since it was interesting to me.  Soon we don’t have to fake the Firefox thing…just Chrome. Of course, we’d love to see Chrome fully supported at some point too.

Thursday, July 29, 2010

What does Sitecore v6.3 Really Means?

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.

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.

Monday, April 26, 2010

A 5-yr Insight to Sitecore Partnership

Yes, it’s been 5 years.  I still remember the day when I first looked at Sitecore in our previous office.  It was for a prospect that wanted a CMS.  During that time, the CMS market was dominated by Interwoven, Stellent, MS CMS, Documentum, Sharepoint and Vignette.  None of those fit my criteria:

  • .NET-based
  • Less than $20k
  • Open-architecture
  • Strict separation of content from presentation
  • Visual Studio-friendly

So, I started looking deeper in the market and found Sitecore.  At that time, Sitecore USA just opened its doors in California.  We didn’t get the prospect but I saw such potential in the technology that I decided to go for training and become a partner.  Needless to say, we became one and I couldn’t be happier with my decision.  Here is our 5-yr timeline with respect to Sitecore:

Year One (2005)
  • becomes a Sitecore Certified Partner with 1 developer using Sitecore v4
  • trained internal developers on Sitecore v4
  • signed our first Sitecore customer
  • ended up with 4 Sitecore customers
  • integrated Sitecore with AS/400 and JD Edwards thru a SOA middle-tier
Year Two (2006)
  • developed a mySQL data provider before it became available
  • developed a Sitecore-generated site scraper to LAMP-friendly site
  • full AD integration complete with biographies and documents
  • more than 12 implementations by this time (including v5.1 and v5.2)
  • real-time integration for up-to-date scoring
Year Three (2007)
  • iMIS integration
  • Community Server integration
  • TIMSS (Personify) integration
  • multi-language with fallback implementation
  • Omniture analytics integration
  • multiple v5.3 implementations and upgrades
  • embraced the “partner for partners” philosophy
Year Four (2008)
  • more v5.3 implementations
  • integration with iMIS for more detailed information on events, members, and others
  • migrated several sites to Sitecore
  • single-sign on with membership system, Sitecore, and Community Server
  • several Sitecore architectural consulting
Year Five (2009)
  • SaaS integrations such as Google Maps, calendars and events, and others
  • several v6 implementations and upgrades
  • one of the first OMS certified partners
  • multiple Sitecore Foundry v2 and v3 implementations
  • 2 case studies performed by Sitecore for the government and faith-based markets

It’s already the 2nd quarter of 2010 and yes we’ve already done some special things this year such as hosting Sitecore training, more OMS certifications, additional Foundry implementations, and recognized as one of the Outstanding CMS Projects.  After attending Dreamcore, we have a renewed excitement towards what Sitecore is doing.  I’d like to be able to update this blog post and let you know what we’ve done again.  With the upcoming release Sitecore and OMS, Intranet Portal, and Foundry, we’re sure to make more history.

Thursday, March 4, 2010

Porting Legacy Web Apps to Sitecore Quickly

Have you ever had a client request where they’d like to have any of their Web apps to be ported over to Sitecore?  And, why not, it looks like Windows and it’s .NET, it can’t be that hard.  Well it can be easy and it can be hard depending on what level you want to port the application.  For this post, we just want to see the legacy app in the Sitecore Shell.  Sometimes, that’s all is needed since the Web app already works pretty well.  Plus, it just looks cooler when your app is within Sitecore.

So, to show the app within Sitecore, we just need to create a Start menu item that invokes the remote Web app.  Let’s start.

Power up Sitecore and login.  Click on the Sitecore “start” button > All Applications > Sitecore on the Net > Sitecore Homepage.  That’s just the Sitecore corporate site.  I’m guessing you’re following what I’m getting at.  You can easily encapsulate (frame) any Web apps that you have created. This is really important because Sitecore let’s you incorporate legacy Web applications especially when it takes a while to port a complex application.  This gives your CMS users a way to access the legacy app through the Sitecore shell provided that the app doesn’t interfere with Sitecore’s windowing mechanism.  There might even be a way to pass data from Sitecore to the app through the URL because that’s essentially how the Web app is invoked.

You can quickly do this by going to the Core DB.  Open the Content Editor and go under Documents and Settings. Traverse the nested folders until you get to Programs.  Inside Programs, you can create a Start menu folder, or the “shortcut” that invokes your legacy Web application.  To create the “shortcut”, which is really a Start menu action, select it from the Insert ribbon.  The most important piece of data you need to assign is under the Message field.  Enter:

RunExternal(\"<URL>", \"\", \"Software/32x32/application.png\", \"<WINDOW TITLE>\")

where <URL> is the Web address to your Web application, <WINDOW TITLE> is the title that is shown on the Sitecore window that appears.  You can also change the icon that appears on the window if you’d like.  Just make it the same icon that you specify in the Icon field of the menu item.

To see the new menu item, refresh the Shell or switch to the Master DB (which refreshes the Shell), and notice that you’ll find your new menu item in the Start menu.  Clicking this item should invoke your remote legacy Web application.

This is the quickest way. Obviously, you can’t do much with this since the Sitecore and the app are not really integrated.  There is only one way communication, if even any from the URL.  But, you can actually use Sitecore’s security to restrict access to the Start menu item, thus making it seemingly secured  Of course, you still have to keep the app secured somehow but at least there’s another level of security that can be used on top of the Web app itself.

There are other two ways to port apps into Sitecore.  With moderate complexity, you can use Sitecore as the app’s data storage.  This means that you’ll have to figure out how to port DB tables to templates (which is pretty simple since that’s how they initially taught us during Sitecore training to explain the concepts).  You can still just use straight ASP.NET controls to do your UI and just use Sitecore APIs to update those related Sitecore items.  I actually created one like this that essentially converted the ASP.NET generated site into PHP files and published the site to Linux with Apache complete with uploaded images, etc.

The most complex way is basically creating a XAML app.  That’s essentially how the native Sitecore apps you see now are developed such as Content Editor, Workbox, etc.  This has been the case since v5 so I’m not sure now how compatible Sitecore’s XAML with the Windows Presentation Foundation (WPF) (Anyone from Sitecore???).  This way of porting the legacy Web apps benefit from the separation of UI from logic, which is what XAML was supposed to achieve.  XAML is intended to be device-independent.  This method is the most lightweight and you can use all the readily available Sitecore-specific XAML controls already created by Sitecore.  You also benefit from the UI’s performance techniques such as AJAX and others without thinking about them.

Anyway, I’ve given you 3 ways to port your legacy apps.  Sometimes it just as easy to port an app than to only integrate them especially when it requires administrative UI.  One of the main reasons that Sitecore is so powerful is its UI, so leverage that with your legacy apps and future ones.

Wednesday, March 3, 2010

Sitecore OMS vs. Sharepoint….hmmmm

I had an initial reaction from my VP of Marketing, Aaron Branson, regarding my take on Sharepoint as being great on audience-profiling, targeting, personalization, and workflow in my previous post.  Aaron says, “What about OMS?”, who, by the way, is one of the first OMS Certified Professionals.  I just want to quickly clear things up that I have not misspoke since I think that Sharepoint is good for these.  I never mentioned OMS because I wasn’t trying to make that connection.  Note: For the workflow feature, it’s more between Sitecore and Sharepoint.

Well, now I would like to make that connection.  The Online Marketing Suite (OMS) is an evolutionary product that changes how a CMS can display marketing-appropriate content to particular users.  Its foundation is its behavioral engine that allows it to analyze how to best show particular content and target the correct audience.  OMS is marketed as an analytics tool, which compared to Sharepoint’s audience targeting, personalization, and targeting is totally different.  How so, you ask?

Although both products may be using similar words/phrases to market their products, they actually have different purposes and basis on how they do it.  There’s a reason why the OMS product name has “Marketing” on it.

Audience Profiling
OMS
Sitecore OMS profiles its users based on the visitor’s site behaviors.  The keyword is “behavior”.  I’m sure there’s a way to incorporate additional user information to fine-tune the profile but that’s when you know who the users are.  This means, OMS profiles anonymous users  to be able to deliver better contextual content.
Sharepoint
Sharepoint profiles is based on “known” information about the user.  As I said before, it’s initial intent is for internal sites where users are in some database.  For Sharepoint, it’s the Active Directory (AD).  The AD contains organizational, demographic, departmental, and others that help content authors deliver appropriate content that pertains to them.
Targeting
OMS
OMS targets based on its behavioral analysis of the user.  It does its analysis using tests such as classic multivariate and A/B splits.  Whichever combinations perform better, the marketer can fine-tune particular pages or areas of the page.  Targeting in OMS sense is meant more to improve conversion rates.
Sharepoint
As mentioned before, Sharepoint uses stored known information about its visitor because they are logged in.  With this information, Sharepoint can target content appropriately.  For instance, a St. Louis picnic outing announcement will not likely show up for someone who lives in New York. 
Personalization
OMS
OMS’s personalization is a “push” from marketing.  It makes the site seemingly personalized to the user because of his/her site behavior.  For instance, if I visited a particular camera, I might see tile ads pertaining to that camera in the future (similar to the Nicam demo).  So, OMS personalizes the content for me instead of the other way around.
Sharepoint
As a portal software, one of it’s strengths is giving the user control over what content he/she sees.  This is the basis for Sharepoint personalization.  Unlike OMS, it’s personalization is dictated by the user’s preferences and not necessarily by behavior.    Thus, the user “pulls” the content instead of marketing or whomever is “pushing” content.
Workflow

Sitecore
Notice I changed this to Sitecore and not OMS.  The main thing to consider is the type of date stored in each of these systems.  For Sitecore, it’s primarily Web content.  The content goes through various department staff and reviews, approve, denies, or publishes them.  The primary “work” involved is reviewing the content.  Sitecore’s workflow mechanism is great for this.  It’s highly customizable and flexible to a point to where it’s possible to have Sharepoint-like workflow (not necessarily better, but has more out-of-the-box features).  We’ve done workflow where content actually goes out of the CMS into a preview server for outside approval. 

Sharepoint
Workflow in Sharepoint is a totally different monster.  It’s not just for reviews although in the end, that’s essentially what people do.  But, it’s more on the type of data that goes through workflow.  Basically, anything goes through its workflow such as (of course) simple Web content.  But, Web content is only one type of data it supports.  An organization can create workflow that adheres to its business processes and allows business users to collaborate on documents, although Sitecore can certainly be extended to do this. By the way, Sharepoint is essentially a host for Windows Workflow Foundation (WWF), thus making it pretty customizable and very powerful.

I’ve cited differences between OMS and Sharepoint (and with Sitecore as well) and the main concept to consider is that OMS is behavioral while Sharepoint fact-based (at least on these features).  I know each one can be retrofitted somehow, but out-of-the box this is what you have.  I hope this clears up any misnomers that I may have mentioned before in my previous post.

Monday, March 1, 2010

Sharepoint vs. Sitecore

This should really be: “When not to use a portal-centric solution.”  I’ve been asked before by a client/prospect why not use their internal Sharepoint implementation for their corporate site.  The simple answer is because it’s not meant to be.
I think that Sharepoint is a great product.  We even use it internally and it makes our internal processes go a lot smoother.  It helps us manage our documents.  It makes collaboration in our projects possible.  We are able to connect various business models into one system.  And, we can integrate it with other nifty Microsoft products we have access to as a Gold Certified Partner.  In brief, we love Sharepoint and I don’t know how we can manage our information without it.
With that said, it’s not always the best solution.  It can, however, be retrofitted to be a solution but that’s when more work is involved and thus not leveraging features that the product has.  When it comes to Sharepoint vs. Sitecore debate for external sites, there’s no sure winner…except when you know what the site is for. 
To me, Sharepoint is great for portal-based sites especially those that requires audience profiling and targeting, personalization, document management, and workflow.  But most sites don’t need this especially corporate sites.  So, why pay the licenses and the services to get it done?
On the other hand, Sitecore is great for content-based (instead of data) sites where the presentation is also a big deal.  Because of its “true” separation of content from presentation (where Sharepoint can’t really attest to), it allows for more control on the presentation.  Although Sharepoint can certainly be skinned, it’s not that straight-forward…remember using FrontPage at one point…and now Sharepoint Designer.
Here are my top reasons why Sharepoint is not the best solution for most external-facing Web sites:
  • Licensing
    Sharepoint costs about $50k minimum to be used for external facing sites and that’s not including the Enterprise Search Server.  Compared to Sitecore’s entry point of $15k, Sharepoint is way too expensive. The main reason is because of MOSS for Internet Server (MOSSFIS) license which allows external anonymous users to access the site.  Hmmm…what if you want an extranet?  What would the licensing look like?  It’s just too complicated for this scenario.  Here’s a Sharepoint calculator if you’d like to see: http://community.bamboosolutions.com/blogs/sharepoint-price-calculator/default.aspx. UPDATE: See comments below for some discussion on this criteria.
  • Developer vs. IT
    I think we can say that Sharepoint is enterprise-ready, but that' doesn’t mean Sitecore isn’t.  It’s just that the tools and how it’s deployed differs.  A lot of IT shops like Sharepoint because they can easily install it and maintain it.  Essentially, they have more “control”.  Sometimes, it’s a matter of politics.  But with politics aside, Sitecore CMS is geared more towards developers.  Sitecore really focused on making the software easy to customize and more open for complex functionalities…thus, more developer-friendly. I’m not sure what’s in store for Twin Peaks release, but I hope corporate can market it being more “IT-friendly”.  I think IT would like to to have inherent monitoring capabilities, backup tools, automatic updates, etc. 
  • Development Environment
    We have several experience on developing on both platforms. As I said earlier, Sitecore is more developer-friendly and it starts with the development environment.  Essentially, Sitecore is just an ASP.NET application.  So if you know ASP.NET, you can develop using Sitecore.  I can’t easily say that for Sharepoint.  It’ll require more work.  Here’s a great blog on how to setup a Sharepoint environment (http://weblogs.asp.net/erobillard/archive/2007/02/23/build-a-sharepoint-development-machine.aspx).  Of course, this is just one of them but it should give you an idea.
  • Deployment
    I guess this depends on perspective.  IT may say Sharepoint is easier to deploy than Sitecore because it has a set of instructions it needs to follow.  Remember, IT folks are not necessarily programmers, so they don’t like “exploratory” trial-and-error types of deployment.  To me, having deployed both, I say Sitecore is much easier to deploy the first time and follow-up updates to the production server(s).  The main thing is that you just need to have a very specific deployment process.  The only difference between Sitecore and Sharepoint is that Sharepoint created tools and written instructions, while Sitecore needs to have their partners define what’s appropriate for the client.  I think that you’ll agree that not every client has the same infrastructure, so allowing Sitecore partners to define it is a big plus.
  • Content Separation
    Sharepoint markets itself having Content Management.  I can’t say that they are lying.  But, the only thing I can say is that they have a level of content management that can’t match up with Sitecore.  Sitecore has a true separation of content from presentation allowing for better content sharing and re-usability.  You can do that with Sharepoint but you actually have to really plan for it and if you don’t, you’re screwed.  Sharepoint’s CMS basically has the same concept as it did with MS CMS 2002…and where is that now?  Try creating a mobile or print-version of you Sharepoint-based pages…and let me know how easy that is…I can do that quickly in Sitecore.
What’s your take on Sharepoint compared to Sitecore?  Let us know. 

Wednesday, February 24, 2010

Upgrade to What?

We have a client who wants to upgrade their Sitecore site to the latest version.  Well, normally that’s a simple “Sure, we can do it” but it’s not.

The reason is that Sitecore sometimes releases a version that's not tagged “recommended”.  Sitecore will release a new version, even a totally new sub-version (6.1 or 6.2) but not call it recommended.  Then, they have the release notes of what changed, improved, and fixed. 

If I’m reading the release notes, I automatically gravitate to why not recommended those.  The changes seems to be great such as a much improved Content Editor.  I don’t know what Sitecore goes through to “recommend” a release.  But, it’s hard for me to recommend a non-recommended version. 

We try to get clients up to date with the releases but if it’s not recommended, we don’t recommend that version.  So, we upgrade to the recommended version only.  But, if the client finds out that there’s an issue with the recommended version that is resolved in later version, then we’re stuck hearing about it and eventually tell ‘em that we can upgrade them with the fix under warranty. 

As you can see, it becomes bad business since we have to do the extra work without getting paid. Maybe it’s just the way I need to form the contract.  Regardless of that, it’s still bad that additional work is needed later.

My main issue is that the non-recommended version number uses a mini-version number instead of the “revision” number.  If it’s a patch, then it’s a patch and just send out a patch package not a whole Sitecore instance.  I know that it may have warranted a new mini-version number because of the improvements, but I suggest that Sitecore separate fixes from improvements.  Fixes can have revisions, while improvements (with the fixes of course) as a mini-version number.

What’s your take?

Tuesday, February 23, 2010

I’m Back

Okay, it’s been a while (specifically almost a year) that I’ve written something on Sitecore.  Since the economy wasn’t too good last year (even now), I had to focus my efforts on ensuring my company is not affected much.  I needed to redirect my attention to growth and to do that is to have the right people in place.  I think I have that now.  I’m still going to be busy doing that, but I’ll put more time into my Sitecore blog.

This may be a year later but Sitecore’s Security UIs have remained the same, so I thought I pick it back up from where I last left off. 

There are five (5) security-related UI's in Sitecore (not counting the security tab/section on the Content Manager):

  • Access Viewer
  • User Manager
  • Security Manager
  • Role Manager
  • Domain Manager

Sitecore’s Access Viewer is certainly much improved from previous versions.  It used to be somewhat confusing but with the context help/explanation on the right, it makes it easier to understand.  Notice also that you can now also see how workflow affects security.  It’s brilliant. 

image

FUTURE FEATURE: To make it better, it’d be nice to see how the security is inherited such as if this is from the template, or from a hierarchy, or combination.  This way, we can easily diagnose potential security issues.