<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>Bart Lannoeye - Blog</title><link>http://www.bartlannoeye.be:80/blog</link><description>Bart Lannoeye - Blog</description><item><title>We'll be speaking at the Belgian Community Day 2012</title><link>http://www.bartlannoeye.be:80/blog/we-ll-be-speaking-at-the-belgian-community-day-2012</link><description>&lt;p&gt;This morning the full calendar for the Belgian &lt;a target="_blank" href="http://www.communityday.be/"&gt;Community Day 2012&lt;/a&gt; has been released. It will take place on June 21st 2012 in Mechelen and is an event organized by 17 Belgian user groups!&lt;/p&gt;
&lt;p&gt;Together with &lt;a target="_blank" href="http://depblog.weblogs.us/"&gt;Glenn&lt;/a&gt;, I'll be kicking of the Windows 8 track demonstrating how to build an end-to-end application on Windows 8. Keep an eye on our blogs and twitter for more teasers and we hope to see you all there.&lt;/p&gt;</description><pubDate>Mon, 07 May 2012 11:42:10 GMT</pubDate><guid isPermaLink="true">http://www.bartlannoeye.be:80/blog/we-ll-be-speaking-at-the-belgian-community-day-2012</guid></item><item><title>First Belgian Windows Phone User Group session</title><link>http://www.bartlannoeye.be:80/blog/first-belgian-windows-phone-user-group-session</link><description>&lt;p&gt;Yesterday we kicked off the Belgian &lt;a target="_blank" href="http://www.wiphug.be"&gt;Windows Phone User Group (WiPhug)&lt;/a&gt; with a first event called 'Building a Windows Phone application from Z to A'. We started with a short introduction of the team behind WiPhug, our intentions for the community and of course the session itself, given by &lt;a target="_blank" href="http://modul8com.wordpress.com/"&gt;Michael&lt;/a&gt;, &lt;a target="_blank" href="http://depblog.weblogs.us/"&gt;Glenn&lt;/a&gt; and myself.&lt;/p&gt;
&lt;p&gt;With a shared crowd of both Windows Phone developers, users and novices we opted to take a somewhat different approach by starting with the final result, and reversing back to how we did build the WiPhug app and what we tools we did use:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MVVMLight&lt;/li&gt;
&lt;li&gt;Cimbalino&lt;/li&gt;
&lt;li&gt;AgFx&lt;/li&gt;
&lt;li&gt;Mtiks&lt;/li&gt;
&lt;li&gt;MS SQL Server CE&lt;/li&gt;
&lt;li&gt;Bing Maps / JeffWilcox.Maps&lt;/li&gt;
&lt;li&gt;Hubtile&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With a head count of approx. 45 listeners and all the great feedback we got, we can call this a great start for WiPhug. Future sessions will be announced on our site and through the WP7 app.&lt;/p&gt;
&lt;p&gt;Slides are available &lt;a target="_blank" href="http://www.slideshare.net/bartlannoeye/wi-phug-windows-phone-development-from-z-to-a"&gt;here&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 27 Apr 2012 16:15:00 GMT</pubDate><guid isPermaLink="true">http://www.bartlannoeye.be:80/blog/first-belgian-windows-phone-user-group-session</guid></item><item><title>Combining ResourceDictionary with MVVM Light or localization files</title><link>http://www.bartlannoeye.be:80/blog/combining-resourcedictionary-with-mvvm-light-or-localization-files</link><description>&lt;p&gt;I have several Windows Phone 7 apps up and running with both MVVM Light and localized resources without a problem. When I decided to take it a step further and try to add my custom ResourceDictionary reference in the App.xaml file, things blew up.&lt;/p&gt;
&lt;pre class="brush: xml;"&gt;&amp;lt;Application.Resources&amp;gt;
    &amp;lt;!--Global View Model Locator--&amp;gt;
    &amp;lt;vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" /&amp;gt;
    &amp;lt;localization:EvaResources x:Key="LocStrings" /&amp;gt;

    &amp;lt;ResourceDictionary&amp;gt;
        &amp;lt;ResourceDictionary.MergedDictionaries&amp;gt;
            &amp;lt;ResourceDictionary Source="Resources/EvaResourceDictionary.xaml"/&amp;gt;
        &amp;lt;/ResourceDictionary.MergedDictionaries&amp;gt;
    &amp;lt;/ResourceDictionary&amp;gt;
&amp;lt;/Application.Resources&amp;gt;&lt;/pre&gt;
&lt;p&gt;I&amp;rsquo;m getting the following error in Visual Studio 2010: &amp;ldquo;The type 'ResourceDictionary' is inside a ResourceDictionary and does not have a key.&amp;rdquo;, and Expression Blend 4 says: &amp;ldquo;Each dictionary entry must have an associated key.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;To solve it, you have to move both the MVVM Light Locator and localized resources references in their own ResourceDictionary and add this to the MergedDictionaries tag.&lt;/p&gt;
&lt;pre class="brush: xml; highlight: [6,7];"&gt;&amp;lt;Application.Resources&amp;gt;
    &amp;lt;ResourceDictionary&amp;gt;
        &amp;lt;ResourceDictionary.MergedDictionaries&amp;gt;
            &amp;lt;ResourceDictionary Source="Resources/EvaResourceDictionary.xaml"/&amp;gt;
            &amp;lt;ResourceDictionary&amp;gt;
                &amp;lt;vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" /&amp;gt;
                &amp;lt;localization:EvaResources x:Key="LocStrings" /&amp;gt;
            &amp;lt;/ResourceDictionary&amp;gt;
        &amp;lt;/ResourceDictionary.MergedDictionaries&amp;gt;
    &amp;lt;/ResourceDictionary&amp;gt;
&amp;lt;/Application.Resources&amp;gt;
&lt;/pre&gt;</description><pubDate>Sat, 21 Apr 2012 18:07:21 GMT</pubDate><guid isPermaLink="true">http://www.bartlannoeye.be:80/blog/combining-resourcedictionary-with-mvvm-light-or-localization-files</guid></item><item><title>Windows Phone SDK 7.1.1</title><link>http://www.bartlannoeye.be:80/blog/windows-phone-sdk-7.1.1</link><description>&lt;p&gt;Microsoft just released the final version of the &lt;a target="_blank" href="http://www.microsoft.com/download/en/details.aspx?id=29233"&gt;Windows Phone SDK 7.1.1&lt;/a&gt;. This version allows you to develop and test for the new 256 MB phone devices. You can run the 512-MB and 256-MB emulator side by side to compare functionality. Also good news is that this update allows you to develop for Windows Phone under the Windows 8 Customer Preview.&lt;/p&gt;</description><pubDate>Mon, 26 Mar 2012 18:10:05 GMT</pubDate><guid isPermaLink="true">http://www.bartlannoeye.be:80/blog/windows-phone-sdk-7.1.1</guid></item><item><title>The future of Windows Phone after Mango</title><link>http://www.bartlannoeye.be:80/blog/the-future-of-windows-phone-after-mango</link><description>&lt;p&gt;Last year in September Microsoft released a major update for the Windows Phone, version 7.5 or nicknamed Mango. The update brought us a long list of updates and new features. Next to that several new Windows Phone devices were announced and Nokia&amp;rsquo;s partnership with Microsoft brought the Lumia 710 and 800 devices to Belgium on February 1st. Up until now the Windows Phone was still quite unknown in Belgium for the general public, but this will probably change with the effort Nokia puts in advertisements. Next to gaining a large portion of the market share, we are also interested in what the future will bring for us, developers.&lt;/p&gt;
&lt;p&gt;Even though rumors are still rumors, it seems like we can expect 2 releases for Windows Phone in 2012. First of all there&amp;rsquo;s &amp;ldquo;Tango&amp;rdquo;, expected around mid-2012. This release is aimed at broadening the user base, by lowering the memory requirements to support lower-end (and thus cheaper) devices. These lower requirements will most likely also have effect on the apps we can create, limiting the memory use and resource-intensive tasks (and give more importance to cloud computing). A new SDK should be available around April to develop and test against this release. Other rumors are that Tango will support up to 120 languages (up from 35). With some luck we&amp;rsquo;ll get some things confirmed later this month at the Mobile World Congress.&lt;/p&gt;
&lt;p&gt;And then there is the video of Joe Belfiore to Nokia on Windows Phone 8, code-named Apollo that has been leaked. Windows Phone 8 is seen as part of the Windows 8 family of products and will share core technologies with its desktop- and tablet-based counterparts, including the kernel, multicore processor support, security and of course the Metro-style UI. Some of the experiences will be custom tailored for the smaller screen, including IE 10 Mobile version. It&amp;rsquo;s expected to hit the market together with Windows 8 by the end of the year.&lt;/p&gt;
&lt;p&gt;Other interesting features for Windows Phone 8 for the end customers include a NFC Chip enabling an integrated wallet experience, full micro SD support, camera improvements and custom &amp;ldquo;lens&amp;rdquo; apps and a Skype app. To get the most out of our limited data plans, we&amp;rsquo;ll get &amp;ldquo;Data Smart&amp;rdquo; in which the system will use Wi-Fi over cellular where possible, use less bandwidth and provide an app to manage data usage. Business users get complete BitLocker encryption out of the box, private app stores for businesses, a new version of Office mobile going together with the Office 15 wave, System Center integration and much more.&lt;/p&gt;
&lt;p&gt;For us developers, there are also a few interesting features like app-to-app communication based on Windows 8 Contracts and native C++ apps built on the Windows 8 kernel (out goes Windows CE), enabling to easily port Windows 8 or even Android/iOS apps to Windows Phone 8. This will certainly fuel the discussion "Is Silverlight dead?&amp;rdquo; again, but for now Windows Phone 8 should be backward compatible and support all current Mango apps, which could be around 100.000 of them by then.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s still early and everything is based on rumors and a leaked video, but Microsoft seems to continue the effort on increasing its market share for Windows Phone, both for individuals and businesses. Which in turn, might also bring new opportunities for us as Microsoft developers.&lt;/p&gt;</description><pubDate>Sun, 12 Feb 2012 19:47:18 GMT</pubDate><guid isPermaLink="true">http://www.bartlannoeye.be:80/blog/the-future-of-windows-phone-after-mango</guid></item><item><title>ArgumentOutOfRangeException on WP7 Reminder</title><link>http://www.bartlannoeye.be:80/blog/argumentoutofrangeexception-on-wp7-reminder</link><description>&lt;p&gt;During the creation of a Windows Phone 7 application for &lt;a href="http://www.trixonline.be/" target="_blank"&gt;Trix&lt;/a&gt; I wanted to give the user the chance to add a reminder for a concert of his choice. With some example code available, the implementation was smooth and easy. Until I ran into this error while testing the app:&lt;/p&gt;
&lt;pre&gt;ArgumentOutOfRangeException was unhandled
Specified argument was out of the range of valid values.
Parameter name: Title
&lt;/pre&gt;
&lt;p&gt;Since I selected an item with a very long title, it was quite clear what the problem was. A small search on &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.phone.scheduler.schedulednotification.title%28v=vs.92%29.aspx" target="_blank"&gt;MSDN&lt;/a&gt; learned me that the maximum length for this property is &lt;strong&gt;63 characters&lt;/strong&gt;.&lt;/p&gt;</description><pubDate>Sun, 15 Jan 2012 10:41:07 GMT</pubDate><guid isPermaLink="true">http://www.bartlannoeye.be:80/blog/argumentoutofrangeexception-on-wp7-reminder</guid></item><item><title>No matching constructor found for WP7 resources file</title><link>http://www.bartlannoeye.be:80/blog/no-matching-constructor-found-for-wp7-resources-file</link><description>&lt;p&gt;When I was adding localization to my first Windows Phone 7 app, I initially got following exception:&lt;/p&gt;
&lt;pre&gt;XamlParseException was unhandled
No matching constructor found on type 'MyApp.Resources.MyResources'. [Line: 15 Position: 34]

