<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Rash thoughts about .NET, C#, F# and Dynamics NAV. &#187; .NET User Group Leipzig</title>
	<atom:link href="http://www.navision-blog.de/tag/net-user-group-leipzig/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.navision-blog.de</link>
	<description>This Blog is about Microsoft Dynamics NAV (f.k.a Navision incl. C/SIDE and C/AL), C#, F# and .NET in general.</description>
	<lastBuildDate>Wed, 14 Jul 2010 11:12:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>F# BootCamp &#8211; Questions and Answers &#8211; part IV &#8211; Structural comparison</title>
		<link>http://www.navision-blog.de/2009/07/02/f-bootcamp-questions-and-answers-part-iv-structural-comparison/</link>
		<comments>http://www.navision-blog.de/2009/07/02/f-bootcamp-questions-and-answers-part-iv-structural-comparison/#comments</comments>
		<pubDate>Thu, 02 Jul 2009 15:37:10 +0000</pubDate>
		<dc:creator>Steffen Forkmann</dc:creator>
				<category><![CDATA[English posts]]></category>
		<category><![CDATA[F#]]></category>
		<category><![CDATA[.NET User Group Leipzig]]></category>
		<category><![CDATA[Functional Programming]]></category>

		<guid isPermaLink="false">http://www.navision-blog.de/2009/07/02/f-bootcamp-questions-and-answers-part-iv-structural-comparison/</guid>
		<description><![CDATA[This is the third part in a “Questions and Answers”-series about the F# BootCamp in Leipzig. This time we will look at structural comparison and structural equality. Question 6: Please describe the terms “Structural Comparison” and “Structural Equality”. This was a simple question. Basically the answer is F# provides a default implementation for IComparable and [...]]]></description>
			<content:encoded><![CDATA[<p>This is the third part in a “Questions and Answers”-series about the <a href="http://dotnet-leipzig.de/veranstaltungen/net-bootcamp-2009-5/">F# BootCamp in Leipzig</a>. This time we will look at structural comparison and structural equality.</p>
<h5>Question 6: Please describe the terms “Structural Comparison” and “Structural Equality”.</h5>
<p>This was a simple question. Basically the answer is F# provides a default implementation for IComparable and .Equals() for all custom types. This default implementation compares all public fields of the two instances. Let’s consider some samples:</p>
<h5>Tuples</h5>
<pre class="code"><span style="color: blue">let </span>a = 3,4,<span style="color: maroon">&quot;foo&quot;
</span><span style="color: blue">let </span>b = 3,4,<span style="color: maroon">&quot;bar&quot;

</span>printfn <span style="color: maroon">&quot;a &gt; b = %b&quot; </span>(a &gt; b) <span style="color: green">// true
</span>printfn <span style="color: maroon">&quot;a &lt; b = %b&quot; </span>(a &lt; b) <span style="color: green">// false</span></pre>
<h5>Records</h5>
<pre class="code"><span style="color: blue">type </span>MySimpleRecord =
  { a: int;
    b: int;}

<span style="color: blue">type </span>MyCompositeRecord =
  { x: string;
    y: int;
    z: MySimpleRecord}

<span style="color: blue">let </span>a =
  { x = <span style="color: maroon">&quot;Test&quot;</span>;
    y = 3;
    z = {a = 1; b = 4;}}

<span style="color: blue">let </span>b =
  { x = <span style="color: maroon">&quot;Test&quot;</span>;
    y = 3;
    z = {a = 1; b = 2;}}

<span style="color: green">// Structural comparison
</span>printfn <span style="color: maroon">&quot;a &gt; b = %b&quot; </span>(a &gt; b) <span style="color: green">// true
</span>printfn <span style="color: maroon">&quot;a &lt; b = %b&quot; </span>(a &lt; b) <span style="color: green">// false</span>

printfn <span style="color: maroon">&quot;Min(a,b) = %A&quot; </span>(min a b)
printfn <span style="color: maroon">&quot;compare(a,b) = %d&quot; </span>(compare a b) </pre>
<h5>Lists</h5>
<pre class="code"><span style="color: blue">let </span>a = [3; 2; 4; 5]
<span style="color: blue">let </span>b = [3; 2; 4; 3; 3]

<span style="color: green">// Structural comparison
</span>printfn <span style="color: maroon">&quot;a &gt; b = %b&quot; </span>(a &gt; b) <span style="color: green">// true
</span>printfn <span style="color: maroon">&quot;a &lt; b = %b&quot; </span>(a &lt; b) <span style="color: green">// false

</span>printfn <span style="color: maroon">&quot;Min(a,b) = %A&quot; </span>(min a b)
printfn <span style="color: maroon">&quot;compare(a,b) = %d&quot; </span>(compare a b)</pre>
<p>&copy;2010 <a href="http://www.navision-blog.de">Rash thoughts about .NET, C#, F# and Dynamics NAV.</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://www.navision-blog.de/2009/07/02/f-bootcamp-questions-and-answers-part-iv-structural-comparison/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>F# BootCamp &#8211; Questions and Answers &#8211; part II &#8211; Currying</title>
		<link>http://www.navision-blog.de/2009/06/17/f-bootcamp-questions-and-answers-part-ii-currying/</link>
		<comments>http://www.navision-blog.de/2009/06/17/f-bootcamp-questions-and-answers-part-ii-currying/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 10:36:07 +0000</pubDate>
		<dc:creator>Steffen Forkmann</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[English posts]]></category>
		<category><![CDATA[F#]]></category>
		<category><![CDATA[FAKE - F# Make]]></category>
		<category><![CDATA[Informatik]]></category>
		<category><![CDATA[Mathematik]]></category>
		<category><![CDATA[Veranstaltungen]]></category>
		<category><![CDATA[.NET Developer Group Braunschweig]]></category>
		<category><![CDATA[.NET User Group Leipzig]]></category>
		<category><![CDATA[Currying]]></category>
		<category><![CDATA[F-sharp Make]]></category>
		<category><![CDATA[Fake]]></category>
		<category><![CDATA[partial  application]]></category>
		<category><![CDATA[pipe]]></category>
		<category><![CDATA[|>]]></category>

		<guid isPermaLink="false">http://www.navision-blog.de/2009/06/17/f-bootcamp-questions-and-answers-part-ii-currying/</guid>
		<description><![CDATA[Yesterday I was talking about F# at the .NET Developer Group Braunschweig. It was my first talk completely without PowerPoint (just Live-Coding and FlipChart) and I have to admit this is not that easy. But the event was really a big fun and we covered a lot of topics like FP fundamentals, concurrency and domain [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday I was talking about F# at the <a href="http://www.dotnet-braunschweig.de/termindetails.aspx?id=36">.NET Developer Group Braunschweig</a>. It was my first talk completely without PowerPoint (just Live-Coding and FlipChart) and I have to admit this is not that easy. But the event was really a big fun and we covered a lot of topics like FP fundamentals, concurrency and domain specific languages (of course I showed “<a href="http://code.google.com/p/fake/">FAKE – F# Make”</a>).</p>
<p>Now I have a bit time before I go to the next BootCamp in Leipzig. Today <a href="http://blogs.thinktecture.com/cweyer/">Christian Weyer</a> will show us exciting new stuff about <a href="http://dotnet-leipzig.de/veranstaltungen/net-bootcamp-2009-3/">WCF and Azure</a>. </p>
<p>In the meanwhile I will write here about another important question (see <a href="http://www.navision-blog.de/2009/06/02/f-sharp-bootcamp-questions-and-answers-part-i-introduction/">first article</a>) from the <a href="http://dotnet-leipzig.de/veranstaltungen/net-bootcamp-2009-5/">F# BootCamp in Leipzig</a>:</p>
<h5>Question 4 – Try to explain “Currying” and “Partial Application”. Hint: Please show a sample and use the pipe operator |&gt;.</h5>
<p>Obviously this was a tricky question for FP beginners. There are a lot of websites, which give a formal mathematical definition but don’t show the practical application. </p>
<blockquote><p>“Currying … is the technique of transforming a function that takes multiple arguments (or more accurately an n-tuple as argument) in such a way that it can be called as a chain of functions each with a single argument”</p>
<p align="right">[<a href="http://en.wikipedia.org/wiki/Currying">Wikipedia</a>]</p>
</blockquote>
<p>I want to show how my pragmatic view of the terms here, so let’s consider this small C# function:</p>
<pre class="code"><span style="color: blue">public int </span>Add(<span style="color: blue">int </span>x, <span style="color: blue">int </span>y)
{
   <span style="color: blue">return </span>x + y;
}</pre>
<p>Of course the corresponding F# version looks nearly the same:</p>
<pre class="code"><span style="color: blue">let </span>add(x,y) = x + y</pre>
<p>But let’s look at the signature: <em>val add : int<strong> *</strong> int –&gt; int</em>. The F# compiler is telling us <strong>add </strong>wants a tuple of ints and returns an int. We could rewrite the function with one blank to understand this better:</p>
<pre class="code"><span style="color: blue">let </span>add (x,y) = x + y</pre>
<p>As you can see the add function actually needs only one argument – a tuple:</p>
<pre class="code"><span style="color: blue">let </span>t = (3,4)         <span style="color: green">// val t : int * int</span>
printfn <span style="color: maroon">&quot;%d&quot; </span>(add t)  <span style="color: green">// prints 7 – like add(3,4)</span></pre>
<p>Now we want to curry this function. If you’d ask a mathematician this a complex operation, but from a pragmatic view it couldn’t be easier. Just remove the brackets and the comma – that’s all:</p>
<pre class="code"><span style="color: blue">let </span>add x y = x + y</pre>
<p>Now the signature looks different: <em>val add : int<strong> -&gt;</strong> int –&gt; int</em></p>
<p>But what’s the meaning of this new arrow? Basically we can say if we give one int parameter to our add function we will get a function back that will take only one int parameter and returns an int.</p>
<pre class="code"><span style="color: blue">let </span>increment = add 1      <span style="color: green">// val increment : (int -&gt; int)
</span>printfn <span style="color: maroon">&quot;%d&quot; </span>(increment 2) <span style="color: green">// prints 3</span></pre>
<p>Here “increment” is a new function that uses partial application of the curryied add function. This means we are fixing one of the parameters of <strong>add </strong>to get a new function with one parameter less. </p>
<p>But why are doing something like this? Wouldn’t it be enough to use the following increment function?</p>
<pre class="code"><span style="color: blue">let </span>add(x,y) = x + y       <span style="color: green">// val add : int * int -&gt; int
</span><span style="color: blue">let </span>increment x = add(x,1) <span style="color: green">// val increment : int -&gt; int
</span>printfn <span style="color: maroon">&quot;%d&quot; </span>(increment 2) <span style="color: green">// prints 3</span></pre>
<p>Of course we are getting (nearly) the same signature for increment. But the difference is that we can not use the forward pipe operator <strong>|&gt;</strong> here. The pipe operator will help us to express things in the way we are thinking about it. </p>
<p>Let’s say we want to filter all even elements in a list, then calculate the sum and finally square this sum and print it to the console. The C# code would look like this:</p>
<pre class="code"><span style="color: blue">var </span>list = <span style="color: blue">new </span><span style="color: #2b91af">List</span>&lt;<span style="color: blue">int</span>&gt; {4,2,6,5,9,3,8,1,3,0};
Console.WriteLine(Square(CalculateSum(FilterEven(list))));</pre>
<p>If we don’t want to store intermediate results we have to write our algorithm in reverse order and with heavily use of brackets. The function we want to apply last has to be written first. This is not the way we think about it. </p>
<p>With the help of curried functions, partial application and the pipe operator we can write the same thing in F#:</p>
<pre class="code"><span style="color: blue">let </span>list = [4; 2; 6; 5; 9; 3; 8; 1; 3; 0]

<span style="color: blue">let </span>square x = x * x</pre>
<pre class="code">list
 |&gt; List.filter (<span style="color: blue">fun </span>x <span style="color: blue">-&gt; </span>x % 2 = 0) <span style="color: green">// partial application
 </span>|&gt; List.sum
 |&gt; square
 |&gt; printfn <span style="color: maroon">&quot;%A&quot;                     </span><span style="color: green">// partial application</span></pre>
<p>We describe the data flow in exactly the same order we talked about it. Basically the pipe operator take the result of a function and puts it as the <strong>last</strong> parameter into the next function.</p>
<p>What should we learn from this sample? </p>
<ol>
<li>Currying has nothing to do with spicy chicken.</li>
<li>The |&gt; operator makes life easier and code better to understand.</li>
<li>If we want to use |&gt; we need curryied functions.</li>
<li>Defining curryied functions is easy – just remove brackets and comma.</li>
<li>We don’t need the complete mathematical theory to use currying.</li>
<li>Be careful with the order of the parameter in a curryied function. Don’t forget the pipe operator puts the parameter from the right hand side into your function – all other parameters have to be fixed with partial application. </li>
</ol>
<p>&copy;2010 <a href="http://www.navision-blog.de">Rash thoughts about .NET, C#, F# and Dynamics NAV.</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://www.navision-blog.de/2009/06/17/f-bootcamp-questions-and-answers-part-ii-currying/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Anmeldung zum F# Bootcamp in Leipzig m&#246;glich</title>
		<link>http://www.navision-blog.de/2009/03/03/anmeldung-zum-f-bootcamp-in-leipzig-moeglich/</link>
		<comments>http://www.navision-blog.de/2009/03/03/anmeldung-zum-f-bootcamp-in-leipzig-moeglich/#comments</comments>
		<pubDate>Tue, 03 Mar 2009 14:28:57 +0000</pubDate>
		<dc:creator>Steffen Forkmann</dc:creator>
				<category><![CDATA[F#]]></category>
		<category><![CDATA[Veranstaltungen]]></category>
		<category><![CDATA[.NET User Group Leipzig]]></category>
		<category><![CDATA[bootcamp]]></category>

		<guid isPermaLink="false">http://www.navision-blog.de/2009/03/03/anmeldung-zum-f-bootcamp-in-leipzig-moeglich/</guid>
		<description><![CDATA[Auf der Seite der .Net User Group Leipzig ist nun die Anmeldung zum F# Bootcamp am 29.05.2009 in Leipzig m&#246;glich. Weitere Informationen: Blogartikel Veranstaltungseite &#169;2010 Rash thoughts about .NET, C#, F# and Dynamics NAV.. All Rights Reserved..]]></description>
			<content:encoded><![CDATA[<p>Auf der Seite der .<a href="http://dotnet-leipzig.de/">Net User Group Leipzig</a> ist nun die <a href="http://dotnet-leipzig.de/anmeldung/?eventId=86">Anmeldung zum F# Bootcamp</a> am 29.05.2009 in Leipzig m&#246;glich.</p>
<p>Weitere Informationen:</p>
<ul>
<li><a href="http://www.navision-blog.de/2009/01/20/f-bootcamp-in-leipzig/">Blogartikel</a> </li>
<li><a href="http://dotnet-leipzig.de/veranstaltungen/net-bootcamp-2009-5/">Veranstaltungseite</a></li>
</ul>
<p>&copy;2010 <a href="http://www.navision-blog.de">Rash thoughts about .NET, C#, F# and Dynamics NAV.</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://www.navision-blog.de/2009/03/03/anmeldung-zum-f-bootcamp-in-leipzig-moeglich/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>F# Bootcamp in Leipzig</title>
		<link>http://www.navision-blog.de/2009/01/20/f-bootcamp-in-leipzig/</link>
		<comments>http://www.navision-blog.de/2009/01/20/f-bootcamp-in-leipzig/#comments</comments>
		<pubDate>Tue, 20 Jan 2009 10:45:00 +0000</pubDate>
		<dc:creator>Steffen Forkmann</dc:creator>
				<category><![CDATA[F#]]></category>
		<category><![CDATA[Veranstaltungen]]></category>
		<category><![CDATA[.NET User Group Leipzig]]></category>
		<category><![CDATA[F-sharp Bootcamp]]></category>
		<category><![CDATA[Lernen durch Lehren]]></category>

		<guid isPermaLink="false">http://www.navision-blog.de/2009/01/20/f-bootcamp-in-leipzig/</guid>
		<description><![CDATA[Am Freitag dem 29.5.2009 werde ich in Leipzig ein kostenloses “.NET Bootcamp” zum Thema “Funktionale Programmierung in F#” leiten. Die Anmeldung wird ab M&#228;rz auf der Veranstaltungsseite der .NET User Group Leipzig m&#246;glich sein. “Funktionale Programmiersprachen nehmen seit geraumer Zeit einen hohen Stellenwert in der Wissenschaft ein. Demn&#228;chst k&#246;nnte es eine dieser Sprachen sogar aus [...]]]></description>
			<content:encoded><![CDATA[<p>Am Freitag dem 29.5.2009 werde ich in Leipzig ein <em>kostenloses</em> “.NET Bootcamp” zum Thema “Funktionale Programmierung in F#” leiten. Die Anmeldung wird ab M&#228;rz auf der <a href="http://dotnet-leipzig.de/veranstaltungen/net-bootcamp-2009-5/">Veranstaltungsseite</a> der <a href="http://dotnet-leipzig.de/">.NET User Group Leipzig</a> m&#246;glich sein.</p>
<blockquote><p>“Funktionale Programmiersprachen nehmen seit geraumer Zeit einen hohen Stellenwert in der Wissenschaft ein. Demn&#228;chst k&#246;nnte es eine dieser Sprachen sogar aus dem Forschungsbereich direkt in den Mainstream schaffen. Visual Studio 2010 wird neben C# und VB.NET die funktionale Programmiersprache F# als dritte Hauptsprache anbieten. Das .NET Bootcamp zu F# soll einen Einblick in funktionale Konzepte und deren Umsetzung in F# geben. Insbesondere soll auf &#8220;Funktionen h&#246;herer Ordnung&#8221;, Typinferenz, Currying, Pattern Matching, &#8220;Unver&#228;nderlichkeit&#8221; und parallele Programmierung eingegangen werden.”</p>
<p align="right"><a href="http://dotnet-leipzig.de/veranstaltungen/net-bootcamp-2009-5/">Veranstaltungsabstract</a></p>
</blockquote>
<p>Update: Die <a href="http://dotnet-leipzig.de/anmeldung/?eventId=86">Anmeldung</a> ist nun m&#246;glich.</p>
<p>Update: Die Fragen zum BootCamp k&#246;nnen nun <a href="http://www.navision-blog.de/blog/images/FSharpBootCamp.pdf">hier</a> herunter geladen werden.</p>
<p>&copy;2010 <a href="http://www.navision-blog.de">Rash thoughts about .NET, C#, F# and Dynamics NAV.</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://www.navision-blog.de/2009/01/20/f-bootcamp-in-leipzig/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stammtisch 1/2009 der .NET User Group Leipzig</title>
		<link>http://www.navision-blog.de/2009/01/17/stammtisch-12009-der-net-user-group-leipzig/</link>
		<comments>http://www.navision-blog.de/2009/01/17/stammtisch-12009-der-net-user-group-leipzig/#comments</comments>
		<pubDate>Sat, 17 Jan 2009 13:58:24 +0000</pubDate>
		<dc:creator>Steffen Forkmann</dc:creator>
				<category><![CDATA[.NET 3.0]]></category>
		<category><![CDATA[Veranstaltungen]]></category>
		<category><![CDATA[.NET User Group Leipzig]]></category>
		<category><![CDATA[Stammtisch]]></category>

		<guid isPermaLink="false">http://www.navision-blog.de/2009/01/17/stammtisch-12009-der-net-user-group-leipzig/</guid>
		<description><![CDATA[Am 20.01.2009 findet zwischen 19:30 und 21:30 Uhr der 1. Stammtisch der .NET User Group Leipzig im Jahr 2009 statt. Treffpunkt ist das TELEGRAPH Café in Leipzig und als besonderes Highlight hat sich Ralf Westphal angek&#252;ndigt. Eine Anmeldung ist nicht n&#246;tig. View this on the map. &#169;2010 Rash thoughts about .NET, C#, F# and Dynamics [...]]]></description>
			<content:encoded><![CDATA[<p>Am 20.01.2009 findet zwischen 19:30 und 21:30 Uhr der 1. Stammtisch der <a href="http://dotnet-leipzig.de/">.NET User Group Leipzig</a> im Jahr 2009 statt. Treffpunkt ist das <a href="http://www.cafe-telegraph.de/">TELEGRAPH Café</a> in Leipzig und als besonderes Highlight hat sich <a href="http://ralfw.de/">Ralf Westphal</a> angek&#252;ndigt. Eine Anmeldung ist nicht n&#246;tig.  <br /><a href="http://www.navision-blog.de/2009/01/17/stammtisch-12009-der-net-user-group-leipzig/">View this on the map.</a></p>
<p>&copy;2010 <a href="http://www.navision-blog.de">Rash thoughts about .NET, C#, F# and Dynamics NAV.</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://www.navision-blog.de/2009/01/17/stammtisch-12009-der-net-user-group-leipzig/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Workshop zu SCRUM und Team Foundation Server</title>
		<link>http://www.navision-blog.de/2008/02/10/workshop-zu-scrum-und-team-foundation-server/</link>
		<comments>http://www.navision-blog.de/2008/02/10/workshop-zu-scrum-und-team-foundation-server/#comments</comments>
		<pubDate>Sun, 10 Feb 2008 10:28:45 +0000</pubDate>
		<dc:creator>Steffen Forkmann</dc:creator>
				<category><![CDATA[.NET 3.0]]></category>
		<category><![CDATA[Informatik]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Veranstaltungen]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[.NET User Group Leipzig]]></category>
		<category><![CDATA[Agile Softwareentwicklung]]></category>
		<category><![CDATA[SCRUM]]></category>
		<category><![CDATA[Team Foundation Server]]></category>
		<category><![CDATA[Workshop]]></category>

		<guid isPermaLink="false">http://www.navision-blog.de/2008/02/10/workshop-zu-scrum-und-team-foundation-server/</guid>
		<description><![CDATA[Am 15.02.2008 findet von 13 &#8211; 17 Uhr in der Universit&#228;t Leipzig ein kostenloser Workshop von Jens Korte zum Vorgehensmodell SCRUM in Verbindung mit dem Team Foundation Server statt. Weitere Informationen im Blog von Torsten Weber. &#169;2010 Rash thoughts about .NET, C#, F# and Dynamics NAV.. All Rights Reserved..]]></description>
			<content:encoded><![CDATA[<p>Am 15.02.2008 findet von 13 &#8211; 17 Uhr in der Universit&#228;t Leipzig ein kostenloser Workshop von <a href="http://www.xing.com/profile/Jens_Korte">Jens Korte</a> zum Vorgehensmodell <a href="http://de.wikipedia.org/wiki/Scrum">SCRUM</a> in Verbindung mit dem Team Foundation Server statt. </p>
<p><a href="http://blogs.compactframework.de/Torsten.Weber/2008/02/09/Workshop+Zu+SCRUM+Team+Foundation+Server.aspx">Weitere Informationen</a> im Blog von Torsten Weber.</p>
<p>&copy;2010 <a href="http://www.navision-blog.de">Rash thoughts about .NET, C#, F# and Dynamics NAV.</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://www.navision-blog.de/2008/02/10/workshop-zu-scrum-und-team-foundation-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
