<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://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>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>
        <item>
            <title>Use of Normals in WPF 3D</title>
            <link>http://kindohm.com/archive/2007/04/30/use-of-normals-in-wpf-3d.aspx</link>
            <description>&lt;p&gt;Download the source code for this post: &lt;a href="http://www.kindohm.com/files/normals3d.zip"&gt;Normals3D.zip&lt;/a&gt; (100 KB)&lt;/p&gt;

&lt;p&gt;One of the questions brought up during my WPF 3D talk at the Code Camp this weekend was what happens when you don't use normals in your meshes.  The answer is that it depends.  When you use a complete, discrete set of points for each flat surface in your mesh, the the effects of not using normals isn't that significant.  However, if you are "lazy" and use the fewest amount of points possible for all triangles in your mesh, then the effects of not using normals is more noticeable.  The reason for this is that each point in your mesh can only be assigned one normal.  Thus, if you have a vertex in your mesh that is the intersection of multiple triangles - and if you only use one position in your mesh to define that vertex - you can only use one normal to define what direction light will reflect off of all of the triangles at that point.  &lt;/p&gt;

&lt;p&gt;Take the corner of a cube, for example.  Six different triangles all converge at the same corner point on a cube (three sides all meet at one point, and each side has two triangles).  If you use one shared position for all six of these triangles, you can only use one normal.  If you need a good looking model, then you should use six separate points and define normals for each.  In the case of a cube, you could get away with three positions because two triangles on each side will likely have the same normal vector.&lt;/p&gt;

&lt;p&gt;Take this example:&lt;/p&gt;

&lt;p style="text-align: center;"&gt;&lt;a target="_blank" href="http://www.flickr.com/photos/kindohm/478510631/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/183/478510631_6691d59381_o.png" width="404" height="352" alt="WPF 3D Normals" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the "front" are three cubes - each created with 24 discrete positions.  Each side of the cube does not share any positions with another side.  The first cube has no normals, the second cube has normals that extend in perpendicular directions from the cube faces, and the third cube has "angled" normals that point at non-perpendicular angles from their faces.  One observation is that the cube without normals appears the same as the cube with perpendicular normals.  Honestly, I don't know why this happens.  My guess is that normals are automatically generated for a mesh (probably using a cross product of the first two sides of the triangle in the mesh) if none are explicitly assigned. The second observation you can make is that a normals have a significant effect on lighting - the non-perpendicular angles in the 3rd cube cause a very different lighting effect [1].&lt;/p&gt;

&lt;p&gt;In the "back" are three more cubes - which were created in a "lazy" manner with only eight discrete positions.  Each position is shared by converging triangles in the mesh.  You can see right away how using fewer points has an impact on the mesh's appearance under light.  In the 4th cube (1st lazy cube), no normals are assigned.  WPF came up with the normals/lighting itself.  In the 5th cube, I picked an arbitrary direction for the normals.  In the 6th cube, I used arbitrary normals that are not perpendicular.  &lt;/p&gt;

&lt;p&gt;The effect of normals on your model varies depending on how you build the positions in your mesh.  It all comes down to how much detail and "realism" you're going for.  The expected down side is that you need to do a little more work to get more detail.&lt;/p&gt;

&lt;p&gt;Download the source code: &lt;a href="http://www.kindohm.com/files/normals3d.zip"&gt;Normals3D.zip&lt;/a&gt; (100 KB)&lt;/p&gt;

&lt;p&gt;[1] I'm using both a diffuse and specular material in these cubes, so the cubes appear to have a shiny reflection.&lt;/p&gt;

