<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2germanfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Michael Könings Blog</title><link>http://blog.trivadis.com/blogs/michaelkoenings/default.aspx</link><description>Hier bloggt der Chef!</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/trivadis/michaelkoenings" type="application/rss+xml" /><feedburner:emailServiceId>trivadis/michaelkoenings</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Ftrivadis%2Fmichaelkoenings" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/trivadis/michaelkoenings" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Ftrivadis%2Fmichaelkoenings" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Ftrivadis%2Fmichaelkoenings" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Ftrivadis%2Fmichaelkoenings" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://add.my.yahoo.com/content?lg=de&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2Ftrivadis%2Fmichaelkoenings" src="http://us.i1.yimg.com/us.yimg.com/i/de/my/addtomyyahoo4.gif">Subscribe with Mein Yahoo!</feedburner:feedFlare><item><title>How To: Create Age Pyramid Charts in Reporting Services 2008</title><link>http://feedproxy.google.com/~r/trivadis/michaelkoenings/~3/F8il6G59rE8/how-to-create-age-pyramid-charts-in-reporting-services-2008.aspx</link><pubDate>Mon, 29 Jun 2009 08:40:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:38270</guid><dc:creator>admin</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blog.trivadis.com/blogs/michaelkoenings/rsscomments.aspx?PostID=38270</wfw:commentRss><comments>http://blog.trivadis.com/blogs/michaelkoenings/archive/2009/06/29/how-to-create-age-pyramid-charts-in-reporting-services-2008.aspx#comments</comments><description>&lt;p&gt;I had to create charts for a HR department that show the&amp;nbsp; distribution of age (or years of service) and gender in organization units. The customer wanted that typical Christmas tree look, which shows a symmetric bar chart in two directions, like shown in the example below. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.trivadis.com/blogs/michaelkoenings/WindowsLiveWriter/HowToCreateAgePyramidChartsinReportingSe_95C5/clip_image002_2.jpg"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;BORDER-TOP:0px;BORDER-RIGHT:0px;" border="0" alt="clip_image002" src="http://blog.trivadis.com/blogs/michaelkoenings/WindowsLiveWriter/HowToCreateAgePyramidChartsinReportingSe_95C5/clip_image002_thumb.jpg" width="441" height="463" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There are two challenges here: &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;make the tree look symmetric, the left and right bars should be in line. 
&lt;li&gt;make the labels and axis show positive values, even on the left side of the graph.&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;How can you achieve that in Reporting Services ?&lt;/p&gt;
&lt;p&gt;We use the Dundas chart control with the Bar Chart layout. A stacked bar chart did not work too well for me, it did not put the labels on the tip of the bars. &lt;/p&gt;
&lt;p&gt;To have the values point in to directions multiply one set of data with -1. you can do that in your query or by editing the value expression.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.trivadis.com/blogs/michaelkoenings/WindowsLiveWriter/HowToCreateAgePyramidChartsinReportingSe_95C5/clip_image002%5B4%5D.jpg"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;BORDER-TOP:0px;BORDER-RIGHT:0px;" border="0" alt="clip_image002[4]" src="http://blog.trivadis.com/blogs/michaelkoenings/WindowsLiveWriter/HowToCreateAgePyramidChartsinReportingSe_95C5/clip_image0024_thumb.jpg" width="483" height="359" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;T&lt;em&gt;he value expression for the data column might look like this:&lt;/em&gt; 
&lt;p&gt;&lt;em&gt;&lt;/em&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;=IIF(Fields!Gender.Value = &amp;quot;Male&amp;quot; , Sum(Fields!Head_Count.Value),Sum(Fields!Head_Count.Value)*-1)&lt;/strong&gt;&lt;/em&gt; 
&lt;p&gt;&lt;em&gt;&lt;/em&gt;
&lt;p&gt;&lt;em&gt;Since we have gender on one axis, it will show the values in two different colours.&lt;/em&gt; 
&lt;p&gt;&lt;a href="http://blog.trivadis.com/blogs/michaelkoenings/WindowsLiveWriter/HowToCreateAgePyramidChartsinReportingSe_95C5/clip_image00215.jpg"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;BORDER-TOP:0px;BORDER-RIGHT:0px;" border="0" alt="clip_image002[15]" src="http://blog.trivadis.com/blogs/michaelkoenings/WindowsLiveWriter/HowToCreateAgePyramidChartsinReportingSe_95C5/clip_image00215_thumb.jpg" width="425" height="352" /&gt;&lt;/a&gt; 
&lt;p&gt;The default settings of the bar chart will draw the different bars with a little offset (side by side), so it would not look symmetrically. I found this parameter that sorts this one out: 
&lt;p&gt;&lt;a href="http://blog.trivadis.com/blogs/michaelkoenings/WindowsLiveWriter/HowToCreateAgePyramidChartsinReportingSe_95C5/clip_image00210.jpg"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;BORDER-TOP:0px;BORDER-RIGHT:0px;" border="0" alt="clip_image002[10]" src="http://blog.trivadis.com/blogs/michaelkoenings/WindowsLiveWriter/HowToCreateAgePyramidChartsinReportingSe_95C5/clip_image00210_thumb.jpg" width="432" height="261" /&gt;&lt;/a&gt; 
&lt;p&gt;the &lt;strong&gt;Custom Attribute&lt;/strong&gt; &lt;strong&gt;DrawSidebySide&lt;/strong&gt;&amp;nbsp;of the Chart Series should be set to &lt;strong&gt;False&lt;/strong&gt;. Now the two bars for each gender in one time period are in line nicely.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;What&amp;#39;s left to do?&lt;/p&gt;
&lt;p&gt;We need to take care of the negative label values for the gender pointing to the left. You guessed how I did it:&lt;/p&gt;
&lt;p&gt;change the series label &lt;strong&gt;Format&lt;/strong&gt; property and the Axis &lt;strong&gt;LabelsFormat&lt;/strong&gt; to your wish:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;0;0&lt;/strong&gt;&amp;nbsp; did the job for me.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.trivadis.com/blogs/michaelkoenings/WindowsLiveWriter/HowToCreateAgePyramidChartsinReportingSe_95C5/image_6.png"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;BORDER-TOP:0px;BORDER-RIGHT:0px;" border="0" alt="image" src="http://blog.trivadis.com/blogs/michaelkoenings/WindowsLiveWriter/HowToCreateAgePyramidChartsinReportingSe_95C5/image_thumb_2.png" width="410" height="485" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;That&amp;#39;s it!&amp;nbsp; Maybe you have a better way to do it ? Let us know! Put a comment!&lt;/p&gt;
&lt;p&gt;Too brief ? ask questions!&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;PADDING-TOP:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:2a729bc7-61f4-4cc0-83c1-e157a8e39238" class="wlWriterSmartContent"&gt;Technorati-Tags: &lt;a href="http://technorati.com/tags/Reporting%20Services" rel="tag"&gt;Reporting Services&lt;/a&gt;,&lt;a href="http://technorati.com/tags/HowTo" rel="tag"&gt;HowTo&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Charts" rel="tag"&gt;Charts&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Age%20pyramid" rel="tag"&gt;Age pyramid&lt;/a&gt;,&lt;a href="http://technorati.com/tags/RS2008" rel="tag"&gt;RS2008&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.trivadis.com/blogs/michaelkoenings/WindowsLiveWriter/HowToCreateAgePyramidChartsinReportingSe_95C5/clip_image002%5B4%5D.jpg"&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blog.trivadis.com/aggbug.aspx?PostID=38270" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?a=F8il6G59rE8:_hmKJJBlg38:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?a=F8il6G59rE8:_hmKJJBlg38:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?i=F8il6G59rE8:_hmKJJBlg38:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/trivadis/michaelkoenings/~4/F8il6G59rE8" height="1" width="1"/&gt;</description><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/HowTo/default.aspx">HowTo</category><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/Tutorial/default.aspx">Tutorial</category><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/Charts/default.aspx">Charts</category><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/Reporting+Services/default.aspx">Reporting Services</category><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/RS2008/default.aspx">RS2008</category><feedburner:origLink>http://blog.trivadis.com/blogs/michaelkoenings/archive/2009/06/29/how-to-create-age-pyramid-charts-in-reporting-services-2008.aspx</feedburner:origLink></item><item><title>How To: get a RSS feed from BlogSpot filtered by a Tag</title><link>http://feedproxy.google.com/~r/trivadis/michaelkoenings/~3/TeBV2zIxfik/how-to-get-a-rss-feed-from-blogspot-filtered-by-a-tag.aspx</link><pubDate>Thu, 11 Jun 2009 12:30:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:37989</guid><dc:creator>admin</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blog.trivadis.com/blogs/michaelkoenings/rsscomments.aspx?PostID=37989</wfw:commentRss><comments>http://blog.trivadis.com/blogs/michaelkoenings/archive/2009/06/11/how-to-get-a-rss-feed-from-blogspot-filtered-by-a-tag.aspx#comments</comments><description>&lt;p&gt;by default Blogspot offers Atom feeds, which can not be digested by some systems (like our Community Server)&lt;/p&gt;
&lt;p&gt;but there is help! try this syntax : &lt;/p&gt;
&lt;p&gt;&lt;a href="http://yourfantasticblog.blogspot.com/feeds/posts/default/-/TheTag?alt=rss"&gt;http://yourfantasticblog.blogspot.com/feeds/posts/default/-/TheTag?alt=rss&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;i put&amp;nbsp;this here so&amp;nbsp;I don&amp;#39;t have to remember it next time I&amp;nbsp;need it &lt;img src="http://blog.trivadis.com/emoticons/emotion-11.gif" alt="Cool" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blog.trivadis.com/aggbug.aspx?PostID=37989" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?a=TeBV2zIxfik:69ouby3abBE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?a=TeBV2zIxfik:69ouby3abBE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?i=TeBV2zIxfik:69ouby3abBE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/trivadis/michaelkoenings/~4/TeBV2zIxfik" height="1" width="1"/&gt;</description><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/HowTo/default.aspx">HowTo</category><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/BlogSpot/default.aspx">BlogSpot</category><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/RSS/default.aspx">RSS</category><feedburner:origLink>http://blog.trivadis.com/blogs/michaelkoenings/archive/2009/06/11/how-to-get-a-rss-feed-from-blogspot-filtered-by-a-tag.aspx</feedburner:origLink></item><item><title>Cloud Computing In Even Simpler Words</title><link>http://feedproxy.google.com/~r/trivadis/michaelkoenings/~3/LQZnS6yAkIY/cloud-computing-in-simple-words-2.aspx</link><pubDate>Wed, 15 Apr 2009 07:55:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:32950</guid><dc:creator>admin</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blog.trivadis.com/blogs/michaelkoenings/rsscomments.aspx?PostID=32950</wfw:commentRss><comments>http://blog.trivadis.com/blogs/michaelkoenings/archive/2009/04/15/cloud-computing-in-simple-words-2.aspx#comments</comments><description>&lt;p&gt;I&amp;nbsp;like this one too, it emphasizes the scalability of cloud computing a bit more.&lt;/p&gt;
&lt;p&gt;A&amp;nbsp;bit like &amp;quot;Sendung mit der Maus&amp;quot; style, but an excellent presentation! (check the feedback on youtube)&lt;/p&gt;
&lt;p&gt;I&amp;nbsp;hope you enjoy it, it&amp;#39;s only about 5 minutes long.&lt;/p&gt;
&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/QJncFirhjPg&amp;amp;hl=de&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;
&lt;embed src="http://www.youtube.com/v/QJncFirhjPg&amp;amp;hl=de&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blog.trivadis.com/aggbug.aspx?PostID=32950" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?a=LQZnS6yAkIY:RIRCVLfSQVE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?a=LQZnS6yAkIY:RIRCVLfSQVE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?i=LQZnS6yAkIY:RIRCVLfSQVE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/trivadis/michaelkoenings/~4/LQZnS6yAkIY" height="1" width="1"/&gt;</description><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/Cloud/default.aspx">Cloud</category><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/Video/default.aspx">Video</category><feedburner:origLink>http://blog.trivadis.com/blogs/michaelkoenings/archive/2009/04/15/cloud-computing-in-simple-words-2.aspx</feedburner:origLink></item><item><title>Cloud Computing explained in simple words</title><link>http://feedproxy.google.com/~r/trivadis/michaelkoenings/~3/OyBgKUt_Pkw/cloud-computing-explained-in-simple-words.aspx</link><pubDate>Tue, 14 Apr 2009 09:35:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:32411</guid><dc:creator>admin</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blog.trivadis.com/blogs/michaelkoenings/rsscomments.aspx?PostID=32411</wfw:commentRss><comments>http://blog.trivadis.com/blogs/michaelkoenings/archive/2009/04/14/cloud-computing-explained-in-simple-words.aspx#comments</comments><description>&lt;p&gt;Ok, maybe a bit too simple for a geek like you... &lt;img src="http://blog.trivadis.com/emoticons/emotion-11.gif" alt="Cool" /&gt;&lt;/p&gt;
&lt;p&gt;Anyway, just watch it in your coffee break, and you&amp;#39;ll have a basic understanding&amp;nbsp;of what it&amp;#39;s all about.&lt;/p&gt;
&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/XdBd14rjcs0&amp;amp;hl=de&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;
&lt;embed src="http://www.youtube.com/v/XdBd14rjcs0&amp;amp;hl=de&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blog.trivadis.com/aggbug.aspx?PostID=32411" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?a=OyBgKUt_Pkw:qKRVns_mw30:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?a=OyBgKUt_Pkw:qKRVns_mw30:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?i=OyBgKUt_Pkw:qKRVns_mw30:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/trivadis/michaelkoenings/~4/OyBgKUt_Pkw" height="1" width="1"/&gt;</description><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/Cloud/default.aspx">Cloud</category><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/Video/default.aspx">Video</category><feedburner:origLink>http://blog.trivadis.com/blogs/michaelkoenings/archive/2009/04/14/cloud-computing-explained-in-simple-words.aspx</feedburner:origLink></item><item><title>Oslo is here!</title><link>http://feedproxy.google.com/~r/trivadis/michaelkoenings/~3/vpxqFCs6aSQ/oslo-is-here.aspx</link><pubDate>Sun, 02 Nov 2008 13:53:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:3958</guid><dc:creator>admin</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blog.trivadis.com/blogs/michaelkoenings/rsscomments.aspx?PostID=3958</wfw:commentRss><comments>http://blog.trivadis.com/blogs/michaelkoenings/archive/2008/11/02/oslo-is-here.aspx#comments</comments><description>&lt;p&gt;at the&amp;nbsp; &lt;a title="http://channel9.msdn.com/pdc2008/TL23/" href="http://channel9.msdn.com/pdc2008/TL23/"&gt;PDC&lt;/a&gt; Douglas Purdy (together with Vijaye Raji) finally presented Oslo (quite entertaining, it&amp;#39;s long but it&amp;#39;s worth it)&lt;/p&gt; &lt;p&gt;Oslo comprises 3 things: &lt;/p&gt; &lt;p&gt;A &lt;u&gt;language&lt;/u&gt;: &amp;quot;M&amp;quot; to model domain specific models and languages (grammars)&lt;/p&gt; &lt;p&gt;A &lt;u&gt;tool:&lt;/u&gt; &amp;quot;Quadrant&amp;quot; to visualize models and to give it simple views (yes views , like in MVC).&lt;/p&gt; &lt;p&gt;A &lt;u&gt;repository&lt;/u&gt;: (basically a SQL Server database) to store models and data&lt;/p&gt; &lt;p&gt;find more information &lt;a href="http://msdn.microsoft.com/oslo" target="_blank"&gt;here&lt;/a&gt;, the SDK is ready for download.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;what&amp;#39;s so special about Oslo?&lt;/p&gt; &lt;p&gt;Microsoft skipped the classic UML/MDA thing and started something completely new. Well, not that new, actually, people (outside the MS world) do use dynamic languages (especially Ruby) to create DSLs for quite some time now. But it&amp;#39;s good to see that MS picks up good ideas [1].&lt;/p&gt; &lt;p&gt;It&amp;#39;s all about better readability, less (better: no) plumbing code, low noise (less braces and brackets, semicolons, declarations, typing, initializations, castings etc.) .&amp;nbsp; All this is intended&amp;nbsp; to gain productivity: we can express our intent directly in simple code, whoever needs to read it will understand it better.&lt;/p&gt; &lt;p&gt;Microsoft takes these concepts and puts it on steroids: all dynamic, visual tools, Intellisense , all the goodness. The complexity of WCF, WF, EF and any other complex domain can now be expressed in domain specific code, we (the developers) do not have to deep dive into XML (XAML...)and APIs in all its flavors anymore (you can still do that if you need to, its all still there).&lt;/p&gt; &lt;p&gt;Check out the upcoming shows on this topic, they will explain the modeling language &amp;quot;M&amp;quot; in more detail.&lt;/p&gt; &lt;p&gt;That&amp;#39;s&amp;nbsp; the beginning of a new era for Microsoft. The post- &amp;quot;write to much code and deal with clumsy XML files&amp;quot; era. Very cool. ;-)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;[1]&lt;/p&gt; &lt;p&gt;Check out &lt;a href="http://rspec.info/"&gt;RSpec&lt;/a&gt; (a language to describe expected behaviour for Behaviour Driven Development), &lt;a href="http://haml.hamptoncatlin.com/"&gt;HAML&lt;/a&gt; (a better MVC-View language for creating HTML) and &lt;a href="http://haml.hamptoncatlin.com/docs/rdoc/classes/Sass.html"&gt;SASS&lt;/a&gt; (same thing for CSS) to see what I mean (I forgot &lt;a href="http://yaml.org/"&gt;YAML&lt;/a&gt;, which is a human-friendly data format). BTW,&amp;nbsp; All these great tools live in in &lt;a href="http://www.rubyonrails.com/"&gt;Ruby on Rails&lt;/a&gt;. For me,&amp;nbsp; &lt;a href="http://en.wikipedia.org/wiki/David_Heinemeier_Hansson"&gt;DHH&lt;/a&gt;s (the creator of RoR) greatest achievement is that he opened our eyes: development&amp;nbsp; should be as clear and simple like &lt;a href="http://images.google.com/images?q=arne+jacobsen&amp;amp;hl=de&amp;amp;rls=com.microsoft:en-us:IE-SearchBox&amp;amp;rlz=1I7GFRC_en-US&amp;amp;um=1&amp;amp;ie=UTF-8&amp;amp;sa=X&amp;amp;oi=images&amp;amp;ct=title"&gt;Danish Design&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blog.trivadis.com/aggbug.aspx?PostID=3958" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?a=vpxqFCs6aSQ:iHJKoWUNSjY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?a=vpxqFCs6aSQ:iHJKoWUNSjY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?i=vpxqFCs6aSQ:iHJKoWUNSjY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/trivadis/michaelkoenings/~4/vpxqFCs6aSQ" height="1" width="1"/&gt;</description><feedburner:origLink>http://blog.trivadis.com/blogs/michaelkoenings/archive/2008/11/02/oslo-is-here.aspx</feedburner:origLink></item><item><title>Don opens the Box on Oslo</title><link>http://feedproxy.google.com/~r/trivadis/michaelkoenings/~3/XPuWOO-bEEo/don-opens-the-box-on-oslo.aspx</link><pubDate>Thu, 16 Oct 2008 19:33:21 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:2294</guid><dc:creator>admin</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://blog.trivadis.com/blogs/michaelkoenings/rsscomments.aspx?PostID=2294</wfw:commentRss><comments>http://blog.trivadis.com/blogs/michaelkoenings/archive/2008/10/16/don-opens-the-box-on-oslo.aspx#comments</comments><description>&lt;p&gt;Don Box and Doug Purdy where on &lt;a href="http://www.dotnetrocks.com/default.aspx?showNum=385" target="_blank"&gt;Dot.Net Rocks&lt;/a&gt;. I was quite excited to listen to them this morning on my morning commute to Basle. But I&amp;#39;m still confused: what is Oslo ? They still where talking in riddles, not telling any details. There are some traces in the blogs, like &lt;a href="http://douglaspurdy.com/2008/09/06/what-is-oslo/" target="_blank"&gt;Doug put it in 3 bullet points&lt;/a&gt;:&lt;/p&gt; &lt;p&gt;&lt;em&gt;To that end, we have boiled down Oslo to three very simple things: &lt;/em&gt; &lt;ul&gt; &lt;li&gt;&lt;em&gt;A &lt;b&gt;tool&lt;/b&gt; that helps people define and interact with models in a rich and visual manner &lt;/em&gt; &lt;li&gt;&lt;em&gt;A &lt;b&gt;language&lt;/b&gt; that helps people create and use textual domain-specific languages and data models &lt;/em&gt; &lt;li&gt;&lt;em&gt;A relational &lt;b&gt;repository &lt;/b&gt;that makes models available to both tools and platform components &lt;/em&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;em&gt;That is it.&amp;nbsp; That is all Oslo is.&amp;nbsp; Oslo is just the modeling platform. &lt;/em&gt; &lt;p&gt;On the DNR show Doug said things like: &amp;quot;the next big thing&amp;quot; ...  &lt;p&gt;well, let&amp;#39;s see what they will show on the &lt;a href="https://sessions.microsoftpdc.com/public/sessions.aspx" target="_blank"&gt;PDC&lt;/a&gt; starting October 27th. There will be 6 sessions about Oslo.&lt;/p&gt;&lt;img src="http://blog.trivadis.com/aggbug.aspx?PostID=2294" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?a=XPuWOO-bEEo:4N1i_kY7Lio:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?a=XPuWOO-bEEo:4N1i_kY7Lio:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?i=XPuWOO-bEEo:4N1i_kY7Lio:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/trivadis/michaelkoenings/~4/XPuWOO-bEEo" height="1" width="1"/&gt;</description><feedburner:origLink>http://blog.trivadis.com/blogs/michaelkoenings/archive/2008/10/16/don-opens-the-box-on-oslo.aspx</feedburner:origLink></item><item><title>How To Do a Scrum Project With Busy Consultants</title><link>http://feedproxy.google.com/~r/trivadis/michaelkoenings/~3/W9foeT9jGCI/how-to-do-a-scrum-project-with-busy-consultants.aspx</link><pubDate>Fri, 15 Aug 2008 12:20:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:716</guid><dc:creator>admin</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://blog.trivadis.com/blogs/michaelkoenings/rsscomments.aspx?PostID=716</wfw:commentRss><comments>http://blog.trivadis.com/blogs/michaelkoenings/archive/2008/08/15/how-to-do-a-scrum-project-with-busy-consultants.aspx#comments</comments><description>&lt;p&gt;Inspired by the great interview on &lt;a href="http://www.dotnetrocks.com/default.aspx?showNum=322"&gt;DotNetRocks&lt;/a&gt; with Stephen Forte, who leads Scrum style agile projects with teams distributed around the globe, I decided: it must be possible to do agile project management with tools that are reachable from everywhere through the Internet. The members of my current project team do not always work together at the same place, they all have tightly scheduled calendars, hopping from one customer project to the next. But almost everywhere they have their mobile phones and a computer in reach. &lt;/p&gt;
&lt;p&gt;One rule in SCRUM is the daily &lt;a href="http://en.wikipedia.org/wiki/Stand-up_meeting"&gt;stand-up meeting&lt;/a&gt;, where every team member tells what he or she was doing the last day , what is next and what impediments keep her or him from continuing the work.&lt;/p&gt;
&lt;p&gt;Normally you will do that in&amp;nbsp; in front of a board with index cards, where all your tasks of the current sprint are written on.&amp;nbsp; The idea is to have a simple visual representation of your work items. The index cards and a simple spreadsheet (the &amp;quot;scrum sheet&amp;quot;) that records the state of the tasks is all you need to do your meeting. But how can you do that when not everybody is in the same room ?&amp;nbsp; &lt;/p&gt;
&lt;p&gt;For &lt;strong&gt;backlog and sprint management&lt;/strong&gt; we use the hosted &lt;a href="http://www.versionone.com/products_V1Team_Overview.asp"&gt;VersionOne Team Edition&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is&amp;nbsp; a free online tool (a V1 representative will call you back) to manage agile projects, it allows up to&amp;nbsp; 5 team members. The clean Ajax-style UI makes it really easy to use. &lt;/p&gt;
&lt;p&gt;it sports a very cool &lt;strong&gt;standup dashboard&lt;/strong&gt; which emulates the index card/scrum sheet view in the browser.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.trivadis.com/blogs/michaelkoenings/WindowsLiveWriter/HowtodoaScrumProjectwithbusyconsultants_C985/VersionOne_StandupDashboard_lg_2.jpg" target="_blank"&gt;&lt;img style="BORDER-RIGHT:0px;BORDER-TOP:0px;BORDER-LEFT:0px;BORDER-BOTTOM:0px;" height="244" alt="VersionOne Standup Dashboard" src="http://blog.trivadis.com/blogs/michaelkoenings/WindowsLiveWriter/HowtodoaScrumProjectwithbusyconsultants_C985/VersionOne_StandupDashboard_lg_thumb.jpg" width="242" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;this view is interactive, so every connected team member can move tasks around, change task information&amp;nbsp; and so on. Changes will be reflected&amp;nbsp; (after clicking an update button) on all browsers. This can be a great tool to do a &amp;quot;distributed&amp;quot; scrum meeting. I will tell you more about our experiences with it, when we used it for a while...&lt;/p&gt;
&lt;p&gt;There are other tools out there, (you probably heard about &lt;a href="http://www.basecamphq.com/"&gt;basecamp&lt;/a&gt; from the RoR Company 37Signals). I decided to use V1 because it is really focusing to support scrum. &lt;a href="http://studios.thoughtworks.com/mingle-project-intelligence/"&gt;Mingle&lt;/a&gt; from Fowler&amp;#39;s&amp;nbsp;ThoughtWorks was another candidate, but they don&amp;#39;t offer a hosted version!&lt;/p&gt;
&lt;p&gt;For team &lt;strong&gt;time management&lt;/strong&gt; we use a simple &lt;a href="http://www.google.com/calendar/"&gt;google calendar&lt;/a&gt;. Its the easiest way to share information about the presence of the team members. you can access it from everywhere, even with&amp;nbsp; smartphones and PDAs. you can integrate the google calendar with exchange and other systems to your desire. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;stand-up meetings&lt;/strong&gt;:&amp;nbsp; a conference call is perfect for this. there a lots of providers to make it as simple as possible. all you need is a appointment time, a telephone and a pin number. Services like &lt;a href="http://www.powwownow.com/"&gt;powwownow&lt;/a&gt; make that very easy. Or use &lt;a href="http://www.skype.com/help/guides/makeconferencecall_windows/"&gt;Skype&lt;/a&gt; ! The biggest challenge is to get every person involved sitting in front of a computer at a certain time...&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Code Management:&lt;/strong&gt; my company&amp;nbsp; has&amp;nbsp; a subversion service running that can be accessed from the Internet. If you are not in this comfortable situation: try project services like &lt;a title="http://www.assembla.com/" href="http://www.assembla.com/" target="_blank"&gt;assembla&lt;/a&gt;, they offer complete &amp;quot;team spaces&amp;quot; for free, including subversion and other helpful tools for collaboration.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Build management&lt;/strong&gt;: our current project is about BI, so we don&amp;#39;t need a classic build or even continuous integration environment to build our code base yet.&amp;nbsp; But the next project will come soon... There is something coming up but I&amp;#39;m not supposed to talk about it yet . :-)&lt;/p&gt;
&lt;p&gt;I will let you know how things worked out...&lt;/p&gt;&lt;img src="http://blog.trivadis.com/aggbug.aspx?PostID=716" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?a=W9foeT9jGCI:6gis8yAmGhE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?a=W9foeT9jGCI:6gis8yAmGhE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?i=W9foeT9jGCI:6gis8yAmGhE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/trivadis/michaelkoenings/~4/W9foeT9jGCI" height="1" width="1"/&gt;</description><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/Agile+Development/default.aspx">Agile Development</category><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/Scrum/default.aspx">Scrum</category><feedburner:origLink>http://blog.trivadis.com/blogs/michaelkoenings/archive/2008/08/15/how-to-do-a-scrum-project-with-busy-consultants.aspx</feedburner:origLink></item><item><title>Entity Framework V2 day one</title><link>http://feedproxy.google.com/~r/trivadis/michaelkoenings/~3/MeYE1EXfdTA/entity-framework-v2-day-one.aspx</link><pubDate>Tue, 24 Jun 2008 10:31:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:635</guid><dc:creator>admin</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blog.trivadis.com/blogs/michaelkoenings/rsscomments.aspx?PostID=635</wfw:commentRss><comments>http://blog.trivadis.com/blogs/michaelkoenings/archive/2008/06/24/entity-framework-v2-day-one.aspx#comments</comments><description>&lt;blockquote&gt;
&lt;p&gt;i think &lt;a href="http://blogs.msdn.com/adonet/archive/2008/06/23/entity-framework-v2-transparency-in-the-design-process.aspx"&gt;this&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/efdesign/archive/2008/06/23/transparency-in-the-design-process.aspx"&gt;this&lt;/a&gt; is good news: MS takes a second try to make the ADO.NET Entity Framework a really good product that helps developers to create a data access layer with a clean object model. This time, the community will be involved to help make the framework ready for the challenges of &amp;quot;real world&amp;quot; projects. The section in this initial blog post about Transparency in Design says a lot about the new spirit that lives in the MS development teams. &lt;/p&gt;
&lt;p&gt;Some key points that will be added or improved, according to the blog post:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Persistence Ignorance (POCO)&lt;/li&gt;
&lt;li&gt;N-Tier Support (DataSet like experience)&lt;/li&gt;
&lt;li&gt;TDD Scenarios&lt;/li&gt;
&lt;li&gt;Lazy load&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;So: get involved, look out for downloadable and testable bits and help make EF2 a great product :-)&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://blog.trivadis.com/aggbug.aspx?PostID=635" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?a=MeYE1EXfdTA:gSk8rK3JvOc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?a=MeYE1EXfdTA:gSk8rK3JvOc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?i=MeYE1EXfdTA:gSk8rK3JvOc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/trivadis/michaelkoenings/~4/MeYE1EXfdTA" height="1" width="1"/&gt;</description><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/Unittesting/default.aspx">Unittesting</category><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/.NET35/default.aspx">.NET35</category><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/EntityFramework/default.aspx">EntityFramework</category><feedburner:origLink>http://blog.trivadis.com/blogs/michaelkoenings/archive/2008/06/24/entity-framework-v2-day-one.aspx</feedburner:origLink></item><item><title>altdotnet.org : the movement for alternative programming with .NET found a home</title><link>http://feedproxy.google.com/~r/trivadis/michaelkoenings/~3/NM0GUW_EKwk/altdotnet-org-the-movement-for-alternative-programming-with-net-found-a-home.aspx</link><pubDate>Thu, 29 May 2008 10:48:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:623</guid><dc:creator>admin</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blog.trivadis.com/blogs/michaelkoenings/rsscomments.aspx?PostID=623</wfw:commentRss><comments>http://blog.trivadis.com/blogs/michaelkoenings/archive/2008/05/29/altdotnet-org-the-movement-for-alternative-programming-with-net-found-a-home.aspx#comments</comments><description>&lt;p&gt;There is so much new stuff that we ( the .net programmers) should know about. the growing Open Source .NET community (and Microsoft&amp;#39;s P&amp;amp;P too)&amp;nbsp; pushes out new tools and technologies almost every day. Who keeps pace with O/R Mappers, MVC frameworks, IoC Containers , agile Development methods and practices, etc?&lt;/p&gt;
&lt;p&gt;&lt;a href="http://altdotnet.org/"&gt;Altdotnet.org&lt;/a&gt; is a movement that started in blogs and forums that deal with all the mentioned items.&amp;nbsp; Now it found a home in altdotnet.org.&lt;/p&gt;
&lt;p&gt;just read the welcome text, I can&amp;#39;t explain any better what it is all about:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.trivadis.com/blogs/michaelkoenings/WindowsLiveWriter/altdotnet.orgthemovementfo.NETfoundahome_B422/image_4.png"&gt;&lt;img style="BORDER-RIGHT:0px;BORDER-TOP:0px;BORDER-LEFT:0px;WIDTH:557px;BORDER-BOTTOM:0px;HEIGHT:350px;" height="366" alt="image" src="http://blog.trivadis.com/blogs/michaelkoenings/WindowsLiveWriter/altdotnet.orgthemovementfo.NETfoundahome_B422/image_thumb_1.png" width="585" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;you need an &lt;a href="http://openid.org/"&gt;openid&lt;/a&gt; account to log in (another thing worth learning about :-) ) .&lt;/p&gt;
&lt;p&gt;Don&amp;#39;t expect too much right from this website, it is just a starting point.&lt;/p&gt;
&lt;p&gt;There is an excellent WIKI ( follow the &amp;#39;shape&amp;#39; link) that tries to put together a one-stop shop for all the different topics with loads of links and references (books). &lt;/p&gt;
&lt;p&gt;Its a community based site, everybody can help to make it grow.&lt;/p&gt;
&lt;p&gt;The community is not just virtual, there are real-world gatherings ( meetings and conferences) too.&lt;/p&gt;
&lt;p&gt;So, if you want to learn more about these new technologies and&amp;nbsp; want to be part of this movement, give it a try!&lt;/p&gt;&lt;img src="http://blog.trivadis.com/aggbug.aspx?PostID=623" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?a=NM0GUW_EKwk:bQgCjdBYteM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?a=NM0GUW_EKwk:bQgCjdBYteM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?i=NM0GUW_EKwk:bQgCjdBYteM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/trivadis/michaelkoenings/~4/NM0GUW_EKwk" height="1" width="1"/&gt;</description><feedburner:origLink>http://blog.trivadis.com/blogs/michaelkoenings/archive/2008/05/29/altdotnet-org-the-movement-for-alternative-programming-with-net-found-a-home.aspx</feedburner:origLink></item><item><title>Silverlight 2.0 : I will wait...</title><link>http://feedproxy.google.com/~r/trivadis/michaelkoenings/~3/g3OFkfmj73o/silverlight-2-0-i-will-wait.aspx</link><pubDate>Sun, 23 Mar 2008 14:49:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:565</guid><dc:creator>admin</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blog.trivadis.com/blogs/michaelkoenings/rsscomments.aspx?PostID=565</wfw:commentRss><comments>http://blog.trivadis.com/blogs/michaelkoenings/archive/2008/03/23/silverlight-2-0-i-will-wait.aspx#comments</comments><description>&lt;p&gt;check out the latest Silverlight 2.0 Demos from &lt;a href="http://labs.infragistics.com/silverlight/faceout/" target="_blank"&gt;Infragistics&lt;/a&gt; and &lt;a href="http://www.telerik.com/products/silverlight/overview.aspx" target="_blank"&gt;Telerik&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.trivadis.com/blogs/michaelkoenings/WindowsLiveWriter/Silverlight2.0Iwillwait_DE84/image_2.png"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="204" alt="image" src="http://blog.trivadis.com/blogs/michaelkoenings/WindowsLiveWriter/Silverlight2.0Iwillwait_DE84/image_thumb.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.trivadis.com/blogs/michaelkoenings/WindowsLiveWriter/Silverlight2.0Iwillwait_DE84/image_4.png"&gt;&lt;img style="BORDER-RIGHT:0px;BORDER-TOP:0px;BORDER-LEFT:0px;BORDER-BOTTOM:0px;" height="204" alt="image" src="http://blog.trivadis.com/blogs/michaelkoenings/WindowsLiveWriter/Silverlight2.0Iwillwait_DE84/image_thumb_1.png" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;How long would it take you to create controls and animated behavior like this, if you would try to do it by yourself ? &lt;/p&gt;
&lt;p&gt;If you are not a skilled graphics designer (or have one on your team) , well, I would propose we concentrate on the code. That&amp;#39;s probably challenging enough :-)&lt;/p&gt;&lt;img src="http://blog.trivadis.com/aggbug.aspx?PostID=565" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?a=g3OFkfmj73o:WqBkz2nckZs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?a=g3OFkfmj73o:WqBkz2nckZs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?i=g3OFkfmj73o:WqBkz2nckZs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/trivadis/michaelkoenings/~4/g3OFkfmj73o" height="1" width="1"/&gt;</description><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/Tools/default.aspx">Tools</category><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/Silverlight/default.aspx">Silverlight</category><feedburner:origLink>http://blog.trivadis.com/blogs/michaelkoenings/archive/2008/03/23/silverlight-2-0-i-will-wait.aspx</feedburner:origLink></item><item><title>Cool Tool: Mindmeister online shared mindmaps</title><link>http://feedproxy.google.com/~r/trivadis/michaelkoenings/~3/YSR6ybQ_54I/cool-tool-mindmeister-online-shared-mindmaps.aspx</link><pubDate>Fri, 21 Mar 2008 20:42:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:563</guid><dc:creator>admin</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://blog.trivadis.com/blogs/michaelkoenings/rsscomments.aspx?PostID=563</wfw:commentRss><comments>http://blog.trivadis.com/blogs/michaelkoenings/archive/2008/03/21/cool-tool-mindmeister-online-shared-mindmaps.aspx#comments</comments><description>&lt;p&gt;Mindmaps are great if you are trying to grasp a complex matter. Just start to write down terms and short sentences that come to your mind an connect them visually into a hierarchical, tree like structure. Normally you do that on a cocktail napkin in the lunch break with your colleagues. Maybe you are a geek and you use software based tools to draw nice maps. But how to share them with your team members and colleagues if they don&amp;#39;t have the same tool ? How do you capture ideas in a team, like you do with a sketch on a simple piece of paper, if you are miles apart ?&lt;/p&gt;
&lt;p&gt;Try Mindmeister. The fine folks at &lt;a href="http://www.mindmeister.com/" target="_blank"&gt;mindmeister.com&lt;/a&gt; created a stunning tool that is stuffed with features.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You can create mindmaps (online and offline). 
&lt;li&gt;Share mindmaps (with a closed group or public). 
&lt;li&gt;Export them (GIF, PNG, PDF, common mm tool formats). 
&lt;li&gt;Collaborate (&lt;em&gt;real time brainstorming&lt;/em&gt;, as they call it). 
&lt;li&gt;Embed your mindmaps (URL, IFrame) . 
&lt;li&gt;Subscribe to change notifications (Email and even Twitter). 
&lt;li&gt;Use the API to&amp;nbsp; program your mindmaps (REST based). &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;This is how the online editor looks like, a fine piece of AJAX in perfection:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.trivadis.com/blogs/michaelkoenings/WindowsLiveWriter/CoolToolMindmeisteronlinesharedmindmaps_1311B/image_2.png"&gt;&lt;img style="BORDER-RIGHT:0px;BORDER-TOP:0px;BORDER-LEFT:0px;BORDER-BOTTOM:0px;" height="196" alt="image" src="http://blog.trivadis.com/blogs/michaelkoenings/WindowsLiveWriter/CoolToolMindmeisteronlinesharedmindmaps_1311B/image_thumb.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;this is the link to my public .NET buzz &lt;a href="http://www.mindmeister.com/maps/show_public/5294051" target="_blank"&gt;mindmap&lt;/a&gt; (you can do better, I know.) .&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;this is the code to embed a (view only) mindmap in a html page:&lt;/p&gt;&lt;pre class="csharpcode"&gt; &amp;lt;iframe width=&lt;span class="str"&gt;&amp;quot;600&amp;quot;&lt;/span&gt; height=&lt;span class="str"&gt;&amp;quot;400&amp;quot;&lt;/span&gt; frameborder=&lt;span class="str"&gt;&amp;quot;0&amp;quot;&lt;/span&gt;  src=&lt;span class="str"&gt;&amp;quot;http://www.mindmeister.com/maps/public_map_shell/5294051?width=600&amp;amp;height=400&amp;amp;zoom=1&amp;quot;&lt;/span&gt; &lt;br /&gt;scrolling=&lt;span class="str"&gt;&amp;quot;no&amp;quot;&lt;/span&gt; style=&lt;span class="str"&gt;&amp;quot;overflow:hidden&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/pre&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&amp;nbsp;&lt;/pre&gt;
&lt;p&gt;check how it looks like &lt;a href="http://blog.trivadis.com/blogs/michaelkoenings/mindmeister.htm" target="_blank"&gt;here&lt;/a&gt; (move it around like a google map):&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;this is an exported GIF (click on it) :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.trivadis.com/blogs/michaelkoenings/WindowsLiveWriter/CoolToolMindmeisteronlinesharedmindmaps_1311B/NET_2.gif"&gt;&lt;img style="BORDER-RIGHT:0px;BORDER-TOP:0px;BORDER-LEFT:0px;BORDER-BOTTOM:0px;" height="98" alt="NET" src="http://blog.trivadis.com/blogs/michaelkoenings/WindowsLiveWriter/CoolToolMindmeisteronlinesharedmindmaps_1311B/NET_thumb.gif" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;So: If you like mindmaps and work in a distributed environment: give it a try! &lt;/p&gt;&lt;img src="http://blog.trivadis.com/aggbug.aspx?PostID=563" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?a=YSR6ybQ_54I:Y1gEqMFVcoU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?a=YSR6ybQ_54I:Y1gEqMFVcoU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?i=YSR6ybQ_54I:Y1gEqMFVcoU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/trivadis/michaelkoenings/~4/YSR6ybQ_54I" height="1" width="1"/&gt;</description><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/Ajax/default.aspx">Ajax</category><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/Tools/default.aspx">Tools</category><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/Mindmap/default.aspx">Mindmap</category><feedburner:origLink>http://blog.trivadis.com/blogs/michaelkoenings/archive/2008/03/21/cool-tool-mindmeister-online-shared-mindmaps.aspx</feedburner:origLink></item><item><title>How-To: clean up the Visual Studio Help mess</title><link>http://feedproxy.google.com/~r/trivadis/michaelkoenings/~3/NWBYpb-F3To/how-to-clean-up-the-visual-studio-help-mess.aspx</link><pubDate>Sun, 03 Feb 2008 17:12:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:498</guid><dc:creator>admin</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blog.trivadis.com/blogs/michaelkoenings/rsscomments.aspx?PostID=498</wfw:commentRss><comments>http://blog.trivadis.com/blogs/michaelkoenings/archive/2008/02/03/how-to-clean-up-the-visual-studio-help-mess.aspx#comments</comments><description>&lt;p&gt;Is your&amp;#39;s messy too? After installing an uninstalling tons of tools, updates, libraries frameworks etc., mine was a big mess. I found an easy way, that helps you to get rid of unwanted stuff in the help system and also get back the good stuff you were looking for but couldn&amp;#39;t find it anymore.&lt;/p&gt;
&lt;p&gt;There is no option to manage the help files from the menu. Even in the Help on Help section, I couldn&amp;#39;t find a hint !&lt;/p&gt;
&lt;p&gt;Actually its very easy, but quite hard to find:&lt;/p&gt;
&lt;p&gt;Open the Help Application (just hit F1 in VS). In the search box, enter &lt;strong&gt;&amp;quot;Visual Studio&amp;nbsp; Combined Help Collection Manager&amp;quot;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A page with that name should be found. It has some checkboxes, depending on the stuff you have installed. Check the entries you need, uncheck the ones you don&amp;#39;t need and hit the &amp;quot;Update&amp;quot; button.&lt;/p&gt;
&lt;p&gt;Next time you start the Help System it will take some time to merge the help libraries. After that, everything should be fine! &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.trivadis.com/blogs/michaelkoenings/WindowsLiveWriter/HowTocleanuptheVisualStudioonlinehelpmes_FCA4/help_2.png"&gt;&lt;img style="BORDER-RIGHT:0px;BORDER-TOP:0px;BORDER-LEFT:0px;BORDER-BOTTOM:0px;" height="216" alt="help" src="http://blog.trivadis.com/blogs/michaelkoenings/WindowsLiveWriter/HowTocleanuptheVisualStudioonlinehelpmes_FCA4/help_thumb.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;nice and clean...&lt;/p&gt;&lt;img src="http://blog.trivadis.com/aggbug.aspx?PostID=498" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?a=NWBYpb-F3To:hxXDw0G6jLQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?a=NWBYpb-F3To:hxXDw0G6jLQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?i=NWBYpb-F3To:hxXDw0G6jLQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/trivadis/michaelkoenings/~4/NWBYpb-F3To" height="1" width="1"/&gt;</description><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/HowTo/default.aspx">HowTo</category><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/VS/default.aspx">VS</category><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/Help/default.aspx">Help</category><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><feedburner:origLink>http://blog.trivadis.com/blogs/michaelkoenings/archive/2008/02/03/how-to-clean-up-the-visual-studio-help-mess.aspx</feedburner:origLink></item><item><title>How-To: add geographical information to IIS log files with LINQ</title><link>http://feedproxy.google.com/~r/trivadis/michaelkoenings/~3/BPvewhi_Mhw/how-to-add-geographical-information-to-iis-logs-with-linq.aspx</link><pubDate>Wed, 23 Jan 2008 17:52:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:480</guid><dc:creator>admin</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blog.trivadis.com/blogs/michaelkoenings/rsscomments.aspx?PostID=480</wfw:commentRss><comments>http://blog.trivadis.com/blogs/michaelkoenings/archive/2008/01/23/how-to-add-geographical-information-to-iis-logs-with-linq.aspx#comments</comments><description>&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;p&gt;LINQ in action: a real life problem, solved with a few lines of easy-to-read code. In my last post, I promised to provide a solution to enhance the information we can derive from IIS logs with the help of Log Parser. All you need is the free Geo-IP database (updated frequently) that can be found &lt;a href="http://www.maxmind.com/app/csharp" target="_blank"&gt;here&lt;/a&gt; plus the free C# API that is provided by these generous folks.&lt;/p&gt;
&lt;p&gt;create a (less messy :-) ) little command line program that has a&amp;nbsp; LINQ statement like this:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;using &lt;/span&gt;System;
&lt;span style="COLOR:blue;"&gt;using &lt;/span&gt;System.Collections.Generic;
&lt;span style="COLOR:blue;"&gt;using &lt;/span&gt;System.Linq;


