<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>Code</title>
        <link>http://www.kindohm.com/category/7.aspx</link>
        <description>Code</description>
        <language>en-US</language>
        <copyright>mike</copyright>
        <managingEditor>michael.hodnick@kindohm.com</managingEditor>
        <generator>Subtext Version 1.9.5.176</generator>
        <item>
            <title>Simulation Code Posted</title>
            <link>http://kindohm.com/archive/2008/04/26/simulation-code-posted.aspx</link>
            <description>&lt;p&gt;I've been working on a home-grown AI simulation for the past week or so.  The code is posted here:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://code.google.com/p/kindohm-life/" href="http://code.google.com/p/kindohm-life/"&gt;http://code.google.com/p/kindohm-life/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If I get some free time tonight I'll post some more interesting details about it.  Basically it's an environment with herbivores, carnivores, and plants that carry out their short lives walking, eating, mating, and then dying (usually of starvation - at least up to this point).  &lt;/p&gt;  &lt;p&gt;The motivation for this?  Just because.&lt;/p&gt;  &lt;p&gt;What have I learned so far?  A little bit about threading (in the user interface), and that adding one variable to your AI increases the complexity exponentially.  &lt;/p&gt;  &lt;div class="tags" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c674e15c-43e1-4a5a-880c-7edc1581af30"&gt;Technorati Tags: &lt;a target="_blank" href="http://technorati.com/tags/ai" rel="tag"&gt;ai&lt;/a&gt; &lt;a target="_blank" href="http://technorati.com/tags/simulation" rel="tag"&gt;simulation&lt;/a&gt; &lt;a target="_blank" href="http://technorati.com/tags/code" rel="tag"&gt;code&lt;/a&gt; &lt;a target="_blank" href="http://technorati.com/tags/programming" rel="tag"&gt;programming&lt;/a&gt;&lt;/div&gt;&lt;img src="http://kindohm.com/aggbug/2092.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>mike</dc:creator>
            <guid>http://kindohm.com/archive/2008/04/26/simulation-code-posted.aspx</guid>
            <pubDate>Sat, 26 Apr 2008 21:08:58 GMT</pubDate>
            <wfw:comment>http://kindohm.com/comments/2092.aspx</wfw:comment>
            <comments>http://kindohm.com/archive/2008/04/26/simulation-code-posted.aspx#feedback</comments>
            <wfw:commentRss>http://kindohm.com/comments/commentRss/2092.aspx</wfw:commentRss>
        </item>
        <item>
            <title>MODIG Slides and Code Posted</title>
            <link>http://kindohm.com/archive/2008/04/22/modig-slides-and-code-posted.aspx</link>
            <description>&lt;p&gt;Thanks to everyone who attended the &lt;a href="http://sharepointmn.com/modig"&gt;MODIG&lt;/a&gt; tonight on the MOSS Search API.  Slides and code are posted here: &lt;a title="http://tinyurl.com/6y5hc7" href="http://tinyurl.com/6y5hc7"&gt;http://tinyurl.com/6y5hc7&lt;/a&gt;&lt;/p&gt;  &lt;div class="tags" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:681ab018-b3cf-4ebd-889f-c80d25cfdbad"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/sharepoint" target="_blank" rel="tag"&gt;sharepoint&lt;/a&gt; &lt;a href="http://technorati.com/tags/MODIG" target="_blank" rel="tag"&gt;MODIG&lt;/a&gt; &lt;a href="http://technorati.com/tags/code" target="_blank" rel="tag"&gt;code&lt;/a&gt; &lt;a href="http://technorati.com/tags/MOSS" target="_blank" rel="tag"&gt;MOSS&lt;/a&gt;&lt;/div&gt;&lt;img src="http://kindohm.com/aggbug/2091.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>mike</dc:creator>
            <guid>http://kindohm.com/archive/2008/04/22/modig-slides-and-code-posted.aspx</guid>
            <pubDate>Wed, 23 Apr 2008 01:17:42 GMT</pubDate>
            <wfw:comment>http://kindohm.com/comments/2091.aspx</wfw:comment>
            <comments>http://kindohm.com/archive/2008/04/22/modig-slides-and-code-posted.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://kindohm.com/comments/commentRss/2091.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Twin Cities Code Camp Schedule Posted</title>
            <link>http://kindohm.com/archive/2008/03/05/twin-cities-code-camp-schedule-posted.aspx</link>
            <description>&lt;p&gt;The schedule for the Spring 2008 Twin Cities Code Camp has been posted:&lt;/p&gt; &lt;p&gt;&lt;a title="http://www.twincitiescodecamp.com/TCCC/Spring2008/Schedule.aspx" href="http://www.twincitiescodecamp.com/TCCC/Spring2008/Schedule.aspx"&gt;http://www.twincitiescodecamp.com/TCCC/Spring2008/Schedule.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;I'll be speaking at the end of the day on Extending &lt;a href="http://www.twincitiescodecamp.com/TCCC/Spring2008/Sessions.aspx#s6" target="_blank"&gt;SharePoint Search with the Search API&lt;/a&gt;.  &lt;/p&gt; &lt;div class="tags" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:7197cb74-1542-4b29-ac64-ca60ebca7efc"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/sharepoint" rel="tag" target="_blank"&gt;sharepoint&lt;/a&gt; &lt;a href="http://technorati.com/tags/code" rel="tag" target="_blank"&gt;code&lt;/a&gt;&lt;/div&gt;&lt;img src="http://kindohm.com/aggbug/2072.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>mike</dc:creator>
            <guid>http://kindohm.com/archive/2008/03/05/twin-cities-code-camp-schedule-posted.aspx</guid>
            <pubDate>Wed, 05 Mar 2008 15:16:52 GMT</pubDate>
            <wfw:comment>http://kindohm.com/comments/2072.aspx</wfw:comment>
            <comments>http://kindohm.com/archive/2008/03/05/twin-cities-code-camp-schedule-posted.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://kindohm.com/comments/commentRss/2072.aspx</wfw:commentRss>
        </item>
        <item>
            <title>SharePoint Search Bench v1.1.0.0 Released</title>
            <link>http://kindohm.com/archive/2008/02/18/sharepoint-search-bench-v1.1.0.0-released.aspx</link>
            <description>&lt;p&gt;Version 1.1.0.0 of SharePoint Search Bench has been released:&lt;/p&gt; &lt;p&gt;&lt;a title="http://www.codeplex.com/SPSearchBench" href="http://www.codeplex.com/SPSearchBench"&gt;http://www.codeplex.com/SPSearchBench&lt;/a&gt;&lt;/p&gt; &lt;p&gt;There are a few new features in this release:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Full Text query generation tools.  If you're not familiar with the syntax of Full Text search queries, there is a &lt;code&gt;FullTextBuilder&lt;/code&gt; class (and some other supporting classes) that can build the queries for you.  Something like this:&lt;br /&gt;&lt;br /&gt;&lt;code style="padding-right: 3px; padding-left: 3px; padding-bottom: 3px; padding-top: 3px; background-color: #cccccc"&gt;FullTextBuilder text = FullTextBuilder.Select("Title, Author").Where(Condition.FreeText("dog, cat"));&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Any number of conditions may be "and'ed" and "or'ed" together.&lt;br /&gt; &lt;/li&gt;&lt;li&gt;Support for verbose logging with log4net.  &lt;/li&gt;&lt;li&gt;A CHM help file with API documentation.  The documentation goes a little beyond listing the types and members in the assembly by providing some examples.  It is not 100% comprehensive yet.  &lt;/li&gt;&lt;/ol&gt; &lt;div class="tags" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:7ebda640-538b-48e7-8a64-e341cf00d55c"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/sharepoint" target="_blank" rel="tag"&gt;sharepoint&lt;/a&gt; &lt;a href="http://technorati.com/tags/code" target="_blank" rel="tag"&gt;code&lt;/a&gt;&lt;/div&gt;&lt;img src="http://kindohm.com/aggbug/2067.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>mike</dc:creator>
            <guid>http://kindohm.com/archive/2008/02/18/sharepoint-search-bench-v1.1.0.0-released.aspx</guid>
            <pubDate>Mon, 18 Feb 2008 19:36:09 GMT</pubDate>
            <wfw:comment>http://kindohm.com/comments/2067.aspx</wfw:comment>
            <comments>http://kindohm.com/archive/2008/02/18/sharepoint-search-bench-v1.1.0.0-released.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://kindohm.com/comments/commentRss/2067.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Programmatically create an InfoPath form instance from XSN template</title>
            <link>http://kindohm.com/archive/2008/01/10/programmatically-create-an-infopath-form-instance-from-xsn-template.aspx</link>
            <description>&lt;p&gt;There are lots of questions out on forums and blogs about how to programmatically create an InfoPath form from an InfoPath XSN template, but they all suggest the same thing: use the InfoPath application (or the Forms Server hosting page) to fill out a new, blank form by hand and then save the empty form xml somewhere.  Use the empty xml as a blank placeholder form that you can copy programmatically whenever you want.&lt;/p&gt; &lt;p&gt;This approach is valid, but it's a pain in the arse for deploying an InfoPath forms solution on a project.  Imagine you have ten InfoPath forms on a project that you need to deploy... that's ten forms you need to fill out by hand each time you do a deployment!  Plus, if the form design is ever updated, the blank placeholder form becomes invalid and it needs to be re-generated.&lt;/p&gt; &lt;p&gt;Now, the reason why folks are suggesting using a blank form is because doing it without a blank form is damn hard!  However, here's how you do it...&lt;/p&gt; &lt;p&gt;Prerequisites:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;You can only do this within the context of a SharePoint site  &lt;/li&gt;&lt;li&gt;The SharePoint site must have the "Office SharePoint Server Enterprise Site Collection features" feature enabled.  &lt;/li&gt;&lt;/ol&gt; &lt;p&gt;&lt;strong&gt;Step 1: Create a custom ASP.NET web page with a PlaceHolder&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;%@ Page Language="C#" 
    AutoEventWireup="true" 
    Codebehind="FormXmlGenerator.aspx.cs"
    Inherits="MyWebApp.FormXmlGenerator" %&amp;gt;