&lt;p class="tags"&gt;
tags:
&lt;a href="http://technorati.com/tags/wpf" target="_blank" rel="tag"&gt;wpf&lt;/a&gt;
&lt;a href="http://technorati.com/tags/3d" target="_blank" rel="tag"&gt;3d&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/normals" target="_blank" rel="tag"&gt;normals&lt;/a&gt;
&lt;a href="http://technorati.com/tags/lighting" target="_blank" rel="tag"&gt;lighting&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://kindohm.com/aggbug/1895.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>mike</dc:creator>
            <guid>http://kindohm.com/archive/2007/04/30/use-of-normals-in-wpf-3d.aspx</guid>
            <pubDate>Mon, 30 Apr 2007 15:39:20 GMT</pubDate>
            <wfw:comment>http://kindohm.com/comments/1895.aspx</wfw:comment>
            <comments>http://kindohm.com/archive/2007/04/30/use-of-normals-in-wpf-3d.aspx#feedback</comments>
            <wfw:commentRss>http://kindohm.com/comments/commentRss/1895.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Code Camp - WPF 3D - Slides, Code, and Resources</title>
            <link>http://kindohm.com/archive/2007/04/28/code-camp-wpf-3d-slides-code-and-resources.aspx</link>
            <description>&lt;p&gt;Thanks to everyone who attended my talk at the &lt;a href="http://www.twincitiescodecamp.com" target="_blank"&gt;Twin Cities Code Camp&lt;/a&gt;.  Here is a list of stuff related to the talk that you can download:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;The PowerPoint slide deck: &lt;a href="http://www.kindohm.com/files/tccc/TCCC-WPF3D-slides.zip"&gt;TCCC-WPF3D-slides.zip&lt;/a&gt; (contains both Office 2007 and Office 2003 versions)&lt;/li&gt;
  &lt;li&gt;The demo code: &lt;a href="http://www.kindohm.com/files/tccc/CodeCamp.wpf3d.zip"&gt;CodeCamp.Wpf3D.zip&lt;/a&gt; (1 MB)&lt;/li&gt;
  &lt;li&gt;The "Moving Camera" application: &lt;a href="http://www.kindohm.com/files/tccc/MoveCamera.zip"&gt;MoveCamera.zip&lt;/a&gt; (8MB - includes media files)&lt;/li&gt;
  &lt;li&gt;The Cartography application (USA states map): &lt;a href="http://www.kindohm.com/files/tccc/Cartography3D-v2.zip"&gt;Cartography3D-v2.zip&lt;/a&gt; (500 kb)&lt;/li&gt;
  &lt;li&gt;The Cartography database in SQL backup form: &lt;a href="http://www.kindohm.com/files/tccc/CartographyDB.zip"&gt;CartographyDB.zip&lt;/a&gt; (37 MB)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I uploaded the entire Cartography database so that you can actually execute the code against the real data.  You could probably infer the schema from the classes and make up your own data, but what fun would that be for all of you?&lt;/p&gt;

&lt;p&gt;And here are the resources and case studies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/windowsvista/aa904955.aspx" target="_blank"&gt;Installs (Windows SDK, .NET 3.0, VS 2005 Extensions)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.kindohm.com/technical/WPF3DTutorial.htm" target="_blank"&gt;WPF 3D Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://wpf.netfx3.com/files/folders/labs/entry9680.aspx" target="_blank"&gt;3D Code Lab&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/3DTools" target="_blank"&gt;3DTools&lt;/a&gt; (trackball, etc) &lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/karstenj" target="_blank"&gt;Karsten J's blog&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/tims" target="_blank"&gt;Tim Sneath's blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/wpf3d/" target="_blank"&gt;WPF3D team blog&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href="http://www.microsoft.com/casestudies/casestudy.aspx?casestudyid=201147" target="_blank"&gt;The North Face case study&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://channel9.msdn.com/ShowPost.aspx?PostID=116426" target="_blank"&gt;The North Face demo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/wpf3d/archive/2007/03/01/flickr-photo-browser-source-code-now-available.aspx" target="_blank"&gt;Flickr photo browser&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/japan/windowsvista/webshowcase/domino.htm" target="_blank"&gt;Dominoken&lt;/a&gt;(requires IE 7) &lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;There were a number of questions that the audience asked that I didn't know the answer to.  When I get a chance to follow up on them I'll post my findings.&lt;/p&gt;

&lt;p&gt;Kudos to everyone who helped put on the event.  It was a blast!&lt;/p&gt;

&lt;p class="tags"&gt;
tags:
&lt;a href="http://technorati.com/tags/codecamp" target="_blank" rel="tag"&gt;codecamp&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/presentation" target="_blank" rel="tag"&gt;presentation&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/slidles" target="_blank" rel="tag"&gt;slides&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://kindohm.com/aggbug/1893.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>mike</dc:creator>
            <guid>http://kindohm.com/archive/2007/04/28/code-camp-wpf-3d-slides-code-and-resources.aspx</guid>
            <pubDate>Sat, 28 Apr 2007 20:41:34 GMT</pubDate>
            <wfw:comment>http://kindohm.com/comments/1893.aspx</wfw:comment>
            <comments>http://kindohm.com/archive/2007/04/28/code-camp-wpf-3d-slides-code-and-resources.aspx#feedback</comments>
            <wfw:commentRss>http://kindohm.com/comments/commentRss/1893.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>