<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>.NET</title>
        <link>http://mckennatribe.com/category/3.aspx</link>
        <description>.NET</description>
        <language>en-GB</language>
        <copyright>Nick McKenna</copyright>
        <managingEditor>nick.mckenna@mckennaconsultants.com</managingEditor>
        <generator>Subtext Version 1.9.5.177</generator>
        <item>
            <title>Reporting Services 2008 And AVG Link Scanner</title>
            <link>http://mckennatribe.com/archive/2009/12/31/reporting-services-2008-and-avg-link-scanner.aspx</link>
            <description>&lt;p&gt;I have been tearing my hair out for weeks on a Report Services 2008 problem. The symptoms are that requests to the web service that are made programmatically never seem to get to the RS ReportServer/ReportService2005.asmx web service never seem to get there and the ReportViewer component hangs try to get the reports.&lt;/p&gt;
&lt;p&gt;Interestingly, Report Manager works fine which makes me think it doesn't use the web service!&lt;/p&gt;
&lt;p&gt;I have tried all sorts of things including turning off the firewall, reinstalling SQL 2008 etc etc. I was astonished to find out that disabling the LinkScanner in AVG was the final solution to the problem... Wht did AVG not tell me it was blocking these requests?????&lt;/p&gt;
&lt;p&gt;Bizarre, but problem solved now!&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://mckennatribe.com/aggbug/59.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Nick McKenna</dc:creator>
            <guid>http://mckennatribe.com/archive/2009/12/31/reporting-services-2008-and-avg-link-scanner.aspx</guid>
            <pubDate>Thu, 31 Dec 2009 14:52:37 GMT</pubDate>
            <wfw:comment>http://mckennatribe.com/comments/59.aspx</wfw:comment>
            <comments>http://mckennatribe.com/archive/2009/12/31/reporting-services-2008-and-avg-link-scanner.aspx#feedback</comments>
            <wfw:commentRss>http://mckennatribe.com/comments/commentRss/59.aspx</wfw:commentRss>
            <trackback:ping>http://mckennatribe.com/services/trackbacks/59.aspx</trackback:ping>
        </item>
        <item>
            <title>Microsoft Sync Framework v2</title>
            <link>http://mckennatribe.com/archive/2009/11/02/microsoft-sync-framework-v2.aspx</link>
            <description>&lt;p&gt;Our work with the MS Sync Framework is going very well and the v2 release could not have been better timed! We are syncing data from a web-based application (which runs under SQL Server 2008) to a local SQL Server Compact Edition (3.5 sp1) cache. It has taken us a couple of weeks to get up to speed with everything. There are a lot of steps involved in our scenario:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Create a Sync Framework project&lt;/li&gt;
    &lt;li&gt;Get the sync working between databases on a local machine&lt;/li&gt;
    &lt;li&gt;Switch to using a WCF web service call for the sync&lt;/li&gt;
    &lt;li&gt;Hack away at the original db schema until it works (primary key issues, clustered indexes etc)&lt;/li&gt;
    &lt;li&gt;Choose the right security mode for the WCF call (nightmare)&lt;/li&gt;
    &lt;li&gt;Create a new web service on the test server for the WCF call&lt;/li&gt;
    &lt;li&gt;Create a Windows app to Sync to&lt;/li&gt;
    &lt;li&gt;etc etc etc&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One of the biggest challenges is retrofitting the Sync Framework on to an existing database schema. My general advice (having been through the pain) would be:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;USE GUIDS FOR ALL YOUR PRIMARY KEYS!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We did not do this in our production database (we didn't know about the need to Sync way back then) and it adds some interesting technical issues! We use Integers with Identity set for primary keys. I should also mention that are attempting bi-directional synchronisation... The main problem is that after the initial sync, the seeds of identity fields are all set to 1. This means that all of the clients and the server will insert records using the same primary key values! The Sync framework cannot handle this, so we need to make a manual intervention.&lt;/p&gt;
&lt;p&gt;The solution is to seed the server at a high value and the clients at lower values. We are using 32 bit integers for PKs, so we simply allocate a client id to each client (we actually allocate a low number and shift it left 24 bits to give the new seed). We tries some other schemes such as having the server start at 1, but we had problems with syncing.&lt;/p&gt;
&lt;p&gt;The other problem is that the documentation for the Sync Framework is not great at the moment. We spent a lot of time working some basic stuff out for ourselves. If I ever get some free time I will do a tutorial based on our product going from nothing to have a complete and working Sync Framework application... It might happen...&lt;/p&gt;
&lt;p&gt;Overall, working with the Sync framework is good, but you need to be prepared to get technical and work through problems yourself as the documentation is still a little light!&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://mckennatribe.com/aggbug/55.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Nick McKenna</dc:creator>
            <guid>http://mckennatribe.com/archive/2009/11/02/microsoft-sync-framework-v2.aspx</guid>
            <pubDate>Mon, 02 Nov 2009 08:59:30 GMT</pubDate>
            <wfw:comment>http://mckennatribe.com/comments/55.aspx</wfw:comment>
            <comments>http://mckennatribe.com/archive/2009/11/02/microsoft-sync-framework-v2.aspx#feedback</comments>
            <wfw:commentRss>http://mckennatribe.com/comments/commentRss/55.aspx</wfw:commentRss>
            <trackback:ping>http://mckennatribe.com/services/trackbacks/55.aspx</trackback:ping>
        </item>
        <item>
            <title>Method is only supported if the user name parameter matches the user name in the current windows identity.</title>
            <link>http://mckennatribe.com/archive/2009/07/21/method-is-only-supported-if-the-user-name-parameter-matches.aspx</link>
            <description>&lt;p&gt;I've been doing an Intranet application with ASP.Net 3.5, WCF and Silverlight 3 for the last few weeks. It seems that getting these things to play together is not so easy at the moment!&lt;/p&gt;
&lt;p&gt;I am using Windows Integrated Authentication for the whole shooting match since it is on an Intranet. I thought that this would make it easy!&lt;/p&gt;
&lt;p&gt;The functionality of the Silverlight application changes depending on the roles that the user has. First off, there don't appear to be any user querying facilities in Silverlight (e.g. like the Role Manager method Roles.IsUserInRole(username)). The general consensus seems to be that you should call a WCF service to get this kind of functionality. That is no problem as my Silverlight app already uses WCF!&lt;/p&gt;
&lt;p&gt;I have impersonation configured in the web.config for the WCF services and the ASP.Net web site. I can call the services and see that WindowsIdentity.GetCurrent().Name is set to the name of the user accessing the Silverlight app. Great! I can also use the WCF Security Context and see that the current user is the Windows user using the Silverlight app. Happy days!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;HOWEVER&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Whenever I use a Role Manager method such as Roles.IsUserInRole(username) I get the error:&lt;/p&gt;
&lt;p&gt;&lt;font face=""&gt;&lt;strong&gt;&lt;em&gt;"Method is only supported if the user name parameter matches the user name in the current windows identity."&lt;/em&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;I have scoured the Internet looking for a way to get this to work, but alas, I cannot find one. It appears that Role Manager does not work in the ASP.Net, Silverlight and WCF scenario. My solution is this:&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;
&lt;p&gt;///&lt;/p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;&amp;lt;summary&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;
&lt;p&gt; &lt;/p&gt;
&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;///&lt;/font&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt; Find information about a user's roles.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;
&lt;p&gt; &lt;/p&gt;
&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;///&lt;/font&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;&amp;lt;/summary&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;
&lt;p&gt; &lt;/p&gt;
&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;///&lt;/font&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;&amp;lt;returns&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt;The list of roles for the specified user.&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;&amp;lt;/returns&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;
&lt;p&gt;[&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;font color="#2b91af" size="2"&gt;&lt;font color="#2b91af" size="2"&gt;WindowsIdentity&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; id = &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;&lt;font color="#2b91af" size="2"&gt;WindowsIdentity&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;.GetCurrent();&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;foreach&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; (&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;var&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; group &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;in&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; id.Groups)&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;&lt;font color="#2b91af" size="2"&gt;  NTAccount&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; account = (&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;&lt;font color="#2b91af" size="2"&gt;NTAccount&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;) group.Translate(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;typeof&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; (&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;&lt;font color="#2b91af" size="2"&gt;NTAccount&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;));&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;  string&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; name = account.Value;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;return&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; userRoles;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;  userRoles.Add(name);&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Obviously, I'm stuck with Windows Authentication now, but that doesn't really matter to me!&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;&lt;font color="#2b91af" size="2"&gt;OperationBehavior&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;(Impersonation = &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;&lt;font color="#2b91af" size="2"&gt;ImpersonationOption&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;.Required)]&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;&lt;font color="#2b91af" size="2"&gt;IList&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&amp;gt; GetRolesForCurrentUser()&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;&lt;font color="#2b91af" size="2"&gt;List&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&amp;gt; userRoles = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;&lt;font color="#2b91af" size="2"&gt;List&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&amp;gt;();&lt;/font&gt;&lt;img src="http://mckennatribe.com/aggbug/53.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Nick McKenna</dc:creator>
            <guid>http://mckennatribe.com/archive/2009/07/21/method-is-only-supported-if-the-user-name-parameter-matches.aspx</guid>
            <pubDate>Tue, 21 Jul 2009 19:07:51 GMT</pubDate>
            <wfw:comment>http://mckennatribe.com/comments/53.aspx</wfw:comment>
            <comments>http://mckennatribe.com/archive/2009/07/21/method-is-only-supported-if-the-user-name-parameter-matches.aspx#feedback</comments>
            <wfw:commentRss>http://mckennatribe.com/comments/commentRss/53.aspx</wfw:commentRss>
            <trackback:ping>http://mckennatribe.com/services/trackbacks/53.aspx</trackback:ping>
        </item>
        <item>
            <title>Silverlight 3 minRuntimeVersion</title>
            <link>http://mckennatribe.com/archive/2009/07/14/silverlight-3-minruntimeversion.aspx</link>
            <description>&lt;p&gt;I've been doing a lot of Silverlight lately for a couple of projects. I upgraded them to the new Silverlight  using the Visual Studio upgrade wizard that started automatically. It all works fine other than the minRuntimeVersion attributes on HTML pages that reference Silverlight xap files.&lt;/p&gt;
&lt;p&gt;The problem is that if the Silverlight control was compiled under version 3 and you specify the version 2 runtime in minRuntimeVersion, you get an ugly error and download instruction:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Ugly Error 1" width="800" height="607" src="/images/mckennatribe_com/other/old1.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="Ugly Error 2" width="800" height="607" src="/images/mckennatribe_com/other/old2.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;If you update the minRuntimeVersion, then you get a much more user friendly version:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Pretty Upgrade Message" width="800" height="607" src="/images/mckennatribe_com/other/new1.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;For the record, the old minRuntimeVersion was &lt;font face=""&gt;2.0.31005.0 and t&lt;/font&gt;he new runtime version appears to be &lt;font face=""&gt;3.0.40624.0&lt;/font&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://mckennatribe.com/aggbug/52.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Nick McKenna</dc:creator>
            <guid>http://mckennatribe.com/archive/2009/07/14/silverlight-3-minruntimeversion.aspx</guid>
            <pubDate>Tue, 14 Jul 2009 08:22:42 GMT</pubDate>
            <wfw:comment>http://mckennatribe.com/comments/52.aspx</wfw:comment>
            <comments>http://mckennatribe.com/archive/2009/07/14/silverlight-3-minruntimeversion.aspx#feedback</comments>
            <wfw:commentRss>http://mckennatribe.com/comments/commentRss/52.aspx</wfw:commentRss>
            <trackback:ping>http://mckennatribe.com/services/trackbacks/52.aspx</trackback:ping>
        </item>
        <item>
            <title>VisualSVN</title>
            <link>http://mckennatribe.com/archive/2009/04/30/visualsvn.aspx</link>
            <description>&lt;p&gt;Over the years I have used SourceSafe, CVS, Subversion and some Borland thing I can't remember the name of (I've bloack it out as a traumatic experience). This week I have been working with a new developer and I have been trying to share my Source code with them. Since I've been working on Solo Agile projects recently I have been using SourceSafe 2005. I have always find it to be fast and stable and I have never had any problems with it.&lt;/p&gt;
