<?xml version="1.0" encoding="UTF-8"?>
<!--Generated by Squarespace Site Server v5.11.5 (http://www.squarespace.com/) on Sun, 05 Sep 2010 23:33:49 GMT--><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>David Yack's Blog!</title><link>http://blog.davidyack.com/journal/</link><description></description><lastBuildDate>Sun, 05 Sep 2010 20:08:53 +0000</lastBuildDate><copyright></copyright><language>en-US</language><generator>Squarespace Site Server v5.11.5 (http://www.squarespace.com/)</generator><item><title>DateTime from within the WP7 Emulator</title><dc:creator>David Yack</dc:creator><pubDate>Sun, 05 Sep 2010 20:08:53 +0000</pubDate><link>http://blog.davidyack.com/journal/2010/9/5/datetime-from-within-the-wp7-emulator.html</link><guid isPermaLink="false">154714:1437668:8780551</guid><description><![CDATA[<p>We’ve run across this a few times, the Beta emulator likes to have a date time from July.&#160; Often times this doesn’t matter but if your doing anything like oAuth where they time is validated with the server to be within a certain range it will reject the request.&#160; Came across this forum post that was helpful to explain how to delete the emulator state and get a real current date - <a title="http://social.msdn.microsoft.com/Forums/en-US/windowsphone7series/thread/70cefc55-e345-4448-b0df-edfadcd6f884" href="http://social.msdn.microsoft.com/Forums/en-US/windowsphone7series/thread/70cefc55-e345-4448-b0df-edfadcd6f884">http://social.msdn.microsoft.com/Forums/en-US/windowsphone7series/thread/70cefc55-e345-4448-b0df-edfadcd6f884</a></p>]]></description><wfw:commentRss>http://blog.davidyack.com/journal/rss-comments-entry-8780551.xml</wfw:commentRss></item><item><title>Building Silverlight 3 on a x64 build machine</title><dc:creator>David Yack</dc:creator><pubDate>Mon, 17 May 2010 04:47:35 +0000</pubDate><link>http://blog.davidyack.com/journal/2010/5/17/building-silverlight-3-on-a-x64-build-machine.html</link><guid isPermaLink="false">154714:1437668:7696634</guid><description><![CDATA[<p>Recently we upgraded one of our build servers to x64 and encountered the following error.</p>  <p>Microsoft.Silverlight.Common.targets (101): The Silverlight 3 SDK is not installed.</p>  <p>The obvious first thought is we didn’t install the SDK, but in fact it was installed.&#160; Doing some searching I found this forum <a href="http://forums.silverlight.net/forums/p/113956/340652.aspx">thread</a> talking about the problem which ultimately lead me to Andru’s blog <a href="build-silverlight-2-0-or-3-0-projects-with-an-x64-tfs-2010-build-agent">post</a> with a good solution.&#160; His solution is to simply use the Build Parameters feature of VS2010 to be able to define the platform as x86 to run the build.&#160; You can find this option by right clicking “Edit Build Definition” and going to the Process section in the left navigation</p>  <p><a href="http://blog.davidyack.com/resource/WindowsLiveWriter-BuildingSilverlight3onax64buildmachine_13FC1-?fileId=6957779"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.davidyack.com/resource/WindowsLiveWriter-BuildingSilverlight3onax64buildmachine_13FC1-?fileId=6957781" width="147" height="145" /></a> </p>  <p>From there expand the #3 section Advanced and you will find the MSBuild Platform option that is defaulted to Auto – Changing that to X86 got rid of the weird error!</p>  <p><a href="http://blog.davidyack.com/resource/WindowsLiveWriter-BuildingSilverlight3onax64buildmachine_13FC1-?fileId=6957782"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.davidyack.com/resource/WindowsLiveWriter-BuildingSilverlight3onax64buildmachine_13FC1-?fileId=6957783" width="470" height="174" /></a></p>]]></description><wfw:commentRss>http://blog.davidyack.com/journal/rss-comments-entry-7696634.xml</wfw:commentRss></item><item><title>New CRM SDK, New Developer Experience</title><dc:creator>David Yack</dc:creator><pubDate>Thu, 06 May 2010 18:50:28 +0000</pubDate><link>http://blog.davidyack.com/journal/2010/5/6/new-crm-sdk-new-developer-experience.html</link><guid isPermaLink="false">154714:1437668:7598075</guid><description><![CDATA[<p>Today, Microsoft released CRM SDK 4.0.12&#160; - before you just <a href="http://tinyurl.com/66br6v">download it</a> and think its just another minor update – read on. This update includes what is being referred to as Advanced Developer Extensions.&#160; Before you stop reading saying “I’m not advanced” – “Advanced” I believe is marketing’s way of saying this builds on top of the strong foundation that CRM already provided – not that you need to be a “Super Advanced” developer to use it.&#160; In reality, it’s advanced because it’s going to <strong>simplify</strong> how you interact with the CRM data.&#160; More specifically, it will allow you to use the LINQ expression syntax that developers have been using since C#3/VB9 to build queries.&#160; Additionally, this introduces the idea of using the normal .NET data types instead of the CRM specific ones e.g CRMBoolean.&#160; In the past, CRM had specific types for CRM Boolean because at the time .NET didn’t support nullable types. </p>  <p>There are other good things in the new SDK that I will try to cover in future blog posts – but wanted to make sure people didn’t gloss over this new feature.&#160; If you don’t already follow my CRM blog – you can find it at <a href="http://crm.davidyack.com">http://crm.davidyack.com</a>.&#160; I will be covering a lot of the upcoming changes to Microsoft CRM on that blog.&#160; </p>  <p><strong>Dave’s 10 Minute Quick Start Walkthrough</strong> - (SDK download times excluded of course, I can’t help if you have a slow connection!) </p>  <p>1 – <a href="http://tinyurl.com/66br6v">Download</a> the updated CRM SDK</p>  <p>2 – Create a new console application in Visual Studio 2008 or 2010 – choose .NET 3.5 as your framework</p>  <p>3 – Create a folder in the new project called Entities – Right click Open Folder in Browser as you can see below</p>  <p><a href="http://blog.davidyack.com/resource/WindowsLiveWriter-NewCRMSDKNewDeveloperExperience_B2BF-?fileId=6826753"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.davidyack.com/resource/WindowsLiveWriter-NewCRMSDKNewDeveloperExperience_B2BF-?fileId=6826754" width="244" height="200" /></a> </p>  <p>4 – Copy the path name from Windows Explorer – you will need it to provide to the CrmSVCUtil program so it can use it to create the generated classes</p>  <p><a href="http://blog.davidyack.com/resource/WindowsLiveWriter-NewCRMSDKNewDeveloperExperience_B2BF-?fileId=6826755"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.davidyack.com/resource/WindowsLiveWriter-NewCRMSDKNewDeveloperExperience_B2BF-?fileId=6826756" width="355" height="58" /></a> </p>  <p>5 – From a command line – go to the SDK folder/Microsoft.xrm/Tools and run the following command line – replacing MyCrmServer with your actual server name, replace MyCrmOrg with your actual CRM Org and MyEntitiesFolder with the name you copied in step 4.&#160; Note : This assumes using integrated authentication for on-premise – support is available for many different scenarios – check the docs.</p>  <p>crmsvcutil /server:http://MyCrmServer/MyCrmOrg /out:MyEntitiesFolder</p>  <p>This utility will access the server metadata and build classes for each of the entities and place them in your project folder.</p>  <p>6 – Right click – Add Existing Item on the entities folder, Make sure the browse dialog is in the Entities folder and select all the files and click OK</p>  <p><a href="http://blog.davidyack.com/resource/WindowsLiveWriter-NewCRMSDKNewDeveloperExperience_B2BF-?fileId=6826757"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.davidyack.com/resource/WindowsLiveWriter-NewCRMSDKNewDeveloperExperience_B2BF-?fileId=6826758" width="510" height="55" /></a> </p>  <p>7 – Add references to the CRM SDK assemblies – using Add Reference – Browse and choosing the following </p>  <p><a href="http://blog.davidyack.com/resource/WindowsLiveWriter-NewCRMSDKNewDeveloperExperience_B2BF-?fileId=6826759"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.davidyack.com/resource/WindowsLiveWriter-NewCRMSDKNewDeveloperExperience_B2BF-?fileId=6826761" width="413" height="164" /></a> </p>  <p>8 – Add references to the Xrm assemblies from the SDK/Microsoft.xrm/bin folder as you see in the following </p>  <p><a href="http://blog.davidyack.com/resource/WindowsLiveWriter-NewCRMSDKNewDeveloperExperience_B2BF-?fileId=6826762"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.davidyack.com/resource/WindowsLiveWriter-NewCRMSDKNewDeveloperExperience_B2BF-?fileId=6826763" width="435" height="155" /></a> </p>  <p>9 – Add references to the following .NET assemblies</p>  <p>System.Data.Services</p>  <p>System.Data.Services.Client</p>  <p>10 – Build your application you should get a clean build at this point – before we add more code</p>  <p>11- Open the app.config file and add the following connection string section.&#160; Modify the server name to match your server name, and the org name to match your org name&#160; - if you don’t have an app.config – just add one via add-new items</p>  <p>&lt;connectionStrings&gt;    <br />&#160;&#160; &lt;add name=&quot;mycrm&quot; connectionString=&quot;Authentication Type=Integrated;     <br />&#160;&#160; Server=<a href="http://MyServerName/MyOrgName;&quot;/">http://MyServerName/MyOrgName;&quot;/</a>&gt;     <br />&lt;/connectionStrings&gt;</p>  <p>12 –&#160; In the Program.cs file - Add a Using statement for your entities as you can see below</p>  <p>using Entities;</p>  <p>13 – The new API uses a concept of a Data Context – you can think of this as the gateway to working with the CRM data – In the Main method add the following – which creates an instance and references the connection string we added to the app.config</p>  <p>DataContext ctx = new DataContext(&quot;mycrm&quot;);</p>  <p>14 – Use LINQ to compose a query of accounts.&#160; The following defines the query but does not execute it – with LINQ expressions they get executed when used as we will see later.&#160; The following builds a query looking for all accounts that have an “a” in the name.</p>  <p>var query = from acct in ctx.accounts    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; where acct.name.Contains(&quot;a&quot;)     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; select acct;</p>  <p>15 – Loop though each of the accounts and print the name – This will cause the actual execution of the query against CRM – Also notice that we can use strongly typed properties no guessing the names of magic strings</p>  <p>foreach (var acct in query)    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Console.WriteLine(&quot;Account Name :&quot; + acct.name);</p>  <p>17 – Run the application you should get a list of accounts</p>  <p>18 – See how easy it is to add ordering to a query – add the following to the LINQ query between the Where and the Select</p>  <p>orderby acct.name</p>  <p><a href="http://blog.davidyack.com/resource/WindowsLiveWriter-NewCRMSDKNewDeveloperExperience_B2BF-?fileId=6826764"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.davidyack.com/resource/WindowsLiveWriter-NewCRMSDKNewDeveloperExperience_B2BF-?fileId=6826765" width="235" height="77" /></a> </p>  <p>19 – Run the application again to see names sorted</p>  <p>20 – Let’s add a record – Adding a record is also very easy – First create an instance of the account object and set the minimum – This uses the account class that was generated by CrmSvcUtil earlier</p>  <p>var newAccount = new account();    <br />newAccount.name = &quot;test account&quot;;</p>  <p>21 – Add the record to the Data Context – This step advises the context about the new record – but it doesn’t cause the create to happen on the server yet. This means we can do multiple adds / updates and then send them to the server when ready.</p>  <p>ctx.AddToaccounts(newAccount);</p>  <p>22 – Call the SaveChanges method on the context to cause the records to be created on the CRM server</p>  <p>ctx.SaveChanges();</p>  <p>Note : This will really add a record to your server – you have been warned!</p>  <p>Updating is just as easy – modify a record you retrieved from a query and then call UpdateObject(account) to notify the Data Context of the changes.&#160; And of course DeleteObject(account) will make that account vanish for ever –a great way to get rid of pesky accounts :)&#160; Like Add, Update and Delete do not get sent to the server until SaveChanges is called.</p>]]></description><wfw:commentRss>http://blog.davidyack.com/journal/rss-comments-entry-7598075.xml</wfw:commentRss></item><item><title>Is the Future of the Web HTML5</title><dc:creator>David Yack</dc:creator><pubDate>Sat, 01 May 2010 05:23:33 +0000</pubDate><link>http://blog.davidyack.com/journal/2010/4/30/is-the-future-of-the-web-html5.html</link><guid isPermaLink="false">154714:1437668:7503150</guid><description><![CDATA[<p>Apparently this week it is&hellip;Glad everyone (<a href="http://blogs.msdn.com/ie/archive/2010/04/29/html5-video.aspx">Microsoft</a>, <a href="http://googlecode.blogspot.com/2010/04/google-apis-html5-new-era-of-mobile.html">Google</a>, <a href="http://www.apple.com/hotnews/thoughts-on-flash/">Apple</a>) got on the same page this week that HTML 5 is the future of the Web. I will even go as far as agreeing also.&nbsp; Keep reading because I&rsquo;m not saying Flash, Silverlight or other proprietary plug-ins are dead.&nbsp; Why you ask?</p>
<p>First, HTML, CSS, and JavaScript for the foreseeable future will continue to be the vehicle to reach the broadest audience.&nbsp; The problem though is even if HTML 5 succeeds in rallying all the major players on a common. consistent rendering you still have the legacy of older browsers.&nbsp; Look at the spread (<a href="http://www.w3counter.com/globalstats.php">here</a>, and <a href="http://www.w3schools.com/browsers/browsers_stats.asp">here</a>) of old browsers even before introducing HTML 5 to the mix.&nbsp; Compare that to Flash or Silverlight version <a href="http://www.riastats.com/">spread</a> which is almost all on a single version of the plug-in.&nbsp; So for the foreseeable future HTML based solutions will have to contend with an ugly mix of browser capabilities requiring special coding and testing for different browser combinations. ugh!</p>
<p>Mobile is the exception..Mobile devices are replaced faster&hellip;Mobile devices are starting to be more upgradeable (e.g IPhone) allowing them to pickup newer changes faster. So quickly I believe HTML 5 will be the standard for mobile device content where you don&rsquo;t need the rich experience provided by the native applications.&nbsp; I believe though most significant applications on mobile won&rsquo;t be browser / HTML based but built using the native tools to really stand out and provide a good experience.&nbsp; That means Cocoa/ObjectiveC on Apple, and Silverlight / .NET on Windows Phone for example.&nbsp; Adobe is getting the squeeze and is running scared they don&rsquo;t have a place in the new mobile world.&nbsp;</p>
<p>Apple is disruptive&hellip;sometimes a good thing, sometimes not. IPhone is good because it woke up the rest of the smartphone world to the fact they were moving too slow, and lacked the user experience.&nbsp; IPad is good &ndash; it gets people using a new device form and will open up a size device in the overall device continuum.&nbsp; In the case of Flash on IPad/IPhone &ndash; Jobs should have just said &ndash; it&rsquo;s our platform and we don&rsquo;t want to risk losing the control we currently have.&nbsp; Apple is disruptive because by blocking Adobe Flash, and while not targeted, clearly Silverlight as well Apple effectively ensures no single vendors proprietary plug-in gets a leg up.</p>
<p>In the end it&rsquo;s a lot of high stakes technology politics with each of the key players trying to protect their turf and expand.&nbsp; For us developers we have to deal with the real world demands.&nbsp; For me, that means HTML (HTML 5 as its ready) for common content that needs broad reach, and Silverlight for richer, more powerful applications.&nbsp; By the time HTML 5 reaches critical mass, my money says at least 1 if not 2 versions of both Flash and Silverlight have been released and in use by end users.&nbsp; That&rsquo;s a lot of missed innovation if you ignore it, translating to lots of missed business opportunities if you buy the hype that all you should do is HTML. Do you own homework before you blindly read a headline and follow the crowd.</p>
<p>So what would I like to see? Simple, we should all realize proprietary plug-ins will always outpace standards that require consensus.&nbsp;&nbsp; Further, having a common foundation of HTML is good and supports plug-in proprietary innovation.&nbsp; Apple should just give up, charge Adobe and Microsoft some decent fee for getting Flash/Silverlight on their platform and let the best plug-in or developer tool win&hellip;</p>
<p>What&rsquo;s your take?</p>]]></description><wfw:commentRss>http://blog.davidyack.com/journal/rss-comments-entry-7503150.xml</wfw:commentRss></item><item><title>Heading to CES 2010 in Las Vegas &amp;ndash; In-flight Thoughts</title><dc:creator>David Yack</dc:creator><pubDate>Wed, 06 Jan 2010 19:03:24 +0000</pubDate><link>http://blog.davidyack.com/journal/2010/1/6/heading-to-ces-2010-in-las-vegas-ndash-in-flight-thoughts.html</link><guid isPermaLink="false">154714:1437668:6241089</guid><description><![CDATA[<p>As I write this post I'm sitting on a plane heading to Las Vegas. This is my second year in a row going to CES after taking a break for a number of years. Last year the mood heading into CES was grim, and the bad news just kept coming in daily. Now a year later while we are not near a full recovery things are clearly picking up and optimism is much higher. It will be interesting to see what's in store - there's already been a lot of pre-leaks coming out talking about some of the new gadgets. E-Readers and Tablets , and mini projectors seem to be talked about everywhere.</p>  <p>Thinking back, I got my first tablet computer in 2002. Now 8 years later I see people get all excited about a tablet and I just have trouble joining them until I hear the &quot;Wow&quot;. Rumors are everywhere that Apple will announce a tablet/ slate whatever later in the month and Ballmer will show off a Microsoft one later tonight in his keynote. The tablet announcements themselves are a who cares event. When you should get excited is when they announce they have an experience that allows you to easily go from your phone, to your e-reader/tablet, to your net book - laptop and finally the desktop sitting somewhere in your house and finally for good measure your TV all with a unified transparent experience. Just as you wouldn't hammer a nail in with a screw driver it's all about using the write tool for the right task. But now were taking it a step further to talk about having a transportable user experience that flows across the different devices in without intervention to the user. This impacts not only the hardware but the applications we all build on the platforms. In the new decade, I think there will be a lot of focus on this convergence of the devices and improving the ease of use. For those of us that build applications that means it's time to move on from just thinking about how to make applications more responsive to how to make applications ready to provide that transportable user experience across their device of choice.</p>  <p>Steve Ballmer in getting warmed up for his keynote tonight did a guest blog post on the Huffington Post that you can read <a href="http://www.huffingtonpost.com/steve-ballmer/ces-2010-beyond-fun-and-g_b_412735.html">here</a>. He too talks about the connections and convergence that is happening and how it will expand to reach 4 billion people in the future. In his keynote I expect him to really drive home Microsoft's position on the connected, converging world we are heading towards. As someone who builds applications I'm particularly excited about the fact that Microsoft via .NET can build on these different devices without having to start from scratch to learn something new. In the future as Silverlight comes to mobile and other non traditional computer devices it will allow more applications to conform to how people want to use applications - that is on the device that makes sense at any given point in time. Last decade was about using the web to reach people everywhere, this next decade will be about reaching all their connected devices. Are you ready? Is your application ready?</p>  <p>I will be covering Ballmer's keynote tonight via Twitter (<a href="http://twitter.com/davidyack">Twitter.com/DavidYack</a> ) and if you reach out and let me know what you're interested in will try to keep my eye out.</p>  <p>That's all for now, I will let you know if I find the WIFI enabled toaster!</p>]]></description><wfw:commentRss>http://blog.davidyack.com/journal/rss-comments-entry-6241089.xml</wfw:commentRss></item><item><title>TailSpin &amp;ndash; AuthorizationManager Check Failed</title><dc:creator>David Yack</dc:creator><pubDate>Sun, 13 Dec 2009 04:07:46 +0000</pubDate><link>http://blog.davidyack.com/journal/2009/12/13/tailspin-ndash-authorizationmanager-check-failed.html</link><guid isPermaLink="false">154714:1437668:6052254</guid><description><![CDATA[<p>&#160;<a href="http://tailspintravel.codeplex.com/">TailSpin</a> is one of the demo applications from PDC09 that is up on Codeplex that demonstrates a lot of the .NET 4 feature set.&#160; I was trying to get it to run today on one of my laptops and it just wouldn’t get past the dependency check – Turns out I was dead in the water before I begun since I didn’t unblock the zip.&#160; So what I got when I tried to run the dependency check is the following error:</p>  <p>&#160;</p>  <p><a href="http://blog.davidyack.com/resource/WindowsLiveWriter-TailSpinAuthorizationManagerCheckFailed_12911-?fileId=5050129"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.davidyack.com/resource/WindowsLiveWriter-TailSpinAuthorizationManagerCheckFailed_12911-?fileId=5050130" width="377" height="206" /></a></p>  <p>I found a lot of help around how to adjust my execution policy etc…but nothing seemed to help.&#160; Finally ran across a forum post somewhere suggesting the issue was unblocking the zip…I’m sure that “Blocking” has saved me from something terrible at some point but it sure does cause me problems at times!&#160; So if you download Tailspin to check it out, make sure you unblock it before you try to configure it – you can unblock it on the property page of the file as you see below.</p>  <p><a href="http://blog.davidyack.com/resource/WindowsLiveWriter-TailSpinAuthorizationManagerCheckFailed_12911-?fileId=5050131"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.davidyack.com/resource/WindowsLiveWriter-TailSpinAuthorizationManagerCheckFailed_12911-?fileId=5050132" width="244" height="311" /></a></p>]]></description><wfw:commentRss>http://blog.davidyack.com/journal/rss-comments-entry-6052254.xml</wfw:commentRss></item><item><title>Working Around a SharePoint 2010 Install Bug</title><dc:creator>David Yack</dc:creator><pubDate>Sun, 06 Dec 2009 19:21:51 +0000</pubDate><link>http://blog.davidyack.com/journal/2009/12/6/working-around-a-sharepoint-2010-install-bug.html</link><guid isPermaLink="false">154714:1437668:6002413</guid><description><![CDATA[<p>Yesterday I was trying to install the new SharePoint 2010 beta on a virtual machine and had a little bit of fun.&#160; Well actually the install went really easy and I started with the full SharePoint 2010 Enterprise Beta.&#160; The fun started with the configuration wizard it got 5 steps in and failed with a Timeout Exception.</p>  <p>After simply retrying it and getting the same thing I started looking around and found <a href="http://social.msdn.microsoft.com/Forums/en-US/sharepoint2010general/thread/d5bc40dc-88cf-42b5-8a6c-120e5a8e1dc4/">this</a> forum post.&#160; It talks about lack of memory and how SharePoint 2010 needs a lot of memory to install and I tried like mad to make sure the VM had enough memory.&#160; End of the story this turned out to not be what was causing my blocking issue.&#160; As a side note, I sure hope the SharePoint team doesn’t make it so SharePoint does need that much memory for a basic install as suggested.&#160; </p>  <p>There is a <a href="http://blogs.msdn.com/opal/archive/2009/11/16/installation-notice-for-sharepoint-2010-public-beta.aspx">good blog post</a> by Jie Li that was linked to by the above forum post that was helpful.&#160; First it had the product keys – Microsoft mailed me some but it took over 24 hours for me to get them (same ones) and nothing on the download pages really told me where to find them (at least I didn’t see it).&#160; The post also has some hotfixes that you have to have depending on your OS and configuration.&#160; Additionally, if your running on a domain controller which I was it had some setup to get the sandbox up and running.</p>  <p>Now back to the timeout exception, it was still happening and honestly if I didn’t need SharePoint for something I’m working on I would have thrown it to the side and not looked back.&#160; Being determined I tried several different memory configurations and determined it had nothing to do with memory, and further through SQL profiling determined it wasn’t a database timeout either.&#160;&#160; </p>  <p>From this <a href="http://social.msdn.microsoft.com/Forums/en-US/sharepoint2010general/thread/ec0239c1-4451-46dc-ac3a-baffa006c024">forum post</a> I got the idea it might be a service start up issue.&#160; Originally, I didn’t pay enough attention to this post because it talked about a type not loading witch didn’t match my error.&#160; Later in the post it talks about service not starting and to try it manually, that didn’t show the error either.&#160; Additionally, it talked about registry keys to delete which turned out I didn’t have those keys.&#160; Getting frustrated and desperate to get this configured I started to get more creative.&#160; Since I was on a virtual machine I figured worse case I restart from last snapshot so I got brave and deleted a key at a time.&#160; For me the following key did the trick and the config zoomed along past the error to a successful completion.</p>  <p>So which key?&#160; Inside the following registry path..</p>  <p>[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\14.0\WSS\Services\</p>  <p>I deleted the following key</p>  <p><a href="http://blog.davidyack.com/resource/WindowsLiveWriter-WorkingAroundaSharePoint2010InstallBug_ADD6-?fileId=4982465"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blog.davidyack.com/resource/WindowsLiveWriter-WorkingAroundaSharePoint2010InstallBug_ADD6-?fileId=4982466" width="521" height="105" /></a></p>  <p>I’m normally not one to post about or suggest this type of black magic fix, but in this case it made the difference of me using the beta or not so here it is.</p>]]></description><wfw:commentRss>http://blog.davidyack.com/journal/rss-comments-entry-6002413.xml</wfw:commentRss></item><item><title>Rocky Mountain Tech Trifecta v2.0 Registration Open</title><dc:creator>David Yack</dc:creator><pubDate>Wed, 02 Dec 2009 02:12:28 +0000</pubDate><link>http://blog.davidyack.com/journal/2009/12/2/rocky-mountain-tech-trifecta-v20-registration-open.html</link><guid isPermaLink="false">154714:1437668:5960862</guid><description><![CDATA[<p>Registration has now opened for this years Rocky Mountain Tech Trifecta.&#160; This years all day event will be Feb 27th in Denver, Colorado at&#160; Metro State College Denver.&#160; If your not in Colorado – Don’t stop reading yet – last year we had people attend from 9 different states.&#160; Remember in Colorado it is possible to do this on Saturday and snowboard on Sunday.&#160; For those of you that don’t ski/snowboard I’ve been told there’s good shopping near by as well.</p>  <p>The event will have three tracks for Developers, SQL and IT Pros.</p>  <p>Don’t wait to register – last years event we got real close to having to close off registration.&#160; That was before anyone believed a good event could happen in Denver!&#160; If you think you can make it get registered soon to save your spot.&#160; You can register on the event site <a href="https://www.clicktoattend.com/invitation.aspx?code=142153">here</a>. It’s a free event so you can’t complain about cost even if you have to by a cheap flight to Colorado!&#160; More details can be found on <a title="http://www.rmtechtrifecta.com" href="http://www.rmtechtrifecta.com">http://www.rmtechtrifecta.com</a> which will keep being updated as we get closer to the event.</p>  <p>Last years event had over 400 people attend covering over 40 topics.&#160; It also had some other interesting facts (stolen from Julies <a href="http://julieyack.blogs.com/my_weblog/2009/02/rocky-mountain-tech-tri-fecta-by-the-numbers.html">post</a> )</p>  <p>936 slices of pizza eaten</p>  <p>2,550 minutes of technical knowledge shared</p>  <p>4,000 Curious George fruit snack pieces consumed</p>  <p>5,670 oz of soda that was consumed</p>  <p>Oh and my favorite “18 guys named Dave” – maybe this year we can get over 20!</p>  <p>So why are you still here – go <a href="https://www.clicktoattend.com/invitation.aspx?code=142153">register</a>.</p>]]></description><wfw:commentRss>http://blog.davidyack.com/journal/rss-comments-entry-5960862.xml</wfw:commentRss></item><item><title>RIA Services How to Load Only If Authenticated</title><dc:creator>David Yack</dc:creator><pubDate>Sun, 22 Nov 2009 17:01:23 +0000</pubDate><link>http://blog.davidyack.com/journal/2009/11/22/ria-services-how-to-load-only-if-authenticated.html</link><guid isPermaLink="false">154714:1437668:5883729</guid><description><![CDATA[<p>One of the things I ran into in converting to the PDC release of WCF RIA Services is around error handling in the Domain Data Source.&#160; By default the PDC release handles error handling a little different than prior release in a good way.&#160; Previously, if you encountered an error and didn’t explicitly provide error handling it would silently sweep the error under the carpet.&#160; This worked great for demo applications because you could typically not worry about it.&#160; For real applications though this lead to not knowing what was wrong and the user left wondering why nothing was showing.</p>  <p>Now in the PDC release the error will be raised unless you handle it.&#160; This means that if there are times where you expect to encounter an error you need to make accommodations otherwise an unhandled exception will be raised.&#160; A good example of this is if you have marked your Domain Service as requiring authentication by adding the RequiresAuthentication attribute.&#160; This attribute will ensure that nobody accesses your Domain Service that isn’t authenticated.&#160; The result though is now if your application attempts to make a call to the Domain Service before authentication is completed you will get an error.</p>  <p>Where I hit this was I had a couple of Domain Data Source controls in one application that was set to auto load for the main page.&#160; There’s a few different ways to handle this but I wanted to share on that I was exploring to make it easy to handle this type of situation.&#160; The behavior I want is to have the Domain Data Source auto load but only if the user is authenticated.&#160; I could do this by turning off the auto load and manually calling the load once the user is authenticated.&#160; Another option is I could make Domain Data Source a little more smart to handle these by adding a OnlyIfAuthenticated property that would be checked during the loaded event. </p>  <p>I’m able to do this because I have a class SLRIADomainDataSource that inherits from DomainDataSource and allows me a place to put my custom logic that I want to be on every use of the domain data source in my application.&#160; You could also accomplish this same type of thing using behaviors.&#160; Both approaches are viable they just depend on how you enable the feature to work.&#160; One you add a property, the other you add the markup necessary to attach the behavior to the control.&#160; Behaviors require you to know the class exist where the inherited class the property just shows up in the property designer making it easy to enable.&#160; Behaviors are nice because they allow you to add logic to another control that you don’t own or is sealed.</p>  <p>So the following is the class were working with – notice it inherits from DomainDatasource.&#160; Also we have already hooked into the LoadingData event to allow us get control when the control is about to load data.&#160; The LoadingData method is called prior to the query happening so it’s the ideal place if we want to cancel it being performed.&#160; This is also where you would hook in to handle other pre-query type errors related to query composition.</p>  <p>public class SLRIADomainDataSource : DomainDataSource   <br />{    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; public SLRIADomainDataSource()    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.LoadingData += new EventHandler&lt;LoadingDataEventArgs&gt;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; (SLRIADomainDataSource_LoadingData);    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</p>  <p>}</p>  <p>Next, we are going to implement the handler for the LoadingData event.&#160; In this handler we will check OnlyIfAuthenticated to see if we have configured the Domain Data Source to only load if the user is authenticated.&#160; From the WebContextBase class we can access the status of the user to see if they are authenticated yet.&#160; If they aren’t authenticated we simply mark the query canceled in the event arguments.</p>  <p>void SLRIADomainDataSource_LoadingData(object sender, LoadingDataEventArgs e)   <br />{    <br />&#160;&#160;&#160; if (OnlyIfAuthenticated)    <br />&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (!WebContextBase.Current.Authentication.User.Identity.IsAuthenticated)    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; e.Cancel = true;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; }    <br />&#160;&#160;&#160; }    <br />}</p>  <p>In case your wondering WebContextBase used to be RiaContextBase in the prior CTP release of RIA Services and has just been renamed.</p>  <p>So with this additional logic the page developer doesn’t have to worry about special code each time to decide if the query should be started.&#160; You also won’t get un-expected errors if the domain data source tries to call the service when the user is not authenticated.&#160;&#160; The error handling in the new release of RIA Services is a welcome change to prevent silent errors from happening.&#160; It is also a little more consistent and intuitive in how the errors are presented so you don’t have to hook into as many places. </p>]]></description><wfw:commentRss>http://blog.davidyack.com/journal/rss-comments-entry-5883729.xml</wfw:commentRss></item><item><title>New Silverlight 4 Book Content</title><dc:creator>David Yack</dc:creator><pubDate>Wed, 18 Nov 2009 20:22:05 +0000</pubDate><link>http://blog.davidyack.com/journal/2009/11/18/new-silverlight-4-book-content.html</link><guid isPermaLink="false">154714:1437668:5844105</guid><description><![CDATA[<p>Today we are happy to be able to announce the availability of some Silverlight 4 book content. For existing Silverlight developers looking to get up to speed quickly with the features we are releasing the Silverlight 4 Overview. This is a little over 50 pages of content covering the new Silverlight 4 features.&#160; For the rest of this week using code <strong>SL4DaveBlog</strong> at checkout you can get the new Silverlight 4 content for only $5 almost half off the normal price.&#160; More details on the book site <a href="http://www.silverlightjumpstart.com">http://www.silverlightjumpstart.com</a></p>  <p>For developers that are new to Silverlight but are comfortable with .NET we are releasing a preview of Silverlight 4 Jumpstart. Silverlight 4 Jumpstart content builds on the success of the Silverlight 3 Jumpstart book to offer content focused at the business .NET developer.</p>  <p>Both of these offerings are available today and will continue to evolve with the Silverlight 4 release. These are delivered in an electronic format (PDF) and will continue to be updated with more current releases of Silverlight 4.</p>  <p>&#160;</p>  <p><b><i>The following is an excerpt from the Silverlight 4 Overview chapter that is available as part of Silverlight 4 Jumpstart Preview book or as a standalone chapter from SilverlightJumpstart.com. The full overview chapter covers all the major new features of Silverlight 4 to help you get up to speed quickly. </i></b></p>  <p>Microsoft has fast tracked Silverlight to be a strong competitor in the global RIA space and squarely positioned itself against competitors like Adobe, Google and Yahoo for production of the finest RIA toolset. The initial battleground was video, but we are now seeing Silverlight has strong potential for building business applications as well. We have tried through the previous chapters to streamline your learning of the current version of Silverlight by focusing on the key areas a business developer needs to know. Now it’s time to talk about the future and what the road ahead looks like for Silverlight.</p>  <p>It had only been about nine months since Silverlight 2 was released in October 2008 that Silverlight 3 hit the street in July 2009. Then, just four months after the release of Silverlight 3 Microsoft released Silverlight 4 Beta at its Professional Developer Conference in November 2009. Each of these releases build on the prior one to add new features while at the same time keeping compatibility to support this fast pace of innovation.</p>  <p>If I had to pick a single theme for the main items that are part of Silverlight 4 I would have to choose “You Asked, Microsoft built it”. I say that because many of the items like Printing or Web Camera/Microphone support for example were some of the highest user prioritized features. You can check that out for yourself at Silverlight.UserVoice.com and while you’re there add or vote on a couple of your requests.</p>  <p>Silverlight 4 is also a major deal because it’s the first release of Silverlight to support .NET 4 CLR (Common Language Runtime). This gives developers access to the latest runtime features that are added to CLR4 including things like dynamic object support.</p>  <p>In addition to the core Silverlight 4 Beta, Microsoft also released corresponding updates to the other tools and products used with Silverlight. The tools for working with Silverlight from within Visual Studio were updated to support the Silverlight 4 Beta. This includes increased designer support to make it easier to develop Silverlight applications without having to leave Visual Studio for a separate tool. A new version of the Silverlight Toolkit was also released that goes along with the Silverlight 4 update. An update was also released for .NET RIA Services which has now been renamed as WCF RIA Services to reflect the fact that it now rides on top of WCF. This is an evolution of the prior .NET RIA Services releases and positions it to leverage WCF as a foundation to build on going forward. In addition to the WCF change a number of additional features such as improved inheritance support were added to WCF RIA Services in this release. Finally, a preview release of Blend for .NET 4 was released to allow it to work with Silverlight 4.    <br />In the rest of this chapter we are going to preview some of these features that you will see in the Silverlight 4 Beta release. </p> <b></b>  <h4>Web Camera / Microphone Support</h4>  <p>Silverlight 4 now allows developers to access to the raw audio and video streams on the local machine from applications running both in and out of the browser. Using these capabilities developers can write applications including capture and collaboration using audio and video. This is built-in to the core runtime and no other special downloads are required on each machine. When the audio or video is accessed for the first time by the application the user will be prompted to approve the request. This ensures that audio and video is never accessed without the user’s knowledge preventing applications that capture silently in the background. The following is an example of the prompt the user sees when the application requests access to the devices.</p>  <p><a href="http://blog.davidyack.com/resource/WindowsLiveWriter-MixingSilverlight4withDynamicsCRM_BB26-?fileId=4802912"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="VideoAudoPrompt" border="0" alt="VideoAudoPrompt" src="http://blog.davidyack.com/resource/WindowsLiveWriter-MixingSilverlight4withDynamicsCRM_BB26-?fileId=4802914" width="415" height="158" /></a> </p>  <p>You will notice in the above image the site name is displayed. This is another safeguard to ensure the user knows which site is requesting access to the devices. Access is granted to just this application and only for this session of the application. Currently there is no option to persist the user’s approval to avoid re-prompting each time the application is run. Additionally, it’s all or nothing; you don’t get to choose video or microphone. It’s a combined approval.</p>  <p>Users with multiple devices can select the devices they want to be the default devices using the properties on the Silverlight plug-in. This can be selected by right-clicking on a Silverlight application and going to the Webcam/Mic tab.</p>  <p>The following is an example of what you will see on that tab.<a href="http://blog.davidyack.com/resource/WindowsLiveWriter-MixingSilverlight4withDynamicsCRM_BB26-?fileId=4802915"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="choosedefaultmic" border="0" alt="choosedefaultmic" src="http://blog.davidyack.com/resource/WindowsLiveWriter-MixingSilverlight4withDynamicsCRM_BB26-?fileId=4802916" width="447" height="159" /></a> </p>  <p>Developers can get access to the chosen devices using the <b>CaptureDeviceConfiguration</b> class. Using this class you can call the <b>GetDefaultAudioCaptureDevice</b> or <b>GetDefaultVideoCaptureDevice</b> methods to retrieve the users selected defaults. The class also has <b>GetAvailableAudioCaptureDevices</b> and <b>GetAvailableVideoCaptureDevices</b> methods that allow you to enumerate the available devices if you want more control of choosing a device besides the default.</p>  <p>Prior to using the devices you must request access to the device by calling the <b>RequestDeviceAccess() </b>method from the <b>CaptureDeviceConfiguration</b> class. When this method is called it is responsible for showing the user approval dialog we saw earlier. This method must be called from a user initiated event handler like the event handler for a button click event. If you call it at other times it will either not do anything or produce an error. Using the <b>AllowedDeviceAccess</b> property you can query if access has already been granted to the device.</p>  <p>The quickest way to get started using the video is to attach the capture from the device to a <b>VideoBrush</b> and then use the brush to paint the background of a border. The following XAML sets up the button to trigger the capture and a border that we will paint with a video brush.     <table border="1" cellspacing="0" cellpadding="0"><tbody>       <tr>         <td valign="top" width="686">           <p>&lt;StackPanel&gt;</p>            <p>&lt;Button x:Name=&quot;btnStartvideo&quot; Click=&quot;btnStartvideo_Click&quot; </p>            <p>Content=&quot;Start Video&quot;&gt;&lt;/Button&gt;</p>            <p>&lt;Border x:Name=&quot;borderVideo&quot; Height=&quot;200&quot; Width=&quot;200&quot;&gt;&lt;/Border&gt;</p>            <p>&lt;/StackPanel&gt;</p>         </td>       </tr>     </tbody></table> </p>  <p>Next, the following private method <b>TurnOnVideo </b>method is called from the handler for the click event on the button. This satisfies the requirement to be user initiated.     <table border="1" cellspacing="0" cellpadding="0"><tbody>       <tr>         <td valign="top" width="686">           <p>private void TurnOnVideo()</p>            <p>{</p>            <p>VideoCaptureDevice videoCap = </p>            <p>CaptureDeviceConfiguration.GetDefaultVideoCaptureDevice();</p>            <p>AudioCaptureDevice audioCap = </p>            <p>CaptureDeviceConfiguration.GetDefaultAudioCaptureDevice();</p>            <p>CaptureSource capsource = new CaptureSource();</p>            <p>capsource.AudioCaptureDevice = audioCap;</p>            <p>capsource.VideoCaptureDevice = videoCap;</p>            <p>if (CaptureDeviceConfiguration.AllowedDeviceAccess </p>            <p>|| CaptureDeviceConfiguration.RequestDeviceAccess())</p>            <p>{</p>            <p>capsource.Start();</p>            <p>VideoBrush vidBrush = new VideoBrush();</p>            <p>vidBrush.SetSource(capsource);</p>            <p>borderVideo.Background = vidBrush;</p>            <p>}</p>            <p>}</p>         </td>       </tr>     </tbody></table> </p>  <p>As you can see in the code above, default audio and video devices are retrieved and assigned to a <b>CaptureSource</b>. Access to the devices is then checked and requested if not already approved.</p>  <p>If access is granted the <b>Start()</b> method on the <b>CaptureSource</b> is invoked to begin capturing audio and video. Finally, the <b>VideoBrush</b> source is set to the <b>CaptureSource</b> instance and the background on the border is set to the <b>VideoBrush</b>.</p>  <p>Overtime we will probably see some very interesting applications of the audio and video support. One example that we put together was using it with Microsoft Dynamics CRM. In this example application a membership application was simulated that associated members with pictures and stored the pictures in a database. Think of a place similar to Costco, Sam’s Club or your local gym that snaps your photo for their records.</p>  <p>In the following image you can see how a tab has been added to the Contact form using the CRM customization capabilities. </p>  <p>&#160;</p>  <p><a href="http://blog.davidyack.com/resource/WindowsLiveWriter-MixingSilverlight4withDynamicsCRM_BB26-?fileId=4802917"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="CRMCap1" border="0" alt="CRMCap1" src="http://blog.davidyack.com/resource/WindowsLiveWriter-MixingSilverlight4withDynamicsCRM_BB26-?fileId=4802918" width="460" height="196" /></a> </p>  <p>A Silverlight 4 application is then hosted inside that tab that will provide the user experience for capturing the images. When the Start Camera button is clicked the user will be prompted to approve the access and the video feed will begin as you can see below.</p>  <p><a href="http://blog.davidyack.com/resource/WindowsLiveWriter-MixingSilverlight4withDynamicsCRM_BB26-?fileId=4802920"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="crmcap3" border="0" alt="crmcap3" src="http://blog.davidyack.com/resource/WindowsLiveWriter-MixingSilverlight4withDynamicsCRM_BB26-?fileId=4802921" width="441" height="241" /></a> </p>  <p>The video feed will keep showing the live image updated from the web cam until stopped. The Capture button on the above application allows the user to capture one of the image frames from the capture source. The <b>AsyncCaptureImage(..)</b> method on the <b>CaptureSource</b> class allows you to request that a frame be captured and your callback invoked. The callback is then invoked and passed a <b>WriteableBitmap</b> representing the captured frame.</p>  <p><a href="http://blog.davidyack.com/resource/WindowsLiveWriter-MixingSilverlight4withDynamicsCRM_BB26-?fileId=4802922"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="crmcap4" border="0" alt="crmcap4" src="http://blog.davidyack.com/resource/WindowsLiveWriter-MixingSilverlight4withDynamicsCRM_BB26-?fileId=4802923" width="457" height="247" /></a> </p>  <p>This image can then be saved back to the Dynamics CRM server and associated with the record being viewed.</p>  <p>In the above example we looked at how you could use the video capabilities to capture a static image. More advanced applications are also possible for things like collaboration by showing the real time audio and video feed of multiple users.</p>  <p><b><i>You have been reading about one of the many new and exciting features of Silverlight 4 that are covered in the complete overview chapter. Visit <a href="http://www.silverlightjumpstart.com">SilverlightJumpstart.com</a> today to access the full chapter. </i></b></p>]]></description><wfw:commentRss>http://blog.davidyack.com/journal/rss-comments-entry-5844105.xml</wfw:commentRss></item></channel></rss>