<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/1.5.1-alpha" -->
<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/"
>

<channel>
	<title>The Codecruncher</title>
	<link>http://codecruncher.blogsome.com</link>
	<description>using Microsoft.CSharp.Learning;</description>
	<pubDate>Wed, 24 Jan 2007 20:22:45 +0000</pubDate>
	<generator>http://wordpress.org/?v=1.5.1-alpha</generator>
	<language>en</language>

		<item>
		<title>I Love ReSharper</title>
		<link>http://codecruncher.blogsome.com/2007/01/24/i-love-resharper/</link>
		<comments>http://codecruncher.blogsome.com/2007/01/24/i-love-resharper/#comments</comments>
		<pubDate>Wed, 24 Jan 2007 20:22:45 +0000</pubDate>
		<dc:creator>Codecruncher</dc:creator>
		
	<category>.NET</category>
	<category>Tools</category>
		<guid>http://codecruncher.blogsome.com/2007/01/24/i-love-resharper/</guid>
		<description><![CDATA[	This was going to be a post about the different VS 2005 plugins that I use, and some other useful programs for my everyday (most of them Open Source, by the way); but while I was writing it turned itself little by little into a love letter to Resharper. I can only say good things [...]]]></description>
			<content:encoded><![CDATA[	<p>This was going to be a post about the different VS 2005 plugins that I use, and some other useful programs for my everyday (most of them Open Source, by the way); but while I was writing it turned itself little by little into a love letter to <a href="http://www.jetbrains.com/resharper/" target="_blank"><strong>Resharper</strong></a>. I can only say good things about this productivity plugin.</p>
	<p>  This are only some of its features:
<ul>
<li>Automatic warning and error <strong>checking</strong> while you write code; similar to the automatic ortographic revision from MS Office but <strong>quite more</strong> smart.</li>
	<li> Better Intellisense. By far, my preferred feature and the one you tend to note first. If you want it to, ReSharper can completely replace VS2005&#8217;s Intellisense with its own, faster and more complete. You have the possibility of setting the same font for Intellisense and source code, you can replace Intellisense icons with ReSharper&#8217;s set, and add a pop-up with the complete method signature.</li>
	<li>Code auto-completing, you write the first three characters of virtually <em>anything</em> and ReSharper is already displaying a list of alternatives. If what you&#8217;re writing is a method call, pressing TAB inserts the complete method name along with the () and the ;.</li>
	<li>Templates.</li>
	<li>Refactoring: you can extract properties from variables, or methods from code: you select a code block, select to extract it as a method, give to it a name and some options, among them are a list of possible parameters that ReSharper <strong>automatically detects</strong> and <em>voilá!</em>: method created.</li>
	<li>Advanced search for method use.</li>
	<li>Type hierarchy view</li>
	<li>Unit test running with NUnit or csUnit from the IDE.</li>
	<li>Context actions. In some sections of your code you can see a small floating window with a lightbulb icon. ReSharper wants to help: opening that window with your mouse (or even better, pressing <strong>ALT+Enter</strong>) ReSharper will show you a list of all the possible actions it can make depending on the code context: check for null values, reorder <em>if</em> sentences, refactor string concatenatios with an StringBuilder, delete unused references, and so on.</li>
	<li>Automatic detection of unused variables, methods or references. If you declare a variable at the beginning of your code that you later don&#8217;t use ReSharper will remark it using a grey color (trust it, it&#8217;s quite more noticeable than it sounds), and with that you know that it&#8217;s not being used anywhere. ReSharper uses the same color to remark redundant and useless casts or uses.</li>
	<li>Quick jump to a method or variable definition: using CTRL+Click on the method or variable name you can jump directly into the method or variable definition, if the code is avaliable.</li>
 </ul>
 And these are only the tool&#8217;s highlights, the tasks I do daily with it. Definitely, it&#8217;s the best buy I&#8217;ve ever made for a Visual Studio add-in; mostly because I used this last Christmas offer and got it for $99 instead of its normal price tag of $249, which is quite unexpensive if your firm buys it for you: <strong>not my case</strong>. I bought ReSharper for my exclusive use.</p>
	<p> JetBrains development team make Visual Studio 2005 a better yet IDE with this product. The ongoing rumor that they are developing their own version of a .NET IDE, building of IDEA&#8217;s true and tested success is, sadly, <a href="http://codebetter.com/blogs/jeremy.miller/archive/2006/12/10/Ditto-on-Ayende_2700_s-Microsoft-OSS-Post.aspx" target="_blank">outdated (look the comments)</a>, because it seems the project is abandoned. A real pity.
</p>
]]></content:encoded>
			<wfw:commentRss>http://codecruncher.blogsome.com/2007/01/24/i-love-resharper/feed/</wfw:commentRss>
	</item>
		<item>
		<title>VirtualBox</title>
		<link>http://codecruncher.blogsome.com/2007/01/16/virtualbox/</link>
		<comments>http://codecruncher.blogsome.com/2007/01/16/virtualbox/#comments</comments>
		<pubDate>Tue, 16 Jan 2007 23:59:10 +0000</pubDate>
		<dc:creator>Codecruncher</dc:creator>
		
	<category>Tools</category>
		<guid>http://codecruncher.blogsome.com/2007/01/16/virtualbox/</guid>
		<description><![CDATA[	When I was beginning in software development, I worked for a firm which (among other things) sells a software application for creating plastic cards. That software was off-the-shelf, shrinkwrapped. 
	As you can see, the software had to be able to install itself easily and couldn&#8217;t use additional components. To make sure of it, every time [...]]]></description>
			<content:encoded><![CDATA[	<p>When I was beginning in software development, I worked for <a href="http://www.sticard.com/" target="_blank">a firm</a> which (among other things) sells a software application for creating plastic cards. That software was off-the-shelf, shrinkwrapped. </p>
	<p>As you can see, the software had to be able to install itself easily and couldn&#8217;t use additional components. To make sure of it, every time we compiled a new distributable version we made compatibility tests: on my desk I had four machines, one for development and three older PCs for tests. One of the machines had a Windows 95, another a Windows 98 and the last one a Windows NT; and each of them had only that and the necessary drivers installed. Our software had to work on <em>naked</em> machines, and with each major upgrade we had to format the test machines and reinstall their operating systems, to make sure a perfect installation of our application. The process was so repetitive that I ended unwillingly memorising the serial numbers of each OS.</p>
	<p>We managed to speed up the process quite a bit thanks to <a href="http://www.symantec.com/home_homeoffice/products/overview.jsp?pcid=br&#038;pvid=ghost10" target="_blank">Norton Ghost</a>: you could make an &quot;naked&quot; OS image file for each machine and after the installation tests of our application, we could reinstall the software from the Ghost image, which quite faster and automatic. </p>
	<p>But it was still a pain.</p>
	<p>I would have been really happy those days for virtual machine software: either it didn&#8217;t exist by that time or I didn&#8217;t know about it. For those of you who don&#8217;t know what I&#8217;m talking about, Para los que no sepáis de lo que hablo, las <a href="http://en.wikipedia.org/wiki/Virtual_machine" target="_blank">virtual machines</a> are programs that create a virtual environment between your physical hardware and the operative system installed in that hardware; and in that virtual space you can install another operative system completely different to the one <em>physically</em> installed, in a completely sandboxed environment. You can have a Windows 2003 Server inside a Windows XP, for example.</p>
	<p> It&#8217;s easier to do than it looks: you assign inside the hard drive of your machine a file that&#8217;s going to be the virtual machine hard drive; and you set an amount of RAM to the virtual machine (RAM that&#8217;s going to be substracted from your total, physical RAM avaliable, so you need to have plenty for this). You can also mount virtual CD or floppy drives, allow the virtual machine network access, etc. To install an OS you just have to mount an ISO file containing an auto-bootable OS and run the virtual machine. From that point, you simply follow the OS installation instructions as if, in fact, we were installing a new OS in a machine built <em>inside</em> our machine.</p>
	<p>I&#8217;ve personally used two virtualisation environments: <a href="http://www.microsoft.com/windows/virtualpc/default.mspx" target="_blank">Microsoft Virtual PC</a>, which its version 2004 is free (as in beer) (2007 version is not) and I&#8217;ve been quite satisfiied with it: it&#8217;s a great virtualisation software, intuitive and easy of use, and the one I use in my workplace.</p>
	<p>And the one I&#8217;ve just tested at home is <a href="http://www.virtualbox.org/" target="_blank">InnoTek VirtualBox</a>, Open Source and free (as in freedom). For me at least, the later is more important: I frankly don&#8217;t see myself capable of understanding, much less modifying, the source code of one of these things.</p>
	<p>Right now I&#8217;m writing this entry from a virtual machine made with VirtualBox and running an Ubuntu <em>Dapper Drake</em>. No, I&#8217;m not going to <em>the light side</em>: it simply was the ISO file most at hand at the moment to test VirtualBox. In fact, my target for the next days is installing Vista. Long life the dark side! =)</p>
	<p> So if you didn&#8217;t know virtualisation software, my advice to you is to give it a try: it&#8217;s simple to setup, intuitive to use and thanks to this technique we&#8217;ll have a safe environment to tinker with harmlessly.
</p>
]]></content:encoded>
			<wfw:commentRss>http://codecruncher.blogsome.com/2007/01/16/virtualbox/feed/</wfw:commentRss>
	</item>
		<item>
		<title>Random Surname Generator</title>
		<link>http://codecruncher.blogsome.com/2007/01/12/random-surname-generator/</link>
		<comments>http://codecruncher.blogsome.com/2007/01/12/random-surname-generator/#comments</comments>
		<pubDate>Fri, 12 Jan 2007 18:47:15 +0000</pubDate>
		<dc:creator>Codecruncher</dc:creator>
		
	<category>.NET</category>
	<category>Tools</category>
		<guid>http://codecruncher.blogsome.com/2007/01/12/random-surname-generator/</guid>
		<description><![CDATA[	Aswering the challenge raised by Jon Galloway on his must-read blog, here&#8217;s is my solution to generate some random and fake surnames. Code has plenty of comments. Feel free, of course, to comment questions, criticism or even better, a cool refactor! =)
	 class&nbsp;Program   {   &nbsp;&nbsp;&nbsp;&nbsp;//An&nbsp;arraylist&nbsp;to&nbsp;contain&nbsp;ALL&nbsp;possible&nbsp;digrams&nbsp;(see&nbsp;below)   &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;ArrayList&nbsp;AllDigrams&nbsp;=&nbsp;new&nbsp;ArrayList();   &nbsp;&nbsp;&nbsp;&nbsp;//An&nbsp;array&nbsp;list&nbsp;to&nbsp;contain&nbsp;ALL&nbsp;possible&nbsp;letters&nbsp;(see&nbsp;below) [...]]]></description>
			<content:encoded><![CDATA[	<p>Aswering <a href="http://weblogs.asp.net/jgalloway/archive/2007/01/10/code-puzzle-2-generate-random-fake-surnames.aspx" target="_blank">the challenge</a> raised by Jon Galloway on his must-read blog, here&#8217;s is my solution to generate some random and fake surnames. Code has plenty of comments. Feel free, of course, to comment questions, criticism or even better, a cool refactor! =)</p>
	<div class="sourcecode"> <font color="blue">class&nbsp;</font><font color="black">Program<br />   {<br />   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">//An&nbsp;arraylist&nbsp;to&nbsp;contain&nbsp;ALL&nbsp;possible&nbsp;digrams&nbsp;(see&nbsp;below)<br />   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">private&nbsp;static&nbsp;</font><font color="black">ArrayList&nbsp;AllDigrams&nbsp;</font><font color="blue">=&nbsp;new&nbsp;</font><font color="black">ArrayList()</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">//An&nbsp;array&nbsp;list&nbsp;to&nbsp;contain&nbsp;ALL&nbsp;possible&nbsp;letters&nbsp;(see&nbsp;below)<br />   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">private&nbsp;static&nbsp;</font><font color="black">ArrayList&nbsp;AllLetters&nbsp;</font><font color="blue">=&nbsp;new&nbsp;</font><font color="black">ArrayList()</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">//A&nbsp;random&nbsp;seed&nbsp;for&nbsp;the&nbsp;main&nbsp;random&nbsp;generator<br />   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">private&nbsp;static&nbsp;</font><font color="black">Random&nbsp;rSeed&nbsp;</font><font color="blue">=&nbsp;new&nbsp;</font><font color="black">Random()</font><font color="blue">;&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">//A&nbsp;multidimensional&nbsp;array&nbsp;specifying&nbsp;the&nbsp;random&nbsp;&quot;bones&quot;&nbsp;of&nbsp;a&nbsp;surname.&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&quot;A&quot;&nbsp;is&nbsp;a&nbsp;vowel&nbsp;letter,&nbsp;&quot;B&quot;&nbsp;is&nbsp;a&nbsp;consonant&nbsp;letter<br />   &nbsp;&nbsp;&nbsp;&nbsp;//&quot;AB&nbsp;is&nbsp;a&nbsp;vowel&nbsp;+&nbsp;consonant&nbsp;digram,&nbsp;and&nbsp;so&nbsp;on&#8230;<br />   &nbsp;&nbsp;&nbsp;&nbsp;//These&nbsp;combinations&nbsp;are&nbsp;made&nbsp;by&nbsp;hand,&nbsp;you&nbsp;could&nbsp;add&nbsp;or&nbsp;delete&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;//to&nbsp;fine-tune&nbsp;the&nbsp;kind&nbsp;of&nbsp;surnames&nbsp;you&nbsp;get<br />   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">private&nbsp;static&nbsp;string</font><font color="black">[,]&nbsp;SurnameRandomTypes&nbsp;</font><font color="blue">=&nbsp;new&nbsp;string</font><font color="black">[</font><font color="maroon">10</font><font color="black">,&nbsp;</font><font color="maroon">6</font><font color="black">]<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</font><font color="#808080">&quot;A&quot;</font><font color="black">,&nbsp;&nbsp;</font><font color="#808080">&quot;BA&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;B&quot;</font><font color="black">,&nbsp;&nbsp;</font><font color="#808080">&quot;A&quot;</font><font color="black">,&nbsp;&nbsp;</font><font color="#808080">&quot;BA&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;&quot;</font><font color="black">},<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</font><font color="#808080">&quot;B&quot;</font><font color="black">,&nbsp;&nbsp;</font><font color="#808080">&quot;A&quot;</font><font color="black">,&nbsp;&nbsp;</font><font color="#808080">&quot;BA&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;&quot;</font><font color="black">,&nbsp;&nbsp;&nbsp;</font><font color="#808080">&quot;&quot;</font><font color="black">,&nbsp;&nbsp;&nbsp;</font><font color="#808080">&quot;&quot;</font><font color="black">},<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</font><font color="#808080">&quot;A&quot;</font><font color="black">,&nbsp;&nbsp;</font><font color="#808080">&quot;BA&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;A&quot;</font><font color="black">,&nbsp;&nbsp;</font><font color="#808080">&quot;B&quot;</font><font color="black">,&nbsp;&nbsp;</font><font color="#808080">&quot;A&quot;</font><font color="black">,&nbsp;&nbsp;</font><font color="#808080">&quot;BB&quot;</font><font color="black">},<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</font><font color="#808080">&quot;A&quot;</font><font color="black">,&nbsp;&nbsp;</font><font color="#808080">&quot;B&quot;</font><font color="black">,&nbsp;&nbsp;</font><font color="#808080">&quot;B&quot;</font><font color="black">,&nbsp;&nbsp;</font><font color="#808080">&quot;A&quot;</font><font color="black">,&nbsp;&nbsp;</font><font color="#808080">&quot;BA&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;&quot;</font><font color="black">},<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</font><font color="#808080">&quot;A&quot;</font><font color="black">,&nbsp;&nbsp;</font><font color="#808080">&quot;BB&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;AB&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;A&quot;</font><font color="black">,&nbsp;&nbsp;</font><font color="#808080">&quot;&quot;</font><font color="black">,&nbsp;&nbsp;&nbsp;</font><font color="#808080">&quot;&quot;</font><font color="black">},<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</font><font color="#808080">&quot;BA&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;B&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;B&quot;</font><font color="black">,&nbsp;&nbsp;</font><font color="#808080">&quot;A&quot;</font><font color="black">,&nbsp;&nbsp;</font><font color="#808080">&quot;B&quot;</font><font color="black">,&nbsp;&nbsp;</font><font color="#808080">&quot;A&quot;</font><font color="black">},<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</font><font color="#808080">&quot;B&quot;</font><font color="black">,&nbsp;&nbsp;</font><font color="#808080">&quot;AB&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;A&quot;</font><font color="black">,&nbsp;&nbsp;</font><font color="#808080">&quot;BB&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;A&quot;</font><font color="black">,&nbsp;&nbsp;</font><font color="#808080">&quot;AB&quot;</font><font color="black">},<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</font><font color="#808080">&quot;B&quot;</font><font color="black">,&nbsp;&nbsp;</font><font color="#808080">&quot;AB&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;B&quot;</font><font color="black">,&nbsp;&nbsp;</font><font color="#808080">&quot;A&quot;</font><font color="black">,&nbsp;&nbsp;</font><font color="#808080">&quot;BB&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;AB&quot;</font><font color="black">},<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</font><font color="#808080">&quot;A&quot;</font><font color="black">,&nbsp;&nbsp;</font><font color="#808080">&quot;BB&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;A&quot;</font><font color="black">,&nbsp;&nbsp;</font><font color="#808080">&quot;B&quot;</font><font color="black">,&nbsp;&nbsp;</font><font color="#808080">&quot;AB&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;&quot;</font><font color="black">},<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</font><font color="#808080">&quot;AB&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;AA&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;B&quot;</font><font color="black">,&nbsp;&nbsp;</font><font color="#808080">&quot;A&quot;</font><font color="black">,&nbsp;&nbsp;</font><font color="#808080">&quot;B&quot;</font><font color="black">,&nbsp;&nbsp;</font><font color="#808080">&quot;A&quot;</font><font color="black">},<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font><font color="blue">;</p>
	<p>   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">///&nbsp;&lt;summary&gt;<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;/summary&gt;<br />   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">static&nbsp;void&nbsp;</font><font color="black">Main()<br />   &nbsp;&nbsp;&nbsp;&nbsp;{<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">bool&nbsp;</font><font color="black">exit&nbsp;</font><font color="blue">=&nbsp;false;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">//We&nbsp;load&nbsp;ALL&nbsp;the&nbsp;possible&nbsp;digrams&nbsp;in&nbsp;memory,&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//in&nbsp;the&nbsp;AllDigrams&nbsp;arraylist<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">LoadDigrams()</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">//Same&nbsp;for&nbsp;the&nbsp;possible&nbsp;letters,&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//in&nbsp;the&nbsp;AllLetters&nbsp;arraylist<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">LoadLetters()</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">{<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">for&nbsp;</font><font color="black">(</font><font color="blue">int&nbsp;</font><font color="black">i&nbsp;</font><font color="blue">=&nbsp;</font><font color="maroon">0</font><font color="blue">;&nbsp;</font><font color="black">i&nbsp;&lt;</font><font color="blue">=&nbsp;</font><font color="maroon">20</font><font color="blue">;&nbsp;</font><font color="black">i++)<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(</font><font color="#808080">&quot;Random&nbsp;Surname:&nbsp;&nbsp;&nbsp;&nbsp;{0}&quot;</font><font color="black">,&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GenerateRandomSurname())</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">}<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(</font><font color="#808080">&quot;Press&nbsp;ENTER&nbsp;to&nbsp;generate&nbsp;another&nbsp;batch,&nbsp;X&nbsp;to&nbsp;quit&quot;</font><font color="black">)</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;</font><font color="black">sInput&nbsp;</font><font color="blue">=&nbsp;</font><font color="black">Console.ReadLine()</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;</font><font color="black">(sInput.ToString()&nbsp;</font><font color="blue">==&nbsp;</font><font color="#808080">&quot;x&quot;&nbsp;</font><font color="black">||&nbsp;sInput.ToString()&nbsp;</font><font color="blue">==&nbsp;</font><font color="#808080">&quot;X&quot;</font><font color="black">)<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit&nbsp;</font><font color="blue">=&nbsp;true;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">}&nbsp;</font><font color="blue">while&nbsp;</font><font color="black">(exit&nbsp;</font><font color="blue">==&nbsp;false</font><font color="black">)</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">Console.ReadLine()</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">}</p>
	<p>   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">///&nbsp;&lt;summary&gt;<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;This&nbsp;method&nbsp;generates&nbsp;a&nbsp;random&nbsp;surname&nbsp;and&nbsp;returns&nbsp;it.<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;/summary&gt;<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;returns&gt;&lt;/returns&gt;<br />   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">static&nbsp;string&nbsp;</font><font color="black">GenerateRandomSurname()<br />   &nbsp;&nbsp;&nbsp;&nbsp;{<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">string&nbsp;</font><font color="black">sRet&nbsp;</font><font color="blue">=&nbsp;</font><font color="#808080">&quot;&quot;</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">Random&nbsp;r</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">//New&nbsp;random&nbsp;seed&nbsp;for&nbsp;the&nbsp;randomizer<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">r&nbsp;</font><font color="blue">=&nbsp;new&nbsp;</font><font color="black">Random(rSeed.Next(</font><font color="maroon">1</font><font color="black">,&nbsp;</font><font color="maroon">1000</font><font color="black">))</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">//and&nbsp;we&nbsp;get&nbsp;a&nbsp;random&nbsp;index&nbsp;for&nbsp;the&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//SurnameRandomTypes&nbsp;multidimensional&nbsp;array<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">int&nbsp;</font><font color="black">rndIndex&nbsp;</font><font color="blue">=&nbsp;</font><font color="black">r.Next(</font><font color="maroon">0</font><font color="black">,&nbsp;</font><font color="maroon">9</font><font color="black">)</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">//Then&nbsp;we&nbsp;read&nbsp;the&nbsp;different&nbsp;&quot;columns&quot;&nbsp;of&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//that&nbsp;&quot;row&quot;&nbsp;and&nbsp;decide&nbsp;if&nbsp;we&nbsp;need&nbsp;a&nbsp;vowel,&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//a&nbsp;consonant,&nbsp;a&nbsp;vowel-consonant&nbsp;digram,&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//or&nbsp;whatever<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">for&nbsp;</font><font color="black">(</font><font color="blue">int&nbsp;</font><font color="black">i&nbsp;</font><font color="blue">=&nbsp;</font><font color="maroon">0</font><font color="blue">;&nbsp;</font><font color="black">i&nbsp;&lt;&nbsp;</font><font color="maroon">6</font><font color="blue">;&nbsp;</font><font color="black">i++)<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">switch</font><font color="black">(SurnameRandomTypes[rndIndex,&nbsp;i])<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">case&nbsp;</font><font color="#808080">&quot;AA&quot;</font><font color="black">:<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sRet&nbsp;+</font><font color="blue">=&nbsp;</font><font color="black">getDigram(DigramType.TwoVowels)</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;</font><font color="#808080">&quot;AB&quot;</font><font color="black">:<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sRet&nbsp;+</font><font color="blue">=&nbsp;</font><font color="black">getDigram(DigramType.VowelAndConsonant)</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;</font><font color="#808080">&quot;BA&quot;</font><font color="black">:<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sRet&nbsp;+</font><font color="blue">=&nbsp;</font><font color="black">getDigram(DigramType.ConsonantAndVowel)</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;</font><font color="#808080">&quot;BB&quot;</font><font color="black">:<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sRet&nbsp;+</font><font color="blue">=&nbsp;</font><font color="black">getDigram(DigramType.TwoConsonants)</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;</font><font color="#808080">&quot;A&quot;</font><font color="black">:<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sRet&nbsp;+</font><font color="blue">=&nbsp;</font><font color="black">getLetter(LetterType.Vowel)</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;</font><font color="#808080">&quot;B&quot;</font><font color="black">:<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sRet&nbsp;+</font><font color="blue">=&nbsp;</font><font color="black">getLetter(LetterType.Consonant)</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default</font><font color="black">:<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">break;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">}<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">//And&nbsp;we&nbsp;return&nbsp;the&nbsp;generated&nbsp;surname&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//making&nbsp;the&nbsp;first&nbsp;letter&nbsp;upper&nbsp;case<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">return&nbsp;</font><font color="black">sRet.Substring(</font><font color="maroon">0</font><font color="black">,</font><font color="maroon">1</font><font color="black">).ToUpper()&nbsp;+&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sRet.Substring(</font><font color="maroon">1</font><font color="black">)</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">}</p>
	<p>   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">#region</font><font color="black">&nbsp;Letters&nbsp;and&nbsp;Digrams<br />   &nbsp;&nbsp;&nbsp;&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">#region</font><font color="black">&nbsp;Structs&nbsp;and&nbsp;Enums<br />   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">///&nbsp;&lt;summary&gt;<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;With&nbsp;this&nbsp;enum&nbsp;we&#8217;ll&nbsp;know&nbsp;what&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;the&nbsp;digram&nbsp;is&nbsp;made&nbsp;of<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;/summary&gt;<br />   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">private&nbsp;enum&nbsp;</font><font color="black">DigramType<br />   &nbsp;&nbsp;&nbsp;&nbsp;{<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TwoVowels,<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VowelAndConsonant,<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ConsonantAndVowel,<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TwoConsonants<br />   &nbsp;&nbsp;&nbsp;&nbsp;}</p>
	<p>   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">///&nbsp;&lt;summary&gt;<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;With&nbsp;this&nbsp;enum&nbsp;we&#8217;ll&nbsp;know&nbsp;is&nbsp;a&nbsp;letter<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;is&nbsp;a&nbsp;vowel&nbsp;or&nbsp;not<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;/summary&gt;<br />   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">private&nbsp;enum&nbsp;</font><font color="black">LetterType<br />   &nbsp;&nbsp;&nbsp;&nbsp;{<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Vowel,<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Consonant<br />   &nbsp;&nbsp;&nbsp;&nbsp;}</p>
	<p>   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">///&nbsp;&lt;summary&gt;<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;A&nbsp;digram.&nbsp;With&nbsp;the&nbsp;actual&nbsp;digram&nbsp;(&quot;th&quot;,&nbsp;for&nbsp;example)<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;we&nbsp;store&nbsp;the&nbsp;range&nbsp;of&nbsp;frequency&nbsp;it&nbsp;appears&nbsp;on&nbsp;the&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;english&nbsp;language&nbsp;and&nbsp;its&nbsp;type<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;/summary&gt;<br />   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">private&nbsp;struct&nbsp;</font><font color="black">Digram&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;{<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">public&nbsp;int&nbsp;</font><font color="black">iniRange</font><font color="blue">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">//The&nbsp;beginning&nbsp;of&nbsp;its&nbsp;range<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">public&nbsp;int&nbsp;</font><font color="black">endRange</font><font color="blue">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">//The&nbsp;end&nbsp;of&nbsp;its&nbsp;range<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">public&nbsp;string&nbsp;</font><font color="black">Value</font><font color="blue">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">//Its&nbsp;actual&nbsp;content<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">public&nbsp;</font><font color="black">DigramType&nbsp;Type</font><font color="blue">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">//Its&nbsp;type<br />   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">}</p>
	<p>   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">///&nbsp;&lt;summary&gt;<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;A&nbsp;letter.&nbsp;With&nbsp;the&nbsp;actual&nbsp;letter&nbsp;(&quot;a&quot;,&nbsp;for&nbsp;example)<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;we&nbsp;store&nbsp;the&nbsp;range&nbsp;of&nbsp;frequency&nbsp;it&nbsp;appears&nbsp;on&nbsp;the&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;english&nbsp;language&nbsp;and&nbsp;its&nbsp;type<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;/summary&gt;<br />   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">private&nbsp;struct&nbsp;</font><font color="black">Letter<br />   &nbsp;&nbsp;&nbsp;&nbsp;{<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">public&nbsp;int&nbsp;</font><font color="black">iniRange</font><font color="blue">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">//The&nbsp;beginning&nbsp;of&nbsp;its&nbsp;range<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">public&nbsp;int&nbsp;</font><font color="black">endRange</font><font color="blue">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">//The&nbsp;end&nbsp;of&nbsp;its&nbsp;range<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">public&nbsp;string&nbsp;</font><font color="black">Value</font><font color="blue">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">//Its&nbsp;actual&nbsp;content<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">public&nbsp;</font><font color="black">LetterType&nbsp;Type</font><font color="blue">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">//Its&nbsp;type<br />   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">}<br />   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">#endregion</p>
	<p>   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">///&nbsp;&lt;summary&gt;<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;This&nbsp;method&nbsp;returns&nbsp;the&nbsp;value&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;of&nbsp;a&nbsp;random&nbsp;digram&nbsp;of&nbsp;the&nbsp;specified&nbsp;type<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;/summary&gt;<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;param&nbsp;name=&quot;type&quot;&gt;The&nbsp;type&nbsp;of&nbsp;digram&nbsp;the&nbsp;caller&nbsp;needs&lt;/param&gt;<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;returns&gt;The&nbsp;digram&nbsp;VALUE&nbsp;(&quot;th&quot;,&nbsp;for&nbsp;example)&lt;/returns&gt;<br />   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">static&nbsp;string&nbsp;</font><font color="black">getDigram(DigramType&nbsp;type)<br />   &nbsp;&nbsp;&nbsp;&nbsp;{<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Random&nbsp;r&nbsp;</font><font color="blue">=&nbsp;new&nbsp;</font><font color="black">Random(rSeed.Next(</font><font color="maroon">0</font><font color="black">,&nbsp;</font><font color="maroon">1000</font><font color="black">))</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">Digram&nbsp;nuDigram&nbsp;</font><font color="blue">=&nbsp;new&nbsp;</font><font color="black">Digram()</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">{<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">//We&nbsp;get&nbsp;a&nbsp;random&nbsp;number&nbsp;inside&nbsp;the&nbsp;TOTAL&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//range&nbsp;of&nbsp;ALL&nbsp;the&nbsp;digrams<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">int&nbsp;</font><font color="black">freq&nbsp;</font><font color="blue">=&nbsp;</font><font color="black">r.Next(</font><font color="maroon">0</font><font color="black">,&nbsp;</font><font color="maroon">5548</font><font color="black">)</font><font color="blue">;&nbsp;</font><font color="darkgreen">//See&nbsp;LoadDigrams()<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">foreach&nbsp;</font><font color="black">(Digram&nbsp;digram&nbsp;</font><font color="blue">in&nbsp;</font><font color="black">AllDigrams)<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">//And&nbsp;if&nbsp;the&nbsp;random&nbsp;number&nbsp;is&nbsp;inside&nbsp;the&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//current&nbsp;digram&nbsp;frequency&nbsp;range,&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//we&#8217;ve&nbsp;got&nbsp;a&nbsp;winner!<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">if&nbsp;</font><font color="black">(freq&nbsp;&gt;</font><font color="blue">=&nbsp;</font><font color="black">digram.iniRange&nbsp;&amp;&amp;&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;freq&nbsp;&lt;</font><font color="blue">=&nbsp;</font><font color="black">digram.endRange)&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nuDigram&nbsp;</font><font color="blue">=&nbsp;</font><font color="black">digram</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">}<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">//But&nbsp;only&nbsp;if&nbsp;it&#8217;s&nbsp;of&nbsp;the&nbsp;type&nbsp;we&nbsp;need<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">}&nbsp;</font><font color="blue">while&nbsp;</font><font color="black">(nuDigram.Type&nbsp;!</font><font color="blue">=&nbsp;</font><font color="black">type)</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</font><font color="black">nuDigram.Value</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">}</p>
	<p>   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">///&nbsp;&lt;summary&gt;<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;Gets&nbsp;a&nbsp;single&nbsp;letter&nbsp;VALUE&nbsp;of&nbsp;the&nbsp;specified&nbsp;type<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;/summary&gt;<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;param&nbsp;name=&quot;type&quot;&gt;the&nbsp;type&nbsp;of&nbsp;Letter&nbsp;we&nbsp;need&lt;/param&gt;<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;returns&gt;the&nbsp;Letter&nbsp;VALUE&lt;/returns&gt;<br />   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">static&nbsp;string&nbsp;</font><font color="black">getLetter(LetterType&nbsp;type)&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;{<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Random&nbsp;r&nbsp;</font><font color="blue">=&nbsp;new&nbsp;</font><font color="black">Random(rSeed.Next(</font><font color="maroon">0</font><font color="black">,&nbsp;</font><font color="maroon">1000</font><font color="black">))</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">Letter&nbsp;nuLetter&nbsp;</font><font color="blue">=&nbsp;new&nbsp;</font><font color="black">Letter()</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">{<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">//We&nbsp;get&nbsp;a&nbsp;random&nbsp;number&nbsp;inside&nbsp;the&nbsp;TOTAL&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//range&nbsp;of&nbsp;ALL&nbsp;the&nbsp;letters<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">int&nbsp;</font><font color="black">freq&nbsp;</font><font color="blue">=&nbsp;</font><font color="black">r.Next(</font><font color="maroon">0</font><font color="black">,&nbsp;</font><font color="maroon">10025</font><font color="black">)</font><font color="blue">;&nbsp;</font><font color="darkgreen">//See&nbsp;LoadLetters()<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">foreach&nbsp;</font><font color="black">(Letter&nbsp;letter&nbsp;</font><font color="blue">in&nbsp;</font><font color="black">AllLetters)<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">//And&nbsp;if&nbsp;the&nbsp;random&nbsp;number&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//is&nbsp;inside&nbsp;the&nbsp;current&nbsp;digram&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//frequency&nbsp;range,&nbsp;we&#8217;ve&nbsp;got&nbsp;a&nbsp;winner!<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">if&nbsp;</font><font color="black">(freq&nbsp;&gt;</font><font color="blue">=&nbsp;</font><font color="black">letter.iniRange&nbsp;&amp;&amp;&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;freq&nbsp;&lt;</font><font color="blue">=&nbsp;</font><font color="black">letter.endRange)<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nuLetter&nbsp;</font><font color="blue">=&nbsp;</font><font color="black">letter</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">}<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">//But&nbsp;only&nbsp;if&nbsp;it&#8217;s&nbsp;of&nbsp;the&nbsp;type&nbsp;we&nbsp;need&nbsp;&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">}&nbsp;</font><font color="blue">while&nbsp;</font><font color="black">(nuLetter.Type&nbsp;!</font><font color="blue">=&nbsp;</font><font color="black">type)</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</font><font color="black">nuLetter.Value</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">}</p>
	<p>   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">///&nbsp;&lt;summary&gt;<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;Simple&nbsp;boolean&nbsp;check&nbsp;to&nbsp;see&nbsp;if&nbsp;a&nbsp;given&nbsp;single&nbsp;letter&nbsp;is<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;a&nbsp;vowel&nbsp;or&nbsp;a&nbsp;consonant<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;/summary&gt;<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;param&nbsp;name=&quot;checkLetter&quot;&gt;The&nbsp;letter&nbsp;to&nbsp;check&lt;/param&gt;<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;returns&gt;True&nbsp;if&nbsp;vowel,&nbsp;false&nbsp;if&nbsp;else&lt;/returns&gt;<br />   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">static&nbsp;bool&nbsp;</font><font color="black">IsAVowel(</font><font color="blue">string&nbsp;</font><font color="black">checkLetter)<br />   &nbsp;&nbsp;&nbsp;&nbsp;{<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">switch</font><font color="black">(checkLetter.ToLower())<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">case&nbsp;</font><font color="#808080">&quot;a&quot;</font><font color="black">:<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">case&nbsp;</font><font color="#808080">&quot;e&quot;</font><font color="black">:<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">case&nbsp;</font><font color="#808080">&quot;i&quot;</font><font color="black">:<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">case&nbsp;</font><font color="#808080">&quot;o&quot;</font><font color="black">:<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">case&nbsp;</font><font color="#808080">&quot;u&quot;</font><font color="black">:<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">return&nbsp;true;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default</font><font color="black">:<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">return&nbsp;false;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">}<br />   &nbsp;&nbsp;&nbsp;&nbsp;}</p>
	<p>   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">///&nbsp;&lt;summary&gt;<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;Thanks&nbsp;to&nbsp;the&nbsp;University&nbsp;of&nbsp;Bristol&nbsp;Department&nbsp;of&nbsp;Computer&nbsp;Science<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;(and&nbsp;Google)&nbsp;I&#8217;ve&nbsp;managed&nbsp;to&nbsp;get&nbsp;a&nbsp;list&nbsp;of&nbsp;all&nbsp;the&nbsp;letters&nbsp;in&nbsp;the&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;english&nbsp;alphabet&nbsp;and&nbsp;their&nbsp;frequency&nbsp;of&nbsp;use&nbsp;in&nbsp;the&nbsp;English&nbsp;language<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;Since&nbsp;Random&nbsp;deals&nbsp;with&nbsp;integers,&nbsp;I&#8217;ve&nbsp;multiplied&nbsp;all&nbsp;these&nbsp;values&nbsp;*&nbsp;100<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;The&nbsp;sum&nbsp;of&nbsp;all&nbsp;of&nbsp;them&nbsp;should&nbsp;be&nbsp;10,000,&nbsp;which&nbsp;when&nbsp;calculating&nbsp;the&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;range&nbsp;of&nbsp;random&nbsp;numbers&nbsp;to&nbsp;draw&nbsp;should&nbsp;be&nbsp;10,000&nbsp;+&nbsp;the&nbsp;number&nbsp;of&nbsp;possible&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;letters;&nbsp;because&nbsp;the&nbsp;first&nbsp;letter&nbsp;range&nbsp;is&nbsp;from&nbsp;0&nbsp;to&nbsp;1231,&nbsp;and&nbsp;the&nbsp;next&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;letter&nbsp;range&nbsp;begins&nbsp;en&nbsp;1232&nbsp;(prior&nbsp;end&nbsp;range&nbsp;+1)<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;In&nbsp;the&nbsp;case&nbsp;of&nbsp;single&nbsp;letters&nbsp;this&nbsp;is&nbsp;correct,&nbsp;and&nbsp;the&nbsp;ranges&nbsp;are&nbsp;from&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;0&nbsp;to&nbsp;10,025.&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;But,&nbsp;I&nbsp;don&#8217;t&nbsp;know&nbsp;WHY,&nbsp;in&nbsp;the&nbsp;case&nbsp;of&nbsp;digrams&nbsp;the&nbsp;range&nbsp;goes&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;from&nbsp;0&nbsp;to&nbsp;5,548.&nbsp;The&nbsp;frequency&nbsp;percentage&nbsp;of&nbsp;all&nbsp;the&nbsp;avaliable&nbsp;digrams,<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;each&nbsp;of&nbsp;them&nbsp;multiplied&nbsp;by&nbsp;100&nbsp;and&nbsp;all&nbsp;of&nbsp;them&nbsp;added&nbsp;is&nbsp;NOT&nbsp;10,000&nbsp;as&nbsp;it&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;should&nbsp;be.&nbsp;Anyone&nbsp;knows&nbsp;why?<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;/summary&gt;<br />   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">static&nbsp;void&nbsp;</font><font color="black">LoadLetters()<br />   &nbsp;&nbsp;&nbsp;&nbsp;{<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">//&nbsp;http://www.cs.bris.ac.uk/Teaching/Resources/COMS30124/Labs/freq.html<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Percentage&nbsp;Frequency&nbsp;of&nbsp;Single&nbsp;Letters<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;E&nbsp;12.31&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;L&nbsp;4.03&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;1.62<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;T&nbsp;&nbsp;9.59&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D&nbsp;3.65&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;G&nbsp;1.61<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;A&nbsp;&nbsp;8.05&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C&nbsp;3.20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;V&nbsp;0.93<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;O&nbsp;&nbsp;7.94&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;U&nbsp;3.10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;K&nbsp;0.52<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;N&nbsp;&nbsp;7.19&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P&nbsp;2.29&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Q&nbsp;0.20<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;I&nbsp;&nbsp;7.18&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;F&nbsp;2.28&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;X&nbsp;0.20<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;S&nbsp;&nbsp;6.59&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;M&nbsp;2.25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;J&nbsp;0.10<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;R&nbsp;&nbsp;6.03&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;W&nbsp;2.03&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Z&nbsp;0.09<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;H&nbsp;&nbsp;5.14&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Y&nbsp;1.88&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
	<p>   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">string</font><font color="black">[]&nbsp;_letterValue&nbsp;</font><font color="blue">=&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">{<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#808080">&quot;e&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;l&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;b&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;t&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;d&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;g&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;a&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;c&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;v&quot;</font><font color="black">,<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#808080">&quot;o&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;u&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;k&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;n&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;p&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;q&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;i&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;f&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;x&quot;</font><font color="black">,<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#808080">&quot;s&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;m&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;j&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;r&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;w&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;z&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;h&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;y&quot;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">}</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int</font><font color="black">[]&nbsp;_letterFreq&nbsp;</font><font color="blue">=&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">{<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="maroon">1231</font><font color="black">,&nbsp;</font><font color="maroon">403</font><font color="black">,&nbsp;</font><font color="maroon">162</font><font color="black">,&nbsp;</font><font color="maroon">959</font><font color="black">,&nbsp;</font><font color="maroon">365</font><font color="black">,&nbsp;</font><font color="maroon">161</font><font color="black">,&nbsp;</font><font color="maroon">805</font><font color="black">,&nbsp;</font><font color="maroon">320</font><font color="black">,&nbsp;</font><font color="maroon">93</font><font color="black">,&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="maroon">794</font><font color="black">,&nbsp;</font><font color="maroon">310</font><font color="black">,&nbsp;</font><font color="maroon">52</font><font color="black">,&nbsp;</font><font color="maroon">719</font><font color="black">,&nbsp;</font><font color="maroon">229</font><font color="black">,&nbsp;</font><font color="maroon">20</font><font color="black">,&nbsp;</font><font color="maroon">718</font><font color="black">,&nbsp;</font><font color="maroon">228</font><font color="black">,&nbsp;</font><font color="maroon">20</font><font color="black">,<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="maroon">659</font><font color="black">,&nbsp;</font><font color="maroon">225</font><font color="black">,&nbsp;</font><font color="maroon">10</font><font color="black">,&nbsp;</font><font color="maroon">603</font><font color="black">,&nbsp;</font><font color="maroon">203</font><font color="black">,&nbsp;</font><font color="maroon">9</font><font color="black">,&nbsp;</font><font color="maroon">514</font><font color="black">,&nbsp;</font><font color="maroon">188<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">}</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;</font><font color="black">lastEndRange&nbsp;</font><font color="blue">=&nbsp;</font><font color="maroon">0</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">//Examining&nbsp;those&nbsp;hard-coded&nbsp;arrays&nbsp;we&nbsp;fill&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//the&nbsp;AllLetters&nbsp;collection&nbsp;of&nbsp;letter&nbsp;objects,&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//assigning&nbsp;each&nbsp;one&nbsp;its&nbsp;range,&nbsp;value&nbsp;and&nbsp;LetterType<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">for&nbsp;</font><font color="black">(</font><font color="blue">int&nbsp;</font><font color="black">i&nbsp;</font><font color="blue">=&nbsp;</font><font color="maroon">0</font><font color="blue">;&nbsp;</font><font color="black">i&nbsp;&lt;&nbsp;_letterFreq.Length</font><font color="blue">;&nbsp;</font><font color="black">i++)<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Letter&nbsp;nuLetter&nbsp;</font><font color="blue">=&nbsp;new&nbsp;</font><font color="black">Letter()</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">nuLetter.iniRange&nbsp;</font><font color="blue">=&nbsp;</font><font color="black">lastEndRange</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">nuLetter.endRange&nbsp;</font><font color="blue">=&nbsp;</font><font color="black">lastEndRange&nbsp;+&nbsp;_letterFreq[i]</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">lastEndRange&nbsp;</font><font color="blue">=&nbsp;</font><font color="black">nuLetter.endRange&nbsp;+&nbsp;</font><font color="maroon">1</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">nuLetter.Value&nbsp;</font><font color="blue">=&nbsp;</font><font color="black">_letterValue[i]</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">nuLetter.Type&nbsp;</font><font color="blue">=&nbsp;</font><font color="black">IsAVowel(_letterValue[i])&nbsp;?&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LetterType.Vowel&nbsp;:&nbsp;LetterType.Consonant</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">AllLetters.Add(nuLetter)</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">}<br />   &nbsp;&nbsp;&nbsp;&nbsp;}<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">///&nbsp;&lt;summary&gt;<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;See&nbsp;LoadLetters&nbsp;comment<br />   &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;/summary&gt;<br />   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">static&nbsp;void&nbsp;</font><font color="black">LoadDigrams()<br />   &nbsp;&nbsp;&nbsp;&nbsp;{<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">//&nbsp;http://www.cs.bris.ac.uk/Teaching/Resources/COMS30124/Labs/freq.html<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;TH&nbsp;&nbsp;3.15&nbsp;&nbsp;&nbsp;TO&nbsp;&nbsp;1.11&nbsp;&nbsp;&nbsp;SA&nbsp;&nbsp;0.75&nbsp;&nbsp;&nbsp;MA&nbsp;&nbsp;0.56&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;HE&nbsp;&nbsp;2.51&nbsp;&nbsp;&nbsp;NT&nbsp;&nbsp;1.10&nbsp;&nbsp;&nbsp;HI&nbsp;&nbsp;0.72&nbsp;&nbsp;&nbsp;TA&nbsp;&nbsp;0.56<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;AN&nbsp;&nbsp;1.72&nbsp;&nbsp;&nbsp;ED&nbsp;&nbsp;1.07&nbsp;&nbsp;&nbsp;LE&nbsp;&nbsp;0.72&nbsp;&nbsp;&nbsp;CE&nbsp;&nbsp;0.55<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;IN&nbsp;&nbsp;1.69&nbsp;&nbsp;&nbsp;IS&nbsp;&nbsp;1.06&nbsp;&nbsp;&nbsp;SO&nbsp;&nbsp;0.71&nbsp;&nbsp;&nbsp;IC&nbsp;&nbsp;0.55<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;ER&nbsp;&nbsp;1.54&nbsp;&nbsp;&nbsp;AR&nbsp;&nbsp;1.01&nbsp;&nbsp;&nbsp;AS&nbsp;&nbsp;0.67&nbsp;&nbsp;&nbsp;LL&nbsp;&nbsp;0.55<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;RE&nbsp;&nbsp;1.48&nbsp;&nbsp;&nbsp;OU&nbsp;&nbsp;0.96&nbsp;&nbsp;&nbsp;NO&nbsp;&nbsp;0.65&nbsp;&nbsp;&nbsp;NA&nbsp;&nbsp;0.54<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;ES&nbsp;&nbsp;1.45&nbsp;&nbsp;&nbsp;TE&nbsp;&nbsp;0.94&nbsp;&nbsp;&nbsp;NE&nbsp;&nbsp;0.64&nbsp;&nbsp;&nbsp;RO&nbsp;&nbsp;0.54<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;ON&nbsp;&nbsp;1.45&nbsp;&nbsp;&nbsp;OF&nbsp;&nbsp;0.94&nbsp;&nbsp;&nbsp;EC&nbsp;&nbsp;0.64&nbsp;&nbsp;&nbsp;OT&nbsp;&nbsp;0.53<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;EA&nbsp;&nbsp;1.31&nbsp;&nbsp;&nbsp;IT&nbsp;&nbsp;0.88&nbsp;&nbsp;&nbsp;IO&nbsp;&nbsp;0.63&nbsp;&nbsp;&nbsp;TT&nbsp;&nbsp;0.53<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;TI&nbsp;&nbsp;1.28&nbsp;&nbsp;&nbsp;HA&nbsp;&nbsp;0.84&nbsp;&nbsp;&nbsp;RT&nbsp;&nbsp;0.63&nbsp;&nbsp;&nbsp;VE&nbsp;&nbsp;0.53<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;AT&nbsp;&nbsp;1.24&nbsp;&nbsp;&nbsp;SE&nbsp;&nbsp;0.84&nbsp;&nbsp;&nbsp;CO&nbsp;&nbsp;0.59&nbsp;&nbsp;&nbsp;NS&nbsp;&nbsp;0.51<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;ST&nbsp;&nbsp;1.21&nbsp;&nbsp;&nbsp;ET&nbsp;&nbsp;0.80&nbsp;&nbsp;&nbsp;BE&nbsp;&nbsp;0.58&nbsp;&nbsp;&nbsp;UR&nbsp;&nbsp;0.49<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;EN&nbsp;&nbsp;1.20&nbsp;&nbsp;&nbsp;AL&nbsp;&nbsp;0.77&nbsp;&nbsp;&nbsp;DI&nbsp;&nbsp;0.57&nbsp;&nbsp;&nbsp;ME&nbsp;&nbsp;0.48<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;ND&nbsp;&nbsp;1.18&nbsp;&nbsp;&nbsp;RI&nbsp;&nbsp;0.77&nbsp;&nbsp;&nbsp;LI&nbsp;&nbsp;0.57&nbsp;&nbsp;&nbsp;WH&nbsp;&nbsp;0.48<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;OR&nbsp;&nbsp;1.13&nbsp;&nbsp;&nbsp;NG&nbsp;&nbsp;0.75&nbsp;&nbsp;&nbsp;RA&nbsp;&nbsp;0.57&nbsp;&nbsp;&nbsp;LY&nbsp;&nbsp;0.47&nbsp;</p>
	<p>   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">string</font><font color="black">[]&nbsp;_digramValue&nbsp;</font><font color="blue">=&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">{&nbsp;&nbsp;&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#808080">&quot;th&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;to&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;sa&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;ma&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;he&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;nt&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;hi&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;ta&quot;</font><font color="black">,<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#808080">&quot;an&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;ed&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;le&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;ce&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;in&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;is&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;so&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;ic&quot;</font><font color="black">,<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#808080">&quot;er&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;ar&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;as&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;ll&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;re&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;ou&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;no&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;na&quot;</font><font color="black">,<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#808080">&quot;es&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;te&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;ne&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;ro&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;on&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;of&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;ec&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;ot&quot;</font><font color="black">,<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#808080">&quot;ea&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;it&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;io&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;tt&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;ti&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;ha&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;rt&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;ve&quot;</font><font color="black">,<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#808080">&quot;at&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;se&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;co&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;ns&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;st&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;et&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;be&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;ur&quot;</font><font color="black">,<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#808080">&quot;en&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;al&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;di&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;me&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;nd&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;ri&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;li&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;wh&quot;</font><font color="black">,<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#808080">&quot;or&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;ng&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;ra&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;ly&quot;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">}</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int</font><font color="black">[]&nbsp;_digramFreq&nbsp;</font><font color="blue">=&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">{<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="maroon">315</font><font color="black">,&nbsp;</font><font color="maroon">111</font><font color="black">,&nbsp;</font><font color="maroon">75</font><font color="black">,&nbsp;</font><font color="maroon">56</font><font color="black">,&nbsp;</font><font color="maroon">251</font><font color="black">,&nbsp;</font><font color="maroon">110</font><font color="black">,&nbsp;</font><font color="maroon">72</font><font color="black">,&nbsp;</font><font color="maroon">56</font><font color="black">,<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="maroon">172</font><font color="black">,&nbsp;</font><font color="maroon">107</font><font color="black">,&nbsp;</font><font color="maroon">72</font><font color="black">,&nbsp;</font><font color="maroon">55</font><font color="black">,&nbsp;</font><font color="maroon">169</font><font color="black">,&nbsp;</font><font color="maroon">106</font><font color="black">,&nbsp;</font><font color="maroon">71</font><font color="black">,&nbsp;</font><font color="maroon">55</font><font color="black">,&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="maroon">154</font><font color="black">,&nbsp;</font><font color="maroon">101</font><font color="black">,&nbsp;</font><font color="maroon">67</font><font color="black">,&nbsp;</font><font color="maroon">55</font><font color="black">,&nbsp;</font><font color="maroon">148</font><font color="black">,&nbsp;</font><font color="maroon">96</font><font color="black">,&nbsp;</font><font color="maroon">65</font><font color="black">,&nbsp;</font><font color="maroon">54</font><font color="black">,&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="maroon">145</font><font color="black">,&nbsp;</font><font color="maroon">94</font><font color="black">,&nbsp;</font><font color="maroon">64</font><font color="black">,&nbsp;</font><font color="maroon">54</font><font color="black">,&nbsp;</font><font color="maroon">145</font><font color="black">,&nbsp;</font><font color="maroon">94</font><font color="black">,&nbsp;</font><font color="maroon">64</font><font color="black">,&nbsp;</font><font color="maroon">53</font><font color="black">,&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="maroon">131</font><font color="black">,&nbsp;</font><font color="maroon">88</font><font color="black">,&nbsp;</font><font color="maroon">63</font><font color="black">,&nbsp;</font><font color="maroon">53</font><font color="black">,&nbsp;</font><font color="maroon">128</font><font color="black">,&nbsp;</font><font color="maroon">84</font><font color="black">,&nbsp;</font><font color="maroon">63</font><font color="black">,&nbsp;</font><font color="maroon">53</font><font color="black">,&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="maroon">124</font><font color="black">,&nbsp;</font><font color="maroon">84</font><font color="black">,&nbsp;</font><font color="maroon">59</font><font color="black">,&nbsp;</font><font color="maroon">51</font><font color="black">,&nbsp;</font><font color="maroon">121</font><font color="black">,&nbsp;</font><font color="maroon">80</font><font color="black">,&nbsp;</font><font color="maroon">58</font><font color="black">,&nbsp;</font><font color="maroon">49</font><font color="black">,&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="maroon">120</font><font color="black">,&nbsp;</font><font color="maroon">77</font><font color="black">,&nbsp;</font><font color="maroon">57</font><font color="black">,&nbsp;</font><font color="maroon">48</font><font color="black">,&nbsp;</font><font color="maroon">118</font><font color="black">,&nbsp;</font><font color="maroon">77</font><font color="black">,&nbsp;</font><font color="maroon">57</font><font color="black">,&nbsp;</font><font color="maroon">48</font><font color="black">,&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="maroon">113</font><font color="black">,&nbsp;</font><font color="maroon">75</font><font color="black">,&nbsp;</font><font color="maroon">57</font><font color="black">,&nbsp;</font><font color="maroon">47<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">}</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;</font><font color="black">lastEndRange&nbsp;</font><font color="blue">=&nbsp;</font><font color="maroon">0</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="darkgreen">//Examining&nbsp;those&nbsp;hard-coded&nbsp;arrays&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//we&nbsp;fill&nbsp;the&nbsp;AllDigrams&nbsp;collection<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//of&nbsp;Digram&nbsp;objects,&nbsp;assigning&nbsp;each&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//one&nbsp;its&nbsp;range,&nbsp;value&nbsp;and&nbsp;DigramType<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="blue">for&nbsp;</font><font color="black">(</font><font color="blue">int&nbsp;</font><font color="black">i&nbsp;</font><font color="blue">=&nbsp;</font><font color="maroon">0</font><font color="blue">;&nbsp;</font><font color="black">i&nbsp;&lt;&nbsp;_digramFreq.Length</font><font color="blue">;&nbsp;</font><font color="black">i++)<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Digram&nbsp;nuDigram&nbsp;</font><font color="blue">=&nbsp;new&nbsp;</font><font color="black">Digram()</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">nuDigram.iniRange&nbsp;</font><font color="blue">=&nbsp;</font><font color="black">lastEndRange</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">nuDigram.endRange&nbsp;</font><font color="blue">=&nbsp;</font><font color="black">lastEndRange&nbsp;+&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_digramFreq[i]</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">lastEndRange&nbsp;</font><font color="blue">=&nbsp;</font><font color="black">nuDigram.endRange&nbsp;+&nbsp;</font><font color="maroon">1</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">nuDigram.Value&nbsp;</font><font color="blue">=&nbsp;</font><font color="black">_digramValue[i]</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;</font><font color="black">(IsAVowel(_digramValue[i].Substring(</font><font color="maroon">0</font><font color="black">,&nbsp;</font><font color="maroon">1</font><font color="black">))&nbsp;&amp;&amp;&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IsAVowel(_digramValue[i].Substring(</font><font color="maroon">1</font><font color="black">,&nbsp;</font><font color="maroon">1</font><font color="black">)))<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nuDigram.Type&nbsp;</font><font color="blue">=&nbsp;</font><font color="black">DigramType.TwoVowels</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;</font><font color="black">(!IsAVowel(_digramValue[i].Substring(</font><font color="maroon">0</font><font color="black">,&nbsp;</font><font color="maroon">1</font><font color="black">))&nbsp;&amp;&amp;&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IsAVowel(_digramValue[i].Substring(</font><font color="maroon">1</font><font color="black">,&nbsp;</font><font color="maroon">1</font><font color="black">)))<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nuDigram.Type&nbsp;</font><font color="blue">=&nbsp;</font><font color="black">DigramType.ConsonantAndVowel</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;</font><font color="black">(IsAVowel(_digramValue[i].Substring(</font><font color="maroon">0</font><font color="black">,&nbsp;</font><font color="maroon">1</font><font color="black">))&nbsp;&amp;&amp;&nbsp;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!IsAVowel(_digramValue[i].Substring(</font><font color="maroon">1</font><font color="black">,&nbsp;</font><font color="maroon">1</font><font color="black">)))<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nuDigram.Type&nbsp;</font><font color="blue">=&nbsp;</font><font color="black">DigramType.VowelAndConsonant</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;</font><font color="black">nuDigram.Type&nbsp;</font><font color="blue">=&nbsp;</font><font color="black">DigramType.TwoConsonants</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">AllDigrams.Add(nuDigram)</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">}<br />   &nbsp;&nbsp;&nbsp;&nbsp;}<br />   </font><font color="blue">#endregion<br />   </font><font color="black">}</font> 	</div>
 	  <hr /> 	Colorized by: <a href="http://www.CarlosAg.net/Tools/CodeColorizer/">CarlosAg.CodeColorizer</a> </p>
	<p>  And here&#8217;s an example of the surnames it makes:
<ul>
<li>Andaso</li>
	<li>Estecon</li>
	<li>Ovloso</li>
	<li>Eleasawh</li>
	<li>Athene</li>
	<li>Tertore</li>
	<li>Setolyiis</li>
	<li>Face</li>
	<li>Lirsuco</li>
	<li>Rofsender</li>
  </ul>
 <br /> <a href="http://www.dotnetkicks.com/kick/?url=http://codecruncher.blogsome.com/2007/01/12/random-surname-generator/"><img border="0" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://codecruncher.blogsome.com/2007/01/12/random-surname-generator/" alt="kick it on DotNetKicks.com" /></a>
</p>
]]></content:encoded>
			<wfw:commentRss>http://codecruncher.blogsome.com/2007/01/12/random-surname-generator/feed/</wfw:commentRss>
	</item>
		<item>
		<title>Compressing and uncompressing ZIP files</title>
		<link>http://codecruncher.blogsome.com/2007/01/04/37/</link>
		<comments>http://codecruncher.blogsome.com/2007/01/04/37/#comments</comments>
		<pubDate>Thu, 04 Jan 2007 11:38:23 +0000</pubDate>
		<dc:creator>Codecruncher</dc:creator>
		
	<category>.NET</category>
	<category>Articles</category>
		<guid>http://codecruncher.blogsome.com/2007/01/04/37/</guid>
		<description><![CDATA[	For compressing and uncompresing files in ZIP format we have a very valuable tool at our disposal: the SharpZipLib library, made by IC#Code, the same developer group that brought us   the awesome Open Source IDE for C# SharpDevelop, which I&#8217;ve mentioned   before.
	          [...]]]></description>
			<content:encoded><![CDATA[	<p>For compressing and uncompresing files in ZIP format we have a very valuable tool at our disposal: the <a href="http://www.icsharpcode.net/OpenSource/SharpZipLib/" target="_blank">SharpZipLib</a> library, made by IC#Code, the same developer group that brought us   the awesome Open Source IDE for C# <a href="http://www.icsharpcode.net/OpenSource/SD/Default.aspx" target="_blank">SharpDevelop</a>, which I&#8217;ve mentioned   before.</p>
	<p>           First thing we&#8217;ve got to do, then, is to download said library to our system. Once donde that, we must include it as a reference on the project we&#8217;re using   it; and if we believe we&#8217;re going to use it somewhat frequently, the comfy option is to install it to the GAC. To do so, let&#8217;s open the <em>Visual Studio 2005   Command prompt</em>, located under <em>Tools</em> in the <em>Visual Studio 2005</em> start menu group. When clicking on it, it opens a new console window and   inside it we should go to the folder where we&#8217;ve downloaded ICSharpCode.SharpZipLib.dll (for easiness, I have it on a folder of its own at C:\Program Files)   and once there we enter the following command:</p>
	<p>          gacutil /i ICSharpCode.SharpZipLib.dll</p>
	<p>          Thus we add the library to .NET&#8217;s global assembly cache.  </p>
	<p>           So, either if we add the library to the GAC or not, we have to reference it in our project. For it, you know, once our project is created (be it a Console,   Windows Forms or Web Forms) whe choose the <em>Project</em>, <em>Add Reference</em> menu item, and we choose the library on the dialog window that opens: on the   <em>.NET</em> tab if the library is included in the GAC or we can search it with the tab <em>Browse</em>. Once the reference is included, we add the line</p>
	<p> <br />
<div class="sourcecode"><font color="blue">using&nbsp;</font><font color="black">ICSharpCode.SharpZipLib.Zip</font><font color="blue">;</font> </div>
<br />           in our code and we are set to go.<br />          One last disclaimer before gettint to it: to simplify this article I&#8217;ve decided for the code examples included to work   in the Console and I&#8217;ve taken for granted some things like paths and file names. If you want this code to work don&#8217;t simply copy and paste it, you&#8217;ve got to   adapt it to your system and your files. <br /> <br />
<h3>Listing File Content</h3>
	<p>Let&#8217;s see first how can we list the contents of a ZIP file. for it, we simply declare an object called <em>zip</em> from the class   <em>ZipFile</em>. See how SharpZipLib makes a ZipFile composed of ZipEntry objects, not of files or lines or any other thing. The ZipEntry class is going to be   any of the entities that can be contained on a ZIP file, files or directories. Once knowing this, we can work our way through the entries on the ZIP file   with a <em>foreach</em> loop and we simply show the name of the entry on the Console:</p>
	<div class="sourcecode"> <font color="blue">private&nbsp;static&nbsp;void&nbsp;</font><font color="black">ListZipContent(</font><font color="blue">string&nbsp;</font><font color="black">sFile)&nbsp;<br />         {<br />         &nbsp;&nbsp;&nbsp;&nbsp;ZipFile&nbsp;zip&nbsp;</font><font color="blue">=&nbsp;new&nbsp;</font><font color="black">ZipFile(File.OpenRead(sFile))</font><font color="blue">;<br />         &nbsp;&nbsp;&nbsp;&nbsp;foreach</font><font color="black">(ZipEntry&nbsp;entry&nbsp;</font><font color="blue">in&nbsp;</font><font color="black">zip)&nbsp;<br />         &nbsp;&nbsp;&nbsp;&nbsp;{<br />         &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(entry.Name)</font><font color="blue">;<br />         &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">}<br />         }&nbsp;</font> 	</div>
 	        <hr /> 	Colorized by: <a href="http://www.CarlosAg.net/Tools/CodeColorizer/">CarlosAg.CodeColorizer</a><br /> <br />
<h3>Uncompressing Files</h3>
The plot thickens. To uncompress a ZIP file we open it as a <em>ZipInputStream</em> object, we navigate through its entries with the   <em>GetNextEntry()</em> method and we save the binary content of each entry on a byte array. Said array will feed a StreamWriter object, which we&#8217;ll use to   create the new file, which will be an exact uncompressed copy of the binary data stored on the ZIP file&#8217;s entry.</p>
	<div class="sourcecode"> <font color="blue">private&nbsp;static&nbsp;void&nbsp;</font><font color="black">UncompressZip(</font><font color="blue">string&nbsp;</font><font color="black">sFile)<br />       {<br />       &nbsp;&nbsp;&nbsp;&nbsp;ZipInputStream&nbsp;zipIn&nbsp;</font><font color="blue">=&nbsp;new&nbsp;</font><font color="black">ZipInputStream(File.OpenRead(sFile))</font><font color="blue">;<br />       &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">ZipEntry&nbsp;entry</font><font color="blue">;<br />       &nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;</font><font color="black">((entry&nbsp;</font><font color="blue">=&nbsp;</font><font color="black">zipIn.GetNextEntry())&nbsp;!</font><font color="blue">=&nbsp;null</font><font color="black">)<br />       &nbsp;&nbsp;&nbsp;&nbsp;{<br />       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileStream&nbsp;streamWriter&nbsp;</font><font color="blue">=&nbsp;</font><font color="black">File.Create(</font><font color="#808080">@&quot;C:\Temp\&quot;&nbsp;</font><font color="black">+&nbsp;entry.Name)</font><font color="blue">;<br />       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;</font><font color="black">size&nbsp;</font><font color="blue">=&nbsp;</font><font color="black">entry.Size</font><font color="blue">;<br />       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;byte</font><font color="black">[]&nbsp;data&nbsp;</font><font color="blue">=&nbsp;new&nbsp;byte</font><font color="black">[size]</font><font color="blue">;<br />       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;</font><font color="black">(</font><font color="blue">true</font><font color="black">)<br />       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size&nbsp;</font><font color="blue">=&nbsp;</font><font color="black">zipIn.Read(data,&nbsp;</font><font color="maroon">0</font><font color="black">,&nbsp;data.Length)</font><font color="blue">;<br />       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;</font><font color="black">(size&nbsp;&gt;&nbsp;</font><font color="maroon">0</font><font color="black">)&nbsp;streamWriter.Write(data,&nbsp;</font><font color="maroon">0</font><font color="black">,&nbsp;(</font><font color="blue">int</font><font color="black">)&nbsp;size)</font><font color="blue">;<br />       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;break;<br />       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">}<br />       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;streamWriter.Close()</font><font color="blue">;<br />       &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">}<br />       &nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(</font><font color="#808080">&quot;Done!!&quot;</font><font color="black">)</font><font color="blue">;<br />       </font><font color="black">}&nbsp;</font> 	</div>
 	      <hr /> 	Colorized by: <a href="http://www.CarlosAg.net/Tools/CodeColorizer/">CarlosAg.CodeColorizer</a>   </p>
	<h3>Compressing Files</h3>
For compressing files wer&#8217;ll use an object similar to the previous one but of the opposite purpose, <em>ZipOutputStream</em>. Wanting   to keep this example simple, I&#8217;ve supposed we want to compress <strong>every</strong> existing file on the path passed as parameter <em>sPath</em>. Thus we&#8217;ll read all   the files sitting on that folder, we&#8217;ll create a new <em>ZipEntry</em> object, get some information about the file with <em>FileInfo</em> (we could also use some   CRC checking, but I wanted to keep this simple) to assign that information to the new entry, and add the entry to the <em>ZipOutputStream</em> object with its   <em>PutNextEntry</em> method. Pay attention, this would create an empty entry: to really enter the data contained in the file we need to read its binary data   with a <em>FileStream</em> as in the previous example and then call the method <em>Write</em> from <em>ZipOutputStream</em> to save those binary data on the most   recent entry of the output Zip stream. Once read and included all the files, we finish and close the <em>ZipOutputStream</em> object.</p>
	<div class="sourcecode"> <font color="blue">private&nbsp;static&nbsp;void </font><font color="black">Compress</font><font color="black">Zip(</font><font color="blue">string&nbsp;</font><font color="black">sPath)&nbsp;<br />     {<br />     &nbsp;&nbsp;&nbsp;&nbsp;ZipOutputStream&nbsp;zipOut&nbsp;&nbsp;</font><font color="blue">=&nbsp;new&nbsp;</font><font color="black">ZipOutputStream(File.Create(</font><font color="#808080">@&quot;C:\Temp\test.zip&quot;</font><font color="black">))</font><font color="blue">;<br />     &nbsp;&nbsp;&nbsp;&nbsp;foreach</font><font color="black">(</font><font color="blue">string&nbsp;</font><font color="black">fName&nbsp;</font><font color="blue">in&nbsp;</font><font color="black">Directory.GetFiles(sPath))<br />     &nbsp;&nbsp;&nbsp;&nbsp;{<br />     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileInfo&nbsp;fi&nbsp;&nbsp;</font><font color="blue">=&nbsp;new&nbsp;</font><font color="black">FileInfo(fName)</font><font color="blue">;<br />     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">ZipEntry&nbsp;entry&nbsp;</font><font color="blue">=&nbsp;new&nbsp;</font><font color="black">ZipEntry(fi.Name)</font><font color="blue">;<br />     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">FileStream&nbsp;sReader&nbsp;</font><font color="blue">=&nbsp;</font><font color="black">File.OpenRead(fName)</font><font color="blue">;<br />     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;byte</font><font color="black">[]&nbsp;buff&nbsp;</font><font color="blue">=&nbsp;new&nbsp;byte</font><font color="black">[Convert.ToInt32(sReader.Length)]</font><font color="blue">;<br />     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">sReader.Read(buff,&nbsp;</font><font color="maroon">0</font><font color="black">,&nbsp;(</font><font color="blue">int</font><font color="black">)&nbsp;sReader.Length)</font><font color="blue">;<br />     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">entry.DateTime&nbsp;</font><font color="blue">=&nbsp;</font><font color="black">fi.LastWriteTime</font><font color="blue">;<br />     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">entry.Size&nbsp;</font><font color="blue">=&nbsp;</font><font color="black">sReader.Length</font><font color="blue">;<br />     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">sReader.Close()</font><font color="blue">;<br />     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">zipOut.PutNextEntry(entry)</font><font color="blue">;<br />     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">zipOut.Write(buff,&nbsp;</font><font color="maroon">0</font><font color="black">,&nbsp;buff.Length)</font><font color="blue">;<br />     &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">}<br />     &nbsp;&nbsp;&nbsp;&nbsp;zipOut.Finish()</font><font color="blue">;<br />     &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">zipOut.Close()</font><font color="blue">;<br />     &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">Console.WriteLine(</font><font color="#808080">&quot;Done!!&quot;</font><font color="black">)</font><font color="blue">;<br />     </font><font color="black">}&nbsp;</font> 	</div>
 	    <hr /> 	Colorized by: <a href="http://www.CarlosAg.net/Tools/CodeColorizer/">CarlosAg.CodeColorizer</a> </p>
	<p>And this ends this little introduction to <strong>SharpZipLib</strong>. IC#Code keeps an <a href="http://community.sharpdevelop.net/forums/12/ShowForum.aspx" target="_blank">superb forum</a> on which you can find some more code examples and a lot of answered questions. </p>
	<p>           <strong>Update 5/01/2007</strong>.- Playing a little bit with the library and VS 2005&#8217;s Object Browser, I stumble upon a class called FastZip. Hmmmmm. Yeah, it&#8217;s what   it seems: a wrapper class to ease the process of compressing and uncompressing files with SharpZipLib. For example, to uncompress a file it would be as   simple as this:</p>
	<p>          <strong>ExtractZip</strong> method&#8217;s three parameters are strings; and they stand for the name of the ZIP file to uncompress, the destination path for the   uncompressed files and a mask for the type of files we want to extract. Warning: you can&#8217;t use an DOS mask such as &quot;*.txt&quot;, you must use a regular   expression. If we want to uncompress every file existing on the path, we should simply leave this last argument as <em>null</em> or empty string &quot;&quot;.</p>
	<div class="sourcecode"> <font color="blue">private&nbsp;static&nbsp;void&nbsp;</font><font color="black">FastZipUncompress(</font><font color="blue">string&nbsp;</font><font color="black">sFile)<br />    {<br />    &nbsp;&nbsp;&nbsp;&nbsp;FastZip&nbsp;fZip&nbsp;</font><font color="blue">=&nbsp;new&nbsp;</font><font color="black">FastZip()</font><font color="blue">;<br />    &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">fZip.ExtractZip(sFile,&nbsp;</font><font color="#808080">@&quot;C:\Temp&quot;</font><font color="black">,&nbsp;</font><font color="#808080">&quot;&quot;</font><font color="black">)</font><font color="blue">;<br />    </font><font color="black">}&nbsp;</font> 	</div>
 	   <hr /> 	Colorized by: <a href="http://www.CarlosAg.net/Tools/CodeColorizer/">CarlosAg.CodeColorizer</a> </p>
	<p>           And to compress:</p>
	<div class="sourcecode"> <font color="blue">private&nbsp;static&nbsp;void </font><font color="black">FastZipCompress()<br />   {<br />   &nbsp;&nbsp;&nbsp;&nbsp;FastZip&nbsp;fZip&nbsp;</font><font color="blue">=&nbsp;new&nbsp;</font><font color="black">FastZip()</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">fZip.CreateZip(</font><font color="#808080">@&quot;C:\Temp\walls.zip&quot;</font><font color="black">,&nbsp;</font><font color="#808080">@&quot;C:\Wallpapers&quot;</font><font color="black">,&nbsp;</font><font color="blue">false</font><font color="black">,&nbsp;</font><font color="#808080">&quot;.jpg$&quot;</font><font color="black">)</font><font color="blue">;<br />   &nbsp;&nbsp;&nbsp;&nbsp;</font><font color="black">Console.WriteLine(</font><font color="#808080">&quot;Done!!&quot;</font><font color="black">)</font><font color="blue">;<br />   </font><font color="black">}&nbsp;</font> 	</div>
 	  <hr /> 	Colorized by: <a href="http://www.CarlosAg.net/Tools/CodeColorizer/">CarlosAg.CodeColorizer</a> </p>
	<p>          In this example the method <strong>CreateZip</strong> accepts four arguments: the name and path of the ZIP file to be created, the folder where the files we want to compress are, a boolean parameter for stating if we want to make a recursive compression (to include possible subfolders), and last an string parameter specifying the mask we want to use for choosing the files we want to compress, in this example every JPG file. The same rules in using masks applies.</p>
	<p> <a href="http://www.dotnetkicks.com/kick/?url=http://codecruncher.blogsome.com/2007/01/04/37/"><img border="0" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://codecruncher.blogsome.com/2007/01/04/37/" alt="kick it on DotNetKicks.com" /></a>
</p>
]]></content:encoded>
			<wfw:commentRss>http://codecruncher.blogsome.com/2007/01/04/37/feed/</wfw:commentRss>
	</item>
		<item>
		<title>Codecruncher the Grey</title>
		<link>http://codecruncher.blogsome.com/2006/11/15/codecruncher-the-grey/</link>
		<comments>http://codecruncher.blogsome.com/2006/11/15/codecruncher-the-grey/#comments</comments>
		<pubDate>Wed, 15 Nov 2006 08:26:13 +0000</pubDate>
		<dc:creator>Codecruncher</dc:creator>
		
	<category>Uncategorized</category>
		<guid>http://codecruncher.blogsome.com/2006/11/15/codecruncher-the-grey/</guid>
		<description><![CDATA[	Every morning it&#8217;s the same. I enter my firm&#8217;s building and I see a bunch of people waiting to be interviewed for a job. And I always have to restrain myself not to enter the room all crazy eyed and yell at them: &#8220;Fly, you fools!&#8221;.
	I wonder why is this.
	powered by performancing firefox
]]></description>
			<content:encoded><![CDATA[	<p>Every morning it&#8217;s the same. I enter <a href="http://www.axpe-uk.com/" target="_blank">my firm&#8217;s</a> building and I see a bunch of people waiting to be interviewed for a job. And I always have to restrain myself not to enter the room all crazy eyed and yell at them: <b><i>&#8220;Fly, you fools!&#8221;</i></b>.</p>
	<p>I wonder why is this.</p>
	<p class="poweredbyperformancing">powered by <a href="http://performancing.com/firefox" >performancing firefox</a></p>
]]></content:encoded>
			<wfw:commentRss>http://codecruncher.blogsome.com/2006/11/15/codecruncher-the-grey/feed/</wfw:commentRss>
	</item>
		<item>
		<title>Fair justice</title>
		<link>http://codecruncher.blogsome.com/2006/11/14/fair-justice/</link>
		<comments>http://codecruncher.blogsome.com/2006/11/14/fair-justice/#comments</comments>
		<pubDate>Tue, 14 Nov 2006 15:55:48 +0000</pubDate>
		<dc:creator>Codecruncher</dc:creator>
		
	<category>Opinion</category>
		<guid>http://codecruncher.blogsome.com/2006/11/14/fair-justice/</guid>
		<description><![CDATA[	Good news for all of us, here, among other places. Some Dave Mitchell, a freelance English programmer and sysadmin, who bought a Dell laptop, has managed to get back the money that Dell charged him for the bundled O.S., a Windows XP Home I guess. Mitchell asked for his money  (45 GBP) back arguing [...]]]></description>
			<content:encoded><![CDATA[	<p>Good news for all of us, <a href="http://www.linuxworld.com/news/2006/110706-dell-windows.html" target="_blank">here</a>, among other places. Some Dave Mitchell, a freelance English programmer and sysadmin, who bought a Dell laptop, has managed to get back the money that Dell charged him for the bundled O.S., a Windows XP Home I guess. Mitchell asked for his money  (45 GBP) back arguing that he never used and never was going to use that Windows license, and invoking Microsoft&#8217;s own EULA for it.</p>
	<p>Good for him. That&#8217;s something we all should do, Linux users or not. For example, my own HP Pavilion W5080 (I can&#8217;t link it, because after less than two years is already out of HP catalog) comes with a bundled Windows XP Home, that I was never going to use. No setup CDs, no manuals, everything stored on a <i>recovery partition</i> on the main hard disk. If you install any other O.S., even from the same family, <a href="http://www.picacodigos.com/PermaLink,guid,8c01ac03-272a-498c-b19b-0075f2352790.aspx" target="_blank">you&#8217;re screwed</a> (spanish link, sorry), you just made your warrant void. Even if your problem has nothing to do with the O.S.</p>
	<p>I heartily dislike this <i>solution</i> because:</p>
	<ol>
	<li>I don&#8217;t see the reason why I have to pay for an O.S. I&#8217;m not gonna use. Moreover, if the O.S. I&#8217;m going to use is not free; I have to pay twice for the same concept.</li>
	<li>The computer&#8217;s manufacturar has no right to tell me how I must setup my hard disk.</li>
	<li>Usually the recovery partition is bigger than needed. Because of their <i>saving</i> on buying complete Windows licenses, I lose hard disk space.</li>
	</ol>
	<p>Let&#8217;s hope this catches and more people decides to ask for their money back for an O.S. they&#8217;r enot going to use. And it shouldn&#8217;t be necessary: manufacturers should realize this and give the customer the choice of preinstalled O.S., if any.</p>
	<p class="poweredbyperformancing">powered by <a href="http://performancing.com/firefox" >performancing firefox</a></p>
]]></content:encoded>
			<wfw:commentRss>http://codecruncher.blogsome.com/2006/11/14/fair-justice/feed/</wfw:commentRss>
	</item>
		<item>
		<title>Nine things developers want more than money</title>
		<link>http://codecruncher.blogsome.com/2006/11/09/nine-things-developers-want-more-than-money/</link>
		<comments>http://codecruncher.blogsome.com/2006/11/09/nine-things-developers-want-more-than-money/#comments</comments>
		<pubDate>Thu, 09 Nov 2006 13:21:11 +0000</pubDate>
		<dc:creator>Codecruncher</dc:creator>
		
	<category>Opinion</category>
		<guid>http://codecruncher.blogsome.com/2006/11/09/nine-things-developers-want-more-than-money/</guid>
		<description><![CDATA[	In the spanish main version of this blog I&#8217;ve just translated and published an original Rob Walling post, Nine things developers want more than money. It&#8217;s a great article, and since this is in English I&#8217;ll merely link to it here. My thoughts about it, coming up.

]]></description>
			<content:encoded><![CDATA[	<p>In the spanish main version of this blog I&#8217;ve just translated and published an original Rob Walling post, <a href="http://www.softwarebyrob.com/articles/Nine_Things_Developers_Want_More_Than_Money.aspx" target="_blank">Nine things developers want more than money</a>. It&#8217;s a <strong>great</strong> article, and since this is in English I&#8217;ll merely link to it here. My thoughts about it, coming up.
</p>
]]></content:encoded>
			<wfw:commentRss>http://codecruncher.blogsome.com/2006/11/09/nine-things-developers-want-more-than-money/feed/</wfw:commentRss>
	</item>
		<item>
		<title>XNA development</title>
		<link>http://codecruncher.blogsome.com/2006/09/01/xna-development/</link>
		<comments>http://codecruncher.blogsome.com/2006/09/01/xna-development/#comments</comments>
		<pubDate>Fri, 01 Sep 2006 08:38:35 +0000</pubDate>
		<dc:creator>Codecruncher</dc:creator>
		
	<category>.NET</category>
	<category>Tools</category>
		<guid>http://codecruncher.blogsome.com/2006/09/01/xna-development/</guid>
		<description><![CDATA[	Although everyone and his brother has already posted this, I gotta try&#8230;
	Microsoft has made avaliable the beta of XNA Game Studio Express, a set of free tools for programming games targeted to Windows and XBox. It includes the XNA Framework, which is no less than a collection of managed libraries geared towards a (much needed) [...]]]></description>
			<content:encoded><![CDATA[	<p><em>Although everyone and his brother has already posted this, I gotta try&#8230;</em></p>
	<p>Microsoft has made avaliable the beta of <a href="http://msdn.microsoft.com/directx/xna/" target="_blank">XNA Game Studio Express</a>, a set of free tools for programming games targeted to Windows and XBox. It includes the XNA Framework, which is no less than a collection of managed libraries geared towards a (much needed) simplification of using DirectX.</p>
	<p>Oriented to <em>students and amateur programmers</em> (and actually reaching out to almost every programmer<sup>1</sup>) at the moment XNA Game Studio is <strong>only </strong>compatible with <a href="http://msdn.microsoft.com/vstudio/express/visualcsharp/default.aspx" target="_blank">Visual C# 2005 Express</a>. </p>
	<p>Tehre&#8217;s already a site (that I know of) collecting all the download links for all the needed tools (and yeah, they&#8217;re <strong>all free</strong>); and some tutorials to boot: <a href="http://www.xnadevelopment.com/" target="_blank">XNA Development</a>. </p>
	<p>I don&#8217;t know why, but I don&#8217;t think I&#8217;m going to get out much this weekend&#8230; </p>
	<hr /><strong>1.-</strong> C&#8217;mon, which one of you has not once dreamed about game programming? It&#8217;s the <strong>Top Gun</strong> of computer programming!
</p>
]]></content:encoded>
			<wfw:commentRss>http://codecruncher.blogsome.com/2006/09/01/xna-development/feed/</wfw:commentRss>
	</item>
		<item>
		<title>SubSonic</title>
		<link>http://codecruncher.blogsome.com/2006/08/30/subsonic/</link>
		<comments>http://codecruncher.blogsome.com/2006/08/30/subsonic/#comments</comments>
		<pubDate>Wed, 30 Aug 2006 19:38:10 +0000</pubDate>
		<dc:creator>Codecruncher</dc:creator>
		
	<category>.NET</category>
	<category>Tools</category>
		<guid>http://codecruncher.blogsome.com/2006/08/30/subsonic/</guid>
		<description><![CDATA[	Wow. I&#8217;ve just hurt myself: I&#8217;ve just seen Rob Conery&#8217;s webcast about the little library he&#8217;s created for .NET 2.0 and myu jaw has opened so much all by itself, and not precisely yawning, that it has crashed against my desk.
	As Conery himself says, he&#8217;s followed Ruby on Rails for creating SubSonic (previously known as [...]]]></description>
			<content:encoded><![CDATA[	<p>Wow. I&#8217;ve just hurt myself: I&#8217;ve just seen Rob Conery&#8217;s webcast about the <em>little</em> library he&#8217;s created for .NET 2.0 and myu jaw has opened so much all by itself, and not precisely yawning, that it has crashed against my desk.</p>
	<p>As Conery himself says, he&#8217;s followed Ruby on Rails for creating <a target="_blank" href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=actionpack">SubSonic</a> (previously known as <em>Action Pack</em>). SubSonic is a <em>Zero Code DAL</em>, or Data Access Layer. Just like in Ruby, complete with <em>scaffolding</em>.</p>
	<p> Beware, SubSonic is <strong>not</strong> a .NET implementation of Ruby On Rails. That&#8217;s <a href="http://www.castleproject.org/index.php/MonoRail" target="_blank">MonoRail</a>. It&#8217;s not even an adaptation, because RoR is a complete framework with Modell-View-Controller , data access layer and all the works. SubSonic is <em>just</em> an <strong>amazing</strong> data access layer.</p>
	<p>I haven&#8217;t got the time (yet) to play a little with it, but if you&#8217;d like to stop feeling envy while watching Rails webcasts or presentations, take a look at the <a target="_blank" href="http://www.wekeroad.com/actionpackintro.html">Introduction to SubSonic webcast</a>.</p>
	<p> Beware you jaws.</p>
	<p> <strong>Update</strong>.- I forgot to link this <a href="http://weblogs.asp.net/jgalloway/archive/2006/08/30/SubSonic-_2800_formerly-ASP.NET-ActionPack_2900_-_2D00_-Microsoft-should-ship-this-with-Atlas.aspx" target="_blank">excellent introduction</a> by Jon Galloway. I&#8217;m of the same opinion: Microsoft should hire Conery and include the ActionPack.dll as part of Atlas. Or for giving SubSonic MVC capabilities. Or doing <em>something</em> with this stuff.
</p>
]]></content:encoded>
			<wfw:commentRss>http://codecruncher.blogsome.com/2006/08/30/subsonic/feed/</wfw:commentRss>
	</item>
		<item>
		<title>Google Code Hosting</title>
		<link>http://codecruncher.blogsome.com/2006/07/31/google-code-hosting/</link>
		<comments>http://codecruncher.blogsome.com/2006/07/31/google-code-hosting/#comments</comments>
		<pubDate>Mon, 31 Jul 2006 16:24:25 +0000</pubDate>
		<dc:creator>Codecruncher</dc:creator>
		
	<category>Tools</category>
	<category>Opinion</category>
		<guid>http://codecruncher.blogsome.com/2006/07/31/google-code-hosting/</guid>
		<description><![CDATA[	Or how Google made its very own SourceForge.
	Google has made avaliable for all of us with a GMail account, Google Code Hosting, a repository for Open Source projects hosted by Google. It uses Subversion, and allows the project administrators to manage a bug tracker, the project collaborators, add links to external webpages about the project, [...]]]></description>
			<content:encoded><![CDATA[	<p>Or how Google made its very own SourceForge.</p>
	<p>Google has made avaliable for all of us with a GMail account, <a href="http://code.google.com/hosting/" target="_blank">Google Code Hosting</a>, a repository for Open Source projects hosted by Google. It uses <a href="http://subversion.tigris.org/" target="_blank">Subversion</a>, and allows the project administrators to manage a bug tracker, the project collaborators, add links to external webpages about the project, and so on.</p>
	<p>I&#8217;ll keep telling you things as I keep trying it.
</p>
]]></content:encoded>
			<wfw:commentRss>http://codecruncher.blogsome.com/2006/07/31/google-code-hosting/feed/</wfw:commentRss>
	</item>
	</channel>
</rss>