&lt;p&gt;The challenge was then to get the SourceSafe 2005 database visible over the Internet. Out first attempt was to use SourceOffSite from SourceGear. We quickly excluded this option as the &lt;a target="_blank" href="http://www.sourcegear.com/sos/sysreq.html"&gt;technical requirements&lt;/a&gt; show that it is not compatible with Windows Server 2008 64 bit edition.&lt;/p&gt;
&lt;p&gt;We also tried to get a VPN working on Windows Server 2008 using SSTP, but failed. It may have to do with the mobile network we were using to try to connect. We struggled to get this to work and we could not get a sensible error message out of either server or client!&lt;/p&gt;
&lt;p&gt;So we moved on to the SourceSafe 2005 HTTP extension. We spent a couple of hours trying to get this to work and ultimately failed. For no explicable reason we could not get the SourceSafe web service to work. By this point we were tearing our hair out!&lt;/p&gt;
&lt;p&gt;So we turned to our third option which was migrating the source code to a different system. Jon suggested that we look at &lt;a target="_blank" href="http://www.visualsvn.com/"&gt;VisualSVN&lt;/a&gt;. I have avoided Subversion recently as I have primarily been an ASP.Net developer. The last time I used Subversion, it was not possible to connect the HTTP interface via IIS. However, VisualSVN contains client and server components which address this. The server portion contains an HTTP server which solves my problem.&lt;/p&gt;
&lt;p&gt;It took about ten minutes to set up and install the server software and Visual Studio client software. It took another 10 minutes to clean up the SourceSafe source code repository and get it into Subversion. The whole thing worked over the Internet via SSL with no drama at all!&lt;/p&gt;
&lt;p&gt;So, my recommendation for you guys out there in a similar situation is to take a good look at Visual SVN! &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://mckennatribe.com/aggbug/46.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Nick McKenna</dc:creator>
            <guid>http://mckennatribe.com/archive/2009/04/30/visualsvn.aspx</guid>
            <pubDate>Thu, 30 Apr 2009 07:47:40 GMT</pubDate>
            <wfw:comment>http://mckennatribe.com/comments/46.aspx</wfw:comment>
            <comments>http://mckennatribe.com/archive/2009/04/30/visualsvn.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://mckennatribe.com/comments/commentRss/46.aspx</wfw:commentRss>
            <trackback:ping>http://mckennatribe.com/services/trackbacks/46.aspx</trackback:ping>
        </item>
        <item>
            <title>More 64 Bit Fun</title>
            <link>http://mckennatribe.com/archive/2009/04/19/more-64-bit-fun.aspx</link>
            <description>&lt;p&gt;One of my ASP.Net apps uses Jet 4.0 to read and write to Excel files (for importing and exporting data to and from the app). After a rebuild on my Windows Vista 64 bit development machine, I had the following error when executing some tests:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine.&lt;/font&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After a few minutes on Google, I found that this error is due to a lack of a 64 bit version of Jet 4! However, this should not be a problem as I can configure my app to build in x86 mode rather than 64 bit mode. A quick rebuild later my tests are all passing! Success! erm... Not quite...&lt;/p&gt;