&lt;/pre&gt;
&lt;p&gt;with an InnerException:&lt;/p&gt;
&lt;pre&gt;MissingMethodException
   at System.Activator.InternalCreateInstance(Type type, Boolean nonPublic, StackCrawlMark&amp;amp; stackMark)
   at System.Activator.CreateInstance(Type type)
   at MS.Internal.XamlManagedRuntimeRPInvokes.CreateInstance(XamlTypeToken inXamlType, XamlQualifiedObject&amp;amp; newObject)
   at MS.Internal.XcpImports.Application_LoadComponentNative(IntPtr pContext, IntPtr pComponent, UInt32 cUriStringLength, String uriString, UInt32 cXamlStrLength, Byte* pXamlStr, UInt32 cAssemblyStrLength, String assemblyStr)
   at MS.Internal.XcpImports.Application_LoadComponent(IManagedPeerBase componentAsDO, String resourceLocator, UnmanagedMemoryStream stream, UInt32 numBytesToRead, String assemblyString)
   at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)
   at MyApp.App.InitializeComponent()
   at MyApp.App..ctor()
   at System.Reflection.RuntimeConstructorInfo.InternalInvoke(RuntimeConstructorInfo rtci, BindingFlags invokeAttr, Binder binder, Object parameters, CultureInfo culture, Boolean isBinderDefault, Assembly caller, Boolean verifyAccess, StackCrawlMark&amp;amp; stackMark)
   at System.Reflection.RuntimeConstructorInfo.InternalInvoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, StackCrawlMark&amp;amp; stackMark)
   at System.Reflection.ConstructorInfo.Invoke(Object[] parameters)
   at MS.Internal.TypeProxy.&amp;lt;&amp;gt;c__DisplayClass30.&amp;lt;GetCreateObjectDelegate&amp;gt;b__2a()
   at MS.Internal.TypeProxy.CreateInstance(UInt32 customTypeId)
   at MS.Internal.FrameworkCallbacks.CreateKnownObject(IntPtr nativeRootPeer, UInt32 customTypeId, String initializationString, IntPtr&amp;amp; nativePeer, UInt32 isCreatedByParser)
   at MS.Internal.FrameworkCallbacks.CreateUnknownObject(String assemblyName, String typeName, IntPtr nativeRootPeer, String initializationString, UInt32&amp;amp; customTypeId, UInt32&amp;amp; coreTypeId, UInt32&amp;amp; typeFlags, IntPtr&amp;amp; nativePeer)
