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

<channel>
	<title>Jeroens blog &#187; The Code Project</title>
	<atom:link href="http://blog.bn2vs.com/tag/the-code-project/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.bn2vs.com</link>
	<description>Blog of Jeroen De Dauw. The latest news on my open source work and interests.</description>
	<lastBuildDate>Wed, 28 Jul 2010 16:09:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Skynet released!</title>
		<link>http://blog.bn2vs.com/2010/01/30/skynet-released/</link>
		<comments>http://blog.bn2vs.com/2010/01/30/skynet-released/#comments</comments>
		<pubDate>Sat, 30 Jan 2010 22:43:10 +0000</pubDate>
		<dc:creator>Jeroen De Dauw</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[.Net 4.0]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[Artificial intelligence]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[GA]]></category>
		<category><![CDATA[GALib]]></category>
		<category><![CDATA[Genetic Algorithm]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Skynet]]></category>
		<category><![CDATA[SourceForge]]></category>
		<category><![CDATA[The Code Project]]></category>
		<category><![CDATA[Travelling Salesman Problem]]></category>
		<category><![CDATA[TSP]]></category>

		<guid isPermaLink="false">http://blog.bn2vs.com/?p=686</guid>
		<description><![CDATA[Today I released the first public beta of Skynet, which is now at version 0.1.3. Skynet is an implementation of GALib with WPF GUI that solves the Travelling Salesman Problem (TSP) using Genetic Algorithms (GA). It&#8217;s completely open source and available under the GNU General Public License. Downloads Skynet 0.1.3.zip 99.4 KB Skynet 0.1.3 setup.zip [...]]]></description>
			<content:encoded><![CDATA[<div class='wpfblike' style='height: 40px;'><fb:like href='http://blog.bn2vs.com/2010/01/30/skynet-released/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' /></div><p>Today I released the first public beta of Skynet, which is now at version 0.1.3. Skynet is an implementation of <a title="GALib" href="http://wiki.bn2vs.com/GALib">GALib</a> with WPF GUI that solves the Travelling Salesman  Problem (<a rel="nofollow" href="http://en.wikipedia.org/wiki/Travelling_salesman_problem">TSP</a>) using Genetic Algorithms (<a rel="nofollow" href="http://en.wikipedia.org/wiki/Genetic_algorithm">GA</a>). It&#8217;s completely open source and available  under the GNU General Public License.</p>
<p><strong>Downloads</strong></p>
<ul>
<li> <a rel="nofollow" href="https://sourceforge.net/projects/csgalib-tsp/files/Skynet%200.1.3/Skynet%200.1.3.zip/download">Skynet 0.1.3.zip</a> 99.4 KB</li>
<li> <a rel="nofollow" href="https://sourceforge.net/projects/csgalib-tsp/files/Skynet%200.1.3/Skynet%200.1.3%20setup.zip/download">Skynet 0.1.3 setup.zip</a> 331.3 KB</li>
<li> <a rel="nofollow" href="http://csgalib-tsp.svn.sourceforge.net/viewvc/csgalib-tsp.tar.gz?view=tar">Download GNU tarball</a> (latest  version of the source project, straight from SVN)</li>
</ul>
<p>You can also download the project code directly via SVN from the   SourceForge source code repository, at <a rel="nofollow" href="https://csgalib-tsp.svn.sourceforge.net/svnroot/csgalib-tsp">https://csgalib-tsp.svn.sourceforge.net/svnroot/csgalib-tsp</a>.   From a command line, you can call the following:  svn checkout  https://csgalib-tsp.svn.sourceforge.net/svnroot/csgalib-tsp</p>
<p><strong>Application features</strong></p>
<ul>
<li>Graphical WPF interface</li>
<li>Multiple selection algorithms</li>
<li>Pause, resume and cancellation support</li>
<li>Control over mutation ratio&#8217;s and elitism percentage</li>
<li>Optional removal of identical twins or individuals</li>
<li>&#8220;Take over the world&#8221; button</li>
</ul>
<p><strong>Background</strong></p>
<p>The idea for creating this application came to me after reading the  first part of <a rel="nofollow" href="http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&amp;tid=11657">Bio-Inspired Artificial  Intelligence</a> by Dario Floreano and Claudio Mattiussi. I figured I  needed to do an implementation of what I&#8217;ve read to test myself. I split  up the general GA code from the application itself and created <a title="GALib" href="http://wiki.bn2vs.com/GALib">GALib</a>, a small C#  Library that provides the scaffolding for Genetic Algorithm based  functionality. All work was done in my free time.</p>
<p><a href="http://blog.bn2vs.com/wp-content/uploads/2010/01/Skynet-application-interface.gif"><img class="alignnone size-full wp-image-687" title="Skynet application interface" src="http://blog.bn2vs.com/wp-content/uploads/2010/01/Skynet-application-interface.gif" alt="" width="600" height="574" /></a></p>
<p>See <a title="Skynet/Screenshots" href="http://wiki.bn2vs.com/Skynet/Screenshots">this page</a> for more screenshots.</p>
<p><strong>Using the application</strong></p>
<p>Although the application interface should be pretty straight forward to use, I&#8217;ve written some documentation, which can be found <a href="http://wiki.bn2vs.com/Skynet#Using_the_application">here</a>. If you have any questions, let me know <img src='http://blog.bn2vs.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>How it works</strong></p>
<p><a href="http://wiki.bn2vs.com/Skynet#How_it_works">This section on my wiki</a> explains how Skynet works as an implementation of <a title="GALib" href="http://wiki.bn2vs.com/GALib">GALib</a>. If you are  not familiar with how genetic algorithms work, you are advised to first  have a good look at <a rel="nofollow" href="http://en.wikipedia.org/wiki/Genetic_algorithm">this Wikipedia article</a> and related pages. This  section will introduce you to how GA logic specific to the TSP works in a  bottom-up fashion. For more information on the actual evolution, see <a title="GALib" href="http://wiki.bn2vs.com/GALib">GALib</a>. I&#8217;m also planning to write a Code Project article about this implementation of GALib.</p>
<p>This is a full dependency digram generated in a Visual Studio solution containing both the GALib and Skynet projects.</p>
<p><a href="http://blog.bn2vs.com/wp-content/uploads/2010/01/GALib-and-Skynet-dependency-graph.gif"><img class="alignnone size-full wp-image-688" title="[Click to enlarge] Skynet and GALib dependency diagram" src="http://blog.bn2vs.com/wp-content/uploads/2010/01/GALib-and-Skynet-dependency-graph.gif" alt="Skynet and GALib dependency diagram" width="599" height="602" /></a></p>
<p><strong>Points of interest</strong></p>
<p>Since my main motivation for creating this application was exercise, I  learned a lot from building it. It&#8217;s my first decent C# application, as  well as the first time I&#8217;ve created one using WPF and the first time  I&#8217;ve done any GA programming (or AI in general). It also gave me the  chance to familiarize myself with some of the new things of .Net 4.0,  some profiling tools (see screenshot below), and have some fun with navigation based windows.  The biggest challenge in the application itself (so not counting <a title="GALib" href="http://wiki.bn2vs.com/GALib">GALib</a>), was  definitely creating the crossover algorithm for the Route individual  type. At first I simply took half of the connections of one parent, and  then the other half from the other parent, but I rewrote this to take  all common connections. Although the crossover algorithm works fine now,  it&#8217;s pretty heavy on the cpu, and limiting the maximum speed of the  application severely. If anyone finds a way to speed it up, be sure to  let me know :)</p>
<p><a href="http://blog.bn2vs.com/wp-content/uploads/2010/01/ants-performance-profiler.gif"><img class="alignnone size-full wp-image-689" title="[Click to enlarge] Profiling of Skynet" src="http://blog.bn2vs.com/wp-content/uploads/2010/01/ants-performance-profiler.gif" alt="Profiling of Skynet" width="603" height="411" /></a></p>
<p>I&#8217;ve been working on this application on an off for a month now, and have implemented everything I&#8217;ve planned and more. Although a lot of cool stuff could still be added, I&#8217;m quitting active development of both this application and GALib, so I can focus on new projects that allow me to further expand my understanding of AI.</p>
<div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F01%2F30%2Fskynet-released%2F&amp;title=Skynet+released%21" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F01%2F30%2Fskynet-released%2F&amp;title=Skynet+released%21" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F01%2F30%2Fskynet-released%2F&amp;title=Skynet+released%21" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F01%2F30%2Fskynet-released%2F&amp;headline=Skynet+released%21" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=Skynet+released%21&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F01%2F30%2Fskynet-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=Skynet+released%21&amp;u=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F01%2F30%2Fskynet-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=Skynet+released%21&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F01%2F30%2Fskynet-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=Skynet+released%21&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F01%2F30%2Fskynet-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=Skynet+released%21&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F01%2F30%2Fskynet-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F01%2F30%2Fskynet-released%2F&amp;title=Skynet+released%21&amp;summary=&amp;source=" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F01%2F30%2Fskynet-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fblog.bn2vs.com%2F2010%2F01%2F30%2Fskynet-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F01%2F30%2Fskynet-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://blog.bn2vs.com/2010/01/30/skynet-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GALib 0.1 released</title>
		<link>http://blog.bn2vs.com/2010/01/24/galib-0-1-released/</link>
		<comments>http://blog.bn2vs.com/2010/01/24/galib-0-1-released/#comments</comments>
		<pubDate>Sun, 24 Jan 2010 22:31:25 +0000</pubDate>
		<dc:creator>Jeroen De Dauw</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[.Net 3.5]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[Artificial intelligence]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Evolutionary Algortihm]]></category>
		<category><![CDATA[GA]]></category>
		<category><![CDATA[GALib]]></category>
		<category><![CDATA[Genetic Algorithm]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[SourceForge]]></category>
		<category><![CDATA[TCP]]></category>
		<category><![CDATA[The Code Project]]></category>

		<guid isPermaLink="false">http://blog.bn2vs.com/?p=677</guid>
		<description><![CDATA[Yesterday I released GALib version 0.1, a small C# Library that provides the scaffolding for Genetic Algorithm based functionality. It&#8217;s completely open source and available under the GNU General Public License. (See other blog posts about GALib) You can download both the source and compiled .dll from SourceForge. I&#8217;ve done the effort to do some [...]]]></description>
			<content:encoded><![CDATA[<div class='wpfblike' style='height: 40px;'><fb:like href='http://blog.bn2vs.com/2010/01/24/galib-0-1-released/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' /></div><p>Yesterday I released <a href="https://sourceforge.net/projects/csgalib/">GALib</a> version 0.1, a small C# Library that provides the scaffolding for Genetic Algorithm based functionality. It&#8217;s completely open source and available under the GNU General Public License. (<a href="http://blog.bn2vs.com/tag/galib/">See other blog posts about GALib</a>) You can download both the source and compiled .dll from <a href="https://sourceforge.net/projects/csgalib/">SourceForge</a>.</p>
<p>I&#8217;ve done the effort to do some core documentation, in the form of comments in the <a href="https://sourceforge.net/projects/csgalib/">source code</a>, and an article explaining the usage of the library that I&#8217;ve put both <a href="http://wiki.bn2vs.com/GALib">on my wiki</a> and <a href="http://www.codeproject.com/KB/recipes/galib.aspx">on The Code Project</a>.</p>
<p>Since my main motivation for creating this library was exercise, I learned a lot from building it. This is the first C# library I&#8217;ve ever written, as well as the first time I&#8217;ve done any GA programming (or AI in general). Abstracting the library in a way so that it can be used for GA in general was very interesting, and required me to expanded my knowledge of how to use interfaces and inheritance and use generics in a non-basic way for the first time.</p>
<p>I&#8217;m not planning to further develop this lib, although I might when I can re-use it for a future project. I hope to similarly release the first version of <a href="http://blog.bn2vs.com/tag/downloadlib/">DownloadLib</a>, which I&#8217;m having some lame multithreading issues with, before halfway through next week, after which I&#8217;ll start doing some development on <a href="http://semantic-mediawiki.org/wiki/Semantic_MediaWiki">Semantic MediaWiki</a>.</p>
<p><strong>Downloads</strong></p>
<ul>
<li><a rel="nofollow" href="https://sourceforge.net/projects/csgalib/files/GALib%200.1%20dll.zip/download">GALib 0.1 dll.zip</a> (11.1KB)</li>
<li><a rel="nofollow" href="https://sourceforge.net/projects/csgalib/files/GALib%200.1%20source.tar.gz/download">GALib 0.1 source.zip</a> (58.4 KB)</li>
<li><a rel="nofollow" href="http://download-lib.svn.sourceforge.net/viewvc/csgalib.tar.gz?view=tar">GNU tarball</a></li>
</ul>
<div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F01%2F24%2Fgalib-0-1-released%2F&amp;title=GALib+0.1+released" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F01%2F24%2Fgalib-0-1-released%2F&amp;title=GALib+0.1+released" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F01%2F24%2Fgalib-0-1-released%2F&amp;title=GALib+0.1+released" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F01%2F24%2Fgalib-0-1-released%2F&amp;headline=GALib+0.1+released" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=GALib+0.1+released&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F01%2F24%2Fgalib-0-1-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=GALib+0.1+released&amp;u=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F01%2F24%2Fgalib-0-1-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=GALib+0.1+released&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F01%2F24%2Fgalib-0-1-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=GALib+0.1+released&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F01%2F24%2Fgalib-0-1-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=GALib+0.1+released&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F01%2F24%2Fgalib-0-1-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F01%2F24%2Fgalib-0-1-released%2F&amp;title=GALib+0.1+released&amp;summary=&amp;source=" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F01%2F24%2Fgalib-0-1-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fblog.bn2vs.com%2F2010%2F01%2F24%2Fgalib-0-1-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F01%2F24%2Fgalib-0-1-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://blog.bn2vs.com/2010/01/24/galib-0-1-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Progressbar with percentage</title>
		<link>http://blog.bn2vs.com/2009/11/03/progressbar-with-percentage/</link>
		<comments>http://blog.bn2vs.com/2009/11/03/progressbar-with-percentage/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 21:12:10 +0000</pubDate>
		<dc:creator>Jeroen De Dauw</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[Component]]></category>
		<category><![CDATA[Progressbar]]></category>
		<category><![CDATA[SourceForge]]></category>
		<category><![CDATA[The Code Project]]></category>
		<category><![CDATA[VB]]></category>

		<guid isPermaLink="false">http://blog.bn2vs.com/?p=523</guid>
		<description><![CDATA[Last few months I haven&#8217;t really done a lot of .Net work, apart from the .Net DownloadLib project, and therefore also not released anything. After someone on The Code Project gave me a poke on an update to my custom made ProgressbarWithPercentage component I had promised, I made an update to that component and released [...]]]></description>
			<content:encoded><![CDATA[<div class='wpfblike' style='height: 40px;'><fb:like href='http://blog.bn2vs.com/2009/11/03/progressbar-with-percentage/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' /></div><p>Last few months I haven&#8217;t really done a lot of .Net work, apart from the <a href="http://blog.bn2vs.com/tag/downloadlib/" target="_blank">.Net DownloadLib project</a>, and therefore also not released anything. After someone on <a href="http://www.codeproject.com/" target="_blank">The Code Project</a> gave me a poke on an update to my custom made <a href="http://www.codeproject.com/KB/progress/progressbar-percentage.aspx" target="_blank">ProgressbarWithPercentage component</a> I had promised, I made an update to that component and released it.</p>
<p>ProgressbarWithPercentage is not at version 1.0.10. The changes I made since the last release are:</p>
<ul>
<li>Style support for XP and earlier</li>
<li>You can now customize the display format of the percentage</li>
</ul>
<p>I also updated the demo, to include both an XP and a Vista/Win7 layout, and added a property grid that enables you to change the properties of the progress bars at runtime. On top of that, I decided it was a good idea to create a repository for this component <a href="http://sourceforge.net/projects/pprogressbar/" target="_blank">on SourceForge</a>, where you can now freely download and browse the code. I&#8217;ve send an update request to TCP with a new version of my article, but this has yet to appear.</p>
<p><strong>Downloads:</strong></p>
<ul>
<li><a href="http://code.bn2vs.com/viewtopic.php?mode=attach&amp;id=214" target="_blank">Demo applications</a></li>
<li><a href="http://code.bn2vs.com/viewtopic.php?mode=attach&amp;id=215" target="_blank">Source project</a></li>
<li><a href="http://pprogressbar.svn.sourceforge.net/viewvc/pprogressbar/" target="_blank">SVN repo</a></li>
</ul>
<p>Some nice screenshots of the new demo (click to enlarge):</p>
<p><a href="http://blog.bn2vs.com/wp-content/uploads/2009/11/pBarPercentage7.jpg"><img class="size-full wp-image-524 alignnone" title="ProgressbarWithPercentage v1.0.10 Vista/Win7 demo" src="http://blog.bn2vs.com/wp-content/uploads/2009/11/pBarPercentage7.jpg" alt="ProgressbarWithPercentage v1.0.10 Vista/Win7 demo" width="605" height="254" /></a></p>
<p><a href="http://blog.bn2vs.com/wp-content/uploads/2009/11/pBarPercentageXP.jpg"><img class="alignnone size-full wp-image-525" title="ProgressbarWithPercentage v1.0.10 XP/earlier demo" src="http://blog.bn2vs.com/wp-content/uploads/2009/11/pBarPercentageXP.jpg" alt="ProgressbarWithPercentage v1.0.10 XP/earlier demo" width="605" height="255" /></a></p>
<div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F11%2F03%2Fprogressbar-with-percentage%2F&amp;title=Progressbar+with+percentage" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F11%2F03%2Fprogressbar-with-percentage%2F&amp;title=Progressbar+with+percentage" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F11%2F03%2Fprogressbar-with-percentage%2F&amp;title=Progressbar+with+percentage" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F11%2F03%2Fprogressbar-with-percentage%2F&amp;headline=Progressbar+with+percentage" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=Progressbar+with+percentage&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F11%2F03%2Fprogressbar-with-percentage%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=Progressbar+with+percentage&amp;u=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F11%2F03%2Fprogressbar-with-percentage%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=Progressbar+with+percentage&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F11%2F03%2Fprogressbar-with-percentage%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=Progressbar+with+percentage&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F11%2F03%2Fprogressbar-with-percentage%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=Progressbar+with+percentage&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F11%2F03%2Fprogressbar-with-percentage%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F11%2F03%2Fprogressbar-with-percentage%2F&amp;title=Progressbar+with+percentage&amp;summary=&amp;source=" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F11%2F03%2Fprogressbar-with-percentage%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fblog.bn2vs.com%2F2009%2F11%2F03%2Fprogressbar-with-percentage%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F11%2F03%2Fprogressbar-with-percentage%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://blog.bn2vs.com/2009/11/03/progressbar-with-percentage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>.Net C# to VB + refactoring</title>
		<link>http://blog.bn2vs.com/2009/08/28/net-c-to-vb-refactoring/</link>
		<comments>http://blog.bn2vs.com/2009/08/28/net-c-to-vb-refactoring/#comments</comments>
		<pubDate>Thu, 27 Aug 2009 23:20:03 +0000</pubDate>
		<dc:creator>Jeroen De Dauw</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Code horror]]></category>
		<category><![CDATA[DownloadLib]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Refactoring]]></category>
		<category><![CDATA[The Code Project]]></category>
		<category><![CDATA[VB]]></category>

		<guid isPermaLink="false">http://blog.bn2vs.com/?p=353</guid>
		<description><![CDATA[While translating some of the C# code of MyDownloader to VB.Net for the .Net download library, I&#8217;ve already come across quite some awkward code. IMHO, the underneath example could go into the code horrors section of The Code Project. &#160; &#160; &#160; &#160; private void RestartDownload&#40;&#41; &#160; &#160; &#160; &#160; &#123; &#160; &#160; &#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<div class='wpfblike' style='height: 40px;'><fb:like href='http://blog.bn2vs.com/2009/08/28/net-c-to-vb-refactoring/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' /></div><p>While translating some of the C# code of <a href="http://www.codeproject.com/KB/IP/MyDownloader.aspx" target="_blank">MyDownloader</a> to VB.Net for the .Net download library, I&#8217;ve already come across quite some awkward code. IMHO, the underneath example could go into the <a href="http://www.codeproject.com/Feature/CodingHorrors.aspx" target="_blank">code horrors section</a> of <a href="http://www.codeproject.com" target="_blank">The Code Project</a>.</p>
<div class="codecolorer-container csharp default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="csharp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #6666cc; font-weight: bold;">void</span> RestartDownload<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #6666cc; font-weight: bold;">int</span> currentTry <span style="color: #008000;">=</span> <span style="color: #FF0000;">0</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Stream stream<span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; RemoteFileInfo newInfo<span style="color: #008000;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">try</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">do</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lastError <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SetState<span style="color: #008000;">&#40;</span>DownloaderState<span style="color: #008000;">.</span><span style="color: #0000FF;">Preparing</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; currentTry<span style="color: #008000;">++;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">try</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; newInfo <span style="color: #008000;">=</span> defaultDownloadProvider<span style="color: #008000;">.</span><span style="color: #0000FF;">GetFileInfo</span><span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">ResourceLocation</span>, <span style="color: #0600FF; font-weight: bold;">out</span> stream<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">break</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">catch</span> <span style="color: #008000;">&#40;</span>Exception ex<span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lastError <span style="color: #008000;">=</span> ex<span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>currentTry <span style="color: #008000;">&lt;</span> Settings<span style="color: #008000;">.</span><span style="color: #0600FF; font-weight: bold;">Default</span><span style="color: #008000;">.</span><span style="color: #0000FF;">MaxRetries</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SetState<span style="color: #008000;">&#40;</span>DownloaderState<span style="color: #008000;">.</span><span style="color: #0000FF;">WaitingForReconnect</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Thread<span style="color: #008000;">.</span><span style="color: #0000FF;">Sleep</span><span style="color: #008000;">&#40;</span>TimeSpan<span style="color: #008000;">.</span><span style="color: #0000FF;">FromSeconds</span><span style="color: #008000;">&#40;</span>Settings<span style="color: #008000;">.</span><span style="color: #0600FF; font-weight: bold;">Default</span><span style="color: #008000;">.</span><span style="color: #0000FF;">RetryDelay</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">return</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">while</span> <span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">true</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">finally</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SetState<span style="color: #008000;">&#40;</span>DownloaderState<span style="color: #008000;">.</span><span style="color: #0000FF;">Prepared</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">try</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008080; font-style: italic;">// check if the file changed on the server</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">!</span>newInfo<span style="color: #008000;">.</span><span style="color: #0000FF;">AcceptRanges</span> <span style="color: #008000;">||</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; newInfo<span style="color: #008000;">.</span><span style="color: #0000FF;">LastModified</span> <span style="color: #008000;">&gt;</span> RemoteFileInfo<span style="color: #008000;">.</span><span style="color: #0000FF;">LastModified</span> <span style="color: #008000;">||</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; newInfo<span style="color: #008000;">.</span><span style="color: #0000FF;">FileSize</span> <span style="color: #008000;">!=</span> RemoteFileInfo<span style="color: #008000;">.</span><span style="color: #0000FF;">FileSize</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">remoteFileInfo</span> <span style="color: #008000;">=</span> newInfo<span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; StartSegments<span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">RequestedSegments</span>, stream<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>stream <span style="color: #008000;">!=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; stream<span style="color: #008000;">.</span><span style="color: #0000FF;">Dispose</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; RunSegments<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">catch</span> <span style="color: #008000;">&#40;</span>ThreadAbortException<span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">throw</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">catch</span> <span style="color: #008000;">&#40;</span>Exception ex<span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lastError <span style="color: #008000;">=</span> ex<span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SetState<span style="color: #008000;">&#40;</span>DownloaderState<span style="color: #008000;">.</span><span style="color: #0000FF;">EndedWithError</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span></div></div>
<p>Why? It uses breaks and returns in the middle of the code, like if C# is some lame generic language without selection structures. The use of the try-catch bloks also seems odd. Also have a look at the condition for the do while loop &#8211; lol. The only thing missing are a few GoTo statements, which would have convinced me to print this out and torture fellow geeks with <img src='http://blog.bn2vs.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>I started off translating this literally, but got so annoyed by the bad coding practice I decided to attempt to rewrite it. I say &#8216;attempt&#8217;, cause code written like that is not easy to understand, esp for people who are used to &#8216;decent&#8217; structured code. I splitted the code into 2 subs instead of one, removed all breaks, returns, the insane do while true and put only the required code in try catches.</p>
<div class="codecolorer-container vbnet default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="vbnet codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #FF8000;">Private</span> <span style="color: #0600FF;">Sub</span> RestartDownload<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">Dim</span> tryNr <span style="color: #FF8000;">As</span> Int32 <span style="color: #008000;">=</span> <span style="color: #FF0000;">0</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">Dim</span> stream <span style="color: #FF8000;">As</span> Stream<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">Dim</span> newInfo <span style="color: #FF8000;">As</span> RemoteFileInfo<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">Dim</span> reachedMaxTries, hasError <span style="color: #FF8000;">As</span> <span style="color: #FF0000;">Boolean</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">Do</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m_lastError <span style="color: #008000;">=</span> <span style="color: #FF8000;">Nothing</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #FF8000;">Me</span>.<span style="color: #0000FF;">SetState</span><span style="color: #000000;">&#40;</span>DownloadState.<span style="color: #0000FF;">Preparing</span><span style="color: #000000;">&#41;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">Try</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; newInfo <span style="color: #008000;">=</span> <span style="color: #FF8000;">Me</span>.<span style="color: #0000FF;">ProtocolProvider</span>.<span style="color: #0000FF;">GetFileInfo</span><span style="color: #000000;">&#40;</span><span style="color: #FF8000;">Me</span>.<span style="color: #0000FF;">FileLocation</span>, stream<span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">Catch</span> ex <span style="color: #FF8000;">As</span> Exception<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m_lastError <span style="color: #008000;">=</span> ex<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Try</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; hasError <span style="color: #008000;">=</span> m_lastError <span style="color: #FF8000;">IsNot</span> <span style="color: #FF8000;">Nothing</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">If</span> hasError <span style="color: #FF8000;">Then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tryNr <span style="color: #008000;">+=</span> <span style="color: #FF0000;">1</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; reachedMaxTries <span style="color: #008000;">=</span> tryNr &gt;<span style="color: #008000;">=</span> <span style="color: #FF8000;">Me</span>.<span style="color: #0000FF;">Settings</span>.<span style="color: #0000FF;">MaxRetries</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">End</span> <span style="color: #0600FF;">If</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">If</span> hasError <span style="color: #804040;">And</span> <span style="color: #804040;">Not</span> reachedMaxTries <span style="color: #FF8000;">Then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #FF8000;">Me</span>.<span style="color: #0000FF;">SetState</span><span style="color: #000000;">&#40;</span>DownloadState.<span style="color: #0000FF;">WaitingForReconnect</span><span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Thread.<span style="color: #0000FF;">Sleep</span><span style="color: #000000;">&#40;</span><span style="color: #FF8000;">Me</span>.<span style="color: #0000FF;">Settings</span>.<span style="color: #0000FF;">RetryDelay</span><span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">End</span> <span style="color: #0600FF;">If</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">Loop</span> Until <span style="color: #804040;">Not</span> hasError Or reachedMaxTries<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">If</span> hasError <span style="color: #FF8000;">Then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #FF8000;">Me</span>.<span style="color: #0000FF;">SetState</span><span style="color: #000000;">&#40;</span>DownloadState.<span style="color: #0000FF;">EndedWithError</span><span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #FF8000;">Else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #FF8000;">Me</span>.<span style="color: #0000FF;">SetState</span><span style="color: #000000;">&#40;</span>DownloadState.<span style="color: #0000FF;">Prepared</span><span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #FF8000;">Me</span>.<span style="color: #0000FF;">RestartSegments</span><span style="color: #000000;">&#40;</span>newInfo, stream<span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">End</span> <span style="color: #0600FF;">If</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Sub</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #FF8000;">Private</span> <span style="color: #0600FF;">Sub</span> RestartSegments<span style="color: #000000;">&#40;</span><span style="color: #FF8000;">ByVal</span> newInfo <span style="color: #FF8000;">As</span> RemoteFileInfo, <span style="color: #FF8000;">ByVal</span> stream <span style="color: #FF8000;">As</span> Stream<span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">If</span> <span style="color: #804040;">Not</span> newInfo.<span style="color: #0000FF;">AcceptRanges</span> Or newInfo.<span style="color: #0000FF;">ModifyDateTime</span> &gt; <span style="color: #FF8000;">Me</span>.<span style="color: #0000FF;">FileInfo</span>.<span style="color: #0000FF;">ModifyDateTime</span> Or newInfo.<span style="color: #0000FF;">FileSize</span> &lt;&gt; <span style="color: #FF8000;">Me</span>.<span style="color: #0000FF;">FileInfo</span>.<span style="color: #0000FF;">FileSize</span> <span style="color: #FF8000;">Then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m_fileInfo <span style="color: #008000;">=</span> newInfo<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #FF8000;">Me</span>.<span style="color: #0000FF;">AttemptToStartSegements</span><span style="color: #000000;">&#40;</span>stream<span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #FF8000;">Else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">If</span> stream <span style="color: #FF8000;">IsNot</span> <span style="color: #FF8000;">Nothing</span> <span style="color: #FF8000;">Then</span> stream.<span style="color: #0000FF;">Dispose</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #FF8000;">Me</span>.<span style="color: #0000FF;">RunSegments</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">End</span> <span style="color: #0600FF;">If</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Sub</span></div></div>
<div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F28%2Fnet-c-to-vb-refactoring%2F&amp;title=.Net+C%23+to+VB+%2B+refactoring" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F28%2Fnet-c-to-vb-refactoring%2F&amp;title=.Net+C%23+to+VB+%2B+refactoring" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F28%2Fnet-c-to-vb-refactoring%2F&amp;title=.Net+C%23+to+VB+%2B+refactoring" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F28%2Fnet-c-to-vb-refactoring%2F&amp;headline=.Net+C%23+to+VB+%2B+refactoring" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=.Net+C%23+to+VB+%2B+refactoring&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F28%2Fnet-c-to-vb-refactoring%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=.Net+C%23+to+VB+%2B+refactoring&amp;u=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F28%2Fnet-c-to-vb-refactoring%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=.Net+C%23+to+VB+%2B+refactoring&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F28%2Fnet-c-to-vb-refactoring%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=.Net+C%23+to+VB+%2B+refactoring&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F28%2Fnet-c-to-vb-refactoring%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=.Net+C%23+to+VB+%2B+refactoring&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F28%2Fnet-c-to-vb-refactoring%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F28%2Fnet-c-to-vb-refactoring%2F&amp;title=.Net+C%23+to+VB+%2B+refactoring&amp;summary=&amp;source=" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F28%2Fnet-c-to-vb-refactoring%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F28%2Fnet-c-to-vb-refactoring%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F28%2Fnet-c-to-vb-refactoring%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://blog.bn2vs.com/2009/08/28/net-c-to-vb-refactoring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Closing Zend and opening Visual Studio</title>
		<link>http://blog.bn2vs.com/2009/08/21/closing-zend-and-opening-visual-studio/</link>
		<comments>http://blog.bn2vs.com/2009/08/21/closing-zend-and-opening-visual-studio/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 01:37:23 +0000</pubDate>
		<dc:creator>Jeroen De Dauw</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Class lirary]]></category>
		<category><![CDATA[DownloadLib]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[SourceForge]]></category>
		<category><![CDATA[SVN]]></category>
		<category><![CDATA[The Code Project]]></category>
		<category><![CDATA[VB]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[Zend Studio]]></category>

		<guid isPermaLink="false">http://blog.bn2vs.com/?p=334</guid>
		<description><![CDATA[Now the Google Summer of Code coding period has finished, I can divide my attention between multiple projects again. Since I&#8217;ve been doing PHP and JavaScript only for over 2 months now, I&#8217;m starting off with taking a PHP-break. This means I won&#8217;t do any development of mayor new features for Maps or Semantic Maps, [...]]]></description>
			<content:encoded><![CDATA[<div class='wpfblike' style='height: 40px;'><fb:like href='http://blog.bn2vs.com/2009/08/21/closing-zend-and-opening-visual-studio/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' /></div><p>Now the <a href="http://blog.bn2vs.com/2009/04/26/google-summer-of-code-2009/" target="_blank">Google Summer of Code</a> coding period has finished, I can divide my attention between multiple projects again. Since I&#8217;ve been doing PHP and JavaScript only for over 2 months now, I&#8217;m starting off with taking a PHP-break. This means I won&#8217;t do any development of mayor new features for <a href="http://www.mediawiki.org/wiki/Extension:Maps#Description" target="_blank">Maps</a> or <a href="http://www.mediawiki.org/wiki/Extension:Semantic_Maps#Description" target="_blank">Semantic Maps</a>, and definitely won&#8217;t work on any other PHP project. Of course I&#8217;ll still ensure bugs get fixed for my mapping extensions, and help people out with code when needed, but that&#8217;s about it. So basically I&#8217;m closing my Zend Studio, which has become one of my most used applications in the last months, and starting my Visual Studio again. Now I think of it, this is really awkward. I used to start my VS practically every time I booted my computer for over a year, and then only opened it a handful of times in a 2 month period.</p>
<p>So, what am I going to work on now? One of my last projects before I started GSoC was a <a href="http://code.bn2vs.com/viewtopic.php?t=150" target="_blank">VB.Net background file downloader</a>, of which I released <a href="http://www.codeproject.com/KB/vb/FileDownloader.aspx" target="_blank">an article on The Code Project</a>, and later on created <a href="http://www.codeproject.com/KB/cs/BackgroundFileDownloader.aspx" target="_blank">a C# version</a>. I got quite some positive feedback on this project by people, although it was initially created with the sole purpose of helping that needed a simple downloader someone out, to improve my own skills, and to demonstrate how to create a simple to implement downloader. I&#8217;m now continuing this project, by rewriting it from scratch, to both add some mayor new features, and mess around with some multi-threading stuff I&#8217;ve been wanting to try out for months now.</p>
<p>The mayor new features that will be added are simultaneous downloads (the current classes only support one download at a time), segmented downloads (woot!), download priorities and bandwidth limitation options. This will require a nice OOP approach, with some more advanced multi-threading. I&#8217;m basing part of my code on <a href="http://www.codeproject.com/KB/IP/MyDownloader.aspx" target="_blank">MyDownloader</a>, an extremely nice C# downloader, which has quite some more functionality then what I&#8217;m doing. It&#8217;s more extensive then required for most people though, and not all that easy to implement. I also don&#8217;t really agree with some naming choices, and it lacks both code docs for devs that want to modify it, and devs that want to implement it. So clearly, I&#8217;ll put a lot of effort in keeping the new project as small and to-the-point as possible, and pay attention to easy of implementation, and usability. Another obvious difference is that this project is in VB.Net and not C#.Net. This has more advantages then disadvantages IMHO. If the project is compiled to a .dll or is used in a multi-project solution, it simply doesn&#8217;t matter what language it uses. A lot of casual programmers don&#8217;t know how to handle either, and the majority of these uses VB.Net, and not C#. And the ones that do know C# are more likely to know VB.Net then the other way around.</p>
<p>I&#8217;ve created a project on <a href="http://sourceforge.net" target="_blank">SourceForge</a> to host the code, and be able to commit to <a href="http://download-lib.svn.sourceforge.net/viewvc/download-lib/" target="_blank">the project&#8217;s SVN</a>. Since the project now contains multiple classes, I renamed it to <a href="https://sourceforge.net/projects/download-lib/" target="_blank">.Net DownloadLib</a>.</p>
<p>After that project I&#8217;m planing to put some real effort into my mapping extension for MediaWiki again, and possibly to have a look at Python and Ruby. When school starts again, somewhere half way through September, some new project opportunities will probably arise for me, but I guess I&#8217;ll see that then. I&#8217;m also looking forward to &#8216;learning to program&#8217; at school, which is destined to give me some great laughs. Luckily for me I&#8217;ll have to learn C++ at university, so I won&#8217;t be totally bored with it. I hope they don&#8217;t drive the low-level aspects of the language to far, since that&#8217;s pretty useless in today&#8217;s world IMHO.</p>
<div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F21%2Fclosing-zend-and-opening-visual-studio%2F&amp;title=Closing+Zend+and+opening+Visual+Studio" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F21%2Fclosing-zend-and-opening-visual-studio%2F&amp;title=Closing+Zend+and+opening+Visual+Studio" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F21%2Fclosing-zend-and-opening-visual-studio%2F&amp;title=Closing+Zend+and+opening+Visual+Studio" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F21%2Fclosing-zend-and-opening-visual-studio%2F&amp;headline=Closing+Zend+and+opening+Visual+Studio" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=Closing+Zend+and+opening+Visual+Studio&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F21%2Fclosing-zend-and-opening-visual-studio%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=Closing+Zend+and+opening+Visual+Studio&amp;u=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F21%2Fclosing-zend-and-opening-visual-studio%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=Closing+Zend+and+opening+Visual+Studio&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F21%2Fclosing-zend-and-opening-visual-studio%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=Closing+Zend+and+opening+Visual+Studio&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F21%2Fclosing-zend-and-opening-visual-studio%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=Closing+Zend+and+opening+Visual+Studio&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F21%2Fclosing-zend-and-opening-visual-studio%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F21%2Fclosing-zend-and-opening-visual-studio%2F&amp;title=Closing+Zend+and+opening+Visual+Studio&amp;summary=&amp;source=" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F21%2Fclosing-zend-and-opening-visual-studio%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F21%2Fclosing-zend-and-opening-visual-studio%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F21%2Fclosing-zend-and-opening-visual-studio%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://blog.bn2vs.com/2009/08/21/closing-zend-and-opening-visual-studio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BN+ Framework 2.0.3 released</title>
		<link>http://blog.bn2vs.com/2009/05/21/bn-framework-2-0-3-released/</link>
		<comments>http://blog.bn2vs.com/2009/05/21/bn-framework-2-0-3-released/#comments</comments>
		<pubDate>Thu, 21 May 2009 23:47:57 +0000</pubDate>
		<dc:creator>Jeroen De Dauw</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[BN+ Framework]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Class lirary]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[The Code Project]]></category>
		<category><![CDATA[VB]]></category>

		<guid isPermaLink="false">http://blog.bn2vs.com/?p=27</guid>
		<description><![CDATA[I’ve just released a new version of BN+ framework. It features a variety of new classes since version 2.0.2 plus some bug fixes and stability improvements. Also some classes have been added the the class library or control library repositories on BN+ Discussions, and a few of them now have detailed articles on The Code [...]]]></description>
			<content:encoded><![CDATA[<div class='wpfblike' style='height: 40px;'><fb:like href='http://blog.bn2vs.com/2009/05/21/bn-framework-2-0-3-released/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' /></div><p>I’ve just released a new version of <a href="http://code.bn2vs.com/viewtopic.php?t=88" target="_blank">BN+ framework</a>. It features a variety of new classes since version 2.0.2 plus some bug fixes and stability improvements. Also some classes have been added the the <a class="postlink" rel="nofollow" href="http://code.bn2vs.com/index.php?f=22" target="_blank">class library</a> or <a class="postlink" rel="nofollow" href="http://code.bn2vs.com/index.php?f=23" target="_blank">control library</a> repositories on <a href="http://code.bn2vs.com" target="_blank">BN+ Discussions</a>, and a few of them now have detailed articles on <a href="http://www.codeproject.com/" target="_blank">The Code Project</a>. Here you have an outtake from the <a href="http://code.bn2vs.com/viewtopic.php?p=229#229" target="_blank">release notes</a>:</p>
<p><strong>New classes</strong><br />
* <a class="postlink" rel="nofollow" href="http://code.bn2vs.com/viewtopic.php?t=147" target="_blank">BugSubmitter</a>: A dialog that enables user to submit variouse types of bugs with build in validation. Sends it’s info to a webservice.<br />
* <a class="postlink" rel="nofollow" href="http://code.bn2vs.com/viewtopic.php?t=154" target="_blank">PasswordDialog</a>: Password editting dialog with optional authentication and live validation .<br />
* <a class="postlink" rel="nofollow" href="http://code.bn2vs.com/viewtopic.php?t=156" target="_blank">SimpleLoginDialog</a>: A simple login dialog that prompts for a password.<br />
* <a class="postlink" rel="nofollow" href="http://code.bn2vs.com/viewtopic.php?t=150" target="_blank">FileDownloader</a>: A class for downloading files in the background that supports info about their progress, the total progress, cancellation, pausing, and resuming. The downloads will run on a separate thread so you don’t have to worry about multihreading yourself.</p>
<p><strong>Revised classes</strong><br />
* <a class="postlink" rel="nofollow" href="http://code.bn2vs.com/viewtopic.php?t=157" target="_blank">CryptoProvider</a>: Now allows you to pass more advanced settings for AES and offers easier to use methods for RSA, DES and TrippleDES.<br />
* <a class="postlink" rel="nofollow" href="http://code.bn2vs.com/viewtopic.php?t=132" target="_blank">CryptoStr</a>: Has been rewritten to work with the new CryptoProvider and is now easier to use.<br />
* <a class="postlink" rel="nofollow" href="http://code.bn2vs.com/viewtopic.php?t=140" target="_blank">Updater</a>: A bug in the version compare algorithm has been fixed<br />
* <a class="postlink" rel="nofollow" href="http://code.bn2vs.com/viewtopic.php?t=108" target="_blank">BruteForceAttacker</a>: New version included (BN+ Framework 2.0.2 contained an unstable alpha build of this version)</p>
<p>* …</p>
<p><strong>Further development</strong><br />
* The <a class="postlink" rel="nofollow" href="http://code.bn2vs.com/viewtopic.php?t=157" target="_blank">CyrptoProvider</a> class will be rewritten from scratch and be made abstract, and serve as a base for separate DES, TDES, RSA and AES CryptoProviders.<br />
* <a class="postlink" rel="nofollow" href="http://code.bn2vs.com/viewtopic.php?t=108" target="_blank">BruteForceAttacker</a> will be made more modular and work on multiple threads.<br />
* <a class="postlink" rel="nofollow" href="http://code.bn2vs.com/viewtopic.php?t=150" target="_blank">FileDownloader</a> will get support for multiple downloads at the same time and segmented downloads.</p>
<p>I’d also like to thank everyone who helped with this project by providing bug reports, suggestions, contributions, or by simply using it!</p>
<p>If you are interested and consider to use this framework, please review the <a href="http://code.bn2vs.com/viewtopic.php?t=88" target="_blank">official topic</a> and <a href="http://code.bn2vs.com/viewtopic.php?t=103" target="_blank">framework documentation</a>.</p>
<div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F05%2F21%2Fbn-framework-2-0-3-released%2F&amp;title=BN%2B+Framework+2.0.3+released" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F05%2F21%2Fbn-framework-2-0-3-released%2F&amp;title=BN%2B+Framework+2.0.3+released" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F05%2F21%2Fbn-framework-2-0-3-released%2F&amp;title=BN%2B+Framework+2.0.3+released" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F05%2F21%2Fbn-framework-2-0-3-released%2F&amp;headline=BN%2B+Framework+2.0.3+released" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=BN%2B+Framework+2.0.3+released&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F05%2F21%2Fbn-framework-2-0-3-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=BN%2B+Framework+2.0.3+released&amp;u=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F05%2F21%2Fbn-framework-2-0-3-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=BN%2B+Framework+2.0.3+released&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F05%2F21%2Fbn-framework-2-0-3-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=BN%2B+Framework+2.0.3+released&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F05%2F21%2Fbn-framework-2-0-3-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=BN%2B+Framework+2.0.3+released&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F05%2F21%2Fbn-framework-2-0-3-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F05%2F21%2Fbn-framework-2-0-3-released%2F&amp;title=BN%2B+Framework+2.0.3+released&amp;summary=&amp;source=" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F05%2F21%2Fbn-framework-2-0-3-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fblog.bn2vs.com%2F2009%2F05%2F21%2Fbn-framework-2-0-3-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F05%2F21%2Fbn-framework-2-0-3-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://blog.bn2vs.com/2009/05/21/bn-framework-2-0-3-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bug Submitter Dialog</title>
		<link>http://blog.bn2vs.com/2009/04/28/bug-submitter-dialog/</link>
		<comments>http://blog.bn2vs.com/2009/04/28/bug-submitter-dialog/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 22:13:39 +0000</pubDate>
		<dc:creator>Jeroen De Dauw</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[The Code Project]]></category>
		<category><![CDATA[VB]]></category>

		<guid isPermaLink="false">http://blog.bn2vs.com/?p=34</guid>
		<description><![CDATA[Half a month ago I published a .Net dialog, written in VB, that allows users to easily submit bugs and other feedback on an application. The dialog features 2 types of validation, submits the data to a webservice on a separate thread, and is designed to be very user friendly. I’m very happy with the [...]]]></description>
			<content:encoded><![CDATA[<div class='wpfblike' style='height: 40px;'><fb:like href='http://blog.bn2vs.com/2009/04/28/bug-submitter-dialog/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' /></div><p>Half a month ago I published a .Net dialog, written in VB, that allows users to easily submit bugs and other feedback on an application. <a title="BN+ Discussions arcile" href="http://code.bn2vs.com/viewtopic.php?t=147" target="_self">The dialog</a> features 2 types of validation, submits the data to a webservice on a separate thread, and is designed to be very user friendly.</p>
<p><a title="Click to enlarge" href="http://code.bn2vs.com/viewtopic.php?mode=attach&amp;id=160" target="_self"><img src="http://code.bn2vs.com/viewtopic.php?mode=attach&amp;id=160" alt="" height="285" width="356"></a></p>
<p>I’m very happy with the result, and I’m now using this dialog in all of my .Net applications. I also got quite some positive feedback from people. This&nbsp; prompted me to create a more extensive article with examples and an explanation of how to create a webservice that handles the bug report. You can find <a title="Dialog that enables user to submit variouse types of bugs via a webservice" href="http://www.codeproject.com/KB/dialog/BugSubmitterDialog.aspx" target="_blank">my new article on the Code Project</a>.</p>
<p>You can download the source code <a href="http://code.bn2vs.com/viewtopic.php?mode=attach&amp;id=158" target="_self">here</a>, and find Dutch support <a href="http://www.helpmij.nl/forum/showthread.php?t=415085" target="_blank">here.</a> For english support, please refer to <a href="http://www.codeproject.com" target="_blank">the Code Project</a> or the relevant article on <a href="http://code.bn2vs.com" target="_self">BN+ Discussions</a>.</p>
<div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F04%2F28%2Fbug-submitter-dialog%2F&amp;title=Bug+Submitter+Dialog" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F04%2F28%2Fbug-submitter-dialog%2F&amp;title=Bug+Submitter+Dialog" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F04%2F28%2Fbug-submitter-dialog%2F&amp;title=Bug+Submitter+Dialog" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F04%2F28%2Fbug-submitter-dialog%2F&amp;headline=Bug+Submitter+Dialog" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=Bug+Submitter+Dialog&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F04%2F28%2Fbug-submitter-dialog%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=Bug+Submitter+Dialog&amp;u=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F04%2F28%2Fbug-submitter-dialog%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=Bug+Submitter+Dialog&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F04%2F28%2Fbug-submitter-dialog%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=Bug+Submitter+Dialog&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F04%2F28%2Fbug-submitter-dialog%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=Bug+Submitter+Dialog&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F04%2F28%2Fbug-submitter-dialog%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F04%2F28%2Fbug-submitter-dialog%2F&amp;title=Bug+Submitter+Dialog&amp;summary=&amp;source=" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F04%2F28%2Fbug-submitter-dialog%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fblog.bn2vs.com%2F2009%2F04%2F28%2Fbug-submitter-dialog%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F04%2F28%2Fbug-submitter-dialog%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://blog.bn2vs.com/2009/04/28/bug-submitter-dialog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C#.NET Background File Downloader</title>
		<link>http://blog.bn2vs.com/2009/04/27/c-net-background-file-downloader/</link>
		<comments>http://blog.bn2vs.com/2009/04/27/c-net-background-file-downloader/#comments</comments>
		<pubDate>Mon, 27 Apr 2009 22:13:39 +0000</pubDate>
		<dc:creator>Jeroen De Dauw</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[The Code Project]]></category>

		<guid isPermaLink="false">http://blog.bn2vs.com/?p=29</guid>
		<description><![CDATA[About a week ago I published A FileDownloader class written in VB.Net. This class enables you to easily download multiple files in the background (via a separate thread), and will provide information about the amount of downloaded data, the percentage of completion, and the download speed. On top of this, you can cancel downloading, pause [...]]]></description>
			<content:encoded><![CDATA[<div class='wpfblike' style='height: 40px;'><fb:like href='http://blog.bn2vs.com/2009/04/27/c-net-background-file-downloader/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' /></div><p>About a week ago I published A <a title="Code Project article" href="http://www.codeproject.com/KB/vb/FileDownloader.aspx" target="_blank">FileDownloader class</a> written in VB.Net. This class enables you to easily download multiple files in the background (via a separate thread), and will provide information about the amount of downloaded data, the percentage of completion, and the download speed. On top of this, you can cancel downloading, pause it, and of course also resume.</p>
<p>Yesterday I started working on a <a title="C# Code Project article" href="http://www.codeproject.com/KB/cs/BackgroundFileDownloader.aspx" target="_blank">C# Implementation of this class</a>, with as goal to both increase my C# knowledge, and mess around with WPF (which is used for the demo app). I had a lot of fun creating this new version, and definitly learned a lot. It’s completely finished, documented and tested, except for 1 small WPF issue. I’m hoping to release the class tomorrow, but can already provide you with a preview screenshot:</p>
<p><a title="Click to enlarge" href="http://code.bn2vs.com/viewtopic.php?mode=attach&amp;id=168" target="_self"><img src="http://code.bn2vs.com/viewtopic.php?mode=attach&amp;id=168" alt="" height="316" width="524"></a></p>
<div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F04%2F27%2Fc-net-background-file-downloader%2F&amp;title=C%23.NET+Background+File+Downloader" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F04%2F27%2Fc-net-background-file-downloader%2F&amp;title=C%23.NET+Background+File+Downloader" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F04%2F27%2Fc-net-background-file-downloader%2F&amp;title=C%23.NET+Background+File+Downloader" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F04%2F27%2Fc-net-background-file-downloader%2F&amp;headline=C%23.NET+Background+File+Downloader" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=C%23.NET+Background+File+Downloader&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F04%2F27%2Fc-net-background-file-downloader%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=C%23.NET+Background+File+Downloader&amp;u=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F04%2F27%2Fc-net-background-file-downloader%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=C%23.NET+Background+File+Downloader&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F04%2F27%2Fc-net-background-file-downloader%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=C%23.NET+Background+File+Downloader&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F04%2F27%2Fc-net-background-file-downloader%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=C%23.NET+Background+File+Downloader&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F04%2F27%2Fc-net-background-file-downloader%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F04%2F27%2Fc-net-background-file-downloader%2F&amp;title=C%23.NET+Background+File+Downloader&amp;summary=&amp;source=" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F04%2F27%2Fc-net-background-file-downloader%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fblog.bn2vs.com%2F2009%2F04%2F27%2Fc-net-background-file-downloader%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F04%2F27%2Fc-net-background-file-downloader%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://blog.bn2vs.com/2009/04/27/c-net-background-file-downloader/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