&lt;p&gt;Under IIS 7 I then got this error trying to access the web app:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;An attempt was made to load a program with an incorrect format.&lt;/font&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Again, Google came to the rescue with some information about running 32 bit web apps under a 64 bit install of IIS! Have a look at the Microsoft article here:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;&lt;a href="http://support.microsoft.com/kb/894435/en-us"&gt;http://support.microsoft.com/kb/894435/en-us&lt;/a&gt;&lt;/font&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The good stuff is about half way down the page under the heading "ASP.NET 2.0, 32-bit version". After entering the two suggested lines at the command prompt my 32 bit web app is now working on my 64 machine. Fantastic!&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://mckennatribe.com/aggbug/45.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Nick McKenna</dc:creator>
            <guid>http://mckennatribe.com/archive/2009/04/19/more-64-bit-fun.aspx</guid>
            <pubDate>Sun, 19 Apr 2009 16:54:37 GMT</pubDate>
            <wfw:comment>http://mckennatribe.com/comments/45.aspx</wfw:comment>
            <comments>http://mckennatribe.com/archive/2009/04/19/more-64-bit-fun.aspx#feedback</comments>
            <wfw:commentRss>http://mckennatribe.com/comments/commentRss/45.aspx</wfw:commentRss>
            <trackback:ping>http://mckennatribe.com/services/trackbacks/45.aspx</trackback:ping>
        </item>
        <item>
            <title>Test Driven .Net, MbUnit And Vista 64</title>
            <link>http://mckennatribe.com/archive/2009/04/19/test-driven-.net-mbunit-and-vista-64.aspx</link>
            <description>&lt;p&gt;Due to a catastrophic error on my PC, I recently reinstalled Windows and went for Vista 64. It seems a little more responsive than the 32 bit version, but that could be just because it has less garbage on it than before...&lt;/p&gt;
