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.