<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Built with Sitecore &#187; Development</title>
	<atom:link href="http://www.isitedesign.com/sitecore/category/development/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.isitedesign.com/sitecore</link>
	<description>A blog about Sitecore’s CMS by ISITE Design</description>
	<lastBuildDate>Tue, 07 May 2013 14:49:14 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Using Lucene to Query Sitecore&#8217;s Master Database</title>
		<link>http://www.isitedesign.com/sitecore/2013/02/18/using-lucene-to-query-sitecores-master-database/</link>
		<comments>http://www.isitedesign.com/sitecore/2013/02/18/using-lucene-to-query-sitecores-master-database/#comments</comments>
		<pubDate>Mon, 18 Feb 2013 15:31:40 +0000</pubDate>
		<dc:creator>Dave P.</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.isitedesign.com/sitecore/?p=798</guid>
		<description><![CDATA[Sitecore Searcher via The Sitecore Searcher and Advanced Database Crawler framework, extending the Sitecore.Search API, allows for direct queries against Lucene indexes. Running queries against Lucene becomes simple given the Sitecore Searcher framework. Notice the signature of the GetItems method below: public virtual List&#60;SkinnyItem&#62; GetItems(IEnumerable&#60;ISearchParam&#62; parameters, bool showAllVersions = false, string sortField = "", bool [...]]]></description>
				<content:encoded><![CDATA[<p></p><p>Sitecore Searcher via <a href="file:///C:/Users/kdelangel/Downloads/https%253A%252F%252Fgithub.com%252Fsitecorian%252FSitecoreSearchContrib">The Sitecore Searcher and Advanced Database Crawler framework</a>, extending the Sitecore.Search API, allows for direct queries against Lucene indexes. Running queries against Lucene becomes simple given the Sitecore Searcher framework. Notice the signature of the GetItems method below:</p>
<p><code>public virtual List&lt;SkinnyItem&gt; GetItems(IEnumerable&lt;ISearchParam&gt; parameters, bool showAllVersions = false, string sortField = "", bool reverse = true, int start = 0, int end = 0)</code></p>
<p>Executing GetItems given the default values for the optional parameters will return records matching the query provided. Everything works as expected, when querying against items in the Web database. Running the same code against items within the Master database as the indexing source, if not careful, can produce unexpected results.</p>
<p>The default settings for querying Lucene will return the first version of every item. While this holds true for the Web database, where every item has only one version, the Master database, however, will be indexed containing more than one version. Querying the Master database using the default settings will return version one for every item.</p>
<p>Resolving this issue  involves adding an additional search parameter to include only the latest version of every item. The Sitecore API includes a built in field to allow this. See the FieldName property setter below:</p>
<pre>private FieldSearchParam GetLatestVersionSearchParameter()
        {
                 var isLatestVersionParameter = new FieldSearchParam() {                  
                         FieldName = Sitecore.Search.BuiltinFields.LatestVersion,
                         FieldValue = "1",
                         Condition = QueryOccurance.Must
                 };

                 return isLatestVersionParameter;
        }</pre>
<p>Appending the parameter above to the list of ISearchParam objects will tell the Sitecore Search API to include only the latest version of every item.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.isitedesign.com/sitecore/2013/02/18/using-lucene-to-query-sitecores-master-database/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sitecore-ISITE Design Webinar 4/24: Avoid Site Killers with Effective CMS Planning</title>
		<link>http://www.isitedesign.com/sitecore/2012/04/10/sitecore-isite-design-webinar-424-avoid-site-killers-with-effective-cms-planning/</link>
		<comments>http://www.isitedesign.com/sitecore/2012/04/10/sitecore-isite-design-webinar-424-avoid-site-killers-with-effective-cms-planning/#comments</comments>
		<pubDate>Wed, 11 Apr 2012 05:01:03 +0000</pubDate>
		<dc:creator>daponovich</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Partners]]></category>
		<category><![CDATA[Strategy]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.isitedesign.com/sitecore/?p=658</guid>
		<description><![CDATA[If there’s a fundamental fact organizations ignore at their peril when creating a digital strategy and implementing a web content management system, it’s this: This stuff is difficult to get right. It’s not impossible, but there are enough landmines in any project that you need to plan rigorously for success. That’s the spirit behind an [...]]]></description>
				<content:encoded><![CDATA[<p></p><p>If there’s a fundamental fact organizations ignore at their peril when creating a digital strategy and implementing a web content management system, it’s this: This stuff is <em>difficult </em>to get right. It’s not impossible, but there are enough landmines in any project that you need to plan rigorously for success.</p>
<p>That’s the spirit behind an upcoming ISITE Design-Sitecore webinar intended to help you prepare wisely for your next web content management initiative and avoid so-called “site killers” that can make your projects go off the rails.</p>
<p>The webinar on April 24, “<a href="https://www1.gotomeeting.com/register/123271697">Avoid Site Killers with Effective CMS Planning,”</a> will benefit anyone implementing a new CMS in 2012 or rethinking a current CMS. The event complements a <a href="http://research.isitedesign.com/governance/">recent Sitecore White Paper</a> in which ISITE Design’s Jeff Cram addresses the important (often overlooked) role of web governance planning.</p>
<p>Jeff, ISITE’s co-founder and publisher of ISITE’s sibling blog, <a href="http://www.cmsmyth.com/">The CMS Myth</a>, will highlight five site killers that threaten to sink your CMS project. You’ll learn how effective web governance planning can make your organization happier and more productive with CMS.</p>
<p>The webinar will cover make-it-or-break-it governance issues:</p>
<ul>
<li>Making a real plan and asking, “How will we use the CMS?”</li>
<li>Planning for large-scale roll-outs of dozens (or hundreds) of sites</li>
<li>Aligning customer experience planning for multi-channel success</li>
<li>Finding common ground between Marketing and IT</li>
<li>Preparing for “day two” and post-launch success</li>
</ul>
<p>When: April 24, 2-3 pm Eastern (11-12 Pacific)</p>
<p>Where: <a href="https://www1.gotomeeting.com/register/123271697 ">Register here for the webinar</a></p>
<p>Download the related white paper: “<a href="http://research.isitedesign.com/governance/">Content Management: The (New) Governance Manifesto</a>”</p>
]]></content:encoded>
			<wfw:commentRss>http://www.isitedesign.com/sitecore/2012/04/10/sitecore-isite-design-webinar-424-avoid-site-killers-with-effective-cms-planning/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting Workflow Working</title>
		<link>http://www.isitedesign.com/sitecore/2011/05/09/getting-workflow-working/</link>
		<comments>http://www.isitedesign.com/sitecore/2011/05/09/getting-workflow-working/#comments</comments>
		<pubDate>Mon, 09 May 2011 18:01:02 +0000</pubDate>
		<dc:creator>Rick Cabral</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Strategy]]></category>
		<category><![CDATA[Training]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[workflow]]></category>

		<guid isPermaLink="false">http://www.isitedesign.com/sitecore/?p=554</guid>
		<description><![CDATA[As a solutions architect, I have had the opportunity to review a diverse set of Sitecore installations authored by folks all over the United States. One common source of implementer and administrator consternation involves successfully implementing Sitecore&#8217;s Workflow feature. Unfortunately, the name &#8220;workflow&#8221; is charged with dozens of subtle expectations. Implementation is further complicated by the fact [...]]]></description>
				<content:encoded><![CDATA[<p></p><p>As a solutions architect, I have had the opportunity to review a diverse set of Sitecore installations authored by folks all over the United States. One common source of implementer and administrator consternation involves successfully implementing Sitecore&#8217;s Workflow feature. Unfortunately, the name &#8220;workflow&#8221; is charged with dozens of subtle expectations. Implementation is further complicated by the fact that Sitecore does not explicitly train developers on the use of the Workflow feature. It&#8217;s an exercise &#8220;left to the reader&#8221;. These are unfortunate circumstances; at its heart Sitecore&#8217;s Workflow system is very simple, and requires minimal setup for success. In this post, I&#8217;m going to cover the rules of thumb to get a sustainable Workflow implementation running on Sitecore.</p>
<h2>Know the correct use for Sitecore Workflow</h2>
<p>At its heart, the Workflow feature&#8217;s sole purpose is to flag a given version of a content item as being finalized, ergo: approved for publication. Workflow design should be anchored around this fact. Workflow should have one (and only one) &#8220;Workflow State&#8221; marked &#8220;Final&#8221;. This &#8220;final&#8221; workflow state should be the <em>last</em> workflow state for a given workflow. Many developers try to &#8220;disable&#8221; workflow by marking all states as final, or introduce a &#8220;final&#8221; workflow state at the beginning of workflow for a &#8220;publish-then-approve&#8221; effect. Both implementations have consequences that confuse the user and clog up the content database. </p>
<p>Aside from the obvious reasons for ending Workflow in a single, final state, <strong>there&#8217;s an architectural assumption in Sitecore that cannot be ignored. The &#8220;final&#8221; workflow state signals Sitecore that an Item version is no longer available for editing.</strong> If a user attempts to edit an Item Version that is in a workflow state marked final, Sitecore will create a new Version of that Item for the user. In the scenarios listed above, the original versions will never progress to a &#8220;finalized&#8221; state from the user&#8217;s perspective, and will remain to clutter the workbox indefinitely.</p>
<p>Recommendation: One workflow state marked final at the end of the workflow process, to indicate that an Item version has progressed through review and is approved for publication.</p>
<h2>Know how to assign Workflow to a Template&#8217;s Standard Values</h2>
<p>Workflow should always be assigned to a Standard Values Item using the Review tab, as shown below.</p>
<p><a href="http://www.isitedesign.com/sitecore/wp-content/uploads/2011/05/SetWorkflow1.png"><img class="alignnone size-full wp-image-563" title="SetWorkflow1" src="http://www.isitedesign.com/sitecore/wp-content/uploads/2011/05/SetWorkflow1.png" alt="" width="557" height="379" /></a></p>
<p>Avoid accessing the Standard Fields to set Workflow, as it&#8217;s a common source of developer confusion. If Workflow is set using the Ribbon, this is what the Standard Fields should look like:</p>
<p><a href="http://www.isitedesign.com/sitecore/wp-content/uploads/2011/05/WorkflowFields.png"><img class="alignnone size-full wp-image-559" title="WorkflowFields" src="http://www.isitedesign.com/sitecore/wp-content/uploads/2011/05/WorkflowFields.png" alt="" width="539" height="330" /></a></p>
<p>Note that the Workflow and State fields are <em>blank.</em>  This is <em>correct</em> for a Standard Values item, as these fields reflect the Workflow and State for a <em>particular instance</em> of an Item type. If you&#8217;re looking for a hint, look for Standard Values items in the Workbox, where they normally would not appear. Chances are, someone filled the Workflow and State fields accidentally. Clear them to return your installation to normal.</p>
<h2>Shunt between Workflow States, not Workflows</h2>
<p>In the image above, note that <strong>the Workflow field is &#8220;shared&#8221;.</strong> This indicates that all Versions in all Languages of a given Item will use the value of this field. If you programmatically alter the value of this field, the effect is universal. This is a good hint that architecturally, Sitecore was not designed to support moving Items between workflows. The solution? Consolidate all the various workflow states across all disparate workflows and use Workflow Commands to select the appropriate path between Workflow States. In addition to being more Sitecore-compliant, this solution has the benefit of being code-free.</p>
<h2>Separate Security Concerns to Reduce your Workflow Complexity</h2>
<p>While Sitecore Security is a post all its own, it merits consideration here. Sitecore uses three different security concerns to evaluate the authority of a user&#8217;s actions:</p>
<p> <a href="http://www.isitedesign.com/sitecore/wp-content/uploads/2011/05/SecurityTriangle.png"><img class="alignnone size-full wp-image-567" title="Sitecore Security Concerns" src="http://www.isitedesign.com/sitecore/wp-content/uploads/2011/05/SecurityTriangle.png" alt="Sitecore Security Concerns" width="361" height="355" /></a></p>
<p>When designing your security scheme, ensure that each of your security roles addresses <em>one and only one</em> of the concerns above. One should note that Sitecore does not follow this advice itself. The &#8220;Sitecore Client Authoring&#8221; role is shipped with a set of Workflow security settings that need to be cleared in order to establish the separation described above.</p>
<p>In theory, all users belong to three security roles, one for each of the concerns above. The first role specifies access to Sitecore features, the second the rights for Items in the content tree, and the third access to various Workflow states and Actions.</p>
<p><a href="http://www.isitedesign.com/sitecore/wp-content/uploads/2011/05/UserWithRoles.png"><img title="Three roles per user" src="http://www.isitedesign.com/sitecore/wp-content/uploads/2011/05/UserWithRoles.png" alt="Three roles per user" width="520" height="257" /></a></p>
<p>Benefits of this security model:</p>
<ul>
<li>Allows you to add access to Sitecore features without having to worry about a user&#8217;s Item security</li>
<li>Allows you to create fine-grained access to parts of the Content Tree without worrying about workflow permissions</li>
<li>Allows you to promote a user&#8217;s workflow rights without changing any other aspect of their security scheme.</li>
<li>In most cases, allows you to use a single workflow for the entire installation.</li>
</ul>
<p>The last point is key. In order for a User to see an Item in the Workbox, they need &#8220;write&#8221; access to the Item as well as the language(s) of relevant versions. The user also needs &#8220;Workflow Write&#8221; access to the Workflow State of the relevant version(s). To move those versions to a new Workflow State, they need Workflow Command Execute rights on at least one Command for that Workflow State. Understanding this architectural detail allows workflow to be extremely flexible without creating multiple workflows. One simply creates security roles for a number of workflow personas (tyipcally this involves an editor and an approver role).  These workflow roles apply permissions only to objects in Sitecore/System/Workflow and therefore can be used by any person who has access to any part of the content tree. It is the content tree security that refines what the user &#8220;sees&#8221; in the Workbox.</p>
<h2>Takeaways</h2>
<p>We&#8217;ve covered a lot of ground on Workflow philosophy. Here&#8217;s the digest version:</p>
<ul>
<li>Use workflow to control whether a Version of an Item is publishable</li>
<li>Set the default workflow in the Standard Values of your Data Templates using the Ribbon, not the Standard Fields</li>
<li>Create a single Workflow for your project and use Workflow States to manage content lifecycles</li>
<li>Separate Workflow security from Item security in your Role definitions</li>
</ul>
<p>Follow these simple steps to simplify your life when it comes to Sitecore administration. Happy configuring!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.isitedesign.com/sitecore/2011/05/09/getting-workflow-working/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Crowning the Sitecore MVPs</title>
		<link>http://www.isitedesign.com/sitecore/2011/04/19/crowing-the-sitecore-mvps/</link>
		<comments>http://www.isitedesign.com/sitecore/2011/04/19/crowing-the-sitecore-mvps/#comments</comments>
		<pubDate>Tue, 19 Apr 2011 20:23:08 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Partners]]></category>

		<guid isPermaLink="false">http://www.isitedesign.com/sitecore/?p=384</guid>
		<description><![CDATA[There&#8217;s up to 20 Sitecore MVPs mingling among the crowd at Dreamcore. Our own Rick Cabral is one of them, although I haven&#8217;t even seen him yet today because we stay on different sides of the track (biz vs tech). Here&#8217;s a suggestion: Let&#8217;s give em all Burger King crowns so we can easily ID [...]]]></description>
				<content:encoded><![CDATA[<p></p><p style="text-align: left;"><a href="http://www.isitedesign.com/sitecore/wp-content/uploads/2011/04/crown1.jpg"><img class="size-full wp-image-386 aligncenter" title="Burger King Crown" src="http://www.isitedesign.com/sitecore/wp-content/uploads/2011/04/crown1.jpg" alt="" width="500" height="333" /></a></p>
<p style="text-align: left;">There&#8217;s up to <a href="http://www.sitecore.net/en/Company/News/Press-releases/2011/2010-MVPs.aspx">20 Sitecore MVPs</a> mingling among the crowd at Dreamcore. Our own <a href="http://www.isitedesign.com/news/sitecore-mvp-rick-cabral-recognized">Rick Cabral is one of them</a>, although I haven&#8217;t even seen him yet today because we stay on different sides of the track (biz vs tech).</p>
<p style="text-align: left;">Here&#8217;s a suggestion: Let&#8217;s give em all Burger King crowns so we can easily ID them. Someone want to run out and get 20? I&#8217;m sure the MVPs would be thrilled to wear em, right Rick?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.isitedesign.com/sitecore/2011/04/19/crowing-the-sitecore-mvps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tweak your Sitecore Delivery Environment</title>
		<link>http://www.isitedesign.com/sitecore/2011/04/18/tweak-your-sitecore-delivery-environment/</link>
		<comments>http://www.isitedesign.com/sitecore/2011/04/18/tweak-your-sitecore-delivery-environment/#comments</comments>
		<pubDate>Mon, 18 Apr 2011 15:37:35 +0000</pubDate>
		<dc:creator>Rick Cabral</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Training]]></category>

		<guid isPermaLink="false">http://www.isitedesign.com/sitecore/?p=280</guid>
		<description><![CDATA[Your Sitecore project is ready to roll, the presentation layer is done, and the code looks good: You&#8217;re using Fast Query and New Search to retrieve lists of Items Your layouts are not overly stacked All Renderings and Sublayouts have appropriate output cache settings There are, however, a few things you can still do to really [...]]]></description>
				<content:encoded><![CDATA[<p></p><p>Your Sitecore project is ready to roll, the presentation layer is done, and the code looks good:</p>
<ul>
<li>You&#8217;re using <em>Fast Query</em> and <em>New Search </em>to retrieve lists of Items</li>
<li>Your layouts are not overly stacked</li>
<li>All Renderings and Sublayouts have appropriate output cache settings</li>
</ul>
<p>There are, however, a few things you can still do to really make your installation perform. After all, no one can predict when your client will be front-page news, or the target of the newest digital meme. Take advantage of this one-stop post to turn your Sitecore install into a screen-rattling dragster of a web site.</p>
<p><strong>Use Windows Server 2008 64-bit Edition</strong></p>
<p>There is a noticeable improvement running Windows (and .NET) on 64-bit systems. All modern CPUs support it, make sure you&#8217;re getting the value out of that server, virtual or otherwise.</p>
<p><strong>Enable Static and Dynamic HTTP Compression on your IIS Server</strong></p>
<p>Next to running 64-bit software, HTTP Compression is the easiest and fastest way to impact perceived application performance. For this post, I&#8217;m going to assume you took my advice on the first topic, and limit the implementation to IIS 7.x, which ships with HTTP Compression! The IIS 7 control panel features options for enabling compression of static and dynamic content. You want to turn both of those on. <em>There&#8217;s a catch!</em> Dynamic compression is not installed by default on Windows 2008. Head for Settings and use Programs and Features to turn on this specific feature of IIS.</p>
<p><strong>Strip Unnecessary HttpModules and HttpHandlers from your web.config File</strong></p>
<p>Unless you are integrating with certain security systems, the following modules can generally be turned off on a Sitecore installation:</p>
<ul>
<li>WindowsAuthentication</li>
<li>PassportAuthentication</li>
<li>AnonymousIdentification</li>
<li>UrlAuthorization</li>
<li>FileAuthorization</li>
</ul>
<p>Simply remove them from the &lt;httpModules /&gt; element in your web.config. Note that the last two have implications; your *.config files may be vulnerable unless you have a well crafted extension handler stack. Consider yourself warned.</p>
<p><strong>Tweak Threads in the machine.config File</strong></p>
<p>By default, .NET web applications are throttled back to allow for multiple applications and services to run on the server. Because I&#8217;m assuming we&#8217;re configuring a dedicated Sitecore web server you can boost the amount of memory, worker threads, and IO threads available to ASP.NET. In your machine.config find system.web/processModel and remove all attributes, then add the following:</p>
<pre>&lt;system.web&gt;
  &lt;processModel
       autoconfig="false"
       memoryLimit="80"
       minWorkerThreads="50"
       maxWorkerThreads="100"
       maxIoThreads="100"
  /&gt;
&lt;/system.web&gt;</pre>
<p>The above settings assume a 4 core CPU (real or virtual) and at least 4GB of RAM.</p>
<p><strong>Ensure Sitecore Always has Sufficient HttpConnections</strong></p>
<p>Creating a connection costs more than using an existing one from the pool. Setting these properties will ensure higher performance for required resources</p>
<p>In your machine.config find system.net/connectionManagement and remove the default settings. Add the following:</p>
<pre>&lt;system.net&gt;
   &lt;connectionManagement&gt;
     &lt;add address="sitecore1.maxmind.com" maxconnection="48" /&gt;
     &lt;add address="*" maxconnection="48" /&gt;
   &lt;/connectionManagement&gt;
&lt;/system.net&gt;</pre>
<p>Maxmind is the geolocation service used by Sitecore&#8217;s OMS tool by default. Because the service is called for every request (if you&#8217;re using OMS) you want that service to be as available as possible.</p>
<p>The numbers above come from Microsoft&#8217;s &#8220;secret sauce&#8221; recipe of 12 connections per CPU.</p>
<p><strong>Ensure Sitecore Always has Sufficent Resources to Handle Requests</strong></p>
<p>In the web.config file, find the httpRuntime element and replace the current attributes with the following:</p>
<pre>&lt;httpRuntime
   executionTimeout="600"
   maxRequestLength="16384"
   minFreeThreads="352"
   minLocalRequestFreeThreads="304"
/&gt;</pre>
<p>Note that &#8220;executionTimeout&#8221; is set very aggressively. Test your application thoroughly to ensure all operations complete. The &#8220;maxRequestLength&#8221; setting will help protect you from certain types of HTTP attacks, but will also prevent your content authors from uploading sizable media library items. This setting should only be used on content delivery servers.</p>
<p><strong>Set Cache Sizes</strong></p>
<p>Sitecore&#8217;s as-shipped cache configuration is&#8230; conservative. Add lots of RAM to your server and crank it to eleven!  In the web.config adjust the default cache settings:</p>
<pre>&lt;settings&gt;
 &lt;!-- Site-related Settings --&gt;
 &lt;setting name="Caching.DefaultHtmlCacheSize" value="100MB" /&gt;
 &lt;setting name="Caching.HtmlLifetime" value="00:45:00" /&gt;
 &lt;!-- Database-related Settings --&gt;
 &lt;setting name="Caching.DefaultPathCacheSize" value="100KB" /&gt;
 &lt;setting name="Caching.StandardValues.DefaultCacheSize" value="1MB" /&gt;
&lt;/settings&gt;</pre>
<p>Then adjust the output cache settings for each site in your installation. There is a dedicated element:</p>
<pre>&lt;cacheSizes&gt;
   &lt;sites&gt;
     &lt;website&gt;
       &lt;html&gt;100MB&lt;/html&gt;
       &lt;registry&gt;0&lt;/registry&gt;
       &lt;viewState&gt;0&lt;/viewState&gt;
       &lt;!-- If you're not using XSL, disable this setting --&gt;
       &lt;xsl&gt;0&lt;/xsl&gt;
     &lt;/website&gt;
   &lt;/sites&gt;
&lt;/cacheSizes&gt;</pre>
<p>Or you can set output cache size attributes on the site node, discussed next.</p>
<p><strong>Tune the Settings for Each Site in your Installation</strong></p>
<p>There are a plethora of settings here. Check out this example, which is optimized for a content delivery server:</p>
<pre>&lt;sites&gt;
 &lt;site
 name="ExampleSite"
 rootPath="/sitecore/content/ExampleSite"
 hostName="*ExampleSite*"
 virtualFolder="/"
 physicalFolder="/"
 startItem="/home"
 database="web"
 domain="extranet"
 allowDebug="false"
 cacheHtml="true"
 htmlCacheSize="100MB"
 registryCacheSize="0"
 viewStateCacheSize="0"
 xslCacheSize="0"
 filteredItemsCacheSize="10MB"
 enablePreview="false"
 enableWebEdit="false"
 enableDebugger="false"
 disableClientData="true"
 targetHostName="ExampleSite.com"
 enableAnalytics="true" /&gt;
&lt;/sites&gt;</pre>
<p><strong>Footnotes</strong></p>
<p>A certain amount of research was required to develop these settings, your result may vary. Consider the following to be required reading:</p>
<ul>
<li><a href="http://support.microsoft.com/kb/821268" target="_blank">Calculating Appropriate Thread Values</a></li>
<li><a href="http://blogs.msdn.com/b/tmarq/archive/2007/07/21/asp-net-thread-usage-on-iis-7-0-and-6-0.aspx" target="_blank">Thread Usage in IIS 6 &amp; 7</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/7w2sway1(v=VS.90).aspx" target="_blank">Details of the processModel Element</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/e1f13641(v=VS.85).aspx" target="_blank">Details of the httpRuntime Element</a></li>
</ul>
<p>This post was heavily inspired by a <a href="http://www.justagile.com/blogs/posts/asp-net-64-bit-performance-tuning-with-sitecore.aspx" target="_blank">similar post on JustAgile.com that takes more of a sightseeing approach</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.isitedesign.com/sitecore/2011/04/18/tweak-your-sitecore-delivery-environment/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Anatomy of a Successful Sitecore User Group</title>
		<link>http://www.isitedesign.com/sitecore/2011/04/17/anatomy-of-a-successful-sitecore-user-group/</link>
		<comments>http://www.isitedesign.com/sitecore/2011/04/17/anatomy-of-a-successful-sitecore-user-group/#comments</comments>
		<pubDate>Sun, 17 Apr 2011 16:16:42 +0000</pubDate>
		<dc:creator>daponovich</dc:creator>
				<category><![CDATA[Case Studies]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Partners]]></category>
		<category><![CDATA[Strategy]]></category>
		<category><![CDATA[Training]]></category>

		<guid isPermaLink="false">http://www.isitedesign.com/sitecore/?p=272</guid>
		<description><![CDATA[The annual Sitecore Dreamcore conference hits Boston this week, April 19-20, with a sold-out venue and an international contingent of speakers and attendees. Although we don’t have hard data to back it up, the Boston region likely has the highest concentration of Sitecore developers using the platform anywhere this side of Denmark. The clearest sign: [...]]]></description>
				<content:encoded><![CDATA[<p></p><p>The annual Sitecore Dreamcore conference <a href="http://www.isitedesign.com/sitecore/2011/04/11/dreamcore-2011-approaches/" target="_self">hits Boston</a> this week, April 19-20, with a sold-out venue and an international contingent of speakers and attendees. Although we don’t have hard data to back it up, the Boston region likely has the highest concentration of Sitecore developers using the platform anywhere this side of Denmark.</p>
<p>The clearest sign: as of this writing, the New England Sitecore User Group <a href="http://www.meetup.com/Sitecore-User-Group-New-England" target="_self">boasts 139 members</a> – believed to be the largest Sitecore user group in the world.  And it’s an active bunch, reflecting a multitude of Sitecore customers and partners work and live in the area.  </p>
<p>ISITE Design launched the UG in Fall 2009 and hosts a monthly confab at our Cambridge office, just across the river from Boston. ISITE’s <a href="http://www.isitedesign.com/news/sitecore-mvp-rick-cabral-recognized" target="_self">Sitecore MVP Rick Cabral</a> leads the pack (typically 25-30 attendees each month) addressing best practices around topics like multisite Sitecore deployments, workflow and security, fine-tuning your CMS performance and more.</p>
<p>But contributions and example projects from the community show the range of projects and depth of involvement in the platform and put the “users” in user group. Everyone comes away a little smarter, a little more energized.</p>
<p>We’ve been asked by folks in other cities what makes for a successful user group. There’s no magic bullet – we’re fortunate to have a robust base of users around Boston – but there are some lessons to offer.</p>
<ol>
<li>Make it consistent. Meet regularly at a central location if possible. Being near public transport helps a ton. We typically meet monthly, on a mid-month Wednesday night. Pizza at 6; presentation at 6:30.</li>
<li>Make it compelling. Define topics that the audience wants/needs to talk about. Create real, focused content highlighting real world examples that people can learn from. Rick drives a core topic every month, but the floor is always open to others to bring examples and talk about challenges and ideas they’re facing.</li>
<li>Make it fun. Main presentations usually last no more than 75 minutes, with plenty of time to network before and after. People talk shop, discuss job opportunities, recent projects. Then the group repairs to a local watering hole for more socializing.</li>
<li>Make it about the community. Create an environment where many people can contribute, minus a sense of competition. It’s true: many attendees from among the partner ranks compete against each other for client projects. But a well-run user group encourages camaraderie that transcends competition and creates a collegial atmosphere for continual learning.</li>
</ol>
<p>If you&#8217;re heading to Boston for Dreamcore, join the fun. On Monday April 18, 7-10 pm, the New England User Group (and ISITE Design) hosts a Dreamcore Meetup at Minibar in Copley Square. You can <a href="http://dreamcoremeetup.eventbrite.com/" target="_self">register here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.isitedesign.com/sitecore/2011/04/17/anatomy-of-a-successful-sitecore-user-group/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Five Years Working with Sitecore</title>
		<link>http://www.isitedesign.com/sitecore/2011/04/14/five-years-working-with-sitecore/</link>
		<comments>http://www.isitedesign.com/sitecore/2011/04/14/five-years-working-with-sitecore/#comments</comments>
		<pubDate>Thu, 14 Apr 2011 14:08:47 +0000</pubDate>
		<dc:creator>Rick Cabral</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.isitedesign.com/sitecore/?p=260</guid>
		<description><![CDATA[I looked at Sitecore as a CMS product back in October of 2005. My team trained that December on Sitecore 5.1, and after the new year, we were implementing the (then brand new) 5.2 version. Five years and many installs later, it&#8217;s hard to even conjure up the old 5.2 interface. I remember it being [...]]]></description>
				<content:encoded><![CDATA[<p></p><p>I looked at Sitecore as a CMS product back in October of 2005. My team trained that December on Sitecore 5.1, and after the new year, we were implementing the (then brand new) 5.2 version. Five years and many installs later, it&#8217;s hard to even conjure up the old 5.2 interface. I remember it being dark, full of very small input fields, and lots of sliders. Interestingly enough, most of the core features have survived: the &#8220;Desktop&#8221;, Data Templates, Field Sections, Field Types, the locations of things in the Content Tree, and Workflow are all recognizable (if a little less feature-rich).</p>
<p><strong>Evolution</strong></p>
<p>When asked to consider what&#8217;s changed, you&#8217;d need to insert some qualifiers. Architectural changes have an impact on the core product, while finesse changes impact the system users (developers and content authors alike). </p>
<p>Sitecore as a platform has been remarkably consistent. Off the top of my head I can think of only two major architecture changes: the re-casting of Masters to &#8220;Branch Templates&#8221; and the introduction of &#8220;Standard Values&#8221;. Both of these were life-changing for the developer and really improved the data design aspect of the product.</p>
<p>The list of finesse changes is long: Office 2007-style interfaces, the data designer, Page Edit Mode, and a host of behind-the-scenes database and API improvements have radically changed the implementer&#8217;s workload. For the practiced developer, ramping up a new install and prototyping a site on Sitecore has become a demonstration of rapid application development. For the newly trained, Sitecore&#8217;s documentation provides a wealth of best practice information and deep-dive recommendations on the most complex aspects of the system.</p>
<p><strong>Personal Expectations for the Future</strong></p>
<p>Working in content management for five years, I&#8217;m obviously something of a <a href="http://www.meetup.com/Sitecore-User-Group-New-England/">Sitecore fan boy</a>, and was recently <a href="http://www.isitedesign.com/news/sitecore-mvp-rick-cabral-recognized" target="_blank">recognized as such</a>. That said, there are some improvements I&#8217;d like to see in the product:</p>
<p><strong>Redesigned User Experience for Tabular Data</strong></p>
<p>At its heart, Sitecore&#8217;s data is modelled after a hierarchical concept similar to XMLDom and OOP. I credit this architecture as the reason programmers tend to fall in love with the system immediately. It&#8217;s absolutely fabulous for creating page templates with generalizations, reusable components and marketing-friendly site maps. However, the tree-like structure has some limitations when representing content that marketers tend to think of in a &#8220;siloed&#8221; or tabular fashion; optional content, comments, and document archives come to mind. While this kind of content can be modeled in Sitecore, the developed model exposes too much of the content storage and url-management overhead to users. Interface customizations are possible, but expensive to develop.</p>
<p><strong>Task-Based Authoring Interfaces</strong></p>
<p>When you have some gnarly business requirements, Sitecore&#8217;s flexibility is a blessing. The API lets you tap into any housekeeping pipeline you can imagine. It&#8217;s almost a shame that their control stack is (at time of writing) a relatively closed option. the Sheer API is not documented, and although remarkably clever (when decompiled), it is very hard to create a data entry customization that is forward compatible. Sitecore&#8217;s answer to date has been Page Edit Mode, which gives content authors that &#8220;what you see&#8221; editing experience. In reality the demonstrable aspects of Page Edit Mode are either low hanging fruit (click-to-type) or beyond all but the most web-savvy marketer (custom rendering rules). In the future, I see developers needing a way to &#8220;step off&#8221; from Page Edit Mode and launch their own dialogs &amp; wizards to request information in a way that is more in line with business objectives.</p>
<p><strong>Wrapping it Up</strong></p>
<p>Interestingly enough, the above desired improvements are probably &#8220;on the roadmap&#8221; for future releases of Sitecore. For those in mid-implementation, it would also be reasonable to have developers go &#8220;off the reservation&#8221; and develop their own custom data entry interfaces. The API supports the concept easily. Just be sure to estimate the effort accurately.</p>
<p>As a seasoned Sitecore developer, I remain impressed with Sitecore&#8217;s base architecture. The flexibility and power of the product makes it a joy to work with. The developer ecosystem is growing rapidly, and most developers working on the platform are passionate enthusiasts. Increasingly I see Sitecore itself leveraging its own product for point solutions like OMS and Email Marketing. The fact that these solutions can be implemented seamlessly on the core product using nothing more than the existing interfaces, data storage mechanisms, and APIs is certainly a tribute to a well designed system. It&#8217;ll be interesting to see what they&#8217;re keeping behind the curtain at <a href="http://www.sitecore.net/en/Events/Dreamcore2011.aspx">Dreamcore</a>. Hope to see you there.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.isitedesign.com/sitecore/2011/04/14/five-years-working-with-sitecore/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dreamcore 2011 Approaches</title>
		<link>http://www.isitedesign.com/sitecore/2011/04/11/dreamcore-2011-approaches/</link>
		<comments>http://www.isitedesign.com/sitecore/2011/04/11/dreamcore-2011-approaches/#comments</comments>
		<pubDate>Mon, 11 Apr 2011 19:27:02 +0000</pubDate>
		<dc:creator>Rick Cabral</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Dreamcore]]></category>

		<guid isPermaLink="false">http://www.isitedesign.com/sitecore/?p=255</guid>
		<description><![CDATA[If you&#8217;re into Sitecore and you&#8217;re a developer like me, Sitecore&#8217;s annual Dreamcore  event offers a great opportunity to hear the minds behind the product speak about the technology, and the product roadmap.  This year&#8217;s schedule does a nice job of keeping the developer talk track free of distractions. I plan on camping out there, and so [...]]]></description>
				<content:encoded><![CDATA[<p></p><p>If you&#8217;re into Sitecore and you&#8217;re a developer like me, Sitecore&#8217;s annual Dreamcore  event offers a great opportunity to hear the minds behind the product speak about the technology, and the product roadmap.  <a title="Dreamcore Event Landing Page" href="http://www.sitecore.net/Events/Dreamcore2011/Home.aspx" target="_blank">This year&#8217;s schedule</a> does a nice job of keeping the developer talk track free of distractions. I plan on camping out there, and so should any certified Sitecore developer.</p>
<p>Lars Nielsen, John West, Kerry Bellerose, Alex Shyba and Alexey Rusakov are all giving talks on current or future technology at a level Sitecore geeks will appreciate. If you&#8217;ve never met or watched John West demonstrate, it&#8217;s a must-attend.</p>
<p>Been working with Sitecore for a few years and have some opinions about the product? Dreamcore is repeating the Technology Interact Panel, which gives implementers a forum for direct Q&amp;A with Sitecore leadership. Last year&#8217;s panel had some energy in it, bring your opinions and sit near the front of the room.</p>
<p>Of course, the presentations are only half the fun. Whether you are a lone wolf developer or a member of a team, it&#8217;s quite an experience to hang out with a few hundred other people that know exactly what you do for a living. Come pick brains and exchange business cards. Better yet, come join the local <a title="New England Sitecore User Group" href="http://www.meetup.com/Sitecore-User-Group-New-England/" target="_blank">Sitecore User Group</a> for our <a title="Dreamcore Kickoff Tweetup" href="http://www.meetup.com/Sitecore-User-Group-New-England/events/16998607/" target="_blank">kickoff party</a>. Hope to see you there.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.isitedesign.com/sitecore/2011/04/11/dreamcore-2011-approaches/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sitecore Multisite Right</title>
		<link>http://www.isitedesign.com/sitecore/2010/09/30/multisite-right/</link>
		<comments>http://www.isitedesign.com/sitecore/2010/09/30/multisite-right/#comments</comments>
		<pubDate>Fri, 01 Oct 2010 01:41:13 +0000</pubDate>
		<dc:creator>Rick Cabral</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Training]]></category>

		<guid isPermaLink="false">http://www.isitedesign.com/sitecore/?p=248</guid>
		<description><![CDATA[Wednesday at the monthly Sitecore User Group (New England) We covered an archetypal multi-site solution, the ISITE way. For those who couldn&#8217;t attend, I wanted to take a few minutes and cover the highlights. Multisite Concerns: Site-based security roles Site-based Layouts/Sublayouts/Renderings Site-based Data Templates Site-based Insert Options (and therefore IA) Site-based digital assets Site-based code libraries [...]]]></description>
				<content:encoded><![CDATA[<p></p><p>Wednesday at the monthly Sitecore User Group (New England) We covered an archetypal multi-site solution, the ISITE way. For those who couldn&#8217;t attend, I wanted to take a few minutes and cover the highlights.</p>
<p><strong>Multisite Concerns:</strong></p>
<ul>
<li>Site-based security roles</li>
<li>Site-based Layouts/Sublayouts/Renderings</li>
<li>Site-based Data Templates</li>
<li>Site-based Insert Options (and therefore IA)</li>
<li>Site-based digital assets</li>
<li>Site-based code libraries</li>
<li>Multiple simultaneous development projects</li>
<li>Distributed developers</li>
</ul>
<p>ISITE&#8217;s approach to the above concerns is holistic. If you&#8217;re going to run a Sitecore install with 50+ web sites of various sizes and design, you need a plan. We&#8217;ve been there, we&#8217;ve done that. Here&#8217;s what the scars have taught us:</p>
<p><strong>Decide what all your sites must have in common.</strong></p>
<p>Let&#8217;s face it, Sitecore is a single ASP.NET application running on your web server. You have to plan carefully to prevent namespace collisions, duplicate functionality, and general code rot before your content authors ever get a look at the system.</p>
<p>Take the time to imagine a basic &#8220;spine&#8221; for your web site, as design agnostic as possible. What navigation paradigms will you need to support? What kinds of content are common across all sites? News? Events? Blogs? Profiles? Take a least-common-denominator approach. If possible, build a &#8220;white label&#8221; web site utilizing these components. The data and presentation defined here will serve as your base library.</p>
<p><strong>Leverage Sitecore&#8217;s OOP Goodness</strong></p>
<p>Treat Data Templates as if they were .NET Interfaces. Wrap Items in some strongly typed business objects and leverage polymorphism to give your baseline functionality opportunities to stretch to fill new needs. If one of your sites has something that isn&#8217;t in your core framework, stop and consider whether it&#8217;s a one-off, or whether it should be folded into your core feature set.</p>
<p><strong>Enforce Best Practices with Abstract Controls</strong></p>
<p>How <em>do </em>you ensure that the output of a control is cached? How do you ensure that programming intern next to you has turned off Viewstate for all the controls she&#8217;s building? You&#8217;ve standardized the HTML output for a blog roll, how do you make sure it&#8217;s used on the next site with that radically different color scheme?</p>
<p>You build a control library of course! You build it so that programmers are forced to implement your best practices with every derivative. Yes, it takes time to train developers where to look in your library, but it sure saves time on the QA bench. If your team is using Continuous Integration and code grooming tools like FXCop, you can even automate the enforcement of your conventions.</p>
<p><strong>Don&#8217;t Forget the Authors</strong></p>
<p>Within a multisite installation, nothing is quite so tedious as adding an image to a page when you have to sort through the folders for every site on the installation. Use Sitecore Query to set the Source property of your Image, File, Treelist, Multilist, and Droplink controls to reduce the scope of the result set. Your wrists will thank you for it.</p>
<p><strong>A Nod to Open Source</strong></p>
<p>Ruby is many things to many people. I&#8217;m not going to share my opinion,  but I do endorse one of its core design philosophies: <em>Convention over Configuration</em>. Name objects that behave similarly the same between sites. Keep your site folder structures consistent in Sitecore and in the file system. I&#8217;m not going to give away the farm here, but with convention on your side, you could use context and a little pipeline magic to significantly cut down on the number of &#8220;administrative&#8221; objects you have to create in Sitecore.</p>
<p><strong>Get Agile, Get Pragmatic!</strong></p>
<p>Requisitioning a site in Sitecore takes a lot of brute-force data manipulation:</p>
<ul>
<li>web.config settings</li>
<li>Data Template derivation</li>
<li>Standard Value overrides</li>
<li>Layouts on a site-by-site basis</li>
<li>Security Roles &amp; Security settings</li>
<li>File system changes</li>
<li>Visual Studio Solution changes</li>
</ul>
<p>For one of our clients, it&#8217;s more than 50 steps to get a new site running. <em>Automate it</em>. Learn to use the API to create templates, layouts, roles, etc and make your life a lot easier. Don&#8217;t forget to provide a means to reverse your changes.</p>
<p><strong>That&#8217;s a Wrap</strong></p>
<p>We&#8217;ve covered a number of ISITE&#8217;s core philosophies for successsfully implementing multisite, but this was most definitely a survey course. For further details, hit me up at the next User Group in Boston. <a title="User Group's Meetup page" href="http://www.meetup.com/Sitecore-User-Group-New-England/" target="_blank">Join our group today</a> and come hang with some serious Sitecore geeks.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.isitedesign.com/sitecore/2010/09/30/multisite-right/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>When will Azure support be available?</title>
		<link>http://www.isitedesign.com/sitecore/2010/07/19/when-will-azure-support-be-available/</link>
		<comments>http://www.isitedesign.com/sitecore/2010/07/19/when-will-azure-support-be-available/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 17:36:59 +0000</pubDate>
		<dc:creator>Rick Cabral</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.isitedesign.com/sitecore/?p=246</guid>
		<description><![CDATA[Apparently not until the end of the quarter. Check out this article from Fierce, which summarizes a number of public announcements from Sitecore last week. At Dreamcore I seem to remember Lars mentioning that there were &#8220;several&#8221; point releases in the queue before Massive arrives&#8230;]]></description>
				<content:encoded><![CDATA[<p></p><p>Apparently not until the end of the quarter. Check out this <a href="http://www.fiercecontentmanagement.com/story/new-sitecore-release-leverage-cloud/2010-07-13">article from Fierce</a>, which summarizes a number of public announcements from Sitecore last week.</p>
<p>At Dreamcore I seem to remember Lars mentioning that there were &#8220;several&#8221; point releases in the queue before Massive arrives&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.isitedesign.com/sitecore/2010/07/19/when-will-azure-support-be-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