&lt;p&gt;After resintalling all my dev stuff (VS 2008, SQL 2008, TestDriven.Net, MbUnit, Telerik controls etc) I found that my MbUnit tests would not run via TestDriven.Net. I found the solution (via Google) within a few minutes. If Dave Bouwman had not bothered to blog his solution, I would have spent hours smacking my head against the wall, so thank you Dave!&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;em&gt;------ Test started: Assembly: TileServer.Core.Tests.dll ------ &lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;em&gt;The target type doesn't contain tests from a known test framework or a 'Main' method.&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;/font&gt;If you see this error after installing Vista64, it is because if an error installing some registry keys. Check out Dave's blog for the solution:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="http://blog.davebouwman.net/2008/08/05/TroubleRunningMbUnitTestsWithTestDrivennetOnVista64.aspx"&gt;Trouble Running MbUnit tests with TestDriven.net on Vista 64&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://mckennatribe.com/aggbug/44.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Nick McKenna</dc:creator>
            <guid>http://mckennatribe.com/archive/2009/04/19/test-driven-.net-mbunit-and-vista-64.aspx</guid>
            <pubDate>Sun, 19 Apr 2009 16:06:26 GMT</pubDate>
            <wfw:comment>http://mckennatribe.com/comments/44.aspx</wfw:comment>
            <comments>http://mckennatribe.com/archive/2009/04/19/test-driven-.net-mbunit-and-vista-64.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://mckennatribe.com/comments/commentRss/44.aspx</wfw:commentRss>
            <trackback:ping>http://mckennatribe.com/services/trackbacks/44.aspx</trackback:ping>
        </item>
        <item>
            <title>Alt.Net In The North April 2009</title>
            <link>http://mckennatribe.com/archive/2009/04/18/alt.net-in-the-north-april-2009.aspx</link>
            <description>I've just got back from the fantastic Alt.Net conference which was held at the offices of Black Marble in Bradford, West Yorkshire. The entire day was very well organised by Richard Fennell. There were lots of different topics on the agenda including:&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;Microsoft MVC&lt;/li&gt;
    &lt;li&gt;Silverlight&lt;/li&gt;
    &lt;li&gt;Agile Project Mangement&lt;/li&gt;
    &lt;li&gt;Inversion Of Control&lt;/li&gt;
    &lt;li&gt;Domain Specific Languages and Fluent Interfaces&lt;/li&gt;
    &lt;li&gt;What Happened To Design?&lt;/li&gt;
    &lt;li&gt;Which ORM?&lt;/li&gt;
    &lt;li&gt;Azure and The Cloud&lt;/li&gt;
