<?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>blog.ahzf.de &#187; Software Development</title>
	<atom:link href="http://blog.ahzf.de/index.php/category/rechenknecht/software-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.ahzf.de</link>
	<description></description>
	<lastBuildDate>Tue, 22 Dec 2009 18:21:45 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Is my code compiled on Mono (or Microsoft .NET)?</title>
		<link>http://blog.ahzf.de/index.php/2009/12/22/is-my-code-compiled-on-mono-or-microsoft-net/</link>
		<comments>http://blog.ahzf.de/index.php/2009/12/22/is-my-code-compiled-on-mono-or-microsoft-net/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 18:11:29 +0000</pubDate>
		<dc:creator>ahzf</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.ahzf.de/?p=617</guid>
		<description><![CDATA[If you want to distinguish between your .NET program compiled on Mono and your program compiled on Microsoft Windows you can use the “__MonoCS_” pre-processor flag!

using System;
using System.IO;
public class AmIMono
&#123;
&#160; &#160; public static void Main&#40;&#41;
&#160; &#160; &#123;
#if __MonoCS__
&#160; &#160; &#160; &#160; Console.WriteLine&#40;&#34;Hello Mono!  &#34;&#41;; &#160; &#160; &#160; &#160; 
#else
&#160; &#160; &#160; &#160; Console.WriteLine&#40;&#34;No Mono! [...]]]></description>
			<content:encoded><![CDATA[<p>If you want to distinguish between your .NET program compiled on Mono and your program compiled on Microsoft Windows you can use the “__MonoCS_” pre-processor flag!</p>
<div class="dean_ch" style="white-space: wrap;">
<span class="kw1">using</span> <span class="kw5">System</span>;<br />
<span class="kw1">using</span> <span class="kw5">System</span>.<span class="me1">IO</span>;</p>
<p><span class="kw1">public</span> <span class="kw4">class</span> AmIMono<br />
<span class="br0">&#123;</span></p>
<p>&nbsp; &nbsp; <span class="kw1">public</span> <span class="kw1">static</span> <span class="kw1">void</span> Main<span class="br0">&#40;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; <span class="br0">&#123;</span><br />
<span class="co2">#if __MonoCS__</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; Console.<span class="me1">WriteLine</span><span class="br0">&#40;</span><span class="st0">&quot;Hello Mono! <img src='http://blog.ahzf.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> &quot;</span><span class="br0">&#41;</span>; &nbsp; &nbsp; &nbsp; &nbsp; <br />
<span class="co2">#else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; Console.<span class="me1">WriteLine</span><span class="br0">&#40;</span><span class="st0">&quot;No Mono! <img src='http://blog.ahzf.de/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> &quot;</span><span class="br0">&#41;</span>;<br />
<span class="co2">#endif</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p><span class="br0">&#125;</span><br />
&nbsp;</div>
<pre>
mcs test.cs
./test.exe
</pre>
<p>via <a href="http://www.schrankmonster.de/2009/12/22/if-you-want-to-determine-if-your-code-is-being-compiled-by-mono/" target="_blank">btk</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ahzf.de/index.php/2009/12/22/is-my-code-compiled-on-mono-or-microsoft-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Definition of C#</title>
		<link>http://blog.ahzf.de/index.php/2009/10/17/definition-of-c/</link>
		<comments>http://blog.ahzf.de/index.php/2009/10/17/definition-of-c/#comments</comments>
		<pubDate>Sat, 17 Oct 2009 22:00:31 +0000</pubDate>
		<dc:creator>ahzf</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.ahzf.de/?p=614</guid>
		<description><![CDATA[C#.NET: A hybrid of C and Java that attempted to lure defectors from the Java camp to the .NET platform. It also provides an easy transition for C++ refugees who are sick of the annoyances of manual memory management and having 9 incompatible ways to implement a simple string. (via Software++)
]]></description>
			<content:encoded><![CDATA[<p><strong>C#.NET: </strong>A hybrid of C and Java that attempted to lure defectors from the Java camp to the .NET platform. It also provides an easy transition for C++ refugees who are sick of the annoyances of manual memory management and having 9 incompatible ways to implement a simple string. (<a href="http://improvingsoftware.com/2009/04/19/a-managers-retrospective-on-the-c-versus-vbnet-decision/" target="_blank">via Software++</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ahzf.de/index.php/2009/10/17/definition-of-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Wave &#8211; A Revolution done wrong!</title>
		<link>http://blog.ahzf.de/index.php/2009/10/08/google-wave-a-revolution-done-wrong/</link>
		<comments>http://blog.ahzf.de/index.php/2009/10/08/google-wave-a-revolution-done-wrong/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 23:06:53 +0000</pubDate>
		<dc:creator>ahzf</dc:creator>
				<category><![CDATA[Future Internet]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[The old Internet]]></category>

		<guid isPermaLink="false">http://blog.ahzf.de/?p=609</guid>
		<description><![CDATA[What might E-Mail look like if it were invented by&#8230; Linus Torvalds&#8230; the OSS-Community&#8230; the XMPP-Guys&#8230; or any company without central servers within their buisness plan? To me Google Wave is not much more than an IMAP-Server with integrated CSV-Log and a nice GUI. If you remember Linux Torvalds talk on the GIT at Google [...]]]></description>
			<content:encoded><![CDATA[<p>What might E-Mail look like if it were invented by&#8230; Linus Torvalds&#8230; the OSS-Community&#8230; the XMPP-Guys&#8230; or any company without central servers within their buisness plan? To me Google Wave is not much more than an IMAP-Server with integrated CSV-Log and a nice GUI. If you remember <a href="http://www.youtube.com/watch?v=4XpnKHJAok8" target="_blank">Linux Torvalds talk on the GIT at Google Talk</a> (or better its rant against Google sourcecode management) you will be sure, that E-Mail invented by Linux would at least be as decentralized like the GIT or XMPP. Therefore Google Wave might be a very big hype but neither a technological break-through nor a great vision on the future of communicatiuon and collaboration.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ahzf.de/index.php/2009/10/08/google-wave-a-revolution-done-wrong/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C# and implicit conversions</title>
		<link>http://blog.ahzf.de/index.php/2009/10/04/c-and-implicit-conversions/</link>
		<comments>http://blog.ahzf.de/index.php/2009/10/04/c-and-implicit-conversions/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 21:29:31 +0000</pubDate>
		<dc:creator>ahzf</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Coding]]></category>

		<guid isPermaLink="false">http://blog.ahzf.de/?p=599</guid>
		<description><![CDATA[Sometime you decide to create a small datastructure &#8211; let&#8217;s call it Trinary   &#8211; which will mostly behave like some standard datastructure &#8211; let&#8217;s think of Boolean &#8211; but with some different behavior from time to time. TO avoid a lot of noisy changes to your codebase it might be better to define [...]]]></description>
			<content:encoded><![CDATA[<p>Sometime you decide to create a small datastructure &#8211; let&#8217;s call it Trinary <img src='http://blog.ahzf.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  &#8211; which will mostly behave like some standard datastructure &#8211; let&#8217;s think of Boolean &#8211; but with some different behavior from time to time. TO avoid a lot of noisy changes to your codebase it might be better to define an implicit conversation from your new datastructure to the standard datastructure (and vice versa). Fortunately this is very easy within C# as all you have to do is to implement appropriate &#8220;public static implicit operator $DestType($SourceType myParam)&#8221; methods for the conversion:</p>
<div class="dean_ch" style="white-space: wrap;">
<span class="kw1">public</span> <span class="kw1">static</span> <span class="kw1">implicit</span> <span class="kw1">operator</span> Trinary<span class="br0">&#40;</span>Boolean myBoolean<span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>myBoolean<span class="br0">&#41;</span> <span class="kw1">return</span> Trinary.<span class="kw1">TRUE</span>;<br />
&nbsp; <span class="kw1">return</span> Trinary.<span class="kw1">FALSE</span>;<br />
<span class="br0">&#125;</span></p>
<p><span class="kw1">public</span> <span class="kw1">static</span> <span class="kw1">implicit</span> <span class="kw1">operator</span> Boolean<span class="br0">&#40;</span>Trinary myTrinary<span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>myTrinary == Trinary.<span class="kw1">FALSE</span><span class="br0">&#41;</span> <span class="kw1">return</span> <span class="kw1">false</span>;<br />
&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>myTrinary == Trinary.<span class="me1">DELETED</span><span class="br0">&#41;</span> <span class="kw1">return</span> <span class="kw1">false</span>;<br />
&nbsp; <span class="kw1">return</span> <span class="kw1">true</span>;<br />
<span class="br0">&#125;</span><br />
&nbsp;</div>
<p>The complete class might look like the following:</p>
<div class="dean_ch" style="white-space: wrap;">
<span class="kw1">public</span> <span class="kw1">sealed</span> <span class="kw4">class</span> Trinary<br />
<span class="br0">&#123;</span></p>
<p><span class="co2">#region Data</span></p>
<p><span class="kw1">public</span> <span class="kw1">readonly</span> <span class="kw4">String</span> Name;<br />
<span class="kw1">public</span> <span class="kw1">readonly</span> <span class="kw4">Byte</span> Value;</p>
<p><span class="co2">#endregion</span></p>
<p><span class="co2">#region Init default values</span></p>
<p><span class="kw1">public</span> <span class="kw1">static</span> <span class="kw1">readonly</span> Trinary <span class="kw1">FALSE</span>   = <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> Trinary<span class="br0">&#40;</span><span class="nu0">0</span>, <span class="st0">&quot;FALSE&quot;</span><span class="br0">&#41;</span>;<br />
<span class="kw1">public</span> <span class="kw1">static</span> <span class="kw1">readonly</span> Trinary <span class="kw1">TRUE</span>    = <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> Trinary<span class="br0">&#40;</span><span class="nu0">1</span>, <span class="st0">&quot;TRUE&quot;</span><span class="br0">&#41;</span>;<br />
<span class="kw1">public</span> <span class="kw1">static</span> <span class="kw1">readonly</span> Trinary DELETED = <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> Trinary<span class="br0">&#40;</span><span class="nu0">2</span>, <span class="st0">&quot;DELETED&quot;</span><span class="br0">&#41;</span>;</p>
<p><span class="co2">#endregion</span></p>
<p><span class="co2">#region (private) Constructor</span></p>
<p><span class="kw1">private</span> Trinary<span class="br0">&#40;</span><span class="kw4">Byte</span> myValue, <span class="kw4">String</span> myName<span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
<span class="kw1">this</span>.<span class="me1">Name</span>   = myName;<br />
<span class="kw1">this</span>.<span class="me1">Value</span>  = myValue;<br />
<span class="br0">&#125;</span></p>
<p><span class="co2">#endregion</span></p>
<p><span class="co2">#region Implicit conversion to/from Boolean</span></p>
<p><span class="kw1">public</span> <span class="kw1">static</span> <span class="kw1">implicit</span> <span class="kw1">operator</span> Trinary<span class="br0">&#40;</span>Boolean myBoolean<span class="br0">&#41;</span><br />
<span class="br0">&#123;</span></p>
<p><span class="kw1">if</span> <span class="br0">&#40;</span>myBoolean<span class="br0">&#41;</span><br />
<span class="kw1">return</span> Trinary.<span class="kw1">TRUE</span>;</p>
<p><span class="kw1">return</span> Trinary.<span class="kw1">FALSE</span>;</p>
<p><span class="br0">&#125;</span></p>
<p><span class="kw1">public</span> <span class="kw1">static</span> <span class="kw1">implicit</span> <span class="kw1">operator</span> Boolean<span class="br0">&#40;</span>Trinary myTrinary<span class="br0">&#41;</span><br />
<span class="br0">&#123;</span></p>
<p><span class="kw1">if</span> <span class="br0">&#40;</span>myTrinary == Trinary.<span class="kw1">FALSE</span><span class="br0">&#41;</span><br />
<span class="kw1">return</span> <span class="kw1">false</span>;</p>
<p><span class="kw1">if</span> <span class="br0">&#40;</span>myTrinary == Trinary.<span class="me1">DELETED</span><span class="br0">&#41;</span><br />
<span class="kw1">return</span> <span class="kw1">false</span>;</p>
<p><span class="co1">//if (myTrinary == Trinary.TRUE)</span><br />
<span class="kw1">return</span> <span class="kw1">true</span>;</p>
<p><span class="br0">&#125;</span></p>
<p><span class="co2">#endregion</span></p>
<p><span class="kw1">public</span> <span class="kw4">int</span> CompareTo<span class="br0">&#40;</span>Boolean myBoolean<span class="br0">&#41;</span><br />
<span class="br0">&#123;</span></p>
<p><span class="kw1">if</span> <span class="br0">&#40;</span>Value == <span class="nu0">0</span> &amp;amp;&amp;amp; myBoolean == <span class="kw1">false</span><span class="br0">&#41;</span><br />
<span class="kw1">return</span> <span class="nu0">0</span>;</p>
<p><span class="kw1">if</span> <span class="br0">&#40;</span>Value == <span class="nu0">2</span> &amp;amp;&amp;amp; myBoolean == <span class="kw1">false</span><span class="br0">&#41;</span><br />
<span class="kw1">return</span> <span class="nu0">0</span>;</p>
<p><span class="kw1">if</span> <span class="br0">&#40;</span>Value == <span class="nu0">1</span> &amp;amp;&amp;amp; myBoolean == <span class="kw1">true</span><span class="br0">&#41;</span><br />
<span class="kw1">return</span> <span class="nu0">0</span>;</p>
<p><span class="kw1">return</span> <span class="nu0">1</span>;</p>
<p><span class="br0">&#125;</span></p>
<p><span class="kw1">public</span> <span class="kw4">int</span> CompareTo<span class="br0">&#40;</span>Trinary myTrinary<span class="br0">&#41;</span><br />
<span class="br0">&#123;</span></p>
<p><span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">Equals</span><span class="br0">&#40;</span>myTrinary<span class="br0">&#41;</span><span class="br0">&#41;</span><br />
<span class="kw1">return</span> <span class="nu0">0</span>;</p>
<p><span class="kw1">return</span> <span class="nu0">1</span>;</p>
<p><span class="br0">&#125;</span></p>
<p><span class="co2">#region Operator overloading</span></p>
<p><span class="co2">#region Equals(myObject)</span></p>
<p><span class="kw1">public</span> <span class="kw1">override</span> Boolean Equals<span class="br0">&#40;</span><span class="kw4">Object</span> myObject<span class="br0">&#41;</span><br />
<span class="br0">&#123;</span></p>
<p><span class="co1">// Check if myObject is null</span><br />
<span class="kw1">if</span> <span class="br0">&#40;</span>myObject == <span class="kw1">null</span><span class="br0">&#41;</span><br />
<span class="kw1">return</span> <span class="kw1">false</span>;</p>
<p><span class="co1">// If parameter cannot be cast to Point return false.</span><br />
Trinary _Trinary = myObject <span class="kw1">as</span> Trinary;<br />
<span class="kw1">if</span> <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw4">Object</span><span class="br0">&#41;</span>_Trinary == <span class="kw1">null</span><span class="br0">&#41;</span><br />
<span class="kw1">return</span> <span class="kw1">false</span>;</p>
<p><span class="kw1">return</span> Equals<span class="br0">&#40;</span>_Trinary<span class="br0">&#41;</span>;</p>
<p><span class="br0">&#125;</span></p>
<p><span class="co2">#endregion</span></p>
<p><span class="co2">#region Equals(myRevisionID)</span></p>
<p><span class="kw1">public</span> Boolean Equals<span class="br0">&#40;</span>Trinary myTrinary<span class="br0">&#41;</span><br />
<span class="br0">&#123;</span></p>
<p><span class="co1">// If parameter is null return false:</span><br />
<span class="kw1">if</span> <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw4">Object</span><span class="br0">&#41;</span>myTrinary == <span class="kw1">null</span><span class="br0">&#41;</span><br />
<span class="kw1">return</span> <span class="kw1">false</span>;</p>
<p><span class="co1">// Check if the inner fields have the same values</span><br />
<span class="kw1">if</span> <span class="br0">&#40;</span>Value != myTrinary.<span class="me1">Value</span><span class="br0">&#41;</span><br />
<span class="kw1">return</span> <span class="kw1">false</span>;</p>
<p><span class="kw1">if</span> <span class="br0">&#40;</span>Name != myTrinary.<span class="me1">Name</span><span class="br0">&#41;</span><br />
<span class="kw1">return</span> <span class="kw1">false</span>;</p>
<p><span class="kw1">return</span> <span class="kw1">true</span>;</p>
<p><span class="br0">&#125;</span></p>
<p><span class="co2">#endregion</span></p>
<p><span class="co2">#region Operator == (myTrinary1, myTrinary2)</span></p>
<p><span class="kw1">public</span> <span class="kw1">static</span> Boolean <span class="kw1">operator</span> == <span class="br0">&#40;</span>Trinary myTrinary1, Trinary myTrinary2<span class="br0">&#41;</span><br />
<span class="br0">&#123;</span></p>
<p><span class="co1">// If both are null, or both are same instance, return true.</span><br />
<span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw5">System</span>.<span class="kw4">Object</span>.<span class="me1">ReferenceEquals</span><span class="br0">&#40;</span>myTrinary1, myTrinary2<span class="br0">&#41;</span><span class="br0">&#41;</span><br />
<span class="kw1">return</span> <span class="kw1">true</span>;</p>
<p><span class="co1">// If one is null, but not both, return false.</span><br />
<span class="kw1">if</span> <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw4">Object</span><span class="br0">&#41;</span>myTrinary1 == <span class="kw1">null</span><span class="br0">&#41;</span> || <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw4">Object</span><span class="br0">&#41;</span>myTrinary2 == <span class="kw1">null</span><span class="br0">&#41;</span><span class="br0">&#41;</span><br />
<span class="kw1">return</span> <span class="kw1">false</span>;</p>
<p><span class="kw1">return</span> myTrinary1.<span class="me1">Equals</span><span class="br0">&#40;</span>myTrinary2<span class="br0">&#41;</span>;</p>
<p><span class="br0">&#125;</span></p>
<p><span class="co2">#endregion</span></p>
<p><span class="co2">#region Operator != (myTrinary1, myTrinary2)</span></p>
<p><span class="kw1">public</span> <span class="kw1">static</span> Boolean <span class="kw1">operator</span> !=<span class="br0">&#40;</span>Trinary myTrinary1, Trinary myTrinary2<span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
<span class="kw1">return</span> !<span class="br0">&#40;</span>myTrinary1 == myTrinary2<span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span></p>
<p><span class="co2">#endregion</span></p>
<p><span class="co2">#region GetHashCode()</span></p>
<p><span class="kw1">public</span> <span class="kw1">override</span> <span class="kw4">int</span> GetHashCode<span class="br0">&#40;</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
<span class="kw1">return</span> Value.<span class="me1">GetHashCode</span><span class="br0">&#40;</span><span class="br0">&#41;</span> ^ Name.<span class="me1">GetHashCode</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span></p>
<p><span class="co2">#endregion</span></p>
<p><span class="co2">#endregion</span></p>
<p><span class="co2">#region ToString</span></p>
<p><span class="kw1">public</span> <span class="kw1">override</span> <span class="kw4">String</span> ToString<span class="br0">&#40;</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
<span class="kw1">return</span> Name;<br />
<span class="br0">&#125;</span></p>
<p><span class="co2">#endregion</span></p>
<p><span class="br0">&#125;</span><br />
&nbsp;</div>
<p>Additionally it might be usefull to define an extension method to compare the standard Boolean to your new datastructure:</p>
<div class="dean_ch" style="white-space: wrap;">
<span class="kw1">public</span> <span class="kw1">static</span> <span class="kw4">class</span> TrinaryExtensionMethods<br />
<span class="br0">&#123;</span></p>
<p><span class="kw1">public</span> <span class="kw1">static</span> <span class="kw4">int</span> CompareTo<span class="br0">&#40;</span><span class="kw1">this</span> Boolean myBoolean, Trinary myTrinary<span class="br0">&#41;</span><br />
<span class="br0">&#123;</span></p>
<p><span class="kw1">if</span> <span class="br0">&#40;</span>myTrinary == Trinary.<span class="kw1">FALSE</span> &nbsp; &nbsp;&amp;amp;&amp;amp; myBoolean == <span class="kw1">false</span><span class="br0">&#41;</span><br />
<span class="kw1">return</span> <span class="nu0">0</span>;</p>
<p><span class="kw1">if</span> <span class="br0">&#40;</span>myTrinary == Trinary.<span class="me1">DELETED</span> &nbsp;&amp;amp;&amp;amp; myBoolean == <span class="kw1">false</span><span class="br0">&#41;</span><br />
<span class="kw1">return</span> <span class="nu0">0</span>;</p>
<p><span class="kw1">if</span> <span class="br0">&#40;</span>myTrinary == Trinary.<span class="kw1">TRUE</span> &nbsp; &nbsp; &amp;amp;&amp;amp; myBoolean == <span class="kw1">true</span><span class="br0">&#41;</span><br />
<span class="kw1">return</span> <span class="nu0">0</span>;</p>
<p><span class="kw1">return</span> <span class="nu0">1</span>;</p>
<p><span class="br0">&#125;</span></p>
<p><span class="br0">&#125;</span><br />
&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.ahzf.de/index.php/2009/10/04/c-and-implicit-conversions/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Architectural Principles&#8230;</title>
		<link>http://blog.ahzf.de/index.php/2009/05/02/architectural-principles/</link>
		<comments>http://blog.ahzf.de/index.php/2009/05/02/architectural-principles/#comments</comments>
		<pubDate>Sat, 02 May 2009 21:08:11 +0000</pubDate>
		<dc:creator>ahzf</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.ahzf.de/?p=541</guid>
		<description><![CDATA[Principles that seemed inviolable a few years ago are deprecated today. Principles that seem sacred today will be deprecated tomorrow. The principle of constant change is perhaps the only principle of the Internet that should survive indefinitely.
RFC1958
s/the Internet/any IT technology/
]]></description>
			<content:encoded><![CDATA[<blockquote><p>Principles that seemed inviolable a few years ago are deprecated today. Principles that seem sacred today will be deprecated tomorrow. The principle of constant change is perhaps the only principle of the Internet that should survive indefinitely.</p></blockquote>
<p><a href="http://tools.ietf.org/html/rfc1958" target="_blank">RFC1958</a></p>
<p><code>s/the Internet/any IT technology/</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ahzf.de/index.php/2009/05/02/architectural-principles/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OpenSSL default on Windows?!</title>
		<link>http://blog.ahzf.de/index.php/2009/02/02/openssl-default-on-windows/</link>
		<comments>http://blog.ahzf.de/index.php/2009/02/02/openssl-default-on-windows/#comments</comments>
		<pubDate>Mon, 02 Feb 2009 13:13:28 +0000</pubDate>
		<dc:creator>ahzf</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.ahzf.de/?p=500</guid>
		<description><![CDATA[There&#8217;s a bug in &#8220;the matrix &#8482;&#8221;&#8230;?!?

(Note: WE did NOT install OpenSSL on our development systems&#8230; It seems to be there at default   )
]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s a bug in &#8220;the matrix &#8482;&#8221;&#8230;?!?</p>
<p><a href="http://blog.ahzf.de/wp-content/uploads/2009/02/openssl_on_plain_windows.png"><img class="alignnone size-medium wp-image-501" title="openssl_on_plain_windows" src="http://blog.ahzf.de/wp-content/uploads/2009/02/openssl_on_plain_windows-300x153.png" alt="" width="300" height="153" /></a></p>
<p>(Note: WE did NOT install OpenSSL on our development systems&#8230; It seems to be there at default <img src='http://blog.ahzf.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  )</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ahzf.de/index.php/2009/02/02/openssl-default-on-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>.NETzzzzz</title>
		<link>http://blog.ahzf.de/index.php/2008/12/31/netzzzzz/</link>
		<comments>http://blog.ahzf.de/index.php/2008/12/31/netzzzzz/#comments</comments>
		<pubDate>Tue, 30 Dec 2008 23:17:40 +0000</pubDate>
		<dc:creator>ahzf</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.ahzf.de/?p=478</guid>
		<description><![CDATA[F: Was ist ein echte Ritterschlag einer Programmiersprachen / Laufzeitumgebung?
A: Wenn Hacker anfangen ihre Toolzzzzz Analysesoftware darinzu programmieren  
]]></description>
			<content:encoded><![CDATA[<p><strong>F:</strong> Was ist ein echte Ritterschlag einer Programmiersprachen / Laufzeitumgebung?<br />
<strong>A:</strong> Wenn <a href="http://www.phenoelit.de" target="_blank">Hacker</a> anfangen ihre <span style="text-decoration: line-through;">Toolzzzzz</span> Analysesoftware darinzu programmieren <img src='http://blog.ahzf.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ahzf.de/index.php/2008/12/31/netzzzzz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Datatypes: To be &#8220;0&#8243; or not to be &#8220;0&#8243;&#8230;</title>
		<link>http://blog.ahzf.de/index.php/2008/11/23/datatypes-to-be-0-or-not-to-be-0/</link>
		<comments>http://blog.ahzf.de/index.php/2008/11/23/datatypes-to-be-0-or-not-to-be-0/#comments</comments>
		<pubDate>Sun, 23 Nov 2008 22:27:37 +0000</pubDate>
		<dc:creator>ahzf</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.ahzf.de/?p=453</guid>
		<description><![CDATA[Argh&#8230; how much time (and money) is wasted every year by bugfixing problems caused when a variable becomes zero although there is not much sense for the variable to become zero within the actual context of the program and therefore the programmer missed to add a line for checking this unexpected behavior.
The most common example [...]]]></description>
			<content:encoded><![CDATA[<p>Argh&#8230; how much time (and money) is wasted every year by bugfixing problems caused when a variable becomes zero although there is not much sense for the variable to become zero within the actual context of the program and therefore the programmer missed to add a line for checking this unexpected behavior.</p>
<p>The most common example for this might be if a for-loop will start at zero or one.</p>
<p>I really ask myself if it would be worth creating a new datatype &#8220;unsignedNotZero&#8221; which can not be set to zero and letting the compiler do most of the checking for me?! Suggestions?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ahzf.de/index.php/2008/11/23/datatypes-to-be-0-or-not-to-be-0/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The History of .NET</title>
		<link>http://blog.ahzf.de/index.php/2008/10/03/the-history-of-net/</link>
		<comments>http://blog.ahzf.de/index.php/2008/10/03/the-history-of-net/#comments</comments>
		<pubDate>Fri, 03 Oct 2008 14:10:03 +0000</pubDate>
		<dc:creator>ahzf</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.ahzf.de/?p=400</guid>
		<description><![CDATA[Slashdot posted an interessting interview with Anders Hejlsberg, Microsoft&#8217;s leader of C# development, writer of the Turbo Pascal system, and lead architect on the Delphi language. He reveals the history behind C# and what the future holds for C# 4.0.
There is also a podcast interview from May 2008 with Anders Hejlsberg by Software Engineering Radio.
]]></description>
			<content:encoded><![CDATA[<p>Slashdot <a href="http://www.computerworld.com.au/index.php/id;1149786074;pp;2" target="_blank">posted</a> an interessting interview with <a href="http://de.wikipedia.org/wiki/Anders_Hejlsberg" target="_blank">Anders Hejlsberg</a>, Microsoft&#8217;s leader of C# development, writer of the Turbo Pascal system, and lead architect on the Delphi language. He reveals the history behind C# and what the future holds for C# 4.0.</p>
<p>There is also a <a href="http://odeo.com/episodes/22518855-Episode-97-Interview-Anders-Hejlsberg" target="_blank">podcast interview</a> from May 2008 with Anders Hejlsberg by <a href="http://odeo.com/channels/62098-Software-Engineering-Radio-the-podcast-for-professional-software-developers" target="_blank">Software Engineering Radio</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ahzf.de/index.php/2008/10/03/the-history-of-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Design a Good API and Why it Matters</title>
		<link>http://blog.ahzf.de/index.php/2008/08/23/how-to-design-a-good-api-and-why-it-matters/</link>
		<comments>http://blog.ahzf.de/index.php/2008/08/23/how-to-design-a-good-api-and-why-it-matters/#comments</comments>
		<pubDate>Sat, 23 Aug 2008 12:50:43 +0000</pubDate>
		<dc:creator>ahzf</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.ahzf.de/?p=255</guid>
		<description><![CDATA[
There is a very nice but older Google Tech Talk by Joshua Bloch on &#8220;How to Design a Good API and Why it Matters&#8221; (local copy) which was also the keynote on the Library-Centric Software Design (LCSD&#8217;05). The talk is also available as video. From the conference announcements:
&#8220;Every day around the world, software developers spend [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://lcsd05.cs.tamu.edu/slides/keynote.pdf"><img class="aligncenter size-medium wp-image-256" title="talk-apidesign" src="http://blog.ahzf.de/wp-content/uploads/2008/08/talk-apidesign-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>There is a very nice but older <a href="http://research.google.com/video.html" target="_blank">Google Tech Talk</a> by Joshua Bloch on &#8220;<a href="http://lcsd05.cs.tamu.edu/slides/keynote.pdf" target="_blank">How to Design a Good API and Why it Matters</a>&#8221; (<a href="http://www.ahzf.de/itstuff/conferences/LCSD_05-How_to_Design_a_Good_API_and_Why_it_Matters.pdf" target="_blank">local copy</a>) which was also the keynote on the <a href="http://lcsd05.cs.tamu.edu/" target="_blank">Library-Centric Software Design (LCSD&#8217;05)</a>. The talk is also available as <a href="http://lcsd05.cs.tamu.edu/slides/keynote.pdf" target="_blank">video</a>. From the conference announcements:</p>
<p><em>&#8220;Every day around the world, software developers spend much of their time working with a variety of Application Programming Interfaces (APIs). Some are integral to the core platform, some provide access to widely distributed frameworks, and some are written in-house for use by a few developers. Nearly all programmers occasionally function as API designers, whether they know it or not. A well-designed API can be a great asset to the organization that wrote it and to all who use it. Good APIs increase the pleasure and productivity of the developers who use them, the quality of the software they produce, and ultimately, the corporate bottom line. Conversely, poorly written APIs are a constant thorn in the developer&#8217;s side, and have been known to harm the bottom line to the point of bankruptcy. Given the importance of good API design, surprisingly little has been written on the subject. In this talk, I&#8217;ll attempt to help you recognize good and bad APIs and I&#8217;ll offer specific suggestions for writing good APIs and coping with bad ones.&#8221;</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ahzf.de/index.php/2008/08/23/how-to-design-a-good-api-and-why-it-matters/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
