<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>Szymon Kobalczyk's Blog</title>
        <link>http://geekswithblogs.net/kobush/Default.aspx</link>
        <description>A Developer's Notebook</description>
        <language>pl-PL</language>
        <copyright>Szymon Kobalczyk</copyright>
        <managingEditor>skobalczyk@gmail.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <image>
            <title>Szymon Kobalczyk's Blog</title>
            <url>http://geekswithblogs.net/images/RSS2Image.gif</url>
            <link>http://geekswithblogs.net/kobush/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>What to do if your MS SQL Server 2005 eats 100% CPU at idle</title>
            <category>Development</category>
            <link>http://geekswithblogs.net/kobush/archive/2008/09/16/125204.aspx</link>
            <description>&lt;p&gt;Some time ago I got very strange situation on my development SQL Server 2005. Immediately after starting the process it went up to 100% CPU and stayed there for hours. There were no external connections, and I couldn't figure out what was causing this so I asked for help our best SQL geek &lt;a href="http://zine.net.pl/blogs/sqlgeek/" target="_blank"&gt;Paweł Potasiński&lt;/a&gt;. With his help we were able to figure out that this was caused by service broker running on one of the databases although we didn't find the root cause for this. &lt;/p&gt;&lt;p&gt;Fast forward few months, and last week I got into the same trouble after upgrading the database. Of course I didn't recall how exactly we fixed it last time. So today I had to gave up and ask for Paweł's help again. I wrote this post mostly because I don't want to bother him again on this. &lt;/p&gt;&lt;p&gt;So first you use this to see which databases have service broker enabled:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;SELECT &lt;/span&gt;&lt;span style="color: gray"&gt;* &lt;/span&gt;&lt;span style="color: blue"&gt;FROM &lt;/span&gt;&lt;span style="color: green"&gt;sys.databases &lt;/span&gt;&lt;span style="color: blue"&gt;WHERE &lt;/span&gt;is_broker_enabled &lt;span style="color: gray"&gt;= &lt;/span&gt;1&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;Then you can use ALTER TABLE ... SET DISABLE_BROKER but this would only work
&lt;p&gt;when database is not locked. Therefore the best way to do this is like this:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;ALTER &lt;/span&gt;DATABASE &lt;span style="color: gray"&gt;... &lt;/span&gt;SET &lt;span style="color: blue"&gt;SINGLE_USER WITH &lt;/span&gt;ROLLLBACK IMMEDIATE
GO
&lt;span style="color: blue"&gt;ALTER &lt;/span&gt;DATABASE &lt;span style="color: gray"&gt;... &lt;/span&gt;SET &lt;span style="color: blue"&gt;DISABLE_BROKER
&lt;/span&gt;GO
&lt;span style="color: blue"&gt;ALTER &lt;/span&gt;DATABASE &lt;span style="color: gray"&gt;... &lt;/span&gt;SET &lt;span style="color: blue"&gt;MULTI_USER
&lt;/span&gt;GO&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;Note that this will kick off all users connected to this database. &lt;/p&gt;
&lt;p&gt;Thanks for help Paweł - I owe you one more time :-)&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125204"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125204" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/kobush/aggbug/125204.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Szymon Kobalczyk</dc:creator>
            <guid>http://geekswithblogs.net/kobush/archive/2008/09/16/125204.aspx</guid>
            <pubDate>Tue, 16 Sep 2008 18:21:36 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/kobush/comments/125204.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/kobush/archive/2008/09/16/125204.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/kobush/comments/commentRss/125204.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/kobush/services/trackbacks/125204.aspx</trackback:ping>
        </item>
        <item>
            <title>Getting started with Managed Extensibility Framework</title>
            <category>Development</category>
            <link>http://geekswithblogs.net/kobush/archive/2008/09/08/125007.aspx</link>
            <description>&lt;p&gt;Last Friday Managed Extensibility Framework Preview 2 (MEF) was published on CodePlex. MEF is a new library in .NET that will simplify adding extension points to your applications. It enables discovery, loading and composition of the extensible components. You can now download the source code, samples and find more information on the project site: &lt;a title="http://www.codeplex.com/MEF" href="http://www.codeplex.com/MEF"&gt;http://www.codeplex.com/MEF&lt;/a&gt;&lt;/p&gt; &lt;p&gt;I was playing with the bits over the weekend and chatted with &lt;a href="http://blogs.msdn.com/gblock" target="_blank"&gt;Glenn Block&lt;/a&gt; (Program Manager on the .NET FX team that does MEF), who explained to me what MEF can do for us. I thought it would be beneficial to share this information, so I created a sample to demonstrate how MEF can be hosted in your application. Please note that this covers only a single scenario where I found MEF might be useful, but MEF probably can do much more for you. &lt;/p&gt; &lt;p&gt;Before we go any further you might want to download the sample project, so you can browse the source code while I walk through it: &lt;/p&gt; &lt;p&gt;&lt;a href="https://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=KobushCode&amp;amp;ReleaseId=1510" target="_blank"&gt;&lt;strong&gt;Download MefNavigationWindow project&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; &lt;h1&gt;Sample scenario&lt;/h1&gt; &lt;p&gt;So here is my sample scenario: Let's say you are building a Windows Forms application where you want to add browser like navigation capabilities. This means that your window contains a placeholder where you can load other "pages" be specifying only the page name. Sounds familiar? Yes, WPF supports this out of the box with then NavigationWindow and Pages. So in short we would like to build a NavigationWindow for Windows Forms. &lt;/p&gt; &lt;p&gt;Let's assume that our pages would be simply UserControls. Actually it is quite easy to load user control dynamically - you simply instantiate the control's type and add it to parent's Controls collection. The real problem here is how to map page name (string) to it's type. &lt;/p&gt; &lt;p&gt;For example we could create a section in app.config file that lists all available views and map their names to the corresponding types. This could look similar to this:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;pageMappings&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
  &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;page &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;Page1&lt;/span&gt;" &lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;MefNavigationWindow.Page1&lt;/span&gt;" &lt;span style="color: blue"&gt;/&amp;gt;
  &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;page &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;Page2&lt;/span&gt;" &lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;MefNavigationWindow.Page2&lt;/span&gt;" &lt;span style="color: blue"&gt;/&amp;gt;
  &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;page &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;Page3&lt;/span&gt;" &lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;MefNavigationWindow.Page3&lt;/span&gt;" &lt;span style="color: blue"&gt;/&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;pageMappings&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;Then our NavigationWindow would load these mappings and construct the pages using reflection. But I can see two potential problems here. &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In case of a client applications the configuration file is easily available to users to mess with, and doing so it would likely break the application. 