&lt;/ul&gt;
I started the day looking for inspiration and I certainly found it! Whenever I attend conferences I am not looking for detailed information on a topic, I am predominantly looking for new ideas and directions I had not thought of.&lt;br /&gt;
&lt;br /&gt;
The things I learned about that I am going to tke further are:&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;Azure&lt;/li&gt;
    &lt;li&gt;Inversion Of Control&lt;/li&gt;
    &lt;li&gt;Domain Specific Languages and Fluent Interfaces&lt;/li&gt;
    &lt;li&gt;Microsoft MVC&lt;/li&gt;
&lt;/ul&gt;
The discussions were all lively, but courteous and respectful, even when the contentious issue of Which ORM was discussed!&lt;br /&gt;
&lt;br /&gt;
Anyone wishing to follow up on any of the issues raised at Alt.Net are welcome to contact me or come along to &lt;a href="http://www.agileyorkshire.org/"&gt;Agile Yorkshire&lt;/a&gt; and find out more!
&lt;img src="http://mckennatribe.com/aggbug/43.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Nick McKenna</dc:creator>
            <guid>http://mckennatribe.com/archive/2009/04/18/alt.net-in-the-north-april-2009.aspx</guid>
            <pubDate>Sat, 18 Apr 2009 19:48:49 GMT</pubDate>
            <wfw:comment>http://mckennatribe.com/comments/43.aspx</wfw:comment>
            <comments>http://mckennatribe.com/archive/2009/04/18/alt.net-in-the-north-april-2009.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://mckennatribe.com/comments/commentRss/43.aspx</wfw:commentRss>
            <trackback:ping>http://mckennatribe.com/services/trackbacks/43.aspx</trackback:ping>
        </item>
        <item>
            <title>Open Training</title>
            <link>http://mckennatribe.com/archive/2008/06/19/open-training.aspx</link>
            <description>I had an idea a few days ago that I have been mulling over. I was talking to some colleagues today about it and I got some positive feedback. The idea is to provide free, open, technical training to anyone who wants it.&lt;br /&gt;