&lt;/pre&gt;
&lt;p&gt;If you break on all thrown CLR Exceptions, you'll get following error instead:&lt;/p&gt;
&lt;p&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="WP7ReminderTitleOutOfRange" alt="WP7MissingResourcesException" src="http://www.bartlannoeye.be/Media/Default/BlogPost/images/WP7MissingResourcesException.png" border="0" height="237" width="571" /&gt;&lt;/p&gt;
&lt;p&gt;The problem here is that the access modifier of resource files added to your WP7 project are &lt;strong&gt;internal&lt;/strong&gt; by default. Changing the access modifier in the designer, changes the class definition. However, the constructor stays internal. You can change the modifier manually in the xxResources.Designer.cs file. Just keep attention that it will return to internal when changing your resource file through the designer.&lt;/p&gt;
&lt;pre&gt;[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class MyResources {
    
    private static global::System.Resources.ResourceManager resourceMan;
    
    private static global::System.Globalization.CultureInfo resourceCulture;
    
    [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
    public MyResources() {
}

&lt;/pre&gt;</description><pubDate>Wed, 04 Jan 2012 04:30:00 GMT</pubDate><guid isPermaLink="true">http://www.bartlannoeye.be:80/blog/no-matching-constructor-found-for-wp7-resources-file</guid></item><item><title>Moved from DasBlog to Orchard CMS</title><link>http://www.bartlannoeye.be:80/blog/moved-from-dasblog-to-orchard-cms</link><description>&lt;p&gt;As you can notice, I moved my blog from DasBlog to Orchard CMS. DasBlog has been stable (read no new development) for a few years now and although some effort has been put in upgrading it to .NET 4.0, it was far from done.&lt;/p&gt;
&lt;p&gt;There's still quite some work left to do like styling and finetuning. I had a new layout ready, but we all know Photoshop isn't HTML/CSS. Plus with the metro design gaining grounds, I decided to give the designer some extra work. However, the most important job is done: we're up and running and the old permalinks redirect to the new Orchard url structure.&lt;/p&gt;</description><pubDate>Fri, 30 Dec 2011 12:00:00 GMT</pubDate><guid isPermaLink="true">http://www.bartlannoeye.be:80/blog/moved-from-dasblog-to-orchard-cms</guid></item><item><title>How to force Mango on your WP7 device</title><link>http://www.bartlannoeye.be:80/blog/how-to-force-mango-on-your-wp7-device</link><description>&lt;p&gt;&lt;i&gt;Disclaimer: This is NOT an official installation guide for Mango (or any WP7 update) and is not supported by Microsoft. Using this process to upgrade is your own decision, any problems caused by this process are your own responsibility.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Today Microsoft released the news we've all been waiting for: &lt;a href="http://windowsteamblog.com/windows_phone/b/windowsphone/archive/2011/09/27/windows-phone-7-5-mango-update-begins.aspx" target="_blank"&gt;Mango updates are being rolled out&lt;/a&gt; !! However, like all previous updates, only a lucky few (10 percent) will get the update in the first week. If everything goes smoothly (remember the Samsung Omnia 7 problems with NoDo), this will be pulled up to 25% and after another 1 or 2 weeks to 100% of Windows Phone 7 customers.&lt;/p&gt;
&lt;p&gt;With the NoDo update I patiently waited for over 3 weeks, in vain. I know, I must have been mad to wait that long. But eventually, I got impatient and ended up &amp;ldquo;forcing&amp;rdquo; it upon my own device. Now with Mango, I sure won't wait several weeks for it, sorry Microsoft.&lt;/p&gt;
&lt;h2&gt;Now how to do it?&lt;/h2&gt;
&lt;p&gt;First check if you&amp;rsquo;re not getting the update pushed already, you can find this under Settings &amp;ndash;&amp;gt; Phone &amp;ndash;&amp;gt; Update. In my case I got the sad trombone: &amp;ldquo;Your phone is up to date&amp;rdquo; with 7392.&lt;/p&gt;
&lt;p&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="WP7UpToDate7392" alt="WP7UpToDate7392" src="http://www.bartlannoeye.be/Media/Default/BlogPost/images/WP7UpToDate7392.png" height="697" width="1016" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Repeat this last step to check for updates, but be ready to &lt;strong&gt;turn off your internet &lt;/strong&gt;(WLAN/Ethernet) after 1-5 seconds. The exact timing depends on the speed of your connection. With the NoDo update I needed about 3 seconds, for Mango I had to turn it off after 1 second already. If you happen to fail, just retry and change your timing a bit. I got it right on the 5th try and I say it&amp;rsquo;s well worth spending a few minutes on! When you get your timing right, you will normally get the update to 7403, which is an &amp;ldquo;in between&amp;rdquo; build just before Mango.&lt;/p&gt;
&lt;p&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="WP7UpdateAvailable7403" alt="WP7UpdateAvailable7403" src="http://www.bartlannoeye.be/Media/Default/BlogPost/images/WP7UpdateAvailable7403.png" height="697" width="1016" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;From this point it&amp;rsquo;s quite straight forward. Turn your &lt;strong&gt;internet connection on&lt;/strong&gt; again and hit Update. Sit back and relax while update 7.0.7403.0 is getting installed.&lt;/p&gt;
&lt;p&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="WP7UpdateAvailable7403Install" alt="WP7UpdateAvailable7403Install" src="http://www.bartlannoeye.be/Media/Default/BlogPost/images/WP7UpdateAvailable7403Install.png" height="697" width="1016" border="0" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;And now the best news: once your phone did reboot after the installation, you should get the notification on the phone that a new update is available. Switching back to Zune I noticed Mango (7.10.7720.68) was downloading already!&lt;/p&gt;
&lt;p&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="WP7Installing7720" alt="WP7Installing7720" src="http://www.bartlannoeye.be/Media/Default/BlogPost/images/WP7Installing7720.png" height="686" width="834" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;The whole process, including backups and both installations took about 40 minutes.&lt;/p&gt;</description><pubDate>Tue, 27 Sep 2011 20:45:00 GMT</pubDate><guid isPermaLink="true">http://www.bartlannoeye.be:80/blog/how-to-force-mango-on-your-wp7-device</guid></item><item><title>Deploying your site with SQL CE 4.0 to shared webhosting (Part 2)</title><link>http://www.bartlannoeye.be:80/blog/deploying-your-site-with-sql-ce-4.0-to-shared-webhosting-part-2</link><description>&lt;p&gt;In the previous post I described how to create your website with ASP.NET and SQL Server Compact 4 as database. The next step is to deploy your site. If you have a VPS or dedicated server, you got full access to it and normally shouldn&amp;rsquo;t run into any problems. But when you&amp;rsquo;re using shared webhosting, your actions are very limited. This post describes the errors you&amp;rsquo;ll most likely run into the first time you try this, and how to solve them.&lt;/p&gt;
&lt;p&gt;You can either deploy from within Visual Studio or FTP the files to your host. If you hit the URL to your website, you&amp;rsquo;ll most likely get following configuration error with the according web.config fragment below:&lt;br /&gt;&lt;b&gt;Parser Error Message: &lt;/b&gt;Could not load file or assembly 'System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. The system cannot find the file specified.&lt;/p&gt;
&lt;pre class="xml" name="code"&gt;&amp;lt;compilation debug="true" targetFramework="4.0"&amp;gt;
  &amp;lt;assemblies&amp;gt;
    &amp;lt;add assembly="System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/&amp;gt;
    &amp;lt;add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/&amp;gt;
    &amp;lt;add assembly="System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/&amp;gt;&lt;/pre&gt;
&lt;p&gt;You get this error because most providers don&amp;rsquo;t have SQL CE 4.0 assemblies installed (yet?). This means you&amp;rsquo;ll have to 'bin deploy' the assemblies together with your site. Visual Studio 2010 provides a "Add Deployable Dependencies..." context menu item, which let you choose to add the required assemblies for Razor or SQL Server Compact to the Bin folder. (&lt;a href="http://blogs.msdn.com/b/webdevtools/archive/2011/01/06/how-to-bin-deploy-sql-compact-edition-4-0-and-razor-web-projects.aspx" target="_blank"&gt;picture source&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;img style="border-width: 0px; display: inline;" title="BindeployAddDependencies" alt="BindeployAddDependencies" src="http://www.bartlannoeye.be/Media/Default/BlogPost/images/BindeployAddDependencies.png" height="424" width="517" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;With some 'luck' you hit the next error once you solved the problem above and refreshed the page:&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Parser Error Message: &lt;/b&gt;Access to the database file is not allowed. [ 1884,File name = somepath\App_Data\YourDatabase.sdf,SeCreateFile ]&lt;/p&gt;
&lt;p&gt;For this error you have to give &lt;strong&gt;read + write access&lt;/strong&gt; to the App_Data folder, usually done in the File Manager of your hosting control panel. If you got this error on your private server, check if the service running the Application Pool (e.g. Network Service) has these rights on the folder. You will also have to add following line of code (e.g. in the global.asax file):&lt;/p&gt;
&lt;pre class="c#" name="code"&gt;AppDomain.CurrentDomain.SetData("SQLServerCompactEditionUnderWebHosting", true);&lt;/pre&gt;
&lt;p&gt;This is because, by default, SQL CE blocks access when the connection is opened under the ASP.NET networking process. Once I ran through these steps, I got everything up and running without any hiccups.&lt;/p&gt;</description><pubDate>Tue, 12 Apr 2011 21:45:00 GMT</pubDate><guid isPermaLink="true">http://www.bartlannoeye.be:80/blog/deploying-your-site-with-sql-ce-4.0-to-shared-webhosting-part-2</guid></item><item><title>Use SQL CE 4 for your website (Part 1)</title><link>http://www.bartlannoeye.be:80/blog/use-sql-ce-4-for-your-website-part-1</link><description>&lt;p&gt;Why this post about SQL Compact Edition 4 (SQL CE 4)? In short it&amp;rsquo;s a &lt;strong&gt;free&lt;/strong&gt; database engine that doesn&amp;rsquo;t require an installation of a database server (SQL Server, MySQL, &amp;hellip;). Copy the SQL CE binaries in your /bin folder and you&amp;rsquo;re ready to go. You don&amp;rsquo;t need an administrator account and can even run it in medium trust environments, like a web host. Interested? This is what you need:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=209902" target="_blank"&gt;Visual Studio 2010 SP1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;SQL CE 4 Tools&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note: around MIX 11 the link for the tools broke down. It is still available in the Web Platform Installer (WebPI) v3.&lt;/p&gt;
&lt;p&gt;&lt;img style="border: 0px none; display: inline;" title="WebPI3SQLCE4" alt="WebPI3SQLCE4" src="http://www.bartlannoeye.be/Media/Default/BlogPost/images/WebPI3SQLCE4.png" height="544" width="784" border="0" /&gt;&lt;/p&gt;
&lt;h2&gt;New project&lt;/h2&gt;
&lt;p&gt;We get started with a standard ASP.NET 4.0 Web Application. Right-click on the App_Data folder and select &amp;ldquo;Add-&amp;gt;New Item&amp;rdquo;. On top of the &amp;ldquo;Add item&amp;rdquo; dialog box, you&amp;rsquo;ll find the option to create a &amp;ldquo;SQL Server Compact 4.0 Local Database&amp;rdquo;, with .sdf as extension. On adding the database, all references for SQL CE get added automatically.&lt;/p&gt;
&lt;p&gt;&lt;img style="border: 0px none; display: inline;" title="SQLCENewDatabase" alt="SQLCENewDatabase" src="http://www.bartlannoeye.be/Media/Default/BlogPost/images/SQLCENewDatabase.png" height="286" width="959" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;I could continue writing every single step of the process to get your site building, but maybe even better is checking out ScottGu&amp;rsquo;s very detailed guide on &lt;a href="http://weblogs.asp.net/scottgu/archive/2011/01/11/vs-2010-sp1-and-sql-ce.aspx" target="_blank"&gt;creating the database and building your ASP.NET site with SQL CE&lt;/a&gt; and Entity Framework 4.&lt;/p&gt;
&lt;p&gt;Interesting note: if you want to use a regular LINQ datacontext with your SQL CE database, have a look at this &lt;a href="http://www.codeproject.com/KB/linq/Compact_LINQ.aspx" target="_blank"&gt;Compact LINQ codeproject&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;ASP.NET Membership&lt;/h2&gt;
&lt;p&gt;Now next up is authentication on your site. If you opt for Forms Authentication, you have the problem that ASP.NET Membership uses the full version of SQL Server (Express). Luckily Erik Ejlskov Jensen wrote a &lt;a href="http://erikej.blogspot.com/2010/08/sql-server-compact-40-aspnet-membership.html" target="_blank"&gt;SQL CE 4 ASP.NET Membership provider&lt;/a&gt; that is hosted on &lt;a href="http://sqlcemembership.codeplex.com/" target="_blank"&gt;CodePlex&lt;/a&gt;. Add the 3 code files or the assembly to your project, change your web.config file as specified on the project site and run your site. The membership database gets created automatically. Can&amp;rsquo;t be much easier, can it?&lt;/p&gt;
&lt;p&gt;In &lt;a href="http://www.bartlannoeye.be/blog/deploying-your-site-with-sql-ce-4.0-to-shared-webhosting-part-2"&gt;part 2&lt;/a&gt; we&amp;rsquo;ll deploy to shared hosting.&lt;/p&gt;</description><pubDate>Tue, 12 Apr 2011 20:00:00 GMT</pubDate><guid isPermaLink="true">http://www.bartlannoeye.be:80/blog/use-sql-ce-4-for-your-website-part-1</guid></item><item><title>Take your notes everywhere</title><link>http://www.bartlannoeye.be:80/blog/take-your-notes-everywhere</link><description>&lt;p&gt;The days when you only had one computer to store and edit your files on are long gone. Nowadays people have multiple systems (desktop, laptop), mobile devices (smartphone, tablet) and work at home, the office or the client. And it&amp;rsquo;s more than normal to have your documents, worksheets and notes available everywhere. There are several possibilities to make this possible like &lt;a title="Google Docs" href="http://docs.google.com/" target="_blank"&gt;Google Docs&lt;/a&gt;, &lt;a title="Dropbox" href="http://www.dropbox.com/" target="_blank"&gt;Dropbox&lt;/a&gt;, &lt;a title="SugarSync" href="https://www.sugarsync.com/" target="_blank"&gt;SugarSync&lt;/a&gt;, &amp;hellip;&lt;/p&gt;
&lt;p&gt;I use or have used most of them, but today I&amp;rsquo;ll write about &lt;a title="Windows Live Skydrive" href="http://explore.live.com/windows-live-skydrive" target="_blank"&gt;Windows Live SkyDrive&lt;/a&gt;. It&amp;rsquo;s been around for years already and gives you 25GB of free storage in the cloud. But now it integrates with Windows Phone 7 and &lt;a href="http://office.microsoft.com/en-us/web-apps/" target="_blank"&gt;Office Web Apps&lt;/a&gt;, either directly on &lt;a href="http://skydrive.live.com"&gt;http://skydrive.live.com&lt;/a&gt; or via &lt;a title="http://office.live.com/" href="http://office.live.com/"&gt;http://office.live.com/&lt;/a&gt;, which enable you to open and edit your documents in the browser. I really like this feature because unlike with Office 2010, not all versions in Office 2007 (and lower) have OneNote included.&lt;/p&gt;
&lt;h2&gt;Windows Phone 7&lt;/h2&gt;
&lt;p&gt;If you own a WP7 device, or have been following the news on these devices, you&amp;rsquo;ve most likely seen how the &lt;a href="http://www.microsoft.com/windowsphone/en-us/features/default.aspx#office-hub" target="_blank"&gt;Office Hub&lt;/a&gt; on Windows Phone 7 works. It didn&amp;rsquo;t take long before I opened up OneNote on my phone and started entering some notes. The document gets automatically saved to your device, but for synchronisation with the cloud, for WP7 that&amp;rsquo;s SkyDrive, you&amp;rsquo;ll need do so some extra work next to turn on &amp;ldquo;Automatic synchronisation&amp;rdquo; in the settings. The &lt;strong&gt;first time&lt;/strong&gt; you have to run through these steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Flick to OneNote in the Office hub.&lt;/li&gt;
&lt;li&gt;Tap &amp;ldquo;All&amp;rdquo; and then tap &amp;ldquo;Refresh&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Tap &amp;ldquo;Yes&amp;rdquo; in the &amp;ldquo;Sync with SkyDrive?&amp;rdquo; message box.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This will sign you in with your Windows Live ID and create a notebook named Personal (Web) in your &amp;ldquo;My Documents&amp;rdquo; folder and might take a few moments. Once set up, you can either refresh manually or opt for auto-sync under the settings. On the picture below you see that a folder &amp;ldquo;My Documents&amp;rdquo; is created and contains my notebook. You also notice my pictures that get synched down from the phone.&lt;/p&gt;
&lt;p&gt;&lt;img style="border-width: 0px; display: inline;" title="SkyDriveWP7Sync" alt="SkyDriveWP7Sync" src="http://www.bartlannoeye.be/Media/Default/BlogPost/images/SkyDriveWP7Sync.png" height="519" width="605" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;Office Web Apps&lt;/h2&gt;
&lt;p&gt;If you hover over the file in your browser you get several actions like &amp;ldquo;Edit in browser&amp;rdquo; and &amp;ldquo;Open in OneNote&amp;rdquo;. The first opens your OneNote file in your browser for editing, while the second action launches your installed OneNote application. If you got both open, you&amp;rsquo;ll notice that changes in one place get synched within a few seconds time.&lt;/p&gt;
&lt;p&gt;&lt;img style="border-width: 0px; display: inline;" title="SkyDriveOfficeWebApps" alt="SkyDriveOfficeWebApps" src="http://www.bartlannoeye.be/Media/Default/BlogPost/images/SkyDriveOfficeWebApps.png" height="116" width="639" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re the only editor and aren&amp;rsquo;t planning to share with anyone else, it might be handy to turn off the &amp;ldquo;Show Authors&amp;rdquo; under the &amp;ldquo;View&amp;rdquo; ribbon in the browser. In OneNote 2010 you find the same functionality under &amp;ldquo;Share&amp;rdquo; &amp;ndash;&amp;gt; &amp;ldquo;Hide Authors&amp;rdquo;. This hide the overview of all authors in the editor pane.&lt;/p&gt;
&lt;p&gt;&lt;img style="border-width: 0px; display: inline;" title="OneNoteHideAuthors" alt="OneNoteHideAuthors" src="http://www.bartlannoeye.be/Media/Default/BlogPost/images/OneNoteHideAuthors.png" height="137" width="573" border="0" /&gt;&lt;/p&gt;
&lt;h2&gt;OneNote 2010&lt;/h2&gt;
&lt;p&gt;You can either open an existing OneNote notebook from the Office Live website or start from scratch. If you create a new notebook in OneNote 2010, you&amp;rsquo;ll see that the default store location is the web. This location is your Offive Live/SkyDrive folder. A very detailed step-by-step walkthrough is available on &lt;a href="http://www.howtogeek.com/howto/21406/sync-onenote-2010-notebooks-to-office-live-and-edit-them-anywhere/" target="_blank"&gt;How-to Geek&lt;/a&gt; (source of the picture below).&lt;/p&gt;
&lt;p&gt;&lt;img style="border-width: 0px; display: inline;" title="OneNoteSaveToWeb" alt="OneNoteSaveToWeb" src="http://www.bartlannoeye.be/Media/Default/BlogPost/images/OneNoteSaveToWeb.png" height="357" width="487" border="0" /&gt;&lt;/p&gt;</description><pubDate>Tue, 05 Apr 2011 19:00:00 GMT</pubDate><guid isPermaLink="true">http://www.bartlannoeye.be:80/blog/take-your-notes-everywhere</guid></item><item><title>AvePoint DocAve generating SQL login errors</title><link>http://www.bartlannoeye.be:80/blog/avepoint-docave-generating-sql-login-errors</link><description>&lt;p&gt;When logging in on a MOSS 2007 WFE-server to investigate a smaller issue, I noticed a wall of red errors in the event viewer. Most of them came down to something like:&lt;/p&gt;
&lt;pre class="none" name="code"&gt;Event Type:    Error&lt;br /&gt;Event Source:    Windows SharePoint Services 3&lt;br /&gt;Event Category:    Database &lt;br /&gt;Event ID:    1111&lt;br /&gt;Date:        dd/mm/yyyy&lt;br /&gt;Time:        1:00:00&lt;br /&gt;User:        N/A&lt;br /&gt;Computer:    SERVERNAME&lt;br /&gt;Description:&lt;br /&gt;SQL database login failed. Additional error information from SQL Server is included below.&lt;br /&gt;&lt;br /&gt;Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.&lt;br /&gt;&lt;br /&gt;For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.&lt;/pre&gt;
&lt;p&gt;It was pretty clear that some SQL credentials weren't correct, I just had to find out which ones. These are (part of) the errors I found in the SharePoint ULS logs:&lt;/p&gt;
&lt;pre class="none" name="code"&gt;DocAveAPVCService.exe (0x052C)   0x0D20    Windows SharePoint Services       Database     880i    High&lt;br /&gt;        System.Data.SqlClient.SqlException: Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'. &lt;br /&gt;DocAveAPVCService.exe (0x052C)   0x0D20    Windows SharePoint Services       Database     880j    High&lt;br /&gt;        SqlError: 'Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.'&lt;br /&gt;DocAveAPVCService.exe (0x052C)   0x0D20    Windows SharePoint Services       Database     6y64    Critical&lt;br /&gt;        SQL database login failed. Additional error information from SQL Server is included below.&lt;br /&gt;        Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.&lt;/pre&gt;
&lt;p&gt;A quick visit to the services control panel taught me that &amp;ldquo;AvePoint Communication Service&amp;rdquo; was running under the Local System credentials. This explains the failed login with 'NT AUTHORITY\ANONYMOUS LOGON' credentials in SQL Server on a different machine.&lt;/p&gt;
&lt;h2&gt;Solution&lt;/h2&gt;
&lt;p&gt;The solution is simple: run &amp;ldquo;AvePoint Communication Service&amp;rdquo; under (domain) credentials that have access to the SQL Server instance.&lt;/p&gt;
&lt;p&gt;Edit: AvePoint seems to have a private patch available for this issue which you can receive after contacting them.&lt;/p&gt;</description><pubDate>Fri, 11 Mar 2011 11:15:00 GMT</pubDate><guid isPermaLink="true">http://www.bartlannoeye.be:80/blog/avepoint-docave-generating-sql-login-errors</guid></item><item><title>A year of changes</title><link>http://www.bartlannoeye.be:80/blog/a-year-of-changes</link><description>&lt;p&gt;First of all: for all my readers who aren&amp;rsquo;t on twitter yet: a Happy New Year and I send you the best wishes for 2011. And of course thanks for following my posts for another year.&lt;/p&gt;
&lt;p&gt;In my opinion every year has to bring something new. Last year brought a lot of new things to the community and myself. This year brings a first annual review blog post.&lt;/p&gt;
&lt;h2&gt;What you all know&lt;/h2&gt;
&lt;p&gt;The year 2010 was a year full of new releases, some of the most important:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Visual Studio 2010 and .NET 4.0 (with plenty of changes to ASP.NET, WPF, &amp;hellip;)&lt;/li&gt;
&lt;li&gt;Silverlight 4&lt;/li&gt;
&lt;li&gt;ASP.NET MVC 2 and ASP.NET MVC 3 up to RC2&lt;/li&gt;
&lt;li&gt;SharePoint 2010&lt;/li&gt;
&lt;li&gt;Dynamics CRM 4.0 / xRM&lt;/li&gt;
&lt;li&gt;Lots of changes in Windows Azure (&lt;a href="http://www.bartlannoeye.be/blog/pdc-2010-keynote-bring-the-goodies"&gt;see this post&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;IE9 and HTML 5 support&lt;/li&gt;
&lt;li&gt;Windows Phone 7&lt;/li&gt;
&lt;li&gt;&amp;hellip; and plenty of other releases.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What changed for me&lt;/h2&gt;
&lt;p&gt;Last year wasn&amp;rsquo;t only a busy year for Microsoft, it also brought a lot of changes for myself. In March I changed from a small local SME to Capgemini, one of the world&amp;rsquo;s largest consulting companies, looking for new challenges. I also focused more on SharePoint development to complete the career move from in house development to consulting. I also had the chance to go to SharePoint Connections in The Hague, the Netherlands. It was a very interesting conference and a wonderful opportunity to meet some great people of the international SharePoint community.&lt;/p&gt;
&lt;p&gt;Another big change in my life, although not technology related, was buying an own place to live in. Did I know how much time it takes to search, do paperwork, the planning and the actual moving &amp;hellip; But after all it&amp;rsquo;s worth it.&lt;/p&gt;
&lt;h2&gt;Some resolutions&lt;/h2&gt;
&lt;p&gt;New Year doesn&amp;rsquo;t go without resolutions. One of last year&amp;rsquo;s resolutions was to improve my connections with the Microsoft community. Exactly 1 year ago I opened a &lt;a href="http://twitter.com/bartlannoeye" target="_blank"&gt;twitter account&lt;/a&gt; and I&amp;rsquo;m very happy with this way of meeting people and communicating with them. I&amp;rsquo;d like to thank all my followers for their interest in my tweets and the feedback that I got from them when needed. Next to twitter I&amp;rsquo;ve continued with my blog (although I had a few quiet moments) and the Belgian user groups (&lt;a href="http://www.visug.be" target="_blank"&gt;VISUG&lt;/a&gt;, &lt;a href="http://www.biwug.be" target="_blank"&gt;BIWUG&lt;/a&gt;, &lt;a href="http://www.besug.be" target="_blank"&gt;BESUG&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;But that was last year. For the next 365 days I&amp;rsquo;d like to spend some extra effort on following points:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Improve my Silverlight skills, for integration with SharePoint 2010 and some nice applications on Windows Phone 7.&lt;/li&gt;
&lt;li&gt;Write an application for Windows Phone 7. I&amp;rsquo;ve had my WP7 for 2 months now and it&amp;rsquo;s a great device! I&amp;rsquo;ve made a few concepts, but finishing a real application is one of my greatest wishes for this year.&lt;/li&gt;
&lt;li&gt;Continue building my network in the community and hopefully do another lecture this year. I&amp;rsquo;ve done one 2 years ago and it was a great experience. Lacking the time (because of moving) kept me from doing one this year. But I know the Belgian user groups (and maybe others) are always interested in speakers.&lt;/li&gt;
&lt;li&gt;Keep up with the blogging, as a reference for myself and hopefully for you too. With my recent switch towards SharePoint I've noticed finding myself in the situation of "I've seen this before" a few times. It's always easier if you know where to find the solution to your problem.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Let&amp;rsquo;s make the best out of 2011.&lt;/p&gt;</description><pubDate>Sat, 01 Jan 2011 21:15:00 GMT</pubDate><guid isPermaLink="true">http://www.bartlannoeye.be:80/blog/a-year-of-changes</guid></item><item><title>PDC 2010 Keynote: Bring the goodies</title><link>http://www.bartlannoeye.be:80/blog/pdc-2010-keynote-bring-the-goodies</link><description>&lt;p&gt;Last night I was one of the 30,000 persons attending a local Microsoft event to join in on the PDC 2010 Keynote live stream, excited to see what goodies Microsoft would announce. Man, did we get some! One thing is clear: Microsoft goes for IE9, WP7 and &lt;strong&gt;lots&lt;/strong&gt; of cloud with Azure.&lt;/p&gt;
&lt;p&gt;For those who missed the opening keynote, you should &lt;a href="http://player.microsoftpdc.com/session/6f853fa2-06f6-45e5-ac25-18c31cc4ba32?refid=05301" target="_blank"&gt;go have a look&lt;/a&gt; at the video to know what Microsoft is focusing on right now. Here&amp;rsquo;s a small write-up to give you an idea:&lt;/p&gt;
&lt;h2&gt;Internet Explorer 9&lt;/h2&gt;
&lt;p&gt;Steve Ballmer kicked of with Internet Explorer 9, how well it supports HTML5 and the full hardware acceleration you get with IE9. You&amp;rsquo;re able to play video&amp;rsquo;s and combine with a canvas, do some animations and still get a very high FPS rate and smooth display. Something that becomes clear when we compare to the latest Chrome build (which can&amp;rsquo;t rely on the hardware acceleration as IE9 does). Next to that you also get CSS3 2D transforms, JavaScript support for pinning websites to the Windows 7 taskbar and even custom IE layout for your site. Plenty of demos on &lt;a href="http://ietestdrive.com" target="_blank"&gt;http://ietestdrive.com&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Windows Phone 7&lt;/h2&gt;
&lt;p&gt;With all the hype around Windows Phone 7 lately, this just had to be mentioned in the keynote. We&amp;rsquo;ve seen already quite a few nice demonstrations on the web, but Microsoft still manages to surprise us here. Scott Guthrie showed us a new OData library, connecting you to eBay, and new profiler tools for WP7 enabling you to drill down to the specific UI element or method that&amp;rsquo;s crippling your performance. And don&amp;rsquo;t forget that Amazon is bringing &lt;a href="http://www.engadget.com/2010/10/28/kindle-for-windows-phone-7-revealed-due-in-the-coming-months/" target="_blank"&gt;Kindle&lt;/a&gt; to the Windows Phone 7! We&amp;rsquo;ve seen only a beta version, the release is for the &amp;lsquo;coming months&amp;rsquo;, but the integration with WP7 looks great.&lt;/p&gt;
&lt;p&gt;And just to make sure that you know Microsoft is pushing Windows Phone 7 to be a top competitor: every PDC attendee is getting a WP7 device AND a registration on Windows Phone Marketplace. No excuses anymore! To bad we don&amp;rsquo;t get one either on the local events ;).&lt;/p&gt;
&lt;h2&gt;Windows Azure&lt;/h2&gt;
&lt;p&gt;Then Bob Muglia came on stage for the second and largest part of the keynote on Windows Azure. One thing should be clear once you&amp;rsquo;ve seen it: Microsoft is making a commitment to Platform as a Service (PaaS) with Azure. And the market is following: Pixar is running RenderMan on Azure to leverage the scalability and elasticity (time vs. costs) for creating their animations. Like Chris Ford of Pixar mentioned: medium sized studios can&amp;rsquo;t afford a huge &amp;ldquo;render farm&amp;rdquo; to stand idle half of the time, and this is the best way to pay for your usage only.&lt;/p&gt;
&lt;p&gt;Demos are nice, but new features are better! And the list of new features really shows how important cloud computing is for Microsoft:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows Azure &lt;strong&gt;Virtual Machine Role&lt;/strong&gt; enables you to run your own existing Windows Server 2008 R2 machines, Server 2008 and 2003 will join in later. You can either upload your image or build the VM role images in the cloud. &lt;em&gt;Public beta by end of 2010&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Server Application Virtualization&lt;/strong&gt; enables you to deploy virtualized applications on the Windows Azure worker role, giving you an easy migration to Windows Azure without the need to rewrite everything. &lt;em&gt;CTP before end of 2010, final release second half of 2011&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SQL Azure Reporting&lt;/strong&gt; allows you to create and embed reports into your Windows Azure applications, also with Business Intelligence Development Studio (BIDS) as you do for SQL Server Reporting. &lt;em&gt;CTP before end of 2010, final release first half of 2011&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Improvements on the Windows Azure AppFabric, with maybe most importantly &lt;strong&gt;AppFabric Caching&lt;/strong&gt; to improve the performance of your applications. &lt;em&gt;CTP available, final release first half of 2011&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Windows Azure Marketplace&lt;/strong&gt; giving a place to buy and sell building block components, services, applications, &amp;hellip; for Windows Azure. Part of this Windows Azure Marketplace is &lt;strong&gt;DataMarket&lt;/strong&gt; (formerly known as Dallas), offering third-party data and web services. Currently there are already over 40 data providers and over 100 more in the pipeline. &lt;em&gt;Public beta by end of 2010&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;And plenty more like &lt;strong&gt;Team Foundation Server&lt;/strong&gt; on Windows Azure (and how fast they did bring it to the cloud), Remote Desktop (&lt;strong&gt;RDP&lt;/strong&gt;) to all your Windows Azure instances, extra small Windows Azure instance at &lt;strong&gt;$0.05/hour&lt;/strong&gt;, &lt;strong&gt;Virtual Networking&lt;/strong&gt; between on-premise and Windows Azure machines, elevated privileges, full IIS support, multiple admins, new &lt;strong&gt;Azure Portal admin interface&lt;/strong&gt;,&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you&amp;rsquo;re not with your head in the clouds yet, then this will certainly bring you there. I&amp;rsquo;m pretty sure there will be quite a few interesting sessions, about Azure and other topics, during this PDC event to &lt;a href="http://player.microsoftpdc.com/session?refid=05301" target="_blank"&gt;follow live&lt;/a&gt; or to check out later. They already kept me from finishing this post last night.&lt;/p&gt;
&lt;p&gt;After the life stream with had some extra Windows Phone 7 demos with &lt;a href="http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;cd=1&amp;amp;ved=0CBcQFjAA&amp;amp;url=http%3A%2F%2Fblogs.msdn.com%2Fb%2Fkatriend%2F&amp;amp;rct=j&amp;amp;q=katrien%20de%20graeve&amp;amp;ei=IdLKTMLwINaSjAfh0an2Dw&amp;amp;usg=AFQjCNHM1FGIZXn_NBXIE_BMJvEiABy6QA&amp;amp;sig2=h569d6p8IDlCjNZ7zVwLkQ&amp;amp;cad=rja" target="_blank"&gt;Katrien De Graeve&lt;/a&gt; and &lt;a href="http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;cd=1&amp;amp;ved=0CBIQFjAA&amp;amp;url=http%3A%2F%2Fblog.maartenballiauw.be%2F&amp;amp;rct=j&amp;amp;q=Maarten%20Balliauw&amp;amp;ei=QdLKTNrgHJKTjAf2x5zpDw&amp;amp;usg=AFQjCNGCfUKmXJwHRKVlGv6btXHi_aL4UQ&amp;amp;sig2=Elo3xT0YA93frYCSFOp24w&amp;amp;cad=rja" target="_blank"&gt;Maarten Balliauw&lt;/a&gt; in Belgium. It was a great evening and my high expectations were certainly filled in and then some.&lt;/p&gt;
&lt;h2&gt;Resources&lt;/h2&gt;
&lt;p&gt;All latest news: &lt;a href="http://www.microsoft.com/news" target="_blank"&gt;http://www.microsoft.com/news&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://player.microsoftpdc.com/session/6f853fa2-06f6-45e5-ac25-18c31cc4ba32?refid=05301" target="_blank"&gt;Opening keynote&lt;/a&gt;&lt;br /&gt;&lt;a href="http://player.microsoftpdc.com/session?refid=05301" target="_blank"&gt;Other live streams&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;IE blog: &lt;a title="http://blogs.msdn.com/b/ie/" href="http://blogs.msdn.com/b/ie/" target="_blank"&gt;http://blogs.msdn.com/b/ie/&lt;/a&gt;&lt;br /&gt;IE9 demos and samples: &lt;a title="http://ie.microsoft.com/testdrive/" href="http://ie.microsoft.com/testdrive/" target="_blank"&gt;http://ie.microsoft.com/testdrive/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Windows Phone blog: &lt;a href="http://windowsteamblog.com/windows_phone/b/wpdev/" target="_blank"&gt;http://windowsteamblog.com/windows_phone/b/wpdev/&lt;/a&gt;&lt;br /&gt;Developer portal: &lt;a title="http://developer.windowsphone.com/" href="http://developer.windowsphone.com/" target="_blank"&gt;http://developer.windowsphone.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Windows Azure announcements: &lt;a href="http://www.microsoft.com/windowsazure/" target="_blank"&gt;http://www.microsoft.com/windowsazure/&lt;/a&gt;&lt;br /&gt;Windows Azure blog: &lt;a href="http://blogs.msdn.com/b/windowsazure/" target="_blank"&gt;http://blogs.msdn.com/b/windowsazure/&lt;/a&gt;&lt;/p&gt;</description><pubDate>Fri, 29 Oct 2010 14:00:00 GMT</pubDate><guid isPermaLink="true">http://www.bartlannoeye.be:80/blog/pdc-2010-keynote-bring-the-goodies</guid></item><item><title>Silverlight Client Object Model: cache referenced client assemblies</title><link>http://www.bartlannoeye.be:80/blog/silverlight-client-object-model-cache-referenced-client-assemblies</link><description>&lt;p&gt;Those who follow me on Twitter already noticed I am at the &lt;a href="http://www.devconnections.com/speurope/" target="_blank"&gt;SharePoint Connections 2010 Autumn&lt;/a&gt; conference in The Hague (The Netherlands) right now. I&amp;rsquo;ve attended a few very interesting sessions and I will probably go deeper into some of the topics over the following weeks. However there was one small remark mentioned during one of the sessions, that I think everyone who uses the Silverlight Client Object Model should know about.&lt;/p&gt;
&lt;p&gt;As you all know, when programming against the Silverlight Client Object Model, you have to add a reference to the following assemblies:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Microsoft.SharePoint.Client.Silverlight.dll&lt;/li&gt;
&lt;li&gt;Microsoft.SharePoint.Client.Silverlight.Runtime.dll&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When you build the Silverlight package, both assemblies are also included and will add about 407KB of extra size to the xap file. For most small Silverlight applications that you create, this means a multiplication of the size by a factor 10 or more. This also means more bandwidth usage and longer loading times for the user.&lt;/p&gt;
&lt;p&gt;A solution to this problem is described by &lt;a href="http://msdn.microsoft.com/en-us/magazine/ff956224.aspx"&gt;Paul Stubbs&lt;/a&gt;: &amp;ldquo;&lt;em&gt;A better option is to dynamically load these assemblies at run time. This enables the browser to cache these common files, reducing your application size and the load times while increasing the performance of your applications.&lt;/em&gt;&amp;rdquo; Both assemblies are already pre-packaged and you can find them in\14\TEMPLATE\LAYOUTS\ClientBin as &lt;strong&gt;Microsoft.SharePoint.Client.xap&lt;/strong&gt;. For the actual implementation I redirect you to the &lt;a href="http://msdn.microsoft.com/en-us/magazine/ff956224.aspx"&gt;article itself&lt;/a&gt;, last paragraph: &amp;ldquo;Dynamically Loaded Client Object Model&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Credits go to Paul Stubbs for the implementation and to Andrew Connell for mentioning it during one of his sessions. Please share this knowledge amongst your colleagues to reduce loading times and to raise the positive perception that users have about Silverlight (and SharePoint).&lt;/p&gt;
&lt;p&gt;Edit: It might be a good idea if Microsoft placed this file on their CDN.&lt;/p&gt;</description><pubDate>Wed, 29 Sep 2010 12:30:00 GMT</pubDate><guid isPermaLink="true">http://www.bartlannoeye.be:80/blog/silverlight-client-object-model-cache-referenced-client-assemblies</guid></item><item><title>Be aware of DOM state: jQuery selector with variable</title><link>http://www.bartlannoeye.be:80/blog/be-aware-of-dom-state-jquery-selector-with-variable</link><description>&lt;p&gt;Recently we were working on some jQuery code that added several controls to the page in a loop, and performed some manipulations, like .hide() on them. Since we needed this functionality in 2 different places, we did some refactoring and moved it into a separate function. And that&amp;rsquo;s when the fun started.&lt;/p&gt;
&lt;h3&gt;Problem&lt;/h3&gt;
&lt;p&gt;Since you can&amp;rsquo;t change the readonly property once the element is created, you&amp;rsquo;ll have to work with a div with an input element in it and hide/show it according to whether you&amp;rsquo;re able to enter data or not. This is used quite often to simulate a regular and an edit state of some fields. For this post, I&amp;rsquo;ve done something similar, but used a label instead of an input element with readonly state.&lt;/p&gt;
&lt;pre class="js" name="code"&gt;$(document).ready(function(){
    fillContacts();
});

function fillContacts(){
    var lastRow = $('.persons tr:last-child');
    var names = new Array( 'Bart', 'Jan', 'Piet' );

    for(i=0; i&amp;lt;names.length; i++){
        try{
            var newRow = createNewContactRow(i, names[i], lastRow);
            $(newRow).insertAfter(lastRow);
            // maybe some extra manipulations on $(newRow)
            lastRow = newRow;
        }
        catch(e){}
    }
}

// create row
function createNewContactRow(i, name, lastRow){
    var newRow = $('&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;div id="editname_' + i + '"&amp;gt;&amp;lt;input id="inputname_' + i + '" value="' + name + '" /&amp;gt;&amp;lt;/div&amp;gt;'
    + '&amp;lt;div id="readonlyname_' + i + '"&amp;gt;&amp;lt;label id="name_' + i + '"&amp;gt;' + name + '&amp;lt;/label&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;'
    + '&amp;lt;div id="edit_' + i + '"&amp;gt;&amp;lt;a href="#" class="edit"&amp;gt;Edit&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;'
    + '&amp;lt;div id="save_' + i + '"&amp;gt;&amp;lt;a href="#" class="save"&amp;gt;Save&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;');

    $('#editname_' + i).hide();
    $('#save_' + i).hide();

    return newRow;
}&lt;/pre&gt;
&lt;p&gt;In the code above, we create several new rows with an input element to edit the name, a label with the name, an edit link and a save link. In the initial state the page should be in readonly state, so the input element and the save link have to be hidden. However if you try to run the code above, the input elements and save links are still shown on the page.&lt;/p&gt;
&lt;p&gt;One easy cheat is to hide the elements by using the CSS class selector. But since in our case the initial state of each row could be different (according to the state of another element), we couldn&amp;rsquo;t fall back on this easy workaround.&lt;/p&gt;
&lt;pre class="js" name="code"&gt;$('.save').hide();&lt;/pre&gt;
&lt;h3&gt;Solution&lt;/h3&gt;
&lt;p&gt;The solution is actually very simple: make sure that your newly created element is &lt;b&gt;added to the DOM&lt;/b&gt; before you do any manipulations on it. This sounds logic of course, but it&amp;rsquo;s something that is overseen very easily. Like when you&amp;rsquo;re in the case shown above, you can start doubting the selector with the variable, instead of figuring out the real problem.&lt;/p&gt;
&lt;pre class="js" name="code"&gt;// create row and add directly to DOM before any further manipulations
function createNewContactRow(i, name, lastRow){
    var newRow = $('&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;div id="editname_' + i + '"&amp;gt;&amp;lt;input id="inputname_' + i + '" value="' + name + '" /&amp;gt;&amp;lt;/div&amp;gt;'
    + '&amp;lt;div id="readonlyname_' + i + '"&amp;gt;&amp;lt;label id="name_' + i + '"&amp;gt;' + name + '&amp;lt;/label&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;'
    + '&amp;lt;div id="edit_' + i + '"&amp;gt;&amp;lt;a href="#" class="edit"&amp;gt;Edit&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;'
    + '&amp;lt;div id="save_' + i + '"&amp;gt;&amp;lt;a href="#" class="save"&amp;gt;Save&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;');

    // first add to DOM, then manipulate
    $(newRow).insertAfter(lastRow);

    $('#editname_' + i).hide();
    $('#save_' + i).hide();

    // possibly return for further manipulation in the caller method
    return newRow;
}&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;Note that this problem not only occurs with .hide(), but with any DOM manipulation, like e.g. .val().&lt;/em&gt;&lt;/p&gt;</description><pubDate>Fri, 09 Jul 2010 20:15:00 GMT</pubDate><guid isPermaLink="true">http://www.bartlannoeye.be:80/blog/be-aware-of-dom-state-jquery-selector-with-variable</guid></item><item><title>Select a (belgian) town according to zip code</title><link>http://www.bartlannoeye.be:80/blog/select-a-belgian-town-according-to-zip-code</link><description>&lt;p&gt;When you register on a site, quite often you have to enter your address. As with any other free text field, it's hard to retain high data quality (e.g for the city, someone can enter New York, NEW YORK or even miss-type it as NewYork, ...). However unlike a person's name, the list of towns in a country is defined and rather static. This means we can add logic to normalize or even validate the input, either at server or at client side.&lt;/p&gt;
&lt;p&gt;Another useful fact with this part of one's address is that in most countries there is a certain link between the zip code and the place. This enables us to improve the usability of our application by automatically completing (or proposing values for) one part given the data entered in the other part.&lt;br /&gt;In my case I choose to let the user fill in the zip code and proposed the city name according to the zip code. This raises the usability but also cancels out any possible typing mistakes on the city name. I've seen several different implementations to achieve this, but personally I prefer some sort of dropdown with the possible values.&lt;/p&gt;
&lt;p&gt;&lt;img title="postalCode" alt="postalCode" src="http://www.bartlannoeye.be/Media/Default/BlogPost/images/postalCode.png" height="150" width="201" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;In the jQuery UI library there is an &lt;a href="http://jqueryui.com/download" target="_blank"&gt;Autocomplete widget&lt;/a&gt; that does exactly what I need. This widget can use either a local datasource or a webservice in combination with Ajax as datasource. Chose the one according to the size of your datasource and the responsiveness needed. Extra themes are available on the site.&lt;/p&gt;
&lt;p&gt;If you want to use the jQuery UI Autocomplete for zip codes, it might be interesting to switch out the default search functionality, which looks if the result contains your search string, for a search on &amp;lsquo;starts with&amp;rsquo;. The user knows his own zip code and has no interest in other zip codes that contain part of his zip code in a different place.&lt;/p&gt;
&lt;p&gt;Although one of the &lt;a href="http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/" target="_blank"&gt;predecessor autocomplete plugins&lt;/a&gt;, had a &amp;lsquo;starts with&amp;rsquo; functionality, jQuery UI Autocomplete does not implement this. You&amp;rsquo;ll have to write your own callback function that you can pass into the source property. There are several possibilities to check if a string starts with a given search string, this is one of them:&lt;/p&gt;
&lt;pre class="js" name="code"&gt;String.prototype.startsWith = function(str){
    return (this.indexOf(str) == 0);
}&lt;/pre&gt;
&lt;p&gt;Now we return to the scenario described above and the next step is to create our data source. In Belgium, &lt;a href="http://www.post.be/site/nl/residential/customerservice/search/postal_codes.html" target="_blank"&gt;the list of zip codes and place names&lt;/a&gt; consists of about 2900 combinations (multi language included for cities that require it, e.g. Brussels) and is available on the site of the belgian postal services (&lt;a href="http://www.bpost.be"&gt;www.bpost.be&lt;/a&gt;).&lt;br /&gt;This is already quite large for a local datasource, but in my implementation I couldn&amp;rsquo;t use Ajax and thus had to convert the list to a JavaScript array. The rather large size of the list does give some minor performance issues if you filter the list right away on the first key-stroke. Better is to wait for a few key-strokes, by setting the minLength parameter, before filtering and showing the list. You can even wait until the last character is entered before filtering and proposing any results.&lt;/p&gt;
&lt;p&gt;As final change I limited the amount of results shown at the same time. This to again improve the performance, and to prevent the page from resizing and showing (longer) scrollbars. With this last tweak, my search for belgian zip codes is user-friendly, quick and good-looking thanks to the jQuery UI Autocomplete functionality.&lt;/p&gt;
&lt;p&gt;Since the users were limited to Belgium only, I could focus on a solution specific for one single country. It can however be expanded by using multiple zip code libraries (loaded statically or dynamically), or even better by using a webservice and Ajax since the dataset will be much larger in most cases. Also don&amp;rsquo;t forget to add some error checking on the zip code and you&amp;rsquo;re ready to go.&lt;/p&gt;
&lt;p&gt;A small example of this scenario can be downloaded &lt;a href="http://www.bartlannoeye.be/Media/Default/BlogPost/binary/autocomplete.zip" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 05 Jul 2010 20:45:00 GMT</pubDate><guid isPermaLink="true">http://www.bartlannoeye.be:80/blog/select-a-belgian-town-according-to-zip-code</guid></item><item><title>Unit Testing SharePoint using Behaviors, Moles and Pex</title><link>http://www.bartlannoeye.be:80/blog/unit-testing-sharepoint-using-behaviors-moles-and-pex</link><description>&lt;p&gt;I stumbled upon the &lt;a href="http://research.microsoft.com/en-us/projects/pex/pexsharepointbehaviors.pdf" target="_blank"&gt;latest version&lt;/a&gt; of the official tutorial for &amp;lsquo;writing Unit Tests for SharePoint using Behaviors, Moles and &lt;a href="http://research.microsoft.com/en-us/projects/pex/" target="_blank"&gt;Pex&lt;/a&gt;&amp;rsquo;. It's certainly worth reading! If you don&amp;rsquo;t know what Pex or &amp;lsquo;White Box Unit Testing&amp;rsquo; is, you should go have a look at the &lt;a href="http://research.microsoft.com/en-us/projects/pex/" target="_blank"&gt;official site&lt;/a&gt; (Pex can also be used to do white box unit testing on non-SharePoint applications).&lt;/p&gt;
&lt;p&gt;For those interested in this topic, &amp;lsquo;Testing SharePoint with Pex&amp;rsquo; is also one of the sessions on the &lt;a href="http://www.communityday.be" target="_blank"&gt;Belgian Community Day 2010&lt;/a&gt;, given by my colleague &lt;a href="http://www.tomvangaever.be/blog/" target="_blank"&gt;Tom Van Gaever&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 09 Jun 2010 07:45:00 GMT</pubDate><guid isPermaLink="true">http://www.bartlannoeye.be:80/blog/unit-testing-sharepoint-using-behaviors-moles-and-pex</guid></item><item><title>Managing your help documentation with HTML Help Workshop</title><link>http://www.bartlannoeye.be:80/blog/managing-your-help-documentation-with-html-help-workshop</link><description>&lt;p&gt;There are several possibilities to create and maintain your (help) documentation. One of them is using the official &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=00535334-c8a6-452f-9aa0-d597d16580cc&amp;amp;displaylang=en" target="_blank"&gt;Microsoft Help SDK&lt;/a&gt; which creates a .chm (compiled HTML) file. Even though the tools are from the &amp;lsquo;dark ages&amp;rsquo; (latest release is 3/4/2003), the .chm file format is still used regularly to create documentation, for example by &lt;a href="http://shfb.codeplex.com/" target="_blank"&gt;SandCastle&lt;/a&gt;. An extra reason why it&amp;rsquo;s useful to know the tool, is the possibility to revert the .chm file to a set of separate HTML files. This allows you to publish the help as a web application, or even more important, to make some changes or append extra info to a generated .chm file. More on this below.&lt;/p&gt;
&lt;p&gt;When you download the HTML Help Workshop, you can also download the official manual which describes all possibilities in detail, but this post describes the most important things to know to give you a head start.&lt;/p&gt;
&lt;h3&gt;Create a new project&lt;/h3&gt;
&lt;p&gt;To create your first .chm documentation file, use the menu &amp;lsquo;File&amp;rsquo; &amp;gt; &amp;lsquo;New&amp;rsquo; &amp;gt; &amp;lsquo;Project&amp;rsquo;. This will open up a small wizard to get your started. Normally you won&amp;rsquo;t have any index or content files yet, so you can skip most of the steps. Double click on &amp;lsquo;[OPTIONS]&amp;rsquo; to change any properties like the file name and the language. This is also the place where you define the default file to show when opening the documentation. You&amp;rsquo;ll most likely have to change this (a few times) in the course of creating the documentation when you feel another page is better fit to be the first page.&lt;/p&gt;
&lt;p&gt;&lt;img title="HTML_HelpOptions" alt="HTML_HelpOptions" src="http://www.bartlannoeye.be/Media/Default/BlogPost/images/HTML_HelpOptions.png" height="467" width="358" /&gt;&lt;/p&gt;
&lt;h3&gt;Adding content, index and search&lt;/h3&gt;
&lt;p&gt;The next step is adding a content and an index file. This can be done by clicking the &amp;lsquo;Contents&amp;rsquo; and &amp;lsquo;Index&amp;rsquo; tab in the HTML Help Workshop. These files will store the actual content and index trees (and are not much more than an html unordered list). You can also add an advanced search, which in my opinion is one of the major strengths. I&amp;rsquo;ll describe this a bit later in this post.&lt;/p&gt;
&lt;p&gt;Once the structure template is ready, it&amp;rsquo;s time to fill it up with the actual documentation. For this you add your content as separate HTML pages in the HTML Help Workshop under the project tab. Adding the files here ensures it shows up in the list when adding a new item in the content tree or a key in the index. You can also add the directly to the content or index tree without adding them to the project first if the list isn&amp;rsquo;t clear enough (items in the list are shown by the title tag in the HTML file).&lt;/p&gt;
&lt;p&gt;The commonly used structure of &amp;lsquo;headings&amp;rsquo; (mostly shown as books in .chm files) and topics is clear to most people. But interesting to know is that you can create subentries, or in other words add one or more existing topics to an existing heading (or remove them) by using the left and right arrows in the tool bar. You might get a warning from the application, if it thinks your action is against &amp;lsquo;normal logic&amp;rsquo;, e.g. removing the first topic from a heading by using the left arrow; all subsequent topics on the same level will also be moved up a level together with the first one. The same counts for creating a tree in the index tab.&lt;/p&gt;
&lt;p&gt;After adding some pages, it&amp;rsquo;s time to create an index. You can use different approaches to populate this list, but quite often multiple entries for the same page are used. One or more entries (with a different title) reside at the top level, and another entry for the same page is a subentry of a more general topic. This allows the user to search on the topic itself (e.g. testing) or find it under the more general item (e.g. development).&lt;/p&gt;
&lt;p&gt;&lt;img title="HTML_HelpIndex" alt="HTML_HelpIndex" src="http://www.bartlannoeye.be/Media/Default/BlogPost/images/HTML_HelpIndex.png" height="118" width="153" /&gt;&lt;/p&gt;
&lt;p&gt;But for better search support you should consider adding the &amp;lsquo;Search&amp;rsquo; tab. This search crawls all pages and shows any pages with hits on your search terms. As en extra, it also highlights the searched text in the page itself.&lt;/p&gt;
&lt;p&gt;&lt;img title="HTML_HelpSearch" alt="HTML_HelpSearch" src="http://www.bartlannoeye.be/Media/Default/BlogPost/images/HTML_HelpSearch.png" height="261" width="459" /&gt;&lt;/p&gt;
&lt;p&gt;To do this execute following steps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enable full-text search.&lt;/li&gt;
&lt;li&gt;Open a project (.hhp) file, and then click &lt;b&gt;Change Project Options&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;On the &lt;b&gt;Compiler&lt;/b&gt; tab, select the &lt;b&gt;Compile full-text search information&lt;/b&gt; check box, and then click &lt;b&gt;OK&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;Click &lt;b&gt;Add/Modify Window Definitions&lt;/b&gt;, and then click the &lt;b&gt;Navigation Pane&lt;/b&gt; tab.&lt;/li&gt;
&lt;li&gt;In the &lt;b&gt;Window type&lt;/b&gt; box, click the window you want, and then select the &lt;b&gt;Search tab&lt;/b&gt; check box. Select the &lt;b&gt;Advanced&lt;/b&gt; check box to add advanced full-text search features.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It might be interesting to define a &amp;lsquo;stop list&amp;rsquo; containing the words that you want to omit from the search, such as &amp;lsquo;the&amp;rsquo; or &amp;lsquo;and&amp;rsquo;. This will improve the search speed.&lt;/p&gt;
&lt;h3&gt;Decompile&lt;/h3&gt;
&lt;p&gt;Very useful is the possibility to decompile an existing .chm file. First of all it gives you a good idea how other people, and even Microsoft, creates their structure for the help documentation. But even better is the possibility this gives you to modify your existing .chm files even if you don&amp;rsquo;t have the original html structure anymore, or to modify and extend documentation generated by other tools like Sandcastle. You find this functionality under the File &amp;gt; Decompile menu item.&lt;/p&gt;
&lt;p&gt;You can find a list of other tools &lt;a href="http://www.thefreecountry.com/programming/helpauthoring.shtml" target="_blank"&gt;here&lt;/a&gt;. If you want to generate documentation/help from your .NET assemblies you should also have a look at &lt;a href="http://shfb.codeplex.com/" target="_blank"&gt;Sandcastle&lt;/a&gt;. This tool can also generate HTML Help 2.x (.HxS) files.&lt;/p&gt;</description><pubDate>Mon, 24 May 2010 19:30:00 GMT</pubDate><guid isPermaLink="true">http://www.bartlannoeye.be:80/blog/managing-your-help-documentation-with-html-help-workshop</guid></item></channel></rss>