&lt;/li&gt;&lt;li&gt;Because the definition of class and mapping are kept in two separate places developers can easily forget to update the mappings when adding new pages to our solutions. &lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;Therefore a better solution could be to create a custom attribute that is used to assign page name to a given user control:&lt;/p&gt;&lt;pre class="code"&gt;[&lt;span style="color: #2b91af"&gt;PageMetadata&lt;/span&gt;(PageName = &lt;span style="color: #a31515"&gt;"Page1"&lt;/span&gt;)]
&lt;span style="color: blue"&gt;public partial class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Page1 &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;UserControl
&lt;/span&gt;{
    &lt;span style="color: gray"&gt;//&lt;/span&gt;&lt;span style="color: green"&gt;...
&lt;/span&gt;}
&lt;/pre&gt;
&lt;p&gt;Then we can scan the current assembly for all types that have this attribute (using reflection), construct a dictionary of all pages, and when requested create instances of a specified page (with reflection again).&lt;/p&gt;
&lt;p&gt;But guess what... MEF already does all this for us with much less code. Let me show you how.&lt;/p&gt;
&lt;h1&gt;Exports&lt;/h1&gt;
&lt;p&gt;First let's look at the PageMetadataAttribute:&lt;/p&gt;&lt;pre class="code"&gt;[&lt;span style="color: #2b91af"&gt;MetadataAttribute&lt;/span&gt;]
&lt;span style="color: blue"&gt;public class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;PageMetadataAttribute &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;Attribute
&lt;/span&gt;{
    &lt;span style="color: blue"&gt;public string &lt;/span&gt;PageName { &lt;span style="color: blue"&gt;get&lt;/span&gt;; &lt;span style="color: blue"&gt;set&lt;/span&gt;; }
}&lt;/pre&gt;
&lt;p&gt;Very simple. Only odd thing is that this attribute itself need to be tagged with MetadataAttribute so MEF knows to expose it as metadata in the parts catalog (and we will use it in just a moment). Now we can use it on any UserControl to assign the page name, but we need to use it together with the &lt;strong&gt;Export &lt;/strong&gt;attribute. Type discovery in MEF is based on attributes and &lt;strong&gt;Export &lt;/strong&gt;indicates that the attributed class should be exported as &lt;strong&gt;ComposablePart &lt;/strong&gt;and specifies the contract it implements (it is Page in our case):&lt;/p&gt;&lt;pre class="code"&gt;[&lt;span style="color: #2b91af"&gt;Export&lt;/span&gt;(&lt;span style="color: #a31515"&gt;"Page"&lt;/span&gt;)]
[&lt;span style="color: #2b91af"&gt;PageMetadata&lt;/span&gt;(PageName = &lt;span style="color: #a31515"&gt;"Page1"&lt;/span&gt;)]
&lt;span style="color: blue"&gt;public partial class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Page1 &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;UserControl
&lt;/span&gt;{
    &lt;span style="color: green"&gt;// ...
&lt;/span&gt;}&lt;/pre&gt;
&lt;p&gt;Notice that in MEF contract is specified as string. There is additional overload on the Export attribute that consumes a Type, but internally it would be converted to a fully qualified name of that tape. On the side note, even when you use a typed contract the attributed class doesn't really need to implement it - the contract type is used only as a key in the container. &lt;/p&gt;
&lt;h1&gt;CompositionContainer and Catalogs&lt;/h1&gt;
&lt;p&gt;Now we can start implementing our &lt;strong&gt;NavigationWindow &lt;/strong&gt;and first thing to do is to configure the &lt;strong&gt;CompositionContainer&lt;/strong&gt;:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;private void &lt;/span&gt;InitializeCompositionContainer()
{
    &lt;span style="color: blue"&gt;var &lt;/span&gt;catalog = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;AttributedAssemblyPartCatalog&lt;/span&gt;(&lt;span style="color: blue"&gt;typeof &lt;/span&gt;(&lt;span style="color: #2b91af"&gt;NavigationWindow&lt;/span&gt;).Assembly);
    &lt;span style="color: blue"&gt;var &lt;/span&gt;container = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;CompositionContainer&lt;/span&gt;(catalog.CreateResolver());

    container.AddPart(&lt;span style="color: blue"&gt;this&lt;/span&gt;);
    container.Compose();

    _container = container;
}&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;Because we want MEF to discover all the pages in the current assembly we use the &lt;strong&gt;AttributedAssemblyPartCatalog&lt;/strong&gt; that will search for all types that were attributed as exports. Catalogs are responsible for creating a &lt;strong&gt;Resolver &lt;/strong&gt;that is then passed to the &lt;strong&gt;CompositionContainer &lt;/strong&gt;so it can query for available &lt;strong&gt;ComposableParts &lt;/strong&gt;(you can learn about the other two types of catalogs from the &lt;a href="http://www.codeplex.com/MEF/Wiki/View.aspx?title=Guide&amp;amp;referringTitle=Home" target="_blank"&gt;programming guide&lt;/a&gt;). Next we also register the &lt;strong&gt;NavigationWindow &lt;/strong&gt;itself as a &lt;strong&gt;ComposablePart &lt;/strong&gt;in the container. After doing so we need to call the &lt;strong&gt;Compose &lt;/strong&gt;method to resolve dependencies (note that you don't need to call Compose to user parts exposed from catalogs). But for this to work properly we need to add Export attribute on NavigationWindow too:&lt;/p&gt;&lt;pre class="code"&gt;[&lt;span style="color: #2b91af"&gt;Export&lt;/span&gt;(&lt;span style="color: #a31515"&gt;"NavigationWindow"&lt;/span&gt;)]
&lt;span style="color: blue"&gt;public partial class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;NavigationWindow &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;UserControl&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;h1&gt;Imports&lt;/h1&gt;
&lt;p&gt;Ok, it's about time to talk about the dependencies, aka imports. For the NavigationWindow this will be the list of all available page types and we can get this by declaring following collection:&lt;/p&gt;&lt;pre class="code"&gt;[&lt;span style="color: #2b91af"&gt;Import&lt;/span&gt;(&lt;span style="color: #a31515"&gt;"Page"&lt;/span&gt;)]
&lt;span style="color: blue"&gt;private &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ExportCollection&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;UserControl&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;IPageMetadata&lt;/span&gt;&amp;gt; _pages;
&lt;/pre&gt;
&lt;p&gt;The &lt;strong&gt;Import &lt;/strong&gt;attribute indicates that container should resolve this dependency for us by assigning a collection of all exports with Page contract (this happens when you call container's Compose method). It will also expose the PageMetadataAttribute through IPageMetada interface:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;public interface &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IPageMetadata
&lt;/span&gt;{
    &lt;span style="color: blue"&gt;string &lt;/span&gt;PageName { &lt;span style="color: blue"&gt;get&lt;/span&gt;; &lt;span style="color: blue"&gt;set&lt;/span&gt;; }
}&lt;/pre&gt;
&lt;p&gt;Notice that we didn't implement this interface earlier on the attribute itself. At runtime MEF will be able to create dynamic proxy to it with a magic thing called duck typing. Isn't that cool!&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;_pages&lt;/strong&gt; field is private and normally it wouldn't be resolved, but we can ask MEF to handle it by adding the assembly level &lt;strong&gt;AllowNonPublicComposition&lt;/strong&gt; attribute (add it to AssemblyInfo).&lt;/p&gt;
&lt;p&gt;Now we are ready to implement the &lt;strong&gt;GoTo &lt;/strong&gt;method that will do the navigation:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;public void &lt;/span&gt;GoTo(&lt;span style="color: blue"&gt;string &lt;/span&gt;pageName)
{
    &lt;span style="color: blue"&gt;var &lt;/span&gt;newPage = _pages.SingleOrDefault(e =&amp;gt; e.MetadataView.PageName == pageName);

    Controls.Clear();

    &lt;span style="color: blue"&gt;if &lt;/span&gt;(newPage != &lt;span style="color: blue"&gt;null&lt;/span&gt;)
    {
        &lt;span style="color: blue"&gt;var &lt;/span&gt;control = newPage.GetExportedObject();
        control.Dock = &lt;span style="color: #2b91af"&gt;DockStyle&lt;/span&gt;.Fill;
        Controls.Add(control);
    }
}&lt;/pre&gt;
&lt;p&gt;In the first line it will search the &lt;strong&gt;_pages &lt;/strong&gt;collection for one with specified page name (MetadataView property implements our IPageMetada interface). Later when the page was found we request the instance of UserControl with call to GetExportedObject(). I told you this would be easy!&lt;/p&gt;
&lt;p&gt;Now we can put the NavigationWindow on any Form and call &lt;font face="Courier New"&gt;navigationWindow1.GoTo(&lt;span style="color: #a31515"&gt;"Page1"&lt;/span&gt;)&lt;/font&gt; to get this:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/kobush/WindowsLiveWriter/cc26d6de43d2_908F/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="240" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/kobush/WindowsLiveWriter/cc26d6de43d2_908F/image_thumb.png" width="240" border="0" /&gt;&lt;/a&gt;  &lt;/p&gt;
&lt;p&gt;I assume that we would like to navigate from one page to another by clicking the link. Therefore the page needs to know the NavigationWindow it is hosted in – in other words it has a dependency on the NavigationWindow.&lt;/p&gt;&lt;pre class="code"&gt;[&lt;span style="color: #2b91af"&gt;Import&lt;/span&gt;(&lt;span style="color: #a31515"&gt;"NavigationWindow"&lt;/span&gt;)]
&lt;span style="color: blue"&gt;public &lt;/span&gt;&lt;span style="color: #2b91af"&gt;NavigationWindow &lt;/span&gt;NavigationWindow { &lt;span style="color: blue"&gt;get&lt;/span&gt;; &lt;span style="color: blue"&gt;set&lt;/span&gt;; }

&lt;span style="color: blue"&gt;private void &lt;/span&gt;linkLabel1_LinkClicked(&lt;span style="color: blue"&gt;object &lt;/span&gt;sender, &lt;span style="color: #2b91af"&gt;LinkLabelLinkClickedEventArgs &lt;/span&gt;e)
{
    NavigationWindow.GoTo(&lt;span style="color: #a31515"&gt;"Page2"&lt;/span&gt;);
}&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;This is why earlier we registered the NavigationWindow itself as a ComposablePart, so now we can import it from any other part. This would get us to the second window:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/kobush/WindowsLiveWriter/cc26d6de43d2_908F/image_4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="240" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/kobush/WindowsLiveWriter/cc26d6de43d2_908F/image_thumb_1.png" width="240" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;h1&gt;Object lifetime&lt;/h1&gt;
&lt;p&gt;To make this exercise more interesting here we have a TextBox and we want to pass its value to the third window. But first let's talk briefly about part's lifetime. By default all the exported parts are treated as singletons. For us this means that there would be only a single instance ever created of each page (as soon as you call &lt;strong&gt;Export.GetExportedObject &lt;/strong&gt;method). Of course this is not always the desired scenario, and you can change this behavior using the &lt;strong&gt;CreationPolicy&lt;/strong&gt; property of the &lt;strong&gt;CompositionOptions&lt;/strong&gt; attribute. Here is Page1 revisited:&lt;/p&gt;&lt;pre class="code"&gt;[&lt;span style="color: #2b91af"&gt;CompositionOptions&lt;/span&gt;(CreationPolicy = &lt;span style="color: #2b91af"&gt;CreationPolicy&lt;/span&gt;.Factory)]
[&lt;span style="color: #2b91af"&gt;Export&lt;/span&gt;(&lt;span style="color: #a31515"&gt;"Page"&lt;/span&gt;)]
[&lt;span style="color: #2b91af"&gt;PageMetadata&lt;/span&gt;(PageName = &lt;span style="color: #a31515"&gt;"Page1"&lt;/span&gt;)]
&lt;span style="color: blue"&gt;public partial class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Page1 &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;UserControl&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;The &lt;strong&gt;CreationPolicy &lt;/strong&gt;enumeration has only two values: Singleton (default), and Factory. &lt;/p&gt;
&lt;p&gt;Looking back to our scenario we want to make the second page a singleton so it can be accessed from the third page. To access it would also need to get a reference to the Container – and again we do this by adding another dependency in Page3:&lt;/p&gt;&lt;pre class="code"&gt;[&lt;span style="color: #2b91af"&gt;Import&lt;/span&gt;(&lt;span style="color: #a31515"&gt;"Container"&lt;/span&gt;)]
&lt;span style="color: blue"&gt;public &lt;/span&gt;&lt;span style="color: #2b91af"&gt;CompositionContainer &lt;/span&gt;Container { &lt;span style="color: blue"&gt;get&lt;/span&gt;; &lt;span style="color: blue"&gt;set&lt;/span&gt;; }&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;Now, this dependency won't be available just yet. As we've seen before the container was created by the NavigationWindow. We could register it manually as we did with the NavigationWindow, but I would like to show you one more capability that MEF has – you can declare Exports not only on types but also on the class members:&lt;/p&gt;&lt;pre class="code"&gt;[&lt;span style="color: #2b91af"&gt;Export&lt;/span&gt;(&lt;span style="color: #a31515"&gt;"Container"&lt;/span&gt;)]
&lt;span style="color: blue"&gt;private &lt;/span&gt;&lt;span style="color: #2b91af"&gt;CompositionContainer &lt;/span&gt;_container;
&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;So when we add this field to NavigationWindow we now not only export the NavigationWindow itself but also the value in the it's &lt;strong&gt;_container&lt;/strong&gt; field. I can imagine that this capability would be handy if you need to export one of the built-in system types or type from a third-party library when you can't add the Export attribute directly on the given type.&lt;/p&gt;
&lt;p&gt;Finally here is the code from Page3 to get the reference to previous page and read the value entered in the TextBox:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;private void &lt;/span&gt;PageLoaded(&lt;span style="color: blue"&gt;object &lt;/span&gt;sender, &lt;span style="color: #2b91af"&gt;EventArgs &lt;/span&gt;e)
{
    &lt;span style="color: blue"&gt;var &lt;/span&gt;page = Container.GetExports&amp;lt;&lt;span style="color: #2b91af"&gt;IAskNamePage&lt;/span&gt;&amp;gt;(p =&amp;gt; p.ContractName == &lt;span style="color: #a31515"&gt;"Page" &lt;/span&gt;&amp;amp;&amp;amp; &lt;span style="color: blue"&gt;string&lt;/span&gt;.Equals(p.Metadata[&lt;span style="color: #a31515"&gt;"PageName"&lt;/span&gt;], &lt;span style="color: #a31515"&gt;"Page2"&lt;/span&gt;)).Single();
    nameLabel.Text = &lt;span style="color: #a31515"&gt;"Helo " &lt;/span&gt;+ page.GetExportedObject().FullName;
}&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;This time we used one of container's GetExports methods to query for a page (ComposablePart with contract "Page") and with page name of "Page2" (through Metadata dictionary). The query capability on metadata is one of the big things in MEF and it allows you to get detailed information about available parts even before you instantiate them. I've also added IAskNamePage interface so we can get the text entered on Page2:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;public interface &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IAskNamePage
&lt;/span&gt;{
    &lt;span style="color: blue"&gt;string &lt;/span&gt;FullName { &lt;span style="color: blue"&gt;get&lt;/span&gt;;  }
}&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;It simply returns the text from TextBox:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;public string &lt;/span&gt;FullName
{
    &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return &lt;/span&gt;textBox1.Text; }
}&lt;/pre&gt;
&lt;p&gt;Here is the last page:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/kobush/WindowsLiveWriter/cc26d6de43d2_908F/image_8.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="240" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/kobush/WindowsLiveWriter/cc26d6de43d2_908F/image_thumb_3.png" width="240" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;h1&gt;Summary&lt;/h1&gt;
&lt;p&gt;I hope that this example gives you some idea where MEF fits and will help you get started. Let me know if you have any questions about this. For more advanced scenario check out the three samples that shipped with the current drop on CodePlex:&lt;/p&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/#MEFlook"&gt;MEFlook&lt;/a&gt; - Outlook like client 
&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/#MEFTris"&gt;MEFTris&lt;/a&gt; - Tetris like game with shapes as plug-ins 
&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/#Explorer"&gt;Extensible File Explorer&lt;/a&gt; - File explorer with extensible views, favorite file viewers and shell services &lt;/li&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125007"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125007" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/kobush/aggbug/125007.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Szymon Kobalczyk</dc:creator>
            <guid>http://geekswithblogs.net/kobush/archive/2008/09/08/125007.aspx</guid>
            <pubDate>Mon, 08 Sep 2008 11:38:46 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/kobush/comments/125007.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/kobush/archive/2008/09/08/125007.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/kobush/comments/commentRss/125007.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/kobush/services/trackbacks/125007.aspx</trackback:ping>
        </item>
        <item>
            <title>Two cool Microsoft Surface apps from InterKnowlogy</title>
            <category>Development</category>
            <category>Smart Client</category>
            <category>WPF</category>
            <link>http://geekswithblogs.net/kobush/archive/2008/08/29/124783.aspx</link>
            <description>&lt;p&gt;InterKnowlogy is always on the cutting edge of the Microsoft Platform so its not surprise that we were among first to build applications in WPF, Silverlight and now on &lt;a href="http://www.microsoft.com/surface" target="_blank"&gt;Microsoft Surface&lt;/a&gt; (a touch screen computer embedded in a coffee table). I'm excited to show you two applications that we released recently.&lt;/p&gt; &lt;h1&gt;VitruView&lt;/h1&gt; &lt;p&gt;VirtuView is a collaborative environment for viewing and annotating patient's examination results on anatomic 3D models. This application is evolution of our earlier &lt;a href="http://www.interknowlogy.com/lab/Pages/Angiographer.aspx" target="_blank"&gt;Angiographer&lt;/a&gt; that we build for &lt;a href="http://intermountainhealthcare.org/xp/public/" target="_blank"&gt;InterMountain Healthcare&lt;/a&gt; together with our partner &lt;a href="http://www.zygote.com/" target="_blank"&gt;Zygote&lt;/a&gt; (world's leader in 3D human anatomy models and textures). VirtuView lets users zoom and rotate the 3D heart models with your hands. You can use your fingers to draw arteries, place Stents and add annotations. And because this is multitouch you can use more than one finger or many people can work at once. This application is done in WPF and uses &lt;a href="http://www.healthvault.com/" target="_blank"&gt;Microsoft HealthVault&lt;/a&gt; to securely store patient's data. &lt;/p&gt; &lt;p&gt;Check out this video demonstration from Tim Huckaby and Kevin Kennedy:&lt;/p&gt; &lt;p&gt;&lt;iframe style="width: 500px; height: 375px" src="http://silverlight.services.live.com/invoke/67733/VitruView/iframe.html" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Update: &lt;/strong&gt;Here you can watch another video with Tim and Dr. Peter Kuhn from &lt;a href="http://blogs.msdn.com/healthblog/archive/2008/08/27/microsoft-hug-wish-you-were-here-day-2.aspx" target="_blank"&gt;Health User Group Conference&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;h1&gt;History at your fingertips&lt;/h1&gt; &lt;p&gt;This amazing application was built in conjunction with Microsoft and the Library of Congress. It chronicles the history of the republican and democratic national conventions in interactive Surface experience. The application is featured LIVE on Surface units at both upcoming conventions, and it was shown on the ABC National News this week and you can watch it on the &lt;a href="http://abcnews.go.com/Video/playerIndex?id=5660365" target="_blank"&gt;ABCnews.com website&lt;/a&gt; (move forward to approximately 01:18). &lt;/p&gt; &lt;p&gt;Here is a more technical demonstration from Rodney Guzman:&lt;/p&gt;&lt;iframe style="width: 500px; height: 375px" src="http://silverlight.services.live.com/invoke/67733/History%20At%20Your%20Fingertips_2/iframe.html" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt; &lt;p&gt; &lt;/p&gt; &lt;h1&gt;What about me?&lt;/h1&gt; &lt;p&gt;Meanwhile I've been working with great team at &lt;a href="http://www.coloniallife.com/" target="_blank"&gt;Colonial Life &amp;amp; Accident Insurance Company&lt;/a&gt; that built the Harmony solution. We helped them built a WPF offline version of the Web based Harmony self-enrollment system that will be used by insurance agents. You can find more details in this &lt;a href="http://www.microsoft.com/casestudies/casestudy.aspx?casestudyid=4000002535" target="_blank"&gt;Microsoft case study&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124783"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124783" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/kobush/aggbug/124783.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Szymon Kobalczyk</dc:creator>
            <guid>http://geekswithblogs.net/kobush/archive/2008/08/29/124783.aspx</guid>
            <pubDate>Fri, 29 Aug 2008 06:41:02 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/kobush/comments/124783.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/kobush/archive/2008/08/29/124783.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/kobush/comments/commentRss/124783.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/kobush/services/trackbacks/124783.aspx</trackback:ping>
        </item>
        <item>
            <title>Registration is open for first Code Camp in Krak&amp;oacute;w</title>
            <category>People</category>
            <category>User Groups</category>
            <link>http://geekswithblogs.net/kobush/archive/2008/05/22/122315.aspx</link>
            <description>&lt;p&gt;&lt;a title="CodeCamp.pl" href="http://www.codecamp.pl" target="_blank"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="166" alt="codecamp-logo" src="http://geekswithblogs.net/images/geekswithblogs_net/kobush/WindowsLiveWriter/RegistrationisopenforfirstCodeCampinKrak_1336B/codecamp-logo_3.png" width="240" align="right" border="0" /&gt;&lt;/a&gt; Some time ago I wrote that there is a wave of HCL events sweeping through Poland. Today I'm happy to announce that we opened registration for the &lt;a href="http://www.codecamp.pl"&gt;Code Camp in Kraków&lt;/a&gt;. This is the first such conference organized by the members of &lt;a href="www.grupanet.krakow.pl "&gt;KGD UG&lt;/a&gt; for the .NET developer community. &lt;/p&gt; &lt;p&gt;We will meet on June 7th for the chance to listen to sessions from five great speakers:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;The world has changed… What are the dilemmas of designing software solutions in the year 2008? - &lt;a href="http://tgolonka.blogspot.com/" target="_blank"&gt;Tadeusz Golonka&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Reach End-Users With Next Generation Web Applications - &lt;a href="http://blogs.msdn.com/chkoenig" target="_blank"&gt;Chris Koenig&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Addressing non-functional requirements with PostSharp - &lt;a href="http://www.postsharp.org/blog/" target="_blank"&gt;Gael Fraiteur&lt;/a&gt;&lt;/li&gt; &lt;li&gt;SQL Server 2008 Integration Services - Grzegorz Stolecki&lt;/li&gt; &lt;li&gt;Developer's role in an agile project - Bartosz Pampuch&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032376574&amp;amp;Culture=pl-PL"&gt;Follow this link to register&lt;/a&gt;. The conference is free but the number of seats is limited so make sure to register early. &lt;/p&gt; &lt;p&gt;Along the conference we organized a little programming contest. The first round is over but you still have a chance to win one of the cool prizes (including XBox 360) in the second round. It's quite simple - you just need to implement a single method. More details on &lt;a href="http://www.codecamp.pl/pl/soccer.aspx"&gt;this page&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;Hope to see you soon at &lt;a href="http://codecamp.pl" target="_blank"&gt;CodeCamp.pl&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=122315"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=122315" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/kobush/aggbug/122315.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Szymon Kobalczyk</dc:creator>
            <guid>http://geekswithblogs.net/kobush/archive/2008/05/22/122315.aspx</guid>
            <pubDate>Thu, 22 May 2008 20:14:25 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/kobush/comments/122315.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/kobush/archive/2008/05/22/122315.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/kobush/comments/commentRss/122315.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/kobush/services/trackbacks/122315.aspx</trackback:ping>
        </item>
        <item>
            <title>Witaj Antoś! / Welcome Anthony!</title>
            <category>Personal</category>
            <link>http://geekswithblogs.net/kobush/archive/2008/03/18/120610.aspx</link>
            <description>&lt;p&gt;[PL] Dzisiaj o 10:38 &lt;strong&gt;urodził się&lt;/strong&gt; &lt;strong&gt;mój drugi synek Antoś&lt;/strong&gt;. Duży chłopak z niego bo waży ponad 3,5 kg i ma 58 cm "wzrostu". Oboje mama i dzidziuś są zdrowi i czują się dobrze. Tatuś też jeszcze się trzyma i jest strasznie szczęśliwy :-)&lt;/p&gt; &lt;p&gt;[EN] Today at 10:38 (GMT+1) &lt;strong&gt;my second son Anthony was born&lt;/strong&gt;. He is a big boy, weighting 3.5 kg and 58 cm "tall". Both mommy and baby feel well. Daddy is the happiest man in the world!&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://picasaweb.google.pl/skobalczyk/WitajAnto/photo#5179029004520596834"&gt;&lt;img src="http://lh5.google.pl/skobalczyk/R9-bcJ_lJWI/AAAAAAAAArg/Boqks5HGLe0/s144/Anto%C5%9B%20001.JPG" /&gt;&lt;/a&gt; &lt;a href="http://picasaweb.google.pl/skobalczyk/WitajAnto/photo#5179029047470269810"&gt;&lt;img src="http://lh3.google.pl/skobalczyk/R9-bep_lJXI/AAAAAAAAAro/nnfFmw4EwWs/s144/Anto%C5%9B%20002.JPG" /&gt;&lt;/a&gt; &lt;a href="http://picasaweb.google.pl/skobalczyk/WitajAnto/photo#5179029103304844674"&gt;&lt;img src="http://lh4.google.pl/skobalczyk/R9-bh5_lJYI/AAAAAAAAArw/HYTflZSKdlY/s144/Anto%C5%9B%20003.JPG" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Updated 19/03/2008&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;New photos:&lt;/p&gt; &lt;p&gt;&lt;a href="http://picasaweb.google.pl/skobalczyk/WitajAnto/photo#5179713765892745506"&gt;&lt;img src="http://lh5.google.pl/skobalczyk/R-IKOg486SI/AAAAAAAAAuc/nINTBvmGYRM/s144/P1050771.JPG" /&gt;&lt;/a&gt; &lt;a href="http://picasaweb.google.pl/skobalczyk/WitajAnto/photo#5179713778777647410"&gt;&lt;img src="http://lh4.google.pl/skobalczyk/R-IKPQ486TI/AAAAAAAAAuk/qsg6XjuMMII/s144/P1050774.JPG" /&gt;&lt;/a&gt; &lt;a href="http://picasaweb.google.pl/skobalczyk/WitajAnto/photo#5179713787367582018"&gt;&lt;img src="http://lh6.google.pl/skobalczyk/R-IKPw486UI/AAAAAAAAAus/1TfZpUWXCzg/s144/P1050784.JPG" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;a href="http://picasaweb.google.pl/skobalczyk/WitajAnto/photo#5179713808842418530"&gt;&lt;img src="http://lh3.google.pl/skobalczyk/R-IKRA486WI/AAAAAAAAAu8/HUskptqWhlM/s144/P1050797.JPG" /&gt;&lt;/a&gt; &lt;a href="http://picasaweb.google.pl/skobalczyk/WitajAnto/photo#5179713856087058850"&gt;&lt;img src="http://lh6.google.pl/skobalczyk/R-IKTw486aI/AAAAAAAAAvc/s9HdE39Rvrc/s144/P1050803.JPG" /&gt;&lt;/a&gt; &lt;a href="http://picasaweb.google.pl/skobalczyk/WitajAnto/photo#5179713830317255042"&gt;&lt;img src="http://lh4.google.pl/skobalczyk/R-IKSQ486YI/AAAAAAAAAvM/mrNmZhpeK8E/s144/P1050805.JPG" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Updated 20/03/2008&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;First Contact... with older brother:&lt;/p&gt;&lt;a href="http://picasaweb.google.pl/skobalczyk/WitajAnto/photo#5180096636457380290"&gt;&lt;img src="http://lh6.google.pl/skobalczyk/R-Nmcg486cI/AAAAAAAAAw0/8iCInxGCK_0/s144/P1050815.JPG.jpg" /&gt;&lt;/a&gt; &lt;a href="http://picasaweb.google.pl/skobalczyk/WitajAnto/photo#5180096662227184098"&gt;&lt;img src="http://lh4.google.pl/skobalczyk/R-NmeA486eI/AAAAAAAAAxE/Ci0sFNT4CWw/s144/P1050828.JPG.jpg" /&gt;&lt;/a&gt; &lt;a href="http://picasaweb.google.pl/skobalczyk/WitajAnto/photo#5180096675112086002"&gt;&lt;img src="http://lh3.google.pl/skobalczyk/R-Nmew486fI/AAAAAAAAAxM/m5XyWKmux_g/s144/P1050839.JPG.jpg" /&gt;&lt;/a&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120610"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120610" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/kobush/aggbug/120610.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Szymon Kobalczyk</dc:creator>
            <guid>http://geekswithblogs.net/kobush/archive/2008/03/18/120610.aspx</guid>
            <pubDate>Tue, 18 Mar 2008 11:49:54 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/kobush/comments/120610.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/kobush/archive/2008/03/18/120610.aspx#feedback</comments>
            <slash:comments>13</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/kobush/comments/commentRss/120610.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/kobush/services/trackbacks/120610.aspx</trackback:ping>
        </item>
        <item>
            <title>How I won the Lab49 WPF in Finance Innovation Contest?</title>
            <category>Development</category>
            <category>Personal</category>
            <category>Smart Client</category>
            <category>WPF</category>
            <link>http://geekswithblogs.net/kobush/archive/2008/03/17/120601.aspx</link>
            <description>&lt;p&gt;&lt;img style="margin: 0px 0px 5px 5px" src="http://www.lab49.com/files/logos/wpf_logo_blue3.gif" align="right" /&gt;Honestly, I still don't know how I did it. The LAB49 &lt;a href="http://wpfcontest.lab49.com/"&gt;WPF in Finance Innovation Contest&lt;/a&gt; was announced back in December and I think I first read about it on &lt;a href="http://blogs.msdn.com/tims/archive/2007/12/04/wpf-and-silverlight-contest-season-is-here.aspx"&gt;Tim Sneath blog&lt;/a&gt;. With &lt;a href="http://wpfcontest.lab49.com/prizes.aspx"&gt;all the cool prizes&lt;/a&gt; I was very inclined to participate, but it quickly turned out that its available only to US citizens. However that changed in the first week of February, so I started considering it again, but still didn't had any clue what to do. You see the goal of this contest was to create a WPF application that visualizes a set of provided financial data in some interesting way. While the first part was easy (writing the app in WPF) the hardest part was to figure out what to do with the data. Only after "last call to action" email from Daniel Chait I decided its about time to start coding.&lt;/p&gt; &lt;p&gt;Because I started working late on this project, initially I wanted to create only a charting control capable of displaying the line and candlestick plot of stock prices. But after the contest deadline was extended I started thinking of a better way to visualize the stock prices for a given day – something that goes beyond a simple listbox or a datagrid. The next option I considered was to create a heatmap – i.e. use color gradients to denote the change in stock prices relative to the previous day. But in all samples I’ve seen these symbols were placed on a regular grid and the placement didn’t correspond in any particular way with the data. I started thinking about how to sort the symbols so that those that experienced similar data change would be close to each other, and those with different data change remain further apart. This finally led me to the idea of applying &lt;a href="http://www.red3d.com/cwr/boids/"&gt;Craig Reynolds’ flocking algorithm&lt;/a&gt; to perform this clustering.  &lt;/p&gt;&lt;p&gt;Here is a screenshot from my final entry called &lt;strong&gt;Stock Information Boids&lt;/strong&gt;:  &lt;/p&gt;&lt;p align="center"&gt; &lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/kobush/WindowsLiveWriter/HowIwontheLab49WPFinFinanceInnovationCon_11EC2/image_4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="480" alt="Stock Information Boids WPF Application" src="http://geekswithblogs.net/images/geekswithblogs_net/kobush/WindowsLiveWriter/HowIwontheLab49WPFinFinanceInnovationCon_11EC2/image_thumb_1.png" width="591" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Also you can already download the source code for this application from &lt;a href="http://code.msdn.microsoft.com/KobushCode/Release/ProjectReleases.aspx?ReleaseId=667"&gt;my resource page at MSDN Code Gallery&lt;/a&gt;. Make sure to read the user guide that describes how the algorithm works and how to use the application.  &lt;/p&gt;&lt;p&gt;Turns out that for some reason the judges liked my solution, because last week at the closing keynote of 2008 &lt;a href="http://www.financialdevelopers.com"&gt;Microsoft Financial Services Developer Conference&lt;/a&gt; in New York, &lt;a href="http://blog.lab49.com/archives/1888"&gt;Daniel Chait announced&lt;/a&gt; that I won &lt;a href="http://blog.lab49.com/archives/1884"&gt;the grand prize in the contest&lt;/a&gt;!  &lt;/p&gt;&lt;p&gt;The two finalist were &lt;strong&gt;Jacob Carpenter&lt;/strong&gt; and &lt;strong&gt;Jobi K Joy&lt;/strong&gt;, while the honorable mention went to &lt;strong&gt;Paul Hounshell&lt;/strong&gt;. Congratulations guys, great work! You can download their very cool applications from here: &lt;/p&gt; &lt;p&gt;&lt;iframe style="border-right: #dde5e9 1px solid; padding-right: 0px; border-top: #dde5e9 1px solid; padding-left: 0px; padding-bottom: 0px; margin: 3px; border-left: #dde5e9 1px solid; width: 240px; padding-top: 0px; border-bottom: #dde5e9 1px solid; height: 66px; background-color: #ffffff" marginwidth="0" marginheight="0" src="http://cid-5b79e3a01fce9e08.skydrive.live.com/embedrowdetail.aspx/2008%20WPF%20in%20Finance%20Innovation%20Contest" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt; &lt;p&gt;In following weeks I will try to share some details on my implementations (in particular about the Timeline and Flock controls). I was already told that &lt;a href="http://jobijoy.blogspot.com/"&gt;Jobi K Joy&lt;/a&gt; and &lt;a href="http://jacobcarpenter.wordpress.com/"&gt;Jacob Carpenter&lt;/a&gt; plan to do the same, so make sure to subscribe to their blogs too.  &lt;/p&gt;&lt;p&gt;I would like to thank &lt;a href="http://wpfcontest.lab49.com/judges.aspx"&gt;the judges&lt;/a&gt; for selecting my entry. And last but not least, big kisses for my wife Joanna for letting me work on the project all nights and weekends considering her present condition (L)&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120601"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120601" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/kobush/aggbug/120601.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Szymon Kobalczyk</dc:creator>
            <guid>http://geekswithblogs.net/kobush/archive/2008/03/17/120601.aspx</guid>
            <pubDate>Mon, 17 Mar 2008 20:39:06 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/kobush/comments/120601.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/kobush/archive/2008/03/17/120601.aspx#feedback</comments>
            <slash:comments>11</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/kobush/comments/commentRss/120601.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/kobush/services/trackbacks/120601.aspx</trackback:ping>
        </item>
        <item>
            <title>HEROES happen in Krak&amp;oacute;w</title>
            <category>User Groups</category>
            <link>http://geekswithblogs.net/kobush/archive/2008/03/15/120572.aspx</link>
            <description>&lt;p&gt;Last Wednesday I had the privilege of representing the KGD.NET user group at the Heroes Happen Here launch event in Kraków. It's hard for me to say anything about the presentations because I actually didn't see even a single one (but others already blogged about it &lt;a href="http://tgolonka.blogspot.com/2008/03/dominacja-bartoszw-w-trakcie-heroes.html"&gt;here&lt;/a&gt; and &lt;a href="http://brzozow.blogspot.com/2008/03/heroes-happen-krakow.html"&gt;here&lt;/a&gt;). Instead I spent the whole day backstage chatting with my good friends: &lt;a href="http://www.microsoft.com/poland/developer/mvp/joanna_g.mspx"&gt;Asia Grzywna&lt;/a&gt;, &lt;a href="http://www.microsoft.com/poland/developer/mvp/m_kierepka.mspx"&gt;Mateusz Kierepka&lt;/a&gt;, &lt;a href="http://www.potasinski.pl/"&gt;Paweł Potasiński&lt;/a&gt;, &lt;a href="http://www.microsoft.com/poland/developer/mvp/bartosz_pampuch.mspx"&gt;Bartosz Pampuch&lt;/a&gt;, &lt;a href="http://tgolonka.blogspot.com/"&gt;Tadeusz Golonka&lt;/a&gt;, Grzegorz Kolarz, &lt;a href="http://pawlos.blogspot.com/"&gt;Paweł Łukasik&lt;/a&gt;, and &lt;a href="http://brzozow.blogspot.com/"&gt;Michał Brzozowski&lt;/a&gt; just to name the few. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/kobush/WindowsLiveWriter/HEROEShappeninKrakw_14AAE/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="200" alt="Paweł Potasiński &amp;amp; Joanna Grzywna" src="http://geekswithblogs.net/images/geekswithblogs_net/kobush/WindowsLiveWriter/HEROEShappeninKrakw_14AAE/image_thumb.png" width="270" border="0" /&gt;&lt;/a&gt; &lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/kobush/WindowsLiveWriter/HEROEShappeninKrakw_14AAE/image_4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="200" alt="Paweł Potasiński, Mateusz Kierepka &amp;amp; Joanna Grzywna" src="http://geekswithblogs.net/images/geekswithblogs_net/kobush/WindowsLiveWriter/HEROEShappeninKrakw_14AAE/image_thumb_1.png" width="260" border="0" /&gt;&lt;/a&gt;  &lt;/p&gt;  &lt;p&gt;After the event Michał Żyliński and Barbara Sokólska invited us to a geek dinner where I had opportunity to meet great guys from &lt;a href="http://www.insys.pl/"&gt;Insys&lt;/a&gt; - company that build the first commercial website in Poland using Silverlight 1.0 (&lt;a href="http://www.lechpoznan.tv/"&gt;Lech Poznań TV&lt;/a&gt;). &lt;/p&gt;  &lt;p&gt;For me this was the ultimate geek day so thank you all for taking your time to hang out with me!&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120572"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120572" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/kobush/aggbug/120572.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Szymon Kobalczyk</dc:creator>
            <guid>http://geekswithblogs.net/kobush/archive/2008/03/15/120572.aspx</guid>
            <pubDate>Sat, 15 Mar 2008 22:31:48 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/kobush/comments/120572.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/kobush/archive/2008/03/15/120572.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/kobush/comments/commentRss/120572.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/kobush/services/trackbacks/120572.aspx</trackback:ping>
        </item>
        <item>
            <title>Polish .NET Community grows strong</title>
            <category>User Groups</category>
            <link>http://geekswithblogs.net/kobush/archive/2008/03/15/120570.aspx</link>
            <description>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;There are so many good things happening right now in the Polish .NET Community that I thogh it would be best to put it together in one post. So here you have it:&lt;/p&gt;  &lt;h2&gt;&lt;a href="http://www.c2c2008.pl"&gt;&lt;img alt="Communities2Communities 2008" src="http://zine.net.pl/friends/c2c.gif" /&gt;&lt;/a&gt;&lt;/h2&gt;  &lt;p&gt;&lt;a href="http://www.c2c2008.pl/"&gt;&lt;/a&gt;&lt;a href="http://www.c2c2008.pl/"&gt;&lt;/a&gt;C2C'08 is a first ever countrywide IT conference organized by community of Microsoft .NET and SQL Server professionals. On April 5th 2008 eleven speakers will have opportunity to show the most wanted topics, and answer the most desired questions. The list of speakers looks very impressive and includes celebrities like &lt;a href="http://weblogs.asp.net/despos/"&gt;Dino Esposito&lt;/a&gt; and &lt;a href="http://kulov.net/"&gt;Matin Kulov&lt;/a&gt;, along with best speakers selected by members of Polish user groups. &lt;/p&gt;  &lt;p&gt;Here are the key facts:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Purpose: &lt;/b&gt;learning, sharing knowledge and interacting with other professionals and geeks &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Topics: &lt;/b&gt;two tracks - .NET and SQL Server &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Number of attendees: &lt;/b&gt;200 &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Date: &lt;/b&gt;April 5th, 2008 &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Place: &lt;/b&gt;Microsoft, Al. Jerozolimskie 195A, Warsaw, Poland &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Pricing: &lt;/b&gt;free &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="http://www.c2c2008.pl"&gt;www.c2c2008.pl&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;&lt;a href="http://www.heroescommunitylaunch.com/"&gt;&lt;img src="http://hcl.webio.pl/images/HCL/hcl.png" /&gt;&lt;/a&gt;&lt;/h2&gt;  &lt;p&gt;Although the official &lt;a href="http://www.microsoft.com/heroeshappenhere/default.mspx"&gt;Heroes Happen Here&lt;/a&gt; product launch wave is over, there is still opportunity to learn about the new exciting products and other Microsoft technologies. Very soon user groups around the globe will begin executing the &lt;a href="http://www.heroescommunitylaunch.com/"&gt;Heroes Community Launch&lt;/a&gt; events delivering deep technical training on Microsoft Windows Server 2008, Visual Studio 2008, and SQL Server 2008. Here is the current schedule for Polish user groups:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;March 27&lt;sup&gt;th&lt;/sup&gt;, Warszawa&lt;/b&gt; – &lt;a href="http://wg.net.pl/"&gt;Warszawska Grupa .NET&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;April 3&lt;sup&gt;rd&lt;/sup&gt;, Białystok&lt;/strong&gt; - &lt;a href="http://www.hcl.bialystok.pl/"&gt;Białostocka Grupa .NET&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;April 30&lt;sup&gt;th&lt;/sup&gt;, Szczecin&lt;/b&gt; – &lt;a href="http://grupa.szczecin.pl/"&gt;Szczecińska Grupa Specialistów IT&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;b&gt;May 6-8&lt;sup&gt;th&lt;/sup&gt;, Lublin&lt;/b&gt; – &lt;a href="http://lubelskiedni2008.pl/"&gt;Lubelskie Dni Informatyki&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;b&gt;May 9&lt;sup&gt;th&lt;/sup&gt;, Dąbrowa Górnicza&lt;/b&gt; – &lt;u&gt;&lt;a href="http://www.premiera2008.pl/"&gt;Śląska Regionalna Grupa Microsoft&lt;/a&gt;&lt;/u&gt; &lt;/li&gt;    &lt;li&gt;&lt;b&gt;June 2&lt;sup&gt;nd&lt;/sup&gt;, Wrocław&lt;/b&gt; – &lt;a href="http://heroes.wroclaw.pl/"&gt;Wrocławska Grupa .NET&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Our group, &lt;b&gt;KGD.NET&lt;/b&gt; will organize the conference on &lt;b&gt;Saturday, June 7&lt;sup&gt;th&lt;/sup&gt; 2008&lt;/b&gt;. We plan to have 5-6 sessions and about 200 attendees. To make this happen and to bring you some great speakers we are joining forces with Wroc.NET. I will post the details here in following weeks. &lt;/p&gt;  &lt;h1&gt;SharePoint training in Kraków&lt;/h1&gt;  &lt;p&gt;Besides the regular meetings (&lt;a href="http://groups.google.pl/group/kgd-net/browse_thread/thread/d985e71066a25d5c"&gt;the next is scheduled on 26th March&lt;/a&gt;) in next few weeks KGD will organize a SharePoint training for group members. It will cover both WSS and MOSS and will be deliveried by Michał Gołda, certified SharePoint expert from Making Waves. We don't have the date set yet but if you are interested &lt;a href="http://groups.google.pl/group/kgd-net/browse_thread/thread/92e9055dba8ded33"&gt;register now&lt;/a&gt;. &lt;/p&gt;  &lt;h1&gt;Speaking&lt;/h1&gt;  &lt;p&gt;On personal note; I received several invitations to speak on some of these events. Here is my current schedule:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;I was invited to speak at the event called "&lt;em&gt;Discover the Next Web&lt;/em&gt;" that will be held on March 31st at Microsoft's Polish Office in Warsaw. My session is titled "&lt;em&gt;User Interface 2.0&lt;/em&gt;", and as you could guess I will by speaking about WPF and showcase some of the cool projects that we've done at &lt;a href="http://www.interknowlogy.com/"&gt;InterKnowlogy&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;I'm also helping my friends &lt;a href="http://geekswithblogs.net/marcel/Default.aspx"&gt;Marcin Celej&lt;/a&gt; and &lt;a href="http://brzozow.blogspot.com/"&gt;Michał Brzozowski&lt;/a&gt; build the coolest app ever to showcase during their session at the C2C conference on April 5&lt;sup&gt;th&lt;/sup&gt;. &lt;/li&gt;    &lt;li&gt;I accepted the invitation to speak at the Warsaw .NET UG in April but we need to work out the exact date. &lt;/li&gt;    &lt;li&gt;And finally I will be speaking at the Heroes Community Launch event in Wrocław on June 2nd. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I'm looking forward to meet you there!&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120570"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120570" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/kobush/aggbug/120570.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Szymon Kobalczyk</dc:creator>
            <guid>http://geekswithblogs.net/kobush/archive/2008/03/15/120570.aspx</guid>
            <pubDate>Sat, 15 Mar 2008 21:27:21 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/kobush/comments/120570.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/kobush/archive/2008/03/15/120570.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/kobush/comments/commentRss/120570.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/kobush/services/trackbacks/120570.aspx</trackback:ping>
        </item>
        <item>
            <title>Moving my code samples to MSDN Code Gallery</title>
            <category>Development</category>
            <link>http://geekswithblogs.net/kobush/archive/2008/02/19/119752.aspx</link>
            <description>&lt;p&gt;When I started blogging here on GeeksWithBlogs it turned out that if want to publish any code samples I have to find yet another place to host the source code. I didn't own any web servers that I could use for this, so I started looking how other bloggers do this, and came across &lt;a href="http://www.projectdistributor.net/" target="_blank"&gt;ProjectDistributor.net&lt;/a&gt;. It did exactly what I was looking for:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;ProjectDistributor is a web application for distributing small pieces of software - such as tools, components, widgets and controls. Users create groups to store projects against and visitors can login to download those projects or to leave feedback about bugs or to request new features. &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Although it's quite simple and didn't offer many features it did a decent job hosting my samples. The projects can be grouped by author and category. &lt;/p&gt;  &lt;p&gt;However recently I got several comments that the download links don't work, and the site was down for some time (now it's up again). To fix this I decided to move my files to &lt;a href="skydrive.live.com" target="_blank"&gt;Windows Live SkyDrive&lt;/a&gt;. It's a generic service for hosting any files on internet. When you sign up you get 1GB of free space. The UI is very simple: you can create folders, setup the permissions (private, shared or public) and you then quickly upload your files. &lt;/p&gt;  &lt;p&gt;The nice addition is that when you publish a file on SkyDrive, it creates a nicely formatted HTML snippets that you can embed in your page (there is even a &lt;a href="http://gallery.live.com/liveItemDetail.aspx?li=27545581-4b54-4f6d-9007-ed3b168dab43&amp;amp;pl=8&amp;amp;bt=9" target="_blank"&gt;Windows Live Writer plugin&lt;/a&gt; that helps you with this):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/kobush/WindowsLiveWriter/MovingmysamplestoMSDNCodeGallery_12403/image_2.png" target="_blank"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="500" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/kobush/WindowsLiveWriter/MovingmysamplestoMSDNCodeGallery_12403/image_thumb.png" width="567" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;These nice emblems is the only thing I really miss abut SkyDrive. They were just easier to find on the page then a simple download link.&lt;/p&gt;  &lt;p&gt;But as I said, SkyDrive is a generic service not really targeted to host programming samples. You don't get any ways to categorize, tag or search the projects. You don't even get the number of downloads or any other statistics. In addition some of my friends reported that they get redirected to Sign In page for Windows Live whenever they open my blog.&lt;/p&gt;  &lt;p&gt;That's why when I heard about CodePlex's younger brother – &lt;a href="http://code.msdn.microsoft.com/" target="_blank"&gt;MSDN Code Gallery&lt;/a&gt; on recent &lt;a href="http://www.dotnetrocks.com/default.aspx?showNum=316" target="_blank"&gt;.NET Rocks! interview with Matthew Manela&lt;/a&gt; I decided to give it a try and this weekend I moved all my samples there:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/kobush/WindowsLiveWriter/MovingmysamplestoMSDNCodeGallery_12403/image_4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="386" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/kobush/WindowsLiveWriter/MovingmysamplestoMSDNCodeGallery_12403/image_thumb_1.png" width="660" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Here is the link to my resources page: &lt;a title="http://code.msdn.microsoft.com/KobushCode" href="http://code.msdn.microsoft.com/KobushCode"&gt;http://code.msdn.microsoft.com/KobushCode&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;My experience so far was very positive. It's basically a CodePlex (even shares the same codebase from what I heard) but without the TFS integration - so you don't get version control or project management features. But when you create a resource page you still get:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Home page &lt;/strong&gt;that you can edit with wiki syntax and supports comments. You can also create subpages to publish your articles or documentation. You can also &lt;strong&gt;tag&lt;/strong&gt; your project so it would be easier to find for others. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Rleases tab &lt;/strong&gt;where you publish your source code, binaries or stand alone documentation (and it has a downloads counter). &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Discussions forum &lt;/strong&gt;that your readers can use to publish questions or comments. &lt;/li&gt;    &lt;li&gt;You can even run an &lt;strong&gt;Issue Tracker &lt;/strong&gt;to record bugs or feature requests if you need to (it's optional and you can turn it on in the Resource Page Settings). &lt;/li&gt;    &lt;li&gt;If you find someone to help you out with the project you can manage your team on the &lt;strong&gt;People tab&lt;/strong&gt;. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;License tab &lt;/strong&gt;shows the terms and conditions the user needs to agree when downloading your code. Note that currently it's the &lt;a href="http://www.microsoft.com/resources/sharedsource/licensingbasics/publiclicense.mspx" target="_blank"&gt;Microsoft Public License (Ms-PL)&lt;/a&gt; and you cannot change it (you can do this on CodePlex though). It's a basic "use it how you want - no guarantee" type of license, and personally I don't have any objections to it but you need to judge it for yourself. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Also note that while I decided to publish all my samples on a single resources page, nothing prevents you from creating more than one. You can then link them together using &lt;strong&gt;Related Resource Pages&lt;/strong&gt; sections. &lt;/p&gt;  &lt;p&gt;For me the site offers all I really need to host my code samples. But if your project eventually grows and you need more features you can move it to &lt;a href="http://www.codeplex.com/" target="_blank"&gt;CodePlex&lt;/a&gt; (I wonder if there will be any migration path for doing this). Also note that in many aspects it replaces now retired GotDotNet site and some popular samples &lt;a href="http://code.msdn.microsoft.com/GotDotNet.aspx" target="_blank"&gt;were migrated from it&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Probably most bloggers that write about programming face the same problem that I had, and MSDN Code Gallery does a good job solving it. So if you are looking for a place to put your samples I strongly recommend to give it a try. &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=119752"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=119752" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/kobush/aggbug/119752.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Szymon Kobalczyk</dc:creator>
            <guid>http://geekswithblogs.net/kobush/archive/2008/02/19/119752.aspx</guid>
            <pubDate>Tue, 19 Feb 2008 06:14:13 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/kobush/comments/119752.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/kobush/archive/2008/02/19/119752.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/kobush/comments/commentRss/119752.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/kobush/services/trackbacks/119752.aspx</trackback:ping>
        </item>
        <item>
            <title>Introducing WikiSpider</title>
            <category>Development</category>
            <category>Smart Client</category>
            <category>WPF</category>
            <link>http://geekswithblogs.net/kobush/archive/2008/01/30/119101.aspx</link>
            <description>&lt;p&gt;About two weeks ago &lt;a href="http://www.microsoft.com/poland/developer/kontakt/dbiesiada.mspx"&gt;Daniel Biesiada&lt;/a&gt; (who is ISV DE here in Poland) announced on his blog a little &lt;a href="http://blogs.msdn.com/danieb/archive/2008/01/13/pl-geek-w-spos-b-na-nud-w-tym-konkurs.aspx"&gt;programming contest&lt;/a&gt;. The goal was to build a .NET application that would check if the the theory of &lt;a href="http://en.wikipedia.org/wiki/Six_degrees_of_separation"&gt;Six Degrees of separation&lt;/a&gt; applies to two given topics in Wikipedia. In order words to find a path from the source page to destination with no more then six links. At the time I had not much else to do (apart from setting up website for the &lt;a href="http://www.c2c2008.pl/"&gt;C2C Conference&lt;/a&gt;, helping out with the &lt;a href="http://poland.silverlightchallenge.eu/"&gt;European Silverlight Challenge&lt;/a&gt;, and preparing for the WPF Beta Exam) so I decided to give it a try. &lt;/p&gt; &lt;p&gt;Fast forward two weeks and I present you my WikiSpider:&lt;/p&gt; &lt;p align="center"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="534" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/kobush/WindowsLiveWriter/e10a9ad47337_11C9E/image_3.png" width="600" border="0" /&gt; &lt;/p&gt; &lt;p&gt;As usual building this took me much more time than I initially anticipated (including few sleepless nights). And still I didn't make it before the deadline, so this even didn't count as a contest entry anymore (sigh!). However this was mainly because my personal goal was to throw in there every new piece of .NET 3.5 I could find fit - and most of them I never used before. &lt;/p&gt; &lt;p&gt;Here are some key technologies I managed to put into this:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;The UI is done in &lt;strong&gt;WPF&lt;/strong&gt; (and this was the only thing here I knew a bit about). However I borrowed the graph control from the excellent &lt;a href="http://j832.com/BagOTricks/"&gt;Kevin's WPF Bag-o-Tricks&lt;/a&gt;.  &lt;/li&gt;&lt;li&gt;The caching is done using &lt;strong&gt;SQL Server Express&lt;/strong&gt;. Initially I wanted to do this using &lt;strong&gt;SQL Compact &lt;/strong&gt;but I run into performance issues and had to switch to full SQL in order to run the queries in profiler. But since this was fixed (with big help from &lt;a href="http://zine.net.pl/blogs/sqlgeek/"&gt;Paweł Potasiński&lt;/a&gt;) I could try with SQL Compact again.  &lt;/li&gt;&lt;li&gt;Of course data-access is done using &lt;strong&gt;LINQ to SQL&lt;/strong&gt;. And of course this was the main source of my problems, as it was first time I've done anything in it, and so far I only read the &lt;a href="http://weblogs.asp.net/scottgu/archive/2007/08/27/linq-to-sql-part-8-executing-custom-sql-expressions.aspx"&gt;Scott Gu's tutorials&lt;/a&gt;. Still, I'm already in love with it.  &lt;/li&gt;&lt;li&gt;Speaking of LINQ. Initially we were screen scrapping the HTML pages to get all the links.  But turns out that Wikipedia has a little known about &lt;a href="http://en.wikipedia.org/w/query.php"&gt;Query API&lt;/a&gt; that enables to get the page content in XML. So the obvious move was to rewrite this part with &lt;strong&gt;LINQ to XML&lt;/strong&gt;.  &lt;/li&gt;&lt;li&gt;The path-finding algorithm was borrowed from &lt;a href="http://blogs.msdn.com/ericlippert/archive/2007/10/10/path-finding-using-a-in-c-3-0-part-four.aspx"&gt;Eric Lippert&lt;/a&gt;. The nice thing about it is that it uses lots of &lt;strong&gt;C# 3.0 language features&lt;/strong&gt;, so it is a great resource to learn from. The new C# syntax is so addictive that I already miss it in my other project.  &lt;/li&gt;&lt;li&gt;Finally, I wanted to publish the app with ClickOnce but run out of time. So maybe later. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;I learned many interesting things and tried out some new stuff that I wanted to check out anyway. I will try to share my discoveries in the next few days, but in the meantime feel free to download and take a look at may code (I know it's not prettiest piece of code you've seen but I was in a rush to finish this on time):&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;a title="SixDegreesOfWikipedia 1.0" href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=KobushCode&amp;amp;DownloadId=686"&gt;Download the source code&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Here you can also download the entries from other participants: &lt;a href="http://www.dbiesiada.com/projects/WikiPathFinding/wikiContest_LukaszSowa.zip"&gt;Łukasz Sowa&lt;/a&gt;, &lt;a href="http://www.dbiesiada.com/projects/WikiPathFinding/wikiContest_MaciejRutkowski.zip"&gt;Maciej Rutkowski&lt;/a&gt;, and &lt;a href="http://www.dbiesiada.com/projects/WikiPathFinding/WikiContest_ArkadiuszBenedykt.zip"&gt;Arkadiusz Benedykt&lt;/a&gt;. Congratulations to all of you!&lt;/p&gt; &lt;h3&gt;Installation&lt;/h3&gt; &lt;ol&gt; &lt;li&gt;Download the code from the above link and extract it.  &lt;/li&gt;&lt;li&gt;The application uses local SQL database for caching and unfortunately you need to create it yourself (now you know why I wanted to use SQL Compact). Simply launch SSMS and create empty database called WikiCache.  &lt;/li&gt;&lt;li&gt;Run the &lt;strong&gt;Create_WikiCacheDB.sql&lt;/strong&gt; script from the &lt;strong&gt;data &lt;/strong&gt;folder to create the database schema.  &lt;/li&gt;&lt;li&gt;By default the app is configured to look for the &lt;strong&gt;WikiCache &lt;/strong&gt;database on the local &lt;strong&gt;SQLEXPRESS &lt;/strong&gt;instance. If you installed it somewhere else update the connection string in &lt;strong&gt;app.config &lt;/strong&gt;accordingly.  &lt;/li&gt;&lt;li&gt;Run the &lt;strong&gt;build.bat &lt;/strong&gt;or open solution in Visual Studio 2008 and run from there.&lt;/li&gt;&lt;/ol&gt; &lt;h3&gt;Usage&lt;/h3&gt; &lt;ol&gt; &lt;li&gt;Enter the name of the Wikipedia page in the address bar at the top and press the Go! button. The entered topic and the pages it links to will be displayed as graph.  &lt;/li&gt;&lt;li&gt;Clicking on any topic will make it currently selected (put it in the center of the graph).  &lt;/li&gt;&lt;li&gt;Right-click on any topic to open the context menu. Select "&lt;em&gt;Open in browser&lt;/em&gt;" to.... load the page in browser.  &lt;/li&gt;&lt;li&gt;Select "&lt;em&gt;Set as source&lt;/em&gt;" or "&lt;em&gt;Set as destination&lt;/em&gt;" to put the topic name in appropriate field on the sidebar &lt;br /&gt;[Note: &lt;em&gt;Currently it's the only way to show the sidebar&lt;/em&gt;]  &lt;/li&gt;&lt;li&gt;You can also enter the source/destination topics manually.  &lt;/li&gt;&lt;li&gt;When both are set click on the &lt;em&gt;Start &lt;/em&gt;button to begin searching for the path. Few statistics are displayed on the bottom of the sidebar.  &lt;/li&gt;&lt;li&gt;During the search you can still use the graph or navigate to other pages (thanks to the BackgroundWorker magic).  &lt;/li&gt;&lt;li&gt;When path is found it is displayed on the sidebar, and you can click on each topic to center it on graph. &lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Have fun! &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=119101"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=119101" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/kobush/aggbug/119101.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Szymon Kobalczyk</dc:creator>
            <guid>http://geekswithblogs.net/kobush/archive/2008/01/30/119101.aspx</guid>
            <pubDate>Wed, 30 Jan 2008 21:22:47 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/kobush/comments/119101.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/kobush/archive/2008/01/30/119101.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/kobush/comments/commentRss/119101.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/kobush/services/trackbacks/119101.aspx</trackback:ping>
        </item>
    </channel>
</rss>