&lt;br /&gt;
The inspirations for this idea are the Open Source community and BSAC scuba diving. It struck me that as techies we contribute time to open source projects that we believe in. BSAC provide free scuba diving training to anyone who wants it. I think it would be a good idea to put those two ideas together.&lt;br /&gt;
&lt;br /&gt;
The plan would be to create an organisation that ran free technical training sessions with volunteer trainers. The mission statement would be something like "To ensure that the UK IT workforce becomes and remains the world's most skilled IT workforce".&lt;br /&gt;
&lt;br /&gt;
The organisation would organise and manage all kinds of training events from short half day sessions to week-long marathons which were staffed by volunteers. Attendees on the courses would be expected to contribute by teaching at some point in the future. We could consider some sort of training credit scheme, but I would prefer to keep things less constrained to begin with. People completing courses successfully would get certified by the organisation. There are other ways in which people could contribute too. We would need to co-ordinate events and run a web site with a calendar on it, for example.&lt;br /&gt;
&lt;br /&gt;
Ideally I would like trainers to make their training materials open for public use, but I don't think we would insist on it.&lt;br /&gt;
&lt;br /&gt;
Any thoughts?&lt;img src="http://mckennatribe.com/aggbug/29.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Nick McKenna</dc:creator>
            <guid>http://mckennatribe.com/archive/2008/06/19/open-training.aspx</guid>
            <pubDate>Thu, 19 Jun 2008 16:14:24 GMT</pubDate>
            <wfw:comment>http://mckennatribe.com/comments/29.aspx</wfw:comment>
            <comments>http://mckennatribe.com/archive/2008/06/19/open-training.aspx#feedback</comments>
            <wfw:commentRss>http://mckennatribe.com/comments/commentRss/29.aspx</wfw:commentRss>
            <trackback:ping>http://mckennatribe.com/services/trackbacks/29.aspx</trackback:ping>
        </item>
        <item>
            <title>Fun With NHibernate</title>
            <link>http://mckennatribe.com/archive/2008/06/01/fun-with-nhibernate.aspx</link>
            <description>I have had a maddening time this morning with NHibernate. I have a set of tables like this:&lt;br /&gt;
&lt;br /&gt;
aspnet_users&lt;br /&gt;
Profile&lt;br /&gt;
aspnet_membership&lt;br /&gt;
Club&lt;br /&gt;
&lt;br /&gt;
The scenario is that a user has a membership record and a profile. A profile specifies the club that the user belongs to. The club has an instructor (essentially another user).&lt;br /&gt;
&lt;br /&gt;
I am presenting this information on screen in an ASP.Net application in a grid with these columns:&lt;br /&gt;
&lt;br /&gt;
  Username, Surname, First Name, Initials, Club Name, Instructor Name, Email Address, Is Active&lt;br /&gt;
&lt;br /&gt;
The user can sort ascending or descending by each of these fields.&lt;br /&gt;
&lt;br /&gt;
A user does not have to have a profile with a valid club, so to get all the users listed, outer joins are required. I am using NHibernate and an HQL query to retrieve the data. All goes well until the user sorts by Club name. At this point, the records with no Club vanish from the grid...&lt;br /&gt;
&lt;br /&gt;
A bit of digging (and SQL profiling) reveals that when an HQL query sorts by a column it has a bizarre WHERE clause that effectively eliminates any records that have null values. It took a while to work these out as the SQL generated by NHibernate is somewhat arcane.&lt;br /&gt;
&lt;br /&gt;
I tried a couple of solutions relating to inserting a dummy record for "No Club", but this had its own share of issues. Eventually I hit upon the idea of creating a SQL Server View for the basic query with the outer joins. NHibernate seems quite happy to accept a View as a Table. I then let NHibernate do the relevant searching, sorting and row retrieval.&lt;br /&gt;
&lt;br /&gt;
Hey Presto! The whole thing works within 10 minutes! All rows are displayed regardless of sort order and whether or not they are missing related records from a left outer join.&lt;br /&gt;
&lt;br /&gt;
NHibernate is hard work. I hope that the full SP1 is out for .Net 3.5 soon so I can try Entities instead. I am resisting downloading the current Beta, but it starts to look more tempting the more I struggle with NHibernate...&lt;img src="http://mckennatribe.com/aggbug/22.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Nick McKenna</dc:creator>
            <guid>http://mckennatribe.com/archive/2008/06/01/fun-with-nhibernate.aspx</guid>
            <pubDate>Sun, 01 Jun 2008 13:24:28 GMT</pubDate>
            <wfw:comment>http://mckennatribe.com/comments/22.aspx</wfw:comment>
            <comments>http://mckennatribe.com/archive/2008/06/01/fun-with-nhibernate.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://mckennatribe.com/comments/commentRss/22.aspx</wfw:commentRss>
            <trackback:ping>http://mckennatribe.com/services/trackbacks/22.aspx</trackback:ping>
        </item>
    </channel>
</rss>