&lt;span style="COLOR:blue;"&gt;namespace &lt;/span&gt;CountryLookupProj
{
    &lt;span style="COLOR:blue;"&gt;class &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;SumColumns
    &lt;/span&gt;{
        &lt;span style="COLOR:blue;"&gt;static void &lt;/span&gt;Main(&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;[] args)
        {
            &lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;[] lines = System.IO.&lt;span style="COLOR:#2b91af;"&gt;File&lt;/span&gt;.ReadAllLines(args[0]);

            &lt;span style="COLOR:blue;"&gt;int &lt;/span&gt;exam = &lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;.Parse(args[1]);


            AddSingleColumn(lines, exam - 1);
            &lt;span style="COLOR:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine();
            &lt;span style="COLOR:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Press any key to exit&amp;quot;&lt;/span&gt;);
            &lt;span style="COLOR:#2b91af;"&gt;Console&lt;/span&gt;.ReadKey();
        }

        &lt;span style="COLOR:blue;"&gt;static void &lt;/span&gt;AddSingleColumn(&lt;span style="COLOR:#2b91af;"&gt;IEnumerable&lt;/span&gt;&amp;lt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&amp;gt; strs, &lt;span style="COLOR:blue;"&gt;int &lt;/span&gt;examNum)
        {
            &lt;span style="COLOR:#2b91af;"&gt;CountryLookup &lt;/span&gt;countryLookup = 
                &lt;span style="COLOR:blue;"&gt;new &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;CountryLookup&lt;/span&gt;(&lt;span style="COLOR:#a31515;"&gt;@&amp;quot;C:\Stuff\GeoLiteCity\Geoip.dat&amp;quot;&lt;/span&gt;);
            &lt;span style="COLOR:blue;"&gt;var &lt;/span&gt;columnQuery =
                &lt;span style="COLOR:blue;"&gt;from &lt;/span&gt;line &lt;span style="COLOR:blue;"&gt;in &lt;/span&gt;strs
                &lt;span style="COLOR:blue;"&gt;let &lt;/span&gt;x = line.Split(&lt;span style="COLOR:#a31515;"&gt;&amp;#39;;&amp;#39;&lt;/span&gt;)
                &lt;span style="COLOR:blue;"&gt;select &lt;/span&gt;countryLookup.lookupCountryName(x[examNum]) 
                       + &lt;span style="COLOR:#a31515;"&gt;&amp;quot;;&amp;quot; &lt;/span&gt;+ &lt;span style="COLOR:#2b91af;"&gt;String&lt;/span&gt;.Join(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;;&amp;quot;&lt;/span&gt;, x);

            System.IO.&lt;span style="COLOR:#2b91af;"&gt;File&lt;/span&gt;.WriteAllLines(&lt;span style="COLOR:#a31515;"&gt;@&amp;quot;c:\temp\output.log&amp;quot;&lt;/span&gt;,
                                         columnQuery.ToArray());

        }

    }
}&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;pre class="code"&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;run it like this:&lt;/p&gt;
&lt;p&gt;c:&amp;gt;\myprogram.exe &amp;quot;mylogfile.CSV&amp;quot; 1&lt;/p&gt;
&lt;p&gt;the 1 is the (one-based) position of the ip-address column in your CSV-file.&lt;/p&gt;
&lt;p&gt;thanks for the inspiration found &lt;a href="http://msdn2.microsoft.com/en-us/library/bb882644.aspx" target="_blank"&gt;here&lt;/a&gt; (MSDN)&lt;/p&gt;&lt;img src="http://blog.trivadis.com/aggbug.aspx?PostID=480" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?a=BPvewhi_Mhw:ZWQaVccEASw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?a=BPvewhi_Mhw:ZWQaVccEASw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?i=BPvewhi_Mhw:ZWQaVccEASw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/trivadis/michaelkoenings/~4/BPvewhi_Mhw" height="1" width="1"/&gt;</description><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/IIS+Log/default.aspx">IIS Log</category><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/CSV/default.aspx">CSV</category><feedburner:origLink>http://blog.trivadis.com/blogs/michaelkoenings/archive/2008/01/23/how-to-add-geographical-information-to-iis-logs-with-linq.aspx</feedburner:origLink></item><item><title>How-To: SQL query IIS Logs with Log Parser</title><link>http://feedproxy.google.com/~r/trivadis/michaelkoenings/~3/SaHtQJISEoE/how-to-query-iis-logs-with-log-parser.aspx</link><pubDate>Thu, 10 Jan 2008 21:02:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:441</guid><dc:creator>admin</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://blog.trivadis.com/blogs/michaelkoenings/rsscomments.aspx?PostID=441</wfw:commentRss><comments>http://blog.trivadis.com/blogs/michaelkoenings/archive/2008/01/10/how-to-query-iis-logs-with-log-parser.aspx#comments</comments><description>&lt;p&gt;Face it: the built-in reports in Community Server are not good enough if you want detailed information about your traffic. Google Analytics is great, but you can&amp;#39;t export the data in order to use it in your own queries. A better way is to analyze the IIS log files directly and join the information with the CS database tables.&amp;nbsp; But how can you find useful data in these huge files? 
&lt;p&gt;First of all: what do you really want to know? 
&lt;p&gt;I wanted to answer the following question: How many request do we get per day and blog post ? 
&lt;ul&gt;
&lt;li&gt;I&amp;#39;m only interested in &amp;quot;real people&amp;quot; requests. So we need to eliminate all requests from bots and feed readers. 
&lt;li&gt;I only want to count page requests, so we need to eliminate all requests to images and other files. 
&lt;li&gt;I only want to count blog page requests, no navigation on tags, or other pages. 
&lt;li&gt;I only want to count successful requests. 
&lt;li&gt;I want to use the data to join it with CS Database data, in order to query additional meta-information (Author, Blog Name, Post creation date etc.) so some transformation of the standard IISW3C fields has to take place.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Since we are database specialists here at Trivadis, it&amp;#39;s quite natural that SQL is a perfect language to query data. But how do you query an IIS log file which is in a special format (no CSV)? 
&lt;p&gt;No, don&amp;#39;t even try do do it with Excel or Access. Even SQL Server can&amp;#39;t import dozens of files in a proprietary format easily. You could try to play with SSIS, but it would kill you, believe me :-). The files can have breaks where the header is repeated somewhere in the middle of a file, and none of the tools I mentioned can deal with that. Also, the size is just too much for office tools. 
&lt;p&gt;Use &lt;a href="http://www.iis.net/default.aspx?tabid=2&amp;amp;subtabid=29#LogParser"&gt;Log Parser&lt;/a&gt;! This tool is just great, simple to use and extremely powerful. It&amp;#39;s only purpose is to query log files (not only IIS). And it does it very well: with a SQL-like query language you can run queries against complete folders of files, and the performance is just amazing. It takes some seconds to query gigabytes of date.&amp;nbsp; But it is only a command line tool. The cream topping is the UI that the fine people at SerialCoder wrote: &lt;a href="http://www.serialcoder.net/logiciels/visual-logparser.aspx"&gt;Visual Log Parser GUI&lt;/a&gt; . It&amp;#39;s quite simple, but has all the features you need if you are a GUI spoiled developer like me :-). Just think of it as a SQL Server Management Studio, but for files. 
&lt;p&gt;A query to provide data for the use case I mentioned above could look like this:&lt;/p&gt;&lt;font color="#0000ff"&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;select  
&lt;/span&gt;&lt;span style="COLOR:black;"&gt;ViewDate&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;, &lt;/span&gt;&lt;span style="COLOR:black;"&gt;PostName&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;, 
&lt;/span&gt;&lt;span style="COLOR:black;"&gt;KlickCount&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;,
&lt;/span&gt;&lt;span style="COLOR:black;"&gt;Blogname&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:black;"&gt;&lt;/span&gt;&lt;span style="COLOR:magenta;"&gt;using 
      &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;date as &lt;/span&gt;&lt;span style="COLOR:black;"&gt;ViewDate&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;, &lt;/span&gt;&lt;span style="COLOR:magenta;"&gt;coalesce&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;( &lt;/span&gt;&lt;span style="COLOR:#191970;"&gt;replace_str&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;(&lt;/span&gt;&lt;span style="COLOR:#191970;"&gt;extract_prefix&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;(&lt;/span&gt;&lt;span style="COLOR:#191970;"&gt;extract_token&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;(&lt;/span&gt;&lt;span style="COLOR:black;"&gt;cs&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;-&lt;/span&gt;&lt;span style="COLOR:black;"&gt;uri&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;-&lt;/span&gt;&lt;span style="COLOR:black;"&gt;stem&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;, &lt;/span&gt;&lt;span style="COLOR:#00008b;"&gt;7&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;,&lt;/span&gt;&lt;span style="COLOR:red;"&gt;&amp;#39;/&amp;#39;&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;),&lt;/span&gt;&lt;span style="COLOR:#00008b;"&gt;0&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;,&lt;/span&gt;&lt;span style="COLOR:red;"&gt;&amp;#39;.&amp;#39;&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;),&lt;/span&gt;&lt;span style="COLOR:red;"&gt;&amp;#39;-&amp;#39;&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;,&lt;/span&gt;&lt;span style="COLOR:red;"&gt;&amp;#39; &amp;#39;&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;),&lt;/span&gt;&lt;span style="COLOR:red;"&gt;&amp;#39;default&amp;#39;&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;) &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;as &lt;/span&gt;&lt;span style="COLOR:black;"&gt;PostName
     &lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;, &lt;/span&gt;&lt;span style="COLOR:#191970;"&gt;to_uppercase&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;( &lt;/span&gt;&lt;span style="COLOR:#191970;"&gt;extract_token&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;(&lt;/span&gt;&lt;span style="COLOR:black;"&gt;cs&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;-&lt;/span&gt;&lt;span style="COLOR:black;"&gt;uri&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;-&lt;/span&gt;&lt;span style="COLOR:black;"&gt;stem&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;, &lt;/span&gt;&lt;span style="COLOR:#00008b;"&gt;2 &lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;,&lt;/span&gt;&lt;span style="COLOR:red;"&gt;&amp;#39;/&amp;#39;&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;))  &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;as &lt;/span&gt;&lt;span style="COLOR:black;"&gt;BlogName
     &lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;, &lt;/span&gt;&lt;span style="COLOR:magenta;"&gt;count&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;(*) &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;as &lt;/span&gt;&lt;span style="COLOR:black;"&gt;KlickCount
&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;from  &lt;/span&gt;&lt;span style="COLOR:red;"&gt;&amp;#39;E:\Blog\*.log&amp;#39;
&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;where &lt;/span&gt;&lt;span style="COLOR:black;"&gt;cs&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;-&lt;/span&gt;&lt;span style="COLOR:black;"&gt;uri&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;-&lt;/span&gt;&lt;span style="COLOR:black;"&gt;stem &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;like &lt;/span&gt;&lt;span style="COLOR:red;"&gt;&amp;#39;/blogs/%&amp;#39; 
&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;and &lt;/span&gt;&lt;span style="COLOR:black;"&gt;cs&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;-&lt;/span&gt;&lt;span style="COLOR:black;"&gt;uri&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;-&lt;/span&gt;&lt;span style="COLOR:black;"&gt;stem &lt;/span&gt;&lt;span style="COLOR:gray;"&gt;not &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;like &lt;/span&gt;&lt;span style="COLOR:red;"&gt;&amp;#39;%.png&amp;#39; 
&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;and  &lt;/span&gt;&lt;span style="COLOR:black;"&gt;cs&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;-&lt;/span&gt;&lt;span style="COLOR:black;"&gt;uri&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;-&lt;/span&gt;&lt;span style="COLOR:black;"&gt;stem &lt;/span&gt;&lt;span style="COLOR:gray;"&gt;not &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;like &lt;/span&gt;&lt;span style="COLOR:red;"&gt;&amp;#39;%.jpg&amp;#39; 
&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;and  &lt;/span&gt;&lt;span style="COLOR:black;"&gt;cs&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;-&lt;/span&gt;&lt;span style="COLOR:black;"&gt;uri&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;-&lt;/span&gt;&lt;span style="COLOR:black;"&gt;stem &lt;/span&gt;&lt;span style="COLOR:gray;"&gt;not &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;like &lt;/span&gt;&lt;span style="COLOR:red;"&gt;&amp;#39;%.gif&amp;#39;
&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;and  &lt;/span&gt;&lt;span style="COLOR:black;"&gt;cs&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;-&lt;/span&gt;&lt;span style="COLOR:black;"&gt;uri&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;-&lt;/span&gt;&lt;span style="COLOR:black;"&gt;stem &lt;/span&gt;&lt;span style="COLOR:gray;"&gt;not &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;like &lt;/span&gt;&lt;span style="COLOR:red;"&gt;&amp;#39;%rss%&amp;#39; 
&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;and  &lt;/span&gt;&lt;span style="COLOR:black;"&gt;cs&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;-&lt;/span&gt;&lt;span style="COLOR:black;"&gt;uri&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;-&lt;/span&gt;&lt;span style="COLOR:black;"&gt;stem &lt;/span&gt;&lt;span style="COLOR:gray;"&gt;not &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;like &lt;/span&gt;&lt;span style="COLOR:red;"&gt;&amp;#39;%/tags/%&amp;#39; 
&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;and  &lt;/span&gt;&lt;span style="COLOR:black;"&gt;cs&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;-&lt;/span&gt;&lt;span style="COLOR:black;"&gt;uri&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;-&lt;/span&gt;&lt;span style="COLOR:black;"&gt;stem &lt;/span&gt;&lt;span style="COLOR:gray;"&gt;not &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;like &lt;/span&gt;&lt;span style="COLOR:red;"&gt;&amp;#39;%MainFeed.aspx&amp;#39;  
&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;and &lt;/span&gt;&lt;span style="COLOR:#191970;"&gt;cs&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;(&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;User&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;-&lt;/span&gt;&lt;span style="COLOR:black;"&gt;Agent&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;)  &lt;/span&gt;&lt;span style="COLOR:gray;"&gt;not &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;like &lt;/span&gt;&lt;span style="COLOR:red;"&gt;&amp;#39;%bot%&amp;#39; 
&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;and &lt;/span&gt;&lt;span style="COLOR:#191970;"&gt;cs&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;(&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;User&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;-&lt;/span&gt;&lt;span style="COLOR:black;"&gt;Agent&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;)  &lt;/span&gt;&lt;span style="COLOR:gray;"&gt;not &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;like &lt;/span&gt;&lt;span style="COLOR:red;"&gt;&amp;#39;%slurp%&amp;#39;
&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;and &lt;/span&gt;&lt;span style="COLOR:#191970;"&gt;cs&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;(&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;User&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;-&lt;/span&gt;&lt;span style="COLOR:black;"&gt;Agent&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;)  &lt;/span&gt;&lt;span style="COLOR:gray;"&gt;not &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;like &lt;/span&gt;&lt;span style="COLOR:red;"&gt;&amp;#39;%crawl%&amp;#39;
&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;and &lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;[&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;date&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;] &lt;/span&gt;&lt;span style="COLOR:gray;"&gt;between &lt;/span&gt;&lt;span style="COLOR:#191970;"&gt;to_timestamp&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;(&lt;/span&gt;&lt;span style="COLOR:red;"&gt;&amp;#39;2007-12-01&amp;#39; &lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;,&lt;/span&gt;&lt;span style="COLOR:red;"&gt;&amp;#39;yyyy-MM-dd&amp;#39;&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;) &lt;/span&gt;&lt;span style="COLOR:gray;"&gt;and &lt;/span&gt;&lt;span style="COLOR:#191970;"&gt;to_timestamp&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;(&lt;/span&gt;&lt;span style="COLOR:red;"&gt;&amp;#39;2007-12-17&amp;#39;&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;,&lt;/span&gt;&lt;span style="COLOR:red;"&gt;&amp;#39;yyyy-MM-dd&amp;#39;&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;)
&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;and &lt;/span&gt;&lt;span style="COLOR:#191970;"&gt;extract_token&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;(&lt;/span&gt;&lt;span style="COLOR:black;"&gt;cs&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;-&lt;/span&gt;&lt;span style="COLOR:black;"&gt;uri&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;-&lt;/span&gt;&lt;span style="COLOR:black;"&gt;stem&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;, &lt;/span&gt;&lt;span style="COLOR:#00008b;"&gt;3 &lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;,&lt;/span&gt;&lt;span style="COLOR:red;"&gt;&amp;#39;/&amp;#39;&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;) &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;in &lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;(&lt;/span&gt;&lt;span style="COLOR:red;"&gt;&amp;#39;archive&amp;#39;&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;, &lt;/span&gt;&lt;span style="COLOR:red;"&gt;&amp;#39;default.aspx&amp;#39;&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;)
&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;and &lt;/span&gt;&lt;span style="COLOR:black;"&gt;sc&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;-&lt;/span&gt;&lt;span style="COLOR:black;"&gt;status &lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;= &lt;/span&gt;&lt;span style="COLOR:#00008b;"&gt;200
&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;group by date&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;, &lt;/span&gt;&lt;span style="COLOR:black;"&gt;PostName&lt;/span&gt;&lt;span style="COLOR:#006400;"&gt;, &lt;/span&gt;&lt;span style="COLOR:black;"&gt;BlogName
&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;order by &lt;/span&gt;&lt;span style="COLOR:black;"&gt;KlickCount &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;desc&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;&lt;/span&gt;&amp;nbsp;&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;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/font&gt;
&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;The output should look somewhat like this (one example row) :&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier" size="1"&gt;12.09.2007 00:00:00;mvc castle subsonic bye bye webforms;111;MICHAELKOENINGS&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier" size="1"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;For Community Server admins:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;The PostName column matches the column PostName on the cs_Posts Table. The Blogname column matches the ApplicationKey column on the sections table. I used MS-Access to bring the data together. This is the perfect starting point to provide excel pivot tables about the performance of your service that makes every manager happy :-) &lt;/p&gt;
&lt;p&gt;&lt;font face="tre" size="2"&gt;Some notes:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="tre" size="2"&gt;The hits on the default.aspx page cannot be matched with a particular post. I will try to find a solution to match it by date. The last post that was saved before the page was displayed should be count.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="tre" size="2"&gt;More cool stuff to come: there is a &lt;a href="http://www.maxmind.com/app/csharp" target="_blank"&gt;free regions DB available&lt;/a&gt; on the internet. With that you can resolve the country, region and city of your visitors IP address. Since it cannot be queried with SQL&amp;nbsp; (it is a proprietary binary format that can only be read via a API), we will use LINQ to help us with that. That&amp;#39;s right: a real world LINQ example! So stay tuned!&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blog.trivadis.com/aggbug.aspx?PostID=441" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?a=SaHtQJISEoE:rfd-R0cFeNM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?a=SaHtQJISEoE:rfd-R0cFeNM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?i=SaHtQJISEoE:rfd-R0cFeNM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/trivadis/michaelkoenings/~4/SaHtQJISEoE" height="1" width="1"/&gt;</description><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/SQL/default.aspx">SQL</category><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/CS/default.aspx">CS</category><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/CommunityServer/default.aspx">CommunityServer</category><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/LogParser/default.aspx">LogParser</category><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/IIS+Log/default.aspx">IIS Log</category><feedburner:origLink>http://blog.trivadis.com/blogs/michaelkoenings/archive/2008/01/10/how-to-query-iis-logs-with-log-parser.aspx</feedburner:origLink></item><item><title>Backup à la Web 2.0 mit Amazon S3</title><link>http://feedproxy.google.com/~r/trivadis/michaelkoenings/~3/GqxJGJlLiag/backup-224-la-web-2-0.aspx</link><pubDate>Sat, 08 Dec 2007 21:34:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:416</guid><dc:creator>admin</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blog.trivadis.com/blogs/michaelkoenings/rsscomments.aspx?PostID=416</wfw:commentRss><comments>http://blog.trivadis.com/blogs/michaelkoenings/archive/2007/12/08/backup-224-la-web-2-0.aspx#comments</comments><description>&lt;p&gt;Du hast sicher schon vom &lt;a href="http://www.amazon.com/S3-AWS-home-page-Money/b/ref=sc_fe_c_1_3435361_10?ie=UTF8&amp;amp;node=16427261&amp;amp;no=3435361&amp;amp;me=A36L942TSJ2AJA"&gt;Amazon S3&lt;/a&gt; gehört. Amazon bietet &amp;quot;unendlichen&amp;quot; Speicherplatz auf ihren Systemen an, den man pro Gb (Transfer und Speicherplatz) &lt;a href="http://calculator.s3.amazonaws.com/calc5.html?"&gt;bezahlt&lt;/a&gt;. Dabei profitiert man von der riesigen hochverfügbaren Infrastruktur von Amazons Rechenzentren. Die Daten werden an verschiedenen Orten der Welt komplett verschlüsselt (PKI) redundant gespeichert. Dieser Service wendet sich primär an Software-Hersteller und Firmen, um neue Ideen für die Datenspeicherung und Bereitstellung zu entwickeln. Es ist aber auch für Privatleute sehr einfach möglich, diesen Service in Anspruch zu nehmen. Seit &lt;a href="http://www.golem.de/0711/55845.html" target="_blank"&gt;kurzem&lt;/a&gt; ist dieser Service auch in Europa verfügbar. 
&lt;p&gt;Es handelt sich dabei um einen &lt;a href="http://s3.amazonaws.com/doc/2006-03-01/AmazonS3.wsdl?"&gt;Webservice&lt;/a&gt;, der über entsprechende APIs angesprochen wird. Die Abrechnung ist genauso einfach wie Weihnachts-Shopping: Die Amazon Kundendaten vom letzen Buchkauf kann man direkt übernehmen...(US $) 
&lt;p&gt;Das WebService API ist für Enduser natürlich nicht ohne weiteres direkt verwendbar. Es gibt also einen Markt für &lt;a href="http://elastic8.com/blog/tools_for_accessing_using_to_backup_your_data_to_and_from_s3.html" target="_blank"&gt;kleine Software Hersteller&lt;/a&gt;, die das Problem&amp;nbsp; lösen: der Amazon Speicherplatz ist direkt aus dem eigenen PC ansprechbar wie einen lokale Festplatte. 
&lt;p&gt;Es gibt für Windows, Linux und Mac z.B. das Produkt &lt;a href="http://www.jungledisk.com/"&gt;Jungle Disk&lt;/a&gt; , das dies sehr elegant ermöglicht. Als Zusatznutzen bietet dieses Programm eine automatisierte Sicherung, die regelmäßig lokale Verzeichnisse auf das Amazon System sichert. Die Software kann man sogar per USB Stick überall mit hinnehmen, ideal für Leute, die an vielen verschiedenen Computern arbeiten (müssen). Ich liebe sowas... 
&lt;p&gt;&lt;a href="http://www.jungledisk.com/" target="_blank"&gt;&lt;img style="BORDER-RIGHT:0px;BORDER-TOP:0px;BORDER-LEFT:0px;BORDER-BOTTOM:0px;" height="67" alt="image" src="http://blog.trivadis.com/blogs/michaelkoenings/WindowsLiveWriter/BackuplaWeb2.0_13D88/image_3.png" width="244" border="0" /&gt;&lt;/a&gt; 
&lt;p&gt;Warum braucht man diese zusätzliche Software ? 
&lt;p&gt;Das Problem ist schnell erklärt: Bandbreite. 
&lt;p&gt;Jungle Disk &amp;quot;cached&amp;quot; z.B. bestimmte Dateien, da der Windows Explorer sonst alle .EXE Dateien runterladen würde, um die Icons auszulesen... Das wäre (bei haushaltsüblichen Internet-Verbindungen ) viel zu langsam und würde den Arbeitsfluss am PC stören. 
&lt;p&gt;Updates auf das entfernte System werden asynchron im Hintergrund gemacht. So kann man &amp;quot;schnell&amp;quot; ein paar Dateien oder ganze Ordner auf das Netzwerklaufwerk &amp;quot;ziehen&amp;quot;, ohne ewig dem Dateikopier-Dialog zuschauen zu müssen. 
&lt;p&gt;Leser meines &lt;a href="http://blog.trivadis.com/blogs/michaelkoenings/archive/2007/12/04/hat-microsoft-sinn-f-252-r-humor.aspx"&gt;letzten Beitrags&lt;/a&gt; haben sich sicher gefragt: &amp;quot;und wie sicherst Du deinen Windows Home Server?&amp;quot; Nun, das ist jetzt wohl beantwortet... Jungle Drive bietet ein Add-In für WHS um Shared Drives online zu sichern. 
&lt;p&gt;C# User aufgepasst:&amp;nbsp; Amazon hat ein schönes &lt;a href="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=981&amp;amp;ref=featured"&gt;Beispiel&lt;/a&gt; für die Verwendung des APIs hochgeladen. 
&lt;p&gt;Hey, sind wir nicht eine Daten-Company?&amp;nbsp; Ich freue mich auf coole Projekte, wo wir dem Kunden Zugriff zu einem hochverfügbaren, sicheren Datenspeicher ermöglichen können, und das von überall, mit nahezu unbegrenzter gleichzeitiger Nutzung. Think about it (A&lt;a class="" href="http://blog.namics.com/2007/11/amazon_s3_in_eu.html" target="_blank"&gt;ndere&lt;/a&gt; tun es auch)... &lt;/p&gt;&lt;img src="http://blog.trivadis.com/aggbug.aspx?PostID=416" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?a=GqxJGJlLiag:5x-VU2E0unI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?a=GqxJGJlLiag:5x-VU2E0unI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/trivadis/michaelkoenings?i=GqxJGJlLiag:5x-VU2E0unI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/trivadis/michaelkoenings/~4/GqxJGJlLiag" height="1" width="1"/&gt;</description><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/WHS/default.aspx">WHS</category><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/Amazon+S3/default.aspx">Amazon S3</category><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/JungleDrive/default.aspx">JungleDrive</category><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blog.trivadis.com/blogs/michaelkoenings/archive/tags/Cloud/default.aspx">Cloud</category><feedburner:origLink>http://blog.trivadis.com/blogs/michaelkoenings/archive/2007/12/08/backup-224-la-web-2-0.aspx</feedburner:origLink></item></channel></rss>