&amp;lt;html xmlns="http://www.w3.org/1999/xhtml"&amp;gt;
&amp;lt;head runat="server"&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;form id="form1" runat="server"&amp;gt;
            &amp;lt;asp:PlaceHolder 
		ID="formHostPlaceholder" 
		runat="server" /&amp;gt;
    &amp;lt;/form&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Step 2: Add the code behind&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In the code behind, you're going to create an instance of an XmlFormView control. An XmlFormView is an InfoPath Forms Services control that hosts an InfoPath form on any ASP.NET page (as long as you're running it in SharePoint). You can also host the XSN template, which is what this code behind will do. Make sure you reference the System.IO, Microsoft.Office.InfoPath.Server and Microsoft.Office.InfoPath.Server.Controls namespaces.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.Office.InfoPath.Server;
using Microsoft.Office.InfoPath.Server.Controls;
using System.IO;

namespace MyWebApp
{
    public partial class FormXmlGenerator : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            XmlFormView formView = new XmlFormView();
            formView.Initialize += 
		new EventHandler&amp;lt;InitializeEventArgs&amp;gt;(formView_Initialize);
            string url = "http://site/MyXSNLocation.xsn";
            this.formHostPlaceholder.Controls.Add(formView);
            formView.XsnLocation = url;
        }

        void formView_Initialize(object sender, InitializeEventArgs e)
        {
            XmlFormView formView = sender as XmlFormView;
            Stream stream = 
		formView.XmlForm.Template.OpenFileFromPackage("template.xml");
            StreamReader reader = new StreamReader(stream);
            string xml = reader.ReadToEnd();
            this.Response.Clear();
            this.Response.ContentType = "text/xml";
            this.Response.Write(xml);
            this.Response.End();
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note the use of the &lt;a href="http://msdn2.microsoft.com/en-us/library/microsoft.office.infopath.formtemplate.openfilefrompackage(VS.80).aspx" target="_blank"&gt;OpenFileFromPackage&lt;/a&gt; method in the Initialize event handler. That is a method that will extract the template.xml file (or any other file) from the XSN. The template.xml file is a "blank" form used to create a new instance of an InfoPath form from a template. &lt;/p&gt;
&lt;p&gt;The rest of the code behind is cake. Just write out the contents of the xml file in the HttpResponse.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 3: Deploy your ASP.Net page to SharePoint&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Copy your custom page somewhere into the 12/template/layouts folder on the SharePoint web front end box, and deploy the web dll to the bin folder of your web application.  You may need to modify the trust level of your web.config, use a custom security policy, and/or stronly name your web assembly for your page to work correctly.  This isn't an easy step, but it's details are outside the scope of this post [1].  &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 4: Make a web client call to the custom ASP.Net page in code&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Now all you need to do is point to your custom web page in code and download the xml. After that, do whatever you want with the xml... throw it in a document library, the file system, etc.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;WebClient client = new WebClient();
client.Credentials = CredentialCache.DefaultCredentials;
Stream stream = client.OpenRead("http://site/_layouts/XmlFormGenerator.aspx");
StreamReader reader = new StreamReader(stream);
string formXml = reader.ReadToEnd();&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;-- end example --&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I thought that maybe I could just peek at the implementation of that OpenFileFromPackage method and see what SharePoint does behind the scenes to get that template.xml file. I cracked open the Microsoft.Office.InfoPath assembly in &lt;a href="http://www.aisto.com/roeder/dotnet/" target="_blank"&gt;Reflector&lt;/a&gt;, but unfortunately found this:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kindohm.com/localimages/posts/ProgrammaticallycreateInfoPathforminstan_13E73/Untitled.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="85" alt="Untitled" src="http://kindohm.com/localimages/posts/ProgrammaticallycreateInfoPathforminstan_13E73/Untitled_thumb.png" width="373" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In summary, this approach is a bit hack-ish, but when &lt;strong&gt;&lt;em&gt;doesn't&lt;/em&gt;&lt;/strong&gt; Office development involve creativity, magic, a giant leap of faith, and some shamrocks?   In all seriousness, the implementation behind the scenes of producing the blank form xml is not pretty, but for the developer who consumes the custom web page it's pretty painless.  &lt;/p&gt;
&lt;p&gt;There are other alternatives to solving this problem that involve performing CAB file extractions.  However, they involve either a) hosting extract.exe [2] in a process or b) writing your own .Net library that performs CAB extractions.  There is one .Net library out there (&lt;a title="http://www.codeproject.com/KB/files/CABCompressExtract.aspx" href="http://www.codeproject.com/KB/files/CABCompressExtract.aspx"&gt;http://www.codeproject.com/KB/files/CABCompressExtract.aspx&lt;/a&gt;) that extracts files from CABs, but it is not strongly named (bad because it can't be used within SharePoint) and it is written in C++ (bad for me because I don't understand C++).  There &lt;strong&gt;&lt;em&gt;are&lt;/em&gt;&lt;/strong&gt; ways around this, but my solution is fast to develop and more fun.  &lt;/p&gt;
&lt;p&gt;PS - Thanks to &lt;a href="http://www.iwkid.com" target="_blank"&gt;IWKID&lt;/a&gt; for suggesting this approach to solving the problem&lt;/p&gt;
&lt;p&gt;[1] If you don't know how to deploy a custom page onto your web front end, you probably shouldn't be trying out this whole idea anyway.  Just kidding.&lt;/p&gt;
&lt;p&gt;[2] extract.exe is a part of the &lt;a href="http://support.microsoft.com/kb/310618" target="_blank"&gt;Microsoft Cabinet SDK&lt;/a&gt;.  &lt;/p&gt;
&lt;div class="tags" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:2ccd02e2-b9c6-4921-b188-fbee667babd3"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/sharepoint" target="_blank" rel="tag"&gt;sharepoint&lt;/a&gt; &lt;a href="http://technorati.com/tags/infopath" target="_blank" rel="tag"&gt;infopath&lt;/a&gt; &lt;a href="http://technorati.com/tags/asp.net" target="_blank" rel="tag"&gt;asp.net&lt;/a&gt; &lt;a href="http://technorati.com/tags/programming" target="_blank" rel="tag"&gt;programming&lt;/a&gt;&lt;/div&gt;&lt;img src="http://kindohm.com/aggbug/2043.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>mike</dc:creator>
            <guid>http://kindohm.com/archive/2008/01/10/programmatically-create-an-infopath-form-instance-from-xsn-template.aspx</guid>
            <pubDate>Fri, 11 Jan 2008 05:57:50 GMT</pubDate>
            <wfw:comment>http://kindohm.com/comments/2043.aspx</wfw:comment>
            <comments>http://kindohm.com/archive/2008/01/10/programmatically-create-an-infopath-form-instance-from-xsn-template.aspx#feedback</comments>
            <wfw:commentRss>http://kindohm.com/comments/commentRss/2043.aspx</wfw:commentRss>
        </item>
        <item>
            <title>DevConn Day 0 [pre-con] ARP302: How to create rich Silverlight applications</title>
            <link>http://kindohm.com/archive/2007/11/05/devconn-day-0-pre-con-arp302-how-to-create-rich-silverlight.aspx</link>
            <description>&lt;p&gt;I attended a pre-conference session on Silverlight almost immediately after getting off the plane.  Unfortunately it wasn't a very good session for me.  I'm finding that most Silverlight sessions are about XAML - not the fine details about Silverlight.  &lt;/p&gt; &lt;p&gt;This session covered the basics of setting up a Silverlight project in Visual Studio from scratch, which was good.  So far I've only seen Silverlight projects created from project templates.  I like being able to see stuff get set up without any smoke and mirrors and to see the raw code.  But after about 10 minutes of that, it was nothing but creating shapes and animations with XAML after that.  &lt;/p&gt; &lt;p&gt;I keep hearing that Silverlight is nothing more than a way to deliver XAML across multiple browsers and OS's, and I finally believe that that is &lt;strong&gt;&lt;em&gt;all&lt;/em&gt;&lt;/strong&gt; there is to Silverlight.  If you know WPF and a little bit of ASP .Net and Javascript, then I wouldn't recommend going to a Silverlight presentation.  &lt;/p&gt; &lt;div class="tags" id="0767317B-992E-4b12-91E0-4F059A8CECA8:510f2fff-f303-412a-8e7c-2eea15431ce1" contenteditable="false"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/silverlight%20devconn" target="_blank" rel="tag"&gt;silverlight devconn&lt;/a&gt;&lt;/div&gt;&lt;img src="http://kindohm.com/aggbug/2002.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>mike</dc:creator>
            <guid>http://kindohm.com/archive/2007/11/05/devconn-day-0-pre-con-arp302-how-to-create-rich-silverlight.aspx</guid>
            <pubDate>Tue, 06 Nov 2007 01:02:59 GMT</pubDate>
            <wfw:comment>http://kindohm.com/comments/2002.aspx</wfw:comment>
            <comments>http://kindohm.com/archive/2007/11/05/devconn-day-0-pre-con-arp302-how-to-create-rich-silverlight.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://kindohm.com/comments/commentRss/2002.aspx</wfw:commentRss>
        </item>
        <item>
            <title>SharePoint Search Bench Initial Release</title>
            <link>http://kindohm.com/archive/2007/11/01/sharepoint-search-bench-initial-release.aspx</link>
            <description>&lt;p&gt;&lt;a title="Photo Sharing" href="http://www.flickr.com/photos/kindohm/1813374111/" target="_blank"&gt;&lt;img style="margin: 5px" height="230" alt="SharePoint Search Bench Screen Shot" src="http://farm3.static.flickr.com/2268/1813374111_f0f0642e5b_m.jpg" width="240" align="right" border="0" /&gt;&lt;/a&gt; &lt;a href="http://codeplex.com/SPSearchBench" target="_blank"&gt;Download SharePoint Search Bench from www.codeplex.com/SPSearchBench&lt;/a&gt;&lt;/p&gt; &lt;p&gt;SharePoint Search Bench is a WPF application used to run full-text SQL and keyword queries against Microsoft Office SharePoint Server (MOSS) search.   &lt;/p&gt; &lt;p&gt;This project is something I've had in the works for a little while.  Extending MOSS search is a common task among SharePoint developers, yet there aren't really any tools available to test, try, or develop queries against MOSS search.  Unlike SQL Server, MOSS doesn't ship with a "Query Analyzer".  On projects where I was extending MOSS search, I found myself writing my own app to write and test queries.  &lt;/p&gt; &lt;p&gt;Here are some notable features about the app:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Supports searching against MOSS using MOSS Search  &lt;/li&gt;&lt;li&gt;Supports searching via object model (on server)  &lt;/li&gt;&lt;li&gt;Supports searching via web service (remote clients)  &lt;/li&gt;&lt;li&gt;Supports Full Text searches using full text SQL syntax  &lt;/li&gt;&lt;li&gt;Supports keyword searches, including custom returned columns/properties  &lt;/li&gt;&lt;li&gt;Lists available search scopes and managed properties  &lt;/li&gt;&lt;li&gt;Ability to change query packet XML for web service calls  &lt;/li&gt;&lt;li&gt;Ability to save your connection and query settings between sessions &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;App characteristics:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Built on WPF  &lt;/li&gt;&lt;li&gt;Built using VS 2005 and WPF extensions  &lt;/li&gt;&lt;li&gt;.Net 3.0 required  &lt;/li&gt;&lt;li&gt;Does not support WSS, CAML or List-based queries/searches  &lt;/li&gt;&lt;li&gt;Does not support WSS v2 or SPS &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Another purpose of developing the app was to continue learning WPF.  I've had my head in WPF for a long, long time, but haven't ventured outside of its 3D features very much.  I wanted this WPF app to be clean and take advantage of certain features that WPF provides.  Specifically, lots of data binding, heavy re-use of styles, data templates, and control templates.&lt;/p&gt; &lt;p&gt;The CodePlex project has a forum and issue tracker open, so feel free to leave feedback or report problems.  &lt;/p&gt; &lt;div class="tags" id="0767317B-992E-4b12-91E0-4F059A8CECA8:15260473-e2ef-4e21-bc7f-086ef04cb103" contenteditable="false"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/sharepoint" target="_blank" rel="tag"&gt;sharepoint&lt;/a&gt; &lt;a href="http://technorati.com/tags/moss" target="_blank" rel="tag"&gt;moss&lt;/a&gt; &lt;a href="http://technorati.com/tags/search" target="_blank" rel="tag"&gt;search&lt;/a&gt; &lt;a href="http://technorati.com/tags/wpf" target="_blank" rel="tag"&gt;wpf&lt;/a&gt; &lt;a href="http://technorati.com/tags/code" target="_blank" rel="tag"&gt;code&lt;/a&gt;&lt;/div&gt;&lt;img src="http://kindohm.com/aggbug/1999.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>mike</dc:creator>
            <guid>http://kindohm.com/archive/2007/11/01/sharepoint-search-bench-initial-release.aspx</guid>
            <pubDate>Thu, 01 Nov 2007 14:15:15 GMT</pubDate>
            <wfw:comment>http://kindohm.com/comments/1999.aspx</wfw:comment>
            <comments>http://kindohm.com/archive/2007/11/01/sharepoint-search-bench-initial-release.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://kindohm.com/comments/commentRss/1999.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Not Really Sealed Content Types in SharePoint 2007</title>
            <link>http://kindohm.com/archive/2007/06/06/not-really-sealed-content-types-in-sharepoint-2007.aspx</link>
            <description>&lt;p&gt;In the object-oriented world, when I hear the word "sealed" I think of preventing inheritance.  If I create a sealed class named Car, it means that I don't want anyone else to inherit or derive from Car.  &lt;/p&gt; &lt;p&gt;In WSS 3.0, you can create new Content Types that derive from a parent Content Type (e.g. a Car Content Type that derives from a parent Vehicle Content Type).  You can also create sealed Content Types.  You can refer to the &lt;a href="http://msdn2.microsoft.com/en-us/library/ms463449.aspx" target="_blank"&gt;Content Type Definition Schema&lt;/a&gt; and the &lt;a href="http://msdn2.microsoft.com/en-us/library/microsoft.sharepoint.spcontenttype.aspx" target="_blank"&gt;SPContentType class&lt;/a&gt; for details.  &lt;/p&gt; &lt;p&gt;So what does it mean to create a sealed Content Type?  Not as much as I had hoped.  It turns out that a sealed Content Type is not analogous to a sealed class in OOP.  You can derive a new child Content Type from a sealed parent Content Type.  Let's dig in...&lt;/p&gt; &lt;p&gt;I created a Feature that creates a new sealed Content Type with the following elements definition:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version="1.0" encoding="utf-8" ?&amp;gt;
&amp;lt;Elements 
  xmlns="http://schemas.microsoft.com/sharepoint/"&amp;gt;
  &amp;lt;ContentType ID="0x0100AFF5F6F939DB46e2B0FA996BBD1B51FB"
    Name="MikeContentType"
	Group="Mike Content Types"
	Description="A Mike item"
	Sealed="TRUE"
	FeatureId="9BF7D516-A19E-4740-9566-53E1A70EA414"&amp;gt;
  &amp;lt;/ContentType&amp;gt;
&amp;lt;/Elements&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;When you go to the edit screen for this new Content Type in WSS, you see the following:&lt;/p&gt;
&lt;p&gt;&lt;a title="Photo Sharing" href="http://www.flickr.com/photos/kindohm/533098450/" target="_blank"&gt;&lt;img height="419" alt="SealedContentType" src="http://farm2.static.flickr.com/1203/533098450_a3636d2ff9.jpg" width="500" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;WSS indicates that the Content Type is sealed (in parenthesis in the title). One thing to note is that all of the settings links and column options have been eliminated on this screen. The screen is basically empty.&lt;/p&gt;
&lt;p&gt;So let's try and derive a new Content Type from this sealed Content Type. Here is what the new Content Type creation screen looks like:&lt;/p&gt;
&lt;p&gt;&lt;a title="Photo Sharing" href="http://www.flickr.com/photos/kindohm/533195159/" target="_blank"&gt;&lt;img height="500" alt="NewChildContentType01" src="http://farm2.static.flickr.com/1166/533195159_5257ad4be0.jpg" width="464" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Notice in the Parent Content Type drop down list that I can select the sealed MikeContentType item. If you click ok and view the child content type, you see this:&lt;/p&gt;
&lt;p&gt;&lt;a title="Photo Sharing" href="http://www.flickr.com/photos/kindohm/533195185/" target="_blank"&gt;&lt;img height="492" alt="NewChildContentType02" src="http://farm2.static.flickr.com/1108/533195185_50c5e491b9.jpg" width="500" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The child content type shows the sealed MikeContentType as its parent. "Sealed" isn't so "sealed" in WSS-land.&lt;/p&gt;
&lt;p&gt;It appears that the only functionality that a sealed Content Type provides is the ability to lock down a content type's settings. If I modify the sealed Content Type definition to not be sealed, this is what its edit screen looks like:&lt;/p&gt;
&lt;p&gt;&lt;a title="Photo Sharing" href="http://www.flickr.com/photos/kindohm/533098494/" target="_blank"&gt;&lt;img height="500" alt="UnsealedContentType" src="http://farm2.static.flickr.com/1304/533098494_529adadd23.jpg" width="499" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now the previously-sealed Content Type can have its settings and columns modified through the UI. It appears as though that marking a Content Type as sealed only prevents editing it through the user interface - rather than preventing inheritance. &lt;/p&gt;
&lt;p&gt;This is pretty unfortunate if you ask me. First of all, it's misleading. Second of all, it doesn't appear that you can prevent Content Type inheritance. &lt;a href="http://www.justaddcode.com/blog" target="_blank"&gt;Neil&lt;/a&gt; suggested to me that inheritance could possibly be prevented using a &lt;a href="http://msdn2.microsoft.com/en-us/library/ms499244.aspx" target="_blank"&gt;custom policy&lt;/a&gt;. You could probably swing that, but I still wonder why the word "sealed" was chosen for out-of-the-box functionality that doesn't appear to have a "sealed" behavior. &lt;/p&gt;
&lt;p class="tags" id="0767317B-992E-4b12-91E0-4F059A8CECA8:a918a79b-b04c-4f87-aaf6-d04f46c377f7"&gt;del.icio.us tags: &lt;a href="http://del.icio.us/popular/sharepoint" target="_blank" rel="tag"&gt;sharepoint&lt;/a&gt; &lt;a href="http://del.icio.us/popular/wss" target="_blank" rel="tag"&gt;wss&lt;/a&gt; &lt;a href="http://del.icio.us/popular/contenttype" target="_blank" rel="tag"&gt;contenttype&lt;/a&gt; &lt;a href="http://del.icio.us/popular/content%20type" target="_blank" rel="tag"&gt;content type&lt;/a&gt; &lt;a href="http://del.icio.us/popular/sealed" target="_blank" rel="tag"&gt;sealed&lt;/a&gt; &lt;a href="http://del.icio.us/popular/programming" target="_blank" rel="tag"&gt;programming&lt;/a&gt; &lt;a href="http://del.icio.us/popular/oop" target="_blank" rel="tag"&gt;oop&lt;/a&gt;&lt;/p&gt;&lt;img src="http://kindohm.com/aggbug/1921.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>mike</dc:creator>
            <guid>http://kindohm.com/archive/2007/06/06/not-really-sealed-content-types-in-sharepoint-2007.aspx</guid>
            <pubDate>Wed, 06 Jun 2007 14:01:19 GMT</pubDate>
            <wfw:comment>http://kindohm.com/comments/1921.aspx</wfw:comment>
            <comments>http://kindohm.com/archive/2007/06/06/not-really-sealed-content-types-in-sharepoint-2007.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://kindohm.com/comments/commentRss/1921.aspx</wfw:commentRss>
        </item>
        <item>
            <title>PowerShell Script for SubText Tag Generation</title>
            <link>http://kindohm.com/archive/2007/05/25/powershell-script-for-subtext-tag-generation.aspx</link>
            <description>&lt;p&gt;Here's the script I use to generate tags for my &lt;a title="Subtext" href="http://www.subtextproject.com" target="_blank"&gt;Subtext&lt;/a&gt; posts.  It writes the tag HTML to the screen and also copies it to the clipboard for immediate pasting:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;if ($args.Length -ne 2)
{
  write-host 'Two arguments (site and tag list) expected'
  write-host 'Example: tags del.icio.us "scripts tags llama"'
  return
}

$site = $args[0]
$input = $args[1]
$delim = ' '
$splits = $input.Split($delim.ToCharArray())
$header = '&amp;lt;p class="tags"&amp;gt;tags: '
$footer = '&amp;lt;/p&amp;gt;'
$format = '&amp;lt;a href="http://' + $site + '/tag/{0}"'
$format += ' target="_blank" rel="tag"&amp;gt;{0}&amp;lt;/a&amp;gt; '

$html = new-object  System.Text.StringBuilder

[void]$html.Append($header)

for ($i = 0; $i -le $splits.Length; $i++)
{
  if ($splits[$i].Length -ge 1)
  {
    $newText = [System.String]::Format($format, $splits[$i])
    [void]$html.Append($newText)
  }
}

[void]$html.Append($footer)
set-clipboard -text $html
write-host $html&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;tags del.icio.us 'snow cookie alpaca'&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;... generates the following HTML:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;p class="tags"&amp;gt;tags: 
&amp;lt;a href="http://del.icio.us/tag/snow" 
  target="_blank" rel="tag"&amp;gt;snow&amp;lt;/a&amp;gt; 
&amp;lt;a href="http://del.icio.us/tag/cookie" 
  target="_blank" rel="tag"&amp;gt;cookie&amp;lt;/a&amp;gt; 
&amp;lt;a href="http://del.icio.us/tag/alpaca" 
  target="_blank" rel="tag"&amp;gt;alpaca&amp;lt;/a&amp;gt; 
&amp;lt;/p&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Have fun.&lt;/p&gt;

&lt;p class="tags"&gt;tags: &lt;a href="http://del.icio.us/tag/subtext" target="_blank" rel="tag"&gt;subtext&lt;/a&gt; &lt;a href="http://del.icio.us/tag/tags" target="_blank" rel="tag"&gt;tags&lt;/a&gt; &lt;a href="http://del.icio.us/tag/powershell" target="_blank" rel="tag"&gt;powershell&lt;/a&gt; &lt;a href="http://del.icio.us/tag/script" target="_blank" rel="tag"&gt;script&lt;/a&gt; &lt;/p&gt;&lt;img src="http://kindohm.com/aggbug/1913.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>mike</dc:creator>
            <guid>http://kindohm.com/archive/2007/05/25/powershell-script-for-subtext-tag-generation.aspx</guid>
            <pubDate>Fri, 25 May 2007 15:13:33 GMT</pubDate>
            <wfw:comment>http://kindohm.com/comments/1913.aspx</wfw:comment>
            <comments>http://kindohm.com/archive/2007/05/25/powershell-script-for-subtext-tag-generation.aspx#feedback</comments>
            <wfw:commentRss>http://kindohm.com/comments/commentRss/1913.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Subtext Upgrade, New Features, New Skin</title>
            <link>http://kindohm.com/archive/2007/05/16/subtext-upgrade-new-features-new-skin.aspx</link>
            <description>&lt;p&gt;Tonight, at random, I decided to upgrade my site and create a new design for it.  It's 12:30 AM and it's done.  No it's not.  I'm kidding.&lt;/p&gt;

&lt;p&gt;The latest release of &lt;a title="Subtext" href="http://www.subtextproject.com" target="_blank"&gt;Subtext&lt;/a&gt; now supports tagging and identicons.  Subtext uses a microformat for tagging, and I actually haven't quite figured out how to best integrate Subtext tagging in my site yet.  It just doesn't work as cleanly as I'd like.  &lt;/p&gt;

&lt;p class="tags"&gt;tags: 
&lt;a href="http://technorati.com/tags/subtext" target="_blank" rel="tag"&gt;subtext&lt;/a&gt;
&lt;a href="http://technorati.com/tags/web" target="_blank" rel="tag"&gt;web&lt;/a&gt;
&lt;a href="http://technorati.com/tags/kindohm.com" target="_blank" rel="tag"&gt;kindohm.com&lt;/a&gt;
&lt;a href="http://technorati.com/tags/tags" target="_blank" rel="tag"&gt;tags&lt;/a&gt;
&lt;a href="http://technorati.com/tags/tagging" target="_blank" rel="tag"&gt;tagging&lt;/a&gt;
&lt;a href="http://technorati.com/tags/blog" target="_blank" rel="tag"&gt;blog&lt;/a&gt;
&lt;/p&gt;&lt;img src="http://kindohm.com/aggbug/1902.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>mike</dc:creator>
            <guid>http://kindohm.com/archive/2007/05/16/subtext-upgrade-new-features-new-skin.aspx</guid>
            <pubDate>Wed, 16 May 2007 05:34:27 GMT</pubDate>
            <wfw:comment>http://kindohm.com/comments/1902.aspx</wfw:comment>
            <comments>http://kindohm.com/archive/2007/05/16/subtext-upgrade-new-features-new-skin.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://kindohm.com/comments/commentRss/1902.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>