<?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>blog.richardramdat.com</title>
	<atom:link href="http://blog.richardramdat.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.richardramdat.com</link>
	<description></description>
	<lastBuildDate>Tue, 17 Jan 2012 01:49:08 +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>Code 10145 LEFT_SUBFIELD only supports Object</title>
		<link>http://blog.richardramdat.com/2012/01/code-10145-left_subfield-only-supports-object/</link>
		<comments>http://blog.richardramdat.com/2012/01/code-10145-left_subfield-only-supports-object/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 01:49:08 +0000</pubDate>
		<dc:creator>richard</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://blog.richardramdat.com/?p=341</guid>
		<description><![CDATA[Got this error trying to update a field in a mongodb collection. Turns out I was previously using the same field to store object Ids. Now that I&#8217;m trying to repurpose the field to store a different datatype, mongo throws an error. Solution was to remove the old field completely from all documents within the [...]]]></description>
			<content:encoded><![CDATA[<p>Got this error trying to update a field in a mongodb collection. Turns out I was previously using the same field to store object Ids. Now that I&#8217;m trying to repurpose the field to store a different datatype, mongo throws an error. Solution was to remove the old field completely from all documents within the collection using the unset command. With no documents having this field, mongo was able to append the new field with the new data type.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richardramdat.com/2012/01/code-10145-left_subfield-only-supports-object/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Find the current version of installed packages using NPM</title>
		<link>http://blog.richardramdat.com/2011/05/find-the-current-version-of-installed-packages-using-npm/</link>
		<comments>http://blog.richardramdat.com/2011/05/find-the-current-version-of-installed-packages-using-npm/#comments</comments>
		<pubDate>Sun, 15 May 2011 06:25:29 +0000</pubDate>
		<dc:creator>richard</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[nodejs]]></category>
		<category><![CDATA[npm]]></category>

		<guid isPermaLink="false">http://blog.richardramdat.com/?p=282</guid>
		<description><![CDATA[Things change quickly in the world of node development, you&#8217;re usually working with a lot of different modules within your projects. Fortunately there&#8217;s a great package manager that most node developers used called NPM. It makes installing and updating dependencies in your environment fairly simple. At anytime you can see a list of installed packages [...]]]></description>
			<content:encoded><![CDATA[<p>Things change quickly in the world of node development, you&#8217;re usually working with a lot of different modules within your projects. Fortunately there&#8217;s a great package manager that most node developers used called <a href="http://npmjs.org/">NPM</a>. It makes installing and updating dependencies in your environment fairly simple. At anytime you can see a list of installed packages and their version number using:</p>
<p><code>npm ls installed</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richardramdat.com/2011/05/find-the-current-version-of-installed-packages-using-npm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MongooseJS Validation</title>
		<link>http://blog.richardramdat.com/2011/05/mongoosejs-validation/</link>
		<comments>http://blog.richardramdat.com/2011/05/mongoosejs-validation/#comments</comments>
		<pubDate>Sun, 15 May 2011 06:12:33 +0000</pubDate>
		<dc:creator>richard</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[mongoose]]></category>
		<category><![CDATA[nodejs]]></category>

		<guid isPermaLink="false">http://blog.richardramdat.com/?p=276</guid>
		<description><![CDATA[The docs on MongooseJS can be really unclear at times, here are some pointers on validation that may help (note this is valid as of MongooseJS 1.3.3)
Making a field unique:

var User = new Schema({
email: { index: {unique: true} }
});

Note: If your collection exists in Mongo, you need to drop the collection before schema changes kick [...]]]></description>
			<content:encoded><![CDATA[<p>The docs on MongooseJS can be really unclear at times, here are some pointers on validation that may help (note this is valid as of MongooseJS 1.3.3)</p>
<p>Making a field unique:</p>
<p><code><br />
var User = new Schema({<br />
email: { index: {unique: true} }<br />
});<br />
</code><br />
<strong>Note:</strong> If your collection exists in Mongo, you need to drop the collection before schema changes kick in. Otherwise, you&#8217;ll see duplicated fields and wonder why it doesn&#8217;t work. If all is working, when you call User.save(), Mongoose will throw an error such as &#8211; &#8216;E11000 duplicate key error index: &#8230;&#8217; if the field is duplicated.</p>
<p>Validating a schema field:</p>
<p>When defining a field you can do some basic validation through Mongoose, such as indicating a max or min for numbers, specifying the field is required, or matching to a regular expression. For more advanced validation you can provide a call to function which is evaluated after any defaults for a field is applied. In almost all instances, validating through a function seems to be the most robust approach, even for checking a required field, regex, or max/min values. Assuming you already defined a validation function for your schema field, you can associate it two ways,</p>
<p><code><br />
var User = new Schema({<br />
email: { index: { unique: true }, validate: [ isValidEmail, 'Please provide a valid email' }<br />
});<br />
</code></p>
<p>or</p>
<p><code><br />
User.path('email').validate( isValidEmail(value), 'Please provide a valid email' );<br />
</code></p>
<p>Validating a virtual schema field:</p>
<p>If you are using virtuals within a schema, it would be nice to validate them from the model. There are a couple approaches that won&#8217;t work. Chaining a .validate function onto a virtual schema field definition, throws a compiler error when launching node. Likewise, attempting to attach a .validate function using Schema.path() will also fail as virtuals are not accessible using path(). The best solution is to use middleware from within the model to validate the virtual attribute.</p>
<p><code><br />
User.pre('save', function (next) {<br />
if (this.virtualfield) {<br />
next ( new Error('This field is required.') );<br />
} else {<br />
next ();<br />
}<br />
});<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richardramdat.com/2011/05/mongoosejs-validation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Why does it take forever for SharePoint to load sometimes?</title>
		<link>http://blog.richardramdat.com/2011/03/why-does-it-take-forever-for-sharepoint-to-load-sometimes/</link>
		<comments>http://blog.richardramdat.com/2011/03/why-does-it-take-forever-for-sharepoint-to-load-sometimes/#comments</comments>
		<pubDate>Thu, 24 Mar 2011 16:51:50 +0000</pubDate>
		<dc:creator>richard</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.richardramdat.com/2011/03/why-does-it-take-forever-for-sharepoint-to-load-sometimes/</guid>
		<description><![CDATA[SharePoint is built on ASP.NET technology. Applications hosted through IIS,  (like an ASP.NET website or SharePoint) must initially be compiled before being sent to the user. This is a process called Just-In-Time compilation. Application Pools within IIS are responsible for execution of applications (like SharePoint) they manage resources like memory, and invoke JIT compilation, [...]]]></description>
			<content:encoded><![CDATA[<p>SharePoint is built on ASP.NET technology. Applications hosted through IIS,  (like an ASP.NET website or SharePoint) must initially be compiled before being sent to the user. This is a process called Just-In-Time compilation. Application Pools within IIS are responsible for execution of applications (like SharePoint) they manage resources like memory, and invoke JIT compilation, as well as other services like caching. Applications Pools will naturally shut down if left idle as to free up resources no longer needed. Application Pools will also occasionally recycle or restart if memory thresholds are reached. In these cases, the Application Pool must initiate JIT compilation of hosted applications as well as begin allocating resources when a request for the application is received again. The user requesting the application for the first time will experience a delay while the Application Pool compiles the site and makes it available for servicing. Subsequent requests for the application do not occur this overhead. To prevent users from ever experiencing this delay, warm up jobs or scripts are created to request sites running on an IIS server periodically or before demand is expected. The initial delay in startup of an application pool still occurs, but the experience of a delay now occurs in a command prompt running as a scheduled task, not a user’s browser. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richardramdat.com/2011/03/why-does-it-take-forever-for-sharepoint-to-load-sometimes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint 2010 Document Coauthoring</title>
		<link>http://blog.richardramdat.com/2011/03/sharepoint-2010-document-coauthoring/</link>
		<comments>http://blog.richardramdat.com/2011/03/sharepoint-2010-document-coauthoring/#comments</comments>
		<pubDate>Wed, 23 Mar 2011 22:08:43 +0000</pubDate>
		<dc:creator>richard</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.richardramdat.com/2011/03/sharepoint-2010-document-coauthoring/</guid>
		<description><![CDATA[Document co-authoring is a new feature within SharePoint 2010 and Microsoft Office Word, OneNote and PowerPoint 2010. When multiple users edit a document on a SharePoint site, changes  saved back while editing are available to other users also editing the document.
This functionality can be disabled by checking out the document before editing. Users can [...]]]></description>
			<content:encoded><![CDATA[<p>Document co-authoring is a new feature within SharePoint 2010 and Microsoft Office Word, OneNote and PowerPoint 2010. When multiple users edit a document on a SharePoint site, changes  saved back while editing are available to other users also editing the document.</p>
<p>This functionality can be disabled by checking out the document before editing. Users can individually check out documents as a way to lock them, so other users cannot co-author with them. Co-authoring requires that check-out not be required on any document library used for co-authoring documents. Requiring check-out in a document library is one way to disable co-authoring for the whole library. Co-authoring functionality can also be disabled on the client side using Group Policy.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richardramdat.com/2011/03/sharepoint-2010-document-coauthoring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint 2010 Licensing &#8211; Standard, Enterprise, FAST Search</title>
		<link>http://blog.richardramdat.com/2011/03/sharepoint-2010-licensing-standard-enterprise-fast-search/</link>
		<comments>http://blog.richardramdat.com/2011/03/sharepoint-2010-licensing-standard-enterprise-fast-search/#comments</comments>
		<pubDate>Thu, 10 Mar 2011 21:56:06 +0000</pubDate>
		<dc:creator>richard</dc:creator>
				<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://blog.richardramdat.com/?p=269</guid>
		<description><![CDATA[It&#8217;s not always clear how licensing works with Microsoft, even when you visit the product page and compare editions for SharePoint 2010 you&#8217;re still left with scratching your head. To help, here&#8217;s a bullet list of things to keep in mind -

SharePoint 2010 Foundation (previously known as WSS 3.0) comes included with Windows 2008 Server [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s not always clear how licensing works with Microsoft, even when you visit the product page and compare editions for SharePoint 2010 you&#8217;re still left with scratching your head. To help, here&#8217;s a bullet list of things to keep in mind -</p>
<ul>
<li><strong>SharePoint 2010 Foundation</strong> (previously known as WSS 3.0) comes included with Windows 2008 Server Standard edition. You need Windows Server CALs for user access.</li>
<li><strong>SharePoint 2010 Server</strong> is a server product that you install on-top of Windows 2008 Server and is licensed separately per server. You may see &#8220;Standard&#8221; or &#8220;Enterprise&#8221; but the server product comes in only one version and has only one SKU.</li>
<li><strong>Standard &amp; Enterprise CALs</strong> (client access licenses). Each user connecting to a SharePoint server needs a standard CAL. For users accessing enterprise features, they also need an enterprise CAL. Note &#8211; its not one or the other, but both (Standard with Enterprise CALs) if you decide to use  any of the enterprise features.</li>
<li><strong>Summary of Enterprise CAL feature</strong>s -
<ul>
<li>FAST Search Centers
<ul>
<li>Sorting by any managed property</li>
<li>Contextual search results (i.e. user or audience targeted)</li>
<li>Refinement filter counts</li>
<li>Similar results</li>
<li>Thumbnails and previews</li>
<li>Visual best bets</li>
<li>Scale and other search platform enhancements</li>
</ul>
</li>
<li>Business Intelligence
<ul>
<li>KPI’s</li>
<li>Chart Web Parts</li>
<li>Dashboards</li>
<li>Data Connection Library</li>
<li>PowerPivot for SharePoint</li>
</ul>
</li>
<li>Access Services</li>
<li>Excel Services</li>
<li>InfoPath Services</li>
<li>Visio Services</li>
<li>PerformancePoint Services</li>
</ul>
</li>
<li><strong>Microsoft FAST Search Server for SharePoint &#8211; </strong>if using FAST Search Centers as part of the Enterprise CAL, you need a separate server license for each FAST server that will actually index and crawl content. Vice versa, if you want to implement Microsoft FAST Search &#8211; you need Enterprise CALs to access the search centers within SharePoint 2010.</li>
</ul>
<p>Note, the above covers mostly intranet/extranet scenarios. Microsoft have specific versions of SharePoint 2010 for Internet sites that may also require Window External Connector licenses for your Windows 2008 servers, these versions also have Standard and Enterprise features and can be used with Microsoft FAST Search.</p>
<p>In addition to the above, the following links are also great resources for understanding SharePoint 2010 licensing</p>
<ul>
<li><a href="http://www.sharepointconfig.com/2010/05/indicative-sharepoint-2010-licencing-costs/">http://www.sharepointconfig.com/2010/05/indicative-sharepoint-2010-licencing-costs/</a></li>
<li><a href="http://community.bamboosolutions.com/blogs/sharepoint-2010-price-calculator/default.aspx">http://community.bamboosolutions.com/blogs/sharepoint-2010-price-calculator/default.aspx</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.richardramdat.com/2011/03/sharepoint-2010-licensing-standard-enterprise-fast-search/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extract WSP from SharePoint MOSS Solution Store</title>
		<link>http://blog.richardramdat.com/2010/10/extract-wsp-from-sharepoint-moss-solution-store/</link>
		<comments>http://blog.richardramdat.com/2010/10/extract-wsp-from-sharepoint-moss-solution-store/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 20:42:44 +0000</pubDate>
		<dc:creator>richard</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://blog.richardramdat.com/?p=214</guid>
		<description><![CDATA[Need to deploy a WSP to a new SharePoint 2007 server but don&#8217;t have an archive of it? The following utility allows you to extract a specific or all WSPs packages installed on a SharePoint farm and save them to disk where you can redeploy it to another server. Very useful -
http://code.msdn.microsoft.com/SPSolutionExtractor
Be wary though &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>Need to deploy a WSP to a new SharePoint 2007 server but don&#8217;t have an archive of it? The following utility allows you to extract a specific or all WSPs packages installed on a SharePoint farm and save them to disk where you can redeploy it to another server. Very useful -</p>
<p><a href="http://code.msdn.microsoft.com/SPSolutionExtractor">http://code.msdn.microsoft.com/SPSolutionExtractor</a></p>
<p>Be wary though &#8211; the author of this tool doesn&#8217;t seem familar with command line tools.  Not only is the executable&#8217;s name far too wordy, certain menus and prompts seem to lack polish, however it does get the job done.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richardramdat.com/2010/10/extract-wsp-from-sharepoint-moss-solution-store/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Global Assembly Cache (GAC) Compare</title>
		<link>http://blog.richardramdat.com/2010/06/global-assembly-cache-gac-compare/</link>
		<comments>http://blog.richardramdat.com/2010/06/global-assembly-cache-gac-compare/#comments</comments>
		<pubDate>Tue, 15 Jun 2010 15:16:41 +0000</pubDate>
		<dc:creator>richard</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://blog.richardramdat.com/?p=209</guid>
		<description><![CDATA[If you&#8217;re doing SharePoint development then you&#8217;ve no doubt heard of the GAC, or Global Assembly Cache (c:\windows\assembly) where compiled assemblies are deployed. In a SharePoint farm with several front-ends, you may occasionally find a server with a missing DLL or the wrong version of the assembly.
The following tool makes quick work of trying to [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re doing SharePoint development then you&#8217;ve no doubt heard of the GAC, or Global Assembly Cache (c:\windows\assembly) where compiled assemblies are deployed. In a SharePoint farm with several front-ends, you may occasionally find a server with a missing DLL or the wrong version of the assembly.</p>
<p>The following tool makes quick work of trying to find differences in the GAC for remote servers and evens offers up a nifty HTML report. Very nicely done.</p>
<p><a href="http://gaccompare.codeplex.com/">http://gaccompare.codeplex.com/</a></p>
<p>A couple things &#8211; you need to have Admin rights on the remote computers, the tool does take a while to do the compare (so be patient) and to get the HTML report and other cool features, right-click in the results pane after it has loaded.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richardramdat.com/2010/06/global-assembly-cache-gac-compare/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>W3wp.exe Associate Process ID with Application Pool</title>
		<link>http://blog.richardramdat.com/2010/06/w3wp-exe-associate-process-id-with-application-pool/</link>
		<comments>http://blog.richardramdat.com/2010/06/w3wp-exe-associate-process-id-with-application-pool/#comments</comments>
		<pubDate>Thu, 10 Jun 2010 22:12:57 +0000</pubDate>
		<dc:creator>richard</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[IIS]]></category>

		<guid isPermaLink="false">http://blog.richardramdat.com/?p=206</guid>
		<description><![CDATA[If you noticed your website is running slow, probably one of the first things you do is log into your web server, open Task Manager and check what&#8217;s going on. Usually you will see a process called w3wp.exe (or several instances of it) running and using high cpu utilization.
W3wp.exe is the worker process that Internet [...]]]></description>
			<content:encoded><![CDATA[<p>If you noticed your website is running slow, probably one of the first things you do is log into your web server, open Task Manager and check what&#8217;s going on. Usually you will see a process called w3wp.exe (or several instances of it) running and using high cpu utilization.</p>
<p>W3wp.exe is the worker process that Internet Information Services (IIS) uses for the application pools on your site. Each application pool, is assigned a separate worker process. That way an exception or crash in one of your application pools doesn&#8217;t affect other sites running in a different app pool.</p>
<p>To identify which w3wp process belongs to which application pool, here is what you will need to do. <strong>NOTE: this is specific for IIS 7.</strong></p>
<p>In Task Manager, switch to the Processes tab. From the top menu, click on View and then Select Columns&#8230;, ensure that PID (Process Identifier) is checked.</p>
<p>Now open a command window (Start -&gt; Run -&gt; cmd.exe) and change directory to the following path,</p>
<p><strong>cd c:\windows\system32\inetsrv</strong></p>
<p>*notice that inetsrv may be<strong> inetsrv32</strong> or<strong> inetsrv64</strong> depending on your specific version of Windows Server.</p>
<p>Once in this directory, type the following:</p>
<p><strong>appcmd list wp</strong></p>
<p>The output will appear with the Process ID (PID from Task Manager) and the associated application pool belonging to it.</p>
<p>Another helpful command is: <strong>appcmd list requests</strong></p>
<p>This will list all current requests and other useful information, such as time in milliseconds to help you identify long running requests.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richardramdat.com/2010/06/w3wp-exe-associate-process-id-with-application-pool/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IIS 7 Worker Processes &#8211; Category does not exist</title>
		<link>http://blog.richardramdat.com/2010/06/iis-7-worker-processes-category-does-not-exist/</link>
		<comments>http://blog.richardramdat.com/2010/06/iis-7-worker-processes-category-does-not-exist/#comments</comments>
		<pubDate>Thu, 10 Jun 2010 21:57:47 +0000</pubDate>
		<dc:creator>richard</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[IIS]]></category>

		<guid isPermaLink="false">http://blog.richardramdat.com/?p=204</guid>
		<description><![CDATA[In my last post, I mentioned the Internet Information Services (IIS) Manager feature called Worker Processes, and explained how you can use it to glean information into high cpu utilization for the w3wp.exe process(es) running on your server. If you followed the steps and got the following error: &#8220;There was an error while performing this [...]]]></description>
			<content:encoded><![CDATA[<p>In my<a href="/2010/06/iis-7-worker-processes/"> last post</a>, I mentioned the Internet Information Services (IIS) Manager feature called <strong>Worker Processes</strong>, and explained how you can use it to glean information into high cpu utilization for the w3wp.exe process(es) running on your server. If you followed the steps and got the following error: &#8220;There was an error while performing this operation. Details: Category does not exist.&#8221; Here is what you can do to resolve the issue.</p>
<p>The issue stems from the performance counters on the server being disabled. To verify &#8211; run the following at the command line,</p>
<p>lodctr /q:PerfProc</p>
<p>If you see the following,</p>
<p>[PerfProc] Performance Counters (Disabled)</p>
<p>The performance counters are not running. To activate them, run the following command,</p>
<p>lodctr /e:PerfProc</p>
<p>Once done, close any instances of the IIS Manager that you had open. Reopen IIS Manager, and you should now see the Worker Processes feature.</p>
<p>Thanks to the following for information about this issue:</p>
<p><a href="http://bit.ly/b9yhrV">http://bit.ly/b9yhrV</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richardramdat.com/2010/06/iis-7-worker-processes-category-does-not-exist/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

