<?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>Agile Sharepoint development by 21apps and Andrew Woodward MVP &#187; Development</title>
	<atom:link href="http://www.21apps.com/tag/development/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.21apps.com</link>
	<description></description>
	<lastBuildDate>Wed, 28 Jul 2010 10:19:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>SharePoint 2010 ECMAScript &#8211; &#8216;b&#8217; is null or not an object</title>
		<link>http://www.21apps.com/development/sp2010-b-is-null/</link>
		<comments>http://www.21apps.com/development/sp2010-b-is-null/#comments</comments>
		<pubDate>Mon, 24 May 2010 13:30:15 +0000</pubDate>
		<dc:creator>Andrew Woodward</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[ECMAScript]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://www.21apps.com/?p=1278</guid>
		<description><![CDATA[I had to post this quick article as its one of those can&#8217;t see the wood for the trees.
I had been trying to do a simple call back to the server to display some information about a list item.
   getStory: function (id) {
    var backLogList = this.lists.getByTitle('BackLog');
     [...]]]></description>
			<content:encoded><![CDATA[<p>I had to post this quick article as its one of those can&#8217;t see the wood for the trees.</p>
<p>I had been trying to do a simple call back to the server to display some information about a list item.</p>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   getStory: <span style="color: #0000ff">function</span> (id) {</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">    <span style="color: #0000ff">var</span> backLogList = <span style="color: #0000ff">this</span>.lists.getByTitle('BackLog');</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">        <span style="color: #0000ff">this</span>.itemToGet = backLogList.getItemById(id);</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">        context.executeQueryAsync(</pre>
<pre style="background-color: #ffff00; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">        Function.createDelegate(<span style="color: #0000ff">this</span>, com.apps.aberdovey.SprintPlanning.getStorySucceeed),</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">        Function.createDelegate(<span style="color: #0000ff">this</span>, com.apps.aberdovey.SprintPlanning.onFail));</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">    },</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">    getStorySucceed: <span style="color: #0000ff">function</span> (sender, args) {</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">    alert('got it');</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">    },</pre>
<p>The problem was I never got anything to happen.  My onFail() had an alert and I also showed an alert when the call succeeded.   But nothing.</p>
<p>I reverted to IE Dev toolbar where I kept getting the error</p>
<blockquote><p>&#8216;b&#8217; is null or not an object</p></blockquote>
<p>after spending time validating my calling code and cursing the lack of good examples on the web for SharePoint 2010 ECMAScript I eventually found it. </p>
<p>The delegate name for the getStorySucceed was spelt incorrectly!</p>
<p>It is amazing how much time you spend looking for stupid errors when doing JavaScript development.  This one I thought worth posting so that when other search for &#8216;b&#8217; is null or not an object they will at least have a better idea what&#8217;s wrong.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.21apps.com/development/sp2010-b-is-null/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing SharePoint Retreat</title>
		<link>http://www.21apps.com/sharepoint/sharepoint-retreat-london/</link>
		<comments>http://www.21apps.com/sharepoint/sharepoint-retreat-london/#comments</comments>
		<pubDate>Tue, 04 May 2010 11:54:15 +0000</pubDate>
		<dc:creator>Andrew Woodward</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[SharePint]]></category>
		<category><![CDATA[SharePoint Retreat]]></category>

		<guid isPermaLink="false">http://www.21apps.com/?p=1267</guid>
		<description><![CDATA[
We are proud to announce the world&#8217;s first SharePoint Retreat!
The first event is taking place in London on Saturday 10th July.  Don&#8217;t delay places are filling up fast with a limit of 16 people.
 
The aim of SharePoint Retreat is to help developers practice the fundamentals of software development, but like all things in the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.21apps.com/wp-content/uploads/2010/05/mainlogo.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="mainlogo" src="http://www.21apps.com/wp-content/uploads/2010/05/mainlogo_thumb.jpg" border="0" alt="mainlogo" width="370" height="106" /></a></p>
<p>We are proud to announce the world&#8217;s first SharePoint Retreat!</p>
<blockquote><p>The first event is taking place in London on Saturday 10th July.  Don&#8217;t delay places are filling up fast with a limit of 16 people.</p>
<p><a href="http://spretreatlondon.eventbrite.com?ref=ebtn" target="_blank"  ><img border="0" src="http://www.eventbrite.com/registerbutton?eid=672945799" alt="Register for SharePoint Retreat London in London, United Kingdom  on Eventbrite" /></a> </p></blockquote>
<p>The aim of SharePoint Retreat is to help developers practice the fundamentals of software development, but like all things in the SharePoint community we intend to keep this SharePoint focused, so developers practice the fundamentals of <strong>SharePoint</strong> development</p>
<h3>What is SharePoint Retreat?</h3>
<p>The idea is not our own, more information can be found about the original Code Retreat at <a href="http://www.coderetreat.com/">http://www.coderetreat.com/</a> &#8211; we have just given it a SharePoint flavour. </p>
<p>It has a simple objective:  provide a day-long event that is focused on practicing the fundamentals of SharePoint development.</p>
<h3>Why SharePoint Retreat?</h3>
<p>We want to bring SharePoint development to the fore, to make developers want to work with SharePoint and to show that doing SharePoint development does not mean you have forego any plans to become a software craftsman.</p>
<h3>How does it work?</h3>
<p>A group of SharePoint developers &#8211; <strong>That means you! -</strong> gather at the Retreat with laptop in hand ready to code.</p>
<ul>
<li>Problem:  TBC &#8211; the problem will be SharePoint related and can vary between Retreats</li>
<li>Retreat lasts from 9am until 5pm followed by SharePint</li>
<li>Each coding session will last 1 hour</li>
<li>Each session coders will pair program</li>
</ul>
<h3>Some rules!</h3>
<ul>
<li>code is deleted after each session,  its about learning the techniques and not getting code samples</li>
<li>Encourage techniques like TDD where appropriate</li>
<li>programming pairs are swapped at each session</li>
</ul>
<h3>on the day</h3>
<ul>
<li>9:00 &#8211; 9:30 Intro to the day</li>
<li>9:30 &#8211; 10:30 session 1</li>
<li>10:30 &#8211; 10:45 retrospective</li>
<li>10:45 &#8211; 11 :45 session 2</li>
<li>11:45 &#8211; 12:00 retrospective</li>
<li>12:00 &#8211; 1:00 Lunch &#8211; with brown bag presentations</li>
<li>1:00 &#8211; 2:00 session 3</li>
<li>2:00 &#8211; 2:15 retrospective</li>
<li>2:15 &#8211; 3:15 session 4</li>
<li>3:15 &#8211; 3: 30 retrospective</li>
<li>3:30 &#8211; 4:30 session 5</li>
<li>4:30 &#8211; 5:00 wrap up</li>
<li>5:00 &#8211; late ShareFood and SharePint</li>
</ul>
<h3>in the sessions</h3>
<p><strong>session 1 and 2</strong></p>
<p>The area of SharePoint may be unfamiliar to some people, others may have done something like it before.  The aim of the first two sessions are to allow people to understand how they are going to approach the problem and what the final solution could look like.  Some pairs may try and implement it, others will spike out ideas and try to solve specific challenges.</p>
<p>At the retrospectives each pair will have a few minutes to discuss what they did and any problems they could not solve.</p>
<p><strong>Lunch</strong></p>
<p>During lunch the coders get to sit back and relax whilst the facilitator demonstrate techniques or ideas in a couple of short brown bag sessions.</p>
<p><strong>session 3, 4 and 5</strong></p>
<p>continue with the problem and looking to refine some of the scenarios and techniques.  The aim is to learn and practice techniques that will improve the knowledge and experience of the coders.  If you don&#8217;t complete the problem it&#8217;s not an issue &#8211; if you complete the problem then look for new challenges or refine the techniques.</p>
<h3>After the event</h3>
<p>Any gathering of SharePoint people and you are likely to find a SharePint &#8211; the facilitator will find a suitable venue for people to unwind, drink beer and SharePint &#8211; hopefully more SharePoint people will be in the area so that they can brag about the new found talents.</p>
<h3>What Next?</h3>
<p>If you can be in London on Saturday 10th July 2010, you&#8217;re a SharePoint developer and you fancy spending a day with other like-minded people honing you development skills.   Sign up.</p>
<p>This first event is limited to 16 coders &#8211; so be quick.  </p>
<p>If you fail to make the first 16, put your name down on the waiting list.   We do ask that people who have signed up but for whatever reason can&#8217;t make it please make the space available to others.</p>
<p><strong>How Much?  &#8211; Its Free <img src='http://www.21apps.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </strong></p>
<p>Best of all this is a community activity,  we are funding this event through sponsorship in order that we can provide the places to coders F.O.C</p>
<p>The sponsors for this inaugural event are</p>
<p><a href="http://www.cscape.com/"><img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" title="cScape" src="http://eventbrite-s3.s3.amazonaws.com/eventlogos/1897550/homelogo.gif" border="0" alt="cScape Logo" width="122" height="38" /></a></p>
<p>providing the venue and internet access &#8211; and Ben Robb</p>
<p><a href="http://www.21apps.com/"><img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" title="21apps " src="http://eventbrite-s3.s3.amazonaws.com/eventlogos/1897550/21appslogoinspirecommunity.gif" border="0" alt="21apps Inspire Community" width="134" height="50" /></a></p>
<p>providing the food &#8211; and Andrew Woodward</p>
]]></content:encoded>
			<wfw:commentRss>http://www.21apps.com/sharepoint/sharepoint-retreat-london/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint Memory Leaks</title>
		<link>http://www.21apps.com/sharepoint/sharepoint-memory-leaks/</link>
		<comments>http://www.21apps.com/sharepoint/sharepoint-memory-leaks/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 22:16:29 +0000</pubDate>
		<dc:creator>Andrew Woodward</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://www.21apps.com/sharepoint/sharepoint-memory-leaks/</guid>
		<description><![CDATA[Normally I refrain for doing simple reposts of other people blogs,&#160; however having read the post SharePoint&#8217;s Sasquatch Memory Leak by Todd Carter I just had to help get the information out to as many people as possible.
We are all being good developers and running SPDisposeCheck regularly on our code to make sure we don&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>Normally I refrain for doing simple reposts of other people blogs,&#160; however having read the post <a href="http://todd-carter.com/post/2010/02/08/SharePointe28099s-Sasquatch-Memory-Leak.aspx" target="_blank">SharePoint&#8217;s Sasquatch Memory Leak</a> by Todd Carter I just had to help get the information out to as many people as possible.</p>
<p>We are all being good developers and running <a href="http://code.msdn.microsoft.com/SPDisposeCheck" target="_blank">SPDisposeCheck</a> regularly on our code to make sure we don&#8217;t leak memory,&#160; however for some we still experience spiralling memory leaks that seem untraceable.&#160; until Todd&#8217;s post that is.</p>
<p>Rather than hang around here you MUST <a href="http://todd-carter.com/post/2010/02/08/SharePointe28099s-Sasquatch-Memory-Leak.aspx" target="_blank">read it</a> now,&#160; and if your experiencing issues and have SPDisposeCheck&#8217;d your application to within an inch of it&#8217;s life with no success on controlling memory you will want to implement the workaround as soon as possible.</p>
<p>Big Thanks to Todd find Big Foot <img src='http://www.21apps.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.21apps.com/sharepoint/sharepoint-memory-leaks/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Namespace not updated in SharePoint SPIs</title>
		<link>http://www.21apps.com/development/namespace-not-token-spis/</link>
		<comments>http://www.21apps.com/development/namespace-not-token-spis/#comments</comments>
		<pubDate>Sat, 30 Jan 2010 09:54:48 +0000</pubDate>
		<dc:creator>Andrew Woodward</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://www.21apps.com/?p=1180</guid>
		<description><![CDATA[Firstly what is a SharePoint SPI?
No it&#8217;s not another new version, it&#8217;s a generic term that is used to describe a SharePoint Project Item within the context of a Visual Studio project.
Visual Studio 2010 has introduced a lot of great SharePoint specific features making it significantly easier to get started with SharePoint development. This post [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Firstly what is a SharePoint SPI?</p>
<p>No it&#8217;s not another new version, it&#8217;s a generic term that is used to describe a SharePoint Project Item within the context of a Visual Studio project.</p></blockquote>
<p>Visual Studio 2010 has introduced a lot of great SharePoint specific features making it significantly easier to get started with SharePoint development. This post however is not about the tools, it is intended to point out one little bit of the hidden functionality that unfortunately didn&#8217;t get completed in time.</p>
<p>The Visual Studio tools hide away so of the configuration options in .spdata files. This is normally great as you can change these via the UI tools and everything works. However I discovered a small issue during a recent refactoring of a project.</p>
<p>When you create a new SharePoint SPI (for example a web part) that needs to add a reference to the assembly it updates the .spdata file with information (as below)</p>
<pre class="csharpcode"><span class="kwrd">
<pre><span>&lt;?</span><span>xml</span> <span>version</span><span>="1.0"</span> <span>encoding</span><span>="utf-8"</span>?<span>&gt;</span>
<span>&lt;</span><span>ProjectItem</span> <span>Type</span><span>="Microsoft.VisualStudio.SharePoint.WebPart"</span>
   <span>DefaultFile</span><span>="MyWebpart.cs"</span>
   <span>SupportedTrustLevels</span><span>="All"</span>
   <span>SupportedDeploymentScopes</span><span>="Site"
   </span><span>xmlns</span><span>="http://schemas.microsoft.com/VisualStudio/2010/SharePointTools/SharePointProjectItemModel"</span><span>&gt;</span>
  <span>&lt;</span><span>Files</span><span>&gt;</span>
    <span>&lt;</span><span>ProjectItemFile</span> <span>Source</span><span>="Elements.xml"</span> <span>Target</span><span>="MyWebpart\"</span> <span>Type</span><span>="ElementManifest"</span> <span>/&gt;</span>
    <span>&lt;</span><span>ProjectItemFile</span> <span>Source</span><span>="MyWebpart.webpart"</span> <span>Target</span><span>="MyWebpart\"</span> <span>Type</span><span>="ElementFile"</span> <span>/&gt;</span>
  <span>&lt;/</span><span>Files</span><span>&gt;</span>
  <span>&lt;</span><span>SafeControls</span><span>&gt;</span>
    <span>&lt;</span><span>SafeControl</span> <span>Name</span><span>="MyWebpart"</span>
       <span>Assembly</span><span>="$SharePoint.Project.AssemblyFullName$"</span>
       <span>Namespace</span><span>="_21apps.Sample.SPSolution"</span> <span>TypeName</span><span>="*"</span> <span>IsSafe</span><span>="true"</span> <span>/&gt;</span>
  <span>&lt;/</span><span>SafeControls</span><span>&gt;</span>
<span>&lt;/</span><span>ProjectItem</span><span>&gt;</span></pre>
<p><!-- .csharpcode, .csharpcode pre { 	font-size: small; 	color: black; 	font-family: consolas, "Courier New", courier, monospace; 	background-color: #ffffff; 	/*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt  { 	background-color: #f4f4f4; 	width: 100%; 	margin: 0em; } .csharpcode .lnum { color: #606060; } --></p>
<p> </p>
<p></span></pre>
<p><!-- .csharpcode, .csharpcode pre { 	font-size: small; 	color: black; 	font-family: consolas, "Courier New", courier, monospace; 	background-color: #ffffff; 	/*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt  { 	background-color: #f4f4f4; 	width: 100%; 	margin: 0em; } .csharpcode .lnum { color: #606060; } --></p>
<p>In here you will see references to the ProjectItemFiles (.weppart and element manifest) and also an entry for the SafeControls.</p>
<p>If you look closely at the SafeControl entry you will see the Assembly is using a Token</p>
<p><span style="font-family: courier new; font-size: small">Assembly=&#8221;$SharePoint.Project.AssemblyFullName$&#8221;</span></p>
<p>This is great as it allows the SafeControl to pickup the actual assembly name at compile time. The problem comes with the next part of the entry</p>
<p><span style="font-family: courier new; font-size: small">Namespace=&#8221;_21apps.Sample.SPSolution&#8221;</span></p>
<p>As you can see this is not token based, which means that if you later decide to rename you namespace, and this is case sensitive, the SharePoint safe control entry will no longer be valid and you will get an error like the one below when you deploy the solution.</p>
<blockquote><p><span style="color: #ff0000">A Web Part or Web Form Control on this Web Part Page cannot be displayed or imported because it is not registered on this site as safe.</span></p></blockquote>
<p>For more info on what this actually means have a look at Maurice Prather&#8217;s <a href="http://www.bluedoglimited.com/SharePointThoughts/ViewPost.aspx?ID=189" target="_blank">post</a> from back in 2005, the information is still applicable today.</p>
<p>Unfortunately this namespace is unlikely to be made into a Token any time soon. Perhaps one for the community to pickup in the meantime. For now it is case of being aware that you need to correct this manually if you do change your namespace.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.21apps.com/development/namespace-not-token-spis/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SharePoint 2010 &#8211; Health Analyzer is awesome</title>
		<link>http://www.21apps.com/sharepoint-2010/health-analyzer-is-awesome/</link>
		<comments>http://www.21apps.com/sharepoint-2010/health-analyzer-is-awesome/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 22:04:52 +0000</pubDate>
		<dc:creator>Andrew Woodward</dc:creator>
				<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[2010]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://www.21apps.com/?p=1160</guid>
		<description><![CDATA[Being mainly focused on development aspects of SharePoint 2010 I haven&#8217;t spent as much time as I perhaps should have looking at the new features that have been added to make Administrators lives easier.  Having just upgraded one on my development machines from SharePoint 2010 Foundation to SharePoint 2010 Server for Internet Sites,  which on [...]]]></description>
			<content:encoded><![CDATA[<p>Being mainly focused on development aspects of SharePoint 2010 I haven&#8217;t spent as much time as I perhaps should have looking at the new features that have been added to make Administrators lives easier.  Having just upgraded one on my development machines from SharePoint 2010 Foundation to SharePoint 2010 Server for Internet Sites,  which on a single box installation with AD and SQL local went without a hitch, I thought it worth looking at what the Health Analyzer was telling me.</p>
<p>As you can see I have a few issues:</p>
<p><a href="http://www.21apps.com/wp-content/uploads/2010/01/AnalyserSummary.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Analyser Summary" src="http://www.21apps.com/wp-content/uploads/2010/01/AnalyserSummary_thumb.png" border="0" alt="Analyser Summary" width="644" height="402" /></a></p>
<h3>Security</h3>
<p>The security Issue I can live with and I suspect everyone running the Beta has the same as using full admin accounts is the only way to get SharePoint working fully at this stage.</p>
<h3>Performance</h3>
<p>This is a dev box, so I am ok with SQL running on the same machine,  interesting that this is the only performance issue reported as the machine is a Hyper-V VM with 4 processors allocated and only 4GB RAM &#8211; but it seems to be running fine.</p>
<h3>Configuration</h3>
<p>3 items here &#8211; the second is about Email not configured &#8211; which is correct.  And again I have used built in accounts for the service identities as this was a single box install &#8211; I may fix these up at some point.</p>
<p>The 3rd item <strong>Missing server side dependencies</strong> caught my eye,  and I have to say the dialog that was displayed brought a smile to my face.</p>
<p><a href="http://www.21apps.com/wp-content/uploads/2010/01/Analyser.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Analyser" src="http://www.21apps.com/wp-content/uploads/2010/01/Analyser_thumb.png" border="0" alt="Analyser" width="623" height="713" /></a></p>
<p>The server was reporting that I had referenced a web part TestJQuery.WebPart1.WebPart1 in two places and that the files to support these web parts were not on the system meaning the user will get an error.</p>
<p><strong><span style="font-size: medium;"><em>This is awesome!</em></span></strong></p>
<p>I know why these are here,  it was a spike test that I had done previously and had obviously forgot to clear it down.  What it does show is that the administrators (and developers on your own environments) can now proactively check for missing DLLs.</p>
<p>This was not one of the features I asked for in SharePoint 2010 &#8211; but is one that I am very glad exists. </p>
<h3>Availability</h3>
<p>How many times have you been called in to find the logs have maxed out the drive space and SharePoint has crashed?   Here the health analyzer is telling me I may have an issue with space.    I&#8217;m ok with this,  I have a 40GB drive with 11GB free &#8211; I like to keep the drives around 40GB as I move then to my laptop and boot to VHD and this needs the full drive size as free space in order to boot &#8211; so I can let this one go as well.</p>
<p>The only thing left to say this is:</p>
<p><span style="font-family: Script MT Bold; font-size: large;">Thank you SharePoint Product Team.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.21apps.com/sharepoint-2010/health-analyzer-is-awesome/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SharePoint 2010 &#8211; Have to Extend to have Multiple URLs</title>
		<link>http://www.21apps.com/sharepoint-2010/sharepoint-2010-and-multiple-urls/</link>
		<comments>http://www.21apps.com/sharepoint-2010/sharepoint-2010-and-multiple-urls/#comments</comments>
		<pubDate>Thu, 31 Dec 2009 17:50:58 +0000</pubDate>
		<dc:creator>Andrew Woodward</dc:creator>
				<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[2010]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.21apps.com/?p=1141</guid>
		<description><![CDATA[I think this was a best practice in SharePoint 2007, but was one that you could get away with.  You have internal and external URLs that will be used to access the same web application.   Internally for historical or vanity reasons this is set as something like http://companyname, externally you provide access, often via a [...]]]></description>
			<content:encoded><![CDATA[<p>I think this was a best practice in SharePoint 2007, but was one that you could get away with.  You have internal and external URLs that will be used to access the same web application.   Internally for historical or vanity reasons this is set as something like <a href="http://companyname">http://companyname</a>, externally you provide access, often via a proxy like ISA Server, via <a href="https://extranet.companyname.com">https://extranet.companyname.com</a> &#8211; and you do SSL termination at the ISA server as well.</p>
<p>You create the web application using the internal name,  get everything setup and then do the following to provide external access</p>
<ul>
<li>- Add an Alternative Access Mapping for <a href="https://extranet.companyname.com">https://extranet.companyname.com</a> in the Internet Zone</li>
<li>- Add another internal URL to the Internet Zone <a href="http://extranet.companyname.com">http://extranet.companyname.com</a></li>
<li>- In IIS add a new binding to the web application so it picks up <a href="http://extranet.companyname.com">http://extranet.companyname.com</a></li>
<li>- Publish the SharePoint site via ISA, with SSL access externally and no SSL internally</li>
</ul>
<p>This scenario would work well,  you would cut down on the web.configs to be maintained &#8211; assuming you didn&#8217;t use features to do this for you, and you would have a slightly lower overhead on the server &#8211; which was often needed in the 32bit setups.</p>
<h3>Problems in 2010  (and for some in 2007)</h3>
<p>With the introduction of the client API, and a few other services, Microsoft is now making use of the WCF for its web services.   These offer lots and lots of advantages,  but have one limitation (at least in 3.5) that makes the above scenario fail. </p>
<blockquote><p>You cannot have multiple bindings on any IIS website</p></blockquote>
<p>If you do set your environment up this way and you are using the client API you will hit problems.  Assuming you have coded you client requests with a fail delegate (like this code snippet)</p>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">  1: <span style="color: #0000ff">var</span> lists;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">  2: <span style="color: #0000ff">var</span> context;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">  3:</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">  4: <span style="color: #0000ff">function</span> sample() {</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">  5:     context = <span style="color: #0000ff">new</span> SP.ClientContext.get_current();</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">  6:</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">  7:     <span style="color: #0000ff">this</span>.site = context.get_web();</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">  8:</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">  9:     context.load(<span style="color: #0000ff">this</span>.site);</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;"> 10:</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;"> 11:     lists = site.get_lists();</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;"> 12:     context.load(lists);</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;"> 13:</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;"> 14:     context.executeQueryAsync(onPass, onFail);</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;"> 15: }</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;"> 16:</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;"> 17: <span style="color: #0000ff">function</span> onFail(sender, args) {</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;"> 18:     <span style="color: #0000ff">alert</span>("<span style="color: #8b0000">Fail:</span>" + args.get_message() + '\n' + args.get_stackTrace());</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;"> 19: }</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;"> 20:</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;"> 21: <span style="color: #0000ff">function</span> onPass(sender, args) {</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;"> 22:     onPass(lists.getByTitle('List'));</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;"> 23: }</pre>
<p>when the async mehtod is called it will fail and the onFail method will show a 500 error.  One of the best things is the logging in 2010 has been improved so a quick look on the server and you should see something like the following in the event log:</p>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">Log Name:      Application</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">Source:        System.ServiceModel 3.0.0.0</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">Date:          31/12/2009 16:22:06</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">Event ID:      3</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">Task Category: WebHost</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">Level:         Error</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">Keywords:      Classic</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">User:          domain\sp-admin</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">Computer:      computername</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">Description:</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">WebHost failed to process a request.
 Sender Information: System.ServiceModel.ServiceHostingEnvironment+HostingManager/2389992
 Exception: System.ServiceModel.ServiceActivationException: The service '/_vti_bin/client.svc'
cannot be activated due to an exception during compilation.
The exception message is: This collection already contains an address with scheme http.
There can be at most one address per scheme in this collection.</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">Parameter name: item. ---&gt; System.ArgumentException:
This collection already contains an address with scheme http.
There can be at most one address per scheme in this collection.</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">Parameter name: item</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.UriSchemeKeyedCollection.InsertItem(Int32 index, Uri item)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.Collections.Generic.SynchronizedCollection`1.Add(T item)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.UriSchemeKeyedCollection..ctor(Uri[] addresses)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.ServiceHost..ctor(Type serviceType, Uri[] baseAddresses)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(Type
serviceType, Uri[] baseAddresses)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(
String constructorString, Uri[] baseAddresses)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.CreateService(
String normalizedVirtualPath)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.ActivateService(
String normalizedVirtualPath)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(
String normalizedVirtualPath)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   --- End of inner exception stack trace ---</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(
String normalizedVirtualPath)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.ServiceHostingEnvironment.EnsureServiceAvailableFast(String relativeVirtualPath)
 Process Name: w3wp
 Process ID: 3924</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">Event Xml:</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">&lt;Event xmlns="<span style="color: #8b0000">http://schemas.microsoft.com/win/2004/08/events/event</span>"&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">  &lt;System&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">    &lt;Provider Name="<span style="color: #8b0000">System.ServiceModel 3.0.0.0</span>" /&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">    &lt;EventID Qualifiers="<span style="color: #8b0000">49154</span>"&gt;3&lt;/EventID&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">    &lt;Level&gt;2&lt;/Level&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">    &lt;Task&gt;5&lt;/Task&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">    &lt;Keywords&gt;0x80000000000000&lt;/Keywords&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">    &lt;TimeCreated SystemTime="<span style="color: #8b0000">2009-12-31T16:22:06.000000000Z</span>" /&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">    &lt;EventRecordID&gt;99264&lt;/EventRecordID&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">    &lt;Channel&gt;Application&lt;/Channel&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">    &lt;Computer&gt;computername&lt;/Computer&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">    &lt;Security UserID="<span style="color: #8b0000">S-1-5-21-2646386180-1731120971-3670236442-1114</span>" /&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">  &lt;/System&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">  &lt;EventData&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">    &lt;Data&gt;System.ServiceModel.ServiceHostingEnvironment+HostingManager/2389992&lt;/Data&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">    &lt;Data&gt;System.ServiceModel.ServiceActivationException: The service '/_vti_bin/client.svc'
cannot be activated due to an exception during compilation.
The exception message is: This collection already contains an address with scheme http.
There can be at most one address per scheme in this collection.</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">Parameter name: item. ---&amp;gt; System.ArgumentException:
This collection already contains an address with scheme http.
There can be at most one address per scheme in this collection.</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">Parameter name: item</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.UriSchemeKeyedCollection.InsertItem(Int32 index, Uri item)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.Collections.Generic.SynchronizedCollection`1.Add(T item)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.UriSchemeKeyedCollection..ctor(Uri[] addresses)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.ServiceHost..ctor(Type serviceType, Uri[] baseAddresses)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 97.91%; font-family: consolas,'Courier New',courier,monospace; height: 31px; font-size: 11px;">   at System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(Type serviceType,
Uri[] baseAddresses)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(String constructorString,
Uri[] baseAddresses)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.CreateService(String normalizedVirtualPath)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.ActivateService(String normalizedVirtualPath)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(
String normalizedVirtualPath)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   --- End of inner exception stack trace ---</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(
String normalizedVirtualPath)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.ServiceHostingEnvironment.EnsureServiceAvailableFast(
String relativeVirtualPath)&lt;/Data&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">    &lt;Data&gt;w3wp&lt;/Data&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">    &lt;Data&gt;3924&lt;/Data&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">  &lt;/EventData&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">&lt;/Event&gt;</pre>
<p> </p>
<p>The problem, although not obvious from the error message is related to the WCF framework not being able to work with multiple names on the same schema (where schema means HTTP).</p>
<h3>Solution</h3>
<p>The solution to this is to Extend the web application to another IIS web site.  It will make use of the same application pool but is likely to add a small overhear to the server.  The biggest challenge is to ensure that you get your deployments automated so that SharePoint can keep the web.config&#8217;s inline.   And with the introduction of the Sandboxed solution the other issues with artifacts deployed to the 80 (inetpub) folder will likely go away over time.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.21apps.com/sharepoint-2010/sharepoint-2010-and-multiple-urls/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Which Build Servers in SharePoint &#8211; The Results</title>
		<link>http://www.21apps.com/sharepoint/which-build-servers-the-results/</link>
		<comments>http://www.21apps.com/sharepoint/which-build-servers-the-results/#comments</comments>
		<pubDate>Sun, 11 Oct 2009 11:11:36 +0000</pubDate>
		<dc:creator>Andrew Woodward</dc:creator>
				<category><![CDATA[Aberdovey]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Continuous Integraton]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Continuous Integration]]></category>

		<guid isPermaLink="false">http://www.21apps.com/?p=1062</guid>
		<description><![CDATA[The numbers are in and I think this small sample really gives a good view as to the way people are approaching their SharePoint development projects.
Numbers taken from a one week poll asking people which build servers they used on their SharePoint projects.

It&#8217;s very clear from this that people are in one of 3 camps [...]]]></description>
			<content:encoded><![CDATA[<p>The numbers are in and I think this small sample really gives a good view as to the way people are approaching their SharePoint development projects.</p>
<blockquote><p>Numbers taken from a one week poll asking people <a href="http://www.21apps.com/agile/which-build-server-are-you-using/" target="_blank">which build servers they used on their SharePoint projects</a>.</p></blockquote>
<p><a href="http://www.21apps.com/wp-content/uploads/2009/10/CIPollResults.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="CI Poll Results" src="http://www.21apps.com/wp-content/uploads/2009/10/CIPollResults_thumb.png" border="0" alt="CI Poll Results" width="533" height="279" /></a></p>
<p>It&#8217;s very clear from this that people are in one of 3 camps of almost identical size</p>
<ul>
<li>Those using Team Foundation Server</li>
<li>Those that user another non Microsoft tool</li>
<li>Those that don&#8217;t do anything</li>
</ul>
<h3>Team Foundation Server</h3>
<p>Installing and using, or developing against Microsoft SharePoint Server requires a fairly big commitment to the Microsoft technology stack, so the domination of <a href="http://msdn.microsoft.com/en-us/teamsystem/default.aspx" target="_blank">Team Foundation Server</a> is probably to be expected.</p>
<ul>
<li>If your a big corporate user of SharePoint you most likely have a deal that includes TFS licenses</li>
<li>You have likely committed to Microsoft as the platform of choice across the board</li>
<li>If your a Microsoft Partner delivering products and solutions you will have a big investment in Microsoft licenses, and also a duty to adopt the MS recommended path</li>
<li>TFS is a good solution,  and it&#8217;s getting better in 2010</li>
</ul>
<h3>Non Microsoft Tools</h3>
<p>I was surprised by the mix of Non Microsoft tools,  having looked at what you get for free and the costs for licensing beyond that I would have expected <a href="http://www.jetbrains.com/teamcity/" target="_blank">Team City</a> to have a bigger following.  Perhaps the reason for not being higher is jetBrains being thought of a Java based?</p>
<p>I bundled <a href="http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET" target="_blank">CruiseControl</a> and <a href="http://thoughtworks.com/cruise" target="_blank">Cruise</a> together,  in hindsight I should have split them as they are totally different products.   I will make the assumption that most are using CruiseControl as this was really one of the first decent automated build tools to target the .Net platform.  People have got to know it an have scripted automation for their non SharePoint projects already.</p>
<p><a href="http://www.finalbuilder.com/" target="_blank">Final Builder</a> I have always liked the look of;  I really do find the whole raw XML editing that we have to do in any build automation a bit like developing against SharePoint,  it&#8217;s ok but the tools really should be better than this.   Final Builder has a great product, but the cost per user is perhaps the barrier here.</p>
<h3>Other</h3>
<p>Some people had build servers but didn&#8217;t use it for SharePoint &#8211; would really count those as None.</p>
<p>Others listed the source repository (SVN) or scripting language (msbuild, nant) so I assume that the build is done manually using batch files rather than via a dedicated build server.</p>
<p>Also someone listed Hudson,  something I had personally never heard of, but will bundle with the Non Microsoft Tools.</p>
<h3>None, we don&#8217;t have a build server</h3>
<p>This was probably the biggest surprise to me,  and perhaps not the way you might think.  I was actually surprised that only 35% of people indicated that they did not have any form of build server for their SharePoint projects.  </p>
<p>Based on my years of doing consultancy gigs I found that the majority of companies that I went into to do work didn&#8217;t have anything even close to an automated build server.  Heck some don&#8217;t even have source control for the code!</p>
<p>So I can take a couple of things from this</p>
<ul>
<li>People who don&#8217;t were too embarrassed to answer</li>
<li>SharePoint development has moved on significantly and most teams now have proper build servers</li>
<li>The readers of my blog are not representative of the wider SharePoint user base</li>
</ul>
<p> </p>
<h3>Conclusion</h3>
<p><a href="http://www.21apps.com/wp-content/uploads/2009/10/CIPollResultsNumbers.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="CI Poll Results Numbers" src="http://www.21apps.com/wp-content/uploads/2009/10/CIPollResultsNumbers_thumb.png" border="0" alt="CI Poll Results Numbers" width="644" height="292" /></a></p>
<p>There are still a lot of SharePoint teams out there that have yet to get the benefit from automating their builds,  who will undoubtedly be spending many hours manually putting things together the night before Go-Live.  </p>
<p>For these people, and those moving into SharePoint for the first time, there is a need to provide more information on why investing time in getting your automated build in from the start can make huge savings over the life of a project.  Providing walkthroughs on how to do this and some of the challenges you will encounter along the way.</p>
<p>Based on the feedback I could look at doing TFS first,  but I know that for teams with nothing setup yet this is going to be a big stumbling block.  Trying to convince you boss to roll out Team Foundation Server just so you can automate your SharePoint build is not an easy argument to have.   I will instead look at the options allowing you to get up and running quickly and more importantly without needing to get budget for licenses. </p>
<p>I will start with <a href="http://thoughtworks.com/cruise" target="_blank">Cruise</a>,  and I will be dog fooding this for real on <a href="http://www.21apps.com/sharepoint/introducing-project-aberdovey/" target="_blank">Project Aberdovey</a>.  </p>
<p>Thanks to everyone who took the time to vote,  I would love to hear your own take on what the numbers mean to you and your experience with automating builds in SharePoint.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.21apps.com/sharepoint/which-build-servers-the-results/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>My Dev Rig &#8211; The story so far</title>
		<link>http://www.21apps.com/development/my-dev-rig-the-story-so-far/</link>
		<comments>http://www.21apps.com/development/my-dev-rig-the-story-so-far/#comments</comments>
		<pubDate>Sat, 25 Jul 2009 13:38:11 +0000</pubDate>
		<dc:creator>Andrew Woodward</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Hyper-V; Virtualisation]]></category>

		<guid isPermaLink="false">http://www.21apps.com/?p=997</guid>
		<description><![CDATA[Having worked for more years than I can remember as a consultant I have lived on my laptop,  everything I do is on the laptop including all of the development.   My current, and have to say the best one ever owned, is a Lenovo T61p.  The plus points it has a proper caddy so I [...]]]></description>
			<content:encoded><![CDATA[<p>Having worked for more years than I can remember as a consultant I have lived on my laptop,  everything I do is on the laptop including all of the development.   My current, and have to say the best one ever owned, is a Lenovo T61p.  The plus points it has a proper caddy so I run two drives internally (VMs on one, OS on the other) and all of the drivers just seem to work.   I’ve upgraded the drives a few times to squeeze in some more space (now with 500GB available) and for speed 7200K disks,  I plan to upgrade the main drive to use SSD so that I can keep the old friend going a little while longer.</p>
<p>Many of you are likely in the same place and are thinking,  heck that seems like a reasonable bit of kit, what’s the problem?</p>
<p>The problem is the laptop is OK for single machine development,  as in it’s usable but nothing lightening.   I could, as some have done, pave the way and go Windows 2008 server native to do my development but then I loose all the nice things like just closing the lid and it going to sleep.  But the biggest problem is that I want to do my development right!  I want to get my Continuous Integration running,  be able to test in a scaled out environment and also be able to play with all the new software that is being released.   Sadly my laptop is not really going to cut the mustard here.</p>
<p>I was encouraged by the rig that <a href="http://www.andrewconnell.com/blog/articles/CreatingCustomQuietVirtualizationRigWithHyperV.aspx" target="_blank">Andrew Connell</a> put together and this really fitted the bill for what I wanted – I knew this was not going to be cheap,  but these are the tools of my trade.  I wouldn’t expect the local mechanic to be using 99p spanners from the market, they buy the tools that are right for the job. </p>
<h3>Decision  #1</h3>
<p>At the time the new i7core processors where starting to hit the shelves,  would it be possible to get a ‘workstation’ setup with dual processors using this new chip architecture?   The answer was you could,  you would be bleeding edge and you would pay through the nose.  So the hard choice was made to stick with the tried and tested XEON proc’s.</p>
<h3>Decision  #2</h3>
<p>I wanted to do a custom build,  I spent ages looking at the components, deciding what case, proc speeds, heat sinks etc.   The problem I had was in the UK I could not source all of these components from a single supplier.   Why a single supplier you ask?  Well in the UK to make it easier for small businesses you have the option to us register for flat rate VAT scheme, this means calculating the VAT payment based on sales rather than reclaim for everything.  Generally it works well,  the problem is that for larger capital purchases the flat rate doesn’t work.  To support this if a single purchase is above a set amount (£2000) then you can claim the VAT back in addition,  the problem is that it has to be on a single invoice.   So if I purchased the components from the various suppliers I was looking at an added cost of 17.5% – a not insignificant amount.</p>
<h3>The Rig</h3>
<p>Being a fan of Lenovo since owning my T61p I decided to give their D10 workstation a go.   I had read some good reviews and it was designed with one of my biggest criteria in mind,  not sounding like an aeroplane in my office.</p>
<h3>Problem #1</h3>
<p>I put together my original spec and placed the order with Dabs.com for the D10, an additional processor, RAM upgrade and some additional drives.   I waited,  and waited eventually I received an email from Dabs saying this product was discontinued!  I knew this was not the case so I went to the go direct and ordered from the Lenovo site and purchased the main rig (with all the lovely 4 year next day onsite warranty) and then upgraded this where the cost for the components was cheaper sourced elsewhere. </p>
<p><strong>Note: </strong>About 1 week after buying mine they <a href="http://shop.lenovo.com/SEUILibrary/controller/e/gbweb/LenovoPortal/en_GB/catalog.workflow:expandcategory?issBase=ProductsCategory&amp;issCategory=/Workstations/ThinkStation/" target="_blank">announced the D20</a>,  If I were buying today this is what I would get.  The problem was I wouldn’t be able to get a D20 for 3-4 months in the UK,  so this was not an option.</p>
<h3>The Rig Continued</h3>
<p>I did manage to get a good deal on the kit,  making use of an autocad discount code so was not overly concerned about the D20 release.  Working the numbers carefully I got a the following kit from Lenovo to start my build</p>
<ul>
<li>D10 Workstation</li>
<li>Single Xeon 2.5GHz processor (dual capable board)</li>
<li>18GB RAM  (2GB with the machine, + 4&#215;4GB additional chips)</li>
<li>250GB 7200disk</li>
</ul>
<p>The big seller for the D10 was the onboard SAS and SATA RAID with the SATA supporting RAID 10</p>
<p>The following additional items were purchased independently from Scan</p>
<ul>
<li>4 x <a href="http://www.scan.co.uk/Products/1TB-Western-Digital-WD1001FALS-Caviar-Black-SATA-300-7200-rpm-32MB-Cache" target="_blank">Western Digital Cavier Black drivers</a></li>
<li>1 x <a href="http://www.scan.co.uk/Search.aspx?q=e5420p" target="_blank">Xeon E5420P Quad Core Proc</a></li>
<li>2 x <a href="http://www.scan.co.uk/Search.aspx?q=Thermalright+HR-01X+" target="_blank">Thermalright HR-01X</a> with 120mm fan and fixings</li>
</ul>
<p>I also ordered a pair of LG 20” widescreen monitors from PCWorld Business,  was trying to justify 24” but my room is just not that big <img src='http://www.21apps.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .   The monitors had good reviews,  support portrait mode and were surprisingly cheap.</p>
<p>The additional kit from Scan arrived first,  followed by the additional memory, I was counting down the days for the workstation.   Finally I had an excuse to convert the spare room into a spare room/office <img src='http://www.21apps.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>It arrived</h3>
<div class="mceTemp">
<div id="attachment_1000" class="wp-caption alignnone" style="width: 510px"><a href="http://www.21apps.com/wp-content/uploads/2009/07/lenovodelivered2.jpg"><img class="size-full wp-image-1000" title="Lenovo Delivered" src="http://www.21apps.com/wp-content/uploads/2009/07/lenovodelivered2.jpg" alt="Lenovo Delivered" width="500" height="333" /></a><p class="wp-caption-text">Lenovo Delivered</p></div>
</div>
<p> </p>
<p>First thoughts,  this really is going to be a DOA,  I like to treat my machines with a little bit of respect, it looked like the couriers had used this for target practice!  A few photos later just in case I needed to send it back and I had the rig out.   One thing to remember with these Workstations, they are significantly bigger than a standard desktop or tower.</p>
<div id="attachment_1001" class="wp-caption alignnone" style="width: 510px"><a href="http://www.21apps.com/wp-content/uploads/2009/07/lenovosize1.jpg"><img class="size-full wp-image-1001" title="Lenovo Size" src="http://www.21apps.com/wp-content/uploads/2009/07/lenovosize1.jpg" alt="Lenovo Size" width="500" height="333" /></a><p class="wp-caption-text">Lenovo Size</p></div>
<p> </p>
<p>Shown here with my 15” T61p laptop you get a sense of the size.</p>
<h3>First Impressions</h3>
<p>The D10 is really well put together,  hit had survived the crash testing by the couriers and everything was all still connected and working.  This bodes well for the build quality of the machine.</p>
<p>When I first turned on the machine it sounded like a 747 was spinning up ready for take off..  thankfully after a few seconds the fans all slowed down to a give a near silent machine <img src='http://www.21apps.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Once I proved the machine was working and had it booted up into the shipped software I was ready to start customising.  I decided to get the base OS replaced before doing any hardware updates,  my Virtualisation of choice was Hyper V so I started with the latest Windows 2008 release,  I decided not to go R2 beta as I wasn’t planning to refresh the base OS anytime soon.  My long term plan was to have the OS on a RAID 0 SSD setup,  for now it would just run on the shipped drive.</p>
<p>Inside the rig is fairly spacious and it is really well put together.  No need for screwdrivers for adding disks and the ductings allows the air to flow where it&#8217;s needed.  There is a lot of fans in the box but it really does not make much noise at all, in fact the loudest part if the noise from the hard disks.</p>
<div id="attachment_1007" class="wp-caption alignnone" style="width: 510px"><a href="http://www.21apps.com/wp-content/uploads/2009/07/inside-the-thinkstation.jpg"><img class="size-full wp-image-1007" title="Inside the Thinkstation" src="http://www.21apps.com/wp-content/uploads/2009/07/inside-the-thinkstation.jpg" alt="Inside the Thinkstation" width="500" height="333" /></a><p class="wp-caption-text">Inside the Thinkstation</p></div>
<p>I really like the memory configuration with the rear fan pulling all of the air over the RAM to keep it cool. I see that <a href="http://www.andrewconnell.com/blog/archive/2009/07/23/a-nice-upgrade-to-my-virtualization-rig-ndash-look-mahellip.aspx" target="_blank">Andrew Connell</a> was having issues on his rig and had to install memory cooling.</p>
<div id="attachment_1008" class="wp-caption alignnone" style="width: 343px"><a href="http://www.21apps.com/wp-content/uploads/2009/07/memory.jpg"><img class="size-full wp-image-1008" title="Memory ducting" src="http://www.21apps.com/wp-content/uploads/2009/07/memory.jpg" alt="Memory Ducting" width="333" height="500" /></a><p class="wp-caption-text">Memory Ducting</p></div>
<div class="mceTemp">The machine runs at a reasonable temp I think,  and not had any issues even during the really hot spell we had in the UK and like almost every UK home I do not have aircon so when it&#8217;s hot outside it&#8217;s hot inside <img src='http://www.21apps.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </div>
<div class="mceTemp">
<div id="attachment_1009" class="wp-caption alignnone" style="width: 510px"><a href="http://www.21apps.com/wp-content/uploads/2009/07/internaltemps.jpg"><img class="size-full wp-image-1009" title="Internal Temps" src="http://www.21apps.com/wp-content/uploads/2009/07/internaltemps.jpg" alt="Internal Temps" width="500" height="560" /></a><p class="wp-caption-text">Internal Temps</p></div>
</div>
<h3>The OS install Part 1 &amp; 2</h3>
<p>First install of Windows 2008 went very smoothly,  the software went on really quickly and I had a base setup working with.  Next lets get some ram and hard disks into this baby and see how it flies.</p>
<p>Added the 4 x 1TB drives,  these are SATA drives and were configured very easily using the built in configuration to provide a single 2 TB RAID 10 configuration.   RAID 1 is used for resiliance, every thing is copied to both drives,  RAID 0 is for performance where the information is written across the drives giving you much better I/O.   Doing this in a RAID 10 gives you the best of both worlds.</p>
<p>More Info on <a href="http://en.wikipedia.org/wiki/RAID" target="_blank">Raid configurations</a></p>
<p>I moved the OS drive over to the SAS controller which also support SATA drives as I had now used up all of the ports on the SATA controller (one was still used for the DVD).</p>
<p>Rebooting the machine and nothing,  it was unable to recognize the boot drive on the SAS controller <img src='http://www.21apps.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> .   I tried various configurations, boot options and changes all to no avail.   Eventually I decided that i would do another install,  this time using the RAID 10 configuration for booting as well.   (Looking back this is probably the right thing to do as I now have resilience for the OS as well).</p>
<p>OS installation Part 2 when smoothly and it was amazing how much quicker the install was now it was writing to the stripped and mirrored drives <img src='http://www.21apps.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  – ‘I’m going to like this’</p>
<div id="attachment_1002" class="wp-caption alignnone" style="width: 509px"><a href="http://www.21apps.com/wp-content/uploads/2009/07/diskconfig1.jpg"><img class="size-full wp-image-1002" title="Disk Config" src="http://www.21apps.com/wp-content/uploads/2009/07/diskconfig1.jpg" alt="Disk Config" width="499" height="235" /></a><p class="wp-caption-text">Disk Config</p></div>
<p> </p>
<p>Here you can see the basic disk configuration,  226GB for the OS and 1.6TB for the virtual machines.  I also used the 250GB drive as a file share for ISOs and software.</p>
<h3>Hyper-V and Graphics Drivers</h3>
<p>Still running on one monitor I setup Hyper-V  and installed my first VM,  WOW = this thing flies,  why oh why have I waited so long to get something like this and move away from the about bearable performance from my laptop.</p>
<p>Time came to get my dual display hooked up and working,   i added the additional monitor – the NVidia Quadro FX1700 shipped with the box supports 2 direct connections and I think can support upto four monitors.   I added two in and looked for config options.   Sadly the currently installed SVGA driver that ships with Windows 2008 can’t support external monitors, or dual monitors or anything other than a very very simple single monitor with limited resolution options.   A quick dig into the drivers on lenovo and I was installing the 64bit Vista XP driver,  install went well everything seemed to be working fine.</p>
<p><strong>Note: I’m not planning to do any video editing or normal day to day stuff on here,  this is really a dev rig.  My laptop is still my main day to day machine/</strong></p>
<p>I fired up the VM and connected,  there was a noticeable delay – it was only a few seconds but compared to the lightening speed before this seemed odd.   On researching this more I found that this is a known issues (but not an issue Microsoft have as at today anything planned to resolve).   I switched back to SVGA and lightening fast,  NVidia and a delay in connecting,  the thing to note is the delay is only really when connecting via the Hyper V manager,  if you remote desktop to the VM then it works just fine.</p>
<p>I’m not thrilled about the delay, but the value of the duel monitor and better resolution is more valuable to me.   I had considered perhaps using VMWare workstation at one point but really wanted to get to know Hyper V so kept the VMWare for the laptop.</p>
<p>A few posts on the subject,  I am hoping that Microsoft do solve this</p>
<p><a title="http://blogs.msdn.com/virtual_pc_guy/archive/2009/01/07/bad-performance-with-high-end-graphics-and-hyper-v.aspx" href="http://blogs.msdn.com/virtual_pc_guy/archive/2009/01/07/bad-performance-with-high-end-graphics-and-hyper-v.aspx">http://blogs.msdn.com/virtual_pc_guy/archive/2009/01/07/bad-performance-with-high-end-graphics-and-hyper-v.aspx</a></p>
<p><a title="http://social.technet.microsoft.com/Forums/en-US/winserverhyperv/thread/4e1c53f5-0400-4ca9-8819-f942c10881c1/" href="http://social.technet.microsoft.com/Forums/en-US/winserverhyperv/thread/4e1c53f5-0400-4ca9-8819-f942c10881c1/">http://social.technet.microsoft.com/Forums/en-US/winserverhyperv/thread/4e1c53f5-0400-4ca9-8819-f942c10881c1/</a></p>
<p> </p>
<h3>Adding a second CPU</h3>
<p>Now that my machine was running,  VM installed and ready for some serious work I though it the right time to add the second processor and put in those nice Thermalright coolers.</p>
<p>A quick review of the Lenovo site and I had instructions, in fact a fairly simple process for installing the new CPU and adding the heat sinks. As you can see these heat sinks are beasts compared to the chip that they are there to cool.</p>
<div id="attachment_1003" class="wp-caption alignnone" style="width: 343px"><a href="http://www.21apps.com/wp-content/uploads/2009/07/heatsink1.jpg"><img class="size-full wp-image-1003" title="Heat sink to processor" src="http://www.21apps.com/wp-content/uploads/2009/07/heatsink1.jpg" alt="Heat sink to processor" width="333" height="500" /></a><p class="wp-caption-text">Heat sink to processor</p></div>
<p> </p>
<p>After some careful work removing the original heat sink,  adding the new on,  adding the additional CPU and it’s heat sink I marvelled at just how good it was to build you own rig.</p>
<h3>Problem #2</h3>
<p>Next step,  lets get the cover on and give it a whirl.   I had removed some of the internal air ducting as this didn’t fit with the heat sinks but I was more than annoyed to find that I couldn’t put the case back on!!!   The case has a nice handle and a key lock that you can see from above,  the result is that these monster heat sinks will not fit!.   After a few choice swear words I decided to test it anyway, with the side off.  I could look for smaller heat sinks later.</p>
<h3>Problem #3</h3>
<p>Started the machine and bang!  The famous BSOD!</p>
<p>I knew this was something to do with the new CPU,  but had to start investigating it to see what it was.   Some more fiddling with the machine,  removed the original CPU and heat sink started the machine and it booted up and worked fine.  So there was nothing wrong with the CPU,  was it to do with the motherboard?</p>
<p>A thing to note, taking CPUs and Heat sinks in and out of the workstation is not something I recommend,  and ensure you have some spare heat paste as you will need it.</p>
<p>Time to turn to the internet,  the benefit of buying a branded workstation was that it is easy to narrow down searches.  I was lucky to find a whole support forum dedicated to the Lenovo Workstations and it was here I found the reason for my problem.</p>
<p><a title="http://forums.lenovo.com/lnv/board/message?board.id=ThinkStation&amp;thread.id=755&amp;view=by_date_ascending&amp;page=1" href="http://forums.lenovo.com/lnv/board/message?board.id=ThinkStation&amp;thread.id=755&amp;view=by_date_ascending&amp;page=1">http://forums.lenovo.com/lnv/board/message?board.id=ThinkStation&amp;thread.id=755&amp;view=by_date_ascending&amp;page=1</a></p>
<p>It appears that two Xeon E5420 processors are not always the same.  They rely on both processors having the same stepping code and have a slightly different revision code SLBBR and SLANV.   The problem is that there is no way through any of the suppliers I have seen to be able to order a specific processor revision.</p>
<p>I phoned Scan with my request and a desire to replace the chip,  they were not willing to do this as I had obviously opened the box not expecting to have this problem.   To be fair the stepping code is shown on the box.  I asked the guy at Scan so can I order this particular stepping model to which he said no, sorry we don’t stock them as different items so all you can do is order it and if its the wrong one send it back.</p>
<p>At this point I’m really hitting a low point in my affections with my dev rig,   realising I now have over £350 worth of upgrades that are worthless is not a way to make me happy.</p>
<h3>Getting the 2nd CPU</h3>
<p>I am not a big user of Ebay,  but found that this was the only way I could get a CPU with the exact stepping code I wanted.   I eventually got one for around £200, was able to install it and it worked first time.  +1 for Ebay</p>
<p>I still have a few left over components I need to shift,  including the Xeon Processor and some heat sinks.   Time to get back and make use of Ebay again.</p>
<h3>Living with my Dev Rig</h3>
<p>I have found the snapshots and vm revision tree in Hyper V to be really cool and very very quick.   It was a bit confusing at first understanding that you select a snapshot and choose apply to go to that.  I have missed the idea of a Team in VMWare workstation and also the cloning of images using export/import is less intuitive.</p>
<p>I have recently ventured into using System Centre Virtual Machine Manager 2008 R2 to see what value add this can give me.  I know it’s targeted at bigger setups but I think this will be a great investment as I start to automate more of my development and test environments. </p>
<p>SCVMM does rely on AD so I am now in the strange position where my AD and SCVMM machines are running as Virtual Machines on my Dev Rig and the SCVMM is managing the Hyper-v as a perimeter  setup which includes itself.  I’m pretty sure this is not a Best Practice  <img src='http://www.21apps.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Going forward I can actually see my Dev Rig taking on much more of a server role,  in fact this is really where it is now with very little installed on the host OS.</p>
<p>What I do like is that I now have the power and storage to really start ramping up on all the new cool software that is coming down the line.</p>
<p>I did however notice that my dev rig has caught the attention of someone else in the family.</p>
<div id="attachment_1004" class="wp-caption alignnone" style="width: 510px"><a href="http://www.21apps.com/wp-content/uploads/2009/07/mydev-rig.jpg"><img class="size-full wp-image-1004" title="Someone else using my dev rig" src="http://www.21apps.com/wp-content/uploads/2009/07/mydev-rig.jpg" alt="Someone else using my dev rig" width="500" height="333" /></a><p class="wp-caption-text">Someone else using my dev rig</p></div>
<p> </p>
<p>At least he’s working on something important,  School Project: The History of Chelsea Football Club.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.21apps.com/development/my-dev-rig-the-story-so-far/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>SPDisposeCheck &#8211; the tool every SharePoint developer needs</title>
		<link>http://www.21apps.com/sharepoint/spdisposecheck-the-tool-every-sharepoint-developer-needs/</link>
		<comments>http://www.21apps.com/sharepoint/spdisposecheck-the-tool-every-sharepoint-developer-needs/#comments</comments>
		<pubDate>Wed, 12 Nov 2008 18:46:45 +0000</pubDate>
		<dc:creator>Andrew Woodward</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Ruby On Rails]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://www.21apps.com/?p=631</guid>
		<description><![CDATA[At long last Microsoft have announced publically the excellent SPDisposeCheck tool.   This tool will examine your IL level components and report any possible areas where you may have the potential for a leak due to objects not being disposed of correctly.   The output from the tool does require a deep understanding of the way objects [...]]]></description>
			<content:encoded><![CDATA[<p>At long last Microsoft have announced publically the excellent <a href="http://blogs.msdn.com/sharepoint/archive/2008/11/12/announcing-spdisposecheck-tool-for-sharepoint-developers.aspx" target="_blank">SPDisposeCheck</a> tool.   This tool will examine your IL level components and report any possible areas where you may have the potential for a leak due to objects not being disposed of correctly.   The output from the tool does require a deep understanding of the way objects are disposed of as there is the potential for false positives.</p>
<p>For more information check out the <a href="http://blogs.msdn.com/sharepoint/archive/2008/11/12/announcing-spdisposecheck-tool-for-sharepoint-developers.aspx" target="_blank">SharePoint Team Blog</a> even if you can&#8217;t get the tool just yet, its coming soon, the referenced posts are a must read for all SharePoint developers.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.21apps.com/sharepoint/spdisposecheck-the-tool-every-sharepoint-developer-needs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why SDLC is always needed in SharePoint projects</title>
		<link>http://www.21apps.com/sharepoint/why-sdlc-is-always-needed-in-sharepoint-projects/</link>
		<comments>http://www.21apps.com/sharepoint/why-sdlc-is-always-needed-in-sharepoint-projects/#comments</comments>
		<pubDate>Wed, 16 Jul 2008 20:36:00 +0000</pubDate>
		<dc:creator>Andrew Woodward</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://21apps.co.uk/?p=94</guid>
		<description><![CDATA[Adam Buenz is a scarily clever guy;  if your into improving your development approach and work with SharePoint you have to spare a few minutes to read and digest this.
Quote:
The point I am trying to drive home is implementing an SDLC is not a nice-to-have thing on any SharePoint project, it is required. And while [...]]]></description>
			<content:encoded><![CDATA[<p>Adam Buenz is a scarily clever guy;  if your into improving your development approach and work with SharePoint you have to spare a few minutes to read and digest this.</p>
<p>Quote:</p>
<blockquote><p>The point I am trying to drive home is implementing an SDLC is not a nice-to-have thing on any SharePoint project, it is required. And while this may be the case, it does not discount the tried and true project metric harvesting methods that have been around since the dawn of man. While producing of client deliverables is always the focus, generating valid project metrics can both help to manage your project better, as well as make sure that iteration problems that you have in one project, don’t get repeated on another.</p></blockquote>
<p><a title="http://www.sharepointsecurity.com/blog/sharepoint/sharepoint-2007-development/the-degradation-of-empirical-software-development-management-techniques/" href="http://www.sharepointsecurity.com/blog/sharepoint/sharepoint-2007-development/the-degradation-of-empirical-software-development-management-techniques/">The Degradation of Empirical Software Development Management Techniques</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.21apps.com/sharepoint/why-sdlc-is-always-needed-in-sharepoint-projects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
